diff --git a/dist/PEP.js b/dist/PEP.js old mode 100644 new mode 100755 index 0946dffd..20f3a437 --- a/dist/PEP.js +++ b/dist/PEP.js @@ -1,5 +1,5 @@ // version: 0.11.1 -// date: Fri May 25 2018 12:35:36 GMT+0100 (GMT Daylight Time) +// date: Mon Jun 04 2018 11:42:23 GMT+0100 (WEST) // licence: /** * Copyright 2016 PT Inovação e Sistemas SA @@ -26,7 +26,7 @@ // version: 0.11.1 -// date: Fri May 25 2018 12:35:36 GMT+0100 (GMT Daylight Time) +// date: Mon Jun 04 2018 11:42:23 GMT+0100 (WEST) // licence: /** * Copyright 2016 PT Inovação e Sistemas SA @@ -52,4 +52,4 @@ **/ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("PEP",[],n):"object"==typeof exports?exports.PEP=n():e.PEP=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function c(l){if(n[l])return n[l].exports;var t=n[l]={i:l,l:!1,exports:{}};return e[l].call(t.exports,t,t.exports,c),t.l=!0,t.exports}return c.m=e,c.c=n,c.d=function(e,n,l){c.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:l})},c.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(n,"a",n),n},c.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},c.p="",c(c.s=118)}([function(module,exports){eval("var core = module.exports = { version: '2.5.3' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcz8xNWUwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjUuMycgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qc1xuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n")},function(module,exports){eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzP2VjYWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1\n")},function(module,exports,__webpack_require__){eval("var store = __webpack_require__(28)('wks');\nvar uid = __webpack_require__(19);\nvar Symbol = __webpack_require__(1).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzPzc1MmMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qc1xuLy8gbW9kdWxlIGlkID0gMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar ctx = __webpack_require__(14);\nvar hide = __webpack_require__(8);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzPzkwY2QiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGtleSBpbiBleHBvcnRzKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///3\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzP2VmYjMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4\n")},function(module,exports,__webpack_require__){eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(13)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanM/Zjg0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n")},function(module,exports){eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzPzEyYTgiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(4);\nvar IE8_DOM_DEFINE = __webpack_require__(36);\nvar toPrimitive = __webpack_require__(26);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzPzdhZjAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanNcbi8vIG1vZHVsZSBpZCA9IDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(7);\nvar createDesc = __webpack_require__(18);\nmodule.exports = __webpack_require__(5) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qcz84NDljIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n")},function(module,exports){eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzPzBmNjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanNcbi8vIG1vZHVsZSBpZCA9IDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9\n")},function(module,exports,__webpack_require__){eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(57);\nvar defined = __webpack_require__(22);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NGRjNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///10\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzY2YjkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(60);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzP2MzMTAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5XCIpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///12\n')},function(module,exports){eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///13\n")},function(module,exports,__webpack_require__){eval("// optional / simple context binding\nvar aFunction = __webpack_require__(17);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanNcbi8vIG1vZHVsZSBpZCA9IDE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanNcbi8vIG1vZHVsZSBpZCA9IDE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///15\n")},function(module,exports){eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcz9mZGI0Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///16\n")},function(module,exports){eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///17\n")},function(module,exports){eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanNcbi8vIG1vZHVsZSBpZCA9IDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///18\n")},function(module,exports){eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qc1xuLy8gbW9kdWxlIGlkID0gMTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///19\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(37);\nvar enumBugKeys = __webpack_require__(29);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///20\n")},function(module,exports){eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/NTJlMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAyMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///21\n")},function(module,exports){eval('// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError("Can\'t call method on " + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTc2OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanNcbi8vIG1vZHVsZSBpZCA9IDIyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///22\n')},function(module,exports){eval("module.exports = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qc1xuLy8gbW9kdWxlIGlkID0gMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///23\n")},function(module,exports,__webpack_require__){eval("var def = __webpack_require__(7).f;\nvar has = __webpack_require__(9);\nvar TAG = __webpack_require__(2)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdiYTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///24\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nvar document = __webpack_require__(1).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n")},function(module,exports,__webpack_require__){eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(6);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///26\n")},function(module,exports,__webpack_require__){eval("var shared = __webpack_require__(28)('keys');\nvar uid = __webpack_require__(19);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NmIxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///27\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcz83YmMwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHt9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2hhcmVkLmpzXG4vLyBtb2R1bGUgaWQgPSAyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///28\n")},function(module,exports){eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/YzY3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n")},function(module,exports,__webpack_require__){eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(22);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(4);\nvar dPs = __webpack_require__(69);\nvar enumBugKeys = __webpack_require__(29);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(25)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(46).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanM/NjI4NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGRQcyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2lmcmFtZScpO1xuICB2YXIgaSA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJlcXVpcmUoJy4vX2h0bWwnKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(17);\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanM/YTgwNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAyNS40LjEuNSBOZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcblxuZnVuY3Rpb24gUHJvbWlzZUNhcGFiaWxpdHkoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUZ1bmN0aW9uKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFGdW5jdGlvbihyZWplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qc1xuLy8gbW9kdWxlIGlkID0gMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///32\n")},function(module,exports,__webpack_require__){eval("exports.f = __webpack_require__(2);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1leHQuanM/MmExZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSByZXF1aXJlKCcuL193a3MnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///33\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar LIBRARY = __webpack_require__(23);\nvar wksExt = __webpack_require__(33);\nvar defineProperty = __webpack_require__(7).f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1kZWZpbmUuanM/NzJiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciAkU3ltYm9sID0gY29yZS5TeW1ib2wgfHwgKGNvcmUuU3ltYm9sID0gTElCUkFSWSA/IHt9IDogZ2xvYmFsLlN5bWJvbCB8fCB7fSk7XG4gIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///34\n")},function(module,exports){eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanM/MzY5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtcGllLmpzXG4vLyBtb2R1bGUgaWQgPSAzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///35\n")},function(module,exports,__webpack_require__){eval("module.exports = !__webpack_require__(5) && !__webpack_require__(13)(function () {\n return Object.defineProperty(__webpack_require__(25)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///36\n")},function(module,exports,__webpack_require__){eval("var has = __webpack_require__(9);\nvar toIObject = __webpack_require__(10);\nvar arrayIndexOf = __webpack_require__(58)(false);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzIxYjgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///37\n")},function(module,exports,__webpack_require__){eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(21);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz80MTExIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qc1xuLy8gbW9kdWxlIGlkID0gMzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///38\n")},function(module,exports,__webpack_require__){eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar fails = __webpack_require__(13);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanM/YmFhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qtc2FwLmpzXG4vLyBtb2R1bGUgaWQgPSAzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///39\n")},function(module,exports,__webpack_require__){eval("var pIE = __webpack_require__(35);\nvar createDesc = __webpack_require__(18);\nvar toIObject = __webpack_require__(10);\nvar toPrimitive = __webpack_require__(26);\nvar has = __webpack_require__(9);\nvar IE8_DOM_DEFINE = __webpack_require__(36);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(5) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzPzJjYTYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcGQuanNcbi8vIG1vZHVsZSBpZCA9IDQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///40\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(66), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3Byb21pc2UuanM/ZmZmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vcHJvbWlzZVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///41\n')},function(module,exports){eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///42\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $at = __webpack_require__(67)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(44)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcz9jZDA0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///43\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(23);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(45);\nvar hide = __webpack_require__(8);\nvar has = __webpack_require__(9);\nvar Iterators = __webpack_require__(16);\nvar $iterCreate = __webpack_require__(68);\nvar setToStringTag = __webpack_require__(24);\nvar getPrototypeOf = __webpack_require__(47);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = (!BUGGY && $native) || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzP2JjODAiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAoIUJVR0dZICYmICRuYXRpdmUpIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiAhaGFzKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUikpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///44\n")},function(module,exports,__webpack_require__){eval("module.exports = __webpack_require__(8);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzP2YzY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///45\n")},function(module,exports,__webpack_require__){eval("var document = __webpack_require__(1).document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanM/NDRmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanNcbi8vIG1vZHVsZSBpZCA9IDQ2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(9);\nvar toObject = __webpack_require__(30);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanM/M2YzYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///47\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(70);\nvar global = __webpack_require__(1);\nvar hide = __webpack_require__(8);\nvar Iterators = __webpack_require__(16);\nvar TO_STRING_TAG = __webpack_require__(2)('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcz9mYWQzIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSA0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///48\n")},function(module,exports,__webpack_require__){eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(15);\nvar TAG = __webpack_require__(2)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanM/NDU4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBBUkcgPSBjb2YoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIFQsIEI7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFRcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IEFSRyA/IGNvZihPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY2xhc3NvZi5qc1xuLy8gbW9kdWxlIGlkID0gNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n")},function(module,exports,__webpack_require__){eval("// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(4);\nvar aFunction = __webpack_require__(17);\nvar SPECIES = __webpack_require__(2)('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanM/YjdjYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjMuMjAgU3BlY2llc0NvbnN0cnVjdG9yKE8sIGRlZmF1bHRDb25zdHJ1Y3RvcilcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIEQpIHtcbiAgdmFyIEMgPSBhbk9iamVjdChPKS5jb25zdHJ1Y3RvcjtcbiAgdmFyIFM7XG4gIHJldHVybiBDID09PSB1bmRlZmluZWQgfHwgKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPT0gdW5kZWZpbmVkID8gRCA6IGFGdW5jdGlvbihTKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3BlY2llcy1jb25zdHJ1Y3Rvci5qc1xuLy8gbW9kdWxlIGlkID0gNTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///50\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(14);\nvar invoke = __webpack_require__(79);\nvar html = __webpack_require__(46);\nvar cel = __webpack_require__(25);\nvar global = __webpack_require__(1);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(15)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanM/MmY4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vX2h0bWwnKTtcbnZhciBjZWwgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHNldFRhc2sgPSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyVGFzayA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbDtcbnZhciBEaXNwYXRjaCA9IGdsb2JhbC5EaXNwYXRjaDtcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xudmFyIHJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgaWYgKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICAgIGZuKCk7XG4gIH1cbn07XG52YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXRUYXNrIHx8ICFjbGVhclRhc2spIHtcbiAgc2V0VGFzayA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCkge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RlbmVyO1xuICAgIGRlZmVyID0gY3R4KHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQsIDEpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdHMpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG4gICAgfTtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICAgIHJ1bi5jYWxsKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChjdHgocnVuLCBpZCwgMSksIDApO1xuICAgIH07XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldFRhc2ssXG4gIGNsZWFyOiBjbGVhclRhc2tcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gNTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///51\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanM/NzRkMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZTogZmFsc2UsIHY6IGV4ZWMoKSB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHsgZTogdHJ1ZSwgdjogZSB9O1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanNcbi8vIG1vZHVsZSBpZCA9IDUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///52\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(4);\nvar isObject = __webpack_require__(6);\nvar newPromiseCapability = __webpack_require__(32);\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qcz83Yzk1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEMsIHgpIHtcbiAgYW5PYmplY3QoQyk7XG4gIGlmIChpc09iamVjdCh4KSAmJiB4LmNvbnN0cnVjdG9yID09PSBDKSByZXR1cm4geDtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZihDKTtcbiAgdmFyIHJlc29sdmUgPSBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlO1xuICByZXNvbHZlKHgpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzXG4vLyBtb2R1bGUgaWQgPSA1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///53\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(89);\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(91);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {\n return typeof obj === "undefined" ? "undefined" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcz9hNDU2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2l0ZXJhdG9yID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yXCIpO1xuXG52YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTtcblxudmFyIF9zeW1ib2wgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9zeW1ib2xcIik7XG5cbnZhciBfc3ltYm9sMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N5bWJvbCk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgX2l0ZXJhdG9yMi5kZWZhdWx0ID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgX3R5cGVvZihfaXRlcmF0b3IyLmRlZmF1bHQpID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YuanNcbi8vIG1vZHVsZSBpZCA9IDU0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///54\n')},function(module,exports){eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BzLmpzP2Q2NDQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wcy5qc1xuLy8gbW9kdWxlIGlkID0gNTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///55\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(37);\nvar hiddenKeys = __webpack_require__(29).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLmpzPzlmNDQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGhpZGRlbktleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi5qc1xuLy8gbW9kdWxlIGlkID0gNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n")},function(module,exports,__webpack_require__){eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(15);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/MzE0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///57\n")},function(module,exports,__webpack_require__){eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(10);\nvar toLength = __webpack_require__(38);\nvar toAbsoluteIndex = __webpack_require__(59);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2JjNTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanNcbi8vIG1vZHVsZSBpZCA9IDU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///58\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(21);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzdlNDAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///59\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(61), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/MGI4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA2MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///60\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(62);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ZjViMCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///61\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(3);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(5), 'Object', { defineProperty: __webpack_require__(7).f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanM/OTgyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///62\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(87), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzY3MWUiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///63\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(54);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n }\n\n return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanM/Y2YwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHNlbGYsIGNhbGwpIHtcbiAgaWYgKCFzZWxmKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNhbGwgJiYgKCh0eXBlb2YgY2FsbCA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoY2FsbCkpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzXG4vLyBtb2R1bGUgaWQgPSA2NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///64\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(100);\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(104);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(54);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== "function" && superClass !== null) {\n throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzPzNkZmQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKTtcblxudmFyIF9zZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXRQcm90b3R5cGVPZik7XG5cbnZhciBfY3JlYXRlID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2NyZWF0ZVwiKTtcblxudmFyIF9jcmVhdGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlKTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArICh0eXBlb2Ygc3VwZXJDbGFzcyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoc3VwZXJDbGFzcykpKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9ICgwLCBfY3JlYXRlMi5kZWZhdWx0KShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mMi5kZWZhdWx0ID8gKDAsIF9zZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzcztcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzXG4vLyBtb2R1bGUgaWQgPSA2NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///65\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(42);\n__webpack_require__(43);\n__webpack_require__(48);\n__webpack_require__(73);\n__webpack_require__(84);\n__webpack_require__(85);\nmodule.exports = __webpack_require__(0).Promise;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2UuanM/NTM5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucHJvbWlzZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL19jb3JlJykuUHJvbWlzZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA2NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///66\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(21);\nvar defined = __webpack_require__(22);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcz84N2FlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbi8vIHRydWUgIC0+IFN0cmluZyNhdFxuLy8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGF0LCBwb3MpIHtcbiAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbiAgICB2YXIgaSA9IHRvSW50ZWdlcihwb3MpO1xuICAgIHZhciBsID0gcy5sZW5ndGg7XG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGkgPCAwIHx8IGkgPj0gbCkgcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcbiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG4gICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzXG4vLyBtb2R1bGUgaWQgPSA2N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///67\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar create = __webpack_require__(31);\nvar descriptor = __webpack_require__(18);\nvar setToStringTag = __webpack_require__(24);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(8)(IteratorPrototype, __webpack_require__(2)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzP2Y3ODUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBkZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDY4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///68\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(7);\nvar anObject = __webpack_require__(4);\nvar getKeys = __webpack_require__(20);\n\nmodule.exports = __webpack_require__(5) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanM/YWEyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///69\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar addToUnscopables = __webpack_require__(71);\nvar step = __webpack_require__(72);\nvar Iterators = __webpack_require__(16);\nvar toIObject = __webpack_require__(10);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(44)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzP2M0NjkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///70\n")},function(module,exports){eval("module.exports = function () { /* empty */ };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcz9lMjY3Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qc1xuLy8gbW9kdWxlIGlkID0gNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///71\n")},function(module,exports){eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcz8xMDY2Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRvbmUsIHZhbHVlKSB7XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qc1xuLy8gbW9kdWxlIGlkID0gNzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///72\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(23);\nvar global = __webpack_require__(1);\nvar ctx = __webpack_require__(14);\nvar classof = __webpack_require__(49);\nvar $export = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\nvar aFunction = __webpack_require__(17);\nvar anInstance = __webpack_require__(74);\nvar forOf = __webpack_require__(75);\nvar speciesConstructor = __webpack_require__(50);\nvar task = __webpack_require__(51).set;\nvar microtask = __webpack_require__(80)();\nvar newPromiseCapabilityModule = __webpack_require__(32);\nvar perform = __webpack_require__(52);\nvar promiseResolve = __webpack_require__(53);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(2)('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value);\n if (domain) domain.exit();\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(81)($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(24)($Promise, PROMISE);\n__webpack_require__(82)(PROMISE);\nWrapper = __webpack_require__(0)[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(83)(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnByb21pc2UuanM/MDk3YyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuL19wcm9taXNlLXJlc29sdmUnKTtcbnZhciBQUk9NSVNFID0gJ1Byb21pc2UnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyICRQcm9taXNlID0gZ2xvYmFsW1BST01JU0VdO1xudmFyIGlzTm9kZSA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xudmFyIGVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIEludGVybmFsLCBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHksIE93blByb21pc2VDYXBhYmlsaXR5LCBXcmFwcGVyO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcblxudmFyIFVTRV9OQVRJVkUgPSAhIWZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBjb3JyZWN0IHN1YmNsYXNzaW5nIHdpdGggQEBzcGVjaWVzIHN1cHBvcnRcbiAgICB2YXIgcHJvbWlzZSA9ICRQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgdmFyIEZha2VQcm9taXNlID0gKHByb21pc2UuY29uc3RydWN0b3IgPSB7fSlbcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKV0gPSBmdW5jdGlvbiAoZXhlYykge1xuICAgICAgZXhlYyhlbXB0eSwgZW1wdHkpO1xuICAgIH07XG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIHJldHVybiAoaXNOb2RlIHx8IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJykgJiYgcHJvbWlzZS50aGVuKGVtcHR5KSBpbnN0YW5jZW9mIEZha2VQcm9taXNlO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn0oKTtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgdHlwZW9mICh0aGVuID0gaXQudGhlbikgPT0gJ2Z1bmN0aW9uJyA/IHRoZW4gOiBmYWxzZTtcbn07XG52YXIgbm90aWZ5ID0gZnVuY3Rpb24gKHByb21pc2UsIGlzUmVqZWN0KSB7XG4gIGlmIChwcm9taXNlLl9uKSByZXR1cm47XG4gIHByb21pc2UuX24gPSB0cnVlO1xuICB2YXIgY2hhaW4gPSBwcm9taXNlLl9jO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIG9rID0gcHJvbWlzZS5fcyA9PSAxO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgcnVuID0gZnVuY3Rpb24gKHJlYWN0aW9uKSB7XG4gICAgICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsO1xuICAgICAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICAgICAgdmFyIHJlamVjdCA9IHJlYWN0aW9uLnJlamVjdDtcbiAgICAgIHZhciBkb21haW4gPSByZWFjdGlvbi5kb21haW47XG4gICAgICB2YXIgcmVzdWx0LCB0aGVuO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgICAgICBpZiAoIW9rKSB7XG4gICAgICAgICAgICBpZiAocHJvbWlzZS5faCA9PSAyKSBvbkhhbmRsZVVuaGFuZGxlZChwcm9taXNlKTtcbiAgICAgICAgICAgIHByb21pc2UuX2ggPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaGFuZGxlciA9PT0gdHJ1ZSkgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoZG9tYWluKSBkb21haW4uZW50ZXIoKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IGhhbmRsZXIodmFsdWUpO1xuICAgICAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmV4aXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gcmVhY3Rpb24ucHJvbWlzZSkge1xuICAgICAgICAgICAgcmVqZWN0KFR5cGVFcnJvcignUHJvbWlzZS1jaGFpbiBjeWNsZScpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoZW4gPSBpc1RoZW5hYmxlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgIHRoZW4uY2FsbChyZXN1bHQsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSBlbHNlIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSBlbHNlIHJlamVjdCh2YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGggPiBpKSBydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgcHJvbWlzZS5fYyA9IFtdO1xuICAgIHByb21pc2UuX24gPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXByb21pc2UuX2gpIG9uVW5oYW5kbGVkKHByb21pc2UpO1xuICB9KTtcbn07XG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgdW5oYW5kbGVkID0gaXNVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgdmFyIHJlc3VsdCwgaGFuZGxlciwgY29uc29sZTtcbiAgICBpZiAodW5oYW5kbGVkKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGlzTm9kZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub251bmhhbmRsZWRyZWplY3Rpb24pIHtcbiAgICAgICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmICgoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBwcm9taXNlLl9oID0gaXNOb2RlIHx8IGlzVW5oYW5kbGVkKHByb21pc2UpID8gMiA6IDE7XG4gICAgfSBwcm9taXNlLl9hID0gdW5kZWZpbmVkO1xuICAgIGlmICh1bmhhbmRsZWQgJiYgcmVzdWx0LmUpIHRocm93IHJlc3VsdC52O1xuICB9KTtcbn07XG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICByZXR1cm4gcHJvbWlzZS5faCAhPT0gMSAmJiAocHJvbWlzZS5fYSB8fCBwcm9taXNlLl9jKS5sZW5ndGggPT09IDA7XG59O1xudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYW5kbGVyO1xuICAgIGlmIChpc05vZGUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBpZiAoaGFuZGxlciA9IGdsb2JhbC5vbnJlamVjdGlvbmhhbmRsZWQpIHtcbiAgICAgIGhhbmRsZXIoeyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHByb21pc2UuX3YgfSk7XG4gICAgfVxuICB9KTtcbn07XG52YXIgJHJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICBwcm9taXNlLl9zID0gMjtcbiAgaWYgKCFwcm9taXNlLl9hKSBwcm9taXNlLl9hID0gcHJvbWlzZS5fYy5zbGljZSgpO1xuICBub3RpZnkocHJvbWlzZSwgdHJ1ZSk7XG59O1xudmFyICRyZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgdmFyIHRoZW47XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgdHJ5IHtcbiAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIGlmICh0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBfdzogcHJvbWlzZSwgX2Q6IGZhbHNlIH07IC8vIHdyYXBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAkcmVqZWN0LmNhbGwod3JhcHBlciwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9taXNlLl92ID0gdmFsdWU7XG4gICAgICBwcm9taXNlLl9zID0gMTtcbiAgICAgIG5vdGlmeShwcm9taXNlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgJHJlamVjdC5jYWxsKHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9LCBlKTsgLy8gd3JhcFxuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gICRQcm9taXNlID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJFByb21pc2UsIFBST01JU0UsICdfaCcpO1xuICAgIGFGdW5jdGlvbihleGVjdXRvcik7XG4gICAgSW50ZXJuYWwuY2FsbCh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoY3R4KCRyZXNvbHZlLCB0aGlzLCAxKSwgY3R4KCRyZWplY3QsIHRoaXMsIDEpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICRyZWplY3QuY2FsbCh0aGlzLCBlcnIpO1xuICAgIH1cbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHRoaXMuX2MgPSBbXTsgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG4gICAgdGhpcy5fYSA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuICAgIHRoaXMuX3MgPSAwOyAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcbiAgICB0aGlzLl9kID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIGRvbmVcbiAgICB0aGlzLl92ID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIHZhbHVlXG4gICAgdGhpcy5faCA9IDA7ICAgICAgICAgICAgICAvLyA8LSByZWplY3Rpb24gc3RhdGUsIDAgLSBkZWZhdWx0LCAxIC0gaGFuZGxlZCwgMiAtIHVuaGFuZGxlZFxuICAgIHRoaXMuX24gPSBmYWxzZTsgICAgICAgICAgLy8gPC0gbm90aWZ5XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpKCRQcm9taXNlLnByb3RvdHlwZSwge1xuICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsICRQcm9taXNlKSk7XG4gICAgICByZWFjdGlvbi5vayA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCA9IHR5cGVvZiBvblJlamVjdGVkID09ICdmdW5jdGlvbicgJiYgb25SZWplY3RlZDtcbiAgICAgIHJlYWN0aW9uLmRvbWFpbiA9IGlzTm9kZSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fYy5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9hKSB0aGlzLl9hLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHRoaXMuX3MpIG5vdGlmeSh0aGlzLCBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH0pO1xuICBPd25Qcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBJbnRlcm5hbCgpO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgdGhpcy5yZXNvbHZlID0gY3R4KCRyZXNvbHZlLCBwcm9taXNlLCAxKTtcbiAgICB0aGlzLnJlamVjdCA9IGN0eCgkcmVqZWN0LCBwcm9taXNlLCAxKTtcbiAgfTtcbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gJFByb21pc2UgfHwgQyA9PT0gV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFByb21pc2U6ICRQcm9taXNlIH0pO1xucmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKSgkUHJvbWlzZSwgUFJPTUlTRSk7XG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKFBST01JU0UpO1xuV3JhcHBlciA9IHJlcXVpcmUoJy4vX2NvcmUnKVtQUk9NSVNFXTtcblxuLy8gc3RhdGljc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNSBQcm9taXNlLnJlamVjdChyKVxuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTtcbiAgICB2YXIgJCRyZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICAkJHJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKExJQlJBUlkgfHwgIVVTRV9OQVRJVkUpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC42IFByb21pc2UucmVzb2x2ZSh4KVxuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoTElCUkFSWSAmJiB0aGlzID09PSBXcmFwcGVyID8gJFByb21pc2UgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoVVNFX05BVElWRSAmJiByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7XG4gICRQcm9taXNlLmFsbChpdGVyKVsnY2F0Y2gnXShlbXB0eSk7XG59KSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyICRpbmRleCA9IGluZGV4Kys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1skaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lKSByZWplY3QocmVzdWx0LnYpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA3M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///73\n")},function(module,exports){eval("module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzP2Q4YWMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIENvbnN0cnVjdG9yLCBuYW1lLCBmb3JiaWRkZW5GaWVsZCkge1xuICBpZiAoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSB8fCAoZm9yYmlkZGVuRmllbGQgIT09IHVuZGVmaW5lZCAmJiBmb3JiaWRkZW5GaWVsZCBpbiBpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IobmFtZSArICc6IGluY29ycmVjdCBpbnZvY2F0aW9uIScpO1xuICB9IHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4taW5zdGFuY2UuanNcbi8vIG1vZHVsZSBpZCA9IDc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///74\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(14);\nvar call = __webpack_require__(76);\nvar isArrayIter = __webpack_require__(77);\nvar anObject = __webpack_require__(4);\nvar toLength = __webpack_require__(38);\nvar getIterFn = __webpack_require__(78);\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qcz8zNTZiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgQlJFQUsgPSB7fTtcbnZhciBSRVRVUk4gPSB7fTtcbnZhciBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0LCBJVEVSQVRPUikge1xuICB2YXIgaXRlckZuID0gSVRFUkFUT1IgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSk7XG4gIHZhciBmID0gY3R4KGZuLCB0aGF0LCBlbnRyaWVzID8gMiA6IDEpO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0O1xuICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXRlcmFibGUgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcbiAgLy8gZmFzdCBjYXNlIGZvciBhcnJheXMgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yXG4gIGlmIChpc0FycmF5SXRlcihpdGVyRm4pKSBmb3IgKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgcmVzdWx0ID0gZW50cmllcyA/IGYoYW5PYmplY3Qoc3RlcCA9IGl0ZXJhYmxlW2luZGV4XSlbMF0sIHN0ZXBbMV0pIDogZihpdGVyYWJsZVtpbmRleF0pO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9IGVsc2UgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOykge1xuICAgIHJlc3VsdCA9IGNhbGwoaXRlcmF0b3IsIGYsIHN0ZXAudmFsdWUsIGVudHJpZXMpO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9XG59O1xuZXhwb3J0cy5CUkVBSyA9IEJSRUFLO1xuZXhwb3J0cy5SRVRVUk4gPSBSRVRVUk47XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZm9yLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA3NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///75\n")},function(module,exports,__webpack_require__){eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(4);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qcz85YWM1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcykge1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qc1xuLy8gbW9kdWxlIGlkID0gNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///76\n")},function(module,exports,__webpack_require__){eval("// check on default Array iterator\nvar Iterators = __webpack_require__(16);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanM/MzIxYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1hcnJheS1pdGVyLmpzXG4vLyBtb2R1bGUgaWQgPSA3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///77\n")},function(module,exports,__webpack_require__){eval("var classof = __webpack_require__(49);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar Iterators = __webpack_require__(16);\nmodule.exports = __webpack_require__(0).getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzP2RkZmIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanNcbi8vIG1vZHVsZSBpZCA9IDc4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///78\n")},function(module,exports){eval("// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ludm9rZS5qcz85MjdiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhc3QgYXBwbHksIGh0dHA6Ly9qc3BlcmYubG5raXQuY29tL2Zhc3QtYXBwbHkvNVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIGFyZ3MsIHRoYXQpIHtcbiAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gdW4gPyBmbigpXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQpO1xuICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gIH0gcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3MpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pbnZva2UuanNcbi8vIG1vZHVsZSBpZCA9IDc5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///79\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar macrotask = __webpack_require__(51).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(15)(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n var promise = Promise.resolve();\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qcz9mMzYzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBtYWNyb3Rhc2sgPSByZXF1aXJlKCcuL190YXNrJykuc2V0O1xudmFyIE9ic2VydmVyID0gZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIFByb21pc2UgPSBnbG9iYWwuUHJvbWlzZTtcbnZhciBpc05vZGUgPSByZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaGVhZCwgbGFzdCwgbm90aWZ5O1xuXG4gIHZhciBmbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50LCBmbjtcbiAgICBpZiAoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGhlYWQpIHtcbiAgICAgIGZuID0gaGVhZC5mbjtcbiAgICAgIGhlYWQgPSBoZWFkLm5leHQ7XG4gICAgICB0cnkge1xuICAgICAgICBmbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoaGVhZCkgbm90aWZ5KCk7XG4gICAgICAgIGVsc2UgbGFzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LmVudGVyKCk7XG4gIH07XG5cbiAgLy8gTm9kZS5qc1xuICBpZiAoaXNOb2RlKSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XG4gICAgfTtcbiAgLy8gYnJvd3NlcnMgd2l0aCBNdXRhdGlvbk9ic2VydmVyLCBleGNlcHQgaU9TIFNhZmFyaSAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMzlcbiAgfSBlbHNlIGlmIChPYnNlcnZlciAmJiAhKGdsb2JhbC5uYXZpZ2F0b3IgJiYgZ2xvYmFsLm5hdmlnYXRvci5zdGFuZGFsb25lKSkge1xuICAgIHZhciB0b2dnbGUgPSB0cnVlO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG5ldyBPYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7IGNoYXJhY3RlckRhdGE6IHRydWUgfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYgKFByb21pc2UgJiYgUHJvbWlzZS5yZXNvbHZlKSB7XG4gICAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9taXNlLnRoZW4oZmx1c2gpO1xuICAgIH07XG4gIC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XG4gIC8vIC0gc2V0SW1tZWRpYXRlXG4gIC8vIC0gTWVzc2FnZUNoYW5uZWxcbiAgLy8gLSB3aW5kb3cucG9zdE1lc3NhZ1xuICAvLyAtIG9ucmVhZHlzdGF0ZWNoYW5nZVxuICAvLyAtIHNldFRpbWVvdXRcbiAgfSBlbHNlIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBzdHJhbmdlIElFICsgd2VicGFjayBkZXYgc2VydmVyIGJ1ZyAtIHVzZSAuY2FsbChnbG9iYWwpXG4gICAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChmbikge1xuICAgIHZhciB0YXNrID0geyBmbjogZm4sIG5leHQ6IHVuZGVmaW5lZCB9O1xuICAgIGlmIChsYXN0KSBsYXN0Lm5leHQgPSB0YXNrO1xuICAgIGlmICghaGVhZCkge1xuICAgICAgaGVhZCA9IHRhc2s7XG4gICAgICBub3RpZnkoKTtcbiAgICB9IGxhc3QgPSB0YXNrO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19taWNyb3Rhc2suanNcbi8vIG1vZHVsZSBpZCA9IDgwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///80\n")},function(module,exports,__webpack_require__){eval("var hide = __webpack_require__(8);\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcz9jNDdmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGlmIChzYWZlICYmIHRhcmdldFtrZXldKSB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgIGVsc2UgaGlkZSh0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9IHJldHVybiB0YXJnZXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qc1xuLy8gbW9kdWxlIGlkID0gODFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///81\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar dP = __webpack_require__(7);\nvar DESCRIPTORS = __webpack_require__(5);\nvar SPECIES = __webpack_require__(2)('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1zcGVjaWVzLmpzPzZkMWEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgQyA9IHR5cGVvZiBjb3JlW0tFWV0gPT0gJ2Z1bmN0aW9uJyA/IGNvcmVbS0VZXSA6IGdsb2JhbFtLRVldO1xuICBpZiAoREVTQ1JJUFRPUlMgJiYgQyAmJiAhQ1tTUEVDSUVTXSkgZFAuZihDLCBTUEVDSUVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDgyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///82\n")},function(module,exports,__webpack_require__){eval("var ITERATOR = __webpack_require__(2)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzPzc1OGQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTtcbiAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24gKCkgeyBTQUZFX0NMT1NJTkcgPSB0cnVlOyB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7XG4gIGlmICghc2tpcENsb3NpbmcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBbN107XG4gICAgdmFyIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9O1xuICAgIGFycltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBzYWZlO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qc1xuLy8gbW9kdWxlIGlkID0gODNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///83\n")},function(module,exports,__webpack_require__){"use strict";eval("// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar global = __webpack_require__(1);\nvar speciesConstructor = __webpack_require__(50);\nvar promiseResolve = __webpack_require__(53);\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseS5qcz8xMmEwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtZmluYWxseVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1Byb21pc2UnLCB7ICdmaW5hbGx5JzogZnVuY3Rpb24gKG9uRmluYWxseSkge1xuICB2YXIgQyA9IHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBjb3JlLlByb21pc2UgfHwgZ2xvYmFsLlByb21pc2UpO1xuICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBvbkZpbmFsbHkgPT0gJ2Z1bmN0aW9uJztcbiAgcmV0dXJuIHRoaXMudGhlbihcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKHgpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB4OyB9KTtcbiAgICB9IDogb25GaW5hbGx5LFxuICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgdGhyb3cgZTsgfSk7XG4gICAgfSA6IG9uRmluYWxseVxuICApO1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHkuanNcbi8vIG1vZHVsZSBpZCA9IDg0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///84\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(3);\nvar newPromiseCapability = __webpack_require__(32);\nvar perform = __webpack_require__(52);\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzPzhjYTUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS10cnlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4vX3BlcmZvcm0nKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdQcm9taXNlJywgeyAndHJ5JzogZnVuY3Rpb24gKGNhbGxiYWNrZm4pIHtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZih0aGlzKTtcbiAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oY2FsbGJhY2tmbik7XG4gIChyZXN1bHQuZSA/IHByb21pc2VDYXBhYmlsaXR5LnJlamVjdCA6IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmUpKHJlc3VsdC52KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzXG4vLyBtb2R1bGUgaWQgPSA4NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///85\n")},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n "use strict";\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof module === \'object\' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n "use strict";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = "undefined";\n\n var logMethods = [\n "trace",\n "debug",\n "info",\n "warn",\n "error"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === \'function\') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === \'debug\') {\n methodName = \'log\';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, \'log\');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn\'t present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = "loglevel";\n if (name) {\n storageKey += ":" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || \'silent\').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + "=" + levelName + ";";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + "=");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { "TRACE": 0, "DEBUG": 1, "INFO": 2, "WARN": 3,\n "ERROR": 4, "SILENT": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return "No console available for logging";\n }\n } else {\n throw "log.setLevel() called with invalid level: " + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? "WARN" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== "string" || name === "") {\n throw new TypeError("You must supply a name when creating a logger.");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9nbGV2ZWwvbGliL2xvZ2xldmVsLmpzPzA2ZmMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiogbG9nbGV2ZWwgLSBodHRwczovL2dpdGh1Yi5jb20vcGltdGVycnkvbG9nbGV2ZWxcbipcbiogQ29weXJpZ2h0IChjKSAyMDEzIFRpbSBQZXJyeVxuKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4qL1xuKGZ1bmN0aW9uIChyb290LCBkZWZpbml0aW9uKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgICBkZWZpbmUoZGVmaW5pdGlvbik7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGRlZmluaXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByb290LmxvZyA9IGRlZmluaXRpb24oKTtcbiAgICB9XG59KHRoaXMsIGZ1bmN0aW9uICgpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIC8vIFNsaWdodGx5IGR1YmlvdXMgdHJpY2tzIHRvIGN1dCBkb3duIG1pbmltaXplZCBmaWxlIHNpemVcbiAgICB2YXIgbm9vcCA9IGZ1bmN0aW9uKCkge307XG4gICAgdmFyIHVuZGVmaW5lZFR5cGUgPSBcInVuZGVmaW5lZFwiO1xuXG4gICAgdmFyIGxvZ01ldGhvZHMgPSBbXG4gICAgICAgIFwidHJhY2VcIixcbiAgICAgICAgXCJkZWJ1Z1wiLFxuICAgICAgICBcImluZm9cIixcbiAgICAgICAgXCJ3YXJuXCIsXG4gICAgICAgIFwiZXJyb3JcIlxuICAgIF07XG5cbiAgICAvLyBDcm9zcy1icm93c2VyIGJpbmQgZXF1aXZhbGVudCB0aGF0IHdvcmtzIGF0IGxlYXN0IGJhY2sgdG8gSUU2XG4gICAgZnVuY3Rpb24gYmluZE1ldGhvZChvYmosIG1ldGhvZE5hbWUpIHtcbiAgICAgICAgdmFyIG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTtcbiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QuYmluZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIG1ldGhvZC5iaW5kKG9iaik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5jYWxsKG1ldGhvZCwgb2JqKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBNaXNzaW5nIGJpbmQgc2hpbSBvciBJRTggKyBNb2Rlcm5penIsIGZhbGxiYWNrIHRvIHdyYXBwaW5nXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmFwcGx5KG1ldGhvZCwgW29iaiwgYXJndW1lbnRzXSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJ1aWxkIHRoZSBiZXN0IGxvZ2dpbmcgbWV0aG9kIHBvc3NpYmxlIGZvciB0aGlzIGVudlxuICAgIC8vIFdoZXJldmVyIHBvc3NpYmxlIHdlIHdhbnQgdG8gYmluZCwgbm90IHdyYXAsIHRvIHByZXNlcnZlIHN0YWNrIHRyYWNlc1xuICAgIGZ1bmN0aW9uIHJlYWxNZXRob2QobWV0aG9kTmFtZSkge1xuICAgICAgICBpZiAobWV0aG9kTmFtZSA9PT0gJ2RlYnVnJykge1xuICAgICAgICAgICAgbWV0aG9kTmFtZSA9ICdsb2cnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE5vIG1ldGhvZCBwb3NzaWJsZSwgZm9yIG5vdyAtIGZpeGVkIGxhdGVyIGJ5IGVuYWJsZUxvZ2dpbmdXaGVuQ29uc29sZUFycml2ZXNcbiAgICAgICAgfSBlbHNlIGlmIChjb25zb2xlW21ldGhvZE5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBiaW5kTWV0aG9kKGNvbnNvbGUsIG1ldGhvZE5hbWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnNvbGUubG9nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBiaW5kTWV0aG9kKGNvbnNvbGUsICdsb2cnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBub29wO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlc2UgcHJpdmF0ZSBmdW5jdGlvbnMgYWx3YXlzIG5lZWQgYHRoaXNgIHRvIGJlIHNldCBwcm9wZXJseVxuXG4gICAgZnVuY3Rpb24gcmVwbGFjZUxvZ2dpbmdNZXRob2RzKGxldmVsLCBsb2dnZXJOYW1lKSB7XG4gICAgICAgIC8qanNoaW50IHZhbGlkdGhpczp0cnVlICovXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbG9nTWV0aG9kcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIG1ldGhvZE5hbWUgPSBsb2dNZXRob2RzW2ldO1xuICAgICAgICAgICAgdGhpc1ttZXRob2ROYW1lXSA9IChpIDwgbGV2ZWwpID9cbiAgICAgICAgICAgICAgICBub29wIDpcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZEZhY3RvcnkobWV0aG9kTmFtZSwgbGV2ZWwsIGxvZ2dlck5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmaW5lIGxvZy5sb2cgYXMgYW4gYWxpYXMgZm9yIGxvZy5kZWJ1Z1xuICAgICAgICB0aGlzLmxvZyA9IHRoaXMuZGVidWc7XG4gICAgfVxuXG4gICAgLy8gSW4gb2xkIElFIHZlcnNpb25zLCB0aGUgY29uc29sZSBpc24ndCBwcmVzZW50IHVudGlsIHlvdSBmaXJzdCBvcGVuIGl0LlxuICAgIC8vIFdlIGJ1aWxkIHJlYWxNZXRob2QoKSByZXBsYWNlbWVudHMgaGVyZSB0aGF0IHJlZ2VuZXJhdGUgbG9nZ2luZyBtZXRob2RzXG4gICAgZnVuY3Rpb24gZW5hYmxlTG9nZ2luZ1doZW5Db25zb2xlQXJyaXZlcyhtZXRob2ROYW1lLCBsZXZlbCwgbG9nZ2VyTmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICAgICAgcmVwbGFjZUxvZ2dpbmdNZXRob2RzLmNhbGwodGhpcywgbGV2ZWwsIGxvZ2dlck5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXNbbWV0aG9kTmFtZV0uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCeSBkZWZhdWx0LCB3ZSB1c2UgY2xvc2VseSBib3VuZCByZWFsIG1ldGhvZHMgd2hlcmV2ZXIgcG9zc2libGUsIGFuZFxuICAgIC8vIG90aGVyd2lzZSB3ZSB3YWl0IGZvciBhIGNvbnNvbGUgdG8gYXBwZWFyLCBhbmQgdGhlbiB0cnkgYWdhaW4uXG4gICAgZnVuY3Rpb24gZGVmYXVsdE1ldGhvZEZhY3RvcnkobWV0aG9kTmFtZSwgbGV2ZWwsIGxvZ2dlck5hbWUpIHtcbiAgICAgICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cbiAgICAgICAgcmV0dXJuIHJlYWxNZXRob2QobWV0aG9kTmFtZSkgfHxcbiAgICAgICAgICAgICAgIGVuYWJsZUxvZ2dpbmdXaGVuQ29uc29sZUFycml2ZXMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBMb2dnZXIobmFtZSwgZGVmYXVsdExldmVsLCBmYWN0b3J5KSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgY3VycmVudExldmVsO1xuICAgICAgdmFyIHN0b3JhZ2VLZXkgPSBcImxvZ2xldmVsXCI7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICBzdG9yYWdlS2V5ICs9IFwiOlwiICsgbmFtZTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcGVyc2lzdExldmVsSWZQb3NzaWJsZShsZXZlbE51bSkge1xuICAgICAgICAgIHZhciBsZXZlbE5hbWUgPSAobG9nTWV0aG9kc1tsZXZlbE51bV0gfHwgJ3NpbGVudCcpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gdW5kZWZpbmVkVHlwZSkgcmV0dXJuO1xuXG4gICAgICAgICAgLy8gVXNlIGxvY2FsU3RvcmFnZSBpZiBhdmFpbGFibGVcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlW3N0b3JhZ2VLZXldID0gbGV2ZWxOYW1lO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuXG4gICAgICAgICAgLy8gVXNlIHNlc3Npb24gY29va2llIGFzIGZhbGxiYWNrXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgd2luZG93LmRvY3VtZW50LmNvb2tpZSA9XG4gICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHN0b3JhZ2VLZXkpICsgXCI9XCIgKyBsZXZlbE5hbWUgKyBcIjtcIjtcbiAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGdldFBlcnNpc3RlZExldmVsKCkge1xuICAgICAgICAgIHZhciBzdG9yZWRMZXZlbDtcblxuICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSB1bmRlZmluZWRUeXBlKSByZXR1cm47XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBzdG9yZWRMZXZlbCA9IHdpbmRvdy5sb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV07XG4gICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuXG4gICAgICAgICAgLy8gRmFsbGJhY2sgdG8gY29va2llcyBpZiBsb2NhbCBzdG9yYWdlIGdpdmVzIHVzIG5vdGhpbmdcbiAgICAgICAgICBpZiAodHlwZW9mIHN0b3JlZExldmVsID09PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICB2YXIgY29va2llID0gd2luZG93LmRvY3VtZW50LmNvb2tpZTtcbiAgICAgICAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IGNvb2tpZS5pbmRleE9mKFxuICAgICAgICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzdG9yYWdlS2V5KSArIFwiPVwiKTtcbiAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbiAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yZWRMZXZlbCA9IC9eKFteO10rKS8uZXhlYyhjb29raWUuc2xpY2UobG9jYXRpb24pKVsxXTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHRoZSBzdG9yZWQgbGV2ZWwgaXMgbm90IHZhbGlkLCB0cmVhdCBpdCBhcyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG4gICAgICAgICAgaWYgKHNlbGYubGV2ZWxzW3N0b3JlZExldmVsXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHN0b3JlZExldmVsID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBzdG9yZWRMZXZlbDtcbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgICAqXG4gICAgICAgKiBQdWJsaWMgbG9nZ2VyIEFQSSAtIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGltdGVycnkvbG9nbGV2ZWwgZm9yIGRldGFpbHNcbiAgICAgICAqXG4gICAgICAgKi9cblxuICAgICAgc2VsZi5uYW1lID0gbmFtZTtcblxuICAgICAgc2VsZi5sZXZlbHMgPSB7IFwiVFJBQ0VcIjogMCwgXCJERUJVR1wiOiAxLCBcIklORk9cIjogMiwgXCJXQVJOXCI6IDMsXG4gICAgICAgICAgXCJFUlJPUlwiOiA0LCBcIlNJTEVOVFwiOiA1fTtcblxuICAgICAgc2VsZi5tZXRob2RGYWN0b3J5ID0gZmFjdG9yeSB8fCBkZWZhdWx0TWV0aG9kRmFjdG9yeTtcblxuICAgICAgc2VsZi5nZXRMZXZlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gY3VycmVudExldmVsO1xuICAgICAgfTtcblxuICAgICAgc2VsZi5zZXRMZXZlbCA9IGZ1bmN0aW9uIChsZXZlbCwgcGVyc2lzdCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09IFwic3RyaW5nXCIgJiYgc2VsZi5sZXZlbHNbbGV2ZWwudG9VcHBlckNhc2UoKV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsZXZlbCA9IHNlbGYubGV2ZWxzW2xldmVsLnRvVXBwZXJDYXNlKCldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIGxldmVsID09PSBcIm51bWJlclwiICYmIGxldmVsID49IDAgJiYgbGV2ZWwgPD0gc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRMZXZlbCA9IGxldmVsO1xuICAgICAgICAgICAgICBpZiAocGVyc2lzdCAhPT0gZmFsc2UpIHsgIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICAgICAgICAgICAgICAgIHBlcnNpc3RMZXZlbElmUG9zc2libGUobGV2ZWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlcGxhY2VMb2dnaW5nTWV0aG9kcy5jYWxsKHNlbGYsIGxldmVsLCBuYW1lKTtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSB1bmRlZmluZWRUeXBlICYmIGxldmVsIDwgc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCJObyBjb25zb2xlIGF2YWlsYWJsZSBmb3IgbG9nZ2luZ1wiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhyb3cgXCJsb2cuc2V0TGV2ZWwoKSBjYWxsZWQgd2l0aCBpbnZhbGlkIGxldmVsOiBcIiArIGxldmVsO1xuICAgICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHNlbGYuc2V0RGVmYXVsdExldmVsID0gZnVuY3Rpb24gKGxldmVsKSB7XG4gICAgICAgICAgaWYgKCFnZXRQZXJzaXN0ZWRMZXZlbCgpKSB7XG4gICAgICAgICAgICAgIHNlbGYuc2V0TGV2ZWwobGV2ZWwsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBzZWxmLmVuYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlRSQUNFLCBwZXJzaXN0KTtcbiAgICAgIH07XG5cbiAgICAgIHNlbGYuZGlzYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlNJTEVOVCwgcGVyc2lzdCk7XG4gICAgICB9O1xuXG4gICAgICAvLyBJbml0aWFsaXplIHdpdGggdGhlIHJpZ2h0IGxldmVsXG4gICAgICB2YXIgaW5pdGlhbExldmVsID0gZ2V0UGVyc2lzdGVkTGV2ZWwoKTtcbiAgICAgIGlmIChpbml0aWFsTGV2ZWwgPT0gbnVsbCkge1xuICAgICAgICAgIGluaXRpYWxMZXZlbCA9IGRlZmF1bHRMZXZlbCA9PSBudWxsID8gXCJXQVJOXCIgOiBkZWZhdWx0TGV2ZWw7XG4gICAgICB9XG4gICAgICBzZWxmLnNldExldmVsKGluaXRpYWxMZXZlbCwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICpcbiAgICAgKiBUb3AtbGV2ZWwgQVBJXG4gICAgICpcbiAgICAgKi9cblxuICAgIHZhciBkZWZhdWx0TG9nZ2VyID0gbmV3IExvZ2dlcigpO1xuXG4gICAgdmFyIF9sb2dnZXJzQnlOYW1lID0ge307XG4gICAgZGVmYXVsdExvZ2dlci5nZXRMb2dnZXIgPSBmdW5jdGlvbiBnZXRMb2dnZXIobmFtZSkge1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgIT09IFwic3RyaW5nXCIgfHwgbmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJZb3UgbXVzdCBzdXBwbHkgYSBuYW1lIHdoZW4gY3JlYXRpbmcgYSBsb2dnZXIuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvZ2dlciA9IF9sb2dnZXJzQnlOYW1lW25hbWVdO1xuICAgICAgICBpZiAoIWxvZ2dlcikge1xuICAgICAgICAgIGxvZ2dlciA9IF9sb2dnZXJzQnlOYW1lW25hbWVdID0gbmV3IExvZ2dlcihcbiAgICAgICAgICAgIG5hbWUsIGRlZmF1bHRMb2dnZXIuZ2V0TGV2ZWwoKSwgZGVmYXVsdExvZ2dlci5tZXRob2RGYWN0b3J5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH07XG5cbiAgICAvLyBHcmFiIHRoZSBjdXJyZW50IGdsb2JhbCBsb2cgdmFyaWFibGUgaW4gY2FzZSBvZiBvdmVyd3JpdGVcbiAgICB2YXIgX2xvZyA9ICh0eXBlb2Ygd2luZG93ICE9PSB1bmRlZmluZWRUeXBlKSA/IHdpbmRvdy5sb2cgOiB1bmRlZmluZWQ7XG4gICAgZGVmYXVsdExvZ2dlci5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSB1bmRlZmluZWRUeXBlICYmXG4gICAgICAgICAgICAgICB3aW5kb3cubG9nID09PSBkZWZhdWx0TG9nZ2VyKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9nID0gX2xvZztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWZhdWx0TG9nZ2VyO1xuICAgIH07XG5cbiAgICBkZWZhdWx0TG9nZ2VyLmdldExvZ2dlcnMgPSBmdW5jdGlvbiBnZXRMb2dnZXJzKCkge1xuICAgICAgICByZXR1cm4gX2xvZ2dlcnNCeU5hbWU7XG4gICAgfTtcblxuICAgIHJldHVybiBkZWZhdWx0TG9nZ2VyO1xufSkpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvbG9nbGV2ZWwvbGliL2xvZ2xldmVsLmpzXG4vLyBtb2R1bGUgaWQgPSA4NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///86\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(88);\nmodule.exports = __webpack_require__(0).Object.getPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzdkMmUiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///87\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(30);\nvar $getPrototypeOf = __webpack_require__(47);\n\n__webpack_require__(39)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzPzJhMWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjkgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciAkZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnZ2V0UHJvdG90eXBlT2YnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZihpdCkge1xuICAgIHJldHVybiAkZ2V0UHJvdG90eXBlT2YodG9PYmplY3QoaXQpKTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA4OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///88\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(90), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvci5qcz82NzM4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA4OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///89\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(43);\n__webpack_require__(48);\nmodule.exports = __webpack_require__(33).f('iterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qcz9mZTdlIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX3drcy1leHQnKS5mKCdpdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gOTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///90\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(92), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC5qcz9lNTA1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2xcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA5MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///91\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(93);\n__webpack_require__(42);\n__webpack_require__(98);\n__webpack_require__(99);\nmodule.exports = __webpack_require__(0).Symbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qcz8wNzA3Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN5bWJvbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuU3ltYm9sO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gOTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///92\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(1);\nvar has = __webpack_require__(9);\nvar DESCRIPTORS = __webpack_require__(5);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(45);\nvar META = __webpack_require__(94).KEY;\nvar $fails = __webpack_require__(13);\nvar shared = __webpack_require__(28);\nvar setToStringTag = __webpack_require__(24);\nvar uid = __webpack_require__(19);\nvar wks = __webpack_require__(2);\nvar wksExt = __webpack_require__(33);\nvar wksDefine = __webpack_require__(34);\nvar enumKeys = __webpack_require__(95);\nvar isArray = __webpack_require__(96);\nvar anObject = __webpack_require__(4);\nvar isObject = __webpack_require__(6);\nvar toIObject = __webpack_require__(10);\nvar toPrimitive = __webpack_require__(26);\nvar createDesc = __webpack_require__(18);\nvar _create = __webpack_require__(31);\nvar gOPNExt = __webpack_require__(97);\nvar $GOPD = __webpack_require__(40);\nvar $DP = __webpack_require__(7);\nvar $keys = __webpack_require__(20);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(56).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(35).f = $propertyIsEnumerable;\n __webpack_require__(55).f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(23)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(8)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qcz83ZDY3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBNRVRBID0gcmVxdWlyZSgnLi9fbWV0YScpLktFWTtcbnZhciAkZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgd2tzRGVmaW5lID0gcmVxdWlyZSgnLi9fd2tzLWRlZmluZScpO1xudmFyIGVudW1LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1rZXlzJyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgX2NyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBnT1BORXh0ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4tZXh0Jyk7XG52YXIgJEdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyICREUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BEID0gJEdPUEQuZjtcbnZhciBkUCA9ICREUC5mO1xudmFyIGdPUE4gPSBnT1BORXh0LmY7XG52YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgJEpTT04gPSBnbG9iYWwuSlNPTjtcbnZhciBfc3RyaW5naWZ5ID0gJEpTT04gJiYgJEpTT04uc3RyaW5naWZ5O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEhJRERFTiA9IHdrcygnX2hpZGRlbicpO1xudmFyIFRPX1BSSU1JVElWRSA9IHdrcygndG9QcmltaXRpdmUnKTtcbnZhciBpc0VudW0gPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBTeW1ib2xSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXJlZ2lzdHJ5Jyk7XG52YXIgQWxsU3ltYm9scyA9IHNoYXJlZCgnc3ltYm9scycpO1xudmFyIE9QU3ltYm9scyA9IHNoYXJlZCgnb3Atc3ltYm9scycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0W1BST1RPVFlQRV07XG52YXIgVVNFX05BVElWRSA9IHR5cGVvZiAkU3ltYm9sID09ICdmdW5jdGlvbic7XG52YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0O1xuLy8gRG9uJ3QgdXNlIHNldHRlcnMgaW4gUXQgU2NyaXB0LCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTczXG52YXIgc2V0dGVyID0gIVFPYmplY3QgfHwgIVFPYmplY3RbUFJPVE9UWVBFXSB8fCAhUU9iamVjdFtQUk9UT1RZUEVdLmZpbmRDaGlsZDtcblxuLy8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG52YXIgc2V0U3ltYm9sRGVzYyA9IERFU0NSSVBUT1JTICYmICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRQKHRoaXMsICdhJywgeyB2YWx1ZTogNyB9KS5hOyB9XG4gIH0pKS5hICE9IDc7XG59KSA/IGZ1bmN0aW9uIChpdCwga2V5LCBEKSB7XG4gIHZhciBwcm90b0Rlc2MgPSBnT1BEKE9iamVjdFByb3RvLCBrZXkpO1xuICBpZiAocHJvdG9EZXNjKSBkZWxldGUgT2JqZWN0UHJvdG9ba2V5XTtcbiAgZFAoaXQsIGtleSwgRCk7XG4gIGlmIChwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKSBkUChPYmplY3RQcm90bywga2V5LCBwcm90b0Rlc2MpO1xufSA6IGRQO1xuXG52YXIgd3JhcCA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbFtQUk9UT1RZUEVdKTtcbiAgc3ltLl9rID0gdGFnO1xuICByZXR1cm4gc3ltO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX05BVElWRSAmJiB0eXBlb2YgJFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJyA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgaW5zdGFuY2VvZiAkU3ltYm9sO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIEQpIHtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90bykgJGRlZmluZVByb3BlcnR5KE9QU3ltYm9scywga2V5LCBEKTtcbiAgYW5PYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBhbk9iamVjdChEKTtcbiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7XG4gICAgaWYgKCFELmVudW1lcmFibGUpIHtcbiAgICAgIGlmICghaGFzKGl0LCBISURERU4pKSBkUChpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG4gICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkgaXRbSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBEID0gX2NyZWF0ZShELCB7IGVudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpIH0pO1xuICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG4gIH0gcmV0dXJuIGRQKGl0LCBrZXksIEQpO1xufTtcbnZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoaXQsIFApIHtcbiAgYW5PYmplY3QoaXQpO1xuICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpO1xuICB2YXIgaSA9IDA7XG4gIHZhciBsID0ga2V5cy5sZW5ndGg7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsID4gaSkgJGRlZmluZVByb3BlcnR5KGl0LCBrZXkgPSBrZXlzW2krK10sIFBba2V5XSk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpdCwgUCkge1xuICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG59O1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSkge1xuICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpO1xuICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XSA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHtcbiAgaXQgPSB0b0lPYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm47XG4gIHZhciBEID0gZ09QRChpdCwga2V5KTtcbiAgaWYgKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSkgRC5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgcmV0dXJuIEQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICB2YXIgbmFtZXMgPSBnT1BOKHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoIWhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiBrZXkgIT0gSElEREVOICYmIGtleSAhPSBNRVRBKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgdmFyIElTX09QID0gaXQgPT09IE9iamVjdFByb3RvO1xuICB2YXIgbmFtZXMgPSBnT1BOKElTX09QID8gT1BTeW1ib2xzIDogdG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYgKElTX09QID8gaGFzKE9iamVjdFByb3RvLCBrZXkpIDogdHJ1ZSkpIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIDE5LjQuMS4xIFN5bWJvbChbZGVzY3JpcHRpb25dKVxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKSB7XG4gICAgaWYgKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKSB0aHJvdyBUeXBlRXJyb3IoJ1N5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciEnKTtcbiAgICB2YXIgdGFnID0gdWlkKGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcbiAgICB2YXIgJHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvKSAkc2V0LmNhbGwoT1BTeW1ib2xzLCB2YWx1ZSk7XG4gICAgICBpZiAoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSkgdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcbiAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG4gICAgfTtcbiAgICBpZiAoREVTQ1JJUFRPUlMgJiYgc2V0dGVyKSBzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6ICRzZXQgfSk7XG4gICAgcmV0dXJuIHdyYXAodGFnKTtcbiAgfTtcbiAgcmVkZWZpbmUoJFN5bWJvbFtQUk9UT1RZUEVdLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faztcbiAgfSk7XG5cbiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICREUC5mID0gJGRlZmluZVByb3BlcnR5O1xuICByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmYgPSBnT1BORXh0LmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpLmYgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJykuZiA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbiAgaWYgKERFU0NSSVBUT1JTICYmICFyZXF1aXJlKCcuL19saWJyYXJ5JykpIHtcbiAgICByZWRlZmluZShPYmplY3RQcm90bywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB0cnVlKTtcbiAgfVxuXG4gIHdrc0V4dC5mID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gd3JhcCh3a3MobmFtZSkpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFN5bWJvbDogJFN5bWJvbCB9KTtcblxuZm9yICh2YXIgZXM2U3ltYm9scyA9IChcbiAgLy8gMTkuNC4yLjIsIDE5LjQuMi4zLCAxOS40LjIuNCwgMTkuNC4yLjYsIDE5LjQuMi44LCAxOS40LjIuOSwgMTkuNC4yLjEwLCAxOS40LjIuMTEsIDE5LjQuMi4xMiwgMTkuNC4yLjEzLCAxOS40LjIuMTRcbiAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJ1xuKS5zcGxpdCgnLCcpLCBqID0gMDsgZXM2U3ltYm9scy5sZW5ndGggPiBqOyl3a3MoZXM2U3ltYm9sc1tqKytdKTtcblxuZm9yICh2YXIgd2VsbEtub3duU3ltYm9scyA9ICRrZXlzKHdrcy5zdG9yZSksIGsgPSAwOyB3ZWxsS25vd25TeW1ib2xzLmxlbmd0aCA+IGs7KSB3a3NEZWZpbmUod2VsbEtub3duU3ltYm9sc1trKytdKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ1N5bWJvbCcsIHtcbiAgLy8gMTkuNC4yLjEgU3ltYm9sLmZvcihrZXkpXG4gICdmb3InOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGhhcyhTeW1ib2xSZWdpc3RyeSwga2V5ICs9ICcnKVxuICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG4gICAgICA6IFN5bWJvbFJlZ2lzdHJ5W2tleV0gPSAkU3ltYm9sKGtleSk7XG4gIH0sXG4gIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihzeW0pIHtcbiAgICBpZiAoIWlzU3ltYm9sKHN5bSkpIHRocm93IFR5cGVFcnJvcihzeW0gKyAnIGlzIG5vdCBhIHN5bWJvbCEnKTtcbiAgICBmb3IgKHZhciBrZXkgaW4gU3ltYm9sUmVnaXN0cnkpIGlmIChTeW1ib2xSZWdpc3RyeVtrZXldID09PSBzeW0pIHJldHVybiBrZXk7XG4gIH0sXG4gIHVzZVNldHRlcjogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSB0cnVlOyB9LFxuICB1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gZmFsc2U7IH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0Jywge1xuICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4gIGNyZWF0ZTogJGNyZWF0ZSxcbiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4gIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG4gIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG4gIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgUyA9ICRTeW1ib2woKTtcbiAgLy8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge31cbiAgLy8gV2ViS2l0IGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyBudWxsXG4gIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gIHJldHVybiBfc3RyaW5naWZ5KFtTXSkgIT0gJ1tudWxsXScgfHwgX3N0cmluZ2lmeSh7IGE6IFMgfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9Jztcbn0pKSwgJ0pTT04nLCB7XG4gIHN0cmluZ2lmeTogZnVuY3Rpb24gc3RyaW5naWZ5KGl0KSB7XG4gICAgdmFyIGFyZ3MgPSBbaXRdO1xuICAgIHZhciBpID0gMTtcbiAgICB2YXIgcmVwbGFjZXIsICRyZXBsYWNlcjtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgJHJlcGxhY2VyID0gcmVwbGFjZXIgPSBhcmdzWzFdO1xuICAgIGlmICghaXNPYmplY3QocmVwbGFjZXIpICYmIGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKSByZXR1cm47IC8vIElFOCByZXR1cm5zIHN0cmluZyBvbiB1bmRlZmluZWRcbiAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mICRyZXBsYWNlciA9PSAnZnVuY3Rpb24nKSB2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgaWYgKCFpc1N5bWJvbCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIGFyZ3NbMV0gPSByZXBsYWNlcjtcbiAgICByZXR1cm4gX3N0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJncyk7XG4gIH1cbn0pO1xuXG4vLyAxOS40LjMuNCBTeW1ib2wucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdKGhpbnQpXG4kU3ltYm9sW1BST1RPVFlQRV1bVE9fUFJJTUlUSVZFXSB8fCByZXF1aXJlKCcuL19oaWRlJykoJFN5bWJvbFtQUk9UT1RZUEVdLCBUT19QUklNSVRJVkUsICRTeW1ib2xbUFJPVE9UWVBFXS52YWx1ZU9mKTtcbi8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcbi8vIDIwLjIuMS45IE1hdGhbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7XG4vLyAyNC4zLjMgSlNPTltAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoZ2xvYmFsLkpTT04sICdKU09OJywgdHJ1ZSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA5M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///93\n")},function(module,exports,__webpack_require__){eval("var META = __webpack_require__(19)('meta');\nvar isObject = __webpack_require__(6);\nvar has = __webpack_require__(9);\nvar setDesc = __webpack_require__(7).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(13)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanM/ZDNhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTUVUQSA9IHJlcXVpcmUoJy4vX3VpZCcpKCdtZXRhJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBzZXREZXNjID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBpZCA9IDA7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBGUkVFWkUgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7XG4gIHNldERlc2MoaXQsIE1FVEEsIHsgdmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IH0pO1xufTtcbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuICdFJztcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gb2JqZWN0IElEXG4gIH0gcmV0dXJuIGl0W01FVEFdLmk7XG59O1xudmFyIGdldFdlYWsgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuIHRydWU7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gcmV0dXJuIGl0W01FVEFdLnc7XG59O1xuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaRSAmJiBtZXRhLk5FRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzKGl0LCBNRVRBKSkgc2V0TWV0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgbWV0YSA9IG1vZHVsZS5leHBvcnRzID0ge1xuICBLRVk6IE1FVEEsXG4gIE5FRUQ6IGZhbHNlLFxuICBmYXN0S2V5OiBmYXN0S2V5LFxuICBnZXRXZWFrOiBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWV0YS5qc1xuLy8gbW9kdWxlIGlkID0gOTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///94\n")},function(module,exports,__webpack_require__){eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(20);\nvar gOPS = __webpack_require__(55);\nvar pIE = __webpack_require__(35);\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0ta2V5cy5qcz81ZGNlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGFsbCBlbnVtZXJhYmxlIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBzeW1ib2xzXG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHJlc3VsdCA9IGdldEtleXMoaXQpO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgaWYgKGdldFN5bWJvbHMpIHtcbiAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpO1xuICAgIHZhciBpc0VudW0gPSBwSUUuZjtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAoc3ltYm9scy5sZW5ndGggPiBpKSBpZiAoaXNFbnVtLmNhbGwoaXQsIGtleSA9IHN5bWJvbHNbaSsrXSkpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSA5NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///95\n")},function(module,exports,__webpack_require__){eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(15);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LmpzP2VkNDMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDk2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///96\n")},function(module,exports,__webpack_require__){eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(10);\nvar gOPN = __webpack_require__(56).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qcz80NmI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG52YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxudmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGdPUE4oaXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHJldHVybiB3aW5kb3dOYW1lcyAmJiB0b1N0cmluZy5jYWxsKGl0KSA9PSAnW29iamVjdCBXaW5kb3ddJyA/IGdldFdpbmRvd05hbWVzKGl0KSA6IGdPUE4odG9JT2JqZWN0KGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qc1xuLy8gbW9kdWxlIGlkID0gOTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///97\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(34)('asyncIterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcz8zOTg5Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnYXN5bmNJdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gOThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///98\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(34)('observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlLmpzPzQxNjciXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdvYnNlcnZhYmxlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUuanNcbi8vIG1vZHVsZSBpZCA9IDk5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///99\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(101), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz85MjIwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gMTAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///100\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(102);\nmodule.exports = __webpack_require__(0).Object.setPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz84YmYwIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Quc2V0UHJvdG90eXBlT2Y7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L3NldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDEwMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///101\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(3);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(103).set });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcz83YjE4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMy4xOSBPYmplY3Quc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IHNldFByb3RvdHlwZU9mOiByZXF1aXJlKCcuL19zZXQtcHJvdG8nKS5zZXQgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDEwMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///102\n")},function(module,exports,__webpack_require__){eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(6);\nvar anObject = __webpack_require__(4);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(14)(Function.call, __webpack_require__(40).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtcHJvdG8uanM/NjVhNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXByb3RvLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///103\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(105), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzPzNhZjQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGVcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2NyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///104\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(106);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlLmpzP2EwY2UiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGUoUCwgRCkge1xuICByZXR1cm4gJE9iamVjdC5jcmVhdGUoUCwgRCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///105\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(3);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(31) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlLmpzP2IwNWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IGNyZWF0ZTogcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///106\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(108), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cy5qcz83ZDk4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5c1wiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///107\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(109);\nmodule.exports = __webpack_require__(0).Object.keys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qcz84YzU2Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Qua2V5cztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///108\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(30);\nvar $keys = __webpack_require__(20);\n\n__webpack_require__(39)('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qcz8wOWRjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2tleXMnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBrZXlzKGl0KSB7XG4gICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///109\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(113);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = __webpack_require__(107);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.divideURL = divideURL;\nexports.emptyObject = emptyObject;\nexports.secondsSinceEpoch = secondsSinceEpoch;\nexports.deepClone = deepClone;\nexports.removePathFromURL = removePathFromURL;\nexports.getUserURLFromEmail = getUserURLFromEmail;\nexports.getUserEmailFromURL = getUserEmailFromURL;\nexports.convertToUserURL = convertToUserURL;\nexports.isDataObjectURL = isDataObjectURL;\nexports.isLegacy = isLegacy;\nexports.isURL = isURL;\nexports.isUserURL = isUserURL;\nexports.isHypertyURL = isHypertyURL;\nexports.getConfigurationResources = getConfigurationResources;\nexports.buildURL = buildURL;\nexports.generateGUID = generateGUID;\nexports.getUserIdentityDomain = getUserIdentityDomain;\nexports.isBackendServiceURL = isBackendServiceURL;\nexports.divideEmail = divideEmail;\nexports.assign = assign;\nexports.splitObjectURL = splitObjectURL;\nexports.checkAttribute = checkAttribute;\nexports.parseAttributes = parseAttributes;\nexports.isEmpty = isEmpty;\nexports.chatkeysToStringCloner = chatkeysToStringCloner;\nexports.chatkeysToArrayCloner = chatkeysToArrayCloner;\nexports.parseMessageURL = parseMessageURL;\nexports.availableSpace = availableSpace;\nexports.encode = encode;\nexports.decode = decode;\nexports.decodeToUint8Array = decodeToUint8Array;\nexports.stringify = stringify;\nexports.parse = parse;\nexports.parseToUint8Array = parseToUint8Array;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n/**\r\n * Support module with some functions will be useful\r\n * @module utils\r\n */\n\n/**\r\n * @typedef divideURL\r\n * @type Object\r\n * @property {string} type The type of URL\r\n * @property {string} domain The domain of URL\r\n * @property {string} identity The identity of URL\r\n */\n\n/**\r\n * Divide an url in type, domain and identity\r\n * @param {URL.URL} url - url address\r\n * @return {divideURL} the result of divideURL\r\n */\nfunction divideURL(url) {\n\n function recurse(value) {\n var regex = /([a-zA-Z-]*)(:\\/\\/(?:\\.)?|:)([-a-zA-Z0-9@:%._+~#=]{2,256})([-a-zA-Z0-9@:%._+~#=/]*)/gi;\n var subst = '$1,$3,$4';\n var parts = value.replace(regex, subst).split(',');\n return parts;\n }\n\n var parts = recurse(url);\n\n // If the url has no scheme\n if (parts[0] === url && !parts[0].includes('@')) {\n\n var _result = {\n type: '',\n domain: url,\n identity: ''\n };\n\n console.warn('[DivideURL] DivideURL don\\'t support url without scheme. Please review your url address', url);\n\n return _result;\n }\n\n // check if the url has the scheme and includes an @\n if (parts[0] === url && parts[0].includes('@')) {\n var scheme = parts[0] === url ? 'smtp' : parts[0];\n parts = recurse(scheme + '://' + parts[0]);\n }\n\n // if the domain includes an @, divide it to domain and identity respectively\n if (parts[1].includes('@')) {\n parts[2] = parts[0] + '://' + parts[1];\n parts[1] = parts[1].substr(parts[1].indexOf('@') + 1);\n } /*else if (parts[2].includes('/')) {\r\n parts[2] = parts[2].substr(parts[2].lastIndexOf('/')+1);\r\n }*/\n\n var result = {\n type: parts[0],\n domain: parts[1],\n identity: parts[2]\n };\n\n return result;\n}\n\n/**\r\n * Check if an Object is empty\r\n * @param {Object} object Object to be checked\r\n * @return {Boolean} status of Object, empty or not (true|false);\r\n */\nfunction emptyObject(object) {\n return (0, _keys2.default)(object).length > 0 ? false : true;\n}\n\nfunction secondsSinceEpoch() {\n return Math.floor(Date.now() / 1000);\n}\n\n/**\r\n * Make a COPY of the original data\r\n * @param {Object} obj - object to be cloned\r\n * @return {Object}\r\n */\nfunction deepClone(obj) {\n //TODO: simple but inefficient JSON deep clone...\n if (obj) return JSON.parse((0, _stringify2.default)(obj));\n}\n\nfunction removePathFromURL(url) {\n var splitURL = url.split('/');\n return splitURL[0] + '//' + splitURL[2] + '/' + splitURL[3];\n}\n\n/**\r\n * Obtains the user URL that corresponds to a given email\r\n * @param {string} userEmail The user email\r\n * @return {URL.URL} userURL The user URL\r\n */\nfunction getUserURLFromEmail(userEmail) {\n var indexOfAt = userEmail.indexOf('@');\n return 'user://' + userEmail.substring(indexOfAt + 1, userEmail.length) + '/' + userEmail.substring(0, indexOfAt);\n}\n\n/**\r\n * Obtains the user email that corresponds to a given URL\r\n * @param {URL.URL} userURL The user URL\r\n * @return {string} userEmail The user email\r\n */\nfunction getUserEmailFromURL(userURL) {\n var url = divideURL(userURL);\n return url.identity.replace('/', '') + '@' + url.domain; // identity field has '/exampleID' instead of 'exampleID'\n}\n\n/**\r\n * Check if the user identifier is already in the URL format, if not, convert to URL format\r\n * @param {string} identifier user identifier\r\n * @return {string} userURL the user URL\r\n */\nfunction convertToUserURL(identifier) {\n\n // check if the identifier is already in the url format\n if (identifier.substring(0, 7) === 'user://') {\n var dividedURL = divideURL(identifier);\n\n //check if the url is well formated\n if (dividedURL.domain && dividedURL.identity) {\n return identifier;\n } else {\n throw 'userURL with wrong format';\n }\n\n //if not, convert the user email to URL format\n } else {\n return getUserURLFromEmail(identifier);\n }\n}\n\nfunction isDataObjectURL(url) {\n var schemasToIgnore = ['domain-idp', 'runtime', 'domain', 'hyperty'];\n var splitURL = url.split('://');\n var urlSchema = splitURL[0];\n\n return schemasToIgnore.indexOf(urlSchema) === -1;\n}\n\nfunction isLegacy(url) {\n if (url.split('@').length > 1) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction isURL(url) {\n return url.split('/').length >= 3;\n}\n\nfunction isUserURL(url) {\n return divideURL(url).type === 'user';\n}\n\nfunction isHypertyURL(url) {\n return divideURL(url).type === 'hyperty';\n}\n\n/**\r\n * get information relative each component configured on runtime configuration;\r\n * @param {object} configuration object with all configuration\r\n * @param {string} component string with the component to get the configuration, like, runtimeURLS, catalogueURLs, msgNodeURL, domainRegistryURL;\r\n * @param {string} resource type of resource to get, like, catalogue, runtimeUA, protocolstub, idpProxy\r\n * @return {object} return an object with all configurations;\r\n */\nfunction getConfigurationResources(configuration, component, resource) {\n var objectResource = configuration[component];\n var resourceType = objectResource[resource];\n\n return resourceType;\n}\n\n/**\r\n * Build a full url with the runtime configuration;\r\n * @param {object} configuration object with all configuration\r\n * @param {string} component string with the component to get the configuration, like, runtimeURLS, catalogueURLs, msgNodeURL, domainRegistryURL;\r\n * @param {string} resource type of resource to get, like, catalogue, runtimeUA, protocolstub, idpProxy\r\n * @param {string} type resource to get, like a hyperty name or protocolstub name;\r\n * @param {boolean} useFallback if true the function will check if have a fallback url;\r\n * @return {string} partial url to contact the resource;\r\n */\nfunction buildURL(configuration, component, resource, type) {\n var useFallback = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n var objectResource = configuration[component];\n var url = void 0;\n\n if (!objectResource.hasOwnProperty(resource)) {\n throw Error('The configuration ' + (0, _stringify2.default)(objectResource, '', 2) + ' don\\'t have the ' + resource + ' resource you are looking for');\n }\n\n var resourceType = objectResource[resource];\n\n if (type) {\n url = resourceType.prefix + configuration.domain + resourceType.suffix + type;\n if (resourceType.hasOwnProperty('fallback') && useFallback) {\n if (resourceType.fallback.indexOf('%domain%')) {\n url = resourceType.fallback.replace(/(%domain%)/g, configuration.domain) + type;\n } else {\n url = resourceType.fallback + type;\n }\n }\n } else {\n url = resourceType.prefix + configuration.domain + resourceType.suffix;\n }\n\n // console.log(url);\n\n return url;\n}\n\n/**\r\n * Generate a Global Unique ID\r\n *\r\n * @returns String;\r\n */\nfunction generateGUID() {\n\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n\nfunction getUserIdentityDomain(url) {\n var dividedURL = divideURL(url);\n var splitedDomain = dividedURL.domain.split('.');\n var splitedLength = splitedDomain.length;\n if (splitedLength == 1) {\n return splitedDomain[splitedLength - 1];\n }\n var domain = splitedDomain[splitedLength - 2] + '.' + splitedDomain[splitedLength - 1];\n return domain;\n}\n\n/**\r\n * Check if URL is from a backend service\r\n * @param {string} url URL to be processed\r\n * @return {boolean}\r\n */\n\nfunction isBackendServiceURL(url) {\n var dividedURL = divideURL(url);\n var splitedDomain = dividedURL.domain.split('.');\n var backendSchemes = ['domain', 'global', 'domain-idp']; // should be defined in the runtime configuration\n var backendSubDomains = ['registry', 'msg-node']; // should be defined in the runtime configuration\n var subDomain = void 0;\n\n if (splitedDomain.length > 1) {\n subDomain = splitedDomain.filter(function (item) {\n return backendSubDomains.indexOf(item) !== -1;\n })[0];\n }\n\n if (subDomain && backendSubDomains.indexOf(subDomain) !== -1) {\n return true;\n }\n\n if (dividedURL.type) {\n return backendSchemes.indexOf(dividedURL.type) !== -1;\n }\n\n return false;\n}\n\nfunction divideEmail(email) {\n var indexOfAt = email.indexOf('@');\n\n var result = {\n username: email.substring(0, indexOfAt),\n domain: email.substring(indexOfAt + 1, email.length)\n };\n\n return result;\n}\n\nfunction assign(obj, keyPath, value) {\n\n if (!obj) obj = {};\n if (typeof keyPath === 'string') keyPath = parseAttributes(keyPath);\n\n var lastKeyIndex = keyPath.length - 1;\n\n for (var i = 0; i < lastKeyIndex; ++i) {\n var key = keyPath[i];\n if (!(key in obj)) {\n obj[key] = {};\n }\n\n obj = obj[key];\n }\n\n obj[keyPath[lastKeyIndex]] = value;\n}\n\nfunction splitObjectURL(dataObjectURL) {\n console.info('[utils - splitObjectURL]: ', dataObjectURL);\n\n var splitedURL = dataObjectURL.split('/');\n var url = splitedURL[0] + '//' + splitedURL[2] + '/' + splitedURL[3];\n var resource = splitedURL[5];\n\n var result = {\n url: url,\n resource: resource\n };\n\n console.info('[utils - splitObjectURL]: ', result);\n\n return result;\n}\n\nfunction checkAttribute(path) {\n\n var regex = /((([a-zA-Z]+):\\/\\/([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})\\/[a-zA-Z0-9.]+@[a-zA-Z0-9]+(-)?[a-zA-Z0-9]+(\\.)?[a-zA-Z0-9]{2,10}?\\.[a-zA-Z]{2,10})(.+(?=.identity))?/gm;\n\n var list = [];\n var final = [];\n var test = path.match(regex);\n\n if (test == null) {\n final = path.split('.');\n } else {\n var m = void 0;\n while ((m = regex.exec(path)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (m.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n\n // The result can be accessed through the `m`-variable.\n m.forEach(function (match, groupIndex) {\n if (groupIndex === 0) {\n list.push(match);\n }\n });\n }\n var result = void 0;\n list.forEach(function (url) {\n\n result = path.replace(url, '*-*');\n final = result.split('.').map(function (item) {\n\n if (item === '*-*') {\n return url;\n }\n\n return item;\n });\n });\n }\n\n console.log('[RuntimeCore.Utils.checkAttribute]', final);\n return final;\n}\n\nfunction parseAttributes(path) {\n var regex = /([0-9a-zA-Z][-\\w]*):\\/\\//g;\n\n var string3 = 'identity';\n\n if (!path.includes('://')) {\n return path.split('.');\n } else {\n var string1 = path.split(regex)[0];\n\n var array1 = string1.split('.');\n\n var string2 = path.replace(string1, '');\n\n if (path.includes(string3)) {\n\n var array2 = string2.split(string3 + '.');\n\n console.log('array2 ' + array2);\n\n string2 = array2[0].slice('.', -1);\n\n array2 = array2[1].split('.');\n\n array1.push(string2, string3);\n\n array1 = array1.concat(array2);\n } else {\n array1.push(string2);\n }\n\n return array1.filter(Boolean);\n }\n}\n\nfunction isEmpty(obj) {\n for (var prop in obj) {\n\n if (obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n\n return (0, _stringify2.default)(obj) === (0, _stringify2.default)({});\n}\n\nfunction chatkeysToStringCloner(sessionKeys) {\n var dataObjectSessionKeysClone = {};\n var fields = (0, _keys2.default)(sessionKeys);\n if (fields) {\n try {\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n dataObjectSessionKeysClone[field] = {};\n dataObjectSessionKeysClone[field].sessionKey = sessionKeys[field].sessionKey.toString();\n dataObjectSessionKeysClone[field].isToEncrypt = sessionKeys[field].isToEncrypt;\n }\n } catch (err) {\n console.error('_chatkeysToStringCloner:err', err);\n }\n }\n return dataObjectSessionKeysClone;\n}\n\nfunction chatkeysToArrayCloner(sessionKeys) {\n var dataObjectSessionKeysClone = {};\n var fields = (0, _keys2.default)(sessionKeys);\n if (fields) {\n try {\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n dataObjectSessionKeysClone[field] = {};\n var arrayValues = JSON.parse('[' + sessionKeys[field].sessionKey + ']');\n dataObjectSessionKeysClone[field].sessionKey = new Uint8Array(arrayValues);\n dataObjectSessionKeysClone[field].isToEncrypt = sessionKeys[field].isToEncrypt;\n }\n } catch (err) {\n console.error('_chatkeysToArrayCloner:err', err);\n }\n }\n return dataObjectSessionKeysClone;\n}\n\nfunction parseMessageURL(URL) {\n var splitedToURL = URL.split('/');\n if (splitedToURL.length <= 6) {\n return splitedToURL[0] + '//' + splitedToURL[2] + '/' + splitedToURL[3];\n } else {\n return splitedToURL[0] + '//' + splitedToURL[2] + '/' + splitedToURL[3] + '/' + splitedToURL[4];\n }\n}\n\nfunction availableSpace(usage, quota) {\n var available = (usage / quota).toFixed(2);\n return {\n quota: quota,\n usage: usage,\n percent: Number(available)\n };\n}\n\n/**\r\n* Encodes a JS object to base 64 encode\r\n* @param {Object} value byteArray value\r\n* @return {string} encoded value\r\n*/\nfunction encode(value) {\n try {\n var stringValue = stringify(value);\n return btoa(stringValue);\n } catch (err) {\n console.error('[Utils.encode:err] ' + err);\n throw err;\n }\n}\n\n/**\r\n * Decode a base64 string to object\r\n * @param {string_b64} value value encoded in base 64\r\n * @return {Object} decodedValue\r\n */\nfunction decode(value) {\n try {\n return JSON.parse(atob(value));\n } catch (err) {\n console.log('[Utils.decode:err] ' + err);\n throw err;\n }\n}\n\n/**\r\n* Decode a base64 string to Uint8Array\r\n* @param {string_b64} value byteArray value\r\n* @return {Uint8Array} encoded value\r\n*/\nfunction decodeToUint8Array(value) {\n try {\n return new Uint8Array(decode(value));\n } catch (err) {\n console.error('[Utils.decodeToUint8Array:err] ' + err);\n throw err;\n }\n}\n\n/**\r\n* Converts a JS object to string\r\n* NOTE: Special conversion for Uint8Arrays\r\n* @param {Object} value byteArray value\r\n* @return {Uint8Array} encoded value\r\n*/\nfunction stringify(value) {\n try {\n var stringValue = void 0;\n if (value.constructor === Uint8Array) {\n stringValue = '[' + value.toString() + ']'; // the [] is for JSON.parse compatibility\n } else {\n stringValue = (0, _stringify2.default)(value);\n }\n return stringValue;\n } catch (err) {\n console.error('[Utils.stringify:err] ' + err);\n throw err;\n }\n}\n\n/**\r\n* Converts a stringified object to object\r\n* @param {String} value byteArray value\r\n* @return {Object} encoded value\r\n*/\nfunction parse(value) {\n try {\n return JSON.parse(value);\n } catch (err) {\n console.error('[Utils.parse:err]' + err);\n console.trace();\n console.error('That that cause the error:', value);\n throw err;\n }\n}\n\n/**\r\n* Converts a stringified object to object\r\n* @param {String} value byteArray value\r\n* @return {Uint8Array} encoded value\r\n*/\nfunction parseToUint8Array(value) {\n try {\n return new Uint8Array(parse(value));\n } catch (err) {\n console.error('[Utils.parseToUint8Array:err]' + err);\n throw err;\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy91dGlscy91dGlscy5qcz9iZTczIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuLyoqXHJcbiAqIFN1cHBvcnQgbW9kdWxlIHdpdGggc29tZSBmdW5jdGlvbnMgd2lsbCBiZSB1c2VmdWxcclxuICogQG1vZHVsZSB1dGlsc1xyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAdHlwZWRlZiBkaXZpZGVVUkxcclxuICogQHR5cGUgT2JqZWN0XHJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0eXBlIFRoZSB0eXBlIG9mIFVSTFxyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZG9tYWluIFRoZSBkb21haW4gb2YgVVJMXHJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpZGVudGl0eSBUaGUgaWRlbnRpdHkgb2YgVVJMXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIERpdmlkZSBhbiB1cmwgaW4gdHlwZSwgZG9tYWluIGFuZCBpZGVudGl0eVxyXG4gKiBAcGFyYW0gIHtVUkwuVVJMfSB1cmwgLSB1cmwgYWRkcmVzc1xyXG4gKiBAcmV0dXJuIHtkaXZpZGVVUkx9IHRoZSByZXN1bHQgb2YgZGl2aWRlVVJMXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGl2aWRlVVJMKHVybCkge1xyXG5cclxuICBmdW5jdGlvbiByZWN1cnNlKHZhbHVlKSB7XHJcbiAgICBjb25zdCByZWdleCA9IC8oW2EtekEtWi1dKikoOlxcL1xcLyg/OlxcLik/fDopKFstYS16QS1aMC05QDolLl8rfiM9XXsyLDI1Nn0pKFstYS16QS1aMC05QDolLl8rfiM9L10qKS9naTtcclxuICAgIGNvbnN0IHN1YnN0ID0gJyQxLCQzLCQ0JztcclxuICAgIGxldCBwYXJ0cyA9IHZhbHVlLnJlcGxhY2UocmVnZXgsIHN1YnN0KS5zcGxpdCgnLCcpO1xyXG4gICAgcmV0dXJuIHBhcnRzO1xyXG4gIH1cclxuXHJcbiAgbGV0IHBhcnRzID0gcmVjdXJzZSh1cmwpO1xyXG5cclxuICAvLyBJZiB0aGUgdXJsIGhhcyBubyBzY2hlbWVcclxuICBpZiAocGFydHNbMF0gPT09IHVybCAmJiAhcGFydHNbMF0uaW5jbHVkZXMoJ0AnKSkge1xyXG5cclxuICAgIGxldCByZXN1bHQgPSB7XHJcbiAgICAgIHR5cGU6ICcnLFxyXG4gICAgICBkb21haW46IHVybCxcclxuICAgICAgaWRlbnRpdHk6ICcnXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnNvbGUud2FybignW0RpdmlkZVVSTF0gRGl2aWRlVVJMIGRvblxcJ3Qgc3VwcG9ydCB1cmwgd2l0aG91dCBzY2hlbWUuIFBsZWFzZSByZXZpZXcgeW91ciB1cmwgYWRkcmVzcycsIHVybCk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vIGNoZWNrIGlmIHRoZSB1cmwgaGFzIHRoZSBzY2hlbWUgYW5kIGluY2x1ZGVzIGFuIEBcclxuICBpZiAocGFydHNbMF0gPT09IHVybCAmJiBwYXJ0c1swXS5pbmNsdWRlcygnQCcpKSB7XHJcbiAgICBsZXQgc2NoZW1lID0gcGFydHNbMF0gPT09IHVybCA/ICdzbXRwJyA6IHBhcnRzWzBdO1xyXG4gICAgcGFydHMgPSByZWN1cnNlKHNjaGVtZSArICc6Ly8nICsgcGFydHNbMF0pO1xyXG4gIH1cclxuXHJcbiAgLy8gaWYgdGhlIGRvbWFpbiBpbmNsdWRlcyBhbiBALCBkaXZpZGUgaXQgdG8gZG9tYWluIGFuZCBpZGVudGl0eSByZXNwZWN0aXZlbHlcclxuICBpZiAocGFydHNbMV0uaW5jbHVkZXMoJ0AnKSkge1xyXG4gICAgcGFydHNbMl0gPSBwYXJ0c1swXSArICc6Ly8nICsgcGFydHNbMV07XHJcbiAgICBwYXJ0c1sxXSA9IHBhcnRzWzFdLnN1YnN0cihwYXJ0c1sxXS5pbmRleE9mKCdAJykgKyAxKTtcclxuICB9IFx0LyplbHNlIGlmIChwYXJ0c1syXS5pbmNsdWRlcygnLycpKSB7XHJcbiAgICBwYXJ0c1syXSA9IHBhcnRzWzJdLnN1YnN0cihwYXJ0c1syXS5sYXN0SW5kZXhPZignLycpKzEpO1xyXG4gIH0qL1xyXG5cclxuICBsZXQgcmVzdWx0ID0ge1xyXG4gICAgdHlwZTogcGFydHNbMF0sXHJcbiAgICBkb21haW46IHBhcnRzWzFdLFxyXG4gICAgaWRlbnRpdHk6IHBhcnRzWzJdXHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIHJlc3VsdDtcclxuXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiBhbiBPYmplY3QgaXMgZW1wdHlcclxuICogQHBhcmFtICB7T2JqZWN0fSBvYmplY3QgT2JqZWN0IHRvIGJlIGNoZWNrZWRcclxuICogQHJldHVybiB7Qm9vbGVhbn0gICAgICAgc3RhdHVzIG9mIE9iamVjdCwgZW1wdHkgb3Igbm90ICh0cnVlfGZhbHNlKTtcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBlbXB0eU9iamVjdChvYmplY3QpIHtcclxuICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGggPiAwID8gZmFsc2UgOiB0cnVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kc1NpbmNlRXBvY2goKSB7XHJcbiAgcmV0dXJuIE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIE1ha2UgYSBDT1BZIG9mIHRoZSBvcmlnaW5hbCBkYXRhXHJcbiAqIEBwYXJhbSAge09iamVjdH0gIG9iaiAtIG9iamVjdCB0byBiZSBjbG9uZWRcclxuICogQHJldHVybiB7T2JqZWN0fVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBDbG9uZShvYmopIHtcclxuICAvL1RPRE86IHNpbXBsZSBidXQgaW5lZmZpY2llbnQgSlNPTiBkZWVwIGNsb25lLi4uXHJcbiAgaWYgKG9iaikgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVQYXRoRnJvbVVSTCh1cmwpIHtcclxuICBsZXQgc3BsaXRVUkwgPSB1cmwuc3BsaXQoJy8nKTtcclxuICByZXR1cm4gc3BsaXRVUkxbMF0gKyAnLy8nICsgc3BsaXRVUkxbMl0gKyAnLycgKyBzcGxpdFVSTFszXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIE9idGFpbnMgdGhlIHVzZXIgVVJMIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBnaXZlbiBlbWFpbFxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHVzZXJFbWFpbCBUaGUgdXNlciBlbWFpbFxyXG4gKiBAcmV0dXJuIHtVUkwuVVJMfSB1c2VyVVJMIFRoZSB1c2VyIFVSTFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFVzZXJVUkxGcm9tRW1haWwodXNlckVtYWlsKSB7XHJcbiAgbGV0IGluZGV4T2ZBdCA9IHVzZXJFbWFpbC5pbmRleE9mKCdAJyk7XHJcbiAgcmV0dXJuICd1c2VyOi8vJyArIHVzZXJFbWFpbC5zdWJzdHJpbmcoaW5kZXhPZkF0ICsgMSwgdXNlckVtYWlsLmxlbmd0aCkgKyAnLycgKyB1c2VyRW1haWwuc3Vic3RyaW5nKDAsIGluZGV4T2ZBdCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBPYnRhaW5zIHRoZSB1c2VyIGVtYWlsIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBnaXZlbiBVUkxcclxuICogQHBhcmFtICB7VVJMLlVSTH0gdXNlclVSTCBUaGUgdXNlciBVUkxcclxuICogQHJldHVybiB7c3RyaW5nfSB1c2VyRW1haWwgVGhlIHVzZXIgZW1haWxcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRVc2VyRW1haWxGcm9tVVJMKHVzZXJVUkwpIHtcclxuICBsZXQgdXJsID0gZGl2aWRlVVJMKHVzZXJVUkwpO1xyXG4gIHJldHVybiB1cmwuaWRlbnRpdHkucmVwbGFjZSgnLycsICcnKSArICdAJyArIHVybC5kb21haW47IC8vIGlkZW50aXR5IGZpZWxkIGhhcyAnL2V4YW1wbGVJRCcgaW5zdGVhZCBvZiAnZXhhbXBsZUlEJ1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2sgaWYgdGhlIHVzZXIgaWRlbnRpZmllciBpcyBhbHJlYWR5IGluIHRoZSBVUkwgZm9ybWF0LCBpZiBub3QsIGNvbnZlcnQgdG8gVVJMIGZvcm1hdFxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgaWRlbnRpZmllciAgdXNlciBpZGVudGlmaWVyXHJcbiAqIEByZXR1cm4ge3N0cmluZ30gICB1c2VyVVJMICAgIHRoZSB1c2VyIFVSTFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb1VzZXJVUkwoaWRlbnRpZmllcikge1xyXG5cclxuICAvLyBjaGVjayBpZiB0aGUgaWRlbnRpZmllciBpcyBhbHJlYWR5IGluIHRoZSB1cmwgZm9ybWF0XHJcbiAgaWYgKGlkZW50aWZpZXIuc3Vic3RyaW5nKDAsIDcpID09PSAndXNlcjovLycpIHtcclxuICAgIGxldCBkaXZpZGVkVVJMID0gZGl2aWRlVVJMKGlkZW50aWZpZXIpO1xyXG5cclxuICAgIC8vY2hlY2sgaWYgdGhlIHVybCBpcyB3ZWxsIGZvcm1hdGVkXHJcbiAgICBpZiAoZGl2aWRlZFVSTC5kb21haW4gJiYgZGl2aWRlZFVSTC5pZGVudGl0eSkge1xyXG4gICAgICByZXR1cm4gaWRlbnRpZmllcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93ICd1c2VyVVJMIHdpdGggd3JvbmcgZm9ybWF0JztcclxuICAgIH1cclxuXHJcbiAgLy9pZiBub3QsIGNvbnZlcnQgdGhlIHVzZXIgZW1haWwgdG8gVVJMIGZvcm1hdFxyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gZ2V0VXNlclVSTEZyb21FbWFpbChpZGVudGlmaWVyKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGFPYmplY3RVUkwodXJsKSB7XHJcbiAgbGV0IHNjaGVtYXNUb0lnbm9yZSA9IFsnZG9tYWluLWlkcCcsICdydW50aW1lJywgJ2RvbWFpbicsICdoeXBlcnR5J107XHJcbiAgbGV0IHNwbGl0VVJMID0gKHVybCkuc3BsaXQoJzovLycpO1xyXG4gIGxldCB1cmxTY2hlbWEgPSBzcGxpdFVSTFswXTtcclxuXHJcbiAgcmV0dXJuIHNjaGVtYXNUb0lnbm9yZS5pbmRleE9mKHVybFNjaGVtYSkgPT09IC0xO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNMZWdhY3kodXJsKSB7XHJcbiAgaWYgKHVybC5zcGxpdCgnQCcpLmxlbmd0aCA+IDEpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNVUkwodXJsKSB7XHJcbiAgcmV0dXJuICh1cmwpLnNwbGl0KCcvJykubGVuZ3RoID49IDM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1VzZXJVUkwodXJsKSB7XHJcbiAgcmV0dXJuIGRpdmlkZVVSTCh1cmwpLnR5cGUgPT09ICd1c2VyJztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzSHlwZXJ0eVVSTCh1cmwpIHtcclxuICByZXR1cm4gZGl2aWRlVVJMKHVybCkudHlwZSA9PT0gJ2h5cGVydHknO1xyXG59XHJcblxyXG4vKipcclxuICogZ2V0IGluZm9ybWF0aW9uIHJlbGF0aXZlIGVhY2ggY29tcG9uZW50IGNvbmZpZ3VyZWQgb24gcnVudGltZSBjb25maWd1cmF0aW9uO1xyXG4gKiBAcGFyYW0gIHtvYmplY3R9IGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggYWxsIGNvbmZpZ3VyYXRpb25cclxuICogQHBhcmFtICB7c3RyaW5nfSBjb21wb25lbnQgICAgIHN0cmluZyB3aXRoIHRoZSBjb21wb25lbnQgdG8gZ2V0IHRoZSBjb25maWd1cmF0aW9uLCBsaWtlLCBydW50aW1lVVJMUywgY2F0YWxvZ3VlVVJMcywgbXNnTm9kZVVSTCwgZG9tYWluUmVnaXN0cnlVUkw7XHJcbiAqIEBwYXJhbSAge3N0cmluZ30gcmVzb3VyY2UgICAgICB0eXBlIG9mIHJlc291cmNlIHRvIGdldCwgbGlrZSwgY2F0YWxvZ3VlLCBydW50aW1lVUEsIHByb3RvY29sc3R1YiwgaWRwUHJveHlcclxuICogQHJldHVybiB7b2JqZWN0fSAgICAgICAgICAgICAgIHJldHVybiBhbiBvYmplY3Qgd2l0aCBhbGwgY29uZmlndXJhdGlvbnM7XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlndXJhdGlvblJlc291cmNlcyhjb25maWd1cmF0aW9uLCBjb21wb25lbnQsIHJlc291cmNlKSB7XHJcbiAgbGV0IG9iamVjdFJlc291cmNlID0gY29uZmlndXJhdGlvbltjb21wb25lbnRdO1xyXG4gIGxldCByZXNvdXJjZVR5cGUgPSBvYmplY3RSZXNvdXJjZVtyZXNvdXJjZV07XHJcblxyXG4gIHJldHVybiByZXNvdXJjZVR5cGU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCdWlsZCBhIGZ1bGwgdXJsIHdpdGggdGhlIHJ1bnRpbWUgY29uZmlndXJhdGlvbjtcclxuICogQHBhcmFtICB7b2JqZWN0fSBjb25maWd1cmF0aW9uIG9iamVjdCB3aXRoIGFsbCBjb25maWd1cmF0aW9uXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gY29tcG9uZW50ICAgICBzdHJpbmcgd2l0aCB0aGUgY29tcG9uZW50IHRvIGdldCB0aGUgY29uZmlndXJhdGlvbiwgbGlrZSwgcnVudGltZVVSTFMsIGNhdGFsb2d1ZVVSTHMsIG1zZ05vZGVVUkwsIGRvbWFpblJlZ2lzdHJ5VVJMO1xyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHJlc291cmNlICAgICAgdHlwZSBvZiByZXNvdXJjZSB0byBnZXQsIGxpa2UsIGNhdGFsb2d1ZSwgcnVudGltZVVBLCBwcm90b2NvbHN0dWIsIGlkcFByb3h5XHJcbiAqIEBwYXJhbSAge3N0cmluZ30gdHlwZSAgICAgICAgICByZXNvdXJjZSB0byBnZXQsIGxpa2UgYSBoeXBlcnR5IG5hbWUgb3IgcHJvdG9jb2xzdHViIG5hbWU7XHJcbiAqIEBwYXJhbSAge2Jvb2xlYW59IHVzZUZhbGxiYWNrICBpZiB0cnVlIHRoZSBmdW5jdGlvbiB3aWxsIGNoZWNrIGlmIGhhdmUgYSBmYWxsYmFjayB1cmw7XHJcbiAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgICAgICAgICBwYXJ0aWFsIHVybCB0byBjb250YWN0IHRoZSByZXNvdXJjZTtcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBidWlsZFVSTChjb25maWd1cmF0aW9uLCBjb21wb25lbnQsIHJlc291cmNlLCB0eXBlLCB1c2VGYWxsYmFjayA9IGZhbHNlKSB7XHJcbiAgbGV0IG9iamVjdFJlc291cmNlID0gY29uZmlndXJhdGlvbltjb21wb25lbnRdO1xyXG4gIGxldCB1cmw7XHJcblxyXG4gIGlmICghb2JqZWN0UmVzb3VyY2UuaGFzT3duUHJvcGVydHkocmVzb3VyY2UpKSB7XHJcbiAgICB0aHJvdyBFcnJvcignVGhlIGNvbmZpZ3VyYXRpb24gJyArIEpTT04uc3RyaW5naWZ5KG9iamVjdFJlc291cmNlLCAnJywgMikgKyAnIGRvblxcJ3QgaGF2ZSB0aGUgJyArIHJlc291cmNlICsgJyByZXNvdXJjZSB5b3UgYXJlIGxvb2tpbmcgZm9yJyk7XHJcbiAgfVxyXG5cclxuICBsZXQgcmVzb3VyY2VUeXBlID0gb2JqZWN0UmVzb3VyY2VbcmVzb3VyY2VdO1xyXG5cclxuICBpZiAodHlwZSkge1xyXG4gICAgdXJsID0gcmVzb3VyY2VUeXBlLnByZWZpeCArIGNvbmZpZ3VyYXRpb24uZG9tYWluICsgcmVzb3VyY2VUeXBlLnN1ZmZpeCArIHR5cGU7XHJcbiAgICBpZiAocmVzb3VyY2VUeXBlLmhhc093blByb3BlcnR5KCdmYWxsYmFjaycpICYmIHVzZUZhbGxiYWNrKSB7XHJcbiAgICAgIGlmIChyZXNvdXJjZVR5cGUuZmFsbGJhY2suaW5kZXhPZignJWRvbWFpbiUnKSkge1xyXG4gICAgICAgIHVybCA9IHJlc291cmNlVHlwZS5mYWxsYmFjay5yZXBsYWNlKC8oJWRvbWFpbiUpL2csIGNvbmZpZ3VyYXRpb24uZG9tYWluKSArIHR5cGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdXJsID0gcmVzb3VyY2VUeXBlLmZhbGxiYWNrICsgdHlwZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICB1cmwgPSByZXNvdXJjZVR5cGUucHJlZml4ICsgY29uZmlndXJhdGlvbi5kb21haW4gKyByZXNvdXJjZVR5cGUuc3VmZml4O1xyXG4gIH1cclxuXHJcbiAgLy8gY29uc29sZS5sb2codXJsKTtcclxuXHJcbiAgcmV0dXJuIHVybDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdlbmVyYXRlIGEgR2xvYmFsIFVuaXF1ZSBJRFxyXG4gKlxyXG4gKiBAcmV0dXJucyBTdHJpbmc7XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVHVUlEKCkge1xyXG5cclxuICBmdW5jdGlvbiBzNCgpIHtcclxuICAgIHJldHVybiBNYXRoLmZsb29yKCgxICsgTWF0aC5yYW5kb20oKSkgKiAweDEwMDAwKVxyXG4gICAgICAudG9TdHJpbmcoMTYpXHJcbiAgICAgIC5zdWJzdHJpbmcoMSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gczQoKSArIHM0KCkgKyAnLScgKyBzNCgpICsgJy0nICsgczQoKSArICctJyArIHM0KCkgKyAnLScgKyBzNCgpICsgczQoKSArIHM0KCk7XHJcblxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlcklkZW50aXR5RG9tYWluKHVybCkge1xyXG4gIGxldCBkaXZpZGVkVVJMID0gZGl2aWRlVVJMKHVybCk7XHJcbiAgbGV0IHNwbGl0ZWREb21haW4gPSBkaXZpZGVkVVJMLmRvbWFpbi5zcGxpdCgnLicpO1xyXG4gIGxldCBzcGxpdGVkTGVuZ3RoID0gc3BsaXRlZERvbWFpbi5sZW5ndGg7XHJcbiAgaWYgKHNwbGl0ZWRMZW5ndGggPT0gMSkge1xyXG4gICAgcmV0dXJuIHNwbGl0ZWREb21haW5bc3BsaXRlZExlbmd0aCAtIDFdO1xyXG4gIH1cclxuICBsZXQgZG9tYWluID0gc3BsaXRlZERvbWFpbltzcGxpdGVkTGVuZ3RoIC0gMl0gKyAnLicgKyBzcGxpdGVkRG9tYWluW3NwbGl0ZWRMZW5ndGggLSAxXTtcclxuICByZXR1cm4gZG9tYWluO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2sgaWYgVVJMIGlzIGZyb20gYSBiYWNrZW5kIHNlcnZpY2VcclxuICogQHBhcmFtICB7c3RyaW5nfSB1cmwgICAgIFVSTCB0byBiZSBwcm9jZXNzZWRcclxuICogQHJldHVybiB7Ym9vbGVhbn1cclxuICovXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNCYWNrZW5kU2VydmljZVVSTCh1cmwpIHtcclxuICBsZXQgZGl2aWRlZFVSTCA9IGRpdmlkZVVSTCh1cmwpO1xyXG4gIGxldCBzcGxpdGVkRG9tYWluID0gZGl2aWRlZFVSTC5kb21haW4uc3BsaXQoJy4nKTtcclxuICBsZXQgYmFja2VuZFNjaGVtZXMgPSBbJ2RvbWFpbicsICdnbG9iYWwnLCAnZG9tYWluLWlkcCddOyAvLyBzaG91bGQgYmUgZGVmaW5lZCBpbiB0aGUgcnVudGltZSBjb25maWd1cmF0aW9uXHJcbiAgbGV0IGJhY2tlbmRTdWJEb21haW5zID0gWydyZWdpc3RyeScsICdtc2ctbm9kZSddOyAvLyBzaG91bGQgYmUgZGVmaW5lZCBpbiB0aGUgcnVudGltZSBjb25maWd1cmF0aW9uXHJcbiAgbGV0IHN1YkRvbWFpbjtcclxuXHJcbiAgaWYgKHNwbGl0ZWREb21haW4ubGVuZ3RoID4gMSkge1xyXG4gICAgc3ViRG9tYWluID0gc3BsaXRlZERvbWFpbi5maWx0ZXIoaXRlbSA9PiBiYWNrZW5kU3ViRG9tYWlucy5pbmRleE9mKGl0ZW0pICE9PSAtMSlbMF07XHJcbiAgfVxyXG5cclxuICBpZiAoc3ViRG9tYWluICYmIGJhY2tlbmRTdWJEb21haW5zLmluZGV4T2Yoc3ViRG9tYWluKSAhPT0gLTEpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaWYgKGRpdmlkZWRVUkwudHlwZSkge1xyXG4gICAgcmV0dXJuIChiYWNrZW5kU2NoZW1lcy5pbmRleE9mKGRpdmlkZWRVUkwudHlwZSkgIT09IC0xKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRpdmlkZUVtYWlsKGVtYWlsKSB7XHJcbiAgbGV0IGluZGV4T2ZBdCA9IGVtYWlsLmluZGV4T2YoJ0AnKTtcclxuXHJcbiAgbGV0IHJlc3VsdCA9IHtcclxuICAgIHVzZXJuYW1lOiBlbWFpbC5zdWJzdHJpbmcoMCwgaW5kZXhPZkF0KSxcclxuICAgIGRvbWFpbjogZW1haWwuc3Vic3RyaW5nKGluZGV4T2ZBdCArIDEsIGVtYWlsLmxlbmd0aClcclxuICB9O1xyXG5cclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbihvYmosIGtleVBhdGgsIHZhbHVlKSB7XHJcblxyXG4gIGlmICghb2JqKSBvYmogPSB7fTtcclxuICBpZiAodHlwZW9mKGtleVBhdGgpID09PSAnc3RyaW5nJykga2V5UGF0aCA9IHBhcnNlQXR0cmlidXRlcyhrZXlQYXRoKTtcclxuXHJcbiAgbGV0IGxhc3RLZXlJbmRleCA9IGtleVBhdGgubGVuZ3RoIC0gMTtcclxuXHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0S2V5SW5kZXg7ICsraSkge1xyXG4gICAgbGV0IGtleSA9IGtleVBhdGhbaV07XHJcbiAgICBpZiAoIShrZXkgaW4gb2JqKSkge1xyXG4gICAgICBvYmpba2V5XSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIG9iaiA9IG9ialtrZXldO1xyXG5cclxuICB9XHJcblxyXG4gIG9ialtrZXlQYXRoW2xhc3RLZXlJbmRleF1dID0gdmFsdWU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzcGxpdE9iamVjdFVSTChkYXRhT2JqZWN0VVJMKSB7XHJcbiAgY29uc29sZS5pbmZvKCdbdXRpbHMgLSBzcGxpdE9iamVjdFVSTF06ICcsIGRhdGFPYmplY3RVUkwpO1xyXG5cclxuICBsZXQgc3BsaXRlZFVSTCA9IGRhdGFPYmplY3RVUkwuc3BsaXQoJy8nKTtcclxuICBsZXQgdXJsID0gc3BsaXRlZFVSTFswXSArICcvLycgKyBzcGxpdGVkVVJMWzJdICsgJy8nICsgc3BsaXRlZFVSTFszXTtcclxuICBsZXQgcmVzb3VyY2UgPSBzcGxpdGVkVVJMWzVdO1xyXG5cclxuICBsZXQgcmVzdWx0ID0ge1xyXG4gICAgdXJsOiB1cmwsXHJcbiAgICByZXNvdXJjZTogcmVzb3VyY2VcclxuICB9O1xyXG5cclxuICBjb25zb2xlLmluZm8oJ1t1dGlscyAtIHNwbGl0T2JqZWN0VVJMXTogJywgcmVzdWx0KTtcclxuXHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQXR0cmlidXRlKHBhdGgpIHtcclxuXHJcbiAgbGV0IHJlZ2V4ID0gLygoKFthLXpBLVpdKyk6XFwvXFwvKFswLTlhLXpBLVpdWy1cXHddKlswLTlhLXpBLVpdXFwuKStbYS16QS1aXXsyLDl9KVxcL1thLXpBLVowLTkuXStAW2EtekEtWjAtOV0rKC0pP1thLXpBLVowLTldKyhcXC4pP1thLXpBLVowLTldezIsMTB9P1xcLlthLXpBLVpdezIsMTB9KSguKyg/PS5pZGVudGl0eSkpPy9nbTtcclxuXHJcbiAgbGV0IGxpc3QgPSBbXTtcclxuICBsZXQgZmluYWwgPSBbXTtcclxuICBsZXQgdGVzdCA9IHBhdGgubWF0Y2gocmVnZXgpO1xyXG5cclxuICBpZiAodGVzdCA9PSBudWxsKSB7XHJcbiAgICBmaW5hbCA9IHBhdGguc3BsaXQoJy4nKTtcclxuICB9IGVsc2Uge1xyXG4gICAgbGV0IG07XHJcbiAgICB3aGlsZSAoKG0gPSByZWdleC5leGVjKHBhdGgpKSAhPT0gbnVsbCkge1xyXG4gICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBpbmZpbml0ZSBsb29wcyB3aXRoIHplcm8td2lkdGggbWF0Y2hlc1xyXG4gICAgICBpZiAobS5pbmRleCA9PT0gcmVnZXgubGFzdEluZGV4KSB7XHJcbiAgICAgICAgcmVnZXgubGFzdEluZGV4Kys7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFRoZSByZXN1bHQgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGBtYC12YXJpYWJsZS5cclxuICAgICAgbS5mb3JFYWNoKChtYXRjaCwgZ3JvdXBJbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChncm91cEluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgICBsaXN0LnB1c2gobWF0Y2gpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgbGlzdC5mb3JFYWNoKCh1cmwpID0+IHtcclxuXHJcbiAgICAgIHJlc3VsdCA9IHBhdGgucmVwbGFjZSh1cmwsICcqLSonKTtcclxuICAgICAgZmluYWwgPSByZXN1bHQuc3BsaXQoJy4nKS5tYXAoKGl0ZW0pID0+IHtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0gPT09ICcqLSonKSB7IHJldHVybiB1cmw7IH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb25zb2xlLmxvZygnW1J1bnRpbWVDb3JlLlV0aWxzLmNoZWNrQXR0cmlidXRlXScsIGZpbmFsKTtcclxuICByZXR1cm4gZmluYWw7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUF0dHJpYnV0ZXMocGF0aCkge1xyXG4gIGxldCByZWdleCA9IC8oWzAtOWEtekEtWl1bLVxcd10qKTpcXC9cXC8vZztcclxuXHJcbiAgbGV0IHN0cmluZzMgPSAnaWRlbnRpdHknO1xyXG5cclxuICBpZiAoIXBhdGguaW5jbHVkZXMoJzovLycpKSB7XHJcbiAgICByZXR1cm4gKHBhdGguc3BsaXQoJy4nKSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGxldCBzdHJpbmcxID0gcGF0aC5zcGxpdChyZWdleClbMF07XHJcblxyXG4gICAgbGV0IGFycmF5MSA9IHN0cmluZzEuc3BsaXQoJy4nKTtcclxuXHJcbiAgICBsZXQgc3RyaW5nMiA9IHBhdGgucmVwbGFjZShzdHJpbmcxLCAnJyk7XHJcblxyXG4gICAgaWYgKHBhdGguaW5jbHVkZXMoc3RyaW5nMykpIHtcclxuXHJcbiAgICAgIGxldCBhcnJheTIgPSBzdHJpbmcyLnNwbGl0KHN0cmluZzMgKyAnLicpO1xyXG5cclxuICAgICAgY29uc29sZS5sb2coJ2FycmF5MiAnICsgYXJyYXkyKTtcclxuXHJcbiAgICAgIHN0cmluZzIgPSBhcnJheTJbMF0uc2xpY2UoJy4nLCAtMSk7XHJcblxyXG4gICAgICBhcnJheTIgPSBhcnJheTJbMV0uc3BsaXQoJy4nKTtcclxuXHJcbiAgICAgIGFycmF5MS5wdXNoKHN0cmluZzIsIHN0cmluZzMpO1xyXG5cclxuICAgICAgYXJyYXkxID0gYXJyYXkxLmNvbmNhdChhcnJheTIpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFycmF5MS5wdXNoKHN0cmluZzIpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKGFycmF5MS5maWx0ZXIoQm9vbGVhbikpO1xyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eShvYmopIHtcclxuICBmb3IgKHZhciBwcm9wIGluIG9iaikge1xyXG5cclxuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmopID09PSBKU09OLnN0cmluZ2lmeSh7fSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjaGF0a2V5c1RvU3RyaW5nQ2xvbmVyKHNlc3Npb25LZXlzKSB7XHJcbiAgbGV0IGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lID0ge307XHJcbiAgbGV0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHNlc3Npb25LZXlzKTtcclxuICBpZiAoZmllbGRzKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICBmaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgZmllbGQgPSBmaWVsZHNbaV07XHJcbiAgICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmVbZmllbGRdID0ge307XHJcbiAgICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmVbZmllbGRdLnNlc3Npb25LZXkgPSBzZXNzaW9uS2V5c1tmaWVsZF0uc2Vzc2lvbktleS50b1N0cmluZygpO1xyXG4gICAgICAgIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lW2ZpZWxkXS5pc1RvRW5jcnlwdCA9IHNlc3Npb25LZXlzW2ZpZWxkXS5pc1RvRW5jcnlwdDtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ19jaGF0a2V5c1RvU3RyaW5nQ2xvbmVyOmVycicsIGVycik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNoYXRrZXlzVG9BcnJheUNsb25lcihzZXNzaW9uS2V5cykge1xyXG4gIGxldCBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZSA9IHt9O1xyXG4gIGxldCBmaWVsZHMgPSBPYmplY3Qua2V5cyhzZXNzaW9uS2V5cyk7XHJcbiAgaWYgKGZpZWxkcykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAgZmllbGRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGZpZWxkID0gZmllbGRzW2ldO1xyXG4gICAgICAgIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lW2ZpZWxkXSA9IHt9O1xyXG4gICAgICAgIGxldCBhcnJheVZhbHVlcyA9IEpTT04ucGFyc2UoJ1snICsgc2Vzc2lvbktleXNbZmllbGRdLnNlc3Npb25LZXkgKyAnXScpO1xyXG4gICAgICAgIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lW2ZpZWxkXS5zZXNzaW9uS2V5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlWYWx1ZXMpO1xyXG4gICAgICAgIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lW2ZpZWxkXS5pc1RvRW5jcnlwdCA9IHNlc3Npb25LZXlzW2ZpZWxkXS5pc1RvRW5jcnlwdDtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ19jaGF0a2V5c1RvQXJyYXlDbG9uZXI6ZXJyJywgZXJyKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VNZXNzYWdlVVJMKFVSTCkge1xyXG4gIGxldCBzcGxpdGVkVG9VUkwgPSBVUkwuc3BsaXQoJy8nKTtcclxuICBpZiAoc3BsaXRlZFRvVVJMLmxlbmd0aCA8PSA2KSB7XHJcbiAgICByZXR1cm4gc3BsaXRlZFRvVVJMWzBdICsgJy8vJyArIHNwbGl0ZWRUb1VSTFsyXSArICcvJyArIHNwbGl0ZWRUb1VSTFszXTtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIHNwbGl0ZWRUb1VSTFswXSArICcvLycgKyBzcGxpdGVkVG9VUkxbMl0gKyAnLycgKyBzcGxpdGVkVG9VUkxbM10gKyAnLycgKyBzcGxpdGVkVG9VUkxbNF07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYXZhaWxhYmxlU3BhY2UodXNhZ2UsIHF1b3RhKSB7XHJcbiAgY29uc3QgYXZhaWxhYmxlID0gKHVzYWdlIC8gcXVvdGEpLnRvRml4ZWQoMik7XHJcbiAgcmV0dXJuIHtcclxuICAgIHF1b3RhOiBxdW90YSxcclxuICAgIHVzYWdlOiB1c2FnZSxcclxuICAgIHBlcmNlbnQ6IE51bWJlcihhdmFpbGFibGUpXHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiogRW5jb2RlcyBhIEpTIG9iamVjdCB0byBiYXNlIDY0IGVuY29kZVxyXG4qIEBwYXJhbSAgIHtPYmplY3R9ICAgIHZhbHVlICAgIGJ5dGVBcnJheSB2YWx1ZVxyXG4qIEByZXR1cm4gIHtzdHJpbmd9ICAgZW5jb2RlZCB2YWx1ZVxyXG4qL1xyXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlKHZhbHVlKSB7XHJcbiAgdHJ5IHtcclxuICAgIGxldCBzdHJpbmdWYWx1ZSA9IHN0cmluZ2lmeSh2YWx1ZSk7XHJcbiAgICByZXR1cm4gYnRvYShzdHJpbmdWYWx1ZSk7XHJcbiAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdbVXRpbHMuZW5jb2RlOmVycl0gJyArIGVycik7XHJcbiAgICB0aHJvdyBlcnI7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICAqIERlY29kZSBhIGJhc2U2NCBzdHJpbmcgdG8gb2JqZWN0XHJcbiAgKiBAcGFyYW0gICB7c3RyaW5nX2I2NH0gICAgdmFsdWUgICAgdmFsdWUgZW5jb2RlZCBpbiBiYXNlIDY0XHJcbiAgKiBAcmV0dXJuICB7T2JqZWN0fSBkZWNvZGVkVmFsdWVcclxuICAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlKHZhbHVlKSB7XHJcbiAgdHJ5IHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKGF0b2IodmFsdWUpKTtcclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIGNvbnNvbGUubG9nKCdbVXRpbHMuZGVjb2RlOmVycl0gJyArIGVycik7XHJcbiAgICB0aHJvdyBlcnI7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuKiBEZWNvZGUgYSBiYXNlNjQgc3RyaW5nIHRvIFVpbnQ4QXJyYXlcclxuKiBAcGFyYW0gICB7c3RyaW5nX2I2NH0gICAgdmFsdWUgICAgYnl0ZUFycmF5IHZhbHVlXHJcbiogQHJldHVybiAge1VpbnQ4QXJyYXl9ICAgZW5jb2RlZCB2YWx1ZVxyXG4qL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVG9VaW50OEFycmF5KHZhbHVlKSB7XHJcbiAgdHJ5IHtcclxuICAgIHJldHVybiBuZXcgVWludDhBcnJheShkZWNvZGUodmFsdWUpKTtcclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoJ1tVdGlscy5kZWNvZGVUb1VpbnQ4QXJyYXk6ZXJyXSAnICsgZXJyKTtcclxuICAgIHRocm93IGVycjtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4qIENvbnZlcnRzIGEgSlMgb2JqZWN0IHRvIHN0cmluZ1xyXG4qIE5PVEU6IFNwZWNpYWwgY29udmVyc2lvbiBmb3IgVWludDhBcnJheXNcclxuKiBAcGFyYW0gICB7T2JqZWN0fSAgICB2YWx1ZSAgICBieXRlQXJyYXkgdmFsdWVcclxuKiBAcmV0dXJuICB7VWludDhBcnJheX0gICBlbmNvZGVkIHZhbHVlXHJcbiovXHJcbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkodmFsdWUpIHtcclxuICB0cnkge1xyXG4gICAgbGV0IHN0cmluZ1ZhbHVlO1xyXG4gICAgaWYgKHZhbHVlLmNvbnN0cnVjdG9yID09PSBVaW50OEFycmF5KSB7XHJcbiAgICAgIHN0cmluZ1ZhbHVlID0gJ1snICsgdmFsdWUudG9TdHJpbmcoKSArICddJzsgLy8gdGhlIFtdIGlzIGZvciBKU09OLnBhcnNlIGNvbXBhdGliaWxpdHlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0cmluZ1ZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cmluZ1ZhbHVlO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgY29uc29sZS5lcnJvcignW1V0aWxzLnN0cmluZ2lmeTplcnJdICcgKyBlcnIpO1xyXG4gICAgdGhyb3cgZXJyO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiogQ29udmVydHMgYSBzdHJpbmdpZmllZCBvYmplY3QgdG8gb2JqZWN0XHJcbiogQHBhcmFtICAge1N0cmluZ30gICAgdmFsdWUgICAgYnl0ZUFycmF5IHZhbHVlXHJcbiogQHJldHVybiAge09iamVjdH0gICBlbmNvZGVkIHZhbHVlXHJcbiovXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZSh2YWx1ZSkge1xyXG4gIHRyeSB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcbiAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdbVXRpbHMucGFyc2U6ZXJyXScgKyBlcnIpO1xyXG4gICAgY29uc29sZS50cmFjZSgpO1xyXG4gICAgY29uc29sZS5lcnJvcignVGhhdCB0aGF0IGNhdXNlIHRoZSBlcnJvcjonLCB2YWx1ZSk7XHJcbiAgICB0aHJvdyBlcnI7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuKiBDb252ZXJ0cyBhIHN0cmluZ2lmaWVkIG9iamVjdCB0byBvYmplY3RcclxuKiBAcGFyYW0gICB7U3RyaW5nfSAgICB2YWx1ZSAgICBieXRlQXJyYXkgdmFsdWVcclxuKiBAcmV0dXJuICB7VWludDhBcnJheX0gICBlbmNvZGVkIHZhbHVlXHJcbiovXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRvVWludDhBcnJheSh2YWx1ZSkge1xyXG4gIHRyeSB7XHJcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkocGFyc2UodmFsdWUpKTtcclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoJ1tVdGlscy5wYXJzZVRvVWludDhBcnJheTplcnJdJyArIGVycik7XHJcbiAgICB0aHJvdyBlcnI7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvdXRpbHMvdXRpbHMuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBd0NBO0FBc0RBO0FBSUE7QUFVQTtBQUtBO0FBVUE7QUFVQTtBQVVBO0FBbUJBO0FBUUE7QUFRQTtBQUlBO0FBSUE7QUFXQTtBQWdCQTtBQWlDQTtBQVlBO0FBaUJBO0FBc0JBO0FBWUE7QUFvQkE7QUFpQkE7QUEwQ0E7QUF1Q0E7QUFZQTtBQWtCQTtBQW1CQTtBQVNBO0FBY0E7QUFlQTtBQWNBO0FBZUE7QUFvQkE7QUFnQkE7QUFDQTs7O0FBcGtCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTs7Ozs7QUFLQTs7Ozs7Ozs7QUFRQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFLQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQVNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///110\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Operators = function () {\n function Operators() {\n (0, _classCallCheck3.default)(this, Operators);\n }\n\n (0, _createClass3.default)(Operators, [{\n key: 'and',\n value: function and(params) {\n return params[0] && params[1];\n }\n }, {\n key: 'between',\n value: function between(params) {\n var start = parseInt(params[0][0]);\n var end = parseInt(params[0][1]);\n var now = params[1];\n\n if (end < start) {\n now = now < start ? now += 2400 : now;\n end += 2400;\n }\n\n return now > start && now < end;\n }\n }, {\n key: 'equals',\n value: function equals(params) {\n return String(params[0]) === '*' || String(params[0]) === String(params[1]);\n }\n }, {\n key: 'greaterThan',\n value: function greaterThan(params) {\n return params[1] > params[0];\n }\n }, {\n key: 'in',\n value: function _in(params) {\n return params[0].indexOf(params[1]) > -1;\n }\n }, {\n key: 'lessThan',\n value: function lessThan(params) {\n return params[1] < params[0];\n }\n }, {\n key: 'not',\n value: function not(params) {\n return !params[0];\n }\n }, {\n key: 'or',\n value: function or(params) {\n return params[0] || params[1];\n }\n }]);\n return Operators;\n}();\n\nexports.default = Operators;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvT3BlcmF0b3JzLmpzPzFjNDIiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgT3BlcmF0b3JzIHtcclxuXHJcbiAgYW5kKHBhcmFtcykge1xyXG4gICAgcmV0dXJuIHBhcmFtc1swXSAmJiBwYXJhbXNbMV07XHJcbiAgfVxyXG5cclxuICBiZXR3ZWVuKHBhcmFtcykge1xyXG4gICAgbGV0IHN0YXJ0ID0gcGFyc2VJbnQocGFyYW1zWzBdWzBdKTtcclxuICAgIGxldCBlbmQgPSBwYXJzZUludChwYXJhbXNbMF1bMV0pO1xyXG4gICAgbGV0IG5vdyA9IHBhcmFtc1sxXTtcclxuXHJcbiAgICBpZiAoZW5kIDwgc3RhcnQpIHtcclxuICAgICAgbm93ID0gKG5vdyA8IHN0YXJ0KSA/IG5vdyArPSAyNDAwIDogbm93O1xyXG4gICAgICBlbmQgKz0gMjQwMDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKG5vdyA+IHN0YXJ0ICYmIG5vdyA8IGVuZCk7XHJcbiAgfVxyXG5cclxuICBlcXVhbHMocGFyYW1zKSB7XHJcbiAgICByZXR1cm4gU3RyaW5nKHBhcmFtc1swXSkgPT09ICcqJyB8fCBTdHJpbmcocGFyYW1zWzBdKSA9PT0gU3RyaW5nKHBhcmFtc1sxXSk7XHJcbiAgfVxyXG5cclxuICBncmVhdGVyVGhhbihwYXJhbXMpIHtcclxuICAgIHJldHVybiBwYXJhbXNbMV0gPiBwYXJhbXNbMF07XHJcbiAgfVxyXG5cclxuICBpbihwYXJhbXMpIHtcclxuICAgIHJldHVybiBwYXJhbXNbMF0uaW5kZXhPZihwYXJhbXNbMV0pID4gLTE7XHJcbiAgfVxyXG5cclxuICBsZXNzVGhhbihwYXJhbXMpIHtcclxuICAgIHJldHVybiBwYXJhbXNbMV0gPCBwYXJhbXNbMF07XHJcbiAgfVxyXG5cclxuICBub3QocGFyYW1zKSB7XHJcbiAgICByZXR1cm4gIXBhcmFtc1swXTtcclxuICB9XHJcblxyXG4gIG9yKHBhcmFtcykge1xyXG4gICAgcmV0dXJuIHBhcmFtc1swXSB8fCBwYXJhbXNbMV07XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgT3BlcmF0b3JzO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3BvbGljeS9PcGVyYXRvcnMuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///111\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Operators = __webpack_require__(111);\n\nvar _Operators2 = _interopRequireDefault(_Operators);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* @author Ana Caldeira \r\n* @classdesc Class to represent a condition and evaluate its applicability.\r\n*/\nvar Condition = function () {\n\n /**\r\n * Creates a new Condition.\r\n * @class\r\n * @param {string} attribute\r\n * @param {string} operator\r\n * @param {*} params\r\n */\n function Condition(attribute, operator, params) {\n (0, _classCallCheck3.default)(this, Condition);\n\n this.attribute = attribute;\n this.operator = operator;\n this.params = params;\n this.operators = new _Operators2.default();\n }\n\n /**\r\n * Verifies if the condition is applicable to the message. First, the system value that corresponds to the attribute is retrieved; then, that value is compared with the parameter specified in the condition by executing the operator implementation. If the operator is 'in' and the name of a group is given, then the array holding the members of the group is retrieved before the comparison.\r\n * @param {Object} context environment where the Policy Engine is being used\r\n * @param {Object} message\r\n */\n\n\n (0, _createClass3.default)(Condition, [{\n key: 'isApplicable',\n value: function isApplicable(context, message) {\n context[this.attribute] = { message: message };\n var value = context[this.attribute];\n var tempParam = void 0;\n\n if (this.operator === 'in') {\n if (!Array.isArray(this.params)) {\n tempParam = context.getGroup(this.params, message.to);\n return this.operators[this.operator]([tempParam, value]);\n }\n }\n\n return this.operators[this.operator]([this.params, value]);\n }\n }]);\n return Condition;\n}(); /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\nexports.default = Condition;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29uZGl0aW9ucy9Db25kaXRpb24uanM/MmUzMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxyXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxyXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXHJcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xyXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxyXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXHJcbipcclxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuKlxyXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbipcclxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKiovXHJcblxyXG5pbXBvcnQgT3BlcmF0b3JzIGZyb20gJy4uL09wZXJhdG9ycyc7XHJcblxyXG4vKipcclxuKiBAYXV0aG9yIEFuYSBDYWxkZWlyYSA8YW5hLmNhbGRlaXJhQHRlY25pY28udWxpc2JvYS5wdD5cclxuKiBAY2xhc3NkZXNjIENsYXNzIHRvIHJlcHJlc2VudCBhIGNvbmRpdGlvbiBhbmQgZXZhbHVhdGUgaXRzIGFwcGxpY2FiaWxpdHkuXHJcbiovXHJcbmNsYXNzIENvbmRpdGlvbiB7XHJcblxyXG4gIC8qKlxyXG4gICogQ3JlYXRlcyBhIG5ldyBDb25kaXRpb24uXHJcbiAgKiBAY2xhc3NcclxuICAqIEBwYXJhbSAge3N0cmluZ30gIGF0dHJpYnV0ZVxyXG4gICogQHBhcmFtICB7c3RyaW5nfSAgb3BlcmF0b3JcclxuICAqIEBwYXJhbSAgeyp9ICAgICAgIHBhcmFtc1xyXG4gICovXHJcbiAgY29uc3RydWN0b3IoYXR0cmlidXRlLCBvcGVyYXRvciwgcGFyYW1zKSB7XHJcbiAgICB0aGlzLmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTtcclxuICAgIHRoaXMub3BlcmF0b3IgPSBvcGVyYXRvcjtcclxuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgdGhpcy5vcGVyYXRvcnMgPSBuZXcgT3BlcmF0b3JzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFZlcmlmaWVzIGlmIHRoZSBjb25kaXRpb24gaXMgYXBwbGljYWJsZSB0byB0aGUgbWVzc2FnZS4gRmlyc3QsIHRoZSBzeXN0ZW0gdmFsdWUgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgYXR0cmlidXRlIGlzIHJldHJpZXZlZDsgdGhlbiwgdGhhdCB2YWx1ZSBpcyBjb21wYXJlZCB3aXRoIHRoZSBwYXJhbWV0ZXIgc3BlY2lmaWVkIGluIHRoZSBjb25kaXRpb24gYnkgZXhlY3V0aW5nIHRoZSBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbi4gSWYgdGhlIG9wZXJhdG9yIGlzICdpbicgYW5kIHRoZSBuYW1lIG9mIGEgZ3JvdXAgaXMgZ2l2ZW4sIHRoZW4gdGhlIGFycmF5IGhvbGRpbmcgdGhlIG1lbWJlcnMgb2YgdGhlIGdyb3VwIGlzIHJldHJpZXZlZCBiZWZvcmUgdGhlIGNvbXBhcmlzb24uXHJcbiAgKiBAcGFyYW0gIHtPYmplY3R9ICAgIGNvbnRleHQgICBlbnZpcm9ubWVudCB3aGVyZSB0aGUgUG9saWN5IEVuZ2luZSBpcyBiZWluZyB1c2VkXHJcbiAgKiBAcGFyYW0gIHtPYmplY3R9ICAgIG1lc3NhZ2VcclxuICAqL1xyXG4gIGlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlKSB7XHJcbiAgICBjb250ZXh0W3RoaXMuYXR0cmlidXRlXSA9IHsgbWVzc2FnZTogbWVzc2FnZSB9O1xyXG4gICAgbGV0IHZhbHVlID0gY29udGV4dFt0aGlzLmF0dHJpYnV0ZV07XHJcbiAgICBsZXQgdGVtcFBhcmFtO1xyXG5cclxuICAgIGlmICh0aGlzLm9wZXJhdG9yID09PSAnaW4nKSB7XHJcbiAgICAgIGlmICghKEFycmF5LmlzQXJyYXkodGhpcy5wYXJhbXMpKSkge1xyXG4gICAgICAgIHRlbXBQYXJhbSA9IGNvbnRleHQuZ2V0R3JvdXAodGhpcy5wYXJhbXMsIG1lc3NhZ2UudG8pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wZXJhdG9yc1t0aGlzLm9wZXJhdG9yXShbdGVtcFBhcmFtLCB2YWx1ZV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMub3BlcmF0b3JzW3RoaXMub3BlcmF0b3JdKFt0aGlzLnBhcmFtcywgdmFsdWVdKTtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDb25kaXRpb247XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L2NvbmRpdGlvbnMvQ29uZGl0aW9uLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQXVCQTtBQUNBOzs7OztBQUNBOzs7O0FBSUE7QUFDQTtBQUNBOzs7Ozs7O0FBT0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQS9EQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtRUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///112\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(114), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeS5qcz85YWYxIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9qc29uL3N0cmluZ2lmeVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeS5qc1xuLy8gbW9kdWxlIGlkID0gMTEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAzIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///113\n')},function(module,exports,__webpack_require__){eval("var core = __webpack_require__(0);\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9qc29uL3N0cmluZ2lmeS5qcz9hYTQyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpO1xudmFyICRKU09OID0gY29yZS5KU09OIHx8IChjb3JlLkpTT04gPSB7IHN0cmluZ2lmeTogSlNPTi5zdHJpbmdpZnkgfSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHJldHVybiAkSlNPTi5zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3VtZW50cyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5LmpzXG4vLyBtb2R1bGUgaWQgPSAxMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///114\n")},,,,function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(41);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(86);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _ActionsService = __webpack_require__(119);\n\nvar _ActionsService2 = _interopRequireDefault(_ActionsService);\n\nvar _PDP = __webpack_require__(120);\n\nvar _PDP2 = _interopRequireDefault(_PDP);\n\nvar _Policy = __webpack_require__(121);\n\nvar _Policy2 = _interopRequireDefault(_Policy);\n\nvar _utils = __webpack_require__(110);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('PEP'); // Log System\n\nvar PEP = function () {\n\n /**\r\n * Creates a Policy Enforcement Point (PEP) instance\r\n * @param {Object} context\r\n */\n function PEP(context) {\n (0, _classCallCheck3.default)(this, PEP);\n\n var _this = this;\n\n _this.pdp = new _PDP2.default(context);\n _this.actionsService = new _ActionsService2.default(context);\n _this.context = context;\n context.pep = _this;\n\n //TODO should be added a trigger to verify when the loadConfigurations is successfully completed\n context.loadConfigurations();\n }\n\n /**\r\n * return the messageBus in this Registry\r\n * @param {MessageBus} messageBus\r\n */\n\n\n (0, _createClass3.default)(PEP, [{\n key: 'addGUIListeners',\n value: function addGUIListeners() {\n var _this = this;\n\n _this.context.messageBus.addListener(_this.context.pepURL, function (msg) {\n var funcName = msg.body.method;\n\n var returnedValue = void 0;\n if (funcName === 'addToGroup') {\n var groupName = msg.body.params.groupName;\n var userEmail = msg.body.params.userEmail;\n returnedValue = _this.context.addToGroup(groupName, userEmail);\n } else if (funcName === 'createGroup') {\n var _groupName = msg.body.params.groupName;\n returnedValue = _this.context.createGroup(_groupName);\n } else if (funcName === 'addPolicy') {\n var source = msg.body.params.source;\n var key = msg.body.params.key;\n var policy = msg.body.params.policy;\n var combiningAlgorithm = msg.body.params.combiningAlgorithm;\n returnedValue = _this.addPolicy(source, key, policy, combiningAlgorithm);\n } else if (funcName === 'deleteGroup') {\n var _groupName2 = msg.body.params.groupName;\n returnedValue = _this.context.deleteGroup(_groupName2);\n } else if (funcName === 'removePolicy') {\n var _source = msg.body.params.source;\n var _key = msg.body.params.key;\n returnedValue = _this.removePolicy(_source, _key);\n } else if (funcName === 'savePolicies') {\n var _source2 = msg.body.params.source;\n returnedValue = _this.context.savePolicies(_source2);\n } else if (funcName === 'userPolicies') {\n returnedValue = _this.context.userPolicies;\n } else if (funcName === 'activeUserPolicy') {\n var userPolicy = msg.body.params.userPolicy;\n if (userPolicy) {\n _this.context.activeUserPolicy = userPolicy;\n }\n returnedValue = _this.context.activeUserPolicy;\n } else if (funcName === 'userPolicy') {\n var _key2 = msg.body.params.key;\n returnedValue = _this.context.userPolicies[_key2];\n } else if (funcName === 'saveActivePolicy') {\n returnedValue = _this.context.saveActivePolicy();\n } else if (funcName === 'getMyEmails') {\n returnedValue = _this.context.getMyEmails();\n } else if (funcName === 'getMyHyperties') {\n returnedValue = _this.context.getMyHyperties();\n } else if (funcName === 'groups') {\n returnedValue = _this.context.groups;\n } else if (funcName === 'getGroupsNames') {\n returnedValue = _this.context.getGroupsNames();\n }if (funcName === 'removeFromGroup') {\n var _groupName3 = msg.body.params.groupName;\n var _userEmail = msg.body.params.userEmail;\n returnedValue = _this.context.removeFromGroup(_groupName3, _userEmail);\n }\n\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n _this.context.messageBus.postMessage(replyMsg);\n });\n }\n\n /**\r\n * Adds a policy to the Policy Enforcement Point (PEP). The policy can be created by the service\r\n * provider or by the user.\r\n * @param {String} source\r\n * @param {String} key\r\n * @param {Object} policy\r\n */\n\n }, {\n key: 'addPolicy',\n value: function addPolicy(source, key, policy, combiningAlgorithm) {\n if (!source) throw new Error('source is not defined');\n if (!key) throw new Error('key is not defined');\n\n if (policy === undefined) {\n policy = new _Policy2.default(key, [], [], combiningAlgorithm);\n } else {\n if (!(policy instanceof _Policy2.default)) {\n policy = new _Policy2.default(policy.key, policy.rules, policy.actions, policy.combiningAlgorithm);\n }\n }\n\n switch (source) {\n case 'SERVICE_PROVIDER':\n this.context.savePolicies(source, policy, key);\n break;\n case 'USER':\n this.context.userPolicies[key] = policy;\n this.context.savePolicies(source);\n break;\n default:\n throw Error('Unknown policy source: ' + source);\n }\n }\n }, {\n key: 'authorise',\n value: function authorise(message, isIncoming) {\n var _this2 = this;\n\n // log.log('[Policy.PEP Authorise] ', message);\n // log.log(message);\n if (!message) throw new Error('message is not defined');\n if (!message.from) throw new Error('message.from is not defined');\n if (!message.to) throw new Error('message.to is not defined');\n if (!message.type) throw new Error('message.type is not defined');\n message.body = message.body || {};\n\n return new _promise2.default(function (resolve, reject) {\n\n message.body = message.body || {};\n var _this = _this2;\n\n var result = _this.pdp.evaluatePolicies(message, isIncoming);\n if (result === 'Not Applicable') {\n result = _this.context.defaultBehaviour;\n message.body.auth = false;\n }\n _this.actionsService.enforcePolicies(message, isIncoming).then(function (messages) {\n for (var i in messages) {\n message = messages[i];\n if (result) {\n message.body.auth = message.body.auth === undefined ? true : message.body.auth;\n resolve(message);\n } else {\n var errorMessage = { body: { code: 403, description: 'Blocked by policy' }, from: message.to, to: message.from, type: 'response' };\n reject(errorMessage);\n }\n }\n }, function (error) {\n reject(error);\n });\n });\n }\n }, {\n key: 'authoriseSync',\n value: function authoriseSync(message) {\n var result = void 0;\n message.body = message.body || {};\n result = this.pdp.evaluatePolicies(message, true);\n if (result === 'Not Applicable') {\n result = this.context.defaultBehaviour;\n }\n return result;\n }\n }, {\n key: 'removePolicy',\n value: function removePolicy(source, key) {\n if (!source) throw new Error('source is not defined');\n if (source !== '*' && !key) throw new Error('key is not defined');\n\n switch (source) {\n case '*':\n this.context.serviceProviderPolicy = {};\n this.context.userPolicies = {};\n this.context.activeUserPolicy = undefined;\n this.context.savePolicies('USER');\n this.context.savePolicies('SERVICE_PROVIDER');\n this.context.saveActivePolicy();\n break;\n case 'SERVICE_PROVIDER':\n delete this.context.serviceProviderPolicy[key];\n this.context.savePolicies();\n break;\n case 'USER':\n delete this.context.userPolicies[key];\n if (key === this.context.activeUserPolicy) {\n this.context.activeUserPolicy = undefined;\n this.context.saveActivePolicy();\n }\n this.context.savePolicies('USER');\n break;\n default:\n throw Error('Unknown policy source: ' + source);\n }\n }\n }, {\n key: 'messageBus',\n get: function get() {\n var _this = this;\n return _this.context.messageBus;\n }\n\n /**\r\n * Set the messageBus in this Registry\r\n * @param {MessageBus} messageBus\r\n */\n ,\n set: function set(messageBus) {\n var _this = this;\n _this.context.messageBus = messageBus;\n _this.addGUIListeners();\n }\n }]);\n return PEP;\n}();\n\nexports.default = PEP;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUEVQLmpzPzQ3ZjIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9nIFN5c3RlbVxyXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xyXG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignUEVQJyk7XHJcblxyXG5pbXBvcnQgQWN0aW9uc1NlcnZpY2UgZnJvbSAnLi9BY3Rpb25zU2VydmljZSc7XHJcbmltcG9ydCBQRFAgZnJvbSAnLi9QRFAnO1xyXG5pbXBvcnQgUG9saWN5IGZyb20gJy4vUG9saWN5JztcclxuaW1wb3J0IHtpc0h5cGVydHlVUkx9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcclxuXHJcbmNsYXNzIFBFUCB7XHJcblxyXG4gIC8qKlxyXG4gICogQ3JlYXRlcyBhIFBvbGljeSBFbmZvcmNlbWVudCBQb2ludCAoUEVQKSBpbnN0YW5jZVxyXG4gICogQHBhcmFtICAgIHtPYmplY3R9ICAgIGNvbnRleHRcclxuICAqL1xyXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgX3RoaXMucGRwID0gbmV3IFBEUChjb250ZXh0KTtcclxuICAgIF90aGlzLmFjdGlvbnNTZXJ2aWNlID0gbmV3IEFjdGlvbnNTZXJ2aWNlKGNvbnRleHQpO1xyXG4gICAgX3RoaXMuY29udGV4dCA9IGNvbnRleHQ7XHJcbiAgICBjb250ZXh0LnBlcCA9IF90aGlzO1xyXG5cclxuICAgIC8vVE9ETyBzaG91bGQgYmUgYWRkZWQgYSB0cmlnZ2VyIHRvIHZlcmlmeSB3aGVuIHRoZSBsb2FkQ29uZmlndXJhdGlvbnMgaXMgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZFxyXG4gICAgY29udGV4dC5sb2FkQ29uZmlndXJhdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogcmV0dXJuIHRoZSBtZXNzYWdlQnVzIGluIHRoaXMgUmVnaXN0cnlcclxuICAqIEBwYXJhbSB7TWVzc2FnZUJ1c30gICAgICAgICAgIG1lc3NhZ2VCdXNcclxuICAqL1xyXG4gIGdldCBtZXNzYWdlQnVzKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBfdGhpcy5jb250ZXh0Lm1lc3NhZ2VCdXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFNldCB0aGUgbWVzc2FnZUJ1cyBpbiB0aGlzIFJlZ2lzdHJ5XHJcbiAgKiBAcGFyYW0ge01lc3NhZ2VCdXN9ICAgICAgICAgICBtZXNzYWdlQnVzXHJcbiAgKi9cclxuICBzZXQgbWVzc2FnZUJ1cyhtZXNzYWdlQnVzKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgX3RoaXMuY29udGV4dC5tZXNzYWdlQnVzID0gbWVzc2FnZUJ1cztcclxuICAgIF90aGlzLmFkZEdVSUxpc3RlbmVycygpO1xyXG4gIH1cclxuXHJcbiAgYWRkR1VJTGlzdGVuZXJzKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBfdGhpcy5jb250ZXh0Lm1lc3NhZ2VCdXMuYWRkTGlzdGVuZXIoX3RoaXMuY29udGV4dC5wZXBVUkwsIChtc2cpID0+IHtcclxuICAgICAgbGV0IGZ1bmNOYW1lID0gbXNnLmJvZHkubWV0aG9kO1xyXG5cclxuICAgICAgbGV0IHJldHVybmVkVmFsdWU7XHJcbiAgICAgIGlmIChmdW5jTmFtZSA9PT0gJ2FkZFRvR3JvdXAnKSB7XHJcbiAgICAgICAgbGV0IGdyb3VwTmFtZSA9IG1zZy5ib2R5LnBhcmFtcy5ncm91cE5hbWU7XHJcbiAgICAgICAgbGV0IHVzZXJFbWFpbCA9IG1zZy5ib2R5LnBhcmFtcy51c2VyRW1haWw7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuYWRkVG9Hcm91cChncm91cE5hbWUsIHVzZXJFbWFpbCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdjcmVhdGVHcm91cCcpIHtcclxuICAgICAgICBsZXQgZ3JvdXBOYW1lID0gbXNnLmJvZHkucGFyYW1zLmdyb3VwTmFtZTtcclxuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC5jcmVhdGVHcm91cChncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnYWRkUG9saWN5Jykge1xyXG4gICAgICAgIGxldCBzb3VyY2UgPSBtc2cuYm9keS5wYXJhbXMuc291cmNlO1xyXG4gICAgICAgIGxldCBrZXkgPSBtc2cuYm9keS5wYXJhbXMua2V5O1xyXG4gICAgICAgIGxldCBwb2xpY3kgPSBtc2cuYm9keS5wYXJhbXMucG9saWN5O1xyXG4gICAgICAgIGxldCBjb21iaW5pbmdBbGdvcml0aG0gPSBtc2cuYm9keS5wYXJhbXMuY29tYmluaW5nQWxnb3JpdGhtO1xyXG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5hZGRQb2xpY3koc291cmNlLCBrZXksIHBvbGljeSwgY29tYmluaW5nQWxnb3JpdGhtKTtcclxuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ2RlbGV0ZUdyb3VwJykge1xyXG4gICAgICAgIGxldCBncm91cE5hbWUgPSBtc2cuYm9keS5wYXJhbXMuZ3JvdXBOYW1lO1xyXG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5jb250ZXh0LmRlbGV0ZUdyb3VwKGdyb3VwTmFtZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdyZW1vdmVQb2xpY3knKSB7XHJcbiAgICAgICAgbGV0IHNvdXJjZSA9IG1zZy5ib2R5LnBhcmFtcy5zb3VyY2U7XHJcbiAgICAgICAgbGV0IGtleSA9IG1zZy5ib2R5LnBhcmFtcy5rZXk7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLnJlbW92ZVBvbGljeShzb3VyY2UsIGtleSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdzYXZlUG9saWNpZXMnKSB7XHJcbiAgICAgICAgbGV0IHNvdXJjZSA9IG1zZy5ib2R5LnBhcmFtcy5zb3VyY2U7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuc2F2ZVBvbGljaWVzKHNvdXJjZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICd1c2VyUG9saWNpZXMnKSB7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQudXNlclBvbGljaWVzO1xyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnYWN0aXZlVXNlclBvbGljeScpIHtcclxuICAgICAgICBsZXQgdXNlclBvbGljeSA9IG1zZy5ib2R5LnBhcmFtcy51c2VyUG9saWN5O1xyXG4gICAgICAgIGlmICh1c2VyUG9saWN5KSB7IF90aGlzLmNvbnRleHQuYWN0aXZlVXNlclBvbGljeSA9IHVzZXJQb2xpY3k7IH1cclxuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC5hY3RpdmVVc2VyUG9saWN5O1xyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAndXNlclBvbGljeScpIHtcclxuICAgICAgICBsZXQga2V5ID0gbXNnLmJvZHkucGFyYW1zLmtleTtcclxuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC51c2VyUG9saWNpZXNba2V5XTtcclxuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ3NhdmVBY3RpdmVQb2xpY3knKSB7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuc2F2ZUFjdGl2ZVBvbGljeSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnZ2V0TXlFbWFpbHMnKSB7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuZ2V0TXlFbWFpbHMoKTtcclxuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ2dldE15SHlwZXJ0aWVzJykge1xyXG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5jb250ZXh0LmdldE15SHlwZXJ0aWVzKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdncm91cHMnKSB7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuZ3JvdXBzO1xyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnZ2V0R3JvdXBzTmFtZXMnKSB7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuZ2V0R3JvdXBzTmFtZXMoKTtcclxuICAgICAgfSBpZiAoZnVuY05hbWUgPT09ICdyZW1vdmVGcm9tR3JvdXAnKSB7XHJcbiAgICAgICAgbGV0IGdyb3VwTmFtZSA9IG1zZy5ib2R5LnBhcmFtcy5ncm91cE5hbWU7XHJcbiAgICAgICAgbGV0IHVzZXJFbWFpbCA9IG1zZy5ib2R5LnBhcmFtcy51c2VyRW1haWw7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQucmVtb3ZlRnJvbUdyb3VwKGdyb3VwTmFtZSwgdXNlckVtYWlsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IHZhbHVlID0ge3R5cGU6ICdleGVjdXRlJywgdmFsdWU6IHJldHVybmVkVmFsdWUsIGNvZGU6IDIwMH07XHJcbiAgICAgIGxldCByZXBseU1zZyA9IHtpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCB0bzogbXNnLmZyb20sIGZyb206IG1zZy50bywgYm9keTogdmFsdWV9O1xyXG4gICAgICBfdGhpcy5jb250ZXh0Lm1lc3NhZ2VCdXMucG9zdE1lc3NhZ2UocmVwbHlNc2cpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEFkZHMgYSBwb2xpY3kgdG8gdGhlIFBvbGljeSBFbmZvcmNlbWVudCBQb2ludCAoUEVQKS4gVGhlIHBvbGljeSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgc2VydmljZVxyXG4gICogcHJvdmlkZXIgb3IgYnkgdGhlIHVzZXIuXHJcbiAgKiBAcGFyYW0gICAge1N0cmluZ30gICAgc291cmNlXHJcbiAgKiBAcGFyYW0gICAge1N0cmluZ30gICAga2V5XHJcbiAgKiBAcGFyYW0gICAge09iamVjdH0gICAgcG9saWN5XHJcbiAgKi9cclxuICBhZGRQb2xpY3koc291cmNlLCBrZXksIHBvbGljeSwgY29tYmluaW5nQWxnb3JpdGhtKSB7XHJcbiAgICBpZiAoIXNvdXJjZSkgdGhyb3cgbmV3IEVycm9yKCdzb3VyY2UgaXMgbm90IGRlZmluZWQnKTtcclxuICAgIGlmICgha2V5KSB0aHJvdyBuZXcgRXJyb3IoJ2tleSBpcyBub3QgZGVmaW5lZCcpO1xyXG5cclxuICAgIGlmIChwb2xpY3kgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBwb2xpY3kgPSBuZXcgUG9saWN5KGtleSwgW10sIFtdLCBjb21iaW5pbmdBbGdvcml0aG0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCEocG9saWN5IGluc3RhbmNlb2YgUG9saWN5KSkge1xyXG4gICAgICAgIHBvbGljeSA9IG5ldyBQb2xpY3kocG9saWN5LmtleSwgcG9saWN5LnJ1bGVzLCBwb2xpY3kuYWN0aW9ucywgcG9saWN5LmNvbWJpbmluZ0FsZ29yaXRobSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHNvdXJjZSkge1xyXG4gICAgICBjYXNlICdTRVJWSUNFX1BST1ZJREVSJzpcclxuICAgICAgICB0aGlzLmNvbnRleHQuc2F2ZVBvbGljaWVzKHNvdXJjZSwgcG9saWN5LCBrZXkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdVU0VSJzpcclxuICAgICAgICB0aGlzLmNvbnRleHQudXNlclBvbGljaWVzW2tleV0gPSBwb2xpY3k7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmVQb2xpY2llcyhzb3VyY2UpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRocm93IEVycm9yKCdVbmtub3duIHBvbGljeSBzb3VyY2U6ICcgKyBzb3VyY2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXV0aG9yaXNlKG1lc3NhZ2UsIGlzSW5jb21pbmcpIHtcclxuICAgIC8vIGxvZy5sb2coJ1tQb2xpY3kuUEVQIEF1dGhvcmlzZV0gJywgbWVzc2FnZSk7XHJcbiAgICAvLyBsb2cubG9nKG1lc3NhZ2UpO1xyXG4gICAgaWYgKCFtZXNzYWdlKSB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UgaXMgbm90IGRlZmluZWQnKTtcclxuICAgIGlmICghbWVzc2FnZS5mcm9tKSB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UuZnJvbSBpcyBub3QgZGVmaW5lZCcpO1xyXG4gICAgaWYgKCFtZXNzYWdlLnRvKSB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UudG8gaXMgbm90IGRlZmluZWQnKTtcclxuICAgIGlmICghbWVzc2FnZS50eXBlKSB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UudHlwZSBpcyBub3QgZGVmaW5lZCcpO1xyXG4gICAgbWVzc2FnZS5ib2R5ID0gbWVzc2FnZS5ib2R5IHx8IHt9O1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICBtZXNzYWdlLmJvZHkgPSBtZXNzYWdlLmJvZHkgfHwge307XHJcbiAgICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgICBsZXQgcmVzdWx0ID0gX3RoaXMucGRwLmV2YWx1YXRlUG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZyk7XHJcbiAgICAgIGlmIChyZXN1bHQgPT09ICdOb3QgQXBwbGljYWJsZScpIHtcclxuICAgICAgICByZXN1bHQgPSBfdGhpcy5jb250ZXh0LmRlZmF1bHRCZWhhdmlvdXI7XHJcbiAgICAgICAgbWVzc2FnZS5ib2R5LmF1dGggPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBfdGhpcy5hY3Rpb25zU2VydmljZS5lbmZvcmNlUG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZykudGhlbihtZXNzYWdlcyA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSBpbiBtZXNzYWdlcykge1xyXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2VzW2ldO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICBtZXNzYWdlLmJvZHkuYXV0aCA9IChtZXNzYWdlLmJvZHkuYXV0aCA9PT0gdW5kZWZpbmVkKSA/IHRydWUgOiBtZXNzYWdlLmJvZHkuYXV0aDtcclxuICAgICAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSB7IGJvZHk6IHsgY29kZTogNDAzLCBkZXNjcmlwdGlvbjogJ0Jsb2NrZWQgYnkgcG9saWN5JyB9LCBmcm9tOiBtZXNzYWdlLnRvLCB0bzogbWVzc2FnZS5mcm9tLCB0eXBlOiAncmVzcG9uc2UnIH07XHJcbiAgICAgICAgICAgIHJlamVjdChlcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGF1dGhvcmlzZVN5bmMobWVzc2FnZSkge1xyXG4gICAgbGV0IHJlc3VsdDtcclxuICAgIG1lc3NhZ2UuYm9keSA9IG1lc3NhZ2UuYm9keSB8fCB7fTtcclxuICAgIHJlc3VsdCA9IHRoaXMucGRwLmV2YWx1YXRlUG9saWNpZXMobWVzc2FnZSwgdHJ1ZSk7XHJcbiAgICBpZiAocmVzdWx0ID09PSAnTm90IEFwcGxpY2FibGUnKSB7XHJcbiAgICAgIHJlc3VsdCA9IHRoaXMuY29udGV4dC5kZWZhdWx0QmVoYXZpb3VyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuXHJcbiAgfVxyXG5cclxuICByZW1vdmVQb2xpY3koc291cmNlLCBrZXkpIHtcclxuICAgIGlmICghc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoJ3NvdXJjZSBpcyBub3QgZGVmaW5lZCcpO1xyXG4gICAgaWYgKHNvdXJjZSAhPT0gJyonICYmICFrZXkpIHRocm93IG5ldyBFcnJvcigna2V5IGlzIG5vdCBkZWZpbmVkJyk7XHJcblxyXG4gICAgc3dpdGNoIChzb3VyY2UpIHtcclxuICAgICAgY2FzZSAnKic6XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LnNlcnZpY2VQcm92aWRlclBvbGljeSA9IHt9O1xyXG4gICAgICAgIHRoaXMuY29udGV4dC51c2VyUG9saWNpZXMgPSB7fTtcclxuICAgICAgICB0aGlzLmNvbnRleHQuYWN0aXZlVXNlclBvbGljeSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLmNvbnRleHQuc2F2ZVBvbGljaWVzKCdVU0VSJyk7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmVQb2xpY2llcygnU0VSVklDRV9QUk9WSURFUicpO1xyXG4gICAgICAgIHRoaXMuY29udGV4dC5zYXZlQWN0aXZlUG9saWN5KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1NFUlZJQ0VfUFJPVklERVInOlxyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmNvbnRleHQuc2VydmljZVByb3ZpZGVyUG9saWN5W2tleV07XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmVQb2xpY2llcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdVU0VSJzpcclxuICAgICAgICBkZWxldGUgdGhpcy5jb250ZXh0LnVzZXJQb2xpY2llc1trZXldO1xyXG4gICAgICAgIGlmIChrZXkgPT09IHRoaXMuY29udGV4dC5hY3RpdmVVc2VyUG9saWN5KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnRleHQuYWN0aXZlVXNlclBvbGljeSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgIHRoaXMuY29udGV4dC5zYXZlQWN0aXZlUG9saWN5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29udGV4dC5zYXZlUG9saWNpZXMoJ1VTRVInKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBFcnJvcignVW5rbm93biBwb2xpY3kgc291cmNlOiAnICsgc291cmNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBQRVA7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L1BFUC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7OztBQU5BO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVdBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF0QkE7QUF3QkE7OztBQXZMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUE4S0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///118\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(41);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ActionsService = function () {\n function ActionsService(context) {\n (0, _classCallCheck3.default)(this, ActionsService);\n\n this.context = context;\n }\n\n (0, _createClass3.default)(ActionsService, [{\n key: 'enforcePolicies',\n value: function enforcePolicies(message, isIncomingMessage) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n\n var policies = _this.context.getPolicies(message, isIncomingMessage);\n\n if (policies !== undefined) {\n if (policies.serviceProviderPolicy !== undefined) {\n policies.serviceProviderPolicy.enforceActions(_this.context, message).then(function (messages) {\n resolve(messages);\n }, function (error) {\n reject(error);\n });\n } else {\n if (policies.userPolicy !== undefined) {\n policies.userPolicy.enforceActions(_this.context, message).then(function (messages) {\n resolve(messages);\n }, function (error) {\n reject(error);\n });\n } else {\n resolve([message]);\n }\n }\n } else {\n resolve([message]);\n }\n });\n }\n }, {\n key: 'forwardToID',\n value: function forwardToID(message, email) {\n var _this = this;\n if (!_this.context.runtimeRegistry) throw new Error('forward message to given ID is unsupported in this environment');\n\n return new _promise2.default(function (resolve, reject) {\n if (_this.context.runtimeRegistry.hypertiesList[0].hypertyURL === message.to) {\n var splitTo = message.to.split('://');\n if (splitTo[0] !== 'runtime') {\n _this.context.runtimeRegistry.discoverHypertyPerUser(email).then(function (result) {\n message.to = result.hypertyURL;\n message.body.via = undefined;\n resolve(message);\n _this.context.runtimeRegistry._messageBus.postMessage(message);\n }, function (error) {\n reject(error);\n });\n } else {\n resolve(message);\n }\n } else {\n resolve(message);\n }\n });\n }\n }, {\n key: 'forwardToHyperty',\n value: function forwardToHyperty(message, hypertyURL) {\n var _this = this;\n if (!_this.context.runtimeRegistry) throw new Error('forward message to given ID is unsupported in this environment');\n\n return new _promise2.default(function (resolve) {\n if (_this.context.runtimeRegistry.hypertiesList[0].hypertyURL === message.to) {\n var splitTo = message.to.split('://');\n if (splitTo[0] !== 'runtime') {\n message.to = hypertyURL;\n message.body.via = undefined;\n resolve(message);\n _this.context.runtimeRegistry._messageBus.postMessage(message);\n } else {\n resolve(message);\n }\n } else {\n resolve(message);\n }\n });\n }\n }, {\n key: 'sendAutomaticMessage',\n value: function sendAutomaticMessage(message, text) {\n var _this = this;\n return new _promise2.default(function (resolve) {\n var automaticMessage = {\n from: message.to,\n to: message.from,\n body: {\n value: text\n },\n type: message.type\n };\n resolve(message);\n _this.context.runtimeRegistry._messageBus.postMessage(automaticMessage);\n });\n }\n }]);\n return ActionsService;\n}();\n\nexports.default = ActionsService;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvQWN0aW9uc1NlcnZpY2UuanM/MjliZCJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBBY3Rpb25zU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQpIHtcclxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBlbmZvcmNlUG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZ01lc3NhZ2UpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgbGV0IHBvbGljaWVzID0gX3RoaXMuY29udGV4dC5nZXRQb2xpY2llcyhtZXNzYWdlLCBpc0luY29taW5nTWVzc2FnZSk7XHJcblxyXG4gICAgICBpZiAocG9saWNpZXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmIChwb2xpY2llcy5zZXJ2aWNlUHJvdmlkZXJQb2xpY3kgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgcG9saWNpZXMuc2VydmljZVByb3ZpZGVyUG9saWN5LmVuZm9yY2VBY3Rpb25zKF90aGlzLmNvbnRleHQsIG1lc3NhZ2UpLnRoZW4obWVzc2FnZXMgPT4ge1xyXG4gICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2VzKTtcclxuICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChwb2xpY2llcy51c2VyUG9saWN5ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcG9saWNpZXMudXNlclBvbGljeS5lbmZvcmNlQWN0aW9ucyhfdGhpcy5jb250ZXh0LCBtZXNzYWdlKS50aGVuKG1lc3NhZ2VzID0+IHtcclxuICAgICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2VzKTtcclxuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKFttZXNzYWdlXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUoW21lc3NhZ2VdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmb3J3YXJkVG9JRChtZXNzYWdlLCBlbWFpbCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGlmICghX3RoaXMuY29udGV4dC5ydW50aW1lUmVnaXN0cnkpIHRocm93IG5ldyBFcnJvcignZm9yd2FyZCBtZXNzYWdlIHRvIGdpdmVuIElEIGlzIHVuc3VwcG9ydGVkIGluIHRoaXMgZW52aXJvbm1lbnQnKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAoX3RoaXMuY29udGV4dC5ydW50aW1lUmVnaXN0cnkuaHlwZXJ0aWVzTGlzdFswXS5oeXBlcnR5VVJMID09PSBtZXNzYWdlLnRvKSB7XHJcbiAgICAgICAgbGV0IHNwbGl0VG8gPSAobWVzc2FnZS50bykuc3BsaXQoJzovLycpO1xyXG4gICAgICAgIGlmIChzcGxpdFRvWzBdICE9PSAncnVudGltZScpIHtcclxuICAgICAgICAgIF90aGlzLmNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmRpc2NvdmVySHlwZXJ0eVBlclVzZXIoZW1haWwpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgbWVzc2FnZS50byA9IHJlc3VsdC5oeXBlcnR5VVJMO1xyXG4gICAgICAgICAgICBtZXNzYWdlLmJvZHkudmlhID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlKTtcclxuICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUobWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9yd2FyZFRvSHlwZXJ0eShtZXNzYWdlLCBoeXBlcnR5VVJMKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKCFfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeSkgdGhyb3cgbmV3IEVycm9yKCdmb3J3YXJkIG1lc3NhZ2UgdG8gZ2l2ZW4gSUQgaXMgdW5zdXBwb3J0ZWQgaW4gdGhpcyBlbnZpcm9ubWVudCcpO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBpZiAoX3RoaXMuY29udGV4dC5ydW50aW1lUmVnaXN0cnkuaHlwZXJ0aWVzTGlzdFswXS5oeXBlcnR5VVJMID09PSBtZXNzYWdlLnRvKSB7XHJcbiAgICAgICAgbGV0IHNwbGl0VG8gPSAobWVzc2FnZS50bykuc3BsaXQoJzovLycpO1xyXG4gICAgICAgIGlmIChzcGxpdFRvWzBdICE9PSAncnVudGltZScpIHtcclxuICAgICAgICAgIG1lc3NhZ2UudG8gPSBoeXBlcnR5VVJMO1xyXG4gICAgICAgICAgbWVzc2FnZS5ib2R5LnZpYSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7XHJcbiAgICAgICAgICBfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZW5kQXV0b21hdGljTWVzc2FnZShtZXNzYWdlLCB0ZXh0KSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIGxldCBhdXRvbWF0aWNNZXNzYWdlID0ge1xyXG4gICAgICAgIGZyb206IG1lc3NhZ2UudG8sXHJcbiAgICAgICAgdG86IG1lc3NhZ2UuZnJvbSxcclxuICAgICAgICBib2R5OiB7XHJcbiAgICAgICAgICB2YWx1ZTogdGV4dFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHlwZTogbWVzc2FnZS50eXBlXHJcbiAgICAgIH07XHJcbiAgICAgIHJlc29sdmUobWVzc2FnZSk7XHJcbiAgICAgIF90aGlzLmNvbnRleHQucnVudGltZVJlZ2lzdHJ5Ll9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKGF1dG9tYXRpY01lc3NhZ2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQWN0aW9uc1NlcnZpY2U7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L0FjdGlvbnNTZXJ2aWNlLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBTkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///119\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Operators = __webpack_require__(111);\n\nvar _Operators2 = _interopRequireDefault(_Operators);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* The Policy Decision Point (PDP) decides if a message is to be authorised by checking a set of\r\n* policies. The resource to be verified is specified in the first word of the 'condition' field of\r\n* a Policy object. The implementation that verifies if the message is compliant with a policy is\r\n* specified in a hashtable to allow dynamic definition of the implementation, providing\r\n* extensibility to the Policy Engine functionalities.\r\n*/\nvar PDP = function () {\n function PDP(context) {\n (0, _classCallCheck3.default)(this, PDP);\n\n this.context = context;\n this.operators = new _Operators2.default();\n }\n\n (0, _createClass3.default)(PDP, [{\n key: 'evaluatePolicies',\n value: function evaluatePolicies(message, isIncomingMessage) {\n var policies = this.context.getPolicies(message, isIncomingMessage);\n var result = 'Not Applicable';\n if (policies !== undefined) {\n result = this.evaluatePolicy(message, policies.serviceProviderPolicy, isIncomingMessage);\n if (result || result === 'Not Applicable') {\n var userResult = this.evaluatePolicy(message, policies.userPolicy, isIncomingMessage);\n if (userResult !== 'Not Applicable') {\n result = userResult;\n }\n }\n }\n\n return result;\n }\n }, {\n key: 'evaluatePolicy',\n value: function evaluatePolicy(message, policy, isIncoming) {\n var result = 'Not Applicable';\n if (policy) {\n result = policy.evaluateRules(this.context, message, isIncoming);\n }\n\n return result;\n }\n }]);\n return PDP;\n}();\n\nexports.default = PDP;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUERQLmpzP2U5YmEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9wZXJhdG9ycyBmcm9tICcuL09wZXJhdG9ycyc7XHJcblxyXG4vKipcclxuKiBUaGUgUG9saWN5IERlY2lzaW9uIFBvaW50IChQRFApIGRlY2lkZXMgaWYgYSBtZXNzYWdlIGlzIHRvIGJlIGF1dGhvcmlzZWQgYnkgY2hlY2tpbmcgYSBzZXQgb2ZcclxuKiBwb2xpY2llcy4gVGhlIHJlc291cmNlIHRvIGJlIHZlcmlmaWVkIGlzIHNwZWNpZmllZCBpbiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgJ2NvbmRpdGlvbicgZmllbGQgb2ZcclxuKiBhIFBvbGljeSBvYmplY3QuIFRoZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHZlcmlmaWVzIGlmIHRoZSBtZXNzYWdlIGlzIGNvbXBsaWFudCB3aXRoIGEgcG9saWN5IGlzXHJcbiogc3BlY2lmaWVkIGluIGEgaGFzaHRhYmxlIHRvIGFsbG93IGR5bmFtaWMgZGVmaW5pdGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24sIHByb3ZpZGluZ1xyXG4qIGV4dGVuc2liaWxpdHkgdG8gdGhlIFBvbGljeSBFbmdpbmUgZnVuY3Rpb25hbGl0aWVzLlxyXG4qL1xyXG5jbGFzcyBQRFAge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb250ZXh0KSB7XHJcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xyXG4gICAgdGhpcy5vcGVyYXRvcnMgPSBuZXcgT3BlcmF0b3JzKCk7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVBvbGljaWVzKG1lc3NhZ2UsIGlzSW5jb21pbmdNZXNzYWdlKSB7XHJcbiAgICBsZXQgcG9saWNpZXMgPSB0aGlzLmNvbnRleHQuZ2V0UG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZ01lc3NhZ2UpO1xyXG4gICAgbGV0IHJlc3VsdCA9ICdOb3QgQXBwbGljYWJsZSc7XHJcbiAgICBpZiAocG9saWNpZXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXN1bHQgPSB0aGlzLmV2YWx1YXRlUG9saWN5KG1lc3NhZ2UsIHBvbGljaWVzLnNlcnZpY2VQcm92aWRlclBvbGljeSwgaXNJbmNvbWluZ01lc3NhZ2UpO1xyXG4gICAgICBpZiAocmVzdWx0IHx8IHJlc3VsdCA9PT0gJ05vdCBBcHBsaWNhYmxlJykge1xyXG4gICAgICAgIGxldCB1c2VyUmVzdWx0ID0gdGhpcy5ldmFsdWF0ZVBvbGljeShtZXNzYWdlLCBwb2xpY2llcy51c2VyUG9saWN5LCBpc0luY29taW5nTWVzc2FnZSk7XHJcbiAgICAgICAgaWYgKHVzZXJSZXN1bHQgIT09ICdOb3QgQXBwbGljYWJsZScpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IHVzZXJSZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlUG9saWN5KG1lc3NhZ2UsIHBvbGljeSwgaXNJbmNvbWluZykge1xyXG4gICAgbGV0IHJlc3VsdCA9ICdOb3QgQXBwbGljYWJsZSc7XHJcbiAgICBpZiAocG9saWN5KSB7XHJcbiAgICAgIHJlc3VsdCA9IHBvbGljeS5ldmFsdWF0ZVJ1bGVzKHRoaXMuY29udGV4dCwgbWVzc2FnZSwgaXNJbmNvbWluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBQRFA7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L1BEUC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7OztBQUNBOzs7Ozs7O0FBT0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///120\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(41);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _AllowOverrides = __webpack_require__(122);\n\nvar _AllowOverrides2 = _interopRequireDefault(_AllowOverrides);\n\nvar _BlockOverrides = __webpack_require__(123);\n\nvar _BlockOverrides2 = _interopRequireDefault(_BlockOverrides);\n\nvar _FirstApplicable = __webpack_require__(124);\n\nvar _FirstApplicable2 = _interopRequireDefault(_FirstApplicable);\n\nvar _Rule = __webpack_require__(125);\n\nvar _Rule2 = _interopRequireDefault(_Rule);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Policy = function () {\n function Policy(key, rules, actions, combiningAlgorithm) {\n (0, _classCallCheck3.default)(this, Policy);\n\n if (!key) throw new Error('key is not defined');\n if (!actions) throw new Error('actions are not defined');\n\n this.actions = actions;\n this.key = key;\n this._setRules(rules);\n this._setCombiningAlgorithm(combiningAlgorithm);\n }\n\n (0, _createClass3.default)(Policy, [{\n key: 'addAction',\n value: function addAction(method, param) {\n this.actions.push({ method: method, param: param });\n }\n }, {\n key: 'createRule',\n value: function createRule(decision, condition, scope, target, priority) {\n if (priority === undefined) {\n priority = this.getLastPriority() + 1;\n }\n var rule = new _Rule2.default(decision, condition, scope, target, priority);\n this.rules.push(rule);\n }\n }, {\n key: 'deleteRule',\n value: function deleteRule(rule) {\n var indexToRemove = this.rules.indexOf(rule);\n this.rules.splice(indexToRemove, 1);\n }\n }, {\n key: 'enforceActions',\n value: function enforceActions(context, message) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n var results = [];\n if (_this.actions.length !== 0) {\n for (var i in _this.actions) {\n var result = context.pep.actionsService[_this.actions[i].method](message, _this.actions[i].param);\n results.push(result);\n }\n _promise2.default.all(results).then(function (messages) {\n resolve(messages);\n }, function (error) {\n reject(error);\n });\n } else {\n resolve([message]);\n }\n });\n }\n }, {\n key: 'evaluateRules',\n value: function evaluateRules(context, message, isIncoming) {\n var results = [];\n for (var i in this.rules) {\n results.push(this.rules[i].evaluate(context, message, isIncoming));\n }\n\n return this.combiningAlgorithm.combine(results);\n }\n }, {\n key: 'getLastPriority',\n value: function getLastPriority() {\n var priorities = [];\n\n if (this.rules.length !== 0) {\n for (var i in this.rules) {\n priorities.push(this.rules[i].priority);\n }\n return Math.max.apply(Math, priorities);\n } else {\n return -1;\n }\n }\n }, {\n key: 'getRuleByPriority',\n value: function getRuleByPriority(priority) {\n for (var i in this.rules) {\n if (String(this.rules[i].priority) === String(priority)) {\n return this.rules[i];\n }\n }\n throw Error('Rule with priority ' + priority + ' does not exist!');\n }\n }, {\n key: '_setCombiningAlgorithm',\n value: function _setCombiningAlgorithm(combiningAlgorithm) {\n if (!combiningAlgorithm) {\n combiningAlgorithm = 'blockOverrides';\n }\n switch (combiningAlgorithm) {\n case 'blockOverrides':\n this.combiningAlgorithm = new _BlockOverrides2.default();\n break;\n case 'allowOverrides':\n this.combiningAlgorithm = new _AllowOverrides2.default();\n break;\n case 'firstApplicable':\n this.combiningAlgorithm = new _FirstApplicable2.default();\n break;\n default:\n throw Error('Unknown algorithm: ' + combiningAlgorithm);\n }\n }\n }, {\n key: '_setRules',\n value: function _setRules(rules) {\n this.rules = [];\n\n for (var i in rules) {\n var rule = rules[i];\n if (rule.priority === undefined) {\n rule.priority = this.getLastPriority() + 1;\n }\n if (!(rule instanceof _Rule2.default)) {\n rule = new _Rule2.default(rule.decision, rule.condition, rule.scope, rule.target, rule.priority);\n }\n this.rules.push(rule);\n }\n }\n }, {\n key: 'sortRules',\n value: function sortRules() {\n return this.rules.sort(function (a, b) {\n var x = a.priority;var y = b.priority;\n return x < y ? -1 : x > y ? 1 : 0;\n });\n }\n }]);\n return Policy;\n}();\n\nexports.default = Policy;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUG9saWN5LmpzPzk4NDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFsbG93T3ZlcnJpZGVzIGZyb20gJy4vY29tYmluaW5nQWxnb3JpdGhtcy9BbGxvd092ZXJyaWRlcyc7XHJcbmltcG9ydCBCbG9ja092ZXJyaWRlcyBmcm9tICcuL2NvbWJpbmluZ0FsZ29yaXRobXMvQmxvY2tPdmVycmlkZXMnO1xyXG5pbXBvcnQgRmlyc3RBcHBsaWNhYmxlIGZyb20gJy4vY29tYmluaW5nQWxnb3JpdGhtcy9GaXJzdEFwcGxpY2FibGUnO1xyXG5pbXBvcnQgUnVsZSBmcm9tICcuL1J1bGUnO1xyXG5cclxuY2xhc3MgUG9saWN5IHtcclxuXHJcbiAgY29uc3RydWN0b3Ioa2V5LCBydWxlcywgYWN0aW9ucywgY29tYmluaW5nQWxnb3JpdGhtKSB7XHJcbiAgICBpZiAoIWtleSkgdGhyb3cgbmV3IEVycm9yKCdrZXkgaXMgbm90IGRlZmluZWQnKTtcclxuICAgIGlmICghYWN0aW9ucykgdGhyb3cgbmV3IEVycm9yKCdhY3Rpb25zIGFyZSBub3QgZGVmaW5lZCcpO1xyXG5cclxuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnM7XHJcbiAgICB0aGlzLmtleSA9IGtleTtcclxuICAgIHRoaXMuX3NldFJ1bGVzKHJ1bGVzKTtcclxuICAgIHRoaXMuX3NldENvbWJpbmluZ0FsZ29yaXRobShjb21iaW5pbmdBbGdvcml0aG0pO1xyXG4gIH1cclxuXHJcbiAgYWRkQWN0aW9uKG1ldGhvZCwgcGFyYW0pIHtcclxuICAgIHRoaXMuYWN0aW9ucy5wdXNoKHsgbWV0aG9kOiBtZXRob2QsIHBhcmFtOiBwYXJhbSB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVJ1bGUoZGVjaXNpb24sIGNvbmRpdGlvbiwgc2NvcGUsIHRhcmdldCwgcHJpb3JpdHkpIHtcclxuICAgIGlmIChwcmlvcml0eSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHByaW9yaXR5ID0gdGhpcy5nZXRMYXN0UHJpb3JpdHkoKSArIDE7XHJcbiAgICB9XHJcbiAgICBsZXQgcnVsZSA9IG5ldyBSdWxlKGRlY2lzaW9uLCBjb25kaXRpb24sIHNjb3BlLCB0YXJnZXQsIHByaW9yaXR5KTtcclxuICAgIHRoaXMucnVsZXMucHVzaChydWxlKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVJ1bGUocnVsZSkge1xyXG4gICAgbGV0IGluZGV4VG9SZW1vdmUgPSB0aGlzLnJ1bGVzLmluZGV4T2YocnVsZSk7XHJcbiAgICB0aGlzLnJ1bGVzLnNwbGljZShpbmRleFRvUmVtb3ZlLCAxKTtcclxuICB9XHJcblxyXG4gIGVuZm9yY2VBY3Rpb25zKGNvbnRleHQsIG1lc3NhZ2UpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRzID0gW107XHJcbiAgICAgIGlmICh0aGlzLmFjdGlvbnMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSBpbiB0aGlzLmFjdGlvbnMpIHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSBjb250ZXh0LnBlcC5hY3Rpb25zU2VydmljZVt0aGlzLmFjdGlvbnNbaV0ubWV0aG9kXShtZXNzYWdlLCB0aGlzLmFjdGlvbnNbaV0ucGFyYW0pO1xyXG4gICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFByb21pc2UuYWxsKHJlc3VsdHMpLnRoZW4oKG1lc3NhZ2VzKSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKG1lc3NhZ2VzKTtcclxuICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUoW21lc3NhZ2VdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVJ1bGVzKGNvbnRleHQsIG1lc3NhZ2UsIGlzSW5jb21pbmcpIHtcclxuICAgIGxldCByZXN1bHRzID0gW107XHJcbiAgICBmb3IgKGxldCBpIGluIHRoaXMucnVsZXMpIHtcclxuICAgICAgcmVzdWx0cy5wdXNoKHRoaXMucnVsZXNbaV0uZXZhbHVhdGUoY29udGV4dCwgbWVzc2FnZSwgaXNJbmNvbWluZykpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmNvbWJpbmluZ0FsZ29yaXRobS5jb21iaW5lKHJlc3VsdHMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFzdFByaW9yaXR5KCkge1xyXG4gICAgbGV0IHByaW9yaXRpZXMgPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5ydWxlcy5sZW5ndGggIT09IDApIHtcclxuICAgICAgZm9yIChsZXQgaSBpbiB0aGlzLnJ1bGVzKSB7XHJcbiAgICAgICAgcHJpb3JpdGllcy5wdXNoKHRoaXMucnVsZXNbaV0ucHJpb3JpdHkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBNYXRoLm1heC5hcHBseShNYXRoLCBwcmlvcml0aWVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAtMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJ1bGVCeVByaW9yaXR5KHByaW9yaXR5KSB7XHJcbiAgICBmb3IgKGxldCBpIGluIHRoaXMucnVsZXMpIHtcclxuICAgICAgaWYgKFN0cmluZyh0aGlzLnJ1bGVzW2ldLnByaW9yaXR5KSA9PT0gU3RyaW5nKHByaW9yaXR5KSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJ1bGVzW2ldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aHJvdyBFcnJvcignUnVsZSB3aXRoIHByaW9yaXR5ICcgKyBwcmlvcml0eSArICcgZG9lcyBub3QgZXhpc3QhJyk7XHJcbiAgfVxyXG5cclxuICBfc2V0Q29tYmluaW5nQWxnb3JpdGhtKGNvbWJpbmluZ0FsZ29yaXRobSkge1xyXG4gICAgaWYgKCFjb21iaW5pbmdBbGdvcml0aG0pIHtcclxuICAgICAgY29tYmluaW5nQWxnb3JpdGhtID0gJ2Jsb2NrT3ZlcnJpZGVzJztcclxuICAgIH1cclxuICAgIHN3aXRjaCAoY29tYmluaW5nQWxnb3JpdGhtKSB7XHJcbiAgICAgIGNhc2UgJ2Jsb2NrT3ZlcnJpZGVzJzpcclxuICAgICAgICB0aGlzLmNvbWJpbmluZ0FsZ29yaXRobSA9IG5ldyBCbG9ja092ZXJyaWRlcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhbGxvd092ZXJyaWRlcyc6XHJcbiAgICAgICAgdGhpcy5jb21iaW5pbmdBbGdvcml0aG0gPSBuZXcgQWxsb3dPdmVycmlkZXMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZmlyc3RBcHBsaWNhYmxlJzpcclxuICAgICAgICB0aGlzLmNvbWJpbmluZ0FsZ29yaXRobSA9IG5ldyBGaXJzdEFwcGxpY2FibGUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBFcnJvcignVW5rbm93biBhbGdvcml0aG06ICcgKyBjb21iaW5pbmdBbGdvcml0aG0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgX3NldFJ1bGVzKHJ1bGVzKSB7XHJcbiAgICB0aGlzLnJ1bGVzID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgaSBpbiBydWxlcykge1xyXG4gICAgICBsZXQgcnVsZSA9IHJ1bGVzW2ldO1xyXG4gICAgICBpZiAocnVsZS5wcmlvcml0eSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcnVsZS5wcmlvcml0eSA9IHRoaXMuZ2V0TGFzdFByaW9yaXR5KCkgKyAxO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghKHJ1bGUgaW5zdGFuY2VvZiBSdWxlKSkge1xyXG4gICAgICAgIHJ1bGUgPSBuZXcgUnVsZShydWxlLmRlY2lzaW9uLCBydWxlLmNvbmRpdGlvbiwgcnVsZS5zY29wZSwgcnVsZS50YXJnZXQsIHJ1bGUucHJpb3JpdHkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucnVsZXMucHVzaChydWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNvcnRSdWxlcygpIHtcclxuICAgIHJldHVybiB0aGlzLnJ1bGVzLnNvcnQoZnVuY3Rpb24oYSwgYikge1xyXG4gICAgICBsZXQgeCA9IGEucHJpb3JpdHk7IGxldCB5ID0gYi5wcmlvcml0eTtcclxuICAgICAgcmV0dXJuICgoeCA8IHkpID8gLTEgOiAoKHggPiB5KSA/IDEgOiAwKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBQb2xpY3k7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L1BvbGljeS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7Ozs7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFYQTtBQWFBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///121\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n\n/**\r\n* @author Ana Caldeira \r\n* @classdesc Class to combine the authorization decisions that result from rules evaluation.\r\n*/\nvar AllowOverrides = function () {\n function AllowOverrides() {\n (0, _classCallCheck3.default)(this, AllowOverrides);\n }\n\n (0, _createClass3.default)(AllowOverrides, [{\n key: 'combine',\n\n\n /**\r\n * Given an array of individual authorization decisions, prioritizes a positive one.\r\n * @param {boolean[]} decisions\r\n * @returns {boolean}\r\n */\n value: function combine(decisions) {\n if (decisions.indexOf(true) !== -1) {\n return true;\n } else {\n if (decisions.indexOf(false) !== -1) {\n return false;\n } else {\n return 'Not Applicable';\n }\n }\n }\n }]);\n return AllowOverrides;\n}();\n\nexports.default = AllowOverrides;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9BbGxvd092ZXJyaWRlcy5qcz80YzQ3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuXHJcbi8qKlxyXG4qIEBhdXRob3IgQW5hIENhbGRlaXJhIDxhbmEuY2FsZGVpcmFAdGVjbmljby51bGlzYm9hLnB0PlxyXG4qIEBjbGFzc2Rlc2MgQ2xhc3MgdG8gY29tYmluZSB0aGUgYXV0aG9yaXphdGlvbiBkZWNpc2lvbnMgdGhhdCByZXN1bHQgZnJvbSBydWxlcyBldmFsdWF0aW9uLlxyXG4qL1xyXG5jbGFzcyBBbGxvd092ZXJyaWRlcyB7XHJcblxyXG4gIC8qKlxyXG4gICogR2l2ZW4gYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBhdXRob3JpemF0aW9uIGRlY2lzaW9ucywgcHJpb3JpdGl6ZXMgYSBwb3NpdGl2ZSBvbmUuXHJcbiAgKiBAcGFyYW0gICAge2Jvb2xlYW5bXX0gICBkZWNpc2lvbnNcclxuICAqIEByZXR1cm5zICB7Ym9vbGVhbn1cclxuICAqL1xyXG4gIGNvbWJpbmUoZGVjaXNpb25zKSB7XHJcbiAgICBpZiAoZGVjaXNpb25zLmluZGV4T2YodHJ1ZSkgIT09IC0xKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGRlY2lzaW9ucy5pbmRleE9mKGZhbHNlKSAhPT0gLTEpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICdOb3QgQXBwbGljYWJsZSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBBbGxvd092ZXJyaWRlcztcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9BbGxvd092ZXJyaWRlcy5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTs7OztBQUlBOzs7Ozs7Ozs7QUFFQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///122\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n\n/**\r\n* @author Ana Caldeira \r\n* @classdesc Class to combine the authorization decisions that result from rules evaluation.\r\n*/\nvar BlockOverrides = function () {\n function BlockOverrides() {\n (0, _classCallCheck3.default)(this, BlockOverrides);\n }\n\n (0, _createClass3.default)(BlockOverrides, [{\n key: 'combine',\n\n\n /**\r\n * Given an array of individual authorisation decisions, prioritises a negative one.\r\n * @param {boolean[]} decisions\r\n * @returns {boolean}\r\n */\n value: function combine(decisions) {\n if (decisions.indexOf(false) !== -1) {\n return false;\n } else {\n if (decisions.indexOf(true) !== -1) {\n return true;\n } else {\n return 'Not Applicable';\n }\n }\n }\n }]);\n return BlockOverrides;\n}();\n\nexports.default = BlockOverrides;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9CbG9ja092ZXJyaWRlcy5qcz82MWM3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuXHJcbi8qKlxyXG4qIEBhdXRob3IgQW5hIENhbGRlaXJhIDxhbmEuY2FsZGVpcmFAdGVjbmljby51bGlzYm9hLnB0PlxyXG4qIEBjbGFzc2Rlc2MgQ2xhc3MgdG8gY29tYmluZSB0aGUgYXV0aG9yaXphdGlvbiBkZWNpc2lvbnMgdGhhdCByZXN1bHQgZnJvbSBydWxlcyBldmFsdWF0aW9uLlxyXG4qL1xyXG5jbGFzcyBCbG9ja092ZXJyaWRlcyB7XHJcblxyXG4gIC8qKlxyXG4gICogR2l2ZW4gYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBhdXRob3Jpc2F0aW9uIGRlY2lzaW9ucywgcHJpb3JpdGlzZXMgYSBuZWdhdGl2ZSBvbmUuXHJcbiAgKiBAcGFyYW0gICAge2Jvb2xlYW5bXX0gICBkZWNpc2lvbnNcclxuICAqIEByZXR1cm5zICB7Ym9vbGVhbn1cclxuICAqL1xyXG4gIGNvbWJpbmUoZGVjaXNpb25zKSB7XHJcbiAgICBpZiAoZGVjaXNpb25zLmluZGV4T2YoZmFsc2UpICE9PSAtMSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoZGVjaXNpb25zLmluZGV4T2YodHJ1ZSkgIT09IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICdOb3QgQXBwbGljYWJsZSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBCbG9ja092ZXJyaWRlcztcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9CbG9ja092ZXJyaWRlcy5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTs7OztBQUlBOzs7Ozs7Ozs7QUFFQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///123\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n\n/**\r\n* @author Ana Caldeira \r\n* @classdesc Class to combine the authorization decisions that result from rules evaluation.\r\n*/\nvar FirstApplicable = function () {\n function FirstApplicable() {\n (0, _classCallCheck3.default)(this, FirstApplicable);\n }\n\n (0, _createClass3.default)(FirstApplicable, [{\n key: 'combine',\n\n\n /**\r\n * Given an array of individual authorisation decisions, returns the first one different from 'Not Applicable', either positive or negative.\r\n * @param {boolean[]} decisions\r\n * @returns {boolean}\r\n */\n value: function combine(decisions) {\n for (var i in decisions) {\n if (decisions[i] !== 'Not Applicable') {\n return decisions[i];\n }\n }\n return 'Not Applicable';\n }\n }]);\n return FirstApplicable;\n}();\n\nexports.default = FirstApplicable;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9GaXJzdEFwcGxpY2FibGUuanM/MzNkZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxyXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxyXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXHJcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xyXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxyXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXHJcbipcclxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuKlxyXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbipcclxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKiovXHJcblxyXG4vKipcclxuKiBAYXV0aG9yIEFuYSBDYWxkZWlyYSA8YW5hLmNhbGRlaXJhQHRlY25pY28udWxpc2JvYS5wdD5cclxuKiBAY2xhc3NkZXNjIENsYXNzIHRvIGNvbWJpbmUgdGhlIGF1dGhvcml6YXRpb24gZGVjaXNpb25zIHRoYXQgcmVzdWx0IGZyb20gcnVsZXMgZXZhbHVhdGlvbi5cclxuKi9cclxuY2xhc3MgRmlyc3RBcHBsaWNhYmxlIHtcclxuXHJcbiAgLyoqXHJcbiAgKiBHaXZlbiBhbiBhcnJheSBvZiBpbmRpdmlkdWFsIGF1dGhvcmlzYXRpb24gZGVjaXNpb25zLCByZXR1cm5zIHRoZSBmaXJzdCBvbmUgZGlmZmVyZW50IGZyb20gJ05vdCBBcHBsaWNhYmxlJywgZWl0aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlLlxyXG4gICogQHBhcmFtICAgIHtib29sZWFuW119ICAgICBkZWNpc2lvbnNcclxuICAqIEByZXR1cm5zICB7Ym9vbGVhbn1cclxuICAqL1xyXG4gIGNvbWJpbmUoZGVjaXNpb25zKSB7XHJcbiAgICBmb3IgKGxldCBpIGluIGRlY2lzaW9ucykge1xyXG4gICAgICBpZiAoZGVjaXNpb25zW2ldICE9PSAnTm90IEFwcGxpY2FibGUnKSB7XHJcbiAgICAgICAgcmV0dXJuIGRlY2lzaW9uc1tpXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuICdOb3QgQXBwbGljYWJsZSc7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRmlyc3RBcHBsaWNhYmxlO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3BvbGljeS9jb21iaW5pbmdBbGdvcml0aG1zL0ZpcnN0QXBwbGljYWJsZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTs7OztBQUlBOzs7Ozs7Ozs7QUFFQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///124\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _AdvancedCondition = __webpack_require__(126);\n\nvar _AdvancedCondition2 = _interopRequireDefault(_AdvancedCondition);\n\nvar _Condition = __webpack_require__(112);\n\nvar _Condition2 = _interopRequireDefault(_Condition);\n\nvar _utils = __webpack_require__(110);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Rule = function () {\n function Rule(decision, condition, scope, target, priority) {\n (0, _classCallCheck3.default)(this, Rule);\n\n this.decision = decision;\n this.setCondition(condition);\n this.priority = priority;\n this.scope = scope;\n this.target = target;\n }\n\n (0, _createClass3.default)(Rule, [{\n key: 'setCondition',\n value: function setCondition(condition) {\n if (!(condition instanceof _Condition2.default || condition instanceof _AdvancedCondition2.default || condition instanceof _AdvancedCondition2.default)) {\n var attribute = condition.attribute;\n switch (attribute) {\n case 'subscription':\n this.condition = new _AdvancedCondition2.default(condition.attribute, condition.operator, condition.params);\n break;\n case undefined:\n this.condition = new _AdvancedCondition2.default(condition);\n break;\n default:\n this.condition = new _Condition2.default(condition.attribute, condition.operator, condition.params);\n }\n } else {\n this.condition = condition;\n }\n }\n }, {\n key: 'evaluate',\n value: function evaluate(context, message, isIncoming) {\n var field = isIncoming ? message.to : message.from;\n var hypertyName = void 0;\n switch (this.scope) {\n case 'global':\n break;\n\n case 'hyperty':\n if ((0, _utils.isDataObjectURL)(field)) {\n var reporter = context.runtimeRegistry.getReporterURLSynchonous((0, _utils.removePathFromURL)(field));\n if (reporter !== undefined) {\n hypertyName = context.runtimeRegistry.getHypertyName(reporter);\n }\n } else {\n if (field.split('://')[0] === 'hyperty') {\n hypertyName = context.runtimeRegistry.getHypertyName((0, _utils.removePathFromURL)(field));\n }\n }\n if (hypertyName === this.target) {\n break;\n }\n\n return 'Not Applicable';\n\n case 'identity':\n var owner = void 0;\n\n if ((0, _utils.isDataObjectURL)(field)) {\n var _reporter = context.runtimeRegistry.getReporterURLSynchonous((0, _utils.removePathFromURL)(field));\n owner = context.runtimeRegistry.getHypertyOwner(_reporter);\n } else {\n if (field.split('://')[0] === 'hyperty') {\n owner = context.runtimeRegistry.getHypertyOwner((0, _utils.removePathFromURL)(field));\n }\n }\n if (owner !== undefined) {\n owner = (0, _utils.getUserEmailFromURL)(owner);\n }\n if (owner === this.target) {\n break;\n }\n\n return 'Not Applicable';\n }\n\n if (this.condition.isApplicable(context, message, this.scope, this.target)) {\n return this.decision;\n } else {\n return 'Not Applicable';\n }\n }\n }]);\n return Rule;\n}();\n\nexports.default = Rule;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUnVsZS5qcz9jOWU4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBZHZhbmNlZENvbmRpdGlvbiBmcm9tICcuL2NvbmRpdGlvbnMvQWR2YW5jZWRDb25kaXRpb24nO1xyXG5pbXBvcnQgQ29uZGl0aW9uIGZyb20gJy4vY29uZGl0aW9ucy9Db25kaXRpb24nO1xyXG5pbXBvcnQge2dldFVzZXJFbWFpbEZyb21VUkwsIGlzRGF0YU9iamVjdFVSTCwgcmVtb3ZlUGF0aEZyb21VUkx9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcclxuaW1wb3J0IFN1YnNjcmlwdGlvbkNvbmRpdGlvbiBmcm9tICcuL2NvbmRpdGlvbnMvQWR2YW5jZWRDb25kaXRpb24nO1xyXG5cclxuY2xhc3MgUnVsZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGRlY2lzaW9uLCBjb25kaXRpb24sIHNjb3BlLCB0YXJnZXQsIHByaW9yaXR5KSB7XHJcbiAgICB0aGlzLmRlY2lzaW9uID0gZGVjaXNpb247XHJcbiAgICB0aGlzLnNldENvbmRpdGlvbihjb25kaXRpb24pO1xyXG4gICAgdGhpcy5wcmlvcml0eSA9IHByaW9yaXR5O1xyXG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xyXG4gICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XHJcbiAgfVxyXG5cclxuICBzZXRDb25kaXRpb24oY29uZGl0aW9uKSB7XHJcbiAgICBpZiAoIShjb25kaXRpb24gaW5zdGFuY2VvZiBDb25kaXRpb24gfHwgY29uZGl0aW9uIGluc3RhbmNlb2YgU3Vic2NyaXB0aW9uQ29uZGl0aW9uIHx8IGNvbmRpdGlvbiBpbnN0YW5jZW9mIEFkdmFuY2VkQ29uZGl0aW9uKSkge1xyXG4gICAgICBsZXQgYXR0cmlidXRlID0gY29uZGl0aW9uLmF0dHJpYnV0ZTtcclxuICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcclxuICAgICAgICBjYXNlICdzdWJzY3JpcHRpb24nOlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb24gPSBuZXcgU3Vic2NyaXB0aW9uQ29uZGl0aW9uKGNvbmRpdGlvbi5hdHRyaWJ1dGUsIGNvbmRpdGlvbi5vcGVyYXRvciwgY29uZGl0aW9uLnBhcmFtcyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIHVuZGVmaW5lZDpcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uID0gbmV3IEFkdmFuY2VkQ29uZGl0aW9uKGNvbmRpdGlvbik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb24gPSBuZXcgQ29uZGl0aW9uKGNvbmRpdGlvbi5hdHRyaWJ1dGUsIGNvbmRpdGlvbi5vcGVyYXRvciwgY29uZGl0aW9uLnBhcmFtcyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gY29uZGl0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGUoY29udGV4dCwgbWVzc2FnZSwgaXNJbmNvbWluZykge1xyXG4gICAgbGV0IGZpZWxkID0gKGlzSW5jb21pbmcpID8gbWVzc2FnZS50byA6IG1lc3NhZ2UuZnJvbTtcclxuICAgIGxldCBoeXBlcnR5TmFtZTtcclxuICAgIHN3aXRjaCAodGhpcy5zY29wZSkge1xyXG4gICAgICBjYXNlICdnbG9iYWwnOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnaHlwZXJ0eSc6XHJcbiAgICAgICAgaWYgKGlzRGF0YU9iamVjdFVSTChmaWVsZCkpIHtcclxuICAgICAgICAgIGxldCByZXBvcnRlciA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldFJlcG9ydGVyVVJMU3luY2hvbm91cyhyZW1vdmVQYXRoRnJvbVVSTChmaWVsZCkpO1xyXG4gICAgICAgICAgaWYgKHJlcG9ydGVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaHlwZXJ0eU5hbWUgPSBjb250ZXh0LnJ1bnRpbWVSZWdpc3RyeS5nZXRIeXBlcnR5TmFtZShyZXBvcnRlcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChmaWVsZC5zcGxpdCgnOi8vJylbMF0gPT09ICdoeXBlcnR5Jykge1xyXG4gICAgICAgICAgICBoeXBlcnR5TmFtZSA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldEh5cGVydHlOYW1lKHJlbW92ZVBhdGhGcm9tVVJMKGZpZWxkKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChoeXBlcnR5TmFtZSA9PT0gdGhpcy50YXJnZXQpIHtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuICdOb3QgQXBwbGljYWJsZSc7XHJcblxyXG4gICAgICBjYXNlICdpZGVudGl0eSc6XHJcbiAgICAgICAgbGV0IG93bmVyO1xyXG5cclxuICAgICAgICBpZiAoaXNEYXRhT2JqZWN0VVJMKGZpZWxkKSkge1xyXG4gICAgICAgICAgbGV0IHJlcG9ydGVyID0gY29udGV4dC5ydW50aW1lUmVnaXN0cnkuZ2V0UmVwb3J0ZXJVUkxTeW5jaG9ub3VzKHJlbW92ZVBhdGhGcm9tVVJMKGZpZWxkKSk7XHJcbiAgICAgICAgICBvd25lciA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldEh5cGVydHlPd25lcihyZXBvcnRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChmaWVsZC5zcGxpdCgnOi8vJylbMF0gPT09ICdoeXBlcnR5Jykge1xyXG4gICAgICAgICAgICBvd25lciA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldEh5cGVydHlPd25lcihyZW1vdmVQYXRoRnJvbVVSTChmaWVsZCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3duZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgb3duZXIgPSBnZXRVc2VyRW1haWxGcm9tVVJMKG93bmVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG93bmVyID09PSB0aGlzLnRhcmdldCkge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gJ05vdCBBcHBsaWNhYmxlJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25kaXRpb24uaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UsIHRoaXMuc2NvcGUsIHRoaXMudGFyZ2V0KSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kZWNpc2lvbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnTm90IEFwcGxpY2FibGUnO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUnVsZTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvUnVsZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFFQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXZDQTtBQUNBO0FBeUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFHQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///125\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Condition = __webpack_require__(112);\n\nvar _Condition2 = _interopRequireDefault(_Condition);\n\nvar _Operators = __webpack_require__(111);\n\nvar _Operators2 = _interopRequireDefault(_Operators);\n\nvar _SubscriptionCondition = __webpack_require__(127);\n\nvar _SubscriptionCondition2 = _interopRequireDefault(_SubscriptionCondition);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AdvancedCondition = function () {\n function AdvancedCondition(condition) {\n (0, _classCallCheck3.default)(this, AdvancedCondition);\n\n this.operators = new _Operators2.default();\n if (condition.operators !== undefined) {\n condition = condition.condition;\n }\n condition = this.buildCondition(condition);\n this.condition = condition;\n }\n\n (0, _createClass3.default)(AdvancedCondition, [{\n key: 'buildCondition',\n value: function buildCondition(condition) {\n if (Array.isArray(condition[1])) {\n condition[1] = this.buildCondition(condition[1]);\n } else {\n if (condition[1].attribute === 'subscription') {\n condition[1] = new _SubscriptionCondition2.default(condition[1].attribute, condition[1].operator, condition[1].params);\n } else {\n condition[1] = new _Condition2.default(condition[1].attribute, condition[1].operator, condition[1].params);\n }\n }\n\n if (condition[2] !== undefined) {\n if (Array.isArray(condition[2])) {\n condition[2] = this.buildCondition(condition[2]);\n } else {\n if (condition[2].attribute === 'subscription') {\n condition[2] = new _SubscriptionCondition2.default(condition[2].attribute, condition[2].operator, condition[2].params);\n } else {\n condition[2] = new _Condition2.default(condition[2].attribute, condition[2].operator, condition[2].params);\n }\n }\n }\n return condition;\n }\n }, {\n key: 'isApplicable',\n value: function isApplicable(context, message, scope, target, operator, left, right) {\n if (!operator) {\n operator = this.condition[0];\n left = this.condition[1];\n right = this.condition[2];\n }\n\n while (!(left instanceof _Condition2.default) & !(left instanceof _SubscriptionCondition2.default) & typeof left !== 'boolean') {\n left = this.isApplicable(context, message, scope, target, left[0], left[1], left[2]);\n }\n if (right !== undefined) {\n while (!(right instanceof _Condition2.default) & !(right instanceof _SubscriptionCondition2.default) & typeof right !== 'boolean') {\n right = this.isApplicable(context, message, scope, target, right[0], right[1], right[2]);\n }\n }\n\n var resultLeft = typeof left === 'boolean' ? left : left.isApplicable(context, message, scope, target);\n var resultRight = void 0;\n if (right !== undefined) {\n resultRight = typeof right === 'boolean' ? right : right.isApplicable(context, message, scope, target);\n }\n return this.operators[operator]([resultLeft, resultRight]);\n }\n }]);\n return AdvancedCondition;\n}();\n\nexports.default = AdvancedCondition;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29uZGl0aW9ucy9BZHZhbmNlZENvbmRpdGlvbi5qcz9iZDBmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb25kaXRpb24gZnJvbSAnLi9Db25kaXRpb24nO1xyXG5pbXBvcnQgT3BlcmF0b3JzIGZyb20gJy4uL09wZXJhdG9ycyc7XHJcbmltcG9ydCBTdWJzY3JpcHRpb25Db25kaXRpb24gZnJvbSAnLi9TdWJzY3JpcHRpb25Db25kaXRpb24nO1xyXG5cclxuY2xhc3MgQWR2YW5jZWRDb25kaXRpb24ge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25kaXRpb24pIHtcclxuICAgIHRoaXMub3BlcmF0b3JzID0gbmV3IE9wZXJhdG9ycygpO1xyXG4gICAgaWYgKGNvbmRpdGlvbi5vcGVyYXRvcnMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25kaXRpb24gPSBjb25kaXRpb24uY29uZGl0aW9uO1xyXG4gICAgfVxyXG4gICAgY29uZGl0aW9uID0gdGhpcy5idWlsZENvbmRpdGlvbihjb25kaXRpb24pO1xyXG4gICAgdGhpcy5jb25kaXRpb24gPSBjb25kaXRpb247XHJcbiAgfVxyXG5cclxuICBidWlsZENvbmRpdGlvbihjb25kaXRpb24pIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmRpdGlvblsxXSkpIHtcclxuICAgICAgY29uZGl0aW9uWzFdID0gdGhpcy5idWlsZENvbmRpdGlvbihjb25kaXRpb25bMV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGNvbmRpdGlvblsxXS5hdHRyaWJ1dGUgPT09ICdzdWJzY3JpcHRpb24nKSB7XHJcbiAgICAgICAgY29uZGl0aW9uWzFdID0gbmV3IFN1YnNjcmlwdGlvbkNvbmRpdGlvbihjb25kaXRpb25bMV0uYXR0cmlidXRlLCBjb25kaXRpb25bMV0ub3BlcmF0b3IsIGNvbmRpdGlvblsxXS5wYXJhbXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbmRpdGlvblsxXSA9IG5ldyBDb25kaXRpb24oY29uZGl0aW9uWzFdLmF0dHJpYnV0ZSwgY29uZGl0aW9uWzFdLm9wZXJhdG9yLCBjb25kaXRpb25bMV0ucGFyYW1zKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb25kaXRpb25bMl0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25kaXRpb25bMl0pKSB7XHJcbiAgICAgICAgY29uZGl0aW9uWzJdID0gdGhpcy5idWlsZENvbmRpdGlvbihjb25kaXRpb25bMl0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjb25kaXRpb25bMl0uYXR0cmlidXRlID09PSAnc3Vic2NyaXB0aW9uJykge1xyXG4gICAgICAgICAgY29uZGl0aW9uWzJdID0gbmV3IFN1YnNjcmlwdGlvbkNvbmRpdGlvbihjb25kaXRpb25bMl0uYXR0cmlidXRlLCBjb25kaXRpb25bMl0ub3BlcmF0b3IsIGNvbmRpdGlvblsyXS5wYXJhbXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25kaXRpb25bMl0gPSBuZXcgQ29uZGl0aW9uKGNvbmRpdGlvblsyXS5hdHRyaWJ1dGUsIGNvbmRpdGlvblsyXS5vcGVyYXRvciwgY29uZGl0aW9uWzJdLnBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29uZGl0aW9uO1xyXG4gIH1cclxuXHJcbiAgaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UsIHNjb3BlLCB0YXJnZXQsIG9wZXJhdG9yLCBsZWZ0LCByaWdodCkge1xyXG4gICAgaWYgKCFvcGVyYXRvcikge1xyXG4gICAgICBvcGVyYXRvciA9IHRoaXMuY29uZGl0aW9uWzBdO1xyXG4gICAgICBsZWZ0ID0gdGhpcy5jb25kaXRpb25bMV07XHJcbiAgICAgIHJpZ2h0ID0gdGhpcy5jb25kaXRpb25bMl07XHJcbiAgICB9XHJcblxyXG4gICAgd2hpbGUgKCEobGVmdCBpbnN0YW5jZW9mIENvbmRpdGlvbikgJiAhKGxlZnQgaW5zdGFuY2VvZiBTdWJzY3JpcHRpb25Db25kaXRpb24pICYgKHR5cGVvZiBsZWZ0ICE9PSAnYm9vbGVhbicpKSB7XHJcbiAgICAgIGxlZnQgPSB0aGlzLmlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlLCBzY29wZSwgdGFyZ2V0LCBsZWZ0WzBdLCBsZWZ0WzFdLCBsZWZ0WzJdKTtcclxuICAgIH1cclxuICAgIGlmIChyaWdodCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHdoaWxlICghKHJpZ2h0IGluc3RhbmNlb2YgQ29uZGl0aW9uKSAmICEocmlnaHQgaW5zdGFuY2VvZiBTdWJzY3JpcHRpb25Db25kaXRpb24pICYgKHR5cGVvZiByaWdodCAhPT0gJ2Jvb2xlYW4nKSkge1xyXG4gICAgICAgIHJpZ2h0ID0gdGhpcy5pc0FwcGxpY2FibGUoY29udGV4dCwgbWVzc2FnZSwgc2NvcGUsIHRhcmdldCwgcmlnaHRbMF0sIHJpZ2h0WzFdLCByaWdodFsyXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgcmVzdWx0TGVmdCA9ICh0eXBlb2YgbGVmdCA9PT0gJ2Jvb2xlYW4nKSA/IGxlZnQgOiBsZWZ0LmlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlLCBzY29wZSwgdGFyZ2V0KTtcclxuICAgIGxldCByZXN1bHRSaWdodDtcclxuICAgIGlmIChyaWdodCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJlc3VsdFJpZ2h0ID0gKHR5cGVvZiByaWdodCA9PT0gJ2Jvb2xlYW4nKSA/IHJpZ2h0IDogcmlnaHQuaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UsIHNjb3BlLCB0YXJnZXQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMub3BlcmF0b3JzW29wZXJhdG9yXShbcmVzdWx0TGVmdCwgcmVzdWx0UmlnaHRdKTtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBBZHZhbmNlZENvbmRpdGlvbjtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvY29uZGl0aW9ucy9BZHZhbmNlZENvbmRpdGlvbi5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7OztBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///126\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(63);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(64);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = __webpack_require__(128);\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = __webpack_require__(65);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Condition2 = __webpack_require__(112);\n\nvar _Condition3 = _interopRequireDefault(_Condition2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* @author Ana Caldeira \r\n* @classdesc Class to represent a subscription condition and evaluate its applicability.\r\n*/\nvar SubscriptionCondition = function (_Condition) {\n (0, _inherits3.default)(SubscriptionCondition, _Condition);\n\n /**\r\n * Creates a new SubscriptionCondition.\r\n * @class\r\n * @param {string} attribute\r\n * @param {string} operator\r\n * @param {*} params\r\n */\n function SubscriptionCondition(attribute, operator, params) {\n (0, _classCallCheck3.default)(this, SubscriptionCondition);\n return (0, _possibleConstructorReturn3.default)(this, (SubscriptionCondition.__proto__ || (0, _getPrototypeOf2.default)(SubscriptionCondition)).call(this, attribute, operator, params));\n }\n\n /**\r\n * Verifies if the subscription condition is applicable to the message. First, verifies if the message is of the subscription type; second, verifies if the message is from a remote runtime to guarantee that the subscription is being validated in the destination runtime; third, verifies if the subscription preference is met.\r\n * @param {Object} context environment where the Policy Engine is being used\r\n * @param {Object} message\r\n */\n\n\n (0, _createClass3.default)(SubscriptionCondition, [{\n key: 'isApplicable',\n value: function isApplicable(context, message) {\n var isSubscription = message.type === 'subscribe';\n var isFromRemoteSM = context.isFromRemoteSM(message.from);\n if (isSubscription & isFromRemoteSM) {\n return (0, _get3.default)(SubscriptionCondition.prototype.__proto__ || (0, _getPrototypeOf2.default)(SubscriptionCondition.prototype), 'isApplicable', this).call(this, context, message);\n } else {\n return false;\n }\n }\n }]);\n return SubscriptionCondition;\n}(_Condition3.default); /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\nexports.default = SubscriptionCondition;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29uZGl0aW9ucy9TdWJzY3JpcHRpb25Db25kaXRpb24uanM/YTkwMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxyXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxyXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXHJcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xyXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxyXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXHJcbipcclxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuKlxyXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbipcclxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKiovXHJcblxyXG5pbXBvcnQgQ29uZGl0aW9uIGZyb20gJy4vQ29uZGl0aW9uJztcclxuXHJcbi8qKlxyXG4qIEBhdXRob3IgQW5hIENhbGRlaXJhIDxhbmEuY2FsZGVpcmFAdGVjbmljby51bGlzYm9hLnB0PlxyXG4qIEBjbGFzc2Rlc2MgQ2xhc3MgdG8gcmVwcmVzZW50IGEgc3Vic2NyaXB0aW9uIGNvbmRpdGlvbiBhbmQgZXZhbHVhdGUgaXRzIGFwcGxpY2FiaWxpdHkuXHJcbiovXHJcbmNsYXNzIFN1YnNjcmlwdGlvbkNvbmRpdGlvbiBleHRlbmRzIENvbmRpdGlvbiB7XHJcblxyXG4gIC8qKlxyXG4gICogQ3JlYXRlcyBhIG5ldyBTdWJzY3JpcHRpb25Db25kaXRpb24uXHJcbiAgKiBAY2xhc3NcclxuICAqIEBwYXJhbSAge3N0cmluZ30gIGF0dHJpYnV0ZVxyXG4gICogQHBhcmFtICB7c3RyaW5nfSAgb3BlcmF0b3JcclxuICAqIEBwYXJhbSAgeyp9ICAgICAgIHBhcmFtc1xyXG4gICovXHJcbiAgY29uc3RydWN0b3IoYXR0cmlidXRlLCBvcGVyYXRvciwgcGFyYW1zKSB7XHJcbiAgICBzdXBlcihhdHRyaWJ1dGUsIG9wZXJhdG9yLCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBWZXJpZmllcyBpZiB0aGUgc3Vic2NyaXB0aW9uIGNvbmRpdGlvbiBpcyBhcHBsaWNhYmxlIHRvIHRoZSBtZXNzYWdlLiBGaXJzdCwgdmVyaWZpZXMgaWYgdGhlIG1lc3NhZ2UgaXMgb2YgdGhlIHN1YnNjcmlwdGlvbiB0eXBlOyBzZWNvbmQsIHZlcmlmaWVzIGlmIHRoZSBtZXNzYWdlIGlzIGZyb20gYSByZW1vdGUgcnVudGltZSB0byBndWFyYW50ZWUgdGhhdCB0aGUgc3Vic2NyaXB0aW9uIGlzIGJlaW5nIHZhbGlkYXRlZCBpbiB0aGUgZGVzdGluYXRpb24gcnVudGltZTsgdGhpcmQsIHZlcmlmaWVzIGlmIHRoZSBzdWJzY3JpcHRpb24gcHJlZmVyZW5jZSBpcyBtZXQuXHJcbiAgKiBAcGFyYW0gIHtPYmplY3R9ICAgIGNvbnRleHQgICBlbnZpcm9ubWVudCB3aGVyZSB0aGUgUG9saWN5IEVuZ2luZSBpcyBiZWluZyB1c2VkXHJcbiAgKiBAcGFyYW0gIHtPYmplY3R9ICAgIG1lc3NhZ2VcclxuICAqL1xyXG4gIGlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlKSB7XHJcbiAgICBsZXQgaXNTdWJzY3JpcHRpb24gPSBtZXNzYWdlLnR5cGUgPT09ICdzdWJzY3JpYmUnO1xyXG4gICAgbGV0IGlzRnJvbVJlbW90ZVNNID0gY29udGV4dC5pc0Zyb21SZW1vdGVTTShtZXNzYWdlLmZyb20pO1xyXG4gICAgaWYgKGlzU3Vic2NyaXB0aW9uICYgaXNGcm9tUmVtb3RlU00pIHtcclxuICAgICAgcmV0dXJuIHN1cGVyLmlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTdWJzY3JpcHRpb25Db25kaXRpb247XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L2NvbmRpdGlvbnMvU3Vic2NyaXB0aW9uQ29uZGl0aW9uLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7QUFDQTs7Ozs7QUFDQTs7OztBQUlBOzs7QUFFQTs7Ozs7OztBQU9BO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUF2REE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkRBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///127\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _getPrototypeOf = __webpack_require__(63);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _getOwnPropertyDescriptor = __webpack_require__(129);\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = (0, _getOwnPropertyDescriptor2.default)(object, property);\n\n if (desc === undefined) {\n var parent = (0, _getPrototypeOf2.default)(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if ("value" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9nZXQuanM/Yzg0YiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9nZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpO1xuXG52YXIgX2dldFByb3RvdHlwZU9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldFByb3RvdHlwZU9mKTtcblxudmFyIF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yXCIpO1xuXG52YXIgX2dldE93blByb3BlcnR5RGVzY3JpcHRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiBnZXQob2JqZWN0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpIHtcbiAgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuICB2YXIgZGVzYyA9ICgwLCBfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yMi5kZWZhdWx0KShvYmplY3QsIHByb3BlcnR5KTtcblxuICBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIHBhcmVudCA9ICgwLCBfZ2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKG9iamVjdCk7XG5cbiAgICBpZiAocGFyZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ2V0KHBhcmVudCwgcHJvcGVydHksIHJlY2VpdmVyKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoXCJ2YWx1ZVwiIGluIGRlc2MpIHtcbiAgICByZXR1cm4gZGVzYy52YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7XG5cbiAgICBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTtcbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvZ2V0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///128\n')},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(130), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzPzJiYTEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2dldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1xuLy8gbW9kdWxlIGlkID0gMTI5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///129\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(131);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzPzcyNzkiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICByZXR1cm4gJE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDEzMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///130\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(10);\nvar $getOwnPropertyDescriptor = __webpack_require__(40).f;\n\n__webpack_require__(39)('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzPzg4ODkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKVxudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodG9JT2JqZWN0KGl0KSwga2V5KTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDEzMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///131\n")}])}); \ No newline at end of file +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("PEP",[],n):"object"==typeof exports?exports.PEP=n():e.PEP=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function c(t){if(n[t])return n[t].exports;var l=n[t]={i:t,l:!1,exports:{}};return e[t].call(l.exports,l,l.exports,c),l.l=!0,l.exports}return c.m=e,c.c=n,c.d=function(e,n,t){c.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},c.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(n,"a",n),n},c.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},c.p="",c(c.s=119)}([function(module,exports){eval("var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcz8xNWUwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjUuNycgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qc1xuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n")},function(module,exports){eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzP2VjYWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1\n")},function(module,exports,__webpack_require__){eval("var store = __webpack_require__(28)('wks');\nvar uid = __webpack_require__(20);\nvar Symbol = __webpack_require__(1).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzPzc1MmMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qc1xuLy8gbW9kdWxlIGlkID0gMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar ctx = __webpack_require__(15);\nvar hide = __webpack_require__(9);\nvar has = __webpack_require__(8);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzPzkwY2QiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzP2VmYjMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4\n")},function(module,exports,__webpack_require__){eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(13)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanM/Zjg0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n")},function(module,exports){eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzPzEyYTgiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(4);\nvar IE8_DOM_DEFINE = __webpack_require__(36);\nvar toPrimitive = __webpack_require__(26);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzPzdhZjAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanNcbi8vIG1vZHVsZSBpZCA9IDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7\n")},function(module,exports){eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzPzBmNjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanNcbi8vIG1vZHVsZSBpZCA9IDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(7);\nvar createDesc = __webpack_require__(19);\nmodule.exports = __webpack_require__(5) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qcz84NDljIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9\n")},function(module,exports,__webpack_require__){eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(57);\nvar defined = __webpack_require__(23);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NGRjNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///10\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzY2YjkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(60);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzP2MzMTAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5XCIpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///12\n')},function(module,exports){eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///13\n")},function(module,exports){eval("module.exports = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qc1xuLy8gbW9kdWxlIGlkID0gMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n")},function(module,exports,__webpack_require__){eval("// optional / simple context binding\nvar aFunction = __webpack_require__(18);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanNcbi8vIG1vZHVsZSBpZCA9IDE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///15\n")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanNcbi8vIG1vZHVsZSBpZCA9IDE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///16\n")},function(module,exports){eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcz9mZGI0Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzXG4vLyBtb2R1bGUgaWQgPSAxN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///17\n")},function(module,exports){eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///18\n")},function(module,exports){eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanNcbi8vIG1vZHVsZSBpZCA9IDE5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///19\n")},function(module,exports){eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qc1xuLy8gbW9kdWxlIGlkID0gMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///20\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(37);\nvar enumBugKeys = __webpack_require__(29);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///21\n")},function(module,exports){eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/NTJlMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///22\n")},function(module,exports){eval('// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError("Can\'t call method on " + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTc2OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///23\n')},function(module,exports,__webpack_require__){eval("var def = __webpack_require__(7).f;\nvar has = __webpack_require__(8);\nvar TAG = __webpack_require__(2)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdiYTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///24\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nvar document = __webpack_require__(1).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n")},function(module,exports,__webpack_require__){eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(6);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///26\n")},function(module,exports,__webpack_require__){eval("var shared = __webpack_require__(28)('keys');\nvar uid = __webpack_require__(20);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NmIxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///27\n")},function(module,exports,__webpack_require__){eval("var core = __webpack_require__(0);\nvar global = __webpack_require__(1);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(14) ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcz83YmMwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogY29yZS52ZXJzaW9uLFxuICBtb2RlOiByZXF1aXJlKCcuL19saWJyYXJ5JykgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxOCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qc1xuLy8gbW9kdWxlIGlkID0gMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///28\n")},function(module,exports){eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/YzY3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n")},function(module,exports,__webpack_require__){eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(23);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(4);\nvar dPs = __webpack_require__(69);\nvar enumBugKeys = __webpack_require__(29);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(25)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(46).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanM/NjI4NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGRQcyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2lmcmFtZScpO1xuICB2YXIgaSA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJlcXVpcmUoJy4vX2h0bWwnKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(18);\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanM/YTgwNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAyNS40LjEuNSBOZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcblxuZnVuY3Rpb24gUHJvbWlzZUNhcGFiaWxpdHkoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUZ1bmN0aW9uKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFGdW5jdGlvbihyZWplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qc1xuLy8gbW9kdWxlIGlkID0gMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///32\n")},function(module,exports,__webpack_require__){eval("exports.f = __webpack_require__(2);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1leHQuanM/MmExZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSByZXF1aXJlKCcuL193a3MnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///33\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar LIBRARY = __webpack_require__(14);\nvar wksExt = __webpack_require__(33);\nvar defineProperty = __webpack_require__(7).f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1kZWZpbmUuanM/NzJiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciAkU3ltYm9sID0gY29yZS5TeW1ib2wgfHwgKGNvcmUuU3ltYm9sID0gTElCUkFSWSA/IHt9IDogZ2xvYmFsLlN5bWJvbCB8fCB7fSk7XG4gIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///34\n")},function(module,exports){eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanM/MzY5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtcGllLmpzXG4vLyBtb2R1bGUgaWQgPSAzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///35\n")},function(module,exports,__webpack_require__){eval("module.exports = !__webpack_require__(5) && !__webpack_require__(13)(function () {\n return Object.defineProperty(__webpack_require__(25)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///36\n")},function(module,exports,__webpack_require__){eval("var has = __webpack_require__(8);\nvar toIObject = __webpack_require__(10);\nvar arrayIndexOf = __webpack_require__(58)(false);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzIxYjgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///37\n")},function(module,exports,__webpack_require__){eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(22);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz80MTExIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qc1xuLy8gbW9kdWxlIGlkID0gMzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///38\n")},function(module,exports,__webpack_require__){eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar fails = __webpack_require__(13);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanM/YmFhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qtc2FwLmpzXG4vLyBtb2R1bGUgaWQgPSAzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///39\n")},function(module,exports,__webpack_require__){eval("var pIE = __webpack_require__(35);\nvar createDesc = __webpack_require__(19);\nvar toIObject = __webpack_require__(10);\nvar toPrimitive = __webpack_require__(26);\nvar has = __webpack_require__(8);\nvar IE8_DOM_DEFINE = __webpack_require__(36);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(5) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzPzJjYTYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcGQuanNcbi8vIG1vZHVsZSBpZCA9IDQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///40\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(66), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3Byb21pc2UuanM/ZmZmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vcHJvbWlzZVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///41\n')},function(module,exports){eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///42\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $at = __webpack_require__(67)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(44)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcz9jZDA0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///43\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(14);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(45);\nvar hide = __webpack_require__(9);\nvar Iterators = __webpack_require__(17);\nvar $iterCreate = __webpack_require__(68);\nvar setToStringTag = __webpack_require__(24);\nvar getPrototypeOf = __webpack_require__(47);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzP2JjODAiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///44\n")},function(module,exports,__webpack_require__){eval("module.exports = __webpack_require__(9);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzP2YzY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///45\n")},function(module,exports,__webpack_require__){eval("var document = __webpack_require__(1).document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanM/NDRmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanNcbi8vIG1vZHVsZSBpZCA9IDQ2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(8);\nvar toObject = __webpack_require__(30);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanM/M2YzYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///47\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(70);\nvar global = __webpack_require__(1);\nvar hide = __webpack_require__(9);\nvar Iterators = __webpack_require__(17);\nvar TO_STRING_TAG = __webpack_require__(2)('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcz9mYWQzIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSA0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///48\n")},function(module,exports,__webpack_require__){eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(16);\nvar TAG = __webpack_require__(2)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanM/NDU4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBBUkcgPSBjb2YoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIFQsIEI7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFRcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IEFSRyA/IGNvZihPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY2xhc3NvZi5qc1xuLy8gbW9kdWxlIGlkID0gNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n")},function(module,exports,__webpack_require__){eval("// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(4);\nvar aFunction = __webpack_require__(18);\nvar SPECIES = __webpack_require__(2)('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanM/YjdjYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjMuMjAgU3BlY2llc0NvbnN0cnVjdG9yKE8sIGRlZmF1bHRDb25zdHJ1Y3RvcilcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIEQpIHtcbiAgdmFyIEMgPSBhbk9iamVjdChPKS5jb25zdHJ1Y3RvcjtcbiAgdmFyIFM7XG4gIHJldHVybiBDID09PSB1bmRlZmluZWQgfHwgKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPT0gdW5kZWZpbmVkID8gRCA6IGFGdW5jdGlvbihTKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3BlY2llcy1jb25zdHJ1Y3Rvci5qc1xuLy8gbW9kdWxlIGlkID0gNTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///50\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(15);\nvar invoke = __webpack_require__(79);\nvar html = __webpack_require__(46);\nvar cel = __webpack_require__(25);\nvar global = __webpack_require__(1);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(16)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanM/MmY4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vX2h0bWwnKTtcbnZhciBjZWwgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHNldFRhc2sgPSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyVGFzayA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbDtcbnZhciBEaXNwYXRjaCA9IGdsb2JhbC5EaXNwYXRjaDtcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xudmFyIHJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgaWYgKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICAgIGZuKCk7XG4gIH1cbn07XG52YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXRUYXNrIHx8ICFjbGVhclRhc2spIHtcbiAgc2V0VGFzayA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCkge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RlbmVyO1xuICAgIGRlZmVyID0gY3R4KHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQsIDEpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdHMpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG4gICAgfTtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICAgIHJ1bi5jYWxsKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChjdHgocnVuLCBpZCwgMSksIDApO1xuICAgIH07XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldFRhc2ssXG4gIGNsZWFyOiBjbGVhclRhc2tcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gNTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///51\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanM/NzRkMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZTogZmFsc2UsIHY6IGV4ZWMoKSB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHsgZTogdHJ1ZSwgdjogZSB9O1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanNcbi8vIG1vZHVsZSBpZCA9IDUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///52\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(4);\nvar isObject = __webpack_require__(6);\nvar newPromiseCapability = __webpack_require__(32);\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qcz83Yzk1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEMsIHgpIHtcbiAgYW5PYmplY3QoQyk7XG4gIGlmIChpc09iamVjdCh4KSAmJiB4LmNvbnN0cnVjdG9yID09PSBDKSByZXR1cm4geDtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZihDKTtcbiAgdmFyIHJlc29sdmUgPSBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlO1xuICByZXNvbHZlKHgpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzXG4vLyBtb2R1bGUgaWQgPSA1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///53\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(90);\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(92);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {\n return typeof obj === "undefined" ? "undefined" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcz9hNDU2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2l0ZXJhdG9yID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yXCIpO1xuXG52YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTtcblxudmFyIF9zeW1ib2wgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9zeW1ib2xcIik7XG5cbnZhciBfc3ltYm9sMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N5bWJvbCk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgX2l0ZXJhdG9yMi5kZWZhdWx0ID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgX3R5cGVvZihfaXRlcmF0b3IyLmRlZmF1bHQpID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YuanNcbi8vIG1vZHVsZSBpZCA9IDU0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///54\n')},function(module,exports){eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BzLmpzP2Q2NDQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wcy5qc1xuLy8gbW9kdWxlIGlkID0gNTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///55\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(37);\nvar hiddenKeys = __webpack_require__(29).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLmpzPzlmNDQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGhpZGRlbktleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi5qc1xuLy8gbW9kdWxlIGlkID0gNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n")},function(module,exports,__webpack_require__){eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(16);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/MzE0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///57\n")},function(module,exports,__webpack_require__){eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(10);\nvar toLength = __webpack_require__(38);\nvar toAbsoluteIndex = __webpack_require__(59);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2JjNTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanNcbi8vIG1vZHVsZSBpZCA9IDU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///58\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(22);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzdlNDAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///59\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(61), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/MGI4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA2MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///60\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(62);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ZjViMCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///61\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(3);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(5), 'Object', { defineProperty: __webpack_require__(7).f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanM/OTgyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///62\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(88), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzY3MWUiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///63\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(54);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n }\n\n return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanM/Y2YwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHNlbGYsIGNhbGwpIHtcbiAgaWYgKCFzZWxmKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNhbGwgJiYgKCh0eXBlb2YgY2FsbCA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoY2FsbCkpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzXG4vLyBtb2R1bGUgaWQgPSA2NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///64\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(101);\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(105);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(54);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== "function" && superClass !== null) {\n throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzPzNkZmQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKTtcblxudmFyIF9zZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXRQcm90b3R5cGVPZik7XG5cbnZhciBfY3JlYXRlID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2NyZWF0ZVwiKTtcblxudmFyIF9jcmVhdGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlKTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArICh0eXBlb2Ygc3VwZXJDbGFzcyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoc3VwZXJDbGFzcykpKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9ICgwLCBfY3JlYXRlMi5kZWZhdWx0KShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mMi5kZWZhdWx0ID8gKDAsIF9zZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzcztcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzXG4vLyBtb2R1bGUgaWQgPSA2NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///65\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(42);\n__webpack_require__(43);\n__webpack_require__(48);\n__webpack_require__(73);\n__webpack_require__(85);\n__webpack_require__(86);\nmodule.exports = __webpack_require__(0).Promise;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2UuanM/NTM5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucHJvbWlzZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL19jb3JlJykuUHJvbWlzZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA2NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///66\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(22);\nvar defined = __webpack_require__(23);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcz84N2FlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbi8vIHRydWUgIC0+IFN0cmluZyNhdFxuLy8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGF0LCBwb3MpIHtcbiAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbiAgICB2YXIgaSA9IHRvSW50ZWdlcihwb3MpO1xuICAgIHZhciBsID0gcy5sZW5ndGg7XG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGkgPCAwIHx8IGkgPj0gbCkgcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcbiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG4gICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzXG4vLyBtb2R1bGUgaWQgPSA2N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///67\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar create = __webpack_require__(31);\nvar descriptor = __webpack_require__(19);\nvar setToStringTag = __webpack_require__(24);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(9)(IteratorPrototype, __webpack_require__(2)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzP2Y3ODUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBkZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDY4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///68\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(7);\nvar anObject = __webpack_require__(4);\nvar getKeys = __webpack_require__(21);\n\nmodule.exports = __webpack_require__(5) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanM/YWEyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///69\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar addToUnscopables = __webpack_require__(71);\nvar step = __webpack_require__(72);\nvar Iterators = __webpack_require__(17);\nvar toIObject = __webpack_require__(10);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(44)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzP2M0NjkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///70\n")},function(module,exports){eval("module.exports = function () { /* empty */ };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcz9lMjY3Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qc1xuLy8gbW9kdWxlIGlkID0gNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///71\n")},function(module,exports){eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcz8xMDY2Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRvbmUsIHZhbHVlKSB7XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qc1xuLy8gbW9kdWxlIGlkID0gNzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///72\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(14);\nvar global = __webpack_require__(1);\nvar ctx = __webpack_require__(15);\nvar classof = __webpack_require__(49);\nvar $export = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\nvar aFunction = __webpack_require__(18);\nvar anInstance = __webpack_require__(74);\nvar forOf = __webpack_require__(75);\nvar speciesConstructor = __webpack_require__(50);\nvar task = __webpack_require__(51).set;\nvar microtask = __webpack_require__(80)();\nvar newPromiseCapabilityModule = __webpack_require__(32);\nvar perform = __webpack_require__(52);\nvar userAgent = __webpack_require__(81);\nvar promiseResolve = __webpack_require__(53);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(2)('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(82)($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(24)($Promise, PROMISE);\n__webpack_require__(83)(PROMISE);\nWrapper = __webpack_require__(0)[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(84)(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnByb21pc2UuanM/MDk3YyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG52YXIgUFJPTUlTRSA9ICdQcm9taXNlJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucztcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4IHx8ICcnO1xudmFyICRQcm9taXNlID0gZ2xvYmFsW1BST01JU0VdO1xudmFyIGlzTm9kZSA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xudmFyIGVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIEludGVybmFsLCBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHksIE93blByb21pc2VDYXBhYmlsaXR5LCBXcmFwcGVyO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcblxudmFyIFVTRV9OQVRJVkUgPSAhIWZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBjb3JyZWN0IHN1YmNsYXNzaW5nIHdpdGggQEBzcGVjaWVzIHN1cHBvcnRcbiAgICB2YXIgcHJvbWlzZSA9ICRQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgdmFyIEZha2VQcm9taXNlID0gKHByb21pc2UuY29uc3RydWN0b3IgPSB7fSlbcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKV0gPSBmdW5jdGlvbiAoZXhlYykge1xuICAgICAgZXhlYyhlbXB0eSwgZW1wdHkpO1xuICAgIH07XG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIHJldHVybiAoaXNOb2RlIHx8IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICYmIHByb21pc2UudGhlbihlbXB0eSkgaW5zdGFuY2VvZiBGYWtlUHJvbWlzZVxuICAgICAgLy8gdjggNi42IChOb2RlIDEwIGFuZCBDaHJvbWUgNjYpIGhhdmUgYSBidWcgd2l0aCByZXNvbHZpbmcgY3VzdG9tIHRoZW5hYmxlc1xuICAgICAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODMwNTY1XG4gICAgICAvLyB3ZSBjYW4ndCBkZXRlY3QgaXQgc3luY2hyb25vdXNseSwgc28ganVzdCBjaGVjayB2ZXJzaW9uc1xuICAgICAgJiYgdjguaW5kZXhPZignNi42JykgIT09IDBcbiAgICAgICYmIHVzZXJBZ2VudC5pbmRleE9mKCdDaHJvbWUvNjYnKSA9PT0gLTE7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufSgpO1xuXG4vLyBoZWxwZXJzXG52YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgdGhlbjtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiB0eXBlb2YgKHRoZW4gPSBpdC50aGVuKSA9PSAnZnVuY3Rpb24nID8gdGhlbiA6IGZhbHNlO1xufTtcbnZhciBub3RpZnkgPSBmdW5jdGlvbiAocHJvbWlzZSwgaXNSZWplY3QpIHtcbiAgaWYgKHByb21pc2UuX24pIHJldHVybjtcbiAgcHJvbWlzZS5fbiA9IHRydWU7XG4gIHZhciBjaGFpbiA9IHByb21pc2UuX2M7XG4gIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgb2sgPSBwcm9taXNlLl9zID09IDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBydW4gPSBmdW5jdGlvbiAocmVhY3Rpb24pIHtcbiAgICAgIHZhciBoYW5kbGVyID0gb2sgPyByZWFjdGlvbi5vayA6IHJlYWN0aW9uLmZhaWw7XG4gICAgICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gICAgICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICAgICAgdmFyIGRvbWFpbiA9IHJlYWN0aW9uLmRvbWFpbjtcbiAgICAgIHZhciByZXN1bHQsIHRoZW4sIGV4aXRlZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgaWYgKHByb21pc2UuX2ggPT0gMikgb25IYW5kbGVVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgICAgICAgICBwcm9taXNlLl9oID0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhbmRsZXIgPT09IHRydWUpIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVyKHZhbHVlKTsgLy8gbWF5IHRocm93XG4gICAgICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgICAgIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgICAgIGV4aXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHJlYWN0aW9uLnByb21pc2UpIHtcbiAgICAgICAgICAgIHJlamVjdChUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aGVuLmNhbGwocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZG9tYWluICYmICFleGl0ZWQpIGRvbWFpbi5leGl0KCk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGggPiBpKSBydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgcHJvbWlzZS5fYyA9IFtdO1xuICAgIHByb21pc2UuX24gPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXByb21pc2UuX2gpIG9uVW5oYW5kbGVkKHByb21pc2UpO1xuICB9KTtcbn07XG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgdW5oYW5kbGVkID0gaXNVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgdmFyIHJlc3VsdCwgaGFuZGxlciwgY29uc29sZTtcbiAgICBpZiAodW5oYW5kbGVkKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGlzTm9kZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub251bmhhbmRsZWRyZWplY3Rpb24pIHtcbiAgICAgICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmICgoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBwcm9taXNlLl9oID0gaXNOb2RlIHx8IGlzVW5oYW5kbGVkKHByb21pc2UpID8gMiA6IDE7XG4gICAgfSBwcm9taXNlLl9hID0gdW5kZWZpbmVkO1xuICAgIGlmICh1bmhhbmRsZWQgJiYgcmVzdWx0LmUpIHRocm93IHJlc3VsdC52O1xuICB9KTtcbn07XG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICByZXR1cm4gcHJvbWlzZS5faCAhPT0gMSAmJiAocHJvbWlzZS5fYSB8fCBwcm9taXNlLl9jKS5sZW5ndGggPT09IDA7XG59O1xudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYW5kbGVyO1xuICAgIGlmIChpc05vZGUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBpZiAoaGFuZGxlciA9IGdsb2JhbC5vbnJlamVjdGlvbmhhbmRsZWQpIHtcbiAgICAgIGhhbmRsZXIoeyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHByb21pc2UuX3YgfSk7XG4gICAgfVxuICB9KTtcbn07XG52YXIgJHJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICBwcm9taXNlLl9zID0gMjtcbiAgaWYgKCFwcm9taXNlLl9hKSBwcm9taXNlLl9hID0gcHJvbWlzZS5fYy5zbGljZSgpO1xuICBub3RpZnkocHJvbWlzZSwgdHJ1ZSk7XG59O1xudmFyICRyZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgdmFyIHRoZW47XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgdHJ5IHtcbiAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIGlmICh0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBfdzogcHJvbWlzZSwgX2Q6IGZhbHNlIH07IC8vIHdyYXBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAkcmVqZWN0LmNhbGwod3JhcHBlciwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9taXNlLl92ID0gdmFsdWU7XG4gICAgICBwcm9taXNlLl9zID0gMTtcbiAgICAgIG5vdGlmeShwcm9taXNlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgJHJlamVjdC5jYWxsKHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9LCBlKTsgLy8gd3JhcFxuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gICRQcm9taXNlID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJFByb21pc2UsIFBST01JU0UsICdfaCcpO1xuICAgIGFGdW5jdGlvbihleGVjdXRvcik7XG4gICAgSW50ZXJuYWwuY2FsbCh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoY3R4KCRyZXNvbHZlLCB0aGlzLCAxKSwgY3R4KCRyZWplY3QsIHRoaXMsIDEpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICRyZWplY3QuY2FsbCh0aGlzLCBlcnIpO1xuICAgIH1cbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHRoaXMuX2MgPSBbXTsgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG4gICAgdGhpcy5fYSA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuICAgIHRoaXMuX3MgPSAwOyAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcbiAgICB0aGlzLl9kID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIGRvbmVcbiAgICB0aGlzLl92ID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIHZhbHVlXG4gICAgdGhpcy5faCA9IDA7ICAgICAgICAgICAgICAvLyA8LSByZWplY3Rpb24gc3RhdGUsIDAgLSBkZWZhdWx0LCAxIC0gaGFuZGxlZCwgMiAtIHVuaGFuZGxlZFxuICAgIHRoaXMuX24gPSBmYWxzZTsgICAgICAgICAgLy8gPC0gbm90aWZ5XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpKCRQcm9taXNlLnByb3RvdHlwZSwge1xuICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsICRQcm9taXNlKSk7XG4gICAgICByZWFjdGlvbi5vayA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCA9IHR5cGVvZiBvblJlamVjdGVkID09ICdmdW5jdGlvbicgJiYgb25SZWplY3RlZDtcbiAgICAgIHJlYWN0aW9uLmRvbWFpbiA9IGlzTm9kZSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fYy5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9hKSB0aGlzLl9hLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHRoaXMuX3MpIG5vdGlmeSh0aGlzLCBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH0pO1xuICBPd25Qcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBJbnRlcm5hbCgpO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgdGhpcy5yZXNvbHZlID0gY3R4KCRyZXNvbHZlLCBwcm9taXNlLCAxKTtcbiAgICB0aGlzLnJlamVjdCA9IGN0eCgkcmVqZWN0LCBwcm9taXNlLCAxKTtcbiAgfTtcbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gJFByb21pc2UgfHwgQyA9PT0gV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFByb21pc2U6ICRQcm9taXNlIH0pO1xucmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKSgkUHJvbWlzZSwgUFJPTUlTRSk7XG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKFBST01JU0UpO1xuV3JhcHBlciA9IHJlcXVpcmUoJy4vX2NvcmUnKVtQUk9NSVNFXTtcblxuLy8gc3RhdGljc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNSBQcm9taXNlLnJlamVjdChyKVxuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTtcbiAgICB2YXIgJCRyZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICAkJHJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKExJQlJBUlkgfHwgIVVTRV9OQVRJVkUpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC42IFByb21pc2UucmVzb2x2ZSh4KVxuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoTElCUkFSWSAmJiB0aGlzID09PSBXcmFwcGVyID8gJFByb21pc2UgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoVVNFX05BVElWRSAmJiByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7XG4gICRQcm9taXNlLmFsbChpdGVyKVsnY2F0Y2gnXShlbXB0eSk7XG59KSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyICRpbmRleCA9IGluZGV4Kys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1skaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lKSByZWplY3QocmVzdWx0LnYpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA3M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///73\n")},function(module,exports){eval("module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzP2Q4YWMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIENvbnN0cnVjdG9yLCBuYW1lLCBmb3JiaWRkZW5GaWVsZCkge1xuICBpZiAoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSB8fCAoZm9yYmlkZGVuRmllbGQgIT09IHVuZGVmaW5lZCAmJiBmb3JiaWRkZW5GaWVsZCBpbiBpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IobmFtZSArICc6IGluY29ycmVjdCBpbnZvY2F0aW9uIScpO1xuICB9IHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4taW5zdGFuY2UuanNcbi8vIG1vZHVsZSBpZCA9IDc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///74\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(15);\nvar call = __webpack_require__(76);\nvar isArrayIter = __webpack_require__(77);\nvar anObject = __webpack_require__(4);\nvar toLength = __webpack_require__(38);\nvar getIterFn = __webpack_require__(78);\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qcz8zNTZiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgQlJFQUsgPSB7fTtcbnZhciBSRVRVUk4gPSB7fTtcbnZhciBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0LCBJVEVSQVRPUikge1xuICB2YXIgaXRlckZuID0gSVRFUkFUT1IgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSk7XG4gIHZhciBmID0gY3R4KGZuLCB0aGF0LCBlbnRyaWVzID8gMiA6IDEpO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0O1xuICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXRlcmFibGUgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcbiAgLy8gZmFzdCBjYXNlIGZvciBhcnJheXMgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yXG4gIGlmIChpc0FycmF5SXRlcihpdGVyRm4pKSBmb3IgKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgcmVzdWx0ID0gZW50cmllcyA/IGYoYW5PYmplY3Qoc3RlcCA9IGl0ZXJhYmxlW2luZGV4XSlbMF0sIHN0ZXBbMV0pIDogZihpdGVyYWJsZVtpbmRleF0pO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9IGVsc2UgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOykge1xuICAgIHJlc3VsdCA9IGNhbGwoaXRlcmF0b3IsIGYsIHN0ZXAudmFsdWUsIGVudHJpZXMpO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9XG59O1xuZXhwb3J0cy5CUkVBSyA9IEJSRUFLO1xuZXhwb3J0cy5SRVRVUk4gPSBSRVRVUk47XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZm9yLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA3NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///75\n")},function(module,exports,__webpack_require__){eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(4);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qcz85YWM1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcykge1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qc1xuLy8gbW9kdWxlIGlkID0gNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///76\n")},function(module,exports,__webpack_require__){eval("// check on default Array iterator\nvar Iterators = __webpack_require__(17);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanM/MzIxYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1hcnJheS1pdGVyLmpzXG4vLyBtb2R1bGUgaWQgPSA3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///77\n")},function(module,exports,__webpack_require__){eval("var classof = __webpack_require__(49);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar Iterators = __webpack_require__(17);\nmodule.exports = __webpack_require__(0).getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzP2RkZmIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanNcbi8vIG1vZHVsZSBpZCA9IDc4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///78\n")},function(module,exports){eval("// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ludm9rZS5qcz85MjdiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhc3QgYXBwbHksIGh0dHA6Ly9qc3BlcmYubG5raXQuY29tL2Zhc3QtYXBwbHkvNVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIGFyZ3MsIHRoYXQpIHtcbiAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gdW4gPyBmbigpXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQpO1xuICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gIH0gcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3MpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pbnZva2UuanNcbi8vIG1vZHVsZSBpZCA9IDc5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///79\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar macrotask = __webpack_require__(51).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(16)(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qcz9mMzYzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBtYWNyb3Rhc2sgPSByZXF1aXJlKCcuL190YXNrJykuc2V0O1xudmFyIE9ic2VydmVyID0gZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIFByb21pc2UgPSBnbG9iYWwuUHJvbWlzZTtcbnZhciBpc05vZGUgPSByZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaGVhZCwgbGFzdCwgbm90aWZ5O1xuXG4gIHZhciBmbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50LCBmbjtcbiAgICBpZiAoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGhlYWQpIHtcbiAgICAgIGZuID0gaGVhZC5mbjtcbiAgICAgIGhlYWQgPSBoZWFkLm5leHQ7XG4gICAgICB0cnkge1xuICAgICAgICBmbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoaGVhZCkgbm90aWZ5KCk7XG4gICAgICAgIGVsc2UgbGFzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LmVudGVyKCk7XG4gIH07XG5cbiAgLy8gTm9kZS5qc1xuICBpZiAoaXNOb2RlKSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XG4gICAgfTtcbiAgLy8gYnJvd3NlcnMgd2l0aCBNdXRhdGlvbk9ic2VydmVyLCBleGNlcHQgaU9TIFNhZmFyaSAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMzlcbiAgfSBlbHNlIGlmIChPYnNlcnZlciAmJiAhKGdsb2JhbC5uYXZpZ2F0b3IgJiYgZ2xvYmFsLm5hdmlnYXRvci5zdGFuZGFsb25lKSkge1xuICAgIHZhciB0b2dnbGUgPSB0cnVlO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG5ldyBPYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7IGNoYXJhY3RlckRhdGE6IHRydWUgfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYgKFByb21pc2UgJiYgUHJvbWlzZS5yZXNvbHZlKSB7XG4gICAgLy8gUHJvbWlzZS5yZXNvbHZlIHdpdGhvdXQgYW4gYXJndW1lbnQgdGhyb3dzIGFuIGVycm9yIGluIExHIFdlYk9TIDJcbiAgICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb21pc2UudGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcbiAgLy8gLSBzZXRJbW1lZGlhdGVcbiAgLy8gLSBNZXNzYWdlQ2hhbm5lbFxuICAvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIHN0cmFuZ2UgSUUgKyB3ZWJwYWNrIGRldiBzZXJ2ZXIgYnVnIC0gdXNlIC5jYWxsKGdsb2JhbClcbiAgICAgIG1hY3JvdGFzay5jYWxsKGdsb2JhbCwgZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgdmFyIHRhc2sgPSB7IGZuOiBmbiwgbmV4dDogdW5kZWZpbmVkIH07XG4gICAgaWYgKGxhc3QpIGxhc3QubmV4dCA9IHRhc2s7XG4gICAgaWYgKCFoZWFkKSB7XG4gICAgICBoZWFkID0gdGFzaztcbiAgICAgIG5vdGlmeSgpO1xuICAgIH0gbGFzdCA9IHRhc2s7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///80\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VzZXItYWdlbnQuanM/ODk0NiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsLm5hdmlnYXRvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCAnJztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191c2VyLWFnZW50LmpzXG4vLyBtb2R1bGUgaWQgPSA4MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///81\n")},function(module,exports,__webpack_require__){eval("var hide = __webpack_require__(9);\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcz9jNDdmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGlmIChzYWZlICYmIHRhcmdldFtrZXldKSB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgIGVsc2UgaGlkZSh0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9IHJldHVybiB0YXJnZXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qc1xuLy8gbW9kdWxlIGlkID0gODJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///82\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar dP = __webpack_require__(7);\nvar DESCRIPTORS = __webpack_require__(5);\nvar SPECIES = __webpack_require__(2)('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1zcGVjaWVzLmpzPzZkMWEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgQyA9IHR5cGVvZiBjb3JlW0tFWV0gPT0gJ2Z1bmN0aW9uJyA/IGNvcmVbS0VZXSA6IGdsb2JhbFtLRVldO1xuICBpZiAoREVTQ1JJUFRPUlMgJiYgQyAmJiAhQ1tTUEVDSUVTXSkgZFAuZihDLCBTUEVDSUVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDgzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///83\n")},function(module,exports,__webpack_require__){eval("var ITERATOR = __webpack_require__(2)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzPzc1OGQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTtcbiAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24gKCkgeyBTQUZFX0NMT1NJTkcgPSB0cnVlOyB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7XG4gIGlmICghc2tpcENsb3NpbmcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBbN107XG4gICAgdmFyIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9O1xuICAgIGFycltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBzYWZlO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qc1xuLy8gbW9kdWxlIGlkID0gODRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///84\n")},function(module,exports,__webpack_require__){"use strict";eval("// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar global = __webpack_require__(1);\nvar speciesConstructor = __webpack_require__(50);\nvar promiseResolve = __webpack_require__(53);\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseS5qcz8xMmEwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtZmluYWxseVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1Byb21pc2UnLCB7ICdmaW5hbGx5JzogZnVuY3Rpb24gKG9uRmluYWxseSkge1xuICB2YXIgQyA9IHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBjb3JlLlByb21pc2UgfHwgZ2xvYmFsLlByb21pc2UpO1xuICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBvbkZpbmFsbHkgPT0gJ2Z1bmN0aW9uJztcbiAgcmV0dXJuIHRoaXMudGhlbihcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKHgpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB4OyB9KTtcbiAgICB9IDogb25GaW5hbGx5LFxuICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgdGhyb3cgZTsgfSk7XG4gICAgfSA6IG9uRmluYWxseVxuICApO1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHkuanNcbi8vIG1vZHVsZSBpZCA9IDg1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///85\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(3);\nvar newPromiseCapability = __webpack_require__(32);\nvar perform = __webpack_require__(52);\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzPzhjYTUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS10cnlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4vX3BlcmZvcm0nKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdQcm9taXNlJywgeyAndHJ5JzogZnVuY3Rpb24gKGNhbGxiYWNrZm4pIHtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZih0aGlzKTtcbiAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oY2FsbGJhY2tmbik7XG4gIChyZXN1bHQuZSA/IHByb21pc2VDYXBhYmlsaXR5LnJlamVjdCA6IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmUpKHJlc3VsdC52KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzXG4vLyBtb2R1bGUgaWQgPSA4NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///86\n")},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n "use strict";\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof module === \'object\' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n "use strict";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = "undefined";\n\n var logMethods = [\n "trace",\n "debug",\n "info",\n "warn",\n "error"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === \'function\') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === \'debug\') {\n methodName = \'log\';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, \'log\');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn\'t present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = "loglevel";\n if (name) {\n storageKey += ":" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || \'silent\').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + "=" + levelName + ";";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + "=");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { "TRACE": 0, "DEBUG": 1, "INFO": 2, "WARN": 3,\n "ERROR": 4, "SILENT": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return "No console available for logging";\n }\n } else {\n throw "log.setLevel() called with invalid level: " + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? "WARN" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== "string" || name === "") {\n throw new TypeError("You must supply a name when creating a logger.");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9nbGV2ZWwvbGliL2xvZ2xldmVsLmpzPzA2ZmMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiogbG9nbGV2ZWwgLSBodHRwczovL2dpdGh1Yi5jb20vcGltdGVycnkvbG9nbGV2ZWxcbipcbiogQ29weXJpZ2h0IChjKSAyMDEzIFRpbSBQZXJyeVxuKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4qL1xuKGZ1bmN0aW9uIChyb290LCBkZWZpbml0aW9uKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgICBkZWZpbmUoZGVmaW5pdGlvbik7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGRlZmluaXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByb290LmxvZyA9IGRlZmluaXRpb24oKTtcbiAgICB9XG59KHRoaXMsIGZ1bmN0aW9uICgpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIC8vIFNsaWdodGx5IGR1YmlvdXMgdHJpY2tzIHRvIGN1dCBkb3duIG1pbmltaXplZCBmaWxlIHNpemVcbiAgICB2YXIgbm9vcCA9IGZ1bmN0aW9uKCkge307XG4gICAgdmFyIHVuZGVmaW5lZFR5cGUgPSBcInVuZGVmaW5lZFwiO1xuXG4gICAgdmFyIGxvZ01ldGhvZHMgPSBbXG4gICAgICAgIFwidHJhY2VcIixcbiAgICAgICAgXCJkZWJ1Z1wiLFxuICAgICAgICBcImluZm9cIixcbiAgICAgICAgXCJ3YXJuXCIsXG4gICAgICAgIFwiZXJyb3JcIlxuICAgIF07XG5cbiAgICAvLyBDcm9zcy1icm93c2VyIGJpbmQgZXF1aXZhbGVudCB0aGF0IHdvcmtzIGF0IGxlYXN0IGJhY2sgdG8gSUU2XG4gICAgZnVuY3Rpb24gYmluZE1ldGhvZChvYmosIG1ldGhvZE5hbWUpIHtcbiAgICAgICAgdmFyIG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTtcbiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QuYmluZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIG1ldGhvZC5iaW5kKG9iaik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5jYWxsKG1ldGhvZCwgb2JqKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBNaXNzaW5nIGJpbmQgc2hpbSBvciBJRTggKyBNb2Rlcm5penIsIGZhbGxiYWNrIHRvIHdyYXBwaW5nXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmFwcGx5KG1ldGhvZCwgW29iaiwgYXJndW1lbnRzXSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJ1aWxkIHRoZSBiZXN0IGxvZ2dpbmcgbWV0aG9kIHBvc3NpYmxlIGZvciB0aGlzIGVudlxuICAgIC8vIFdoZXJldmVyIHBvc3NpYmxlIHdlIHdhbnQgdG8gYmluZCwgbm90IHdyYXAsIHRvIHByZXNlcnZlIHN0YWNrIHRyYWNlc1xuICAgIGZ1bmN0aW9uIHJlYWxNZXRob2QobWV0aG9kTmFtZSkge1xuICAgICAgICBpZiAobWV0aG9kTmFtZSA9PT0gJ2RlYnVnJykge1xuICAgICAgICAgICAgbWV0aG9kTmFtZSA9ICdsb2cnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE5vIG1ldGhvZCBwb3NzaWJsZSwgZm9yIG5vdyAtIGZpeGVkIGxhdGVyIGJ5IGVuYWJsZUxvZ2dpbmdXaGVuQ29uc29sZUFycml2ZXNcbiAgICAgICAgfSBlbHNlIGlmIChjb25zb2xlW21ldGhvZE5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBiaW5kTWV0aG9kKGNvbnNvbGUsIG1ldGhvZE5hbWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnNvbGUubG9nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBiaW5kTWV0aG9kKGNvbnNvbGUsICdsb2cnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBub29wO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlc2UgcHJpdmF0ZSBmdW5jdGlvbnMgYWx3YXlzIG5lZWQgYHRoaXNgIHRvIGJlIHNldCBwcm9wZXJseVxuXG4gICAgZnVuY3Rpb24gcmVwbGFjZUxvZ2dpbmdNZXRob2RzKGxldmVsLCBsb2dnZXJOYW1lKSB7XG4gICAgICAgIC8qanNoaW50IHZhbGlkdGhpczp0cnVlICovXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbG9nTWV0aG9kcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIG1ldGhvZE5hbWUgPSBsb2dNZXRob2RzW2ldO1xuICAgICAgICAgICAgdGhpc1ttZXRob2ROYW1lXSA9IChpIDwgbGV2ZWwpID9cbiAgICAgICAgICAgICAgICBub29wIDpcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZEZhY3RvcnkobWV0aG9kTmFtZSwgbGV2ZWwsIGxvZ2dlck5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmaW5lIGxvZy5sb2cgYXMgYW4gYWxpYXMgZm9yIGxvZy5kZWJ1Z1xuICAgICAgICB0aGlzLmxvZyA9IHRoaXMuZGVidWc7XG4gICAgfVxuXG4gICAgLy8gSW4gb2xkIElFIHZlcnNpb25zLCB0aGUgY29uc29sZSBpc24ndCBwcmVzZW50IHVudGlsIHlvdSBmaXJzdCBvcGVuIGl0LlxuICAgIC8vIFdlIGJ1aWxkIHJlYWxNZXRob2QoKSByZXBsYWNlbWVudHMgaGVyZSB0aGF0IHJlZ2VuZXJhdGUgbG9nZ2luZyBtZXRob2RzXG4gICAgZnVuY3Rpb24gZW5hYmxlTG9nZ2luZ1doZW5Db25zb2xlQXJyaXZlcyhtZXRob2ROYW1lLCBsZXZlbCwgbG9nZ2VyTmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICAgICAgcmVwbGFjZUxvZ2dpbmdNZXRob2RzLmNhbGwodGhpcywgbGV2ZWwsIGxvZ2dlck5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXNbbWV0aG9kTmFtZV0uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCeSBkZWZhdWx0LCB3ZSB1c2UgY2xvc2VseSBib3VuZCByZWFsIG1ldGhvZHMgd2hlcmV2ZXIgcG9zc2libGUsIGFuZFxuICAgIC8vIG90aGVyd2lzZSB3ZSB3YWl0IGZvciBhIGNvbnNvbGUgdG8gYXBwZWFyLCBhbmQgdGhlbiB0cnkgYWdhaW4uXG4gICAgZnVuY3Rpb24gZGVmYXVsdE1ldGhvZEZhY3RvcnkobWV0aG9kTmFtZSwgbGV2ZWwsIGxvZ2dlck5hbWUpIHtcbiAgICAgICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cbiAgICAgICAgcmV0dXJuIHJlYWxNZXRob2QobWV0aG9kTmFtZSkgfHxcbiAgICAgICAgICAgICAgIGVuYWJsZUxvZ2dpbmdXaGVuQ29uc29sZUFycml2ZXMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBMb2dnZXIobmFtZSwgZGVmYXVsdExldmVsLCBmYWN0b3J5KSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgY3VycmVudExldmVsO1xuICAgICAgdmFyIHN0b3JhZ2VLZXkgPSBcImxvZ2xldmVsXCI7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICBzdG9yYWdlS2V5ICs9IFwiOlwiICsgbmFtZTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcGVyc2lzdExldmVsSWZQb3NzaWJsZShsZXZlbE51bSkge1xuICAgICAgICAgIHZhciBsZXZlbE5hbWUgPSAobG9nTWV0aG9kc1tsZXZlbE51bV0gfHwgJ3NpbGVudCcpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gdW5kZWZpbmVkVHlwZSkgcmV0dXJuO1xuXG4gICAgICAgICAgLy8gVXNlIGxvY2FsU3RvcmFnZSBpZiBhdmFpbGFibGVcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlW3N0b3JhZ2VLZXldID0gbGV2ZWxOYW1lO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuXG4gICAgICAgICAgLy8gVXNlIHNlc3Npb24gY29va2llIGFzIGZhbGxiYWNrXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgd2luZG93LmRvY3VtZW50LmNvb2tpZSA9XG4gICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHN0b3JhZ2VLZXkpICsgXCI9XCIgKyBsZXZlbE5hbWUgKyBcIjtcIjtcbiAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGdldFBlcnNpc3RlZExldmVsKCkge1xuICAgICAgICAgIHZhciBzdG9yZWRMZXZlbDtcblxuICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSB1bmRlZmluZWRUeXBlKSByZXR1cm47XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBzdG9yZWRMZXZlbCA9IHdpbmRvdy5sb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV07XG4gICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuXG4gICAgICAgICAgLy8gRmFsbGJhY2sgdG8gY29va2llcyBpZiBsb2NhbCBzdG9yYWdlIGdpdmVzIHVzIG5vdGhpbmdcbiAgICAgICAgICBpZiAodHlwZW9mIHN0b3JlZExldmVsID09PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICB2YXIgY29va2llID0gd2luZG93LmRvY3VtZW50LmNvb2tpZTtcbiAgICAgICAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IGNvb2tpZS5pbmRleE9mKFxuICAgICAgICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzdG9yYWdlS2V5KSArIFwiPVwiKTtcbiAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbiAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yZWRMZXZlbCA9IC9eKFteO10rKS8uZXhlYyhjb29raWUuc2xpY2UobG9jYXRpb24pKVsxXTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHRoZSBzdG9yZWQgbGV2ZWwgaXMgbm90IHZhbGlkLCB0cmVhdCBpdCBhcyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG4gICAgICAgICAgaWYgKHNlbGYubGV2ZWxzW3N0b3JlZExldmVsXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHN0b3JlZExldmVsID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBzdG9yZWRMZXZlbDtcbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgICAqXG4gICAgICAgKiBQdWJsaWMgbG9nZ2VyIEFQSSAtIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGltdGVycnkvbG9nbGV2ZWwgZm9yIGRldGFpbHNcbiAgICAgICAqXG4gICAgICAgKi9cblxuICAgICAgc2VsZi5uYW1lID0gbmFtZTtcblxuICAgICAgc2VsZi5sZXZlbHMgPSB7IFwiVFJBQ0VcIjogMCwgXCJERUJVR1wiOiAxLCBcIklORk9cIjogMiwgXCJXQVJOXCI6IDMsXG4gICAgICAgICAgXCJFUlJPUlwiOiA0LCBcIlNJTEVOVFwiOiA1fTtcblxuICAgICAgc2VsZi5tZXRob2RGYWN0b3J5ID0gZmFjdG9yeSB8fCBkZWZhdWx0TWV0aG9kRmFjdG9yeTtcblxuICAgICAgc2VsZi5nZXRMZXZlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gY3VycmVudExldmVsO1xuICAgICAgfTtcblxuICAgICAgc2VsZi5zZXRMZXZlbCA9IGZ1bmN0aW9uIChsZXZlbCwgcGVyc2lzdCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09IFwic3RyaW5nXCIgJiYgc2VsZi5sZXZlbHNbbGV2ZWwudG9VcHBlckNhc2UoKV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsZXZlbCA9IHNlbGYubGV2ZWxzW2xldmVsLnRvVXBwZXJDYXNlKCldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIGxldmVsID09PSBcIm51bWJlclwiICYmIGxldmVsID49IDAgJiYgbGV2ZWwgPD0gc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRMZXZlbCA9IGxldmVsO1xuICAgICAgICAgICAgICBpZiAocGVyc2lzdCAhPT0gZmFsc2UpIHsgIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICAgICAgICAgICAgICAgIHBlcnNpc3RMZXZlbElmUG9zc2libGUobGV2ZWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlcGxhY2VMb2dnaW5nTWV0aG9kcy5jYWxsKHNlbGYsIGxldmVsLCBuYW1lKTtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSB1bmRlZmluZWRUeXBlICYmIGxldmVsIDwgc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCJObyBjb25zb2xlIGF2YWlsYWJsZSBmb3IgbG9nZ2luZ1wiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhyb3cgXCJsb2cuc2V0TGV2ZWwoKSBjYWxsZWQgd2l0aCBpbnZhbGlkIGxldmVsOiBcIiArIGxldmVsO1xuICAgICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHNlbGYuc2V0RGVmYXVsdExldmVsID0gZnVuY3Rpb24gKGxldmVsKSB7XG4gICAgICAgICAgaWYgKCFnZXRQZXJzaXN0ZWRMZXZlbCgpKSB7XG4gICAgICAgICAgICAgIHNlbGYuc2V0TGV2ZWwobGV2ZWwsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBzZWxmLmVuYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlRSQUNFLCBwZXJzaXN0KTtcbiAgICAgIH07XG5cbiAgICAgIHNlbGYuZGlzYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlNJTEVOVCwgcGVyc2lzdCk7XG4gICAgICB9O1xuXG4gICAgICAvLyBJbml0aWFsaXplIHdpdGggdGhlIHJpZ2h0IGxldmVsXG4gICAgICB2YXIgaW5pdGlhbExldmVsID0gZ2V0UGVyc2lzdGVkTGV2ZWwoKTtcbiAgICAgIGlmIChpbml0aWFsTGV2ZWwgPT0gbnVsbCkge1xuICAgICAgICAgIGluaXRpYWxMZXZlbCA9IGRlZmF1bHRMZXZlbCA9PSBudWxsID8gXCJXQVJOXCIgOiBkZWZhdWx0TGV2ZWw7XG4gICAgICB9XG4gICAgICBzZWxmLnNldExldmVsKGluaXRpYWxMZXZlbCwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICpcbiAgICAgKiBUb3AtbGV2ZWwgQVBJXG4gICAgICpcbiAgICAgKi9cblxuICAgIHZhciBkZWZhdWx0TG9nZ2VyID0gbmV3IExvZ2dlcigpO1xuXG4gICAgdmFyIF9sb2dnZXJzQnlOYW1lID0ge307XG4gICAgZGVmYXVsdExvZ2dlci5nZXRMb2dnZXIgPSBmdW5jdGlvbiBnZXRMb2dnZXIobmFtZSkge1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgIT09IFwic3RyaW5nXCIgfHwgbmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJZb3UgbXVzdCBzdXBwbHkgYSBuYW1lIHdoZW4gY3JlYXRpbmcgYSBsb2dnZXIuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvZ2dlciA9IF9sb2dnZXJzQnlOYW1lW25hbWVdO1xuICAgICAgICBpZiAoIWxvZ2dlcikge1xuICAgICAgICAgIGxvZ2dlciA9IF9sb2dnZXJzQnlOYW1lW25hbWVdID0gbmV3IExvZ2dlcihcbiAgICAgICAgICAgIG5hbWUsIGRlZmF1bHRMb2dnZXIuZ2V0TGV2ZWwoKSwgZGVmYXVsdExvZ2dlci5tZXRob2RGYWN0b3J5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH07XG5cbiAgICAvLyBHcmFiIHRoZSBjdXJyZW50IGdsb2JhbCBsb2cgdmFyaWFibGUgaW4gY2FzZSBvZiBvdmVyd3JpdGVcbiAgICB2YXIgX2xvZyA9ICh0eXBlb2Ygd2luZG93ICE9PSB1bmRlZmluZWRUeXBlKSA/IHdpbmRvdy5sb2cgOiB1bmRlZmluZWQ7XG4gICAgZGVmYXVsdExvZ2dlci5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSB1bmRlZmluZWRUeXBlICYmXG4gICAgICAgICAgICAgICB3aW5kb3cubG9nID09PSBkZWZhdWx0TG9nZ2VyKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9nID0gX2xvZztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWZhdWx0TG9nZ2VyO1xuICAgIH07XG5cbiAgICBkZWZhdWx0TG9nZ2VyLmdldExvZ2dlcnMgPSBmdW5jdGlvbiBnZXRMb2dnZXJzKCkge1xuICAgICAgICByZXR1cm4gX2xvZ2dlcnNCeU5hbWU7XG4gICAgfTtcblxuICAgIHJldHVybiBkZWZhdWx0TG9nZ2VyO1xufSkpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvbG9nbGV2ZWwvbGliL2xvZ2xldmVsLmpzXG4vLyBtb2R1bGUgaWQgPSA4N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///87\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(89);\nmodule.exports = __webpack_require__(0).Object.getPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzdkMmUiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gODhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///88\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(30);\nvar $getPrototypeOf = __webpack_require__(47);\n\n__webpack_require__(39)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzPzJhMWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjkgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciAkZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnZ2V0UHJvdG90eXBlT2YnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZihpdCkge1xuICAgIHJldHVybiAkZ2V0UHJvdG90eXBlT2YodG9PYmplY3QoaXQpKTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA4OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///89\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(91), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvci5qcz82NzM4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA5MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///90\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(43);\n__webpack_require__(48);\nmodule.exports = __webpack_require__(33).f('iterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qcz9mZTdlIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX3drcy1leHQnKS5mKCdpdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gOTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///91\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(93), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC5qcz9lNTA1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2xcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA5MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///92\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(94);\n__webpack_require__(42);\n__webpack_require__(99);\n__webpack_require__(100);\nmodule.exports = __webpack_require__(0).Symbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qcz8wNzA3Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN5bWJvbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuU3ltYm9sO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gOTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///93\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(1);\nvar has = __webpack_require__(8);\nvar DESCRIPTORS = __webpack_require__(5);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(45);\nvar META = __webpack_require__(95).KEY;\nvar $fails = __webpack_require__(13);\nvar shared = __webpack_require__(28);\nvar setToStringTag = __webpack_require__(24);\nvar uid = __webpack_require__(20);\nvar wks = __webpack_require__(2);\nvar wksExt = __webpack_require__(33);\nvar wksDefine = __webpack_require__(34);\nvar enumKeys = __webpack_require__(96);\nvar isArray = __webpack_require__(97);\nvar anObject = __webpack_require__(4);\nvar isObject = __webpack_require__(6);\nvar toIObject = __webpack_require__(10);\nvar toPrimitive = __webpack_require__(26);\nvar createDesc = __webpack_require__(19);\nvar _create = __webpack_require__(31);\nvar gOPNExt = __webpack_require__(98);\nvar $GOPD = __webpack_require__(40);\nvar $DP = __webpack_require__(7);\nvar $keys = __webpack_require__(21);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(56).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(35).f = $propertyIsEnumerable;\n __webpack_require__(55).f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(14)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(9)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qcz83ZDY3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBNRVRBID0gcmVxdWlyZSgnLi9fbWV0YScpLktFWTtcbnZhciAkZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgd2tzRGVmaW5lID0gcmVxdWlyZSgnLi9fd2tzLWRlZmluZScpO1xudmFyIGVudW1LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1rZXlzJyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgX2NyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBnT1BORXh0ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4tZXh0Jyk7XG52YXIgJEdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyICREUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BEID0gJEdPUEQuZjtcbnZhciBkUCA9ICREUC5mO1xudmFyIGdPUE4gPSBnT1BORXh0LmY7XG52YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgJEpTT04gPSBnbG9iYWwuSlNPTjtcbnZhciBfc3RyaW5naWZ5ID0gJEpTT04gJiYgJEpTT04uc3RyaW5naWZ5O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEhJRERFTiA9IHdrcygnX2hpZGRlbicpO1xudmFyIFRPX1BSSU1JVElWRSA9IHdrcygndG9QcmltaXRpdmUnKTtcbnZhciBpc0VudW0gPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBTeW1ib2xSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXJlZ2lzdHJ5Jyk7XG52YXIgQWxsU3ltYm9scyA9IHNoYXJlZCgnc3ltYm9scycpO1xudmFyIE9QU3ltYm9scyA9IHNoYXJlZCgnb3Atc3ltYm9scycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0W1BST1RPVFlQRV07XG52YXIgVVNFX05BVElWRSA9IHR5cGVvZiAkU3ltYm9sID09ICdmdW5jdGlvbic7XG52YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0O1xuLy8gRG9uJ3QgdXNlIHNldHRlcnMgaW4gUXQgU2NyaXB0LCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTczXG52YXIgc2V0dGVyID0gIVFPYmplY3QgfHwgIVFPYmplY3RbUFJPVE9UWVBFXSB8fCAhUU9iamVjdFtQUk9UT1RZUEVdLmZpbmRDaGlsZDtcblxuLy8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG52YXIgc2V0U3ltYm9sRGVzYyA9IERFU0NSSVBUT1JTICYmICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRQKHRoaXMsICdhJywgeyB2YWx1ZTogNyB9KS5hOyB9XG4gIH0pKS5hICE9IDc7XG59KSA/IGZ1bmN0aW9uIChpdCwga2V5LCBEKSB7XG4gIHZhciBwcm90b0Rlc2MgPSBnT1BEKE9iamVjdFByb3RvLCBrZXkpO1xuICBpZiAocHJvdG9EZXNjKSBkZWxldGUgT2JqZWN0UHJvdG9ba2V5XTtcbiAgZFAoaXQsIGtleSwgRCk7XG4gIGlmIChwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKSBkUChPYmplY3RQcm90bywga2V5LCBwcm90b0Rlc2MpO1xufSA6IGRQO1xuXG52YXIgd3JhcCA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbFtQUk9UT1RZUEVdKTtcbiAgc3ltLl9rID0gdGFnO1xuICByZXR1cm4gc3ltO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX05BVElWRSAmJiB0eXBlb2YgJFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJyA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgaW5zdGFuY2VvZiAkU3ltYm9sO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIEQpIHtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90bykgJGRlZmluZVByb3BlcnR5KE9QU3ltYm9scywga2V5LCBEKTtcbiAgYW5PYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBhbk9iamVjdChEKTtcbiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7XG4gICAgaWYgKCFELmVudW1lcmFibGUpIHtcbiAgICAgIGlmICghaGFzKGl0LCBISURERU4pKSBkUChpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG4gICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkgaXRbSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBEID0gX2NyZWF0ZShELCB7IGVudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpIH0pO1xuICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG4gIH0gcmV0dXJuIGRQKGl0LCBrZXksIEQpO1xufTtcbnZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoaXQsIFApIHtcbiAgYW5PYmplY3QoaXQpO1xuICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpO1xuICB2YXIgaSA9IDA7XG4gIHZhciBsID0ga2V5cy5sZW5ndGg7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsID4gaSkgJGRlZmluZVByb3BlcnR5KGl0LCBrZXkgPSBrZXlzW2krK10sIFBba2V5XSk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpdCwgUCkge1xuICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG59O1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSkge1xuICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpO1xuICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XSA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHtcbiAgaXQgPSB0b0lPYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm47XG4gIHZhciBEID0gZ09QRChpdCwga2V5KTtcbiAgaWYgKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSkgRC5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgcmV0dXJuIEQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICB2YXIgbmFtZXMgPSBnT1BOKHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoIWhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiBrZXkgIT0gSElEREVOICYmIGtleSAhPSBNRVRBKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgdmFyIElTX09QID0gaXQgPT09IE9iamVjdFByb3RvO1xuICB2YXIgbmFtZXMgPSBnT1BOKElTX09QID8gT1BTeW1ib2xzIDogdG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYgKElTX09QID8gaGFzKE9iamVjdFByb3RvLCBrZXkpIDogdHJ1ZSkpIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIDE5LjQuMS4xIFN5bWJvbChbZGVzY3JpcHRpb25dKVxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKSB7XG4gICAgaWYgKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKSB0aHJvdyBUeXBlRXJyb3IoJ1N5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciEnKTtcbiAgICB2YXIgdGFnID0gdWlkKGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcbiAgICB2YXIgJHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvKSAkc2V0LmNhbGwoT1BTeW1ib2xzLCB2YWx1ZSk7XG4gICAgICBpZiAoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSkgdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcbiAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG4gICAgfTtcbiAgICBpZiAoREVTQ1JJUFRPUlMgJiYgc2V0dGVyKSBzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6ICRzZXQgfSk7XG4gICAgcmV0dXJuIHdyYXAodGFnKTtcbiAgfTtcbiAgcmVkZWZpbmUoJFN5bWJvbFtQUk9UT1RZUEVdLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faztcbiAgfSk7XG5cbiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICREUC5mID0gJGRlZmluZVByb3BlcnR5O1xuICByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmYgPSBnT1BORXh0LmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpLmYgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJykuZiA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbiAgaWYgKERFU0NSSVBUT1JTICYmICFyZXF1aXJlKCcuL19saWJyYXJ5JykpIHtcbiAgICByZWRlZmluZShPYmplY3RQcm90bywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB0cnVlKTtcbiAgfVxuXG4gIHdrc0V4dC5mID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gd3JhcCh3a3MobmFtZSkpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFN5bWJvbDogJFN5bWJvbCB9KTtcblxuZm9yICh2YXIgZXM2U3ltYm9scyA9IChcbiAgLy8gMTkuNC4yLjIsIDE5LjQuMi4zLCAxOS40LjIuNCwgMTkuNC4yLjYsIDE5LjQuMi44LCAxOS40LjIuOSwgMTkuNC4yLjEwLCAxOS40LjIuMTEsIDE5LjQuMi4xMiwgMTkuNC4yLjEzLCAxOS40LjIuMTRcbiAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJ1xuKS5zcGxpdCgnLCcpLCBqID0gMDsgZXM2U3ltYm9scy5sZW5ndGggPiBqOyl3a3MoZXM2U3ltYm9sc1tqKytdKTtcblxuZm9yICh2YXIgd2VsbEtub3duU3ltYm9scyA9ICRrZXlzKHdrcy5zdG9yZSksIGsgPSAwOyB3ZWxsS25vd25TeW1ib2xzLmxlbmd0aCA+IGs7KSB3a3NEZWZpbmUod2VsbEtub3duU3ltYm9sc1trKytdKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ1N5bWJvbCcsIHtcbiAgLy8gMTkuNC4yLjEgU3ltYm9sLmZvcihrZXkpXG4gICdmb3InOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGhhcyhTeW1ib2xSZWdpc3RyeSwga2V5ICs9ICcnKVxuICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG4gICAgICA6IFN5bWJvbFJlZ2lzdHJ5W2tleV0gPSAkU3ltYm9sKGtleSk7XG4gIH0sXG4gIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihzeW0pIHtcbiAgICBpZiAoIWlzU3ltYm9sKHN5bSkpIHRocm93IFR5cGVFcnJvcihzeW0gKyAnIGlzIG5vdCBhIHN5bWJvbCEnKTtcbiAgICBmb3IgKHZhciBrZXkgaW4gU3ltYm9sUmVnaXN0cnkpIGlmIChTeW1ib2xSZWdpc3RyeVtrZXldID09PSBzeW0pIHJldHVybiBrZXk7XG4gIH0sXG4gIHVzZVNldHRlcjogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSB0cnVlOyB9LFxuICB1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gZmFsc2U7IH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0Jywge1xuICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4gIGNyZWF0ZTogJGNyZWF0ZSxcbiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4gIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG4gIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG4gIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgUyA9ICRTeW1ib2woKTtcbiAgLy8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge31cbiAgLy8gV2ViS2l0IGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyBudWxsXG4gIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gIHJldHVybiBfc3RyaW5naWZ5KFtTXSkgIT0gJ1tudWxsXScgfHwgX3N0cmluZ2lmeSh7IGE6IFMgfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9Jztcbn0pKSwgJ0pTT04nLCB7XG4gIHN0cmluZ2lmeTogZnVuY3Rpb24gc3RyaW5naWZ5KGl0KSB7XG4gICAgdmFyIGFyZ3MgPSBbaXRdO1xuICAgIHZhciBpID0gMTtcbiAgICB2YXIgcmVwbGFjZXIsICRyZXBsYWNlcjtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgJHJlcGxhY2VyID0gcmVwbGFjZXIgPSBhcmdzWzFdO1xuICAgIGlmICghaXNPYmplY3QocmVwbGFjZXIpICYmIGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKSByZXR1cm47IC8vIElFOCByZXR1cm5zIHN0cmluZyBvbiB1bmRlZmluZWRcbiAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mICRyZXBsYWNlciA9PSAnZnVuY3Rpb24nKSB2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgaWYgKCFpc1N5bWJvbCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIGFyZ3NbMV0gPSByZXBsYWNlcjtcbiAgICByZXR1cm4gX3N0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJncyk7XG4gIH1cbn0pO1xuXG4vLyAxOS40LjMuNCBTeW1ib2wucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdKGhpbnQpXG4kU3ltYm9sW1BST1RPVFlQRV1bVE9fUFJJTUlUSVZFXSB8fCByZXF1aXJlKCcuL19oaWRlJykoJFN5bWJvbFtQUk9UT1RZUEVdLCBUT19QUklNSVRJVkUsICRTeW1ib2xbUFJPVE9UWVBFXS52YWx1ZU9mKTtcbi8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcbi8vIDIwLjIuMS45IE1hdGhbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7XG4vLyAyNC4zLjMgSlNPTltAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoZ2xvYmFsLkpTT04sICdKU09OJywgdHJ1ZSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA5NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///94\n")},function(module,exports,__webpack_require__){eval("var META = __webpack_require__(20)('meta');\nvar isObject = __webpack_require__(6);\nvar has = __webpack_require__(8);\nvar setDesc = __webpack_require__(7).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(13)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanM/ZDNhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTUVUQSA9IHJlcXVpcmUoJy4vX3VpZCcpKCdtZXRhJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBzZXREZXNjID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBpZCA9IDA7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBGUkVFWkUgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7XG4gIHNldERlc2MoaXQsIE1FVEEsIHsgdmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IH0pO1xufTtcbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuICdFJztcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gb2JqZWN0IElEXG4gIH0gcmV0dXJuIGl0W01FVEFdLmk7XG59O1xudmFyIGdldFdlYWsgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuIHRydWU7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gcmV0dXJuIGl0W01FVEFdLnc7XG59O1xuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaRSAmJiBtZXRhLk5FRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzKGl0LCBNRVRBKSkgc2V0TWV0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgbWV0YSA9IG1vZHVsZS5leHBvcnRzID0ge1xuICBLRVk6IE1FVEEsXG4gIE5FRUQ6IGZhbHNlLFxuICBmYXN0S2V5OiBmYXN0S2V5LFxuICBnZXRXZWFrOiBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWV0YS5qc1xuLy8gbW9kdWxlIGlkID0gOTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///95\n")},function(module,exports,__webpack_require__){eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(21);\nvar gOPS = __webpack_require__(55);\nvar pIE = __webpack_require__(35);\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0ta2V5cy5qcz81ZGNlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGFsbCBlbnVtZXJhYmxlIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBzeW1ib2xzXG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHJlc3VsdCA9IGdldEtleXMoaXQpO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgaWYgKGdldFN5bWJvbHMpIHtcbiAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpO1xuICAgIHZhciBpc0VudW0gPSBwSUUuZjtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAoc3ltYm9scy5sZW5ndGggPiBpKSBpZiAoaXNFbnVtLmNhbGwoaXQsIGtleSA9IHN5bWJvbHNbaSsrXSkpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSA5NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///96\n")},function(module,exports,__webpack_require__){eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(16);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LmpzP2VkNDMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDk3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///97\n")},function(module,exports,__webpack_require__){eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(10);\nvar gOPN = __webpack_require__(56).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qcz80NmI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG52YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxudmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGdPUE4oaXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHJldHVybiB3aW5kb3dOYW1lcyAmJiB0b1N0cmluZy5jYWxsKGl0KSA9PSAnW29iamVjdCBXaW5kb3ddJyA/IGdldFdpbmRvd05hbWVzKGl0KSA6IGdPUE4odG9JT2JqZWN0KGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qc1xuLy8gbW9kdWxlIGlkID0gOThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///98\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(34)('asyncIterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcz8zOTg5Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnYXN5bmNJdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gOTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///99\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(34)('observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZS5qcz80MTY3Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnb2JzZXJ2YWJsZScpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///100\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(102), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz85MjIwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gMTAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///101\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(103);\nmodule.exports = __webpack_require__(0).Object.setPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz84YmYwIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Quc2V0UHJvdG90eXBlT2Y7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L3NldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDEwMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///102\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(3);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(104).set });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcz83YjE4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMy4xOSBPYmplY3Quc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IHNldFByb3RvdHlwZU9mOiByZXF1aXJlKCcuL19zZXQtcHJvdG8nKS5zZXQgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDEwM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///103\n")},function(module,exports,__webpack_require__){eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(6);\nvar anObject = __webpack_require__(4);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(15)(Function.call, __webpack_require__(40).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtcHJvdG8uanM/NjVhNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXByb3RvLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///104\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(106), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzPzNhZjQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGVcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2NyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///105\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(107);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlLmpzP2EwY2UiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGUoUCwgRCkge1xuICByZXR1cm4gJE9iamVjdC5jcmVhdGUoUCwgRCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///106\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(3);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(31) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlLmpzP2IwNWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IGNyZWF0ZTogcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///107\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(109), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cy5qcz83ZDk4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5c1wiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///108\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(110);\nmodule.exports = __webpack_require__(0).Object.keys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qcz84YzU2Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Qua2V5cztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///109\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(30);\nvar $keys = __webpack_require__(21);\n\n__webpack_require__(39)('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qcz8wOWRjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2tleXMnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBrZXlzKGl0KSB7XG4gICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///110\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(114);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = __webpack_require__(108);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.divideURL = divideURL;\nexports.emptyObject = emptyObject;\nexports.secondsSinceEpoch = secondsSinceEpoch;\nexports.deepClone = deepClone;\nexports.removePathFromURL = removePathFromURL;\nexports.getUserURLFromEmail = getUserURLFromEmail;\nexports.getUserEmailFromURL = getUserEmailFromURL;\nexports.convertToUserURL = convertToUserURL;\nexports.isDataObjectURL = isDataObjectURL;\nexports.isLegacy = isLegacy;\nexports.isURL = isURL;\nexports.isUserURL = isUserURL;\nexports.isHypertyURL = isHypertyURL;\nexports.getConfigurationResources = getConfigurationResources;\nexports.buildURL = buildURL;\nexports.generateGUID = generateGUID;\nexports.getUserIdentityDomain = getUserIdentityDomain;\nexports.isBackendServiceURL = isBackendServiceURL;\nexports.divideEmail = divideEmail;\nexports.assign = assign;\nexports.splitObjectURL = splitObjectURL;\nexports.checkAttribute = checkAttribute;\nexports.parseAttributes = parseAttributes;\nexports.isEmpty = isEmpty;\nexports.chatkeysToStringCloner = chatkeysToStringCloner;\nexports.chatkeysToArrayCloner = chatkeysToArrayCloner;\nexports.parseMessageURL = parseMessageURL;\nexports.availableSpace = availableSpace;\nexports.encode = encode;\nexports.decode = decode;\nexports.decodeToUint8Array = decodeToUint8Array;\nexports.stringify = stringify;\nexports.parse = parse;\nexports.parseToUint8Array = parseToUint8Array;\nexports.filterMessageToHash = filterMessageToHash;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n/**\n * Support module with some functions will be useful\n * @module utils\n */\n\n/**\n * @typedef divideURL\n * @type Object\n * @property {string} type The type of URL\n * @property {string} domain The domain of URL\n * @property {string} identity The identity of URL\n */\n\n/**\n * Divide an url in type, domain and identity\n * @param {URL.URL} url - url address\n * @return {divideURL} the result of divideURL\n */\nfunction divideURL(url) {\n\n function recurse(value) {\n var regex = /([a-zA-Z-]*)(:\\/\\/(?:\\.)?|:)([-a-zA-Z0-9@:%._+~#=]{2,256})([-a-zA-Z0-9@:%._+~#=/]*)/gi;\n var subst = '$1,$3,$4';\n var parts = value.replace(regex, subst).split(',');\n return parts;\n }\n\n var parts = recurse(url);\n\n // If the url has no scheme\n if (parts[0] === url && !parts[0].includes('@')) {\n\n var _result = {\n type: '',\n domain: url,\n identity: ''\n };\n\n console.warn('[DivideURL] DivideURL don\\'t support url without scheme. Please review your url address', url);\n\n return _result;\n }\n\n // check if the url has the scheme and includes an @\n if (parts[0] === url && parts[0].includes('@')) {\n var scheme = parts[0] === url ? 'smtp' : parts[0];\n parts = recurse(scheme + '://' + parts[0]);\n }\n\n // if the domain includes an @, divide it to domain and identity respectively\n if (parts[1].includes('@')) {\n parts[2] = parts[0] + '://' + parts[1];\n parts[1] = parts[1].substr(parts[1].indexOf('@') + 1);\n } /*else if (parts[2].includes('/')) {\n parts[2] = parts[2].substr(parts[2].lastIndexOf('/')+1);\n }*/\n\n var result = {\n type: parts[0],\n domain: parts[1],\n identity: parts[2]\n };\n\n return result;\n}\n\n/**\n * Check if an Object is empty\n * @param {Object} object Object to be checked\n * @return {Boolean} status of Object, empty or not (true|false);\n */\nfunction emptyObject(object) {\n return (0, _keys2.default)(object).length > 0 ? false : true;\n}\n\nfunction secondsSinceEpoch() {\n return Math.floor(Date.now() / 1000);\n}\n\n/**\n * Make a COPY of the original data\n * @param {Object} obj - object to be cloned\n * @return {Object}\n */\nfunction deepClone(obj) {\n //TODO: simple but inefficient JSON deep clone...\n if (obj) return JSON.parse((0, _stringify2.default)(obj));\n}\n\nfunction removePathFromURL(url) {\n var splitURL = url.split('/');\n return splitURL[0] + '//' + splitURL[2] + '/' + splitURL[3];\n}\n\n/**\n * Obtains the user URL that corresponds to a given email\n * @param {string} userEmail The user email\n * @return {URL.URL} userURL The user URL\n */\nfunction getUserURLFromEmail(userEmail) {\n var indexOfAt = userEmail.indexOf('@');\n return 'user://' + userEmail.substring(indexOfAt + 1, userEmail.length) + '/' + userEmail.substring(0, indexOfAt);\n}\n\n/**\n * Obtains the user email that corresponds to a given URL\n * @param {URL.URL} userURL The user URL\n * @return {string} userEmail The user email\n */\nfunction getUserEmailFromURL(userURL) {\n var url = divideURL(userURL);\n return url.identity.replace('/', '') + '@' + url.domain; // identity field has '/exampleID' instead of 'exampleID'\n}\n\n/**\n * Check if the user identifier is already in the URL format, if not, convert to URL format\n * @param {string} identifier user identifier\n * @return {string} userURL the user URL\n */\nfunction convertToUserURL(identifier) {\n\n // check if the identifier is already in the url format\n if (identifier.substring(0, 7) === 'user://') {\n var dividedURL = divideURL(identifier);\n\n //check if the url is well formated\n if (dividedURL.domain && dividedURL.identity) {\n return identifier;\n } else {\n throw 'userURL with wrong format';\n }\n\n //if not, convert the user email to URL format\n } else {\n return getUserURLFromEmail(identifier);\n }\n}\n\nfunction isDataObjectURL(url) {\n var schemasToIgnore = ['domain-idp', 'runtime', 'domain', 'hyperty'];\n var splitURL = url.split('://');\n var urlSchema = splitURL[0];\n\n return schemasToIgnore.indexOf(urlSchema) === -1;\n}\n\nfunction isLegacy(url) {\n if (url.split('@').length > 1) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction isURL(url) {\n return url.split('/').length >= 3;\n}\n\nfunction isUserURL(url) {\n return divideURL(url).type === 'user';\n}\n\nfunction isHypertyURL(url) {\n return divideURL(url).type === 'hyperty';\n}\n\n/**\n * get information relative each component configured on runtime configuration;\n * @param {object} configuration object with all configuration\n * @param {string} component string with the component to get the configuration, like, runtimeURLS, catalogueURLs, msgNodeURL, domainRegistryURL;\n * @param {string} resource type of resource to get, like, catalogue, runtimeUA, protocolstub, idpProxy\n * @return {object} return an object with all configurations;\n */\nfunction getConfigurationResources(configuration, component, resource) {\n var objectResource = configuration[component];\n var resourceType = objectResource[resource];\n\n return resourceType;\n}\n\n/**\n * Build a full url with the runtime configuration;\n * @param {object} configuration object with all configuration\n * @param {string} component string with the component to get the configuration, like, runtimeURLS, catalogueURLs, msgNodeURL, domainRegistryURL;\n * @param {string} resource type of resource to get, like, catalogue, runtimeUA, protocolstub, idpProxy\n * @param {string} type resource to get, like a hyperty name or protocolstub name;\n * @param {boolean} useFallback if true the function will check if have a fallback url;\n * @return {string} partial url to contact the resource;\n */\nfunction buildURL(configuration, component, resource, type) {\n var useFallback = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n var objectResource = configuration[component];\n var url = void 0;\n\n if (!objectResource.hasOwnProperty(resource)) {\n throw Error('The configuration ' + (0, _stringify2.default)(objectResource, '', 2) + ' don\\'t have the ' + resource + ' resource you are looking for');\n }\n\n var resourceType = objectResource[resource];\n\n if (type) {\n url = resourceType.prefix + configuration.domain + resourceType.suffix + type;\n if (resourceType.hasOwnProperty('fallback') && useFallback) {\n if (resourceType.fallback.indexOf('%domain%')) {\n url = resourceType.fallback.replace(/(%domain%)/g, configuration.domain) + type;\n } else {\n url = resourceType.fallback + type;\n }\n }\n } else {\n url = resourceType.prefix + configuration.domain + resourceType.suffix;\n }\n\n // console.log(url);\n\n return url;\n}\n\n/**\n * Generate a Global Unique ID\n *\n * @returns String;\n */\nfunction generateGUID() {\n\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n\nfunction getUserIdentityDomain(url) {\n var dividedURL = divideURL(url);\n var splitedDomain = dividedURL.domain.split('.');\n var splitedLength = splitedDomain.length;\n if (splitedLength == 1) {\n return splitedDomain[splitedLength - 1];\n }\n var domain = splitedDomain[splitedLength - 2] + '.' + splitedDomain[splitedLength - 1];\n return domain;\n}\n\n/**\n * Check if URL is from a backend service\n * @param {string} url URL to be processed\n * @return {boolean}\n */\n\nfunction isBackendServiceURL(url) {\n var dividedURL = divideURL(url);\n var splitedDomain = dividedURL.domain.split('.');\n var backendSchemes = ['domain', 'global', 'domain-idp']; // should be defined in the runtime configuration\n var backendSubDomains = ['registry', 'msg-node']; // should be defined in the runtime configuration\n var subDomain = void 0;\n\n if (splitedDomain.length > 1) {\n subDomain = splitedDomain.filter(function (item) {\n return backendSubDomains.indexOf(item) !== -1;\n })[0];\n }\n\n if (subDomain && backendSubDomains.indexOf(subDomain) !== -1) {\n return true;\n }\n\n if (dividedURL.type) {\n return backendSchemes.indexOf(dividedURL.type) !== -1;\n }\n\n return false;\n}\n\nfunction divideEmail(email) {\n var indexOfAt = email.indexOf('@');\n\n var result = {\n username: email.substring(0, indexOfAt),\n domain: email.substring(indexOfAt + 1, email.length)\n };\n\n return result;\n}\n\nfunction assign(obj, keyPath, value) {\n\n if (!obj) obj = {};\n if (typeof keyPath === 'string') keyPath = parseAttributes(keyPath);\n\n var lastKeyIndex = keyPath.length - 1;\n\n for (var i = 0; i < lastKeyIndex; ++i) {\n var key = keyPath[i];\n if (!(key in obj)) {\n obj[key] = {};\n }\n\n obj = obj[key];\n }\n\n obj[keyPath[lastKeyIndex]] = value;\n}\n\nfunction splitObjectURL(dataObjectURL) {\n console.info('[utils - splitObjectURL]: ', dataObjectURL);\n\n var splitedURL = dataObjectURL.split('/');\n var url = splitedURL[0] + '//' + splitedURL[2] + '/' + splitedURL[3];\n var resource = splitedURL[5];\n\n var result = {\n url: url,\n resource: resource\n };\n\n console.info('[utils - splitObjectURL]: ', result);\n\n return result;\n}\n\nfunction checkAttribute(path) {\n\n var regex = /((([a-zA-Z]+):\\/\\/([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})\\/[a-zA-Z0-9.]+@[a-zA-Z0-9]+(-)?[a-zA-Z0-9]+(\\.)?[a-zA-Z0-9]{2,10}?\\.[a-zA-Z]{2,10})(.+(?=.identity))?/gm;\n\n var list = [];\n var final = [];\n var test = path.match(regex);\n\n if (test == null) {\n final = path.split('.');\n } else {\n var m = void 0;\n while ((m = regex.exec(path)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (m.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n\n // The result can be accessed through the `m`-variable.\n m.forEach(function (match, groupIndex) {\n if (groupIndex === 0) {\n list.push(match);\n }\n });\n }\n var result = void 0;\n list.forEach(function (url) {\n\n result = path.replace(url, '*-*');\n final = result.split('.').map(function (item) {\n\n if (item === '*-*') {\n return url;\n }\n\n return item;\n });\n });\n }\n\n console.log('[RuntimeCore.Utils.checkAttribute]', final);\n return final;\n}\n\nfunction parseAttributes(path) {\n var regex = /([0-9a-zA-Z][-\\w]*):\\/\\//g;\n\n var string3 = 'identity';\n\n if (!path.includes('://')) {\n return path.split('.');\n } else {\n var string1 = path.split(regex)[0];\n\n var array1 = string1.split('.');\n\n var string2 = path.replace(string1, '');\n\n if (path.includes(string3)) {\n\n var array2 = string2.split(string3 + '.');\n\n console.log('array2 ' + array2);\n\n string2 = array2[0].slice('.', -1);\n\n array2 = array2[1].split('.');\n\n array1.push(string2, string3);\n\n array1 = array1.concat(array2);\n } else {\n array1.push(string2);\n }\n\n return array1.filter(Boolean);\n }\n}\n\nfunction isEmpty(obj) {\n for (var prop in obj) {\n\n if (obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n\n return (0, _stringify2.default)(obj) === (0, _stringify2.default)({});\n}\n\nfunction chatkeysToStringCloner(sessionKeys) {\n var dataObjectSessionKeysClone = {};\n var fields = (0, _keys2.default)(sessionKeys);\n if (fields) {\n try {\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n dataObjectSessionKeysClone[field] = {};\n dataObjectSessionKeysClone[field].sessionKey = sessionKeys[field].sessionKey.toString();\n dataObjectSessionKeysClone[field].isToEncrypt = sessionKeys[field].isToEncrypt;\n }\n } catch (err) {\n console.error('_chatkeysToStringCloner:err', err);\n }\n }\n return dataObjectSessionKeysClone;\n}\n\nfunction chatkeysToArrayCloner(sessionKeys) {\n var dataObjectSessionKeysClone = {};\n var fields = (0, _keys2.default)(sessionKeys);\n if (fields) {\n try {\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n dataObjectSessionKeysClone[field] = {};\n var arrayValues = JSON.parse('[' + sessionKeys[field].sessionKey + ']');\n dataObjectSessionKeysClone[field].sessionKey = new Uint8Array(arrayValues);\n dataObjectSessionKeysClone[field].isToEncrypt = sessionKeys[field].isToEncrypt;\n }\n } catch (err) {\n console.error('_chatkeysToArrayCloner:err', err);\n }\n }\n return dataObjectSessionKeysClone;\n}\n\nfunction parseMessageURL(URL) {\n var splitedToURL = URL.split('/');\n if (splitedToURL.length <= 6) {\n return splitedToURL[0] + '//' + splitedToURL[2] + '/' + splitedToURL[3];\n } else {\n return splitedToURL[0] + '//' + splitedToURL[2] + '/' + splitedToURL[3] + '/' + splitedToURL[4];\n }\n}\n\nfunction availableSpace(usage, quota) {\n var available = (usage / quota).toFixed(2);\n return {\n quota: quota,\n usage: usage,\n percent: Number(available)\n };\n}\n\n/**\n* Encodes a JS object to base 64 encode\n* @param {Object} value byteArray value\n* @return {string} encoded value\n*/\nfunction encode(value) {\n try {\n var stringValue = stringify(value);\n return btoa(stringValue);\n } catch (err) {\n console.error('[Utils.encode:err] ' + err);\n throw err;\n }\n}\n\n/**\n * Decode a base64 string to object\n * @param {string_b64} value value encoded in base 64\n * @return {Object} decodedValue\n */\nfunction decode(value) {\n try {\n return JSON.parse(atob(value));\n } catch (err) {\n console.log('[Utils.decode:err] ' + err);\n throw err;\n }\n}\n\n/**\n* Decode a base64 string to Uint8Array\n* @param {string_b64} value byteArray value\n* @return {Uint8Array} encoded value\n*/\nfunction decodeToUint8Array(value) {\n try {\n return new Uint8Array(decode(value));\n } catch (err) {\n console.error('[Utils.decodeToUint8Array:err] ' + err);\n throw err;\n }\n}\n\n/**\n* Converts a JS object to string\n* NOTE: Special conversion for Uint8Arrays\n* @param {Object} value byteArray value\n* @return {Uint8Array} encoded value\n*/\nfunction stringify(value) {\n try {\n var stringValue = void 0;\n if (value.constructor === Uint8Array) {\n stringValue = '[' + value.toString() + ']'; // the [] is for JSON.parse compatibility\n } else {\n stringValue = (0, _stringify2.default)(value);\n }\n return stringValue;\n } catch (err) {\n console.error('[Utils.stringify:err] ' + err);\n throw err;\n }\n}\n\n/**\n* Converts a stringified object to object\n* @param {String} value byteArray value\n* @return {Object} encoded value\n*/\nfunction parse(value) {\n try {\n return JSON.parse(value);\n } catch (err) {\n console.error('[Utils.parse:err]' + err);\n console.trace();\n console.error('The value that cause the error:', value);\n throw err;\n }\n}\n\n/**\n* Converts a stringified object to object\n* @param {String} value byteArray value\n* @return {Uint8Array} encoded value\n*/\nfunction parseToUint8Array(value) {\n try {\n return new Uint8Array(parse(value));\n } catch (err) {\n console.error('[Utils.parseToUint8Array:err]' + err);\n throw err;\n }\n}\n\n/**\n * filter the messages to hash, by removing some fields not generated by the runtime core\n * @param {Message} message message\n * @param {String} decryptedValue (Optional) value from body.value in case it originally comes encrypted\n * @param {JSON} identity(Optional) add the hyperty identity associated in case is not added to the initial message\n * @return {Message} new message filtered\n */\nfunction filterMessageToHash(message, decryptedValue, identity) {\n return {\n type: message.type,\n from: message.from,\n to: message.to,\n body: {\n identity: identity || message.body.identity,\n value: decryptedValue || message.body.value,\n handshakePhase: message.body.handshakePhase\n }\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy91dGlscy91dGlscy5qcz9iZTczIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cbi8qKlxuICogU3VwcG9ydCBtb2R1bGUgd2l0aCBzb21lIGZ1bmN0aW9ucyB3aWxsIGJlIHVzZWZ1bFxuICogQG1vZHVsZSB1dGlsc1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYgZGl2aWRlVVJMXG4gKiBAdHlwZSBPYmplY3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0eXBlIFRoZSB0eXBlIG9mIFVSTFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGRvbWFpbiBUaGUgZG9tYWluIG9mIFVSTFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGlkZW50aXR5IFRoZSBpZGVudGl0eSBvZiBVUkxcbiAqL1xuXG4vKipcbiAqIERpdmlkZSBhbiB1cmwgaW4gdHlwZSwgZG9tYWluIGFuZCBpZGVudGl0eVxuICogQHBhcmFtICB7VVJMLlVSTH0gdXJsIC0gdXJsIGFkZHJlc3NcbiAqIEByZXR1cm4ge2RpdmlkZVVSTH0gdGhlIHJlc3VsdCBvZiBkaXZpZGVVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpdmlkZVVSTCh1cmwpIHtcblxuICBmdW5jdGlvbiByZWN1cnNlKHZhbHVlKSB7XG4gICAgY29uc3QgcmVnZXggPSAvKFthLXpBLVotXSopKDpcXC9cXC8oPzpcXC4pP3w6KShbLWEtekEtWjAtOUA6JS5fK34jPV17MiwyNTZ9KShbLWEtekEtWjAtOUA6JS5fK34jPS9dKikvZ2k7XG4gICAgY29uc3Qgc3Vic3QgPSAnJDEsJDMsJDQnO1xuICAgIGxldCBwYXJ0cyA9IHZhbHVlLnJlcGxhY2UocmVnZXgsIHN1YnN0KS5zcGxpdCgnLCcpO1xuICAgIHJldHVybiBwYXJ0cztcbiAgfVxuXG4gIGxldCBwYXJ0cyA9IHJlY3Vyc2UodXJsKTtcblxuICAvLyBJZiB0aGUgdXJsIGhhcyBubyBzY2hlbWVcbiAgaWYgKHBhcnRzWzBdID09PSB1cmwgJiYgIXBhcnRzWzBdLmluY2x1ZGVzKCdAJykpIHtcblxuICAgIGxldCByZXN1bHQgPSB7XG4gICAgICB0eXBlOiAnJyxcbiAgICAgIGRvbWFpbjogdXJsLFxuICAgICAgaWRlbnRpdHk6ICcnXG4gICAgfTtcblxuICAgIGNvbnNvbGUud2FybignW0RpdmlkZVVSTF0gRGl2aWRlVVJMIGRvblxcJ3Qgc3VwcG9ydCB1cmwgd2l0aG91dCBzY2hlbWUuIFBsZWFzZSByZXZpZXcgeW91ciB1cmwgYWRkcmVzcycsIHVybCk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gY2hlY2sgaWYgdGhlIHVybCBoYXMgdGhlIHNjaGVtZSBhbmQgaW5jbHVkZXMgYW4gQFxuICBpZiAocGFydHNbMF0gPT09IHVybCAmJiBwYXJ0c1swXS5pbmNsdWRlcygnQCcpKSB7XG4gICAgbGV0IHNjaGVtZSA9IHBhcnRzWzBdID09PSB1cmwgPyAnc210cCcgOiBwYXJ0c1swXTtcbiAgICBwYXJ0cyA9IHJlY3Vyc2Uoc2NoZW1lICsgJzovLycgKyBwYXJ0c1swXSk7XG4gIH1cblxuICAvLyBpZiB0aGUgZG9tYWluIGluY2x1ZGVzIGFuIEAsIGRpdmlkZSBpdCB0byBkb21haW4gYW5kIGlkZW50aXR5IHJlc3BlY3RpdmVseVxuICBpZiAocGFydHNbMV0uaW5jbHVkZXMoJ0AnKSkge1xuICAgIHBhcnRzWzJdID0gcGFydHNbMF0gKyAnOi8vJyArIHBhcnRzWzFdO1xuICAgIHBhcnRzWzFdID0gcGFydHNbMV0uc3Vic3RyKHBhcnRzWzFdLmluZGV4T2YoJ0AnKSArIDEpO1xuICB9IFx0LyplbHNlIGlmIChwYXJ0c1syXS5pbmNsdWRlcygnLycpKSB7XG4gICAgcGFydHNbMl0gPSBwYXJ0c1syXS5zdWJzdHIocGFydHNbMl0ubGFzdEluZGV4T2YoJy8nKSsxKTtcbiAgfSovXG5cbiAgbGV0IHJlc3VsdCA9IHtcbiAgICB0eXBlOiBwYXJ0c1swXSxcbiAgICBkb21haW46IHBhcnRzWzFdLFxuICAgIGlkZW50aXR5OiBwYXJ0c1syXVxuICB9O1xuXG4gIHJldHVybiByZXN1bHQ7XG5cbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhbiBPYmplY3QgaXMgZW1wdHlcbiAqIEBwYXJhbSAge09iamVjdH0gb2JqZWN0IE9iamVjdCB0byBiZSBjaGVja2VkXG4gKiBAcmV0dXJuIHtCb29sZWFufSAgICAgICBzdGF0dXMgb2YgT2JqZWN0LCBlbXB0eSBvciBub3QgKHRydWV8ZmFsc2UpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gZW1wdHlPYmplY3Qob2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCA+IDAgPyBmYWxzZSA6IHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRzU2luY2VFcG9jaCgpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xufVxuXG5cbi8qKlxuICogTWFrZSBhIENPUFkgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbiAqIEBwYXJhbSAge09iamVjdH0gIG9iaiAtIG9iamVjdCB0byBiZSBjbG9uZWRcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZXBDbG9uZShvYmopIHtcbiAgLy9UT0RPOiBzaW1wbGUgYnV0IGluZWZmaWNpZW50IEpTT04gZGVlcCBjbG9uZS4uLlxuICBpZiAob2JqKSByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVBhdGhGcm9tVVJMKHVybCkge1xuICBsZXQgc3BsaXRVUkwgPSB1cmwuc3BsaXQoJy8nKTtcbiAgcmV0dXJuIHNwbGl0VVJMWzBdICsgJy8vJyArIHNwbGl0VVJMWzJdICsgJy8nICsgc3BsaXRVUkxbM107XG59XG5cbi8qKlxuICogT2J0YWlucyB0aGUgdXNlciBVUkwgdGhhdCBjb3JyZXNwb25kcyB0byBhIGdpdmVuIGVtYWlsXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHVzZXJFbWFpbCBUaGUgdXNlciBlbWFpbFxuICogQHJldHVybiB7VVJMLlVSTH0gdXNlclVSTCBUaGUgdXNlciBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFVzZXJVUkxGcm9tRW1haWwodXNlckVtYWlsKSB7XG4gIGxldCBpbmRleE9mQXQgPSB1c2VyRW1haWwuaW5kZXhPZignQCcpO1xuICByZXR1cm4gJ3VzZXI6Ly8nICsgdXNlckVtYWlsLnN1YnN0cmluZyhpbmRleE9mQXQgKyAxLCB1c2VyRW1haWwubGVuZ3RoKSArICcvJyArIHVzZXJFbWFpbC5zdWJzdHJpbmcoMCwgaW5kZXhPZkF0KTtcbn1cblxuLyoqXG4gKiBPYnRhaW5zIHRoZSB1c2VyIGVtYWlsIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBnaXZlbiBVUkxcbiAqIEBwYXJhbSAge1VSTC5VUkx9IHVzZXJVUkwgVGhlIHVzZXIgVVJMXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHVzZXJFbWFpbCBUaGUgdXNlciBlbWFpbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlckVtYWlsRnJvbVVSTCh1c2VyVVJMKSB7XG4gIGxldCB1cmwgPSBkaXZpZGVVUkwodXNlclVSTCk7XG4gIHJldHVybiB1cmwuaWRlbnRpdHkucmVwbGFjZSgnLycsICcnKSArICdAJyArIHVybC5kb21haW47IC8vIGlkZW50aXR5IGZpZWxkIGhhcyAnL2V4YW1wbGVJRCcgaW5zdGVhZCBvZiAnZXhhbXBsZUlEJ1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSB1c2VyIGlkZW50aWZpZXIgaXMgYWxyZWFkeSBpbiB0aGUgVVJMIGZvcm1hdCwgaWYgbm90LCBjb252ZXJ0IHRvIFVSTCBmb3JtYXRcbiAqIEBwYXJhbSAge3N0cmluZ30gICBpZGVudGlmaWVyICB1c2VyIGlkZW50aWZpZXJcbiAqIEByZXR1cm4ge3N0cmluZ30gICB1c2VyVVJMICAgIHRoZSB1c2VyIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvVXNlclVSTChpZGVudGlmaWVyKSB7XG5cbiAgLy8gY2hlY2sgaWYgdGhlIGlkZW50aWZpZXIgaXMgYWxyZWFkeSBpbiB0aGUgdXJsIGZvcm1hdFxuICBpZiAoaWRlbnRpZmllci5zdWJzdHJpbmcoMCwgNykgPT09ICd1c2VyOi8vJykge1xuICAgIGxldCBkaXZpZGVkVVJMID0gZGl2aWRlVVJMKGlkZW50aWZpZXIpO1xuXG4gICAgLy9jaGVjayBpZiB0aGUgdXJsIGlzIHdlbGwgZm9ybWF0ZWRcbiAgICBpZiAoZGl2aWRlZFVSTC5kb21haW4gJiYgZGl2aWRlZFVSTC5pZGVudGl0eSkge1xuICAgICAgcmV0dXJuIGlkZW50aWZpZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93ICd1c2VyVVJMIHdpdGggd3JvbmcgZm9ybWF0JztcbiAgICB9XG5cbiAgLy9pZiBub3QsIGNvbnZlcnQgdGhlIHVzZXIgZW1haWwgdG8gVVJMIGZvcm1hdFxuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXRVc2VyVVJMRnJvbUVtYWlsKGlkZW50aWZpZXIpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGFPYmplY3RVUkwodXJsKSB7XG4gIGxldCBzY2hlbWFzVG9JZ25vcmUgPSBbJ2RvbWFpbi1pZHAnLCAncnVudGltZScsICdkb21haW4nLCAnaHlwZXJ0eSddO1xuICBsZXQgc3BsaXRVUkwgPSAodXJsKS5zcGxpdCgnOi8vJyk7XG4gIGxldCB1cmxTY2hlbWEgPSBzcGxpdFVSTFswXTtcblxuICByZXR1cm4gc2NoZW1hc1RvSWdub3JlLmluZGV4T2YodXJsU2NoZW1hKSA9PT0gLTE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlZ2FjeSh1cmwpIHtcbiAgaWYgKHVybC5zcGxpdCgnQCcpLmxlbmd0aCA+IDEpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVVJMKHVybCkge1xuICByZXR1cm4gKHVybCkuc3BsaXQoJy8nKS5sZW5ndGggPj0gMztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXNlclVSTCh1cmwpIHtcbiAgcmV0dXJuIGRpdmlkZVVSTCh1cmwpLnR5cGUgPT09ICd1c2VyJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSHlwZXJ0eVVSTCh1cmwpIHtcbiAgcmV0dXJuIGRpdmlkZVVSTCh1cmwpLnR5cGUgPT09ICdoeXBlcnR5Jztcbn1cblxuLyoqXG4gKiBnZXQgaW5mb3JtYXRpb24gcmVsYXRpdmUgZWFjaCBjb21wb25lbnQgY29uZmlndXJlZCBvbiBydW50aW1lIGNvbmZpZ3VyYXRpb247XG4gKiBAcGFyYW0gIHtvYmplY3R9IGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggYWxsIGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSAge3N0cmluZ30gY29tcG9uZW50ICAgICBzdHJpbmcgd2l0aCB0aGUgY29tcG9uZW50IHRvIGdldCB0aGUgY29uZmlndXJhdGlvbiwgbGlrZSwgcnVudGltZVVSTFMsIGNhdGFsb2d1ZVVSTHMsIG1zZ05vZGVVUkwsIGRvbWFpblJlZ2lzdHJ5VVJMO1xuICogQHBhcmFtICB7c3RyaW5nfSByZXNvdXJjZSAgICAgIHR5cGUgb2YgcmVzb3VyY2UgdG8gZ2V0LCBsaWtlLCBjYXRhbG9ndWUsIHJ1bnRpbWVVQSwgcHJvdG9jb2xzdHViLCBpZHBQcm94eVxuICogQHJldHVybiB7b2JqZWN0fSAgICAgICAgICAgICAgIHJldHVybiBhbiBvYmplY3Qgd2l0aCBhbGwgY29uZmlndXJhdGlvbnM7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWd1cmF0aW9uUmVzb3VyY2VzKGNvbmZpZ3VyYXRpb24sIGNvbXBvbmVudCwgcmVzb3VyY2UpIHtcbiAgbGV0IG9iamVjdFJlc291cmNlID0gY29uZmlndXJhdGlvbltjb21wb25lbnRdO1xuICBsZXQgcmVzb3VyY2VUeXBlID0gb2JqZWN0UmVzb3VyY2VbcmVzb3VyY2VdO1xuXG4gIHJldHVybiByZXNvdXJjZVR5cGU7XG59XG5cbi8qKlxuICogQnVpbGQgYSBmdWxsIHVybCB3aXRoIHRoZSBydW50aW1lIGNvbmZpZ3VyYXRpb247XG4gKiBAcGFyYW0gIHtvYmplY3R9IGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggYWxsIGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSAge3N0cmluZ30gY29tcG9uZW50ICAgICBzdHJpbmcgd2l0aCB0aGUgY29tcG9uZW50IHRvIGdldCB0aGUgY29uZmlndXJhdGlvbiwgbGlrZSwgcnVudGltZVVSTFMsIGNhdGFsb2d1ZVVSTHMsIG1zZ05vZGVVUkwsIGRvbWFpblJlZ2lzdHJ5VVJMO1xuICogQHBhcmFtICB7c3RyaW5nfSByZXNvdXJjZSAgICAgIHR5cGUgb2YgcmVzb3VyY2UgdG8gZ2V0LCBsaWtlLCBjYXRhbG9ndWUsIHJ1bnRpbWVVQSwgcHJvdG9jb2xzdHViLCBpZHBQcm94eVxuICogQHBhcmFtICB7c3RyaW5nfSB0eXBlICAgICAgICAgIHJlc291cmNlIHRvIGdldCwgbGlrZSBhIGh5cGVydHkgbmFtZSBvciBwcm90b2NvbHN0dWIgbmFtZTtcbiAqIEBwYXJhbSAge2Jvb2xlYW59IHVzZUZhbGxiYWNrICBpZiB0cnVlIHRoZSBmdW5jdGlvbiB3aWxsIGNoZWNrIGlmIGhhdmUgYSBmYWxsYmFjayB1cmw7XG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgICAgICAgcGFydGlhbCB1cmwgdG8gY29udGFjdCB0aGUgcmVzb3VyY2U7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFVSTChjb25maWd1cmF0aW9uLCBjb21wb25lbnQsIHJlc291cmNlLCB0eXBlLCB1c2VGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGxldCBvYmplY3RSZXNvdXJjZSA9IGNvbmZpZ3VyYXRpb25bY29tcG9uZW50XTtcbiAgbGV0IHVybDtcblxuICBpZiAoIW9iamVjdFJlc291cmNlLmhhc093blByb3BlcnR5KHJlc291cmNlKSkge1xuICAgIHRocm93IEVycm9yKCdUaGUgY29uZmlndXJhdGlvbiAnICsgSlNPTi5zdHJpbmdpZnkob2JqZWN0UmVzb3VyY2UsICcnLCAyKSArICcgZG9uXFwndCBoYXZlIHRoZSAnICsgcmVzb3VyY2UgKyAnIHJlc291cmNlIHlvdSBhcmUgbG9va2luZyBmb3InKTtcbiAgfVxuXG4gIGxldCByZXNvdXJjZVR5cGUgPSBvYmplY3RSZXNvdXJjZVtyZXNvdXJjZV07XG5cbiAgaWYgKHR5cGUpIHtcbiAgICB1cmwgPSByZXNvdXJjZVR5cGUucHJlZml4ICsgY29uZmlndXJhdGlvbi5kb21haW4gKyByZXNvdXJjZVR5cGUuc3VmZml4ICsgdHlwZTtcbiAgICBpZiAocmVzb3VyY2VUeXBlLmhhc093blByb3BlcnR5KCdmYWxsYmFjaycpICYmIHVzZUZhbGxiYWNrKSB7XG4gICAgICBpZiAocmVzb3VyY2VUeXBlLmZhbGxiYWNrLmluZGV4T2YoJyVkb21haW4lJykpIHtcbiAgICAgICAgdXJsID0gcmVzb3VyY2VUeXBlLmZhbGxiYWNrLnJlcGxhY2UoLyglZG9tYWluJSkvZywgY29uZmlndXJhdGlvbi5kb21haW4pICsgdHlwZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVybCA9IHJlc291cmNlVHlwZS5mYWxsYmFjayArIHR5cGU7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHVybCA9IHJlc291cmNlVHlwZS5wcmVmaXggKyBjb25maWd1cmF0aW9uLmRvbWFpbiArIHJlc291cmNlVHlwZS5zdWZmaXg7XG4gIH1cblxuICAvLyBjb25zb2xlLmxvZyh1cmwpO1xuXG4gIHJldHVybiB1cmw7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBHbG9iYWwgVW5pcXVlIElEXG4gKlxuICogQHJldHVybnMgU3RyaW5nO1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVHVUlEKCkge1xuXG4gIGZ1bmN0aW9uIHM0KCkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKCgxICsgTWF0aC5yYW5kb20oKSkgKiAweDEwMDAwKVxuICAgICAgLnRvU3RyaW5nKDE2KVxuICAgICAgLnN1YnN0cmluZygxKTtcbiAgfVxuXG4gIHJldHVybiBzNCgpICsgczQoKSArICctJyArIHM0KCkgKyAnLScgKyBzNCgpICsgJy0nICsgczQoKSArICctJyArIHM0KCkgKyBzNCgpICsgczQoKTtcblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlcklkZW50aXR5RG9tYWluKHVybCkge1xuICBsZXQgZGl2aWRlZFVSTCA9IGRpdmlkZVVSTCh1cmwpO1xuICBsZXQgc3BsaXRlZERvbWFpbiA9IGRpdmlkZWRVUkwuZG9tYWluLnNwbGl0KCcuJyk7XG4gIGxldCBzcGxpdGVkTGVuZ3RoID0gc3BsaXRlZERvbWFpbi5sZW5ndGg7XG4gIGlmIChzcGxpdGVkTGVuZ3RoID09IDEpIHtcbiAgICByZXR1cm4gc3BsaXRlZERvbWFpbltzcGxpdGVkTGVuZ3RoIC0gMV07XG4gIH1cbiAgbGV0IGRvbWFpbiA9IHNwbGl0ZWREb21haW5bc3BsaXRlZExlbmd0aCAtIDJdICsgJy4nICsgc3BsaXRlZERvbWFpbltzcGxpdGVkTGVuZ3RoIC0gMV07XG4gIHJldHVybiBkb21haW47XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgVVJMIGlzIGZyb20gYSBiYWNrZW5kIHNlcnZpY2VcbiAqIEBwYXJhbSAge3N0cmluZ30gdXJsICAgICBVUkwgdG8gYmUgcHJvY2Vzc2VkXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0JhY2tlbmRTZXJ2aWNlVVJMKHVybCkge1xuICBsZXQgZGl2aWRlZFVSTCA9IGRpdmlkZVVSTCh1cmwpO1xuICBsZXQgc3BsaXRlZERvbWFpbiA9IGRpdmlkZWRVUkwuZG9tYWluLnNwbGl0KCcuJyk7XG4gIGxldCBiYWNrZW5kU2NoZW1lcyA9IFsnZG9tYWluJywgJ2dsb2JhbCcsICdkb21haW4taWRwJ107IC8vIHNob3VsZCBiZSBkZWZpbmVkIGluIHRoZSBydW50aW1lIGNvbmZpZ3VyYXRpb25cbiAgbGV0IGJhY2tlbmRTdWJEb21haW5zID0gWydyZWdpc3RyeScsICdtc2ctbm9kZSddOyAvLyBzaG91bGQgYmUgZGVmaW5lZCBpbiB0aGUgcnVudGltZSBjb25maWd1cmF0aW9uXG4gIGxldCBzdWJEb21haW47XG5cbiAgaWYgKHNwbGl0ZWREb21haW4ubGVuZ3RoID4gMSkge1xuICAgIHN1YkRvbWFpbiA9IHNwbGl0ZWREb21haW4uZmlsdGVyKGl0ZW0gPT4gYmFja2VuZFN1YkRvbWFpbnMuaW5kZXhPZihpdGVtKSAhPT0gLTEpWzBdO1xuICB9XG5cbiAgaWYgKHN1YkRvbWFpbiAmJiBiYWNrZW5kU3ViRG9tYWlucy5pbmRleE9mKHN1YkRvbWFpbikgIT09IC0xKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoZGl2aWRlZFVSTC50eXBlKSB7XG4gICAgcmV0dXJuIChiYWNrZW5kU2NoZW1lcy5pbmRleE9mKGRpdmlkZWRVUkwudHlwZSkgIT09IC0xKTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpdmlkZUVtYWlsKGVtYWlsKSB7XG4gIGxldCBpbmRleE9mQXQgPSBlbWFpbC5pbmRleE9mKCdAJyk7XG5cbiAgbGV0IHJlc3VsdCA9IHtcbiAgICB1c2VybmFtZTogZW1haWwuc3Vic3RyaW5nKDAsIGluZGV4T2ZBdCksXG4gICAgZG9tYWluOiBlbWFpbC5zdWJzdHJpbmcoaW5kZXhPZkF0ICsgMSwgZW1haWwubGVuZ3RoKVxuICB9O1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbihvYmosIGtleVBhdGgsIHZhbHVlKSB7XG5cbiAgaWYgKCFvYmopIG9iaiA9IHt9O1xuICBpZiAodHlwZW9mKGtleVBhdGgpID09PSAnc3RyaW5nJykga2V5UGF0aCA9IHBhcnNlQXR0cmlidXRlcyhrZXlQYXRoKTtcblxuICBsZXQgbGFzdEtleUluZGV4ID0ga2V5UGF0aC5sZW5ndGggLSAxO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdEtleUluZGV4OyArK2kpIHtcbiAgICBsZXQga2V5ID0ga2V5UGF0aFtpXTtcbiAgICBpZiAoIShrZXkgaW4gb2JqKSkge1xuICAgICAgb2JqW2tleV0gPSB7fTtcbiAgICB9XG5cbiAgICBvYmogPSBvYmpba2V5XTtcblxuICB9XG5cbiAgb2JqW2tleVBhdGhbbGFzdEtleUluZGV4XV0gPSB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0T2JqZWN0VVJMKGRhdGFPYmplY3RVUkwpIHtcbiAgY29uc29sZS5pbmZvKCdbdXRpbHMgLSBzcGxpdE9iamVjdFVSTF06ICcsIGRhdGFPYmplY3RVUkwpO1xuXG4gIGxldCBzcGxpdGVkVVJMID0gZGF0YU9iamVjdFVSTC5zcGxpdCgnLycpO1xuICBsZXQgdXJsID0gc3BsaXRlZFVSTFswXSArICcvLycgKyBzcGxpdGVkVVJMWzJdICsgJy8nICsgc3BsaXRlZFVSTFszXTtcbiAgbGV0IHJlc291cmNlID0gc3BsaXRlZFVSTFs1XTtcblxuICBsZXQgcmVzdWx0ID0ge1xuICAgIHVybDogdXJsLFxuICAgIHJlc291cmNlOiByZXNvdXJjZVxuICB9O1xuXG4gIGNvbnNvbGUuaW5mbygnW3V0aWxzIC0gc3BsaXRPYmplY3RVUkxdOiAnLCByZXN1bHQpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0F0dHJpYnV0ZShwYXRoKSB7XG5cbiAgbGV0IHJlZ2V4ID0gLygoKFthLXpBLVpdKyk6XFwvXFwvKFswLTlhLXpBLVpdWy1cXHddKlswLTlhLXpBLVpdXFwuKStbYS16QS1aXXsyLDl9KVxcL1thLXpBLVowLTkuXStAW2EtekEtWjAtOV0rKC0pP1thLXpBLVowLTldKyhcXC4pP1thLXpBLVowLTldezIsMTB9P1xcLlthLXpBLVpdezIsMTB9KSguKyg/PS5pZGVudGl0eSkpPy9nbTtcblxuICBsZXQgbGlzdCA9IFtdO1xuICBsZXQgZmluYWwgPSBbXTtcbiAgbGV0IHRlc3QgPSBwYXRoLm1hdGNoKHJlZ2V4KTtcblxuICBpZiAodGVzdCA9PSBudWxsKSB7XG4gICAgZmluYWwgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IG07XG4gICAgd2hpbGUgKChtID0gcmVnZXguZXhlYyhwYXRoKSkgIT09IG51bGwpIHtcbiAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGluZmluaXRlIGxvb3BzIHdpdGggemVyby13aWR0aCBtYXRjaGVzXG4gICAgICBpZiAobS5pbmRleCA9PT0gcmVnZXgubGFzdEluZGV4KSB7XG4gICAgICAgIHJlZ2V4Lmxhc3RJbmRleCsrO1xuICAgICAgfVxuXG4gICAgICAvLyBUaGUgcmVzdWx0IGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBgbWAtdmFyaWFibGUuXG4gICAgICBtLmZvckVhY2goKG1hdGNoLCBncm91cEluZGV4KSA9PiB7XG4gICAgICAgIGlmIChncm91cEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgbGlzdC5wdXNoKG1hdGNoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGxldCByZXN1bHQ7XG4gICAgbGlzdC5mb3JFYWNoKCh1cmwpID0+IHtcblxuICAgICAgcmVzdWx0ID0gcGF0aC5yZXBsYWNlKHVybCwgJyotKicpO1xuICAgICAgZmluYWwgPSByZXN1bHQuc3BsaXQoJy4nKS5tYXAoKGl0ZW0pID0+IHtcblxuICAgICAgICBpZiAoaXRlbSA9PT0gJyotKicpIHsgcmV0dXJuIHVybDsgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zb2xlLmxvZygnW1J1bnRpbWVDb3JlLlV0aWxzLmNoZWNrQXR0cmlidXRlXScsIGZpbmFsKTtcbiAgcmV0dXJuIGZpbmFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBdHRyaWJ1dGVzKHBhdGgpIHtcbiAgbGV0IHJlZ2V4ID0gLyhbMC05YS16QS1aXVstXFx3XSopOlxcL1xcLy9nO1xuXG4gIGxldCBzdHJpbmczID0gJ2lkZW50aXR5JztcblxuICBpZiAoIXBhdGguaW5jbHVkZXMoJzovLycpKSB7XG4gICAgcmV0dXJuIChwYXRoLnNwbGl0KCcuJykpO1xuICB9IGVsc2Uge1xuICAgIGxldCBzdHJpbmcxID0gcGF0aC5zcGxpdChyZWdleClbMF07XG5cbiAgICBsZXQgYXJyYXkxID0gc3RyaW5nMS5zcGxpdCgnLicpO1xuXG4gICAgbGV0IHN0cmluZzIgPSBwYXRoLnJlcGxhY2Uoc3RyaW5nMSwgJycpO1xuXG4gICAgaWYgKHBhdGguaW5jbHVkZXMoc3RyaW5nMykpIHtcblxuICAgICAgbGV0IGFycmF5MiA9IHN0cmluZzIuc3BsaXQoc3RyaW5nMyArICcuJyk7XG5cbiAgICAgIGNvbnNvbGUubG9nKCdhcnJheTIgJyArIGFycmF5Mik7XG5cbiAgICAgIHN0cmluZzIgPSBhcnJheTJbMF0uc2xpY2UoJy4nLCAtMSk7XG5cbiAgICAgIGFycmF5MiA9IGFycmF5MlsxXS5zcGxpdCgnLicpO1xuXG4gICAgICBhcnJheTEucHVzaChzdHJpbmcyLCBzdHJpbmczKTtcblxuICAgICAgYXJyYXkxID0gYXJyYXkxLmNvbmNhdChhcnJheTIpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIGFycmF5MS5wdXNoKHN0cmluZzIpO1xuXG4gICAgfVxuXG4gICAgcmV0dXJuIChhcnJheTEuZmlsdGVyKEJvb2xlYW4pKTtcblxuICB9XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkob2JqKSB7XG4gIGZvciAodmFyIHByb3AgaW4gb2JqKSB7XG5cbiAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gIH1cblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKSA9PT0gSlNPTi5zdHJpbmdpZnkoe30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hhdGtleXNUb1N0cmluZ0Nsb25lcihzZXNzaW9uS2V5cykge1xuICBsZXQgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmUgPSB7fTtcbiAgbGV0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHNlc3Npb25LZXlzKTtcbiAgaWYgKGZpZWxkcykge1xuICAgIHRyeSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICBmaWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGZpZWxkID0gZmllbGRzW2ldO1xuICAgICAgICBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZVtmaWVsZF0gPSB7fTtcbiAgICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmVbZmllbGRdLnNlc3Npb25LZXkgPSBzZXNzaW9uS2V5c1tmaWVsZF0uc2Vzc2lvbktleS50b1N0cmluZygpO1xuICAgICAgICBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZVtmaWVsZF0uaXNUb0VuY3J5cHQgPSBzZXNzaW9uS2V5c1tmaWVsZF0uaXNUb0VuY3J5cHQ7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdfY2hhdGtleXNUb1N0cmluZ0Nsb25lcjplcnInLCBlcnIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGF0a2V5c1RvQXJyYXlDbG9uZXIoc2Vzc2lvbktleXMpIHtcbiAgbGV0IGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lID0ge307XG4gIGxldCBmaWVsZHMgPSBPYmplY3Qua2V5cyhzZXNzaW9uS2V5cyk7XG4gIGlmIChmaWVsZHMpIHtcbiAgICB0cnkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAgZmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBmaWVsZCA9IGZpZWxkc1tpXTtcbiAgICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmVbZmllbGRdID0ge307XG4gICAgICAgIGxldCBhcnJheVZhbHVlcyA9IEpTT04ucGFyc2UoJ1snICsgc2Vzc2lvbktleXNbZmllbGRdLnNlc3Npb25LZXkgKyAnXScpO1xuICAgICAgICBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZVtmaWVsZF0uc2Vzc2lvbktleSA9IG5ldyBVaW50OEFycmF5KGFycmF5VmFsdWVzKTtcbiAgICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmVbZmllbGRdLmlzVG9FbmNyeXB0ID0gc2Vzc2lvbktleXNbZmllbGRdLmlzVG9FbmNyeXB0O1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignX2NoYXRrZXlzVG9BcnJheUNsb25lcjplcnInLCBlcnIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU1lc3NhZ2VVUkwoVVJMKSB7XG4gIGxldCBzcGxpdGVkVG9VUkwgPSBVUkwuc3BsaXQoJy8nKTtcbiAgaWYgKHNwbGl0ZWRUb1VSTC5sZW5ndGggPD0gNikge1xuICAgIHJldHVybiBzcGxpdGVkVG9VUkxbMF0gKyAnLy8nICsgc3BsaXRlZFRvVVJMWzJdICsgJy8nICsgc3BsaXRlZFRvVVJMWzNdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzcGxpdGVkVG9VUkxbMF0gKyAnLy8nICsgc3BsaXRlZFRvVVJMWzJdICsgJy8nICsgc3BsaXRlZFRvVVJMWzNdICsgJy8nICsgc3BsaXRlZFRvVVJMWzRdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdmFpbGFibGVTcGFjZSh1c2FnZSwgcXVvdGEpIHtcbiAgY29uc3QgYXZhaWxhYmxlID0gKHVzYWdlIC8gcXVvdGEpLnRvRml4ZWQoMik7XG4gIHJldHVybiB7XG4gICAgcXVvdGE6IHF1b3RhLFxuICAgIHVzYWdlOiB1c2FnZSxcbiAgICBwZXJjZW50OiBOdW1iZXIoYXZhaWxhYmxlKVxuICB9O1xufVxuXG4vKipcbiogRW5jb2RlcyBhIEpTIG9iamVjdCB0byBiYXNlIDY0IGVuY29kZVxuKiBAcGFyYW0gICB7T2JqZWN0fSAgICB2YWx1ZSAgICBieXRlQXJyYXkgdmFsdWVcbiogQHJldHVybiAge3N0cmluZ30gICBlbmNvZGVkIHZhbHVlXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZSh2YWx1ZSkge1xuICB0cnkge1xuICAgIGxldCBzdHJpbmdWYWx1ZSA9IHN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgcmV0dXJuIGJ0b2Eoc3RyaW5nVmFsdWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbVXRpbHMuZW5jb2RlOmVycl0gJyArIGVycik7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbi8qKlxuICAqIERlY29kZSBhIGJhc2U2NCBzdHJpbmcgdG8gb2JqZWN0XG4gICogQHBhcmFtICAge3N0cmluZ19iNjR9ICAgIHZhbHVlICAgIHZhbHVlIGVuY29kZWQgaW4gYmFzZSA2NFxuICAqIEByZXR1cm4gIHtPYmplY3R9IGRlY29kZWRWYWx1ZVxuICAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZSh2YWx1ZSkge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF0b2IodmFsdWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5sb2coJ1tVdGlscy5kZWNvZGU6ZXJyXSAnICsgZXJyKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLyoqXG4qIERlY29kZSBhIGJhc2U2NCBzdHJpbmcgdG8gVWludDhBcnJheVxuKiBAcGFyYW0gICB7c3RyaW5nX2I2NH0gICAgdmFsdWUgICAgYnl0ZUFycmF5IHZhbHVlXG4qIEByZXR1cm4gIHtVaW50OEFycmF5fSAgIGVuY29kZWQgdmFsdWVcbiovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVG9VaW50OEFycmF5KHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGRlY29kZSh2YWx1ZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbVXRpbHMuZGVjb2RlVG9VaW50OEFycmF5OmVycl0gJyArIGVycik7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbi8qKlxuKiBDb252ZXJ0cyBhIEpTIG9iamVjdCB0byBzdHJpbmdcbiogTk9URTogU3BlY2lhbCBjb252ZXJzaW9uIGZvciBVaW50OEFycmF5c1xuKiBAcGFyYW0gICB7T2JqZWN0fSAgICB2YWx1ZSAgICBieXRlQXJyYXkgdmFsdWVcbiogQHJldHVybiAge1VpbnQ4QXJyYXl9ICAgZW5jb2RlZCB2YWx1ZVxuKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkodmFsdWUpIHtcbiAgdHJ5IHtcbiAgICBsZXQgc3RyaW5nVmFsdWU7XG4gICAgaWYgKHZhbHVlLmNvbnN0cnVjdG9yID09PSBVaW50OEFycmF5KSB7XG4gICAgICBzdHJpbmdWYWx1ZSA9ICdbJyArIHZhbHVlLnRvU3RyaW5nKCkgKyAnXSc7IC8vIHRoZSBbXSBpcyBmb3IgSlNPTi5wYXJzZSBjb21wYXRpYmlsaXR5XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmluZ1ZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyaW5nVmFsdWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1tVdGlscy5zdHJpbmdpZnk6ZXJyXSAnICsgZXJyKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLyoqXG4qIENvbnZlcnRzIGEgc3RyaW5naWZpZWQgb2JqZWN0IHRvIG9iamVjdFxuKiBAcGFyYW0gICB7U3RyaW5nfSAgICB2YWx1ZSAgICBieXRlQXJyYXkgdmFsdWVcbiogQHJldHVybiAge09iamVjdH0gICBlbmNvZGVkIHZhbHVlXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbVXRpbHMucGFyc2U6ZXJyXScgKyBlcnIpO1xuICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICBjb25zb2xlLmVycm9yKCdUaGUgdmFsdWUgdGhhdCBjYXVzZSB0aGUgZXJyb3I6JywgdmFsdWUpO1xuICAgIHRocm93IGVycjtcbiAgfVxufVxuXG4vKipcbiogQ29udmVydHMgYSBzdHJpbmdpZmllZCBvYmplY3QgdG8gb2JqZWN0XG4qIEBwYXJhbSAgIHtTdHJpbmd9ICAgIHZhbHVlICAgIGJ5dGVBcnJheSB2YWx1ZVxuKiBAcmV0dXJuICB7VWludDhBcnJheX0gICBlbmNvZGVkIHZhbHVlXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVG9VaW50OEFycmF5KHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHBhcnNlKHZhbHVlKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1tVdGlscy5wYXJzZVRvVWludDhBcnJheTplcnJdJyArIGVycik7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbi8qKlxuICAqIGZpbHRlciB0aGUgbWVzc2FnZXMgdG8gaGFzaCwgYnkgcmVtb3Zpbmcgc29tZSBmaWVsZHMgbm90IGdlbmVyYXRlZCBieSB0aGUgcnVudGltZSBjb3JlXG4gICogQHBhcmFtIHtNZXNzYWdlfSAgbWVzc2FnZSAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VcbiAgKiBAcGFyYW0ge1N0cmluZ30gIGRlY3J5cHRlZFZhbHVlIChPcHRpb25hbCkgICAgdmFsdWUgZnJvbSBib2R5LnZhbHVlIGluIGNhc2UgaXQgb3JpZ2luYWxseSBjb21lcyBlbmNyeXB0ZWRcbiAgKiBAcGFyYW0ge0pTT059ICBpZGVudGl0eShPcHRpb25hbCkgICAgYWRkIHRoZSBoeXBlcnR5IGlkZW50aXR5IGFzc29jaWF0ZWQgaW4gY2FzZSBpcyBub3QgYWRkZWQgdG8gdGhlIGluaXRpYWwgbWVzc2FnZVxuICAqIEByZXR1cm4ge01lc3NhZ2V9ICBuZXcgbWVzc2FnZSBmaWx0ZXJlZFxuICAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlck1lc3NhZ2VUb0hhc2gobWVzc2FnZSwgZGVjcnlwdGVkVmFsdWUsIGlkZW50aXR5KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogbWVzc2FnZS50eXBlLFxuICAgIGZyb206IG1lc3NhZ2UuZnJvbSxcbiAgICB0bzogbWVzc2FnZS50byxcbiAgICBib2R5OiB7XG4gICAgICBpZGVudGl0eTogaWRlbnRpdHkgfHwgbWVzc2FnZS5ib2R5LmlkZW50aXR5LFxuICAgICAgdmFsdWU6IGRlY3J5cHRlZFZhbHVlIHx8IG1lc3NhZ2UuYm9keS52YWx1ZSxcbiAgICAgIGhhbmRzaGFrZVBoYXNlOiBtZXNzYWdlLmJvZHkuaGFuZHNoYWtlUGhhc2VcbiAgICB9XG4gIH07XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3V0aWxzL3V0aWxzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQXdDQTtBQXNEQTtBQUlBO0FBVUE7QUFLQTtBQVVBO0FBVUE7QUFVQTtBQW1CQTtBQVFBO0FBUUE7QUFJQTtBQUlBO0FBV0E7QUFnQkE7QUFpQ0E7QUFZQTtBQWlCQTtBQXNCQTtBQVlBO0FBb0JBO0FBaUJBO0FBMENBO0FBdUNBO0FBWUE7QUFrQkE7QUFtQkE7QUFTQTtBQWNBO0FBZUE7QUFjQTtBQWVBO0FBb0JBO0FBZ0JBO0FBZ0JBO0FBQ0E7OztBQXBsQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkE7Ozs7O0FBS0E7Ozs7Ozs7O0FBUUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFTQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBSkE7QUFVQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///111\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Operators = function () {\n function Operators() {\n (0, _classCallCheck3.default)(this, Operators);\n }\n\n (0, _createClass3.default)(Operators, [{\n key: 'and',\n value: function and(params) {\n return params[0] && params[1];\n }\n }, {\n key: 'between',\n value: function between(params) {\n var start = parseInt(params[0][0]);\n var end = parseInt(params[0][1]);\n var now = params[1];\n\n if (end < start) {\n now = now < start ? now += 2400 : now;\n end += 2400;\n }\n\n return now > start && now < end;\n }\n }, {\n key: 'equals',\n value: function equals(params) {\n return String(params[0]) === '*' || String(params[0]) === String(params[1]);\n }\n }, {\n key: 'greaterThan',\n value: function greaterThan(params) {\n return params[1] > params[0];\n }\n }, {\n key: 'in',\n value: function _in(params) {\n return params[0].indexOf(params[1]) > -1;\n }\n }, {\n key: 'lessThan',\n value: function lessThan(params) {\n return params[1] < params[0];\n }\n }, {\n key: 'not',\n value: function not(params) {\n return !params[0];\n }\n }, {\n key: 'or',\n value: function or(params) {\n return params[0] || params[1];\n }\n }]);\n return Operators;\n}();\n\nexports.default = Operators;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvT3BlcmF0b3JzLmpzPzFjNDIiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgT3BlcmF0b3JzIHtcblxuICBhbmQocGFyYW1zKSB7XG4gICAgcmV0dXJuIHBhcmFtc1swXSAmJiBwYXJhbXNbMV07XG4gIH1cblxuICBiZXR3ZWVuKHBhcmFtcykge1xuICAgIGxldCBzdGFydCA9IHBhcnNlSW50KHBhcmFtc1swXVswXSk7XG4gICAgbGV0IGVuZCA9IHBhcnNlSW50KHBhcmFtc1swXVsxXSk7XG4gICAgbGV0IG5vdyA9IHBhcmFtc1sxXTtcblxuICAgIGlmIChlbmQgPCBzdGFydCkge1xuICAgICAgbm93ID0gKG5vdyA8IHN0YXJ0KSA/IG5vdyArPSAyNDAwIDogbm93O1xuICAgICAgZW5kICs9IDI0MDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIChub3cgPiBzdGFydCAmJiBub3cgPCBlbmQpO1xuICB9XG5cbiAgZXF1YWxzKHBhcmFtcykge1xuICAgIHJldHVybiBTdHJpbmcocGFyYW1zWzBdKSA9PT0gJyonIHx8IFN0cmluZyhwYXJhbXNbMF0pID09PSBTdHJpbmcocGFyYW1zWzFdKTtcbiAgfVxuXG4gIGdyZWF0ZXJUaGFuKHBhcmFtcykge1xuICAgIHJldHVybiBwYXJhbXNbMV0gPiBwYXJhbXNbMF07XG4gIH1cblxuICBpbihwYXJhbXMpIHtcbiAgICByZXR1cm4gcGFyYW1zWzBdLmluZGV4T2YocGFyYW1zWzFdKSA+IC0xO1xuICB9XG5cbiAgbGVzc1RoYW4ocGFyYW1zKSB7XG4gICAgcmV0dXJuIHBhcmFtc1sxXSA8IHBhcmFtc1swXTtcbiAgfVxuXG4gIG5vdChwYXJhbXMpIHtcbiAgICByZXR1cm4gIXBhcmFtc1swXTtcbiAgfVxuXG4gIG9yKHBhcmFtcykge1xuICAgIHJldHVybiBwYXJhbXNbMF0gfHwgcGFyYW1zWzFdO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgT3BlcmF0b3JzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvT3BlcmF0b3JzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///112\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Operators = __webpack_require__(112);\n\nvar _Operators2 = _interopRequireDefault(_Operators);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* @author Ana Caldeira \n* @classdesc Class to represent a condition and evaluate its applicability.\n*/\nvar Condition = function () {\n\n /**\n * Creates a new Condition.\n * @class\n * @param {string} attribute\n * @param {string} operator\n * @param {*} params\n */\n function Condition(attribute, operator, params) {\n (0, _classCallCheck3.default)(this, Condition);\n\n this.attribute = attribute;\n this.operator = operator;\n this.params = params;\n this.operators = new _Operators2.default();\n }\n\n /**\n * Verifies if the condition is applicable to the message. First, the system value that corresponds to the attribute is retrieved; then, that value is compared with the parameter specified in the condition by executing the operator implementation. If the operator is 'in' and the name of a group is given, then the array holding the members of the group is retrieved before the comparison.\n * @param {Object} context environment where the Policy Engine is being used\n * @param {Object} message\n */\n\n\n (0, _createClass3.default)(Condition, [{\n key: 'isApplicable',\n value: function isApplicable(context, message) {\n context[this.attribute] = { message: message };\n var value = context[this.attribute];\n var tempParam = void 0;\n\n if (this.operator === 'in') {\n if (!Array.isArray(this.params)) {\n tempParam = context.getGroup(this.params, message.to);\n return this.operators[this.operator]([tempParam, value]);\n }\n }\n\n return this.operators[this.operator]([this.params, value]);\n }\n }]);\n return Condition;\n}(); /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nexports.default = Condition;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29uZGl0aW9ucy9Db25kaXRpb24uanM/MmUzMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKiovXG5cbmltcG9ydCBPcGVyYXRvcnMgZnJvbSAnLi4vT3BlcmF0b3JzJztcblxuLyoqXG4qIEBhdXRob3IgQW5hIENhbGRlaXJhIDxhbmEuY2FsZGVpcmFAdGVjbmljby51bGlzYm9hLnB0PlxuKiBAY2xhc3NkZXNjIENsYXNzIHRvIHJlcHJlc2VudCBhIGNvbmRpdGlvbiBhbmQgZXZhbHVhdGUgaXRzIGFwcGxpY2FiaWxpdHkuXG4qL1xuY2xhc3MgQ29uZGl0aW9uIHtcblxuICAvKipcbiAgKiBDcmVhdGVzIGEgbmV3IENvbmRpdGlvbi5cbiAgKiBAY2xhc3NcbiAgKiBAcGFyYW0gIHtzdHJpbmd9ICBhdHRyaWJ1dGVcbiAgKiBAcGFyYW0gIHtzdHJpbmd9ICBvcGVyYXRvclxuICAqIEBwYXJhbSAgeyp9ICAgICAgIHBhcmFtc1xuICAqL1xuICBjb25zdHJ1Y3RvcihhdHRyaWJ1dGUsIG9wZXJhdG9yLCBwYXJhbXMpIHtcbiAgICB0aGlzLmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTtcbiAgICB0aGlzLm9wZXJhdG9yID0gb3BlcmF0b3I7XG4gICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XG4gICAgdGhpcy5vcGVyYXRvcnMgPSBuZXcgT3BlcmF0b3JzKCk7XG4gIH1cblxuICAvKipcbiAgKiBWZXJpZmllcyBpZiB0aGUgY29uZGl0aW9uIGlzIGFwcGxpY2FibGUgdG8gdGhlIG1lc3NhZ2UuIEZpcnN0LCB0aGUgc3lzdGVtIHZhbHVlIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQ7IHRoZW4sIHRoYXQgdmFsdWUgaXMgY29tcGFyZWQgd2l0aCB0aGUgcGFyYW1ldGVyIHNwZWNpZmllZCBpbiB0aGUgY29uZGl0aW9uIGJ5IGV4ZWN1dGluZyB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24uIElmIHRoZSBvcGVyYXRvciBpcyAnaW4nIGFuZCB0aGUgbmFtZSBvZiBhIGdyb3VwIGlzIGdpdmVuLCB0aGVuIHRoZSBhcnJheSBob2xkaW5nIHRoZSBtZW1iZXJzIG9mIHRoZSBncm91cCBpcyByZXRyaWV2ZWQgYmVmb3JlIHRoZSBjb21wYXJpc29uLlxuICAqIEBwYXJhbSAge09iamVjdH0gICAgY29udGV4dCAgIGVudmlyb25tZW50IHdoZXJlIHRoZSBQb2xpY3kgRW5naW5lIGlzIGJlaW5nIHVzZWRcbiAgKiBAcGFyYW0gIHtPYmplY3R9ICAgIG1lc3NhZ2VcbiAgKi9cbiAgaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UpIHtcbiAgICBjb250ZXh0W3RoaXMuYXR0cmlidXRlXSA9IHsgbWVzc2FnZTogbWVzc2FnZSB9O1xuICAgIGxldCB2YWx1ZSA9IGNvbnRleHRbdGhpcy5hdHRyaWJ1dGVdO1xuICAgIGxldCB0ZW1wUGFyYW07XG5cbiAgICBpZiAodGhpcy5vcGVyYXRvciA9PT0gJ2luJykge1xuICAgICAgaWYgKCEoQXJyYXkuaXNBcnJheSh0aGlzLnBhcmFtcykpKSB7XG4gICAgICAgIHRlbXBQYXJhbSA9IGNvbnRleHQuZ2V0R3JvdXAodGhpcy5wYXJhbXMsIG1lc3NhZ2UudG8pO1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVyYXRvcnNbdGhpcy5vcGVyYXRvcl0oW3RlbXBQYXJhbSwgdmFsdWVdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vcGVyYXRvcnNbdGhpcy5vcGVyYXRvcl0oW3RoaXMucGFyYW1zLCB2YWx1ZV0pO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29uZGl0aW9uO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvY29uZGl0aW9ucy9Db25kaXRpb24uanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBdUJBO0FBQ0E7Ozs7O0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFPQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBL0RBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1FQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///113\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(115), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeS5qcz85YWYxIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9qc29uL3N0cmluZ2lmeVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeS5qc1xuLy8gbW9kdWxlIGlkID0gMTE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAzIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///114\n')},function(module,exports,__webpack_require__){eval("var core = __webpack_require__(0);\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9qc29uL3N0cmluZ2lmeS5qcz9hYTQyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpO1xudmFyICRKU09OID0gY29yZS5KU09OIHx8IChjb3JlLkpTT04gPSB7IHN0cmluZ2lmeTogSlNPTi5zdHJpbmdpZnkgfSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHJldHVybiAkSlNPTi5zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3VtZW50cyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5LmpzXG4vLyBtb2R1bGUgaWQgPSAxMTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///115\n")},,,,function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(41);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(87);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _ActionsService = __webpack_require__(120);\n\nvar _ActionsService2 = _interopRequireDefault(_ActionsService);\n\nvar _PDP = __webpack_require__(121);\n\nvar _PDP2 = _interopRequireDefault(_PDP);\n\nvar _Policy = __webpack_require__(122);\n\nvar _Policy2 = _interopRequireDefault(_Policy);\n\nvar _utils = __webpack_require__(111);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('PEP'); // Log System\n\nvar PEP = function () {\n\n /**\n * Creates a Policy Enforcement Point (PEP) instance\n * @param {Object} context\n */\n function PEP(context) {\n (0, _classCallCheck3.default)(this, PEP);\n\n var _this = this;\n\n _this.pdp = new _PDP2.default(context);\n _this.actionsService = new _ActionsService2.default(context);\n _this.context = context;\n context.pep = _this;\n\n //TODO should be added a trigger to verify when the loadConfigurations is successfully completed\n context.loadConfigurations();\n }\n\n /**\n * return the messageBus in this Registry\n * @param {MessageBus} messageBus\n */\n\n\n (0, _createClass3.default)(PEP, [{\n key: 'addGUIListeners',\n value: function addGUIListeners() {\n var _this = this;\n\n _this.context.messageBus.addListener(_this.context.pepURL, function (msg) {\n var funcName = msg.body.method;\n\n var returnedValue = void 0;\n if (funcName === 'addToGroup') {\n var groupName = msg.body.params.groupName;\n var userEmail = msg.body.params.userEmail;\n returnedValue = _this.context.addToGroup(groupName, userEmail);\n } else if (funcName === 'createGroup') {\n var _groupName = msg.body.params.groupName;\n returnedValue = _this.context.createGroup(_groupName);\n } else if (funcName === 'addPolicy') {\n var source = msg.body.params.source;\n var key = msg.body.params.key;\n var policy = msg.body.params.policy;\n var combiningAlgorithm = msg.body.params.combiningAlgorithm;\n returnedValue = _this.addPolicy(source, key, policy, combiningAlgorithm);\n } else if (funcName === 'deleteGroup') {\n var _groupName2 = msg.body.params.groupName;\n returnedValue = _this.context.deleteGroup(_groupName2);\n } else if (funcName === 'removePolicy') {\n var _source = msg.body.params.source;\n var _key = msg.body.params.key;\n returnedValue = _this.removePolicy(_source, _key);\n } else if (funcName === 'savePolicies') {\n var _source2 = msg.body.params.source;\n returnedValue = _this.context.savePolicies(_source2);\n } else if (funcName === 'userPolicies') {\n returnedValue = _this.context.userPolicies;\n } else if (funcName === 'activeUserPolicy') {\n var userPolicy = msg.body.params.userPolicy;\n if (userPolicy) {\n _this.context.activeUserPolicy = userPolicy;\n }\n returnedValue = _this.context.activeUserPolicy;\n } else if (funcName === 'userPolicy') {\n var _key2 = msg.body.params.key;\n returnedValue = _this.context.userPolicies[_key2];\n } else if (funcName === 'saveActivePolicy') {\n returnedValue = _this.context.saveActivePolicy();\n } else if (funcName === 'getMyEmails') {\n returnedValue = _this.context.getMyEmails();\n } else if (funcName === 'getMyHyperties') {\n returnedValue = _this.context.getMyHyperties();\n } else if (funcName === 'groups') {\n returnedValue = _this.context.groups;\n } else if (funcName === 'getGroupsNames') {\n returnedValue = _this.context.getGroupsNames();\n }if (funcName === 'removeFromGroup') {\n var _groupName3 = msg.body.params.groupName;\n var _userEmail = msg.body.params.userEmail;\n returnedValue = _this.context.removeFromGroup(_groupName3, _userEmail);\n }\n\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n _this.context.messageBus.postMessage(replyMsg);\n });\n }\n\n /**\n * Adds a policy to the Policy Enforcement Point (PEP). The policy can be created by the service\n * provider or by the user.\n * @param {String} source\n * @param {String} key\n * @param {Object} policy\n */\n\n }, {\n key: 'addPolicy',\n value: function addPolicy(source, key, policy, combiningAlgorithm) {\n if (!source) throw new Error('source is not defined');\n if (!key) throw new Error('key is not defined');\n\n if (policy === undefined) {\n policy = new _Policy2.default(key, [], [], combiningAlgorithm);\n } else {\n if (!(policy instanceof _Policy2.default)) {\n policy = new _Policy2.default(policy.key, policy.rules, policy.actions, policy.combiningAlgorithm);\n }\n }\n\n switch (source) {\n case 'SERVICE_PROVIDER':\n this.context.savePolicies(source, policy, key);\n break;\n case 'USER':\n this.context.userPolicies[key] = policy;\n this.context.savePolicies(source);\n break;\n default:\n throw Error('Unknown policy source: ' + source);\n }\n }\n }, {\n key: 'authorise',\n value: function authorise(message, isIncoming) {\n var _this2 = this;\n\n // log.log('[Policy.PEP Authorise] ', message);\n // log.log(message);\n if (!message) throw new Error('message is not defined');\n if (!message.from) throw new Error('message.from is not defined');\n if (!message.to) throw new Error('message.to is not defined');\n if (!message.type) throw new Error('message.type is not defined');\n message.body = message.body || {};\n\n return new _promise2.default(function (resolve, reject) {\n\n message.body = message.body || {};\n var _this = _this2;\n\n var result = _this.pdp.evaluatePolicies(message, isIncoming);\n if (result === 'Not Applicable') {\n result = _this.context.defaultBehaviour;\n message.body.auth = false;\n }\n _this.actionsService.enforcePolicies(message, isIncoming).then(function (messages) {\n for (var i in messages) {\n message = messages[i];\n if (result) {\n message.body.auth = message.body.auth === undefined ? true : message.body.auth;\n resolve(message);\n } else {\n var errorMessage = { body: { code: 403, description: 'Blocked by policy' }, from: message.to, to: message.from, type: 'response' };\n reject(errorMessage);\n }\n }\n }, function (error) {\n reject(error);\n });\n });\n }\n }, {\n key: 'authoriseSync',\n value: function authoriseSync(message) {\n var result = void 0;\n message.body = message.body || {};\n result = this.pdp.evaluatePolicies(message, true);\n if (result === 'Not Applicable') {\n result = this.context.defaultBehaviour;\n }\n return result;\n }\n }, {\n key: 'removePolicy',\n value: function removePolicy(source, key) {\n if (!source) throw new Error('source is not defined');\n if (source !== '*' && !key) throw new Error('key is not defined');\n\n switch (source) {\n case '*':\n this.context.serviceProviderPolicy = {};\n this.context.userPolicies = {};\n this.context.activeUserPolicy = undefined;\n this.context.savePolicies('USER');\n this.context.savePolicies('SERVICE_PROVIDER');\n this.context.saveActivePolicy();\n break;\n case 'SERVICE_PROVIDER':\n delete this.context.serviceProviderPolicy[key];\n this.context.savePolicies();\n break;\n case 'USER':\n delete this.context.userPolicies[key];\n if (key === this.context.activeUserPolicy) {\n this.context.activeUserPolicy = undefined;\n this.context.saveActivePolicy();\n }\n this.context.savePolicies('USER');\n break;\n default:\n throw Error('Unknown policy source: ' + source);\n }\n }\n }, {\n key: 'messageBus',\n get: function get() {\n var _this = this;\n return _this.context.messageBus;\n }\n\n /**\n * Set the messageBus in this Registry\n * @param {MessageBus} messageBus\n */\n ,\n set: function set(messageBus) {\n var _this = this;\n _this.context.messageBus = messageBus;\n _this.addGUIListeners();\n }\n }]);\n return PEP;\n}();\n\nexports.default = PEP;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUEVQLmpzPzQ3ZjIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9nIFN5c3RlbVxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdQRVAnKTtcblxuaW1wb3J0IEFjdGlvbnNTZXJ2aWNlIGZyb20gJy4vQWN0aW9uc1NlcnZpY2UnO1xuaW1wb3J0IFBEUCBmcm9tICcuL1BEUCc7XG5pbXBvcnQgUG9saWN5IGZyb20gJy4vUG9saWN5JztcbmltcG9ydCB7aXNIeXBlcnR5VVJMfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5cbmNsYXNzIFBFUCB7XG5cbiAgLyoqXG4gICogQ3JlYXRlcyBhIFBvbGljeSBFbmZvcmNlbWVudCBQb2ludCAoUEVQKSBpbnN0YW5jZVxuICAqIEBwYXJhbSAgICB7T2JqZWN0fSAgICBjb250ZXh0XG4gICovXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMucGRwID0gbmV3IFBEUChjb250ZXh0KTtcbiAgICBfdGhpcy5hY3Rpb25zU2VydmljZSA9IG5ldyBBY3Rpb25zU2VydmljZShjb250ZXh0KTtcbiAgICBfdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICBjb250ZXh0LnBlcCA9IF90aGlzO1xuXG4gICAgLy9UT0RPIHNob3VsZCBiZSBhZGRlZCBhIHRyaWdnZXIgdG8gdmVyaWZ5IHdoZW4gdGhlIGxvYWRDb25maWd1cmF0aW9ucyBpcyBzdWNjZXNzZnVsbHkgY29tcGxldGVkXG4gICAgY29udGV4dC5sb2FkQ29uZmlndXJhdGlvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAqIHJldHVybiB0aGUgbWVzc2FnZUJ1cyBpbiB0aGlzIFJlZ2lzdHJ5XG4gICogQHBhcmFtIHtNZXNzYWdlQnVzfSAgICAgICAgICAgbWVzc2FnZUJ1c1xuICAqL1xuICBnZXQgbWVzc2FnZUJ1cygpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBfdGhpcy5jb250ZXh0Lm1lc3NhZ2VCdXM7XG4gIH1cblxuICAvKipcbiAgKiBTZXQgdGhlIG1lc3NhZ2VCdXMgaW4gdGhpcyBSZWdpc3RyeVxuICAqIEBwYXJhbSB7TWVzc2FnZUJ1c30gICAgICAgICAgIG1lc3NhZ2VCdXNcbiAgKi9cbiAgc2V0IG1lc3NhZ2VCdXMobWVzc2FnZUJ1cykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgX3RoaXMuY29udGV4dC5tZXNzYWdlQnVzID0gbWVzc2FnZUJ1cztcbiAgICBfdGhpcy5hZGRHVUlMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIGFkZEdVSUxpc3RlbmVycygpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMuY29udGV4dC5tZXNzYWdlQnVzLmFkZExpc3RlbmVyKF90aGlzLmNvbnRleHQucGVwVVJMLCAobXNnKSA9PiB7XG4gICAgICBsZXQgZnVuY05hbWUgPSBtc2cuYm9keS5tZXRob2Q7XG5cbiAgICAgIGxldCByZXR1cm5lZFZhbHVlO1xuICAgICAgaWYgKGZ1bmNOYW1lID09PSAnYWRkVG9Hcm91cCcpIHtcbiAgICAgICAgbGV0IGdyb3VwTmFtZSA9IG1zZy5ib2R5LnBhcmFtcy5ncm91cE5hbWU7XG4gICAgICAgIGxldCB1c2VyRW1haWwgPSBtc2cuYm9keS5wYXJhbXMudXNlckVtYWlsO1xuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC5hZGRUb0dyb3VwKGdyb3VwTmFtZSwgdXNlckVtYWlsKTtcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdjcmVhdGVHcm91cCcpIHtcbiAgICAgICAgbGV0IGdyb3VwTmFtZSA9IG1zZy5ib2R5LnBhcmFtcy5ncm91cE5hbWU7XG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5jb250ZXh0LmNyZWF0ZUdyb3VwKGdyb3VwTmFtZSk7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnYWRkUG9saWN5Jykge1xuICAgICAgICBsZXQgc291cmNlID0gbXNnLmJvZHkucGFyYW1zLnNvdXJjZTtcbiAgICAgICAgbGV0IGtleSA9IG1zZy5ib2R5LnBhcmFtcy5rZXk7XG4gICAgICAgIGxldCBwb2xpY3kgPSBtc2cuYm9keS5wYXJhbXMucG9saWN5O1xuICAgICAgICBsZXQgY29tYmluaW5nQWxnb3JpdGhtID0gbXNnLmJvZHkucGFyYW1zLmNvbWJpbmluZ0FsZ29yaXRobTtcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmFkZFBvbGljeShzb3VyY2UsIGtleSwgcG9saWN5LCBjb21iaW5pbmdBbGdvcml0aG0pO1xuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ2RlbGV0ZUdyb3VwJykge1xuICAgICAgICBsZXQgZ3JvdXBOYW1lID0gbXNnLmJvZHkucGFyYW1zLmdyb3VwTmFtZTtcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuZGVsZXRlR3JvdXAoZ3JvdXBOYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdyZW1vdmVQb2xpY3knKSB7XG4gICAgICAgIGxldCBzb3VyY2UgPSBtc2cuYm9keS5wYXJhbXMuc291cmNlO1xuICAgICAgICBsZXQga2V5ID0gbXNnLmJvZHkucGFyYW1zLmtleTtcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLnJlbW92ZVBvbGljeShzb3VyY2UsIGtleSk7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnc2F2ZVBvbGljaWVzJykge1xuICAgICAgICBsZXQgc291cmNlID0gbXNnLmJvZHkucGFyYW1zLnNvdXJjZTtcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuc2F2ZVBvbGljaWVzKHNvdXJjZSk7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAndXNlclBvbGljaWVzJykge1xuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC51c2VyUG9saWNpZXM7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnYWN0aXZlVXNlclBvbGljeScpIHtcbiAgICAgICAgbGV0IHVzZXJQb2xpY3kgPSBtc2cuYm9keS5wYXJhbXMudXNlclBvbGljeTtcbiAgICAgICAgaWYgKHVzZXJQb2xpY3kpIHsgX3RoaXMuY29udGV4dC5hY3RpdmVVc2VyUG9saWN5ID0gdXNlclBvbGljeTsgfVxuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC5hY3RpdmVVc2VyUG9saWN5O1xuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ3VzZXJQb2xpY3knKSB7XG4gICAgICAgIGxldCBrZXkgPSBtc2cuYm9keS5wYXJhbXMua2V5O1xuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC51c2VyUG9saWNpZXNba2V5XTtcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdzYXZlQWN0aXZlUG9saWN5Jykge1xuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC5zYXZlQWN0aXZlUG9saWN5KCk7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnZ2V0TXlFbWFpbHMnKSB7XG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5jb250ZXh0LmdldE15RW1haWxzKCk7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnZ2V0TXlIeXBlcnRpZXMnKSB7XG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5jb250ZXh0LmdldE15SHlwZXJ0aWVzKCk7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnZ3JvdXBzJykge1xuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC5ncm91cHM7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnZ2V0R3JvdXBzTmFtZXMnKSB7XG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5jb250ZXh0LmdldEdyb3Vwc05hbWVzKCk7XG4gICAgICB9IGlmIChmdW5jTmFtZSA9PT0gJ3JlbW92ZUZyb21Hcm91cCcpIHtcbiAgICAgICAgbGV0IGdyb3VwTmFtZSA9IG1zZy5ib2R5LnBhcmFtcy5ncm91cE5hbWU7XG4gICAgICAgIGxldCB1c2VyRW1haWwgPSBtc2cuYm9keS5wYXJhbXMudXNlckVtYWlsO1xuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC5yZW1vdmVGcm9tR3JvdXAoZ3JvdXBOYW1lLCB1c2VyRW1haWwpO1xuICAgICAgfVxuXG4gICAgICBsZXQgdmFsdWUgPSB7dHlwZTogJ2V4ZWN1dGUnLCB2YWx1ZTogcmV0dXJuZWRWYWx1ZSwgY29kZTogMjAwfTtcbiAgICAgIGxldCByZXBseU1zZyA9IHtpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCB0bzogbXNnLmZyb20sIGZyb206IG1zZy50bywgYm9keTogdmFsdWV9O1xuICAgICAgX3RoaXMuY29udGV4dC5tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHJlcGx5TXNnKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIEFkZHMgYSBwb2xpY3kgdG8gdGhlIFBvbGljeSBFbmZvcmNlbWVudCBQb2ludCAoUEVQKS4gVGhlIHBvbGljeSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgc2VydmljZVxuICAqIHByb3ZpZGVyIG9yIGJ5IHRoZSB1c2VyLlxuICAqIEBwYXJhbSAgICB7U3RyaW5nfSAgICBzb3VyY2VcbiAgKiBAcGFyYW0gICAge1N0cmluZ30gICAga2V5XG4gICogQHBhcmFtICAgIHtPYmplY3R9ICAgIHBvbGljeVxuICAqL1xuICBhZGRQb2xpY3koc291cmNlLCBrZXksIHBvbGljeSwgY29tYmluaW5nQWxnb3JpdGhtKSB7XG4gICAgaWYgKCFzb3VyY2UpIHRocm93IG5ldyBFcnJvcignc291cmNlIGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgaWYgKCFrZXkpIHRocm93IG5ldyBFcnJvcigna2V5IGlzIG5vdCBkZWZpbmVkJyk7XG5cbiAgICBpZiAocG9saWN5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHBvbGljeSA9IG5ldyBQb2xpY3koa2V5LCBbXSwgW10sIGNvbWJpbmluZ0FsZ29yaXRobSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghKHBvbGljeSBpbnN0YW5jZW9mIFBvbGljeSkpIHtcbiAgICAgICAgcG9saWN5ID0gbmV3IFBvbGljeShwb2xpY3kua2V5LCBwb2xpY3kucnVsZXMsIHBvbGljeS5hY3Rpb25zLCBwb2xpY3kuY29tYmluaW5nQWxnb3JpdGhtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKHNvdXJjZSkge1xuICAgICAgY2FzZSAnU0VSVklDRV9QUk9WSURFUic6XG4gICAgICAgIHRoaXMuY29udGV4dC5zYXZlUG9saWNpZXMoc291cmNlLCBwb2xpY3ksIGtleSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVVNFUic6XG4gICAgICAgIHRoaXMuY29udGV4dC51c2VyUG9saWNpZXNba2V5XSA9IHBvbGljeTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmVQb2xpY2llcyhzb3VyY2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IEVycm9yKCdVbmtub3duIHBvbGljeSBzb3VyY2U6ICcgKyBzb3VyY2UpO1xuICAgIH1cbiAgfVxuXG4gIGF1dGhvcmlzZShtZXNzYWdlLCBpc0luY29taW5nKSB7XG4gICAgLy8gbG9nLmxvZygnW1BvbGljeS5QRVAgQXV0aG9yaXNlXSAnLCBtZXNzYWdlKTtcbiAgICAvLyBsb2cubG9nKG1lc3NhZ2UpO1xuICAgIGlmICghbWVzc2FnZSkgdGhyb3cgbmV3IEVycm9yKCdtZXNzYWdlIGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgaWYgKCFtZXNzYWdlLmZyb20pIHRocm93IG5ldyBFcnJvcignbWVzc2FnZS5mcm9tIGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgaWYgKCFtZXNzYWdlLnRvKSB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UudG8gaXMgbm90IGRlZmluZWQnKTtcbiAgICBpZiAoIW1lc3NhZ2UudHlwZSkgdGhyb3cgbmV3IEVycm9yKCdtZXNzYWdlLnR5cGUgaXMgbm90IGRlZmluZWQnKTtcbiAgICBtZXNzYWdlLmJvZHkgPSBtZXNzYWdlLmJvZHkgfHwge307XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBtZXNzYWdlLmJvZHkgPSBtZXNzYWdlLmJvZHkgfHwge307XG4gICAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBsZXQgcmVzdWx0ID0gX3RoaXMucGRwLmV2YWx1YXRlUG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZyk7XG4gICAgICBpZiAocmVzdWx0ID09PSAnTm90IEFwcGxpY2FibGUnKSB7XG4gICAgICAgIHJlc3VsdCA9IF90aGlzLmNvbnRleHQuZGVmYXVsdEJlaGF2aW91cjtcbiAgICAgICAgbWVzc2FnZS5ib2R5LmF1dGggPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIF90aGlzLmFjdGlvbnNTZXJ2aWNlLmVuZm9yY2VQb2xpY2llcyhtZXNzYWdlLCBpc0luY29taW5nKS50aGVuKG1lc3NhZ2VzID0+IHtcbiAgICAgICAgZm9yIChsZXQgaSBpbiBtZXNzYWdlcykge1xuICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlc1tpXTtcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICBtZXNzYWdlLmJvZHkuYXV0aCA9IChtZXNzYWdlLmJvZHkuYXV0aCA9PT0gdW5kZWZpbmVkKSA/IHRydWUgOiBtZXNzYWdlLmJvZHkuYXV0aDtcbiAgICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSB7IGJvZHk6IHsgY29kZTogNDAzLCBkZXNjcmlwdGlvbjogJ0Jsb2NrZWQgYnkgcG9saWN5JyB9LCBmcm9tOiBtZXNzYWdlLnRvLCB0bzogbWVzc2FnZS5mcm9tLCB0eXBlOiAncmVzcG9uc2UnIH07XG4gICAgICAgICAgICByZWplY3QoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfVxuICBhdXRob3Jpc2VTeW5jKG1lc3NhZ2UpIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIG1lc3NhZ2UuYm9keSA9IG1lc3NhZ2UuYm9keSB8fCB7fTtcbiAgICByZXN1bHQgPSB0aGlzLnBkcC5ldmFsdWF0ZVBvbGljaWVzKG1lc3NhZ2UsIHRydWUpO1xuICAgIGlmIChyZXN1bHQgPT09ICdOb3QgQXBwbGljYWJsZScpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuY29udGV4dC5kZWZhdWx0QmVoYXZpb3VyO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuXG4gIH1cblxuICByZW1vdmVQb2xpY3koc291cmNlLCBrZXkpIHtcbiAgICBpZiAoIXNvdXJjZSkgdGhyb3cgbmV3IEVycm9yKCdzb3VyY2UgaXMgbm90IGRlZmluZWQnKTtcbiAgICBpZiAoc291cmNlICE9PSAnKicgJiYgIWtleSkgdGhyb3cgbmV3IEVycm9yKCdrZXkgaXMgbm90IGRlZmluZWQnKTtcblxuICAgIHN3aXRjaCAoc291cmNlKSB7XG4gICAgICBjYXNlICcqJzpcbiAgICAgICAgdGhpcy5jb250ZXh0LnNlcnZpY2VQcm92aWRlclBvbGljeSA9IHt9O1xuICAgICAgICB0aGlzLmNvbnRleHQudXNlclBvbGljaWVzID0ge307XG4gICAgICAgIHRoaXMuY29udGV4dC5hY3RpdmVVc2VyUG9saWN5ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNvbnRleHQuc2F2ZVBvbGljaWVzKCdVU0VSJyk7XG4gICAgICAgIHRoaXMuY29udGV4dC5zYXZlUG9saWNpZXMoJ1NFUlZJQ0VfUFJPVklERVInKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmVBY3RpdmVQb2xpY3koKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdTRVJWSUNFX1BST1ZJREVSJzpcbiAgICAgICAgZGVsZXRlIHRoaXMuY29udGV4dC5zZXJ2aWNlUHJvdmlkZXJQb2xpY3lba2V5XTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmVQb2xpY2llcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1VTRVInOlxuICAgICAgICBkZWxldGUgdGhpcy5jb250ZXh0LnVzZXJQb2xpY2llc1trZXldO1xuICAgICAgICBpZiAoa2V5ID09PSB0aGlzLmNvbnRleHQuYWN0aXZlVXNlclBvbGljeSkge1xuICAgICAgICAgIHRoaXMuY29udGV4dC5hY3RpdmVVc2VyUG9saWN5ID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHRoaXMuY29udGV4dC5zYXZlQWN0aXZlUG9saWN5KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmVQb2xpY2llcygnVVNFUicpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IEVycm9yKCdVbmtub3duIHBvbGljeSBzb3VyY2U6ICcgKyBzb3VyY2UpO1xuICAgIH1cbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IFBFUDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L1BFUC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7OztBQU5BO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVdBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF0QkE7QUF3QkE7OztBQXZMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUE4S0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///119\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(41);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ActionsService = function () {\n function ActionsService(context) {\n (0, _classCallCheck3.default)(this, ActionsService);\n\n this.context = context;\n }\n\n (0, _createClass3.default)(ActionsService, [{\n key: 'enforcePolicies',\n value: function enforcePolicies(message, isIncomingMessage) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n\n var policies = _this.context.getPolicies(message, isIncomingMessage);\n\n if (policies !== undefined) {\n if (policies.serviceProviderPolicy !== undefined) {\n policies.serviceProviderPolicy.enforceActions(_this.context, message).then(function (messages) {\n resolve(messages);\n }, function (error) {\n reject(error);\n });\n } else {\n if (policies.userPolicy !== undefined) {\n policies.userPolicy.enforceActions(_this.context, message).then(function (messages) {\n resolve(messages);\n }, function (error) {\n reject(error);\n });\n } else {\n resolve([message]);\n }\n }\n } else {\n resolve([message]);\n }\n });\n }\n }, {\n key: 'forwardToID',\n value: function forwardToID(message, email) {\n var _this = this;\n if (!_this.context.runtimeRegistry) throw new Error('forward message to given ID is unsupported in this environment');\n\n return new _promise2.default(function (resolve, reject) {\n if (_this.context.runtimeRegistry.hypertiesList[0].hypertyURL === message.to) {\n var splitTo = message.to.split('://');\n if (splitTo[0] !== 'runtime') {\n _this.context.runtimeRegistry.discoverHypertyPerUser(email).then(function (result) {\n message.to = result.hypertyURL;\n message.body.via = undefined;\n resolve(message);\n _this.context.runtimeRegistry._messageBus.postMessage(message);\n }, function (error) {\n reject(error);\n });\n } else {\n resolve(message);\n }\n } else {\n resolve(message);\n }\n });\n }\n }, {\n key: 'forwardToHyperty',\n value: function forwardToHyperty(message, hypertyURL) {\n var _this = this;\n if (!_this.context.runtimeRegistry) throw new Error('forward message to given ID is unsupported in this environment');\n\n return new _promise2.default(function (resolve) {\n if (_this.context.runtimeRegistry.hypertiesList[0].hypertyURL === message.to) {\n var splitTo = message.to.split('://');\n if (splitTo[0] !== 'runtime') {\n message.to = hypertyURL;\n message.body.via = undefined;\n resolve(message);\n _this.context.runtimeRegistry._messageBus.postMessage(message);\n } else {\n resolve(message);\n }\n } else {\n resolve(message);\n }\n });\n }\n }, {\n key: 'sendAutomaticMessage',\n value: function sendAutomaticMessage(message, text) {\n var _this = this;\n return new _promise2.default(function (resolve) {\n var automaticMessage = {\n from: message.to,\n to: message.from,\n body: {\n value: text\n },\n type: message.type\n };\n resolve(message);\n _this.context.runtimeRegistry._messageBus.postMessage(automaticMessage);\n });\n }\n }]);\n return ActionsService;\n}();\n\nexports.default = ActionsService;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvQWN0aW9uc1NlcnZpY2UuanM/MjliZCJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBBY3Rpb25zU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dCkge1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gIH1cblxuICBlbmZvcmNlUG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZ01lc3NhZ2UpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgIGxldCBwb2xpY2llcyA9IF90aGlzLmNvbnRleHQuZ2V0UG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZ01lc3NhZ2UpO1xuXG4gICAgICBpZiAocG9saWNpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAocG9saWNpZXMuc2VydmljZVByb3ZpZGVyUG9saWN5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwb2xpY2llcy5zZXJ2aWNlUHJvdmlkZXJQb2xpY3kuZW5mb3JjZUFjdGlvbnMoX3RoaXMuY29udGV4dCwgbWVzc2FnZSkudGhlbihtZXNzYWdlcyA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2VzKTtcbiAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHBvbGljaWVzLnVzZXJQb2xpY3kgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcG9saWNpZXMudXNlclBvbGljeS5lbmZvcmNlQWN0aW9ucyhfdGhpcy5jb250ZXh0LCBtZXNzYWdlKS50aGVuKG1lc3NhZ2VzID0+IHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShtZXNzYWdlcyk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKFttZXNzYWdlXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKFttZXNzYWdlXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmb3J3YXJkVG9JRChtZXNzYWdlLCBlbWFpbCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgaWYgKCFfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeSkgdGhyb3cgbmV3IEVycm9yKCdmb3J3YXJkIG1lc3NhZ2UgdG8gZ2l2ZW4gSUQgaXMgdW5zdXBwb3J0ZWQgaW4gdGhpcyBlbnZpcm9ubWVudCcpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeS5oeXBlcnRpZXNMaXN0WzBdLmh5cGVydHlVUkwgPT09IG1lc3NhZ2UudG8pIHtcbiAgICAgICAgbGV0IHNwbGl0VG8gPSAobWVzc2FnZS50bykuc3BsaXQoJzovLycpO1xuICAgICAgICBpZiAoc3BsaXRUb1swXSAhPT0gJ3J1bnRpbWUnKSB7XG4gICAgICAgICAgX3RoaXMuY29udGV4dC5ydW50aW1lUmVnaXN0cnkuZGlzY292ZXJIeXBlcnR5UGVyVXNlcihlbWFpbCkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgbWVzc2FnZS50byA9IHJlc3VsdC5oeXBlcnR5VVJMO1xuICAgICAgICAgICAgbWVzc2FnZS5ib2R5LnZpYSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7XG4gICAgICAgICAgICBfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZvcndhcmRUb0h5cGVydHkobWVzc2FnZSwgaHlwZXJ0eVVSTCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgaWYgKCFfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeSkgdGhyb3cgbmV3IEVycm9yKCdmb3J3YXJkIG1lc3NhZ2UgdG8gZ2l2ZW4gSUQgaXMgdW5zdXBwb3J0ZWQgaW4gdGhpcyBlbnZpcm9ubWVudCcpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBpZiAoX3RoaXMuY29udGV4dC5ydW50aW1lUmVnaXN0cnkuaHlwZXJ0aWVzTGlzdFswXS5oeXBlcnR5VVJMID09PSBtZXNzYWdlLnRvKSB7XG4gICAgICAgIGxldCBzcGxpdFRvID0gKG1lc3NhZ2UudG8pLnNwbGl0KCc6Ly8nKTtcbiAgICAgICAgaWYgKHNwbGl0VG9bMF0gIT09ICdydW50aW1lJykge1xuICAgICAgICAgIG1lc3NhZ2UudG8gPSBoeXBlcnR5VVJMO1xuICAgICAgICAgIG1lc3NhZ2UuYm9keS52aWEgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcbiAgICAgICAgICBfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2VuZEF1dG9tYXRpY01lc3NhZ2UobWVzc2FnZSwgdGV4dCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBsZXQgYXV0b21hdGljTWVzc2FnZSA9IHtcbiAgICAgICAgZnJvbTogbWVzc2FnZS50byxcbiAgICAgICAgdG86IG1lc3NhZ2UuZnJvbSxcbiAgICAgICAgYm9keToge1xuICAgICAgICAgIHZhbHVlOiB0ZXh0XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IG1lc3NhZ2UudHlwZVxuICAgICAgfTtcbiAgICAgIHJlc29sdmUobWVzc2FnZSk7XG4gICAgICBfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShhdXRvbWF0aWNNZXNzYWdlKTtcbiAgICB9KTtcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFjdGlvbnNTZXJ2aWNlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvQWN0aW9uc1NlcnZpY2UuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFOQTtBQVFBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///120\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Operators = __webpack_require__(112);\n\nvar _Operators2 = _interopRequireDefault(_Operators);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* The Policy Decision Point (PDP) decides if a message is to be authorised by checking a set of\n* policies. The resource to be verified is specified in the first word of the 'condition' field of\n* a Policy object. The implementation that verifies if the message is compliant with a policy is\n* specified in a hashtable to allow dynamic definition of the implementation, providing\n* extensibility to the Policy Engine functionalities.\n*/\nvar PDP = function () {\n function PDP(context) {\n (0, _classCallCheck3.default)(this, PDP);\n\n this.context = context;\n this.operators = new _Operators2.default();\n }\n\n (0, _createClass3.default)(PDP, [{\n key: 'evaluatePolicies',\n value: function evaluatePolicies(message, isIncomingMessage) {\n var policies = this.context.getPolicies(message, isIncomingMessage);\n var result = 'Not Applicable';\n if (policies !== undefined) {\n result = this.evaluatePolicy(message, policies.serviceProviderPolicy, isIncomingMessage);\n if (result || result === 'Not Applicable') {\n var userResult = this.evaluatePolicy(message, policies.userPolicy, isIncomingMessage);\n if (userResult !== 'Not Applicable') {\n result = userResult;\n }\n }\n }\n\n return result;\n }\n }, {\n key: 'evaluatePolicy',\n value: function evaluatePolicy(message, policy, isIncoming) {\n var result = 'Not Applicable';\n if (policy) {\n result = policy.evaluateRules(this.context, message, isIncoming);\n }\n\n return result;\n }\n }]);\n return PDP;\n}();\n\nexports.default = PDP;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUERQLmpzP2U5YmEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9wZXJhdG9ycyBmcm9tICcuL09wZXJhdG9ycyc7XG5cbi8qKlxuKiBUaGUgUG9saWN5IERlY2lzaW9uIFBvaW50IChQRFApIGRlY2lkZXMgaWYgYSBtZXNzYWdlIGlzIHRvIGJlIGF1dGhvcmlzZWQgYnkgY2hlY2tpbmcgYSBzZXQgb2ZcbiogcG9saWNpZXMuIFRoZSByZXNvdXJjZSB0byBiZSB2ZXJpZmllZCBpcyBzcGVjaWZpZWQgaW4gdGhlIGZpcnN0IHdvcmQgb2YgdGhlICdjb25kaXRpb24nIGZpZWxkIG9mXG4qIGEgUG9saWN5IG9iamVjdC4gVGhlIGltcGxlbWVudGF0aW9uIHRoYXQgdmVyaWZpZXMgaWYgdGhlIG1lc3NhZ2UgaXMgY29tcGxpYW50IHdpdGggYSBwb2xpY3kgaXNcbiogc3BlY2lmaWVkIGluIGEgaGFzaHRhYmxlIHRvIGFsbG93IGR5bmFtaWMgZGVmaW5pdGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24sIHByb3ZpZGluZ1xuKiBleHRlbnNpYmlsaXR5IHRvIHRoZSBQb2xpY3kgRW5naW5lIGZ1bmN0aW9uYWxpdGllcy5cbiovXG5jbGFzcyBQRFAge1xuXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQpIHtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMub3BlcmF0b3JzID0gbmV3IE9wZXJhdG9ycygpO1xuICB9XG5cbiAgZXZhbHVhdGVQb2xpY2llcyhtZXNzYWdlLCBpc0luY29taW5nTWVzc2FnZSkge1xuICAgIGxldCBwb2xpY2llcyA9IHRoaXMuY29udGV4dC5nZXRQb2xpY2llcyhtZXNzYWdlLCBpc0luY29taW5nTWVzc2FnZSk7XG4gICAgbGV0IHJlc3VsdCA9ICdOb3QgQXBwbGljYWJsZSc7XG4gICAgaWYgKHBvbGljaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuZXZhbHVhdGVQb2xpY3kobWVzc2FnZSwgcG9saWNpZXMuc2VydmljZVByb3ZpZGVyUG9saWN5LCBpc0luY29taW5nTWVzc2FnZSk7XG4gICAgICBpZiAocmVzdWx0IHx8IHJlc3VsdCA9PT0gJ05vdCBBcHBsaWNhYmxlJykge1xuICAgICAgICBsZXQgdXNlclJlc3VsdCA9IHRoaXMuZXZhbHVhdGVQb2xpY3kobWVzc2FnZSwgcG9saWNpZXMudXNlclBvbGljeSwgaXNJbmNvbWluZ01lc3NhZ2UpO1xuICAgICAgICBpZiAodXNlclJlc3VsdCAhPT0gJ05vdCBBcHBsaWNhYmxlJykge1xuICAgICAgICAgIHJlc3VsdCA9IHVzZXJSZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZXZhbHVhdGVQb2xpY3kobWVzc2FnZSwgcG9saWN5LCBpc0luY29taW5nKSB7XG4gICAgbGV0IHJlc3VsdCA9ICdOb3QgQXBwbGljYWJsZSc7XG4gICAgaWYgKHBvbGljeSkge1xuICAgICAgcmVzdWx0ID0gcG9saWN5LmV2YWx1YXRlUnVsZXModGhpcy5jb250ZXh0LCBtZXNzYWdlLCBpc0luY29taW5nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUERQO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvUERQLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7Ozs7O0FBQ0E7Ozs7Ozs7QUFPQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///121\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(41);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _AllowOverrides = __webpack_require__(123);\n\nvar _AllowOverrides2 = _interopRequireDefault(_AllowOverrides);\n\nvar _BlockOverrides = __webpack_require__(124);\n\nvar _BlockOverrides2 = _interopRequireDefault(_BlockOverrides);\n\nvar _FirstApplicable = __webpack_require__(125);\n\nvar _FirstApplicable2 = _interopRequireDefault(_FirstApplicable);\n\nvar _Rule = __webpack_require__(126);\n\nvar _Rule2 = _interopRequireDefault(_Rule);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Policy = function () {\n function Policy(key, rules, actions, combiningAlgorithm) {\n (0, _classCallCheck3.default)(this, Policy);\n\n if (!key) throw new Error('key is not defined');\n if (!actions) throw new Error('actions are not defined');\n\n this.actions = actions;\n this.key = key;\n this._setRules(rules);\n this._setCombiningAlgorithm(combiningAlgorithm);\n }\n\n (0, _createClass3.default)(Policy, [{\n key: 'addAction',\n value: function addAction(method, param) {\n this.actions.push({ method: method, param: param });\n }\n }, {\n key: 'createRule',\n value: function createRule(decision, condition, scope, target, priority) {\n if (priority === undefined) {\n priority = this.getLastPriority() + 1;\n }\n var rule = new _Rule2.default(decision, condition, scope, target, priority);\n this.rules.push(rule);\n }\n }, {\n key: 'deleteRule',\n value: function deleteRule(rule) {\n var indexToRemove = this.rules.indexOf(rule);\n this.rules.splice(indexToRemove, 1);\n }\n }, {\n key: 'enforceActions',\n value: function enforceActions(context, message) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n var results = [];\n if (_this.actions.length !== 0) {\n for (var i in _this.actions) {\n var result = context.pep.actionsService[_this.actions[i].method](message, _this.actions[i].param);\n results.push(result);\n }\n _promise2.default.all(results).then(function (messages) {\n resolve(messages);\n }, function (error) {\n reject(error);\n });\n } else {\n resolve([message]);\n }\n });\n }\n }, {\n key: 'evaluateRules',\n value: function evaluateRules(context, message, isIncoming) {\n var results = [];\n for (var i in this.rules) {\n results.push(this.rules[i].evaluate(context, message, isIncoming));\n }\n\n return this.combiningAlgorithm.combine(results);\n }\n }, {\n key: 'getLastPriority',\n value: function getLastPriority() {\n var priorities = [];\n\n if (this.rules.length !== 0) {\n for (var i in this.rules) {\n priorities.push(this.rules[i].priority);\n }\n return Math.max.apply(Math, priorities);\n } else {\n return -1;\n }\n }\n }, {\n key: 'getRuleByPriority',\n value: function getRuleByPriority(priority) {\n for (var i in this.rules) {\n if (String(this.rules[i].priority) === String(priority)) {\n return this.rules[i];\n }\n }\n throw Error('Rule with priority ' + priority + ' does not exist!');\n }\n }, {\n key: '_setCombiningAlgorithm',\n value: function _setCombiningAlgorithm(combiningAlgorithm) {\n if (!combiningAlgorithm) {\n combiningAlgorithm = 'blockOverrides';\n }\n switch (combiningAlgorithm) {\n case 'blockOverrides':\n this.combiningAlgorithm = new _BlockOverrides2.default();\n break;\n case 'allowOverrides':\n this.combiningAlgorithm = new _AllowOverrides2.default();\n break;\n case 'firstApplicable':\n this.combiningAlgorithm = new _FirstApplicable2.default();\n break;\n default:\n throw Error('Unknown algorithm: ' + combiningAlgorithm);\n }\n }\n }, {\n key: '_setRules',\n value: function _setRules(rules) {\n this.rules = [];\n\n for (var i in rules) {\n var rule = rules[i];\n if (rule.priority === undefined) {\n rule.priority = this.getLastPriority() + 1;\n }\n if (!(rule instanceof _Rule2.default)) {\n rule = new _Rule2.default(rule.decision, rule.condition, rule.scope, rule.target, rule.priority);\n }\n this.rules.push(rule);\n }\n }\n }, {\n key: 'sortRules',\n value: function sortRules() {\n return this.rules.sort(function (a, b) {\n var x = a.priority;var y = b.priority;\n return x < y ? -1 : x > y ? 1 : 0;\n });\n }\n }]);\n return Policy;\n}();\n\nexports.default = Policy;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUG9saWN5LmpzPzk4NDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFsbG93T3ZlcnJpZGVzIGZyb20gJy4vY29tYmluaW5nQWxnb3JpdGhtcy9BbGxvd092ZXJyaWRlcyc7XG5pbXBvcnQgQmxvY2tPdmVycmlkZXMgZnJvbSAnLi9jb21iaW5pbmdBbGdvcml0aG1zL0Jsb2NrT3ZlcnJpZGVzJztcbmltcG9ydCBGaXJzdEFwcGxpY2FibGUgZnJvbSAnLi9jb21iaW5pbmdBbGdvcml0aG1zL0ZpcnN0QXBwbGljYWJsZSc7XG5pbXBvcnQgUnVsZSBmcm9tICcuL1J1bGUnO1xuXG5jbGFzcyBQb2xpY3kge1xuXG4gIGNvbnN0cnVjdG9yKGtleSwgcnVsZXMsIGFjdGlvbnMsIGNvbWJpbmluZ0FsZ29yaXRobSkge1xuICAgIGlmICgha2V5KSB0aHJvdyBuZXcgRXJyb3IoJ2tleSBpcyBub3QgZGVmaW5lZCcpO1xuICAgIGlmICghYWN0aW9ucykgdGhyb3cgbmV3IEVycm9yKCdhY3Rpb25zIGFyZSBub3QgZGVmaW5lZCcpO1xuXG4gICAgdGhpcy5hY3Rpb25zID0gYWN0aW9ucztcbiAgICB0aGlzLmtleSA9IGtleTtcbiAgICB0aGlzLl9zZXRSdWxlcyhydWxlcyk7XG4gICAgdGhpcy5fc2V0Q29tYmluaW5nQWxnb3JpdGhtKGNvbWJpbmluZ0FsZ29yaXRobSk7XG4gIH1cblxuICBhZGRBY3Rpb24obWV0aG9kLCBwYXJhbSkge1xuICAgIHRoaXMuYWN0aW9ucy5wdXNoKHsgbWV0aG9kOiBtZXRob2QsIHBhcmFtOiBwYXJhbSB9KTtcbiAgfVxuXG4gIGNyZWF0ZVJ1bGUoZGVjaXNpb24sIGNvbmRpdGlvbiwgc2NvcGUsIHRhcmdldCwgcHJpb3JpdHkpIHtcbiAgICBpZiAocHJpb3JpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJpb3JpdHkgPSB0aGlzLmdldExhc3RQcmlvcml0eSgpICsgMTtcbiAgICB9XG4gICAgbGV0IHJ1bGUgPSBuZXcgUnVsZShkZWNpc2lvbiwgY29uZGl0aW9uLCBzY29wZSwgdGFyZ2V0LCBwcmlvcml0eSk7XG4gICAgdGhpcy5ydWxlcy5wdXNoKHJ1bGUpO1xuICB9XG5cbiAgZGVsZXRlUnVsZShydWxlKSB7XG4gICAgbGV0IGluZGV4VG9SZW1vdmUgPSB0aGlzLnJ1bGVzLmluZGV4T2YocnVsZSk7XG4gICAgdGhpcy5ydWxlcy5zcGxpY2UoaW5kZXhUb1JlbW92ZSwgMSk7XG4gIH1cblxuICBlbmZvcmNlQWN0aW9ucyhjb250ZXh0LCBtZXNzYWdlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCByZXN1bHRzID0gW107XG4gICAgICBpZiAodGhpcy5hY3Rpb25zLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBmb3IgKGxldCBpIGluIHRoaXMuYWN0aW9ucykge1xuICAgICAgICAgIGxldCByZXN1bHQgPSBjb250ZXh0LnBlcC5hY3Rpb25zU2VydmljZVt0aGlzLmFjdGlvbnNbaV0ubWV0aG9kXShtZXNzYWdlLCB0aGlzLmFjdGlvbnNbaV0ucGFyYW0pO1xuICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIFByb21pc2UuYWxsKHJlc3VsdHMpLnRoZW4oKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShtZXNzYWdlcyk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoW21lc3NhZ2VdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGV2YWx1YXRlUnVsZXMoY29udGV4dCwgbWVzc2FnZSwgaXNJbmNvbWluZykge1xuICAgIGxldCByZXN1bHRzID0gW107XG4gICAgZm9yIChsZXQgaSBpbiB0aGlzLnJ1bGVzKSB7XG4gICAgICByZXN1bHRzLnB1c2godGhpcy5ydWxlc1tpXS5ldmFsdWF0ZShjb250ZXh0LCBtZXNzYWdlLCBpc0luY29taW5nKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29tYmluaW5nQWxnb3JpdGhtLmNvbWJpbmUocmVzdWx0cyk7XG4gIH1cblxuICBnZXRMYXN0UHJpb3JpdHkoKSB7XG4gICAgbGV0IHByaW9yaXRpZXMgPSBbXTtcblxuICAgIGlmICh0aGlzLnJ1bGVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgZm9yIChsZXQgaSBpbiB0aGlzLnJ1bGVzKSB7XG4gICAgICAgIHByaW9yaXRpZXMucHVzaCh0aGlzLnJ1bGVzW2ldLnByaW9yaXR5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBNYXRoLm1heC5hcHBseShNYXRoLCBwcmlvcml0aWVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxuXG4gIGdldFJ1bGVCeVByaW9yaXR5KHByaW9yaXR5KSB7XG4gICAgZm9yIChsZXQgaSBpbiB0aGlzLnJ1bGVzKSB7XG4gICAgICBpZiAoU3RyaW5nKHRoaXMucnVsZXNbaV0ucHJpb3JpdHkpID09PSBTdHJpbmcocHJpb3JpdHkpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJ1bGVzW2ldO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBFcnJvcignUnVsZSB3aXRoIHByaW9yaXR5ICcgKyBwcmlvcml0eSArICcgZG9lcyBub3QgZXhpc3QhJyk7XG4gIH1cblxuICBfc2V0Q29tYmluaW5nQWxnb3JpdGhtKGNvbWJpbmluZ0FsZ29yaXRobSkge1xuICAgIGlmICghY29tYmluaW5nQWxnb3JpdGhtKSB7XG4gICAgICBjb21iaW5pbmdBbGdvcml0aG0gPSAnYmxvY2tPdmVycmlkZXMnO1xuICAgIH1cbiAgICBzd2l0Y2ggKGNvbWJpbmluZ0FsZ29yaXRobSkge1xuICAgICAgY2FzZSAnYmxvY2tPdmVycmlkZXMnOlxuICAgICAgICB0aGlzLmNvbWJpbmluZ0FsZ29yaXRobSA9IG5ldyBCbG9ja092ZXJyaWRlcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FsbG93T3ZlcnJpZGVzJzpcbiAgICAgICAgdGhpcy5jb21iaW5pbmdBbGdvcml0aG0gPSBuZXcgQWxsb3dPdmVycmlkZXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmaXJzdEFwcGxpY2FibGUnOlxuICAgICAgICB0aGlzLmNvbWJpbmluZ0FsZ29yaXRobSA9IG5ldyBGaXJzdEFwcGxpY2FibGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBFcnJvcignVW5rbm93biBhbGdvcml0aG06ICcgKyBjb21iaW5pbmdBbGdvcml0aG0pO1xuICAgIH1cbiAgfVxuXG4gIF9zZXRSdWxlcyhydWxlcykge1xuICAgIHRoaXMucnVsZXMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgaW4gcnVsZXMpIHtcbiAgICAgIGxldCBydWxlID0gcnVsZXNbaV07XG4gICAgICBpZiAocnVsZS5wcmlvcml0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJ1bGUucHJpb3JpdHkgPSB0aGlzLmdldExhc3RQcmlvcml0eSgpICsgMTtcbiAgICAgIH1cbiAgICAgIGlmICghKHJ1bGUgaW5zdGFuY2VvZiBSdWxlKSkge1xuICAgICAgICBydWxlID0gbmV3IFJ1bGUocnVsZS5kZWNpc2lvbiwgcnVsZS5jb25kaXRpb24sIHJ1bGUuc2NvcGUsIHJ1bGUudGFyZ2V0LCBydWxlLnByaW9yaXR5KTtcbiAgICAgIH1cbiAgICAgIHRoaXMucnVsZXMucHVzaChydWxlKTtcbiAgICB9XG4gIH1cblxuICBzb3J0UnVsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucnVsZXMuc29ydChmdW5jdGlvbihhLCBiKSB7XG4gICAgICBsZXQgeCA9IGEucHJpb3JpdHk7IGxldCB5ID0gYi5wcmlvcml0eTtcbiAgICAgIHJldHVybiAoKHggPCB5KSA/IC0xIDogKCh4ID4geSkgPyAxIDogMCkpO1xuICAgIH0pO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUG9saWN5O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvUG9saWN5LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7OztBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVhBO0FBYUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///122\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n\n/**\n* @author Ana Caldeira \n* @classdesc Class to combine the authorization decisions that result from rules evaluation.\n*/\nvar AllowOverrides = function () {\n function AllowOverrides() {\n (0, _classCallCheck3.default)(this, AllowOverrides);\n }\n\n (0, _createClass3.default)(AllowOverrides, [{\n key: 'combine',\n\n\n /**\n * Given an array of individual authorization decisions, prioritizes a positive one.\n * @param {boolean[]} decisions\n * @returns {boolean}\n */\n value: function combine(decisions) {\n if (decisions.indexOf(true) !== -1) {\n return true;\n } else {\n if (decisions.indexOf(false) !== -1) {\n return false;\n } else {\n return 'Not Applicable';\n }\n }\n }\n }]);\n return AllowOverrides;\n}();\n\nexports.default = AllowOverrides;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9BbGxvd092ZXJyaWRlcy5qcz80YzQ3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cblxuLyoqXG4qIEBhdXRob3IgQW5hIENhbGRlaXJhIDxhbmEuY2FsZGVpcmFAdGVjbmljby51bGlzYm9hLnB0PlxuKiBAY2xhc3NkZXNjIENsYXNzIHRvIGNvbWJpbmUgdGhlIGF1dGhvcml6YXRpb24gZGVjaXNpb25zIHRoYXQgcmVzdWx0IGZyb20gcnVsZXMgZXZhbHVhdGlvbi5cbiovXG5jbGFzcyBBbGxvd092ZXJyaWRlcyB7XG5cbiAgLyoqXG4gICogR2l2ZW4gYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBhdXRob3JpemF0aW9uIGRlY2lzaW9ucywgcHJpb3JpdGl6ZXMgYSBwb3NpdGl2ZSBvbmUuXG4gICogQHBhcmFtICAgIHtib29sZWFuW119ICAgZGVjaXNpb25zXG4gICogQHJldHVybnMgIHtib29sZWFufVxuICAqL1xuICBjb21iaW5lKGRlY2lzaW9ucykge1xuICAgIGlmIChkZWNpc2lvbnMuaW5kZXhPZih0cnVlKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGVjaXNpb25zLmluZGV4T2YoZmFsc2UpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ05vdCBBcHBsaWNhYmxlJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBBbGxvd092ZXJyaWRlcztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L2NvbWJpbmluZ0FsZ29yaXRobXMvQWxsb3dPdmVycmlkZXMuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7Ozs7QUFJQTs7Ozs7Ozs7O0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///123\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n\n/**\n* @author Ana Caldeira \n* @classdesc Class to combine the authorization decisions that result from rules evaluation.\n*/\nvar BlockOverrides = function () {\n function BlockOverrides() {\n (0, _classCallCheck3.default)(this, BlockOverrides);\n }\n\n (0, _createClass3.default)(BlockOverrides, [{\n key: 'combine',\n\n\n /**\n * Given an array of individual authorisation decisions, prioritises a negative one.\n * @param {boolean[]} decisions\n * @returns {boolean}\n */\n value: function combine(decisions) {\n if (decisions.indexOf(false) !== -1) {\n return false;\n } else {\n if (decisions.indexOf(true) !== -1) {\n return true;\n } else {\n return 'Not Applicable';\n }\n }\n }\n }]);\n return BlockOverrides;\n}();\n\nexports.default = BlockOverrides;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9CbG9ja092ZXJyaWRlcy5qcz82MWM3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cblxuLyoqXG4qIEBhdXRob3IgQW5hIENhbGRlaXJhIDxhbmEuY2FsZGVpcmFAdGVjbmljby51bGlzYm9hLnB0PlxuKiBAY2xhc3NkZXNjIENsYXNzIHRvIGNvbWJpbmUgdGhlIGF1dGhvcml6YXRpb24gZGVjaXNpb25zIHRoYXQgcmVzdWx0IGZyb20gcnVsZXMgZXZhbHVhdGlvbi5cbiovXG5jbGFzcyBCbG9ja092ZXJyaWRlcyB7XG5cbiAgLyoqXG4gICogR2l2ZW4gYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBhdXRob3Jpc2F0aW9uIGRlY2lzaW9ucywgcHJpb3JpdGlzZXMgYSBuZWdhdGl2ZSBvbmUuXG4gICogQHBhcmFtICAgIHtib29sZWFuW119ICAgZGVjaXNpb25zXG4gICogQHJldHVybnMgIHtib29sZWFufVxuICAqL1xuICBjb21iaW5lKGRlY2lzaW9ucykge1xuICAgIGlmIChkZWNpc2lvbnMuaW5kZXhPZihmYWxzZSkgIT09IC0xKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChkZWNpc2lvbnMuaW5kZXhPZih0cnVlKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ05vdCBBcHBsaWNhYmxlJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBCbG9ja092ZXJyaWRlcztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L2NvbWJpbmluZ0FsZ29yaXRobXMvQmxvY2tPdmVycmlkZXMuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7Ozs7QUFJQTs7Ozs7Ozs7O0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///124\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n\n/**\n* @author Ana Caldeira \n* @classdesc Class to combine the authorization decisions that result from rules evaluation.\n*/\nvar FirstApplicable = function () {\n function FirstApplicable() {\n (0, _classCallCheck3.default)(this, FirstApplicable);\n }\n\n (0, _createClass3.default)(FirstApplicable, [{\n key: 'combine',\n\n\n /**\n * Given an array of individual authorisation decisions, returns the first one different from 'Not Applicable', either positive or negative.\n * @param {boolean[]} decisions\n * @returns {boolean}\n */\n value: function combine(decisions) {\n for (var i in decisions) {\n if (decisions[i] !== 'Not Applicable') {\n return decisions[i];\n }\n }\n return 'Not Applicable';\n }\n }]);\n return FirstApplicable;\n}();\n\nexports.default = FirstApplicable;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9GaXJzdEFwcGxpY2FibGUuanM/MzNkZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKiovXG5cbi8qKlxuKiBAYXV0aG9yIEFuYSBDYWxkZWlyYSA8YW5hLmNhbGRlaXJhQHRlY25pY28udWxpc2JvYS5wdD5cbiogQGNsYXNzZGVzYyBDbGFzcyB0byBjb21iaW5lIHRoZSBhdXRob3JpemF0aW9uIGRlY2lzaW9ucyB0aGF0IHJlc3VsdCBmcm9tIHJ1bGVzIGV2YWx1YXRpb24uXG4qL1xuY2xhc3MgRmlyc3RBcHBsaWNhYmxlIHtcblxuICAvKipcbiAgKiBHaXZlbiBhbiBhcnJheSBvZiBpbmRpdmlkdWFsIGF1dGhvcmlzYXRpb24gZGVjaXNpb25zLCByZXR1cm5zIHRoZSBmaXJzdCBvbmUgZGlmZmVyZW50IGZyb20gJ05vdCBBcHBsaWNhYmxlJywgZWl0aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlLlxuICAqIEBwYXJhbSAgICB7Ym9vbGVhbltdfSAgICAgZGVjaXNpb25zXG4gICogQHJldHVybnMgIHtib29sZWFufVxuICAqL1xuICBjb21iaW5lKGRlY2lzaW9ucykge1xuICAgIGZvciAobGV0IGkgaW4gZGVjaXNpb25zKSB7XG4gICAgICBpZiAoZGVjaXNpb25zW2ldICE9PSAnTm90IEFwcGxpY2FibGUnKSB7XG4gICAgICAgIHJldHVybiBkZWNpc2lvbnNbaV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnTm90IEFwcGxpY2FibGUnO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgRmlyc3RBcHBsaWNhYmxlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9GaXJzdEFwcGxpY2FibGUuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7Ozs7QUFJQTs7Ozs7Ozs7O0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///125\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _AdvancedCondition = __webpack_require__(127);\n\nvar _AdvancedCondition2 = _interopRequireDefault(_AdvancedCondition);\n\nvar _Condition = __webpack_require__(113);\n\nvar _Condition2 = _interopRequireDefault(_Condition);\n\nvar _utils = __webpack_require__(111);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Rule = function () {\n function Rule(decision, condition, scope, target, priority) {\n (0, _classCallCheck3.default)(this, Rule);\n\n this.decision = decision;\n this.setCondition(condition);\n this.priority = priority;\n this.scope = scope;\n this.target = target;\n }\n\n (0, _createClass3.default)(Rule, [{\n key: 'setCondition',\n value: function setCondition(condition) {\n if (!(condition instanceof _Condition2.default || condition instanceof _AdvancedCondition2.default || condition instanceof _AdvancedCondition2.default)) {\n var attribute = condition.attribute;\n switch (attribute) {\n case 'subscription':\n this.condition = new _AdvancedCondition2.default(condition.attribute, condition.operator, condition.params);\n break;\n case undefined:\n this.condition = new _AdvancedCondition2.default(condition);\n break;\n default:\n this.condition = new _Condition2.default(condition.attribute, condition.operator, condition.params);\n }\n } else {\n this.condition = condition;\n }\n }\n }, {\n key: 'evaluate',\n value: function evaluate(context, message, isIncoming) {\n var field = isIncoming ? message.to : message.from;\n var hypertyName = void 0;\n switch (this.scope) {\n case 'global':\n break;\n\n case 'hyperty':\n if ((0, _utils.isDataObjectURL)(field)) {\n var reporter = context.runtimeRegistry.getReporterURLSynchonous((0, _utils.removePathFromURL)(field));\n if (reporter !== undefined) {\n hypertyName = context.runtimeRegistry.getHypertyName(reporter);\n }\n } else {\n if (field.split('://')[0] === 'hyperty') {\n hypertyName = context.runtimeRegistry.getHypertyName((0, _utils.removePathFromURL)(field));\n }\n }\n if (hypertyName === this.target) {\n break;\n }\n\n return 'Not Applicable';\n\n case 'identity':\n var owner = void 0;\n\n if ((0, _utils.isDataObjectURL)(field)) {\n var _reporter = context.runtimeRegistry.getReporterURLSynchonous((0, _utils.removePathFromURL)(field));\n owner = context.runtimeRegistry.getHypertyOwner(_reporter);\n } else {\n if (field.split('://')[0] === 'hyperty') {\n owner = context.runtimeRegistry.getHypertyOwner((0, _utils.removePathFromURL)(field));\n }\n }\n if (owner !== undefined) {\n owner = (0, _utils.getUserEmailFromURL)(owner);\n }\n if (owner === this.target) {\n break;\n }\n\n return 'Not Applicable';\n }\n\n if (this.condition.isApplicable(context, message, this.scope, this.target)) {\n return this.decision;\n } else {\n return 'Not Applicable';\n }\n }\n }]);\n return Rule;\n}();\n\nexports.default = Rule;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUnVsZS5qcz9jOWU4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBZHZhbmNlZENvbmRpdGlvbiBmcm9tICcuL2NvbmRpdGlvbnMvQWR2YW5jZWRDb25kaXRpb24nO1xuaW1wb3J0IENvbmRpdGlvbiBmcm9tICcuL2NvbmRpdGlvbnMvQ29uZGl0aW9uJztcbmltcG9ydCB7Z2V0VXNlckVtYWlsRnJvbVVSTCwgaXNEYXRhT2JqZWN0VVJMLCByZW1vdmVQYXRoRnJvbVVSTH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IFN1YnNjcmlwdGlvbkNvbmRpdGlvbiBmcm9tICcuL2NvbmRpdGlvbnMvQWR2YW5jZWRDb25kaXRpb24nO1xuXG5jbGFzcyBSdWxlIHtcblxuICBjb25zdHJ1Y3RvcihkZWNpc2lvbiwgY29uZGl0aW9uLCBzY29wZSwgdGFyZ2V0LCBwcmlvcml0eSkge1xuICAgIHRoaXMuZGVjaXNpb24gPSBkZWNpc2lvbjtcbiAgICB0aGlzLnNldENvbmRpdGlvbihjb25kaXRpb24pO1xuICAgIHRoaXMucHJpb3JpdHkgPSBwcmlvcml0eTtcbiAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gIH1cblxuICBzZXRDb25kaXRpb24oY29uZGl0aW9uKSB7XG4gICAgaWYgKCEoY29uZGl0aW9uIGluc3RhbmNlb2YgQ29uZGl0aW9uIHx8IGNvbmRpdGlvbiBpbnN0YW5jZW9mIFN1YnNjcmlwdGlvbkNvbmRpdGlvbiB8fCBjb25kaXRpb24gaW5zdGFuY2VvZiBBZHZhbmNlZENvbmRpdGlvbikpIHtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBjb25kaXRpb24uYXR0cmlidXRlO1xuICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgY2FzZSAnc3Vic2NyaXB0aW9uJzpcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbiA9IG5ldyBTdWJzY3JpcHRpb25Db25kaXRpb24oY29uZGl0aW9uLmF0dHJpYnV0ZSwgY29uZGl0aW9uLm9wZXJhdG9yLCBjb25kaXRpb24ucGFyYW1zKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgdGhpcy5jb25kaXRpb24gPSBuZXcgQWR2YW5jZWRDb25kaXRpb24oY29uZGl0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbiA9IG5ldyBDb25kaXRpb24oY29uZGl0aW9uLmF0dHJpYnV0ZSwgY29uZGl0aW9uLm9wZXJhdG9yLCBjb25kaXRpb24ucGFyYW1zKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25kaXRpb24gPSBjb25kaXRpb247XG4gICAgfVxuICB9XG5cbiAgZXZhbHVhdGUoY29udGV4dCwgbWVzc2FnZSwgaXNJbmNvbWluZykge1xuICAgIGxldCBmaWVsZCA9IChpc0luY29taW5nKSA/IG1lc3NhZ2UudG8gOiBtZXNzYWdlLmZyb207XG4gICAgbGV0IGh5cGVydHlOYW1lO1xuICAgIHN3aXRjaCAodGhpcy5zY29wZSkge1xuICAgICAgY2FzZSAnZ2xvYmFsJzpcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2h5cGVydHknOlxuICAgICAgICBpZiAoaXNEYXRhT2JqZWN0VVJMKGZpZWxkKSkge1xuICAgICAgICAgIGxldCByZXBvcnRlciA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldFJlcG9ydGVyVVJMU3luY2hvbm91cyhyZW1vdmVQYXRoRnJvbVVSTChmaWVsZCkpO1xuICAgICAgICAgIGlmIChyZXBvcnRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoeXBlcnR5TmFtZSA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldEh5cGVydHlOYW1lKHJlcG9ydGVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGZpZWxkLnNwbGl0KCc6Ly8nKVswXSA9PT0gJ2h5cGVydHknKSB7XG4gICAgICAgICAgICBoeXBlcnR5TmFtZSA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldEh5cGVydHlOYW1lKHJlbW92ZVBhdGhGcm9tVVJMKGZpZWxkKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChoeXBlcnR5TmFtZSA9PT0gdGhpcy50YXJnZXQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnTm90IEFwcGxpY2FibGUnO1xuXG4gICAgICBjYXNlICdpZGVudGl0eSc6XG4gICAgICAgIGxldCBvd25lcjtcblxuICAgICAgICBpZiAoaXNEYXRhT2JqZWN0VVJMKGZpZWxkKSkge1xuICAgICAgICAgIGxldCByZXBvcnRlciA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldFJlcG9ydGVyVVJMU3luY2hvbm91cyhyZW1vdmVQYXRoRnJvbVVSTChmaWVsZCkpO1xuICAgICAgICAgIG93bmVyID0gY29udGV4dC5ydW50aW1lUmVnaXN0cnkuZ2V0SHlwZXJ0eU93bmVyKHJlcG9ydGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZmllbGQuc3BsaXQoJzovLycpWzBdID09PSAnaHlwZXJ0eScpIHtcbiAgICAgICAgICAgIG93bmVyID0gY29udGV4dC5ydW50aW1lUmVnaXN0cnkuZ2V0SHlwZXJ0eU93bmVyKHJlbW92ZVBhdGhGcm9tVVJMKGZpZWxkKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvd25lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgb3duZXIgPSBnZXRVc2VyRW1haWxGcm9tVVJMKG93bmVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3duZXIgPT09IHRoaXMudGFyZ2V0KSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ05vdCBBcHBsaWNhYmxlJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25kaXRpb24uaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UsIHRoaXMuc2NvcGUsIHRoaXMudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVjaXNpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnTm90IEFwcGxpY2FibGUnO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSdWxlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvUnVsZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFFQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXZDQTtBQUNBO0FBeUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFHQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///126\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Condition = __webpack_require__(113);\n\nvar _Condition2 = _interopRequireDefault(_Condition);\n\nvar _Operators = __webpack_require__(112);\n\nvar _Operators2 = _interopRequireDefault(_Operators);\n\nvar _SubscriptionCondition = __webpack_require__(128);\n\nvar _SubscriptionCondition2 = _interopRequireDefault(_SubscriptionCondition);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AdvancedCondition = function () {\n function AdvancedCondition(condition) {\n (0, _classCallCheck3.default)(this, AdvancedCondition);\n\n this.operators = new _Operators2.default();\n if (condition.operators !== undefined) {\n condition = condition.condition;\n }\n condition = this.buildCondition(condition);\n this.condition = condition;\n }\n\n (0, _createClass3.default)(AdvancedCondition, [{\n key: 'buildCondition',\n value: function buildCondition(condition) {\n if (Array.isArray(condition[1])) {\n condition[1] = this.buildCondition(condition[1]);\n } else {\n if (condition[1].attribute === 'subscription') {\n condition[1] = new _SubscriptionCondition2.default(condition[1].attribute, condition[1].operator, condition[1].params);\n } else {\n condition[1] = new _Condition2.default(condition[1].attribute, condition[1].operator, condition[1].params);\n }\n }\n\n if (condition[2] !== undefined) {\n if (Array.isArray(condition[2])) {\n condition[2] = this.buildCondition(condition[2]);\n } else {\n if (condition[2].attribute === 'subscription') {\n condition[2] = new _SubscriptionCondition2.default(condition[2].attribute, condition[2].operator, condition[2].params);\n } else {\n condition[2] = new _Condition2.default(condition[2].attribute, condition[2].operator, condition[2].params);\n }\n }\n }\n return condition;\n }\n }, {\n key: 'isApplicable',\n value: function isApplicable(context, message, scope, target, operator, left, right) {\n if (!operator) {\n operator = this.condition[0];\n left = this.condition[1];\n right = this.condition[2];\n }\n\n while (!(left instanceof _Condition2.default) & !(left instanceof _SubscriptionCondition2.default) & typeof left !== 'boolean') {\n left = this.isApplicable(context, message, scope, target, left[0], left[1], left[2]);\n }\n if (right !== undefined) {\n while (!(right instanceof _Condition2.default) & !(right instanceof _SubscriptionCondition2.default) & typeof right !== 'boolean') {\n right = this.isApplicable(context, message, scope, target, right[0], right[1], right[2]);\n }\n }\n\n var resultLeft = typeof left === 'boolean' ? left : left.isApplicable(context, message, scope, target);\n var resultRight = void 0;\n if (right !== undefined) {\n resultRight = typeof right === 'boolean' ? right : right.isApplicable(context, message, scope, target);\n }\n return this.operators[operator]([resultLeft, resultRight]);\n }\n }]);\n return AdvancedCondition;\n}();\n\nexports.default = AdvancedCondition;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29uZGl0aW9ucy9BZHZhbmNlZENvbmRpdGlvbi5qcz9iZDBmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb25kaXRpb24gZnJvbSAnLi9Db25kaXRpb24nO1xuaW1wb3J0IE9wZXJhdG9ycyBmcm9tICcuLi9PcGVyYXRvcnMnO1xuaW1wb3J0IFN1YnNjcmlwdGlvbkNvbmRpdGlvbiBmcm9tICcuL1N1YnNjcmlwdGlvbkNvbmRpdGlvbic7XG5cbmNsYXNzIEFkdmFuY2VkQ29uZGl0aW9uIHtcblxuICBjb25zdHJ1Y3Rvcihjb25kaXRpb24pIHtcbiAgICB0aGlzLm9wZXJhdG9ycyA9IG5ldyBPcGVyYXRvcnMoKTtcbiAgICBpZiAoY29uZGl0aW9uLm9wZXJhdG9ycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25kaXRpb24gPSBjb25kaXRpb24uY29uZGl0aW9uO1xuICAgIH1cbiAgICBjb25kaXRpb24gPSB0aGlzLmJ1aWxkQ29uZGl0aW9uKGNvbmRpdGlvbik7XG4gICAgdGhpcy5jb25kaXRpb24gPSBjb25kaXRpb247XG4gIH1cblxuICBidWlsZENvbmRpdGlvbihjb25kaXRpb24pIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb25kaXRpb25bMV0pKSB7XG4gICAgICBjb25kaXRpb25bMV0gPSB0aGlzLmJ1aWxkQ29uZGl0aW9uKGNvbmRpdGlvblsxXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb25kaXRpb25bMV0uYXR0cmlidXRlID09PSAnc3Vic2NyaXB0aW9uJykge1xuICAgICAgICBjb25kaXRpb25bMV0gPSBuZXcgU3Vic2NyaXB0aW9uQ29uZGl0aW9uKGNvbmRpdGlvblsxXS5hdHRyaWJ1dGUsIGNvbmRpdGlvblsxXS5vcGVyYXRvciwgY29uZGl0aW9uWzFdLnBhcmFtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25kaXRpb25bMV0gPSBuZXcgQ29uZGl0aW9uKGNvbmRpdGlvblsxXS5hdHRyaWJ1dGUsIGNvbmRpdGlvblsxXS5vcGVyYXRvciwgY29uZGl0aW9uWzFdLnBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvbmRpdGlvblsyXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25kaXRpb25bMl0pKSB7XG4gICAgICAgIGNvbmRpdGlvblsyXSA9IHRoaXMuYnVpbGRDb25kaXRpb24oY29uZGl0aW9uWzJdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjb25kaXRpb25bMl0uYXR0cmlidXRlID09PSAnc3Vic2NyaXB0aW9uJykge1xuICAgICAgICAgIGNvbmRpdGlvblsyXSA9IG5ldyBTdWJzY3JpcHRpb25Db25kaXRpb24oY29uZGl0aW9uWzJdLmF0dHJpYnV0ZSwgY29uZGl0aW9uWzJdLm9wZXJhdG9yLCBjb25kaXRpb25bMl0ucGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25kaXRpb25bMl0gPSBuZXcgQ29uZGl0aW9uKGNvbmRpdGlvblsyXS5hdHRyaWJ1dGUsIGNvbmRpdGlvblsyXS5vcGVyYXRvciwgY29uZGl0aW9uWzJdLnBhcmFtcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbmRpdGlvbjtcbiAgfVxuXG4gIGlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlLCBzY29wZSwgdGFyZ2V0LCBvcGVyYXRvciwgbGVmdCwgcmlnaHQpIHtcbiAgICBpZiAoIW9wZXJhdG9yKSB7XG4gICAgICBvcGVyYXRvciA9IHRoaXMuY29uZGl0aW9uWzBdO1xuICAgICAgbGVmdCA9IHRoaXMuY29uZGl0aW9uWzFdO1xuICAgICAgcmlnaHQgPSB0aGlzLmNvbmRpdGlvblsyXTtcbiAgICB9XG5cbiAgICB3aGlsZSAoIShsZWZ0IGluc3RhbmNlb2YgQ29uZGl0aW9uKSAmICEobGVmdCBpbnN0YW5jZW9mIFN1YnNjcmlwdGlvbkNvbmRpdGlvbikgJiAodHlwZW9mIGxlZnQgIT09ICdib29sZWFuJykpIHtcbiAgICAgIGxlZnQgPSB0aGlzLmlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlLCBzY29wZSwgdGFyZ2V0LCBsZWZ0WzBdLCBsZWZ0WzFdLCBsZWZ0WzJdKTtcbiAgICB9XG4gICAgaWYgKHJpZ2h0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdoaWxlICghKHJpZ2h0IGluc3RhbmNlb2YgQ29uZGl0aW9uKSAmICEocmlnaHQgaW5zdGFuY2VvZiBTdWJzY3JpcHRpb25Db25kaXRpb24pICYgKHR5cGVvZiByaWdodCAhPT0gJ2Jvb2xlYW4nKSkge1xuICAgICAgICByaWdodCA9IHRoaXMuaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UsIHNjb3BlLCB0YXJnZXQsIHJpZ2h0WzBdLCByaWdodFsxXSwgcmlnaHRbMl0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCByZXN1bHRMZWZ0ID0gKHR5cGVvZiBsZWZ0ID09PSAnYm9vbGVhbicpID8gbGVmdCA6IGxlZnQuaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UsIHNjb3BlLCB0YXJnZXQpO1xuICAgIGxldCByZXN1bHRSaWdodDtcbiAgICBpZiAocmlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0UmlnaHQgPSAodHlwZW9mIHJpZ2h0ID09PSAnYm9vbGVhbicpID8gcmlnaHQgOiByaWdodC5pc0FwcGxpY2FibGUoY29udGV4dCwgbWVzc2FnZSwgc2NvcGUsIHRhcmdldCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wZXJhdG9yc1tvcGVyYXRvcl0oW3Jlc3VsdExlZnQsIHJlc3VsdFJpZ2h0XSk7XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBBZHZhbmNlZENvbmRpdGlvbjtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L2NvbmRpdGlvbnMvQWR2YW5jZWRDb25kaXRpb24uanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7Ozs7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///127\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(63);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(64);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = __webpack_require__(129);\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = __webpack_require__(65);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Condition2 = __webpack_require__(113);\n\nvar _Condition3 = _interopRequireDefault(_Condition2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* @author Ana Caldeira \n* @classdesc Class to represent a subscription condition and evaluate its applicability.\n*/\nvar SubscriptionCondition = function (_Condition) {\n (0, _inherits3.default)(SubscriptionCondition, _Condition);\n\n /**\n * Creates a new SubscriptionCondition.\n * @class\n * @param {string} attribute\n * @param {string} operator\n * @param {*} params\n */\n function SubscriptionCondition(attribute, operator, params) {\n (0, _classCallCheck3.default)(this, SubscriptionCondition);\n return (0, _possibleConstructorReturn3.default)(this, (SubscriptionCondition.__proto__ || (0, _getPrototypeOf2.default)(SubscriptionCondition)).call(this, attribute, operator, params));\n }\n\n /**\n * Verifies if the subscription condition is applicable to the message. First, verifies if the message is of the subscription type; second, verifies if the message is from a remote runtime to guarantee that the subscription is being validated in the destination runtime; third, verifies if the subscription preference is met.\n * @param {Object} context environment where the Policy Engine is being used\n * @param {Object} message\n */\n\n\n (0, _createClass3.default)(SubscriptionCondition, [{\n key: 'isApplicable',\n value: function isApplicable(context, message) {\n var isSubscription = message.type === 'subscribe';\n var isFromRemoteSM = context.isFromRemoteSM(message.from);\n if (isSubscription & isFromRemoteSM) {\n return (0, _get3.default)(SubscriptionCondition.prototype.__proto__ || (0, _getPrototypeOf2.default)(SubscriptionCondition.prototype), 'isApplicable', this).call(this, context, message);\n } else {\n return false;\n }\n }\n }]);\n return SubscriptionCondition;\n}(_Condition3.default); /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nexports.default = SubscriptionCondition;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29uZGl0aW9ucy9TdWJzY3JpcHRpb25Db25kaXRpb24uanM/YTkwMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKiovXG5cbmltcG9ydCBDb25kaXRpb24gZnJvbSAnLi9Db25kaXRpb24nO1xuXG4vKipcbiogQGF1dGhvciBBbmEgQ2FsZGVpcmEgPGFuYS5jYWxkZWlyYUB0ZWNuaWNvLnVsaXNib2EucHQ+XG4qIEBjbGFzc2Rlc2MgQ2xhc3MgdG8gcmVwcmVzZW50IGEgc3Vic2NyaXB0aW9uIGNvbmRpdGlvbiBhbmQgZXZhbHVhdGUgaXRzIGFwcGxpY2FiaWxpdHkuXG4qL1xuY2xhc3MgU3Vic2NyaXB0aW9uQ29uZGl0aW9uIGV4dGVuZHMgQ29uZGl0aW9uIHtcblxuICAvKipcbiAgKiBDcmVhdGVzIGEgbmV3IFN1YnNjcmlwdGlvbkNvbmRpdGlvbi5cbiAgKiBAY2xhc3NcbiAgKiBAcGFyYW0gIHtzdHJpbmd9ICBhdHRyaWJ1dGVcbiAgKiBAcGFyYW0gIHtzdHJpbmd9ICBvcGVyYXRvclxuICAqIEBwYXJhbSAgeyp9ICAgICAgIHBhcmFtc1xuICAqL1xuICBjb25zdHJ1Y3RvcihhdHRyaWJ1dGUsIG9wZXJhdG9yLCBwYXJhbXMpIHtcbiAgICBzdXBlcihhdHRyaWJ1dGUsIG9wZXJhdG9yLCBwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICogVmVyaWZpZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBjb25kaXRpb24gaXMgYXBwbGljYWJsZSB0byB0aGUgbWVzc2FnZS4gRmlyc3QsIHZlcmlmaWVzIGlmIHRoZSBtZXNzYWdlIGlzIG9mIHRoZSBzdWJzY3JpcHRpb24gdHlwZTsgc2Vjb25kLCB2ZXJpZmllcyBpZiB0aGUgbWVzc2FnZSBpcyBmcm9tIGEgcmVtb3RlIHJ1bnRpbWUgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIHN1YnNjcmlwdGlvbiBpcyBiZWluZyB2YWxpZGF0ZWQgaW4gdGhlIGRlc3RpbmF0aW9uIHJ1bnRpbWU7IHRoaXJkLCB2ZXJpZmllcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHByZWZlcmVuY2UgaXMgbWV0LlxuICAqIEBwYXJhbSAge09iamVjdH0gICAgY29udGV4dCAgIGVudmlyb25tZW50IHdoZXJlIHRoZSBQb2xpY3kgRW5naW5lIGlzIGJlaW5nIHVzZWRcbiAgKiBAcGFyYW0gIHtPYmplY3R9ICAgIG1lc3NhZ2VcbiAgKi9cbiAgaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UpIHtcbiAgICBsZXQgaXNTdWJzY3JpcHRpb24gPSBtZXNzYWdlLnR5cGUgPT09ICdzdWJzY3JpYmUnO1xuICAgIGxldCBpc0Zyb21SZW1vdGVTTSA9IGNvbnRleHQuaXNGcm9tUmVtb3RlU00obWVzc2FnZS5mcm9tKTtcbiAgICBpZiAoaXNTdWJzY3JpcHRpb24gJiBpc0Zyb21SZW1vdGVTTSkge1xuICAgICAgcmV0dXJuIHN1cGVyLmlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IFN1YnNjcmlwdGlvbkNvbmRpdGlvbjtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L2NvbmRpdGlvbnMvU3Vic2NyaXB0aW9uQ29uZGl0aW9uLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7QUFDQTs7Ozs7QUFDQTs7OztBQUlBOzs7QUFFQTs7Ozs7OztBQU9BO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUExQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBOEJBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///128\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _getPrototypeOf = __webpack_require__(63);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _getOwnPropertyDescriptor = __webpack_require__(130);\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = (0, _getOwnPropertyDescriptor2.default)(object, property);\n\n if (desc === undefined) {\n var parent = (0, _getPrototypeOf2.default)(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if ("value" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9nZXQuanM/Yzg0YiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9nZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpO1xuXG52YXIgX2dldFByb3RvdHlwZU9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldFByb3RvdHlwZU9mKTtcblxudmFyIF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yXCIpO1xuXG52YXIgX2dldE93blByb3BlcnR5RGVzY3JpcHRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiBnZXQob2JqZWN0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpIHtcbiAgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuICB2YXIgZGVzYyA9ICgwLCBfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yMi5kZWZhdWx0KShvYmplY3QsIHByb3BlcnR5KTtcblxuICBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIHBhcmVudCA9ICgwLCBfZ2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKG9iamVjdCk7XG5cbiAgICBpZiAocGFyZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ2V0KHBhcmVudCwgcHJvcGVydHksIHJlY2VpdmVyKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoXCJ2YWx1ZVwiIGluIGRlc2MpIHtcbiAgICByZXR1cm4gZGVzYy52YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7XG5cbiAgICBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTtcbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvZ2V0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///129\n')},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(131), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzPzJiYTEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2dldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1xuLy8gbW9kdWxlIGlkID0gMTMwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///130\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(132);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzPzcyNzkiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICByZXR1cm4gJE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDEzMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///131\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(10);\nvar $getOwnPropertyDescriptor = __webpack_require__(40).f;\n\n__webpack_require__(39)('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzPzg4ODkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKVxudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodG9JT2JqZWN0KGl0KSwga2V5KTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDEzMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///132\n")}])}); \ No newline at end of file diff --git a/dist/ReThinkCtx.js b/dist/ReThinkCtx.js old mode 100644 new mode 100755 index 32e04f64..e2ac2812 --- a/dist/ReThinkCtx.js +++ b/dist/ReThinkCtx.js @@ -1,5 +1,5 @@ // version: 0.11.1 -// date: Fri May 25 2018 12:35:36 GMT+0100 (GMT Daylight Time) +// date: Mon Jun 04 2018 11:42:23 GMT+0100 (WEST) // licence: /** * Copyright 2016 PT Inovação e Sistemas SA @@ -26,7 +26,7 @@ // version: 0.11.1 -// date: Fri May 25 2018 12:35:36 GMT+0100 (GMT Daylight Time) +// date: Mon Jun 04 2018 11:42:23 GMT+0100 (WEST) // licence: /** * Copyright 2016 PT Inovação e Sistemas SA @@ -52,4 +52,4 @@ **/ -!function(c,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("ReThinkCtx",[],n):"object"==typeof exports?exports.ReThinkCtx=n():c.ReThinkCtx=n()}("undefined"!=typeof self?self:this,function(){return function(c){var n={};function e(l){if(n[l])return n[l].exports;var t=n[l]={i:l,l:!1,exports:{}};return c[l].call(t.exports,t,t.exports,e),t.l=!0,t.exports}return e.m=c,e.c=n,e.d=function(c,n,l){e.o(c,n)||Object.defineProperty(c,n,{configurable:!1,enumerable:!0,get:l})},e.n=function(c){var n=c&&c.__esModule?function(){return c.default}:function(){return c};return e.d(n,"a",n),n},e.o=function(c,n){return Object.prototype.hasOwnProperty.call(c,n)},e.p="",e(e.s=132)}([function(module,exports){eval("var core = module.exports = { version: '2.5.3' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcz8xNWUwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjUuMycgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qc1xuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n")},function(module,exports){eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzP2VjYWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1\n")},,function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar ctx = __webpack_require__(14);\nvar hide = __webpack_require__(8);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzPzkwY2QiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGtleSBpbiBleHBvcnRzKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///3\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzP2VmYjMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4\n")},function(module,exports,__webpack_require__){eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(13)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanM/Zjg0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n")},function(module,exports){eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzPzEyYTgiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(4);\nvar IE8_DOM_DEFINE = __webpack_require__(36);\nvar toPrimitive = __webpack_require__(26);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzPzdhZjAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanNcbi8vIG1vZHVsZSBpZCA9IDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(7);\nvar createDesc = __webpack_require__(18);\nmodule.exports = __webpack_require__(5) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qcz84NDljIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n")},function(module,exports){eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzPzBmNjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanNcbi8vIG1vZHVsZSBpZCA9IDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9\n")},function(module,exports,__webpack_require__){eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(57);\nvar defined = __webpack_require__(22);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NGRjNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///10\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzY2YjkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(60);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzP2MzMTAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5XCIpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///12\n')},function(module,exports){eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///13\n")},function(module,exports,__webpack_require__){eval("// optional / simple context binding\nvar aFunction = __webpack_require__(17);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanNcbi8vIG1vZHVsZSBpZCA9IDE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanNcbi8vIG1vZHVsZSBpZCA9IDE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///15\n")},,function(module,exports){eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///17\n")},function(module,exports){eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanNcbi8vIG1vZHVsZSBpZCA9IDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///18\n")},function(module,exports){eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qc1xuLy8gbW9kdWxlIGlkID0gMTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///19\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(37);\nvar enumBugKeys = __webpack_require__(29);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///20\n")},function(module,exports){eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/NTJlMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAyMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///21\n")},function(module,exports){eval('// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError("Can\'t call method on " + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTc2OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanNcbi8vIG1vZHVsZSBpZCA9IDIyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///22\n')},,,function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nvar document = __webpack_require__(1).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n")},function(module,exports,__webpack_require__){eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(6);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///26\n")},function(module,exports,__webpack_require__){eval("var shared = __webpack_require__(28)('keys');\nvar uid = __webpack_require__(19);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NmIxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///27\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcz83YmMwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHt9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2hhcmVkLmpzXG4vLyBtb2R1bGUgaWQgPSAyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///28\n")},function(module,exports){eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/YzY3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n")},function(module,exports,__webpack_require__){eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(22);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n")},,,,,,function(module,exports,__webpack_require__){eval("module.exports = !__webpack_require__(5) && !__webpack_require__(13)(function () {\n return Object.defineProperty(__webpack_require__(25)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///36\n")},function(module,exports,__webpack_require__){eval("var has = __webpack_require__(9);\nvar toIObject = __webpack_require__(10);\nvar arrayIndexOf = __webpack_require__(58)(false);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzIxYjgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///37\n")},function(module,exports,__webpack_require__){eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(21);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz80MTExIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qc1xuLy8gbW9kdWxlIGlkID0gMzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///38\n")},function(module,exports,__webpack_require__){eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar fails = __webpack_require__(13);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanM/YmFhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qtc2FwLmpzXG4vLyBtb2R1bGUgaWQgPSAzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///39\n")},,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(15);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/MzE0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///57\n")},function(module,exports,__webpack_require__){eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(10);\nvar toLength = __webpack_require__(38);\nvar toAbsoluteIndex = __webpack_require__(59);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2JjNTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanNcbi8vIG1vZHVsZSBpZCA9IDU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///58\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(21);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzdlNDAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///59\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(61), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/MGI4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA2MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///60\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(62);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ZjViMCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///61\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(3);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(5), 'Object', { defineProperty: __webpack_require__(7).f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanM/OTgyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///62\n")},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(108), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cy5qcz83ZDk4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5c1wiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///107\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(109);\nmodule.exports = __webpack_require__(0).Object.keys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qcz84YzU2Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Qua2V5cztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///108\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(30);\nvar $keys = __webpack_require__(20);\n\n__webpack_require__(39)('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qcz8wOWRjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2tleXMnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBrZXlzKGl0KSB7XG4gICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///109\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(113);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = __webpack_require__(107);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.divideURL = divideURL;\nexports.emptyObject = emptyObject;\nexports.secondsSinceEpoch = secondsSinceEpoch;\nexports.deepClone = deepClone;\nexports.removePathFromURL = removePathFromURL;\nexports.getUserURLFromEmail = getUserURLFromEmail;\nexports.getUserEmailFromURL = getUserEmailFromURL;\nexports.convertToUserURL = convertToUserURL;\nexports.isDataObjectURL = isDataObjectURL;\nexports.isLegacy = isLegacy;\nexports.isURL = isURL;\nexports.isUserURL = isUserURL;\nexports.isHypertyURL = isHypertyURL;\nexports.getConfigurationResources = getConfigurationResources;\nexports.buildURL = buildURL;\nexports.generateGUID = generateGUID;\nexports.getUserIdentityDomain = getUserIdentityDomain;\nexports.isBackendServiceURL = isBackendServiceURL;\nexports.divideEmail = divideEmail;\nexports.assign = assign;\nexports.splitObjectURL = splitObjectURL;\nexports.checkAttribute = checkAttribute;\nexports.parseAttributes = parseAttributes;\nexports.isEmpty = isEmpty;\nexports.chatkeysToStringCloner = chatkeysToStringCloner;\nexports.chatkeysToArrayCloner = chatkeysToArrayCloner;\nexports.parseMessageURL = parseMessageURL;\nexports.availableSpace = availableSpace;\nexports.encode = encode;\nexports.decode = decode;\nexports.decodeToUint8Array = decodeToUint8Array;\nexports.stringify = stringify;\nexports.parse = parse;\nexports.parseToUint8Array = parseToUint8Array;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n/**\r\n * Support module with some functions will be useful\r\n * @module utils\r\n */\n\n/**\r\n * @typedef divideURL\r\n * @type Object\r\n * @property {string} type The type of URL\r\n * @property {string} domain The domain of URL\r\n * @property {string} identity The identity of URL\r\n */\n\n/**\r\n * Divide an url in type, domain and identity\r\n * @param {URL.URL} url - url address\r\n * @return {divideURL} the result of divideURL\r\n */\nfunction divideURL(url) {\n\n function recurse(value) {\n var regex = /([a-zA-Z-]*)(:\\/\\/(?:\\.)?|:)([-a-zA-Z0-9@:%._+~#=]{2,256})([-a-zA-Z0-9@:%._+~#=/]*)/gi;\n var subst = '$1,$3,$4';\n var parts = value.replace(regex, subst).split(',');\n return parts;\n }\n\n var parts = recurse(url);\n\n // If the url has no scheme\n if (parts[0] === url && !parts[0].includes('@')) {\n\n var _result = {\n type: '',\n domain: url,\n identity: ''\n };\n\n console.warn('[DivideURL] DivideURL don\\'t support url without scheme. Please review your url address', url);\n\n return _result;\n }\n\n // check if the url has the scheme and includes an @\n if (parts[0] === url && parts[0].includes('@')) {\n var scheme = parts[0] === url ? 'smtp' : parts[0];\n parts = recurse(scheme + '://' + parts[0]);\n }\n\n // if the domain includes an @, divide it to domain and identity respectively\n if (parts[1].includes('@')) {\n parts[2] = parts[0] + '://' + parts[1];\n parts[1] = parts[1].substr(parts[1].indexOf('@') + 1);\n } /*else if (parts[2].includes('/')) {\r\n parts[2] = parts[2].substr(parts[2].lastIndexOf('/')+1);\r\n }*/\n\n var result = {\n type: parts[0],\n domain: parts[1],\n identity: parts[2]\n };\n\n return result;\n}\n\n/**\r\n * Check if an Object is empty\r\n * @param {Object} object Object to be checked\r\n * @return {Boolean} status of Object, empty or not (true|false);\r\n */\nfunction emptyObject(object) {\n return (0, _keys2.default)(object).length > 0 ? false : true;\n}\n\nfunction secondsSinceEpoch() {\n return Math.floor(Date.now() / 1000);\n}\n\n/**\r\n * Make a COPY of the original data\r\n * @param {Object} obj - object to be cloned\r\n * @return {Object}\r\n */\nfunction deepClone(obj) {\n //TODO: simple but inefficient JSON deep clone...\n if (obj) return JSON.parse((0, _stringify2.default)(obj));\n}\n\nfunction removePathFromURL(url) {\n var splitURL = url.split('/');\n return splitURL[0] + '//' + splitURL[2] + '/' + splitURL[3];\n}\n\n/**\r\n * Obtains the user URL that corresponds to a given email\r\n * @param {string} userEmail The user email\r\n * @return {URL.URL} userURL The user URL\r\n */\nfunction getUserURLFromEmail(userEmail) {\n var indexOfAt = userEmail.indexOf('@');\n return 'user://' + userEmail.substring(indexOfAt + 1, userEmail.length) + '/' + userEmail.substring(0, indexOfAt);\n}\n\n/**\r\n * Obtains the user email that corresponds to a given URL\r\n * @param {URL.URL} userURL The user URL\r\n * @return {string} userEmail The user email\r\n */\nfunction getUserEmailFromURL(userURL) {\n var url = divideURL(userURL);\n return url.identity.replace('/', '') + '@' + url.domain; // identity field has '/exampleID' instead of 'exampleID'\n}\n\n/**\r\n * Check if the user identifier is already in the URL format, if not, convert to URL format\r\n * @param {string} identifier user identifier\r\n * @return {string} userURL the user URL\r\n */\nfunction convertToUserURL(identifier) {\n\n // check if the identifier is already in the url format\n if (identifier.substring(0, 7) === 'user://') {\n var dividedURL = divideURL(identifier);\n\n //check if the url is well formated\n if (dividedURL.domain && dividedURL.identity) {\n return identifier;\n } else {\n throw 'userURL with wrong format';\n }\n\n //if not, convert the user email to URL format\n } else {\n return getUserURLFromEmail(identifier);\n }\n}\n\nfunction isDataObjectURL(url) {\n var schemasToIgnore = ['domain-idp', 'runtime', 'domain', 'hyperty'];\n var splitURL = url.split('://');\n var urlSchema = splitURL[0];\n\n return schemasToIgnore.indexOf(urlSchema) === -1;\n}\n\nfunction isLegacy(url) {\n if (url.split('@').length > 1) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction isURL(url) {\n return url.split('/').length >= 3;\n}\n\nfunction isUserURL(url) {\n return divideURL(url).type === 'user';\n}\n\nfunction isHypertyURL(url) {\n return divideURL(url).type === 'hyperty';\n}\n\n/**\r\n * get information relative each component configured on runtime configuration;\r\n * @param {object} configuration object with all configuration\r\n * @param {string} component string with the component to get the configuration, like, runtimeURLS, catalogueURLs, msgNodeURL, domainRegistryURL;\r\n * @param {string} resource type of resource to get, like, catalogue, runtimeUA, protocolstub, idpProxy\r\n * @return {object} return an object with all configurations;\r\n */\nfunction getConfigurationResources(configuration, component, resource) {\n var objectResource = configuration[component];\n var resourceType = objectResource[resource];\n\n return resourceType;\n}\n\n/**\r\n * Build a full url with the runtime configuration;\r\n * @param {object} configuration object with all configuration\r\n * @param {string} component string with the component to get the configuration, like, runtimeURLS, catalogueURLs, msgNodeURL, domainRegistryURL;\r\n * @param {string} resource type of resource to get, like, catalogue, runtimeUA, protocolstub, idpProxy\r\n * @param {string} type resource to get, like a hyperty name or protocolstub name;\r\n * @param {boolean} useFallback if true the function will check if have a fallback url;\r\n * @return {string} partial url to contact the resource;\r\n */\nfunction buildURL(configuration, component, resource, type) {\n var useFallback = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n var objectResource = configuration[component];\n var url = void 0;\n\n if (!objectResource.hasOwnProperty(resource)) {\n throw Error('The configuration ' + (0, _stringify2.default)(objectResource, '', 2) + ' don\\'t have the ' + resource + ' resource you are looking for');\n }\n\n var resourceType = objectResource[resource];\n\n if (type) {\n url = resourceType.prefix + configuration.domain + resourceType.suffix + type;\n if (resourceType.hasOwnProperty('fallback') && useFallback) {\n if (resourceType.fallback.indexOf('%domain%')) {\n url = resourceType.fallback.replace(/(%domain%)/g, configuration.domain) + type;\n } else {\n url = resourceType.fallback + type;\n }\n }\n } else {\n url = resourceType.prefix + configuration.domain + resourceType.suffix;\n }\n\n // console.log(url);\n\n return url;\n}\n\n/**\r\n * Generate a Global Unique ID\r\n *\r\n * @returns String;\r\n */\nfunction generateGUID() {\n\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n\nfunction getUserIdentityDomain(url) {\n var dividedURL = divideURL(url);\n var splitedDomain = dividedURL.domain.split('.');\n var splitedLength = splitedDomain.length;\n if (splitedLength == 1) {\n return splitedDomain[splitedLength - 1];\n }\n var domain = splitedDomain[splitedLength - 2] + '.' + splitedDomain[splitedLength - 1];\n return domain;\n}\n\n/**\r\n * Check if URL is from a backend service\r\n * @param {string} url URL to be processed\r\n * @return {boolean}\r\n */\n\nfunction isBackendServiceURL(url) {\n var dividedURL = divideURL(url);\n var splitedDomain = dividedURL.domain.split('.');\n var backendSchemes = ['domain', 'global', 'domain-idp']; // should be defined in the runtime configuration\n var backendSubDomains = ['registry', 'msg-node']; // should be defined in the runtime configuration\n var subDomain = void 0;\n\n if (splitedDomain.length > 1) {\n subDomain = splitedDomain.filter(function (item) {\n return backendSubDomains.indexOf(item) !== -1;\n })[0];\n }\n\n if (subDomain && backendSubDomains.indexOf(subDomain) !== -1) {\n return true;\n }\n\n if (dividedURL.type) {\n return backendSchemes.indexOf(dividedURL.type) !== -1;\n }\n\n return false;\n}\n\nfunction divideEmail(email) {\n var indexOfAt = email.indexOf('@');\n\n var result = {\n username: email.substring(0, indexOfAt),\n domain: email.substring(indexOfAt + 1, email.length)\n };\n\n return result;\n}\n\nfunction assign(obj, keyPath, value) {\n\n if (!obj) obj = {};\n if (typeof keyPath === 'string') keyPath = parseAttributes(keyPath);\n\n var lastKeyIndex = keyPath.length - 1;\n\n for (var i = 0; i < lastKeyIndex; ++i) {\n var key = keyPath[i];\n if (!(key in obj)) {\n obj[key] = {};\n }\n\n obj = obj[key];\n }\n\n obj[keyPath[lastKeyIndex]] = value;\n}\n\nfunction splitObjectURL(dataObjectURL) {\n console.info('[utils - splitObjectURL]: ', dataObjectURL);\n\n var splitedURL = dataObjectURL.split('/');\n var url = splitedURL[0] + '//' + splitedURL[2] + '/' + splitedURL[3];\n var resource = splitedURL[5];\n\n var result = {\n url: url,\n resource: resource\n };\n\n console.info('[utils - splitObjectURL]: ', result);\n\n return result;\n}\n\nfunction checkAttribute(path) {\n\n var regex = /((([a-zA-Z]+):\\/\\/([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})\\/[a-zA-Z0-9.]+@[a-zA-Z0-9]+(-)?[a-zA-Z0-9]+(\\.)?[a-zA-Z0-9]{2,10}?\\.[a-zA-Z]{2,10})(.+(?=.identity))?/gm;\n\n var list = [];\n var final = [];\n var test = path.match(regex);\n\n if (test == null) {\n final = path.split('.');\n } else {\n var m = void 0;\n while ((m = regex.exec(path)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (m.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n\n // The result can be accessed through the `m`-variable.\n m.forEach(function (match, groupIndex) {\n if (groupIndex === 0) {\n list.push(match);\n }\n });\n }\n var result = void 0;\n list.forEach(function (url) {\n\n result = path.replace(url, '*-*');\n final = result.split('.').map(function (item) {\n\n if (item === '*-*') {\n return url;\n }\n\n return item;\n });\n });\n }\n\n console.log('[RuntimeCore.Utils.checkAttribute]', final);\n return final;\n}\n\nfunction parseAttributes(path) {\n var regex = /([0-9a-zA-Z][-\\w]*):\\/\\//g;\n\n var string3 = 'identity';\n\n if (!path.includes('://')) {\n return path.split('.');\n } else {\n var string1 = path.split(regex)[0];\n\n var array1 = string1.split('.');\n\n var string2 = path.replace(string1, '');\n\n if (path.includes(string3)) {\n\n var array2 = string2.split(string3 + '.');\n\n console.log('array2 ' + array2);\n\n string2 = array2[0].slice('.', -1);\n\n array2 = array2[1].split('.');\n\n array1.push(string2, string3);\n\n array1 = array1.concat(array2);\n } else {\n array1.push(string2);\n }\n\n return array1.filter(Boolean);\n }\n}\n\nfunction isEmpty(obj) {\n for (var prop in obj) {\n\n if (obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n\n return (0, _stringify2.default)(obj) === (0, _stringify2.default)({});\n}\n\nfunction chatkeysToStringCloner(sessionKeys) {\n var dataObjectSessionKeysClone = {};\n var fields = (0, _keys2.default)(sessionKeys);\n if (fields) {\n try {\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n dataObjectSessionKeysClone[field] = {};\n dataObjectSessionKeysClone[field].sessionKey = sessionKeys[field].sessionKey.toString();\n dataObjectSessionKeysClone[field].isToEncrypt = sessionKeys[field].isToEncrypt;\n }\n } catch (err) {\n console.error('_chatkeysToStringCloner:err', err);\n }\n }\n return dataObjectSessionKeysClone;\n}\n\nfunction chatkeysToArrayCloner(sessionKeys) {\n var dataObjectSessionKeysClone = {};\n var fields = (0, _keys2.default)(sessionKeys);\n if (fields) {\n try {\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n dataObjectSessionKeysClone[field] = {};\n var arrayValues = JSON.parse('[' + sessionKeys[field].sessionKey + ']');\n dataObjectSessionKeysClone[field].sessionKey = new Uint8Array(arrayValues);\n dataObjectSessionKeysClone[field].isToEncrypt = sessionKeys[field].isToEncrypt;\n }\n } catch (err) {\n console.error('_chatkeysToArrayCloner:err', err);\n }\n }\n return dataObjectSessionKeysClone;\n}\n\nfunction parseMessageURL(URL) {\n var splitedToURL = URL.split('/');\n if (splitedToURL.length <= 6) {\n return splitedToURL[0] + '//' + splitedToURL[2] + '/' + splitedToURL[3];\n } else {\n return splitedToURL[0] + '//' + splitedToURL[2] + '/' + splitedToURL[3] + '/' + splitedToURL[4];\n }\n}\n\nfunction availableSpace(usage, quota) {\n var available = (usage / quota).toFixed(2);\n return {\n quota: quota,\n usage: usage,\n percent: Number(available)\n };\n}\n\n/**\r\n* Encodes a JS object to base 64 encode\r\n* @param {Object} value byteArray value\r\n* @return {string} encoded value\r\n*/\nfunction encode(value) {\n try {\n var stringValue = stringify(value);\n return btoa(stringValue);\n } catch (err) {\n console.error('[Utils.encode:err] ' + err);\n throw err;\n }\n}\n\n/**\r\n * Decode a base64 string to object\r\n * @param {string_b64} value value encoded in base 64\r\n * @return {Object} decodedValue\r\n */\nfunction decode(value) {\n try {\n return JSON.parse(atob(value));\n } catch (err) {\n console.log('[Utils.decode:err] ' + err);\n throw err;\n }\n}\n\n/**\r\n* Decode a base64 string to Uint8Array\r\n* @param {string_b64} value byteArray value\r\n* @return {Uint8Array} encoded value\r\n*/\nfunction decodeToUint8Array(value) {\n try {\n return new Uint8Array(decode(value));\n } catch (err) {\n console.error('[Utils.decodeToUint8Array:err] ' + err);\n throw err;\n }\n}\n\n/**\r\n* Converts a JS object to string\r\n* NOTE: Special conversion for Uint8Arrays\r\n* @param {Object} value byteArray value\r\n* @return {Uint8Array} encoded value\r\n*/\nfunction stringify(value) {\n try {\n var stringValue = void 0;\n if (value.constructor === Uint8Array) {\n stringValue = '[' + value.toString() + ']'; // the [] is for JSON.parse compatibility\n } else {\n stringValue = (0, _stringify2.default)(value);\n }\n return stringValue;\n } catch (err) {\n console.error('[Utils.stringify:err] ' + err);\n throw err;\n }\n}\n\n/**\r\n* Converts a stringified object to object\r\n* @param {String} value byteArray value\r\n* @return {Object} encoded value\r\n*/\nfunction parse(value) {\n try {\n return JSON.parse(value);\n } catch (err) {\n console.error('[Utils.parse:err]' + err);\n console.trace();\n console.error('That that cause the error:', value);\n throw err;\n }\n}\n\n/**\r\n* Converts a stringified object to object\r\n* @param {String} value byteArray value\r\n* @return {Uint8Array} encoded value\r\n*/\nfunction parseToUint8Array(value) {\n try {\n return new Uint8Array(parse(value));\n } catch (err) {\n console.error('[Utils.parseToUint8Array:err]' + err);\n throw err;\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy91dGlscy91dGlscy5qcz9iZTczIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuLyoqXHJcbiAqIFN1cHBvcnQgbW9kdWxlIHdpdGggc29tZSBmdW5jdGlvbnMgd2lsbCBiZSB1c2VmdWxcclxuICogQG1vZHVsZSB1dGlsc1xyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAdHlwZWRlZiBkaXZpZGVVUkxcclxuICogQHR5cGUgT2JqZWN0XHJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0eXBlIFRoZSB0eXBlIG9mIFVSTFxyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZG9tYWluIFRoZSBkb21haW4gb2YgVVJMXHJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpZGVudGl0eSBUaGUgaWRlbnRpdHkgb2YgVVJMXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIERpdmlkZSBhbiB1cmwgaW4gdHlwZSwgZG9tYWluIGFuZCBpZGVudGl0eVxyXG4gKiBAcGFyYW0gIHtVUkwuVVJMfSB1cmwgLSB1cmwgYWRkcmVzc1xyXG4gKiBAcmV0dXJuIHtkaXZpZGVVUkx9IHRoZSByZXN1bHQgb2YgZGl2aWRlVVJMXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGl2aWRlVVJMKHVybCkge1xyXG5cclxuICBmdW5jdGlvbiByZWN1cnNlKHZhbHVlKSB7XHJcbiAgICBjb25zdCByZWdleCA9IC8oW2EtekEtWi1dKikoOlxcL1xcLyg/OlxcLik/fDopKFstYS16QS1aMC05QDolLl8rfiM9XXsyLDI1Nn0pKFstYS16QS1aMC05QDolLl8rfiM9L10qKS9naTtcclxuICAgIGNvbnN0IHN1YnN0ID0gJyQxLCQzLCQ0JztcclxuICAgIGxldCBwYXJ0cyA9IHZhbHVlLnJlcGxhY2UocmVnZXgsIHN1YnN0KS5zcGxpdCgnLCcpO1xyXG4gICAgcmV0dXJuIHBhcnRzO1xyXG4gIH1cclxuXHJcbiAgbGV0IHBhcnRzID0gcmVjdXJzZSh1cmwpO1xyXG5cclxuICAvLyBJZiB0aGUgdXJsIGhhcyBubyBzY2hlbWVcclxuICBpZiAocGFydHNbMF0gPT09IHVybCAmJiAhcGFydHNbMF0uaW5jbHVkZXMoJ0AnKSkge1xyXG5cclxuICAgIGxldCByZXN1bHQgPSB7XHJcbiAgICAgIHR5cGU6ICcnLFxyXG4gICAgICBkb21haW46IHVybCxcclxuICAgICAgaWRlbnRpdHk6ICcnXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnNvbGUud2FybignW0RpdmlkZVVSTF0gRGl2aWRlVVJMIGRvblxcJ3Qgc3VwcG9ydCB1cmwgd2l0aG91dCBzY2hlbWUuIFBsZWFzZSByZXZpZXcgeW91ciB1cmwgYWRkcmVzcycsIHVybCk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vIGNoZWNrIGlmIHRoZSB1cmwgaGFzIHRoZSBzY2hlbWUgYW5kIGluY2x1ZGVzIGFuIEBcclxuICBpZiAocGFydHNbMF0gPT09IHVybCAmJiBwYXJ0c1swXS5pbmNsdWRlcygnQCcpKSB7XHJcbiAgICBsZXQgc2NoZW1lID0gcGFydHNbMF0gPT09IHVybCA/ICdzbXRwJyA6IHBhcnRzWzBdO1xyXG4gICAgcGFydHMgPSByZWN1cnNlKHNjaGVtZSArICc6Ly8nICsgcGFydHNbMF0pO1xyXG4gIH1cclxuXHJcbiAgLy8gaWYgdGhlIGRvbWFpbiBpbmNsdWRlcyBhbiBALCBkaXZpZGUgaXQgdG8gZG9tYWluIGFuZCBpZGVudGl0eSByZXNwZWN0aXZlbHlcclxuICBpZiAocGFydHNbMV0uaW5jbHVkZXMoJ0AnKSkge1xyXG4gICAgcGFydHNbMl0gPSBwYXJ0c1swXSArICc6Ly8nICsgcGFydHNbMV07XHJcbiAgICBwYXJ0c1sxXSA9IHBhcnRzWzFdLnN1YnN0cihwYXJ0c1sxXS5pbmRleE9mKCdAJykgKyAxKTtcclxuICB9IFx0LyplbHNlIGlmIChwYXJ0c1syXS5pbmNsdWRlcygnLycpKSB7XHJcbiAgICBwYXJ0c1syXSA9IHBhcnRzWzJdLnN1YnN0cihwYXJ0c1syXS5sYXN0SW5kZXhPZignLycpKzEpO1xyXG4gIH0qL1xyXG5cclxuICBsZXQgcmVzdWx0ID0ge1xyXG4gICAgdHlwZTogcGFydHNbMF0sXHJcbiAgICBkb21haW46IHBhcnRzWzFdLFxyXG4gICAgaWRlbnRpdHk6IHBhcnRzWzJdXHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIHJlc3VsdDtcclxuXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiBhbiBPYmplY3QgaXMgZW1wdHlcclxuICogQHBhcmFtICB7T2JqZWN0fSBvYmplY3QgT2JqZWN0IHRvIGJlIGNoZWNrZWRcclxuICogQHJldHVybiB7Qm9vbGVhbn0gICAgICAgc3RhdHVzIG9mIE9iamVjdCwgZW1wdHkgb3Igbm90ICh0cnVlfGZhbHNlKTtcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBlbXB0eU9iamVjdChvYmplY3QpIHtcclxuICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGggPiAwID8gZmFsc2UgOiB0cnVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kc1NpbmNlRXBvY2goKSB7XHJcbiAgcmV0dXJuIE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIE1ha2UgYSBDT1BZIG9mIHRoZSBvcmlnaW5hbCBkYXRhXHJcbiAqIEBwYXJhbSAge09iamVjdH0gIG9iaiAtIG9iamVjdCB0byBiZSBjbG9uZWRcclxuICogQHJldHVybiB7T2JqZWN0fVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBDbG9uZShvYmopIHtcclxuICAvL1RPRE86IHNpbXBsZSBidXQgaW5lZmZpY2llbnQgSlNPTiBkZWVwIGNsb25lLi4uXHJcbiAgaWYgKG9iaikgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVQYXRoRnJvbVVSTCh1cmwpIHtcclxuICBsZXQgc3BsaXRVUkwgPSB1cmwuc3BsaXQoJy8nKTtcclxuICByZXR1cm4gc3BsaXRVUkxbMF0gKyAnLy8nICsgc3BsaXRVUkxbMl0gKyAnLycgKyBzcGxpdFVSTFszXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIE9idGFpbnMgdGhlIHVzZXIgVVJMIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBnaXZlbiBlbWFpbFxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHVzZXJFbWFpbCBUaGUgdXNlciBlbWFpbFxyXG4gKiBAcmV0dXJuIHtVUkwuVVJMfSB1c2VyVVJMIFRoZSB1c2VyIFVSTFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFVzZXJVUkxGcm9tRW1haWwodXNlckVtYWlsKSB7XHJcbiAgbGV0IGluZGV4T2ZBdCA9IHVzZXJFbWFpbC5pbmRleE9mKCdAJyk7XHJcbiAgcmV0dXJuICd1c2VyOi8vJyArIHVzZXJFbWFpbC5zdWJzdHJpbmcoaW5kZXhPZkF0ICsgMSwgdXNlckVtYWlsLmxlbmd0aCkgKyAnLycgKyB1c2VyRW1haWwuc3Vic3RyaW5nKDAsIGluZGV4T2ZBdCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBPYnRhaW5zIHRoZSB1c2VyIGVtYWlsIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBnaXZlbiBVUkxcclxuICogQHBhcmFtICB7VVJMLlVSTH0gdXNlclVSTCBUaGUgdXNlciBVUkxcclxuICogQHJldHVybiB7c3RyaW5nfSB1c2VyRW1haWwgVGhlIHVzZXIgZW1haWxcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRVc2VyRW1haWxGcm9tVVJMKHVzZXJVUkwpIHtcclxuICBsZXQgdXJsID0gZGl2aWRlVVJMKHVzZXJVUkwpO1xyXG4gIHJldHVybiB1cmwuaWRlbnRpdHkucmVwbGFjZSgnLycsICcnKSArICdAJyArIHVybC5kb21haW47IC8vIGlkZW50aXR5IGZpZWxkIGhhcyAnL2V4YW1wbGVJRCcgaW5zdGVhZCBvZiAnZXhhbXBsZUlEJ1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2sgaWYgdGhlIHVzZXIgaWRlbnRpZmllciBpcyBhbHJlYWR5IGluIHRoZSBVUkwgZm9ybWF0LCBpZiBub3QsIGNvbnZlcnQgdG8gVVJMIGZvcm1hdFxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgaWRlbnRpZmllciAgdXNlciBpZGVudGlmaWVyXHJcbiAqIEByZXR1cm4ge3N0cmluZ30gICB1c2VyVVJMICAgIHRoZSB1c2VyIFVSTFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb1VzZXJVUkwoaWRlbnRpZmllcikge1xyXG5cclxuICAvLyBjaGVjayBpZiB0aGUgaWRlbnRpZmllciBpcyBhbHJlYWR5IGluIHRoZSB1cmwgZm9ybWF0XHJcbiAgaWYgKGlkZW50aWZpZXIuc3Vic3RyaW5nKDAsIDcpID09PSAndXNlcjovLycpIHtcclxuICAgIGxldCBkaXZpZGVkVVJMID0gZGl2aWRlVVJMKGlkZW50aWZpZXIpO1xyXG5cclxuICAgIC8vY2hlY2sgaWYgdGhlIHVybCBpcyB3ZWxsIGZvcm1hdGVkXHJcbiAgICBpZiAoZGl2aWRlZFVSTC5kb21haW4gJiYgZGl2aWRlZFVSTC5pZGVudGl0eSkge1xyXG4gICAgICByZXR1cm4gaWRlbnRpZmllcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93ICd1c2VyVVJMIHdpdGggd3JvbmcgZm9ybWF0JztcclxuICAgIH1cclxuXHJcbiAgLy9pZiBub3QsIGNvbnZlcnQgdGhlIHVzZXIgZW1haWwgdG8gVVJMIGZvcm1hdFxyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gZ2V0VXNlclVSTEZyb21FbWFpbChpZGVudGlmaWVyKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGFPYmplY3RVUkwodXJsKSB7XHJcbiAgbGV0IHNjaGVtYXNUb0lnbm9yZSA9IFsnZG9tYWluLWlkcCcsICdydW50aW1lJywgJ2RvbWFpbicsICdoeXBlcnR5J107XHJcbiAgbGV0IHNwbGl0VVJMID0gKHVybCkuc3BsaXQoJzovLycpO1xyXG4gIGxldCB1cmxTY2hlbWEgPSBzcGxpdFVSTFswXTtcclxuXHJcbiAgcmV0dXJuIHNjaGVtYXNUb0lnbm9yZS5pbmRleE9mKHVybFNjaGVtYSkgPT09IC0xO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNMZWdhY3kodXJsKSB7XHJcbiAgaWYgKHVybC5zcGxpdCgnQCcpLmxlbmd0aCA+IDEpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNVUkwodXJsKSB7XHJcbiAgcmV0dXJuICh1cmwpLnNwbGl0KCcvJykubGVuZ3RoID49IDM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1VzZXJVUkwodXJsKSB7XHJcbiAgcmV0dXJuIGRpdmlkZVVSTCh1cmwpLnR5cGUgPT09ICd1c2VyJztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzSHlwZXJ0eVVSTCh1cmwpIHtcclxuICByZXR1cm4gZGl2aWRlVVJMKHVybCkudHlwZSA9PT0gJ2h5cGVydHknO1xyXG59XHJcblxyXG4vKipcclxuICogZ2V0IGluZm9ybWF0aW9uIHJlbGF0aXZlIGVhY2ggY29tcG9uZW50IGNvbmZpZ3VyZWQgb24gcnVudGltZSBjb25maWd1cmF0aW9uO1xyXG4gKiBAcGFyYW0gIHtvYmplY3R9IGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggYWxsIGNvbmZpZ3VyYXRpb25cclxuICogQHBhcmFtICB7c3RyaW5nfSBjb21wb25lbnQgICAgIHN0cmluZyB3aXRoIHRoZSBjb21wb25lbnQgdG8gZ2V0IHRoZSBjb25maWd1cmF0aW9uLCBsaWtlLCBydW50aW1lVVJMUywgY2F0YWxvZ3VlVVJMcywgbXNnTm9kZVVSTCwgZG9tYWluUmVnaXN0cnlVUkw7XHJcbiAqIEBwYXJhbSAge3N0cmluZ30gcmVzb3VyY2UgICAgICB0eXBlIG9mIHJlc291cmNlIHRvIGdldCwgbGlrZSwgY2F0YWxvZ3VlLCBydW50aW1lVUEsIHByb3RvY29sc3R1YiwgaWRwUHJveHlcclxuICogQHJldHVybiB7b2JqZWN0fSAgICAgICAgICAgICAgIHJldHVybiBhbiBvYmplY3Qgd2l0aCBhbGwgY29uZmlndXJhdGlvbnM7XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlndXJhdGlvblJlc291cmNlcyhjb25maWd1cmF0aW9uLCBjb21wb25lbnQsIHJlc291cmNlKSB7XHJcbiAgbGV0IG9iamVjdFJlc291cmNlID0gY29uZmlndXJhdGlvbltjb21wb25lbnRdO1xyXG4gIGxldCByZXNvdXJjZVR5cGUgPSBvYmplY3RSZXNvdXJjZVtyZXNvdXJjZV07XHJcblxyXG4gIHJldHVybiByZXNvdXJjZVR5cGU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCdWlsZCBhIGZ1bGwgdXJsIHdpdGggdGhlIHJ1bnRpbWUgY29uZmlndXJhdGlvbjtcclxuICogQHBhcmFtICB7b2JqZWN0fSBjb25maWd1cmF0aW9uIG9iamVjdCB3aXRoIGFsbCBjb25maWd1cmF0aW9uXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gY29tcG9uZW50ICAgICBzdHJpbmcgd2l0aCB0aGUgY29tcG9uZW50IHRvIGdldCB0aGUgY29uZmlndXJhdGlvbiwgbGlrZSwgcnVudGltZVVSTFMsIGNhdGFsb2d1ZVVSTHMsIG1zZ05vZGVVUkwsIGRvbWFpblJlZ2lzdHJ5VVJMO1xyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHJlc291cmNlICAgICAgdHlwZSBvZiByZXNvdXJjZSB0byBnZXQsIGxpa2UsIGNhdGFsb2d1ZSwgcnVudGltZVVBLCBwcm90b2NvbHN0dWIsIGlkcFByb3h5XHJcbiAqIEBwYXJhbSAge3N0cmluZ30gdHlwZSAgICAgICAgICByZXNvdXJjZSB0byBnZXQsIGxpa2UgYSBoeXBlcnR5IG5hbWUgb3IgcHJvdG9jb2xzdHViIG5hbWU7XHJcbiAqIEBwYXJhbSAge2Jvb2xlYW59IHVzZUZhbGxiYWNrICBpZiB0cnVlIHRoZSBmdW5jdGlvbiB3aWxsIGNoZWNrIGlmIGhhdmUgYSBmYWxsYmFjayB1cmw7XHJcbiAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgICAgICAgICBwYXJ0aWFsIHVybCB0byBjb250YWN0IHRoZSByZXNvdXJjZTtcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBidWlsZFVSTChjb25maWd1cmF0aW9uLCBjb21wb25lbnQsIHJlc291cmNlLCB0eXBlLCB1c2VGYWxsYmFjayA9IGZhbHNlKSB7XHJcbiAgbGV0IG9iamVjdFJlc291cmNlID0gY29uZmlndXJhdGlvbltjb21wb25lbnRdO1xyXG4gIGxldCB1cmw7XHJcblxyXG4gIGlmICghb2JqZWN0UmVzb3VyY2UuaGFzT3duUHJvcGVydHkocmVzb3VyY2UpKSB7XHJcbiAgICB0aHJvdyBFcnJvcignVGhlIGNvbmZpZ3VyYXRpb24gJyArIEpTT04uc3RyaW5naWZ5KG9iamVjdFJlc291cmNlLCAnJywgMikgKyAnIGRvblxcJ3QgaGF2ZSB0aGUgJyArIHJlc291cmNlICsgJyByZXNvdXJjZSB5b3UgYXJlIGxvb2tpbmcgZm9yJyk7XHJcbiAgfVxyXG5cclxuICBsZXQgcmVzb3VyY2VUeXBlID0gb2JqZWN0UmVzb3VyY2VbcmVzb3VyY2VdO1xyXG5cclxuICBpZiAodHlwZSkge1xyXG4gICAgdXJsID0gcmVzb3VyY2VUeXBlLnByZWZpeCArIGNvbmZpZ3VyYXRpb24uZG9tYWluICsgcmVzb3VyY2VUeXBlLnN1ZmZpeCArIHR5cGU7XHJcbiAgICBpZiAocmVzb3VyY2VUeXBlLmhhc093blByb3BlcnR5KCdmYWxsYmFjaycpICYmIHVzZUZhbGxiYWNrKSB7XHJcbiAgICAgIGlmIChyZXNvdXJjZVR5cGUuZmFsbGJhY2suaW5kZXhPZignJWRvbWFpbiUnKSkge1xyXG4gICAgICAgIHVybCA9IHJlc291cmNlVHlwZS5mYWxsYmFjay5yZXBsYWNlKC8oJWRvbWFpbiUpL2csIGNvbmZpZ3VyYXRpb24uZG9tYWluKSArIHR5cGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdXJsID0gcmVzb3VyY2VUeXBlLmZhbGxiYWNrICsgdHlwZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICB1cmwgPSByZXNvdXJjZVR5cGUucHJlZml4ICsgY29uZmlndXJhdGlvbi5kb21haW4gKyByZXNvdXJjZVR5cGUuc3VmZml4O1xyXG4gIH1cclxuXHJcbiAgLy8gY29uc29sZS5sb2codXJsKTtcclxuXHJcbiAgcmV0dXJuIHVybDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdlbmVyYXRlIGEgR2xvYmFsIFVuaXF1ZSBJRFxyXG4gKlxyXG4gKiBAcmV0dXJucyBTdHJpbmc7XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVHVUlEKCkge1xyXG5cclxuICBmdW5jdGlvbiBzNCgpIHtcclxuICAgIHJldHVybiBNYXRoLmZsb29yKCgxICsgTWF0aC5yYW5kb20oKSkgKiAweDEwMDAwKVxyXG4gICAgICAudG9TdHJpbmcoMTYpXHJcbiAgICAgIC5zdWJzdHJpbmcoMSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gczQoKSArIHM0KCkgKyAnLScgKyBzNCgpICsgJy0nICsgczQoKSArICctJyArIHM0KCkgKyAnLScgKyBzNCgpICsgczQoKSArIHM0KCk7XHJcblxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlcklkZW50aXR5RG9tYWluKHVybCkge1xyXG4gIGxldCBkaXZpZGVkVVJMID0gZGl2aWRlVVJMKHVybCk7XHJcbiAgbGV0IHNwbGl0ZWREb21haW4gPSBkaXZpZGVkVVJMLmRvbWFpbi5zcGxpdCgnLicpO1xyXG4gIGxldCBzcGxpdGVkTGVuZ3RoID0gc3BsaXRlZERvbWFpbi5sZW5ndGg7XHJcbiAgaWYgKHNwbGl0ZWRMZW5ndGggPT0gMSkge1xyXG4gICAgcmV0dXJuIHNwbGl0ZWREb21haW5bc3BsaXRlZExlbmd0aCAtIDFdO1xyXG4gIH1cclxuICBsZXQgZG9tYWluID0gc3BsaXRlZERvbWFpbltzcGxpdGVkTGVuZ3RoIC0gMl0gKyAnLicgKyBzcGxpdGVkRG9tYWluW3NwbGl0ZWRMZW5ndGggLSAxXTtcclxuICByZXR1cm4gZG9tYWluO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2sgaWYgVVJMIGlzIGZyb20gYSBiYWNrZW5kIHNlcnZpY2VcclxuICogQHBhcmFtICB7c3RyaW5nfSB1cmwgICAgIFVSTCB0byBiZSBwcm9jZXNzZWRcclxuICogQHJldHVybiB7Ym9vbGVhbn1cclxuICovXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNCYWNrZW5kU2VydmljZVVSTCh1cmwpIHtcclxuICBsZXQgZGl2aWRlZFVSTCA9IGRpdmlkZVVSTCh1cmwpO1xyXG4gIGxldCBzcGxpdGVkRG9tYWluID0gZGl2aWRlZFVSTC5kb21haW4uc3BsaXQoJy4nKTtcclxuICBsZXQgYmFja2VuZFNjaGVtZXMgPSBbJ2RvbWFpbicsICdnbG9iYWwnLCAnZG9tYWluLWlkcCddOyAvLyBzaG91bGQgYmUgZGVmaW5lZCBpbiB0aGUgcnVudGltZSBjb25maWd1cmF0aW9uXHJcbiAgbGV0IGJhY2tlbmRTdWJEb21haW5zID0gWydyZWdpc3RyeScsICdtc2ctbm9kZSddOyAvLyBzaG91bGQgYmUgZGVmaW5lZCBpbiB0aGUgcnVudGltZSBjb25maWd1cmF0aW9uXHJcbiAgbGV0IHN1YkRvbWFpbjtcclxuXHJcbiAgaWYgKHNwbGl0ZWREb21haW4ubGVuZ3RoID4gMSkge1xyXG4gICAgc3ViRG9tYWluID0gc3BsaXRlZERvbWFpbi5maWx0ZXIoaXRlbSA9PiBiYWNrZW5kU3ViRG9tYWlucy5pbmRleE9mKGl0ZW0pICE9PSAtMSlbMF07XHJcbiAgfVxyXG5cclxuICBpZiAoc3ViRG9tYWluICYmIGJhY2tlbmRTdWJEb21haW5zLmluZGV4T2Yoc3ViRG9tYWluKSAhPT0gLTEpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaWYgKGRpdmlkZWRVUkwudHlwZSkge1xyXG4gICAgcmV0dXJuIChiYWNrZW5kU2NoZW1lcy5pbmRleE9mKGRpdmlkZWRVUkwudHlwZSkgIT09IC0xKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRpdmlkZUVtYWlsKGVtYWlsKSB7XHJcbiAgbGV0IGluZGV4T2ZBdCA9IGVtYWlsLmluZGV4T2YoJ0AnKTtcclxuXHJcbiAgbGV0IHJlc3VsdCA9IHtcclxuICAgIHVzZXJuYW1lOiBlbWFpbC5zdWJzdHJpbmcoMCwgaW5kZXhPZkF0KSxcclxuICAgIGRvbWFpbjogZW1haWwuc3Vic3RyaW5nKGluZGV4T2ZBdCArIDEsIGVtYWlsLmxlbmd0aClcclxuICB9O1xyXG5cclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbihvYmosIGtleVBhdGgsIHZhbHVlKSB7XHJcblxyXG4gIGlmICghb2JqKSBvYmogPSB7fTtcclxuICBpZiAodHlwZW9mKGtleVBhdGgpID09PSAnc3RyaW5nJykga2V5UGF0aCA9IHBhcnNlQXR0cmlidXRlcyhrZXlQYXRoKTtcclxuXHJcbiAgbGV0IGxhc3RLZXlJbmRleCA9IGtleVBhdGgubGVuZ3RoIC0gMTtcclxuXHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0S2V5SW5kZXg7ICsraSkge1xyXG4gICAgbGV0IGtleSA9IGtleVBhdGhbaV07XHJcbiAgICBpZiAoIShrZXkgaW4gb2JqKSkge1xyXG4gICAgICBvYmpba2V5XSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIG9iaiA9IG9ialtrZXldO1xyXG5cclxuICB9XHJcblxyXG4gIG9ialtrZXlQYXRoW2xhc3RLZXlJbmRleF1dID0gdmFsdWU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzcGxpdE9iamVjdFVSTChkYXRhT2JqZWN0VVJMKSB7XHJcbiAgY29uc29sZS5pbmZvKCdbdXRpbHMgLSBzcGxpdE9iamVjdFVSTF06ICcsIGRhdGFPYmplY3RVUkwpO1xyXG5cclxuICBsZXQgc3BsaXRlZFVSTCA9IGRhdGFPYmplY3RVUkwuc3BsaXQoJy8nKTtcclxuICBsZXQgdXJsID0gc3BsaXRlZFVSTFswXSArICcvLycgKyBzcGxpdGVkVVJMWzJdICsgJy8nICsgc3BsaXRlZFVSTFszXTtcclxuICBsZXQgcmVzb3VyY2UgPSBzcGxpdGVkVVJMWzVdO1xyXG5cclxuICBsZXQgcmVzdWx0ID0ge1xyXG4gICAgdXJsOiB1cmwsXHJcbiAgICByZXNvdXJjZTogcmVzb3VyY2VcclxuICB9O1xyXG5cclxuICBjb25zb2xlLmluZm8oJ1t1dGlscyAtIHNwbGl0T2JqZWN0VVJMXTogJywgcmVzdWx0KTtcclxuXHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQXR0cmlidXRlKHBhdGgpIHtcclxuXHJcbiAgbGV0IHJlZ2V4ID0gLygoKFthLXpBLVpdKyk6XFwvXFwvKFswLTlhLXpBLVpdWy1cXHddKlswLTlhLXpBLVpdXFwuKStbYS16QS1aXXsyLDl9KVxcL1thLXpBLVowLTkuXStAW2EtekEtWjAtOV0rKC0pP1thLXpBLVowLTldKyhcXC4pP1thLXpBLVowLTldezIsMTB9P1xcLlthLXpBLVpdezIsMTB9KSguKyg/PS5pZGVudGl0eSkpPy9nbTtcclxuXHJcbiAgbGV0IGxpc3QgPSBbXTtcclxuICBsZXQgZmluYWwgPSBbXTtcclxuICBsZXQgdGVzdCA9IHBhdGgubWF0Y2gocmVnZXgpO1xyXG5cclxuICBpZiAodGVzdCA9PSBudWxsKSB7XHJcbiAgICBmaW5hbCA9IHBhdGguc3BsaXQoJy4nKTtcclxuICB9IGVsc2Uge1xyXG4gICAgbGV0IG07XHJcbiAgICB3aGlsZSAoKG0gPSByZWdleC5leGVjKHBhdGgpKSAhPT0gbnVsbCkge1xyXG4gICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBpbmZpbml0ZSBsb29wcyB3aXRoIHplcm8td2lkdGggbWF0Y2hlc1xyXG4gICAgICBpZiAobS5pbmRleCA9PT0gcmVnZXgubGFzdEluZGV4KSB7XHJcbiAgICAgICAgcmVnZXgubGFzdEluZGV4Kys7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFRoZSByZXN1bHQgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGBtYC12YXJpYWJsZS5cclxuICAgICAgbS5mb3JFYWNoKChtYXRjaCwgZ3JvdXBJbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChncm91cEluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgICBsaXN0LnB1c2gobWF0Y2gpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgbGlzdC5mb3JFYWNoKCh1cmwpID0+IHtcclxuXHJcbiAgICAgIHJlc3VsdCA9IHBhdGgucmVwbGFjZSh1cmwsICcqLSonKTtcclxuICAgICAgZmluYWwgPSByZXN1bHQuc3BsaXQoJy4nKS5tYXAoKGl0ZW0pID0+IHtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0gPT09ICcqLSonKSB7IHJldHVybiB1cmw7IH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb25zb2xlLmxvZygnW1J1bnRpbWVDb3JlLlV0aWxzLmNoZWNrQXR0cmlidXRlXScsIGZpbmFsKTtcclxuICByZXR1cm4gZmluYWw7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUF0dHJpYnV0ZXMocGF0aCkge1xyXG4gIGxldCByZWdleCA9IC8oWzAtOWEtekEtWl1bLVxcd10qKTpcXC9cXC8vZztcclxuXHJcbiAgbGV0IHN0cmluZzMgPSAnaWRlbnRpdHknO1xyXG5cclxuICBpZiAoIXBhdGguaW5jbHVkZXMoJzovLycpKSB7XHJcbiAgICByZXR1cm4gKHBhdGguc3BsaXQoJy4nKSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGxldCBzdHJpbmcxID0gcGF0aC5zcGxpdChyZWdleClbMF07XHJcblxyXG4gICAgbGV0IGFycmF5MSA9IHN0cmluZzEuc3BsaXQoJy4nKTtcclxuXHJcbiAgICBsZXQgc3RyaW5nMiA9IHBhdGgucmVwbGFjZShzdHJpbmcxLCAnJyk7XHJcblxyXG4gICAgaWYgKHBhdGguaW5jbHVkZXMoc3RyaW5nMykpIHtcclxuXHJcbiAgICAgIGxldCBhcnJheTIgPSBzdHJpbmcyLnNwbGl0KHN0cmluZzMgKyAnLicpO1xyXG5cclxuICAgICAgY29uc29sZS5sb2coJ2FycmF5MiAnICsgYXJyYXkyKTtcclxuXHJcbiAgICAgIHN0cmluZzIgPSBhcnJheTJbMF0uc2xpY2UoJy4nLCAtMSk7XHJcblxyXG4gICAgICBhcnJheTIgPSBhcnJheTJbMV0uc3BsaXQoJy4nKTtcclxuXHJcbiAgICAgIGFycmF5MS5wdXNoKHN0cmluZzIsIHN0cmluZzMpO1xyXG5cclxuICAgICAgYXJyYXkxID0gYXJyYXkxLmNvbmNhdChhcnJheTIpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFycmF5MS5wdXNoKHN0cmluZzIpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKGFycmF5MS5maWx0ZXIoQm9vbGVhbikpO1xyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eShvYmopIHtcclxuICBmb3IgKHZhciBwcm9wIGluIG9iaikge1xyXG5cclxuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmopID09PSBKU09OLnN0cmluZ2lmeSh7fSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjaGF0a2V5c1RvU3RyaW5nQ2xvbmVyKHNlc3Npb25LZXlzKSB7XHJcbiAgbGV0IGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lID0ge307XHJcbiAgbGV0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHNlc3Npb25LZXlzKTtcclxuICBpZiAoZmllbGRzKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICBmaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgZmllbGQgPSBmaWVsZHNbaV07XHJcbiAgICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmVbZmllbGRdID0ge307XHJcbiAgICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmVbZmllbGRdLnNlc3Npb25LZXkgPSBzZXNzaW9uS2V5c1tmaWVsZF0uc2Vzc2lvbktleS50b1N0cmluZygpO1xyXG4gICAgICAgIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lW2ZpZWxkXS5pc1RvRW5jcnlwdCA9IHNlc3Npb25LZXlzW2ZpZWxkXS5pc1RvRW5jcnlwdDtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ19jaGF0a2V5c1RvU3RyaW5nQ2xvbmVyOmVycicsIGVycik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNoYXRrZXlzVG9BcnJheUNsb25lcihzZXNzaW9uS2V5cykge1xyXG4gIGxldCBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZSA9IHt9O1xyXG4gIGxldCBmaWVsZHMgPSBPYmplY3Qua2V5cyhzZXNzaW9uS2V5cyk7XHJcbiAgaWYgKGZpZWxkcykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAgZmllbGRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGZpZWxkID0gZmllbGRzW2ldO1xyXG4gICAgICAgIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lW2ZpZWxkXSA9IHt9O1xyXG4gICAgICAgIGxldCBhcnJheVZhbHVlcyA9IEpTT04ucGFyc2UoJ1snICsgc2Vzc2lvbktleXNbZmllbGRdLnNlc3Npb25LZXkgKyAnXScpO1xyXG4gICAgICAgIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lW2ZpZWxkXS5zZXNzaW9uS2V5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlWYWx1ZXMpO1xyXG4gICAgICAgIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lW2ZpZWxkXS5pc1RvRW5jcnlwdCA9IHNlc3Npb25LZXlzW2ZpZWxkXS5pc1RvRW5jcnlwdDtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ19jaGF0a2V5c1RvQXJyYXlDbG9uZXI6ZXJyJywgZXJyKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VNZXNzYWdlVVJMKFVSTCkge1xyXG4gIGxldCBzcGxpdGVkVG9VUkwgPSBVUkwuc3BsaXQoJy8nKTtcclxuICBpZiAoc3BsaXRlZFRvVVJMLmxlbmd0aCA8PSA2KSB7XHJcbiAgICByZXR1cm4gc3BsaXRlZFRvVVJMWzBdICsgJy8vJyArIHNwbGl0ZWRUb1VSTFsyXSArICcvJyArIHNwbGl0ZWRUb1VSTFszXTtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIHNwbGl0ZWRUb1VSTFswXSArICcvLycgKyBzcGxpdGVkVG9VUkxbMl0gKyAnLycgKyBzcGxpdGVkVG9VUkxbM10gKyAnLycgKyBzcGxpdGVkVG9VUkxbNF07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYXZhaWxhYmxlU3BhY2UodXNhZ2UsIHF1b3RhKSB7XHJcbiAgY29uc3QgYXZhaWxhYmxlID0gKHVzYWdlIC8gcXVvdGEpLnRvRml4ZWQoMik7XHJcbiAgcmV0dXJuIHtcclxuICAgIHF1b3RhOiBxdW90YSxcclxuICAgIHVzYWdlOiB1c2FnZSxcclxuICAgIHBlcmNlbnQ6IE51bWJlcihhdmFpbGFibGUpXHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiogRW5jb2RlcyBhIEpTIG9iamVjdCB0byBiYXNlIDY0IGVuY29kZVxyXG4qIEBwYXJhbSAgIHtPYmplY3R9ICAgIHZhbHVlICAgIGJ5dGVBcnJheSB2YWx1ZVxyXG4qIEByZXR1cm4gIHtzdHJpbmd9ICAgZW5jb2RlZCB2YWx1ZVxyXG4qL1xyXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlKHZhbHVlKSB7XHJcbiAgdHJ5IHtcclxuICAgIGxldCBzdHJpbmdWYWx1ZSA9IHN0cmluZ2lmeSh2YWx1ZSk7XHJcbiAgICByZXR1cm4gYnRvYShzdHJpbmdWYWx1ZSk7XHJcbiAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdbVXRpbHMuZW5jb2RlOmVycl0gJyArIGVycik7XHJcbiAgICB0aHJvdyBlcnI7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICAqIERlY29kZSBhIGJhc2U2NCBzdHJpbmcgdG8gb2JqZWN0XHJcbiAgKiBAcGFyYW0gICB7c3RyaW5nX2I2NH0gICAgdmFsdWUgICAgdmFsdWUgZW5jb2RlZCBpbiBiYXNlIDY0XHJcbiAgKiBAcmV0dXJuICB7T2JqZWN0fSBkZWNvZGVkVmFsdWVcclxuICAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlKHZhbHVlKSB7XHJcbiAgdHJ5IHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKGF0b2IodmFsdWUpKTtcclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIGNvbnNvbGUubG9nKCdbVXRpbHMuZGVjb2RlOmVycl0gJyArIGVycik7XHJcbiAgICB0aHJvdyBlcnI7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuKiBEZWNvZGUgYSBiYXNlNjQgc3RyaW5nIHRvIFVpbnQ4QXJyYXlcclxuKiBAcGFyYW0gICB7c3RyaW5nX2I2NH0gICAgdmFsdWUgICAgYnl0ZUFycmF5IHZhbHVlXHJcbiogQHJldHVybiAge1VpbnQ4QXJyYXl9ICAgZW5jb2RlZCB2YWx1ZVxyXG4qL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVG9VaW50OEFycmF5KHZhbHVlKSB7XHJcbiAgdHJ5IHtcclxuICAgIHJldHVybiBuZXcgVWludDhBcnJheShkZWNvZGUodmFsdWUpKTtcclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoJ1tVdGlscy5kZWNvZGVUb1VpbnQ4QXJyYXk6ZXJyXSAnICsgZXJyKTtcclxuICAgIHRocm93IGVycjtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4qIENvbnZlcnRzIGEgSlMgb2JqZWN0IHRvIHN0cmluZ1xyXG4qIE5PVEU6IFNwZWNpYWwgY29udmVyc2lvbiBmb3IgVWludDhBcnJheXNcclxuKiBAcGFyYW0gICB7T2JqZWN0fSAgICB2YWx1ZSAgICBieXRlQXJyYXkgdmFsdWVcclxuKiBAcmV0dXJuICB7VWludDhBcnJheX0gICBlbmNvZGVkIHZhbHVlXHJcbiovXHJcbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkodmFsdWUpIHtcclxuICB0cnkge1xyXG4gICAgbGV0IHN0cmluZ1ZhbHVlO1xyXG4gICAgaWYgKHZhbHVlLmNvbnN0cnVjdG9yID09PSBVaW50OEFycmF5KSB7XHJcbiAgICAgIHN0cmluZ1ZhbHVlID0gJ1snICsgdmFsdWUudG9TdHJpbmcoKSArICddJzsgLy8gdGhlIFtdIGlzIGZvciBKU09OLnBhcnNlIGNvbXBhdGliaWxpdHlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0cmluZ1ZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cmluZ1ZhbHVlO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgY29uc29sZS5lcnJvcignW1V0aWxzLnN0cmluZ2lmeTplcnJdICcgKyBlcnIpO1xyXG4gICAgdGhyb3cgZXJyO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiogQ29udmVydHMgYSBzdHJpbmdpZmllZCBvYmplY3QgdG8gb2JqZWN0XHJcbiogQHBhcmFtICAge1N0cmluZ30gICAgdmFsdWUgICAgYnl0ZUFycmF5IHZhbHVlXHJcbiogQHJldHVybiAge09iamVjdH0gICBlbmNvZGVkIHZhbHVlXHJcbiovXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZSh2YWx1ZSkge1xyXG4gIHRyeSB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcbiAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdbVXRpbHMucGFyc2U6ZXJyXScgKyBlcnIpO1xyXG4gICAgY29uc29sZS50cmFjZSgpO1xyXG4gICAgY29uc29sZS5lcnJvcignVGhhdCB0aGF0IGNhdXNlIHRoZSBlcnJvcjonLCB2YWx1ZSk7XHJcbiAgICB0aHJvdyBlcnI7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuKiBDb252ZXJ0cyBhIHN0cmluZ2lmaWVkIG9iamVjdCB0byBvYmplY3RcclxuKiBAcGFyYW0gICB7U3RyaW5nfSAgICB2YWx1ZSAgICBieXRlQXJyYXkgdmFsdWVcclxuKiBAcmV0dXJuICB7VWludDhBcnJheX0gICBlbmNvZGVkIHZhbHVlXHJcbiovXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRvVWludDhBcnJheSh2YWx1ZSkge1xyXG4gIHRyeSB7XHJcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkocGFyc2UodmFsdWUpKTtcclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoJ1tVdGlscy5wYXJzZVRvVWludDhBcnJheTplcnJdJyArIGVycik7XHJcbiAgICB0aHJvdyBlcnI7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvdXRpbHMvdXRpbHMuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBd0NBO0FBc0RBO0FBSUE7QUFVQTtBQUtBO0FBVUE7QUFVQTtBQVVBO0FBbUJBO0FBUUE7QUFRQTtBQUlBO0FBSUE7QUFXQTtBQWdCQTtBQWlDQTtBQVlBO0FBaUJBO0FBc0JBO0FBWUE7QUFvQkE7QUFpQkE7QUEwQ0E7QUF1Q0E7QUFZQTtBQWtCQTtBQW1CQTtBQVNBO0FBY0E7QUFlQTtBQWNBO0FBZUE7QUFvQkE7QUFnQkE7QUFDQTs7O0FBcGtCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTs7Ozs7QUFLQTs7Ozs7Ozs7QUFRQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFLQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQVNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///110\n")},,,function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(114), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeS5qcz85YWYxIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9qc29uL3N0cmluZ2lmeVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeS5qc1xuLy8gbW9kdWxlIGlkID0gMTEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAzIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///113\n')},function(module,exports,__webpack_require__){eval("var core = __webpack_require__(0);\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9qc29uL3N0cmluZ2lmeS5qcz9hYTQyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpO1xudmFyICRKU09OID0gY29yZS5KU09OIHx8IChjb3JlLkpTT04gPSB7IHN0cmluZ2lmeTogSlNPTi5zdHJpbmdpZnkgfSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHJldHVybiAkSlNPTi5zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3VtZW50cyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5LmpzXG4vLyBtb2R1bGUgaWQgPSAxMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///114\n")},,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _utils = __webpack_require__(110);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ReThinkCtx = function () {\n function ReThinkCtx() {\n (0, _classCallCheck3.default)(this, ReThinkCtx);\n\n this.defaultBehaviour = true;\n this.groups = {};\n }\n\n (0, _createClass3.default)(ReThinkCtx, [{\n key: 'scheme',\n get: function get() {\n return this._scheme;\n },\n set: function set(params) {\n var from = params.message.from;\n if ((0, _utils.isDataObjectURL)(from)) {\n this._scheme = (0, _utils.divideURL)(from).type;\n } else {\n this._scheme = undefined;\n }\n }\n }, {\n key: 'date',\n get: function get() {\n return this._date;\n },\n set: function set(now) {\n var date = new Date();\n var day = String(date.getDate());\n if (day.length === 1) {\n day = '0' + day;\n }\n var month = String(date.getMonth() + 1);\n if (month.length === 1) {\n month = '0' + month;\n }\n this._date = day + '/' + month + '/' + date.getFullYear();\n }\n }, {\n key: 'domain',\n get: function get() {\n return this._domain;\n },\n set: function set(params) {\n if (params.message.body.identity !== undefined) {\n this._domain = (0, _utils.divideEmail)(params.message.body.identity.userProfile.username).domain;\n }\n }\n }, {\n key: 'type',\n get: function get() {\n return this._type;\n },\n set: function set(params) {\n var message = params.message;\n if (message.body.value !== undefined) {\n this._type = message.body.value.resourceType;\n }\n }\n }, {\n key: 'source',\n get: function get() {\n return this._source;\n },\n set: function set(params) {\n if (params.message.body.identity !== undefined) {\n this._source = params.message.body.identity.userProfile.username;\n }\n }\n }, {\n key: 'time',\n get: function get() {\n return this._time;\n },\n set: function set(now) {\n now = new Date();\n var minutes = String(now.getMinutes());\n if (minutes.length === 1) {\n minutes = '0' + minutes;\n }\n this._time = parseInt(String(now.getHours()) + minutes);\n }\n }, {\n key: 'weekday',\n get: function get() {\n return this._weekday;\n },\n set: function set(now) {\n this._weekday = String(new Date().getDay());\n }\n }]);\n return ReThinkCtx;\n}();\n\nexports.default = ReThinkCtx;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUmVUaGlua0N0eC5qcz82ZmRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGl2aWRlRW1haWwsIGRpdmlkZVVSTCwgaXNEYXRhT2JqZWN0VVJMfSBmcm9tICcuLi91dGlscy91dGlscyc7XHJcblxyXG5jbGFzcyBSZVRoaW5rQ3R4IHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmRlZmF1bHRCZWhhdmlvdXIgPSB0cnVlO1xyXG4gICAgdGhpcy5ncm91cHMgPSB7fTtcclxuICB9XHJcblxyXG4gIGdldCBzY2hlbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2NoZW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcclxuICB9XHJcblxyXG4gIGdldCBkb21haW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZG9tYWluO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcclxuICB9XHJcblxyXG4gIGdldCBzb3VyY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc291cmNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRpbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGltZTtcclxuICB9XHJcblxyXG4gIGdldCB3ZWVrZGF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dlZWtkYXk7XHJcbiAgfVxyXG5cclxuICBzZXQgc2NoZW1lKHBhcmFtcykge1xyXG4gICAgbGV0IGZyb20gPSBwYXJhbXMubWVzc2FnZS5mcm9tO1xyXG4gICAgaWYgKGlzRGF0YU9iamVjdFVSTChmcm9tKSkge1xyXG4gICAgICB0aGlzLl9zY2hlbWUgPSBkaXZpZGVVUkwoZnJvbSkudHlwZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3NjaGVtZSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldCBkYXRlKG5vdykge1xyXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgbGV0IGRheSA9IFN0cmluZyhkYXRlLmdldERhdGUoKSk7XHJcbiAgICBpZiAoZGF5Lmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICBkYXkgPSAnMCcgKyBkYXk7XHJcbiAgICB9XHJcbiAgICBsZXQgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSk7XHJcbiAgICBpZiAobW9udGgubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIG1vbnRoID0gJzAnICsgbW9udGg7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kYXRlID0gZGF5ICsgJy8nICsgbW9udGggKyAnLycgKyBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgfVxyXG5cclxuICBzZXQgZG9tYWluKHBhcmFtcykge1xyXG4gICAgaWYgKHBhcmFtcy5tZXNzYWdlLmJvZHkuaWRlbnRpdHkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLl9kb21haW4gPSBkaXZpZGVFbWFpbChwYXJhbXMubWVzc2FnZS5ib2R5LmlkZW50aXR5LnVzZXJQcm9maWxlLnVzZXJuYW1lKS5kb21haW47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXQgdHlwZShwYXJhbXMpIHtcclxuICAgIGxldCBtZXNzYWdlID0gcGFyYW1zLm1lc3NhZ2U7XHJcbiAgICBpZiAobWVzc2FnZS5ib2R5LnZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5fdHlwZSA9IG1lc3NhZ2UuYm9keS52YWx1ZS5yZXNvdXJjZVR5cGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXQgc291cmNlKHBhcmFtcykge1xyXG4gICAgaWYgKHBhcmFtcy5tZXNzYWdlLmJvZHkuaWRlbnRpdHkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLl9zb3VyY2UgPSBwYXJhbXMubWVzc2FnZS5ib2R5LmlkZW50aXR5LnVzZXJQcm9maWxlLnVzZXJuYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0IHRpbWUobm93KSB7XHJcbiAgICBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgbGV0IG1pbnV0ZXMgPSBTdHJpbmcobm93LmdldE1pbnV0ZXMoKSk7XHJcbiAgICBpZiAobWludXRlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgbWludXRlcyA9ICcwJyArIG1pbnV0ZXM7XHJcbiAgICB9XHJcbiAgICB0aGlzLl90aW1lID0gcGFyc2VJbnQoU3RyaW5nKG5vdy5nZXRIb3VycygpKSArIG1pbnV0ZXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0IHdlZWtkYXkobm93KSB7XHJcbiAgICB0aGlzLl93ZWVrZGF5ID0gU3RyaW5nKG5ldyBEYXRlKCkuZ2V0RGF5KCkpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFJlVGhpbmtDdHg7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L1JlVGhpbmtDdHguanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBMEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQS9CQTtBQUNBO0FBQ0E7QUErQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUF4Q0E7QUFDQTtBQUNBO0FBd0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQTFDQTtBQUNBO0FBQ0E7QUEwQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUE3Q0E7QUFDQTtBQUNBO0FBNkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQS9DQTtBQUNBO0FBQ0E7QUErQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBcERBO0FBQ0E7QUFDQTtBQW9EQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///132\n")}])}); \ No newline at end of file +!function(n,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("ReThinkCtx",[],e):"object"==typeof exports?exports.ReThinkCtx=e():n.ReThinkCtx=e()}("undefined"!=typeof self?self:this,function(){return function(n){var e={};function c(t){if(e[t])return e[t].exports;var l=e[t]={i:t,l:!1,exports:{}};return n[t].call(l.exports,l,l.exports,c),l.l=!0,l.exports}return c.m=n,c.c=e,c.d=function(n,e,t){c.o(n,e)||Object.defineProperty(n,e,{configurable:!1,enumerable:!0,get:t})},c.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return c.d(e,"a",e),e},c.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},c.p="",c(c.s=133)}([function(module,exports){eval("var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcz8xNWUwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjUuNycgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qc1xuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n")},function(module,exports){eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzP2VjYWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1\n")},,function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar ctx = __webpack_require__(15);\nvar hide = __webpack_require__(9);\nvar has = __webpack_require__(8);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzPzkwY2QiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzP2VmYjMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4\n")},function(module,exports,__webpack_require__){eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(13)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanM/Zjg0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n")},function(module,exports){eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzPzEyYTgiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(4);\nvar IE8_DOM_DEFINE = __webpack_require__(36);\nvar toPrimitive = __webpack_require__(26);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzPzdhZjAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanNcbi8vIG1vZHVsZSBpZCA9IDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7\n")},function(module,exports){eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzPzBmNjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanNcbi8vIG1vZHVsZSBpZCA9IDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(7);\nvar createDesc = __webpack_require__(19);\nmodule.exports = __webpack_require__(5) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qcz84NDljIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9\n")},function(module,exports,__webpack_require__){eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(57);\nvar defined = __webpack_require__(23);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NGRjNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///10\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzY2YjkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(60);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzP2MzMTAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5XCIpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///12\n')},function(module,exports){eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///13\n")},function(module,exports){eval("module.exports = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qc1xuLy8gbW9kdWxlIGlkID0gMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n")},function(module,exports,__webpack_require__){eval("// optional / simple context binding\nvar aFunction = __webpack_require__(18);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanNcbi8vIG1vZHVsZSBpZCA9IDE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///15\n")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanNcbi8vIG1vZHVsZSBpZCA9IDE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///16\n")},,function(module,exports){eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///18\n")},function(module,exports){eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanNcbi8vIG1vZHVsZSBpZCA9IDE5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///19\n")},function(module,exports){eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qc1xuLy8gbW9kdWxlIGlkID0gMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///20\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(37);\nvar enumBugKeys = __webpack_require__(29);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///21\n")},function(module,exports){eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/NTJlMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///22\n")},function(module,exports){eval('// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError("Can\'t call method on " + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTc2OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///23\n')},,function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nvar document = __webpack_require__(1).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n")},function(module,exports,__webpack_require__){eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(6);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///26\n")},function(module,exports,__webpack_require__){eval("var shared = __webpack_require__(28)('keys');\nvar uid = __webpack_require__(20);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NmIxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///27\n")},function(module,exports,__webpack_require__){eval("var core = __webpack_require__(0);\nvar global = __webpack_require__(1);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(14) ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcz83YmMwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogY29yZS52ZXJzaW9uLFxuICBtb2RlOiByZXF1aXJlKCcuL19saWJyYXJ5JykgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxOCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qc1xuLy8gbW9kdWxlIGlkID0gMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///28\n")},function(module,exports){eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/YzY3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n")},function(module,exports,__webpack_require__){eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(23);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n")},,,,,,function(module,exports,__webpack_require__){eval("module.exports = !__webpack_require__(5) && !__webpack_require__(13)(function () {\n return Object.defineProperty(__webpack_require__(25)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///36\n")},function(module,exports,__webpack_require__){eval("var has = __webpack_require__(8);\nvar toIObject = __webpack_require__(10);\nvar arrayIndexOf = __webpack_require__(58)(false);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzIxYjgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///37\n")},function(module,exports,__webpack_require__){eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(22);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz80MTExIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qc1xuLy8gbW9kdWxlIGlkID0gMzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///38\n")},function(module,exports,__webpack_require__){eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar fails = __webpack_require__(13);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanM/YmFhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qtc2FwLmpzXG4vLyBtb2R1bGUgaWQgPSAzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///39\n")},,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(16);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/MzE0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///57\n")},function(module,exports,__webpack_require__){eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(10);\nvar toLength = __webpack_require__(38);\nvar toAbsoluteIndex = __webpack_require__(59);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2JjNTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanNcbi8vIG1vZHVsZSBpZCA9IDU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///58\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(22);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzdlNDAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///59\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(61), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/MGI4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA2MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///60\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(62);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ZjViMCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///61\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(3);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(5), 'Object', { defineProperty: __webpack_require__(7).f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanM/OTgyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///62\n")},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(109), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cy5qcz83ZDk4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5c1wiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///108\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(110);\nmodule.exports = __webpack_require__(0).Object.keys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qcz84YzU2Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Qua2V5cztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///109\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(30);\nvar $keys = __webpack_require__(21);\n\n__webpack_require__(39)('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qcz8wOWRjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2tleXMnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBrZXlzKGl0KSB7XG4gICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///110\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(114);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = __webpack_require__(108);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.divideURL = divideURL;\nexports.emptyObject = emptyObject;\nexports.secondsSinceEpoch = secondsSinceEpoch;\nexports.deepClone = deepClone;\nexports.removePathFromURL = removePathFromURL;\nexports.getUserURLFromEmail = getUserURLFromEmail;\nexports.getUserEmailFromURL = getUserEmailFromURL;\nexports.convertToUserURL = convertToUserURL;\nexports.isDataObjectURL = isDataObjectURL;\nexports.isLegacy = isLegacy;\nexports.isURL = isURL;\nexports.isUserURL = isUserURL;\nexports.isHypertyURL = isHypertyURL;\nexports.getConfigurationResources = getConfigurationResources;\nexports.buildURL = buildURL;\nexports.generateGUID = generateGUID;\nexports.getUserIdentityDomain = getUserIdentityDomain;\nexports.isBackendServiceURL = isBackendServiceURL;\nexports.divideEmail = divideEmail;\nexports.assign = assign;\nexports.splitObjectURL = splitObjectURL;\nexports.checkAttribute = checkAttribute;\nexports.parseAttributes = parseAttributes;\nexports.isEmpty = isEmpty;\nexports.chatkeysToStringCloner = chatkeysToStringCloner;\nexports.chatkeysToArrayCloner = chatkeysToArrayCloner;\nexports.parseMessageURL = parseMessageURL;\nexports.availableSpace = availableSpace;\nexports.encode = encode;\nexports.decode = decode;\nexports.decodeToUint8Array = decodeToUint8Array;\nexports.stringify = stringify;\nexports.parse = parse;\nexports.parseToUint8Array = parseToUint8Array;\nexports.filterMessageToHash = filterMessageToHash;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n/**\n * Support module with some functions will be useful\n * @module utils\n */\n\n/**\n * @typedef divideURL\n * @type Object\n * @property {string} type The type of URL\n * @property {string} domain The domain of URL\n * @property {string} identity The identity of URL\n */\n\n/**\n * Divide an url in type, domain and identity\n * @param {URL.URL} url - url address\n * @return {divideURL} the result of divideURL\n */\nfunction divideURL(url) {\n\n function recurse(value) {\n var regex = /([a-zA-Z-]*)(:\\/\\/(?:\\.)?|:)([-a-zA-Z0-9@:%._+~#=]{2,256})([-a-zA-Z0-9@:%._+~#=/]*)/gi;\n var subst = '$1,$3,$4';\n var parts = value.replace(regex, subst).split(',');\n return parts;\n }\n\n var parts = recurse(url);\n\n // If the url has no scheme\n if (parts[0] === url && !parts[0].includes('@')) {\n\n var _result = {\n type: '',\n domain: url,\n identity: ''\n };\n\n console.warn('[DivideURL] DivideURL don\\'t support url without scheme. Please review your url address', url);\n\n return _result;\n }\n\n // check if the url has the scheme and includes an @\n if (parts[0] === url && parts[0].includes('@')) {\n var scheme = parts[0] === url ? 'smtp' : parts[0];\n parts = recurse(scheme + '://' + parts[0]);\n }\n\n // if the domain includes an @, divide it to domain and identity respectively\n if (parts[1].includes('@')) {\n parts[2] = parts[0] + '://' + parts[1];\n parts[1] = parts[1].substr(parts[1].indexOf('@') + 1);\n } /*else if (parts[2].includes('/')) {\n parts[2] = parts[2].substr(parts[2].lastIndexOf('/')+1);\n }*/\n\n var result = {\n type: parts[0],\n domain: parts[1],\n identity: parts[2]\n };\n\n return result;\n}\n\n/**\n * Check if an Object is empty\n * @param {Object} object Object to be checked\n * @return {Boolean} status of Object, empty or not (true|false);\n */\nfunction emptyObject(object) {\n return (0, _keys2.default)(object).length > 0 ? false : true;\n}\n\nfunction secondsSinceEpoch() {\n return Math.floor(Date.now() / 1000);\n}\n\n/**\n * Make a COPY of the original data\n * @param {Object} obj - object to be cloned\n * @return {Object}\n */\nfunction deepClone(obj) {\n //TODO: simple but inefficient JSON deep clone...\n if (obj) return JSON.parse((0, _stringify2.default)(obj));\n}\n\nfunction removePathFromURL(url) {\n var splitURL = url.split('/');\n return splitURL[0] + '//' + splitURL[2] + '/' + splitURL[3];\n}\n\n/**\n * Obtains the user URL that corresponds to a given email\n * @param {string} userEmail The user email\n * @return {URL.URL} userURL The user URL\n */\nfunction getUserURLFromEmail(userEmail) {\n var indexOfAt = userEmail.indexOf('@');\n return 'user://' + userEmail.substring(indexOfAt + 1, userEmail.length) + '/' + userEmail.substring(0, indexOfAt);\n}\n\n/**\n * Obtains the user email that corresponds to a given URL\n * @param {URL.URL} userURL The user URL\n * @return {string} userEmail The user email\n */\nfunction getUserEmailFromURL(userURL) {\n var url = divideURL(userURL);\n return url.identity.replace('/', '') + '@' + url.domain; // identity field has '/exampleID' instead of 'exampleID'\n}\n\n/**\n * Check if the user identifier is already in the URL format, if not, convert to URL format\n * @param {string} identifier user identifier\n * @return {string} userURL the user URL\n */\nfunction convertToUserURL(identifier) {\n\n // check if the identifier is already in the url format\n if (identifier.substring(0, 7) === 'user://') {\n var dividedURL = divideURL(identifier);\n\n //check if the url is well formated\n if (dividedURL.domain && dividedURL.identity) {\n return identifier;\n } else {\n throw 'userURL with wrong format';\n }\n\n //if not, convert the user email to URL format\n } else {\n return getUserURLFromEmail(identifier);\n }\n}\n\nfunction isDataObjectURL(url) {\n var schemasToIgnore = ['domain-idp', 'runtime', 'domain', 'hyperty'];\n var splitURL = url.split('://');\n var urlSchema = splitURL[0];\n\n return schemasToIgnore.indexOf(urlSchema) === -1;\n}\n\nfunction isLegacy(url) {\n if (url.split('@').length > 1) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction isURL(url) {\n return url.split('/').length >= 3;\n}\n\nfunction isUserURL(url) {\n return divideURL(url).type === 'user';\n}\n\nfunction isHypertyURL(url) {\n return divideURL(url).type === 'hyperty';\n}\n\n/**\n * get information relative each component configured on runtime configuration;\n * @param {object} configuration object with all configuration\n * @param {string} component string with the component to get the configuration, like, runtimeURLS, catalogueURLs, msgNodeURL, domainRegistryURL;\n * @param {string} resource type of resource to get, like, catalogue, runtimeUA, protocolstub, idpProxy\n * @return {object} return an object with all configurations;\n */\nfunction getConfigurationResources(configuration, component, resource) {\n var objectResource = configuration[component];\n var resourceType = objectResource[resource];\n\n return resourceType;\n}\n\n/**\n * Build a full url with the runtime configuration;\n * @param {object} configuration object with all configuration\n * @param {string} component string with the component to get the configuration, like, runtimeURLS, catalogueURLs, msgNodeURL, domainRegistryURL;\n * @param {string} resource type of resource to get, like, catalogue, runtimeUA, protocolstub, idpProxy\n * @param {string} type resource to get, like a hyperty name or protocolstub name;\n * @param {boolean} useFallback if true the function will check if have a fallback url;\n * @return {string} partial url to contact the resource;\n */\nfunction buildURL(configuration, component, resource, type) {\n var useFallback = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n var objectResource = configuration[component];\n var url = void 0;\n\n if (!objectResource.hasOwnProperty(resource)) {\n throw Error('The configuration ' + (0, _stringify2.default)(objectResource, '', 2) + ' don\\'t have the ' + resource + ' resource you are looking for');\n }\n\n var resourceType = objectResource[resource];\n\n if (type) {\n url = resourceType.prefix + configuration.domain + resourceType.suffix + type;\n if (resourceType.hasOwnProperty('fallback') && useFallback) {\n if (resourceType.fallback.indexOf('%domain%')) {\n url = resourceType.fallback.replace(/(%domain%)/g, configuration.domain) + type;\n } else {\n url = resourceType.fallback + type;\n }\n }\n } else {\n url = resourceType.prefix + configuration.domain + resourceType.suffix;\n }\n\n // console.log(url);\n\n return url;\n}\n\n/**\n * Generate a Global Unique ID\n *\n * @returns String;\n */\nfunction generateGUID() {\n\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n\nfunction getUserIdentityDomain(url) {\n var dividedURL = divideURL(url);\n var splitedDomain = dividedURL.domain.split('.');\n var splitedLength = splitedDomain.length;\n if (splitedLength == 1) {\n return splitedDomain[splitedLength - 1];\n }\n var domain = splitedDomain[splitedLength - 2] + '.' + splitedDomain[splitedLength - 1];\n return domain;\n}\n\n/**\n * Check if URL is from a backend service\n * @param {string} url URL to be processed\n * @return {boolean}\n */\n\nfunction isBackendServiceURL(url) {\n var dividedURL = divideURL(url);\n var splitedDomain = dividedURL.domain.split('.');\n var backendSchemes = ['domain', 'global', 'domain-idp']; // should be defined in the runtime configuration\n var backendSubDomains = ['registry', 'msg-node']; // should be defined in the runtime configuration\n var subDomain = void 0;\n\n if (splitedDomain.length > 1) {\n subDomain = splitedDomain.filter(function (item) {\n return backendSubDomains.indexOf(item) !== -1;\n })[0];\n }\n\n if (subDomain && backendSubDomains.indexOf(subDomain) !== -1) {\n return true;\n }\n\n if (dividedURL.type) {\n return backendSchemes.indexOf(dividedURL.type) !== -1;\n }\n\n return false;\n}\n\nfunction divideEmail(email) {\n var indexOfAt = email.indexOf('@');\n\n var result = {\n username: email.substring(0, indexOfAt),\n domain: email.substring(indexOfAt + 1, email.length)\n };\n\n return result;\n}\n\nfunction assign(obj, keyPath, value) {\n\n if (!obj) obj = {};\n if (typeof keyPath === 'string') keyPath = parseAttributes(keyPath);\n\n var lastKeyIndex = keyPath.length - 1;\n\n for (var i = 0; i < lastKeyIndex; ++i) {\n var key = keyPath[i];\n if (!(key in obj)) {\n obj[key] = {};\n }\n\n obj = obj[key];\n }\n\n obj[keyPath[lastKeyIndex]] = value;\n}\n\nfunction splitObjectURL(dataObjectURL) {\n console.info('[utils - splitObjectURL]: ', dataObjectURL);\n\n var splitedURL = dataObjectURL.split('/');\n var url = splitedURL[0] + '//' + splitedURL[2] + '/' + splitedURL[3];\n var resource = splitedURL[5];\n\n var result = {\n url: url,\n resource: resource\n };\n\n console.info('[utils - splitObjectURL]: ', result);\n\n return result;\n}\n\nfunction checkAttribute(path) {\n\n var regex = /((([a-zA-Z]+):\\/\\/([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})\\/[a-zA-Z0-9.]+@[a-zA-Z0-9]+(-)?[a-zA-Z0-9]+(\\.)?[a-zA-Z0-9]{2,10}?\\.[a-zA-Z]{2,10})(.+(?=.identity))?/gm;\n\n var list = [];\n var final = [];\n var test = path.match(regex);\n\n if (test == null) {\n final = path.split('.');\n } else {\n var m = void 0;\n while ((m = regex.exec(path)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (m.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n\n // The result can be accessed through the `m`-variable.\n m.forEach(function (match, groupIndex) {\n if (groupIndex === 0) {\n list.push(match);\n }\n });\n }\n var result = void 0;\n list.forEach(function (url) {\n\n result = path.replace(url, '*-*');\n final = result.split('.').map(function (item) {\n\n if (item === '*-*') {\n return url;\n }\n\n return item;\n });\n });\n }\n\n console.log('[RuntimeCore.Utils.checkAttribute]', final);\n return final;\n}\n\nfunction parseAttributes(path) {\n var regex = /([0-9a-zA-Z][-\\w]*):\\/\\//g;\n\n var string3 = 'identity';\n\n if (!path.includes('://')) {\n return path.split('.');\n } else {\n var string1 = path.split(regex)[0];\n\n var array1 = string1.split('.');\n\n var string2 = path.replace(string1, '');\n\n if (path.includes(string3)) {\n\n var array2 = string2.split(string3 + '.');\n\n console.log('array2 ' + array2);\n\n string2 = array2[0].slice('.', -1);\n\n array2 = array2[1].split('.');\n\n array1.push(string2, string3);\n\n array1 = array1.concat(array2);\n } else {\n array1.push(string2);\n }\n\n return array1.filter(Boolean);\n }\n}\n\nfunction isEmpty(obj) {\n for (var prop in obj) {\n\n if (obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n\n return (0, _stringify2.default)(obj) === (0, _stringify2.default)({});\n}\n\nfunction chatkeysToStringCloner(sessionKeys) {\n var dataObjectSessionKeysClone = {};\n var fields = (0, _keys2.default)(sessionKeys);\n if (fields) {\n try {\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n dataObjectSessionKeysClone[field] = {};\n dataObjectSessionKeysClone[field].sessionKey = sessionKeys[field].sessionKey.toString();\n dataObjectSessionKeysClone[field].isToEncrypt = sessionKeys[field].isToEncrypt;\n }\n } catch (err) {\n console.error('_chatkeysToStringCloner:err', err);\n }\n }\n return dataObjectSessionKeysClone;\n}\n\nfunction chatkeysToArrayCloner(sessionKeys) {\n var dataObjectSessionKeysClone = {};\n var fields = (0, _keys2.default)(sessionKeys);\n if (fields) {\n try {\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n dataObjectSessionKeysClone[field] = {};\n var arrayValues = JSON.parse('[' + sessionKeys[field].sessionKey + ']');\n dataObjectSessionKeysClone[field].sessionKey = new Uint8Array(arrayValues);\n dataObjectSessionKeysClone[field].isToEncrypt = sessionKeys[field].isToEncrypt;\n }\n } catch (err) {\n console.error('_chatkeysToArrayCloner:err', err);\n }\n }\n return dataObjectSessionKeysClone;\n}\n\nfunction parseMessageURL(URL) {\n var splitedToURL = URL.split('/');\n if (splitedToURL.length <= 6) {\n return splitedToURL[0] + '//' + splitedToURL[2] + '/' + splitedToURL[3];\n } else {\n return splitedToURL[0] + '//' + splitedToURL[2] + '/' + splitedToURL[3] + '/' + splitedToURL[4];\n }\n}\n\nfunction availableSpace(usage, quota) {\n var available = (usage / quota).toFixed(2);\n return {\n quota: quota,\n usage: usage,\n percent: Number(available)\n };\n}\n\n/**\n* Encodes a JS object to base 64 encode\n* @param {Object} value byteArray value\n* @return {string} encoded value\n*/\nfunction encode(value) {\n try {\n var stringValue = stringify(value);\n return btoa(stringValue);\n } catch (err) {\n console.error('[Utils.encode:err] ' + err);\n throw err;\n }\n}\n\n/**\n * Decode a base64 string to object\n * @param {string_b64} value value encoded in base 64\n * @return {Object} decodedValue\n */\nfunction decode(value) {\n try {\n return JSON.parse(atob(value));\n } catch (err) {\n console.log('[Utils.decode:err] ' + err);\n throw err;\n }\n}\n\n/**\n* Decode a base64 string to Uint8Array\n* @param {string_b64} value byteArray value\n* @return {Uint8Array} encoded value\n*/\nfunction decodeToUint8Array(value) {\n try {\n return new Uint8Array(decode(value));\n } catch (err) {\n console.error('[Utils.decodeToUint8Array:err] ' + err);\n throw err;\n }\n}\n\n/**\n* Converts a JS object to string\n* NOTE: Special conversion for Uint8Arrays\n* @param {Object} value byteArray value\n* @return {Uint8Array} encoded value\n*/\nfunction stringify(value) {\n try {\n var stringValue = void 0;\n if (value.constructor === Uint8Array) {\n stringValue = '[' + value.toString() + ']'; // the [] is for JSON.parse compatibility\n } else {\n stringValue = (0, _stringify2.default)(value);\n }\n return stringValue;\n } catch (err) {\n console.error('[Utils.stringify:err] ' + err);\n throw err;\n }\n}\n\n/**\n* Converts a stringified object to object\n* @param {String} value byteArray value\n* @return {Object} encoded value\n*/\nfunction parse(value) {\n try {\n return JSON.parse(value);\n } catch (err) {\n console.error('[Utils.parse:err]' + err);\n console.trace();\n console.error('The value that cause the error:', value);\n throw err;\n }\n}\n\n/**\n* Converts a stringified object to object\n* @param {String} value byteArray value\n* @return {Uint8Array} encoded value\n*/\nfunction parseToUint8Array(value) {\n try {\n return new Uint8Array(parse(value));\n } catch (err) {\n console.error('[Utils.parseToUint8Array:err]' + err);\n throw err;\n }\n}\n\n/**\n * filter the messages to hash, by removing some fields not generated by the runtime core\n * @param {Message} message message\n * @param {String} decryptedValue (Optional) value from body.value in case it originally comes encrypted\n * @param {JSON} identity(Optional) add the hyperty identity associated in case is not added to the initial message\n * @return {Message} new message filtered\n */\nfunction filterMessageToHash(message, decryptedValue, identity) {\n return {\n type: message.type,\n from: message.from,\n to: message.to,\n body: {\n identity: identity || message.body.identity,\n value: decryptedValue || message.body.value,\n handshakePhase: message.body.handshakePhase\n }\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy91dGlscy91dGlscy5qcz9iZTczIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cbi8qKlxuICogU3VwcG9ydCBtb2R1bGUgd2l0aCBzb21lIGZ1bmN0aW9ucyB3aWxsIGJlIHVzZWZ1bFxuICogQG1vZHVsZSB1dGlsc1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYgZGl2aWRlVVJMXG4gKiBAdHlwZSBPYmplY3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0eXBlIFRoZSB0eXBlIG9mIFVSTFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGRvbWFpbiBUaGUgZG9tYWluIG9mIFVSTFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGlkZW50aXR5IFRoZSBpZGVudGl0eSBvZiBVUkxcbiAqL1xuXG4vKipcbiAqIERpdmlkZSBhbiB1cmwgaW4gdHlwZSwgZG9tYWluIGFuZCBpZGVudGl0eVxuICogQHBhcmFtICB7VVJMLlVSTH0gdXJsIC0gdXJsIGFkZHJlc3NcbiAqIEByZXR1cm4ge2RpdmlkZVVSTH0gdGhlIHJlc3VsdCBvZiBkaXZpZGVVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpdmlkZVVSTCh1cmwpIHtcblxuICBmdW5jdGlvbiByZWN1cnNlKHZhbHVlKSB7XG4gICAgY29uc3QgcmVnZXggPSAvKFthLXpBLVotXSopKDpcXC9cXC8oPzpcXC4pP3w6KShbLWEtekEtWjAtOUA6JS5fK34jPV17MiwyNTZ9KShbLWEtekEtWjAtOUA6JS5fK34jPS9dKikvZ2k7XG4gICAgY29uc3Qgc3Vic3QgPSAnJDEsJDMsJDQnO1xuICAgIGxldCBwYXJ0cyA9IHZhbHVlLnJlcGxhY2UocmVnZXgsIHN1YnN0KS5zcGxpdCgnLCcpO1xuICAgIHJldHVybiBwYXJ0cztcbiAgfVxuXG4gIGxldCBwYXJ0cyA9IHJlY3Vyc2UodXJsKTtcblxuICAvLyBJZiB0aGUgdXJsIGhhcyBubyBzY2hlbWVcbiAgaWYgKHBhcnRzWzBdID09PSB1cmwgJiYgIXBhcnRzWzBdLmluY2x1ZGVzKCdAJykpIHtcblxuICAgIGxldCByZXN1bHQgPSB7XG4gICAgICB0eXBlOiAnJyxcbiAgICAgIGRvbWFpbjogdXJsLFxuICAgICAgaWRlbnRpdHk6ICcnXG4gICAgfTtcblxuICAgIGNvbnNvbGUud2FybignW0RpdmlkZVVSTF0gRGl2aWRlVVJMIGRvblxcJ3Qgc3VwcG9ydCB1cmwgd2l0aG91dCBzY2hlbWUuIFBsZWFzZSByZXZpZXcgeW91ciB1cmwgYWRkcmVzcycsIHVybCk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gY2hlY2sgaWYgdGhlIHVybCBoYXMgdGhlIHNjaGVtZSBhbmQgaW5jbHVkZXMgYW4gQFxuICBpZiAocGFydHNbMF0gPT09IHVybCAmJiBwYXJ0c1swXS5pbmNsdWRlcygnQCcpKSB7XG4gICAgbGV0IHNjaGVtZSA9IHBhcnRzWzBdID09PSB1cmwgPyAnc210cCcgOiBwYXJ0c1swXTtcbiAgICBwYXJ0cyA9IHJlY3Vyc2Uoc2NoZW1lICsgJzovLycgKyBwYXJ0c1swXSk7XG4gIH1cblxuICAvLyBpZiB0aGUgZG9tYWluIGluY2x1ZGVzIGFuIEAsIGRpdmlkZSBpdCB0byBkb21haW4gYW5kIGlkZW50aXR5IHJlc3BlY3RpdmVseVxuICBpZiAocGFydHNbMV0uaW5jbHVkZXMoJ0AnKSkge1xuICAgIHBhcnRzWzJdID0gcGFydHNbMF0gKyAnOi8vJyArIHBhcnRzWzFdO1xuICAgIHBhcnRzWzFdID0gcGFydHNbMV0uc3Vic3RyKHBhcnRzWzFdLmluZGV4T2YoJ0AnKSArIDEpO1xuICB9IFx0LyplbHNlIGlmIChwYXJ0c1syXS5pbmNsdWRlcygnLycpKSB7XG4gICAgcGFydHNbMl0gPSBwYXJ0c1syXS5zdWJzdHIocGFydHNbMl0ubGFzdEluZGV4T2YoJy8nKSsxKTtcbiAgfSovXG5cbiAgbGV0IHJlc3VsdCA9IHtcbiAgICB0eXBlOiBwYXJ0c1swXSxcbiAgICBkb21haW46IHBhcnRzWzFdLFxuICAgIGlkZW50aXR5OiBwYXJ0c1syXVxuICB9O1xuXG4gIHJldHVybiByZXN1bHQ7XG5cbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhbiBPYmplY3QgaXMgZW1wdHlcbiAqIEBwYXJhbSAge09iamVjdH0gb2JqZWN0IE9iamVjdCB0byBiZSBjaGVja2VkXG4gKiBAcmV0dXJuIHtCb29sZWFufSAgICAgICBzdGF0dXMgb2YgT2JqZWN0LCBlbXB0eSBvciBub3QgKHRydWV8ZmFsc2UpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gZW1wdHlPYmplY3Qob2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCA+IDAgPyBmYWxzZSA6IHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRzU2luY2VFcG9jaCgpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xufVxuXG5cbi8qKlxuICogTWFrZSBhIENPUFkgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbiAqIEBwYXJhbSAge09iamVjdH0gIG9iaiAtIG9iamVjdCB0byBiZSBjbG9uZWRcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZXBDbG9uZShvYmopIHtcbiAgLy9UT0RPOiBzaW1wbGUgYnV0IGluZWZmaWNpZW50IEpTT04gZGVlcCBjbG9uZS4uLlxuICBpZiAob2JqKSByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVBhdGhGcm9tVVJMKHVybCkge1xuICBsZXQgc3BsaXRVUkwgPSB1cmwuc3BsaXQoJy8nKTtcbiAgcmV0dXJuIHNwbGl0VVJMWzBdICsgJy8vJyArIHNwbGl0VVJMWzJdICsgJy8nICsgc3BsaXRVUkxbM107XG59XG5cbi8qKlxuICogT2J0YWlucyB0aGUgdXNlciBVUkwgdGhhdCBjb3JyZXNwb25kcyB0byBhIGdpdmVuIGVtYWlsXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHVzZXJFbWFpbCBUaGUgdXNlciBlbWFpbFxuICogQHJldHVybiB7VVJMLlVSTH0gdXNlclVSTCBUaGUgdXNlciBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFVzZXJVUkxGcm9tRW1haWwodXNlckVtYWlsKSB7XG4gIGxldCBpbmRleE9mQXQgPSB1c2VyRW1haWwuaW5kZXhPZignQCcpO1xuICByZXR1cm4gJ3VzZXI6Ly8nICsgdXNlckVtYWlsLnN1YnN0cmluZyhpbmRleE9mQXQgKyAxLCB1c2VyRW1haWwubGVuZ3RoKSArICcvJyArIHVzZXJFbWFpbC5zdWJzdHJpbmcoMCwgaW5kZXhPZkF0KTtcbn1cblxuLyoqXG4gKiBPYnRhaW5zIHRoZSB1c2VyIGVtYWlsIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBnaXZlbiBVUkxcbiAqIEBwYXJhbSAge1VSTC5VUkx9IHVzZXJVUkwgVGhlIHVzZXIgVVJMXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHVzZXJFbWFpbCBUaGUgdXNlciBlbWFpbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlckVtYWlsRnJvbVVSTCh1c2VyVVJMKSB7XG4gIGxldCB1cmwgPSBkaXZpZGVVUkwodXNlclVSTCk7XG4gIHJldHVybiB1cmwuaWRlbnRpdHkucmVwbGFjZSgnLycsICcnKSArICdAJyArIHVybC5kb21haW47IC8vIGlkZW50aXR5IGZpZWxkIGhhcyAnL2V4YW1wbGVJRCcgaW5zdGVhZCBvZiAnZXhhbXBsZUlEJ1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSB1c2VyIGlkZW50aWZpZXIgaXMgYWxyZWFkeSBpbiB0aGUgVVJMIGZvcm1hdCwgaWYgbm90LCBjb252ZXJ0IHRvIFVSTCBmb3JtYXRcbiAqIEBwYXJhbSAge3N0cmluZ30gICBpZGVudGlmaWVyICB1c2VyIGlkZW50aWZpZXJcbiAqIEByZXR1cm4ge3N0cmluZ30gICB1c2VyVVJMICAgIHRoZSB1c2VyIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvVXNlclVSTChpZGVudGlmaWVyKSB7XG5cbiAgLy8gY2hlY2sgaWYgdGhlIGlkZW50aWZpZXIgaXMgYWxyZWFkeSBpbiB0aGUgdXJsIGZvcm1hdFxuICBpZiAoaWRlbnRpZmllci5zdWJzdHJpbmcoMCwgNykgPT09ICd1c2VyOi8vJykge1xuICAgIGxldCBkaXZpZGVkVVJMID0gZGl2aWRlVVJMKGlkZW50aWZpZXIpO1xuXG4gICAgLy9jaGVjayBpZiB0aGUgdXJsIGlzIHdlbGwgZm9ybWF0ZWRcbiAgICBpZiAoZGl2aWRlZFVSTC5kb21haW4gJiYgZGl2aWRlZFVSTC5pZGVudGl0eSkge1xuICAgICAgcmV0dXJuIGlkZW50aWZpZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93ICd1c2VyVVJMIHdpdGggd3JvbmcgZm9ybWF0JztcbiAgICB9XG5cbiAgLy9pZiBub3QsIGNvbnZlcnQgdGhlIHVzZXIgZW1haWwgdG8gVVJMIGZvcm1hdFxuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXRVc2VyVVJMRnJvbUVtYWlsKGlkZW50aWZpZXIpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGFPYmplY3RVUkwodXJsKSB7XG4gIGxldCBzY2hlbWFzVG9JZ25vcmUgPSBbJ2RvbWFpbi1pZHAnLCAncnVudGltZScsICdkb21haW4nLCAnaHlwZXJ0eSddO1xuICBsZXQgc3BsaXRVUkwgPSAodXJsKS5zcGxpdCgnOi8vJyk7XG4gIGxldCB1cmxTY2hlbWEgPSBzcGxpdFVSTFswXTtcblxuICByZXR1cm4gc2NoZW1hc1RvSWdub3JlLmluZGV4T2YodXJsU2NoZW1hKSA9PT0gLTE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlZ2FjeSh1cmwpIHtcbiAgaWYgKHVybC5zcGxpdCgnQCcpLmxlbmd0aCA+IDEpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVVJMKHVybCkge1xuICByZXR1cm4gKHVybCkuc3BsaXQoJy8nKS5sZW5ndGggPj0gMztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXNlclVSTCh1cmwpIHtcbiAgcmV0dXJuIGRpdmlkZVVSTCh1cmwpLnR5cGUgPT09ICd1c2VyJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSHlwZXJ0eVVSTCh1cmwpIHtcbiAgcmV0dXJuIGRpdmlkZVVSTCh1cmwpLnR5cGUgPT09ICdoeXBlcnR5Jztcbn1cblxuLyoqXG4gKiBnZXQgaW5mb3JtYXRpb24gcmVsYXRpdmUgZWFjaCBjb21wb25lbnQgY29uZmlndXJlZCBvbiBydW50aW1lIGNvbmZpZ3VyYXRpb247XG4gKiBAcGFyYW0gIHtvYmplY3R9IGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggYWxsIGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSAge3N0cmluZ30gY29tcG9uZW50ICAgICBzdHJpbmcgd2l0aCB0aGUgY29tcG9uZW50IHRvIGdldCB0aGUgY29uZmlndXJhdGlvbiwgbGlrZSwgcnVudGltZVVSTFMsIGNhdGFsb2d1ZVVSTHMsIG1zZ05vZGVVUkwsIGRvbWFpblJlZ2lzdHJ5VVJMO1xuICogQHBhcmFtICB7c3RyaW5nfSByZXNvdXJjZSAgICAgIHR5cGUgb2YgcmVzb3VyY2UgdG8gZ2V0LCBsaWtlLCBjYXRhbG9ndWUsIHJ1bnRpbWVVQSwgcHJvdG9jb2xzdHViLCBpZHBQcm94eVxuICogQHJldHVybiB7b2JqZWN0fSAgICAgICAgICAgICAgIHJldHVybiBhbiBvYmplY3Qgd2l0aCBhbGwgY29uZmlndXJhdGlvbnM7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWd1cmF0aW9uUmVzb3VyY2VzKGNvbmZpZ3VyYXRpb24sIGNvbXBvbmVudCwgcmVzb3VyY2UpIHtcbiAgbGV0IG9iamVjdFJlc291cmNlID0gY29uZmlndXJhdGlvbltjb21wb25lbnRdO1xuICBsZXQgcmVzb3VyY2VUeXBlID0gb2JqZWN0UmVzb3VyY2VbcmVzb3VyY2VdO1xuXG4gIHJldHVybiByZXNvdXJjZVR5cGU7XG59XG5cbi8qKlxuICogQnVpbGQgYSBmdWxsIHVybCB3aXRoIHRoZSBydW50aW1lIGNvbmZpZ3VyYXRpb247XG4gKiBAcGFyYW0gIHtvYmplY3R9IGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggYWxsIGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSAge3N0cmluZ30gY29tcG9uZW50ICAgICBzdHJpbmcgd2l0aCB0aGUgY29tcG9uZW50IHRvIGdldCB0aGUgY29uZmlndXJhdGlvbiwgbGlrZSwgcnVudGltZVVSTFMsIGNhdGFsb2d1ZVVSTHMsIG1zZ05vZGVVUkwsIGRvbWFpblJlZ2lzdHJ5VVJMO1xuICogQHBhcmFtICB7c3RyaW5nfSByZXNvdXJjZSAgICAgIHR5cGUgb2YgcmVzb3VyY2UgdG8gZ2V0LCBsaWtlLCBjYXRhbG9ndWUsIHJ1bnRpbWVVQSwgcHJvdG9jb2xzdHViLCBpZHBQcm94eVxuICogQHBhcmFtICB7c3RyaW5nfSB0eXBlICAgICAgICAgIHJlc291cmNlIHRvIGdldCwgbGlrZSBhIGh5cGVydHkgbmFtZSBvciBwcm90b2NvbHN0dWIgbmFtZTtcbiAqIEBwYXJhbSAge2Jvb2xlYW59IHVzZUZhbGxiYWNrICBpZiB0cnVlIHRoZSBmdW5jdGlvbiB3aWxsIGNoZWNrIGlmIGhhdmUgYSBmYWxsYmFjayB1cmw7XG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgICAgICAgcGFydGlhbCB1cmwgdG8gY29udGFjdCB0aGUgcmVzb3VyY2U7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFVSTChjb25maWd1cmF0aW9uLCBjb21wb25lbnQsIHJlc291cmNlLCB0eXBlLCB1c2VGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGxldCBvYmplY3RSZXNvdXJjZSA9IGNvbmZpZ3VyYXRpb25bY29tcG9uZW50XTtcbiAgbGV0IHVybDtcblxuICBpZiAoIW9iamVjdFJlc291cmNlLmhhc093blByb3BlcnR5KHJlc291cmNlKSkge1xuICAgIHRocm93IEVycm9yKCdUaGUgY29uZmlndXJhdGlvbiAnICsgSlNPTi5zdHJpbmdpZnkob2JqZWN0UmVzb3VyY2UsICcnLCAyKSArICcgZG9uXFwndCBoYXZlIHRoZSAnICsgcmVzb3VyY2UgKyAnIHJlc291cmNlIHlvdSBhcmUgbG9va2luZyBmb3InKTtcbiAgfVxuXG4gIGxldCByZXNvdXJjZVR5cGUgPSBvYmplY3RSZXNvdXJjZVtyZXNvdXJjZV07XG5cbiAgaWYgKHR5cGUpIHtcbiAgICB1cmwgPSByZXNvdXJjZVR5cGUucHJlZml4ICsgY29uZmlndXJhdGlvbi5kb21haW4gKyByZXNvdXJjZVR5cGUuc3VmZml4ICsgdHlwZTtcbiAgICBpZiAocmVzb3VyY2VUeXBlLmhhc093blByb3BlcnR5KCdmYWxsYmFjaycpICYmIHVzZUZhbGxiYWNrKSB7XG4gICAgICBpZiAocmVzb3VyY2VUeXBlLmZhbGxiYWNrLmluZGV4T2YoJyVkb21haW4lJykpIHtcbiAgICAgICAgdXJsID0gcmVzb3VyY2VUeXBlLmZhbGxiYWNrLnJlcGxhY2UoLyglZG9tYWluJSkvZywgY29uZmlndXJhdGlvbi5kb21haW4pICsgdHlwZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVybCA9IHJlc291cmNlVHlwZS5mYWxsYmFjayArIHR5cGU7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHVybCA9IHJlc291cmNlVHlwZS5wcmVmaXggKyBjb25maWd1cmF0aW9uLmRvbWFpbiArIHJlc291cmNlVHlwZS5zdWZmaXg7XG4gIH1cblxuICAvLyBjb25zb2xlLmxvZyh1cmwpO1xuXG4gIHJldHVybiB1cmw7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBHbG9iYWwgVW5pcXVlIElEXG4gKlxuICogQHJldHVybnMgU3RyaW5nO1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVHVUlEKCkge1xuXG4gIGZ1bmN0aW9uIHM0KCkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKCgxICsgTWF0aC5yYW5kb20oKSkgKiAweDEwMDAwKVxuICAgICAgLnRvU3RyaW5nKDE2KVxuICAgICAgLnN1YnN0cmluZygxKTtcbiAgfVxuXG4gIHJldHVybiBzNCgpICsgczQoKSArICctJyArIHM0KCkgKyAnLScgKyBzNCgpICsgJy0nICsgczQoKSArICctJyArIHM0KCkgKyBzNCgpICsgczQoKTtcblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlcklkZW50aXR5RG9tYWluKHVybCkge1xuICBsZXQgZGl2aWRlZFVSTCA9IGRpdmlkZVVSTCh1cmwpO1xuICBsZXQgc3BsaXRlZERvbWFpbiA9IGRpdmlkZWRVUkwuZG9tYWluLnNwbGl0KCcuJyk7XG4gIGxldCBzcGxpdGVkTGVuZ3RoID0gc3BsaXRlZERvbWFpbi5sZW5ndGg7XG4gIGlmIChzcGxpdGVkTGVuZ3RoID09IDEpIHtcbiAgICByZXR1cm4gc3BsaXRlZERvbWFpbltzcGxpdGVkTGVuZ3RoIC0gMV07XG4gIH1cbiAgbGV0IGRvbWFpbiA9IHNwbGl0ZWREb21haW5bc3BsaXRlZExlbmd0aCAtIDJdICsgJy4nICsgc3BsaXRlZERvbWFpbltzcGxpdGVkTGVuZ3RoIC0gMV07XG4gIHJldHVybiBkb21haW47XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgVVJMIGlzIGZyb20gYSBiYWNrZW5kIHNlcnZpY2VcbiAqIEBwYXJhbSAge3N0cmluZ30gdXJsICAgICBVUkwgdG8gYmUgcHJvY2Vzc2VkXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0JhY2tlbmRTZXJ2aWNlVVJMKHVybCkge1xuICBsZXQgZGl2aWRlZFVSTCA9IGRpdmlkZVVSTCh1cmwpO1xuICBsZXQgc3BsaXRlZERvbWFpbiA9IGRpdmlkZWRVUkwuZG9tYWluLnNwbGl0KCcuJyk7XG4gIGxldCBiYWNrZW5kU2NoZW1lcyA9IFsnZG9tYWluJywgJ2dsb2JhbCcsICdkb21haW4taWRwJ107IC8vIHNob3VsZCBiZSBkZWZpbmVkIGluIHRoZSBydW50aW1lIGNvbmZpZ3VyYXRpb25cbiAgbGV0IGJhY2tlbmRTdWJEb21haW5zID0gWydyZWdpc3RyeScsICdtc2ctbm9kZSddOyAvLyBzaG91bGQgYmUgZGVmaW5lZCBpbiB0aGUgcnVudGltZSBjb25maWd1cmF0aW9uXG4gIGxldCBzdWJEb21haW47XG5cbiAgaWYgKHNwbGl0ZWREb21haW4ubGVuZ3RoID4gMSkge1xuICAgIHN1YkRvbWFpbiA9IHNwbGl0ZWREb21haW4uZmlsdGVyKGl0ZW0gPT4gYmFja2VuZFN1YkRvbWFpbnMuaW5kZXhPZihpdGVtKSAhPT0gLTEpWzBdO1xuICB9XG5cbiAgaWYgKHN1YkRvbWFpbiAmJiBiYWNrZW5kU3ViRG9tYWlucy5pbmRleE9mKHN1YkRvbWFpbikgIT09IC0xKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoZGl2aWRlZFVSTC50eXBlKSB7XG4gICAgcmV0dXJuIChiYWNrZW5kU2NoZW1lcy5pbmRleE9mKGRpdmlkZWRVUkwudHlwZSkgIT09IC0xKTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpdmlkZUVtYWlsKGVtYWlsKSB7XG4gIGxldCBpbmRleE9mQXQgPSBlbWFpbC5pbmRleE9mKCdAJyk7XG5cbiAgbGV0IHJlc3VsdCA9IHtcbiAgICB1c2VybmFtZTogZW1haWwuc3Vic3RyaW5nKDAsIGluZGV4T2ZBdCksXG4gICAgZG9tYWluOiBlbWFpbC5zdWJzdHJpbmcoaW5kZXhPZkF0ICsgMSwgZW1haWwubGVuZ3RoKVxuICB9O1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbihvYmosIGtleVBhdGgsIHZhbHVlKSB7XG5cbiAgaWYgKCFvYmopIG9iaiA9IHt9O1xuICBpZiAodHlwZW9mKGtleVBhdGgpID09PSAnc3RyaW5nJykga2V5UGF0aCA9IHBhcnNlQXR0cmlidXRlcyhrZXlQYXRoKTtcblxuICBsZXQgbGFzdEtleUluZGV4ID0ga2V5UGF0aC5sZW5ndGggLSAxO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdEtleUluZGV4OyArK2kpIHtcbiAgICBsZXQga2V5ID0ga2V5UGF0aFtpXTtcbiAgICBpZiAoIShrZXkgaW4gb2JqKSkge1xuICAgICAgb2JqW2tleV0gPSB7fTtcbiAgICB9XG5cbiAgICBvYmogPSBvYmpba2V5XTtcblxuICB9XG5cbiAgb2JqW2tleVBhdGhbbGFzdEtleUluZGV4XV0gPSB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0T2JqZWN0VVJMKGRhdGFPYmplY3RVUkwpIHtcbiAgY29uc29sZS5pbmZvKCdbdXRpbHMgLSBzcGxpdE9iamVjdFVSTF06ICcsIGRhdGFPYmplY3RVUkwpO1xuXG4gIGxldCBzcGxpdGVkVVJMID0gZGF0YU9iamVjdFVSTC5zcGxpdCgnLycpO1xuICBsZXQgdXJsID0gc3BsaXRlZFVSTFswXSArICcvLycgKyBzcGxpdGVkVVJMWzJdICsgJy8nICsgc3BsaXRlZFVSTFszXTtcbiAgbGV0IHJlc291cmNlID0gc3BsaXRlZFVSTFs1XTtcblxuICBsZXQgcmVzdWx0ID0ge1xuICAgIHVybDogdXJsLFxuICAgIHJlc291cmNlOiByZXNvdXJjZVxuICB9O1xuXG4gIGNvbnNvbGUuaW5mbygnW3V0aWxzIC0gc3BsaXRPYmplY3RVUkxdOiAnLCByZXN1bHQpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0F0dHJpYnV0ZShwYXRoKSB7XG5cbiAgbGV0IHJlZ2V4ID0gLygoKFthLXpBLVpdKyk6XFwvXFwvKFswLTlhLXpBLVpdWy1cXHddKlswLTlhLXpBLVpdXFwuKStbYS16QS1aXXsyLDl9KVxcL1thLXpBLVowLTkuXStAW2EtekEtWjAtOV0rKC0pP1thLXpBLVowLTldKyhcXC4pP1thLXpBLVowLTldezIsMTB9P1xcLlthLXpBLVpdezIsMTB9KSguKyg/PS5pZGVudGl0eSkpPy9nbTtcblxuICBsZXQgbGlzdCA9IFtdO1xuICBsZXQgZmluYWwgPSBbXTtcbiAgbGV0IHRlc3QgPSBwYXRoLm1hdGNoKHJlZ2V4KTtcblxuICBpZiAodGVzdCA9PSBudWxsKSB7XG4gICAgZmluYWwgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IG07XG4gICAgd2hpbGUgKChtID0gcmVnZXguZXhlYyhwYXRoKSkgIT09IG51bGwpIHtcbiAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGluZmluaXRlIGxvb3BzIHdpdGggemVyby13aWR0aCBtYXRjaGVzXG4gICAgICBpZiAobS5pbmRleCA9PT0gcmVnZXgubGFzdEluZGV4KSB7XG4gICAgICAgIHJlZ2V4Lmxhc3RJbmRleCsrO1xuICAgICAgfVxuXG4gICAgICAvLyBUaGUgcmVzdWx0IGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBgbWAtdmFyaWFibGUuXG4gICAgICBtLmZvckVhY2goKG1hdGNoLCBncm91cEluZGV4KSA9PiB7XG4gICAgICAgIGlmIChncm91cEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgbGlzdC5wdXNoKG1hdGNoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGxldCByZXN1bHQ7XG4gICAgbGlzdC5mb3JFYWNoKCh1cmwpID0+IHtcblxuICAgICAgcmVzdWx0ID0gcGF0aC5yZXBsYWNlKHVybCwgJyotKicpO1xuICAgICAgZmluYWwgPSByZXN1bHQuc3BsaXQoJy4nKS5tYXAoKGl0ZW0pID0+IHtcblxuICAgICAgICBpZiAoaXRlbSA9PT0gJyotKicpIHsgcmV0dXJuIHVybDsgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zb2xlLmxvZygnW1J1bnRpbWVDb3JlLlV0aWxzLmNoZWNrQXR0cmlidXRlXScsIGZpbmFsKTtcbiAgcmV0dXJuIGZpbmFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBdHRyaWJ1dGVzKHBhdGgpIHtcbiAgbGV0IHJlZ2V4ID0gLyhbMC05YS16QS1aXVstXFx3XSopOlxcL1xcLy9nO1xuXG4gIGxldCBzdHJpbmczID0gJ2lkZW50aXR5JztcblxuICBpZiAoIXBhdGguaW5jbHVkZXMoJzovLycpKSB7XG4gICAgcmV0dXJuIChwYXRoLnNwbGl0KCcuJykpO1xuICB9IGVsc2Uge1xuICAgIGxldCBzdHJpbmcxID0gcGF0aC5zcGxpdChyZWdleClbMF07XG5cbiAgICBsZXQgYXJyYXkxID0gc3RyaW5nMS5zcGxpdCgnLicpO1xuXG4gICAgbGV0IHN0cmluZzIgPSBwYXRoLnJlcGxhY2Uoc3RyaW5nMSwgJycpO1xuXG4gICAgaWYgKHBhdGguaW5jbHVkZXMoc3RyaW5nMykpIHtcblxuICAgICAgbGV0IGFycmF5MiA9IHN0cmluZzIuc3BsaXQoc3RyaW5nMyArICcuJyk7XG5cbiAgICAgIGNvbnNvbGUubG9nKCdhcnJheTIgJyArIGFycmF5Mik7XG5cbiAgICAgIHN0cmluZzIgPSBhcnJheTJbMF0uc2xpY2UoJy4nLCAtMSk7XG5cbiAgICAgIGFycmF5MiA9IGFycmF5MlsxXS5zcGxpdCgnLicpO1xuXG4gICAgICBhcnJheTEucHVzaChzdHJpbmcyLCBzdHJpbmczKTtcblxuICAgICAgYXJyYXkxID0gYXJyYXkxLmNvbmNhdChhcnJheTIpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIGFycmF5MS5wdXNoKHN0cmluZzIpO1xuXG4gICAgfVxuXG4gICAgcmV0dXJuIChhcnJheTEuZmlsdGVyKEJvb2xlYW4pKTtcblxuICB9XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkob2JqKSB7XG4gIGZvciAodmFyIHByb3AgaW4gb2JqKSB7XG5cbiAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gIH1cblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKSA9PT0gSlNPTi5zdHJpbmdpZnkoe30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hhdGtleXNUb1N0cmluZ0Nsb25lcihzZXNzaW9uS2V5cykge1xuICBsZXQgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmUgPSB7fTtcbiAgbGV0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHNlc3Npb25LZXlzKTtcbiAgaWYgKGZpZWxkcykge1xuICAgIHRyeSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICBmaWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGZpZWxkID0gZmllbGRzW2ldO1xuICAgICAgICBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZVtmaWVsZF0gPSB7fTtcbiAgICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmVbZmllbGRdLnNlc3Npb25LZXkgPSBzZXNzaW9uS2V5c1tmaWVsZF0uc2Vzc2lvbktleS50b1N0cmluZygpO1xuICAgICAgICBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZVtmaWVsZF0uaXNUb0VuY3J5cHQgPSBzZXNzaW9uS2V5c1tmaWVsZF0uaXNUb0VuY3J5cHQ7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdfY2hhdGtleXNUb1N0cmluZ0Nsb25lcjplcnInLCBlcnIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGF0a2V5c1RvQXJyYXlDbG9uZXIoc2Vzc2lvbktleXMpIHtcbiAgbGV0IGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lID0ge307XG4gIGxldCBmaWVsZHMgPSBPYmplY3Qua2V5cyhzZXNzaW9uS2V5cyk7XG4gIGlmIChmaWVsZHMpIHtcbiAgICB0cnkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAgZmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBmaWVsZCA9IGZpZWxkc1tpXTtcbiAgICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmVbZmllbGRdID0ge307XG4gICAgICAgIGxldCBhcnJheVZhbHVlcyA9IEpTT04ucGFyc2UoJ1snICsgc2Vzc2lvbktleXNbZmllbGRdLnNlc3Npb25LZXkgKyAnXScpO1xuICAgICAgICBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZVtmaWVsZF0uc2Vzc2lvbktleSA9IG5ldyBVaW50OEFycmF5KGFycmF5VmFsdWVzKTtcbiAgICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmVbZmllbGRdLmlzVG9FbmNyeXB0ID0gc2Vzc2lvbktleXNbZmllbGRdLmlzVG9FbmNyeXB0O1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignX2NoYXRrZXlzVG9BcnJheUNsb25lcjplcnInLCBlcnIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU1lc3NhZ2VVUkwoVVJMKSB7XG4gIGxldCBzcGxpdGVkVG9VUkwgPSBVUkwuc3BsaXQoJy8nKTtcbiAgaWYgKHNwbGl0ZWRUb1VSTC5sZW5ndGggPD0gNikge1xuICAgIHJldHVybiBzcGxpdGVkVG9VUkxbMF0gKyAnLy8nICsgc3BsaXRlZFRvVVJMWzJdICsgJy8nICsgc3BsaXRlZFRvVVJMWzNdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzcGxpdGVkVG9VUkxbMF0gKyAnLy8nICsgc3BsaXRlZFRvVVJMWzJdICsgJy8nICsgc3BsaXRlZFRvVVJMWzNdICsgJy8nICsgc3BsaXRlZFRvVVJMWzRdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdmFpbGFibGVTcGFjZSh1c2FnZSwgcXVvdGEpIHtcbiAgY29uc3QgYXZhaWxhYmxlID0gKHVzYWdlIC8gcXVvdGEpLnRvRml4ZWQoMik7XG4gIHJldHVybiB7XG4gICAgcXVvdGE6IHF1b3RhLFxuICAgIHVzYWdlOiB1c2FnZSxcbiAgICBwZXJjZW50OiBOdW1iZXIoYXZhaWxhYmxlKVxuICB9O1xufVxuXG4vKipcbiogRW5jb2RlcyBhIEpTIG9iamVjdCB0byBiYXNlIDY0IGVuY29kZVxuKiBAcGFyYW0gICB7T2JqZWN0fSAgICB2YWx1ZSAgICBieXRlQXJyYXkgdmFsdWVcbiogQHJldHVybiAge3N0cmluZ30gICBlbmNvZGVkIHZhbHVlXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZSh2YWx1ZSkge1xuICB0cnkge1xuICAgIGxldCBzdHJpbmdWYWx1ZSA9IHN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgcmV0dXJuIGJ0b2Eoc3RyaW5nVmFsdWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbVXRpbHMuZW5jb2RlOmVycl0gJyArIGVycik7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbi8qKlxuICAqIERlY29kZSBhIGJhc2U2NCBzdHJpbmcgdG8gb2JqZWN0XG4gICogQHBhcmFtICAge3N0cmluZ19iNjR9ICAgIHZhbHVlICAgIHZhbHVlIGVuY29kZWQgaW4gYmFzZSA2NFxuICAqIEByZXR1cm4gIHtPYmplY3R9IGRlY29kZWRWYWx1ZVxuICAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZSh2YWx1ZSkge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF0b2IodmFsdWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5sb2coJ1tVdGlscy5kZWNvZGU6ZXJyXSAnICsgZXJyKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLyoqXG4qIERlY29kZSBhIGJhc2U2NCBzdHJpbmcgdG8gVWludDhBcnJheVxuKiBAcGFyYW0gICB7c3RyaW5nX2I2NH0gICAgdmFsdWUgICAgYnl0ZUFycmF5IHZhbHVlXG4qIEByZXR1cm4gIHtVaW50OEFycmF5fSAgIGVuY29kZWQgdmFsdWVcbiovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVG9VaW50OEFycmF5KHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGRlY29kZSh2YWx1ZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbVXRpbHMuZGVjb2RlVG9VaW50OEFycmF5OmVycl0gJyArIGVycik7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbi8qKlxuKiBDb252ZXJ0cyBhIEpTIG9iamVjdCB0byBzdHJpbmdcbiogTk9URTogU3BlY2lhbCBjb252ZXJzaW9uIGZvciBVaW50OEFycmF5c1xuKiBAcGFyYW0gICB7T2JqZWN0fSAgICB2YWx1ZSAgICBieXRlQXJyYXkgdmFsdWVcbiogQHJldHVybiAge1VpbnQ4QXJyYXl9ICAgZW5jb2RlZCB2YWx1ZVxuKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkodmFsdWUpIHtcbiAgdHJ5IHtcbiAgICBsZXQgc3RyaW5nVmFsdWU7XG4gICAgaWYgKHZhbHVlLmNvbnN0cnVjdG9yID09PSBVaW50OEFycmF5KSB7XG4gICAgICBzdHJpbmdWYWx1ZSA9ICdbJyArIHZhbHVlLnRvU3RyaW5nKCkgKyAnXSc7IC8vIHRoZSBbXSBpcyBmb3IgSlNPTi5wYXJzZSBjb21wYXRpYmlsaXR5XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmluZ1ZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyaW5nVmFsdWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1tVdGlscy5zdHJpbmdpZnk6ZXJyXSAnICsgZXJyKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLyoqXG4qIENvbnZlcnRzIGEgc3RyaW5naWZpZWQgb2JqZWN0IHRvIG9iamVjdFxuKiBAcGFyYW0gICB7U3RyaW5nfSAgICB2YWx1ZSAgICBieXRlQXJyYXkgdmFsdWVcbiogQHJldHVybiAge09iamVjdH0gICBlbmNvZGVkIHZhbHVlXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbVXRpbHMucGFyc2U6ZXJyXScgKyBlcnIpO1xuICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICBjb25zb2xlLmVycm9yKCdUaGUgdmFsdWUgdGhhdCBjYXVzZSB0aGUgZXJyb3I6JywgdmFsdWUpO1xuICAgIHRocm93IGVycjtcbiAgfVxufVxuXG4vKipcbiogQ29udmVydHMgYSBzdHJpbmdpZmllZCBvYmplY3QgdG8gb2JqZWN0XG4qIEBwYXJhbSAgIHtTdHJpbmd9ICAgIHZhbHVlICAgIGJ5dGVBcnJheSB2YWx1ZVxuKiBAcmV0dXJuICB7VWludDhBcnJheX0gICBlbmNvZGVkIHZhbHVlXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVG9VaW50OEFycmF5KHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHBhcnNlKHZhbHVlKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1tVdGlscy5wYXJzZVRvVWludDhBcnJheTplcnJdJyArIGVycik7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbi8qKlxuICAqIGZpbHRlciB0aGUgbWVzc2FnZXMgdG8gaGFzaCwgYnkgcmVtb3Zpbmcgc29tZSBmaWVsZHMgbm90IGdlbmVyYXRlZCBieSB0aGUgcnVudGltZSBjb3JlXG4gICogQHBhcmFtIHtNZXNzYWdlfSAgbWVzc2FnZSAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VcbiAgKiBAcGFyYW0ge1N0cmluZ30gIGRlY3J5cHRlZFZhbHVlIChPcHRpb25hbCkgICAgdmFsdWUgZnJvbSBib2R5LnZhbHVlIGluIGNhc2UgaXQgb3JpZ2luYWxseSBjb21lcyBlbmNyeXB0ZWRcbiAgKiBAcGFyYW0ge0pTT059ICBpZGVudGl0eShPcHRpb25hbCkgICAgYWRkIHRoZSBoeXBlcnR5IGlkZW50aXR5IGFzc29jaWF0ZWQgaW4gY2FzZSBpcyBub3QgYWRkZWQgdG8gdGhlIGluaXRpYWwgbWVzc2FnZVxuICAqIEByZXR1cm4ge01lc3NhZ2V9ICBuZXcgbWVzc2FnZSBmaWx0ZXJlZFxuICAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlck1lc3NhZ2VUb0hhc2gobWVzc2FnZSwgZGVjcnlwdGVkVmFsdWUsIGlkZW50aXR5KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogbWVzc2FnZS50eXBlLFxuICAgIGZyb206IG1lc3NhZ2UuZnJvbSxcbiAgICB0bzogbWVzc2FnZS50byxcbiAgICBib2R5OiB7XG4gICAgICBpZGVudGl0eTogaWRlbnRpdHkgfHwgbWVzc2FnZS5ib2R5LmlkZW50aXR5LFxuICAgICAgdmFsdWU6IGRlY3J5cHRlZFZhbHVlIHx8IG1lc3NhZ2UuYm9keS52YWx1ZSxcbiAgICAgIGhhbmRzaGFrZVBoYXNlOiBtZXNzYWdlLmJvZHkuaGFuZHNoYWtlUGhhc2VcbiAgICB9XG4gIH07XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3V0aWxzL3V0aWxzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQXdDQTtBQXNEQTtBQUlBO0FBVUE7QUFLQTtBQVVBO0FBVUE7QUFVQTtBQW1CQTtBQVFBO0FBUUE7QUFJQTtBQUlBO0FBV0E7QUFnQkE7QUFpQ0E7QUFZQTtBQWlCQTtBQXNCQTtBQVlBO0FBb0JBO0FBaUJBO0FBMENBO0FBdUNBO0FBWUE7QUFrQkE7QUFtQkE7QUFTQTtBQWNBO0FBZUE7QUFjQTtBQWVBO0FBb0JBO0FBZ0JBO0FBZ0JBO0FBQ0E7OztBQXBsQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkE7Ozs7O0FBS0E7Ozs7Ozs7O0FBUUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFTQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBSkE7QUFVQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///111\n")},,,function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(115), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeS5qcz85YWYxIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9qc29uL3N0cmluZ2lmeVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeS5qc1xuLy8gbW9kdWxlIGlkID0gMTE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAzIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///114\n')},function(module,exports,__webpack_require__){eval("var core = __webpack_require__(0);\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9qc29uL3N0cmluZ2lmeS5qcz9hYTQyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpO1xudmFyICRKU09OID0gY29yZS5KU09OIHx8IChjb3JlLkpTT04gPSB7IHN0cmluZ2lmeTogSlNPTi5zdHJpbmdpZnkgfSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHJldHVybiAkSlNPTi5zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3VtZW50cyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5LmpzXG4vLyBtb2R1bGUgaWQgPSAxMTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///115\n")},,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _utils = __webpack_require__(111);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ReThinkCtx = function () {\n function ReThinkCtx() {\n (0, _classCallCheck3.default)(this, ReThinkCtx);\n\n this.defaultBehaviour = true;\n this.groups = {};\n }\n\n (0, _createClass3.default)(ReThinkCtx, [{\n key: 'scheme',\n get: function get() {\n return this._scheme;\n },\n set: function set(params) {\n var from = params.message.from;\n if ((0, _utils.isDataObjectURL)(from)) {\n this._scheme = (0, _utils.divideURL)(from).type;\n } else {\n this._scheme = undefined;\n }\n }\n }, {\n key: 'date',\n get: function get() {\n return this._date;\n },\n set: function set(now) {\n var date = new Date();\n var day = String(date.getDate());\n if (day.length === 1) {\n day = '0' + day;\n }\n var month = String(date.getMonth() + 1);\n if (month.length === 1) {\n month = '0' + month;\n }\n this._date = day + '/' + month + '/' + date.getFullYear();\n }\n }, {\n key: 'domain',\n get: function get() {\n return this._domain;\n },\n set: function set(params) {\n if (params.message.body.identity !== undefined) {\n this._domain = (0, _utils.divideEmail)(params.message.body.identity.userProfile.username).domain;\n }\n }\n }, {\n key: 'type',\n get: function get() {\n return this._type;\n },\n set: function set(params) {\n var message = params.message;\n if (message.body.value !== undefined) {\n this._type = message.body.value.resourceType;\n }\n }\n }, {\n key: 'source',\n get: function get() {\n return this._source;\n },\n set: function set(params) {\n if (params.message.body.identity !== undefined) {\n this._source = params.message.body.identity.userProfile.username;\n }\n }\n }, {\n key: 'time',\n get: function get() {\n return this._time;\n },\n set: function set(now) {\n now = new Date();\n var minutes = String(now.getMinutes());\n if (minutes.length === 1) {\n minutes = '0' + minutes;\n }\n this._time = parseInt(String(now.getHours()) + minutes);\n }\n }, {\n key: 'weekday',\n get: function get() {\n return this._weekday;\n },\n set: function set(now) {\n this._weekday = String(new Date().getDay());\n }\n }]);\n return ReThinkCtx;\n}();\n\nexports.default = ReThinkCtx;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUmVUaGlua0N0eC5qcz82ZmRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGl2aWRlRW1haWwsIGRpdmlkZVVSTCwgaXNEYXRhT2JqZWN0VVJMfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5cbmNsYXNzIFJlVGhpbmtDdHgge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZGVmYXVsdEJlaGF2aW91ciA9IHRydWU7XG4gICAgdGhpcy5ncm91cHMgPSB7fTtcbiAgfVxuXG4gIGdldCBzY2hlbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NjaGVtZTtcbiAgfVxuXG4gIGdldCBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRlO1xuICB9XG5cbiAgZ2V0IGRvbWFpbigpIHtcbiAgICByZXR1cm4gdGhpcy5fZG9tYWluO1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cblxuICBnZXQgc291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLl9zb3VyY2U7XG4gIH1cblxuICBnZXQgdGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdGltZTtcbiAgfVxuXG4gIGdldCB3ZWVrZGF5KCkge1xuICAgIHJldHVybiB0aGlzLl93ZWVrZGF5O1xuICB9XG5cbiAgc2V0IHNjaGVtZShwYXJhbXMpIHtcbiAgICBsZXQgZnJvbSA9IHBhcmFtcy5tZXNzYWdlLmZyb207XG4gICAgaWYgKGlzRGF0YU9iamVjdFVSTChmcm9tKSkge1xuICAgICAgdGhpcy5fc2NoZW1lID0gZGl2aWRlVVJMKGZyb20pLnR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NjaGVtZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBzZXQgZGF0ZShub3cpIHtcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgbGV0IGRheSA9IFN0cmluZyhkYXRlLmdldERhdGUoKSk7XG4gICAgaWYgKGRheS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGRheSA9ICcwJyArIGRheTtcbiAgICB9XG4gICAgbGV0IG1vbnRoID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpO1xuICAgIGlmIChtb250aC5sZW5ndGggPT09IDEpIHtcbiAgICAgIG1vbnRoID0gJzAnICsgbW9udGg7XG4gICAgfVxuICAgIHRoaXMuX2RhdGUgPSBkYXkgKyAnLycgKyBtb250aCArICcvJyArIGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgfVxuXG4gIHNldCBkb21haW4ocGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcy5tZXNzYWdlLmJvZHkuaWRlbnRpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZG9tYWluID0gZGl2aWRlRW1haWwocGFyYW1zLm1lc3NhZ2UuYm9keS5pZGVudGl0eS51c2VyUHJvZmlsZS51c2VybmFtZSkuZG9tYWluO1xuICAgIH1cbiAgfVxuXG4gIHNldCB0eXBlKHBhcmFtcykge1xuICAgIGxldCBtZXNzYWdlID0gcGFyYW1zLm1lc3NhZ2U7XG4gICAgaWYgKG1lc3NhZ2UuYm9keS52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl90eXBlID0gbWVzc2FnZS5ib2R5LnZhbHVlLnJlc291cmNlVHlwZTtcbiAgICB9XG4gIH1cblxuICBzZXQgc291cmNlKHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMubWVzc2FnZS5ib2R5LmlkZW50aXR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3NvdXJjZSA9IHBhcmFtcy5tZXNzYWdlLmJvZHkuaWRlbnRpdHkudXNlclByb2ZpbGUudXNlcm5hbWU7XG4gICAgfVxuICB9XG5cbiAgc2V0IHRpbWUobm93KSB7XG4gICAgbm93ID0gbmV3IERhdGUoKTtcbiAgICBsZXQgbWludXRlcyA9IFN0cmluZyhub3cuZ2V0TWludXRlcygpKTtcbiAgICBpZiAobWludXRlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIG1pbnV0ZXMgPSAnMCcgKyBtaW51dGVzO1xuICAgIH1cbiAgICB0aGlzLl90aW1lID0gcGFyc2VJbnQoU3RyaW5nKG5vdy5nZXRIb3VycygpKSArIG1pbnV0ZXMpO1xuICB9XG5cbiAgc2V0IHdlZWtkYXkobm93KSB7XG4gICAgdGhpcy5fd2Vla2RheSA9IFN0cmluZyhuZXcgRGF0ZSgpLmdldERheSgpKTtcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlVGhpbmtDdHg7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3BvbGljeS9SZVRoaW5rQ3R4LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7OztBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQTBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUEvQkE7QUFDQTtBQUNBO0FBK0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBeENBO0FBQ0E7QUFDQTtBQXdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUExQ0E7QUFDQTtBQUNBO0FBMENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBN0NBO0FBQ0E7QUFDQTtBQTZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUEvQ0E7QUFDQTtBQUNBO0FBK0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQXBEQTtBQUNBO0FBQ0E7QUFvREE7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///133\n")}])}); \ No newline at end of file diff --git a/dist/Runtime.js b/dist/Runtime.js old mode 100644 new mode 100755 index 1f1d8f60..4569392f --- a/dist/Runtime.js +++ b/dist/Runtime.js @@ -1,5 +1,5 @@ // version: 0.11.1 -// date: Fri May 25 2018 12:35:36 GMT+0100 (GMT Daylight Time) +// date: Mon Jun 04 2018 11:42:23 GMT+0100 (WEST) // licence: /** * Copyright 2016 PT Inovação e Sistemas SA @@ -25,31 +25,4 @@ **/ -// version: 0.11.1 -// date: Fri May 25 2018 12:35:36 GMT+0100 (GMT Daylight Time) -// licence: -/** -* Copyright 2016 PT Inovação e Sistemas SA -* Copyright 2016 INESC-ID -* Copyright 2016 QUOBIS NETWORKS SL -* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V -* Copyright 2016 ORANGE SA -* Copyright 2016 Deutsche Telekom AG -* Copyright 2016 Apizee -* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -**/ - - -!function(c,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("Runtime",[],e):"object"==typeof exports?exports.Runtime=e():c.Runtime=e()}("undefined"!=typeof self?self:this,function(){return function(c){var e={};function n(t){if(e[t])return e[t].exports;var g=e[t]={i:t,l:!1,exports:{}};return c[t].call(g.exports,g,g.exports,n),g.l=!0,g.exports}return n.m=c,n.c=e,n.d=function(c,e,t){n.o(c,e)||Object.defineProperty(c,e,{configurable:!1,enumerable:!0,get:t})},n.n=function(c){var e=c&&c.__esModule?function(){return c.default}:function(){return c};return n.d(e,"a",e),e},n.o=function(c,e){return Object.prototype.hasOwnProperty.call(c,e)},n.p="",n(n.s=213)}([function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar core = __webpack_require__(30);\nvar hide = __webpack_require__(18);\nvar redefine = __webpack_require__(19);\nvar ctx = __webpack_require__(27);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2V4cG9ydC5qcz8wZWNlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG52YXIgJGV4cG9ydCA9IGZ1bmN0aW9uICh0eXBlLCBuYW1lLCBzb3VyY2UpIHtcbiAgdmFyIElTX0ZPUkNFRCA9IHR5cGUgJiAkZXhwb3J0LkY7XG4gIHZhciBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HO1xuICB2YXIgSVNfU1RBVElDID0gdHlwZSAmICRleHBvcnQuUztcbiAgdmFyIElTX1BST1RPID0gdHlwZSAmICRleHBvcnQuUDtcbiAgdmFyIElTX0JJTkQgPSB0eXBlICYgJGV4cG9ydC5CO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIHx8IChnbG9iYWxbbmFtZV0gPSB7fSkgOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV0gfHwgKGV4cG9ydHNbUFJPVE9UWVBFXSA9IHt9KTtcbiAgdmFyIGtleSwgb3duLCBvdXQsIGV4cDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IChvd24gPyB0YXJnZXQgOiBzb3VyY2UpW2tleV07XG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICBleHAgPSBJU19CSU5EICYmIG93biA/IGN0eChvdXQsIGdsb2JhbCkgOiBJU19QUk9UTyAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcbiAgICAvLyBleHRlbmQgZ2xvYmFsXG4gICAgaWYgKHRhcmdldCkgcmVkZWZpbmUodGFyZ2V0LCBrZXksIG91dCwgdHlwZSAmICRleHBvcnQuVSk7XG4gICAgLy8gZXhwb3J0XG4gICAgaWYgKGV4cG9ydHNba2V5XSAhPSBvdXQpIGhpZGUoZXhwb3J0cywga2V5LCBleHApO1xuICAgIGlmIChJU19QUk9UTyAmJiBleHBQcm90b1trZXldICE9IG91dCkgZXhwUHJvdG9ba2V5XSA9IG91dDtcbiAgfVxufTtcbmdsb2JhbC5jb3JlID0gY29yZTtcbi8vIHR5cGUgYml0bWFwXG4kZXhwb3J0LkYgPSAxOyAgIC8vIGZvcmNlZFxuJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWxcbiRleHBvcnQuUyA9IDQ7ICAgLy8gc3RhdGljXG4kZXhwb3J0LlAgPSA4OyAgIC8vIHByb3RvXG4kZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmRcbiRleHBvcnQuVyA9IDMyOyAgLy8gd3JhcFxuJGV4cG9ydC5VID0gNjQ7ICAvLyBzYWZlXG4kZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWBcbm1vZHVsZS5leHBvcnRzID0gJGV4cG9ydDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanM/NjZiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(200);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanM/YzMxMCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIik7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVmaW5lUHJvcGVydHkpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgICAgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgICBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICAgIGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfTtcbn0oKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2\n')},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FuLW9iamVjdC5qcz8wYzg1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYW4tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n")},function(module,exports){eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2dsb2JhbC5qcz8zYjMyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZ2xvYmFsLmpzXG4vLyBtb2R1bGUgaWQgPSA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZhaWxzLmpzP2NlMDIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mYWlscy5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n")},function(module,exports){eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLW9iamVjdC5qcz81MGEzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1vYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///6\n")},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n "use strict";\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof module === \'object\' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n "use strict";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = "undefined";\n\n var logMethods = [\n "trace",\n "debug",\n "info",\n "warn",\n "error"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === \'function\') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === \'debug\') {\n methodName = \'log\';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, \'log\');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn\'t present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = "loglevel";\n if (name) {\n storageKey += ":" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || \'silent\').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + "=" + levelName + ";";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + "=");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { "TRACE": 0, "DEBUG": 1, "INFO": 2, "WARN": 3,\n "ERROR": 4, "SILENT": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return "No console available for logging";\n }\n } else {\n throw "log.setLevel() called with invalid level: " + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? "WARN" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== "string" || name === "") {\n throw new TypeError("You must supply a name when creating a logger.");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2dsZXZlbC9saWIvbG9nbGV2ZWwuanM/MDZmYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuKiBsb2dsZXZlbCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9waW10ZXJyeS9sb2dsZXZlbFxuKlxuKiBDb3B5cmlnaHQgKGMpIDIwMTMgVGltIFBlcnJ5XG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiovXG4oZnVuY3Rpb24gKHJvb3QsIGRlZmluaXRpb24pIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICAgIGRlZmluZShkZWZpbml0aW9uKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgICAgIG1vZHVsZS5leHBvcnRzID0gZGVmaW5pdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJvb3QubG9nID0gZGVmaW5pdGlvbigpO1xuICAgIH1cbn0odGhpcywgZnVuY3Rpb24gKCkge1xuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgLy8gU2xpZ2h0bHkgZHViaW91cyB0cmlja3MgdG8gY3V0IGRvd24gbWluaW1pemVkIGZpbGUgc2l6ZVxuICAgIHZhciBub29wID0gZnVuY3Rpb24oKSB7fTtcbiAgICB2YXIgdW5kZWZpbmVkVHlwZSA9IFwidW5kZWZpbmVkXCI7XG5cbiAgICB2YXIgbG9nTWV0aG9kcyA9IFtcbiAgICAgICAgXCJ0cmFjZVwiLFxuICAgICAgICBcImRlYnVnXCIsXG4gICAgICAgIFwiaW5mb1wiLFxuICAgICAgICBcIndhcm5cIixcbiAgICAgICAgXCJlcnJvclwiXG4gICAgXTtcblxuICAgIC8vIENyb3NzLWJyb3dzZXIgYmluZCBlcXVpdmFsZW50IHRoYXQgd29ya3MgYXQgbGVhc3QgYmFjayB0byBJRTZcbiAgICBmdW5jdGlvbiBiaW5kTWV0aG9kKG9iaiwgbWV0aG9kTmFtZSkge1xuICAgICAgICB2YXIgbWV0aG9kID0gb2JqW21ldGhvZE5hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIG1ldGhvZC5iaW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gbWV0aG9kLmJpbmQob2JqKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmNhbGwobWV0aG9kLCBvYmopO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIE1pc3NpbmcgYmluZCBzaGltIG9yIElFOCArIE1vZGVybml6ciwgZmFsbGJhY2sgdG8gd3JhcHBpbmdcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuYXBwbHkobWV0aG9kLCBbb2JqLCBhcmd1bWVudHNdKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgdGhlIGJlc3QgbG9nZ2luZyBtZXRob2QgcG9zc2libGUgZm9yIHRoaXMgZW52XG4gICAgLy8gV2hlcmV2ZXIgcG9zc2libGUgd2Ugd2FudCB0byBiaW5kLCBub3Qgd3JhcCwgdG8gcHJlc2VydmUgc3RhY2sgdHJhY2VzXG4gICAgZnVuY3Rpb24gcmVhbE1ldGhvZChtZXRob2ROYW1lKSB7XG4gICAgICAgIGlmIChtZXRob2ROYW1lID09PSAnZGVidWcnKSB7XG4gICAgICAgICAgICBtZXRob2ROYW1lID0gJ2xvZyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgPT09IHVuZGVmaW5lZFR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gTm8gbWV0aG9kIHBvc3NpYmxlLCBmb3Igbm93IC0gZml4ZWQgbGF0ZXIgYnkgZW5hYmxlTG9nZ2luZ1doZW5Db25zb2xlQXJyaXZlc1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnNvbGVbbWV0aG9kTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGJpbmRNZXRob2QoY29uc29sZSwgbWV0aG9kTmFtZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29uc29sZS5sb2cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGJpbmRNZXRob2QoY29uc29sZSwgJ2xvZycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGVzZSBwcml2YXRlIGZ1bmN0aW9ucyBhbHdheXMgbmVlZCBgdGhpc2AgdG8gYmUgc2V0IHByb3Blcmx5XG5cbiAgICBmdW5jdGlvbiByZXBsYWNlTG9nZ2luZ01ldGhvZHMobGV2ZWwsIGxvZ2dlck5hbWUpIHtcbiAgICAgICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsb2dNZXRob2RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgbWV0aG9kTmFtZSA9IGxvZ01ldGhvZHNbaV07XG4gICAgICAgICAgICB0aGlzW21ldGhvZE5hbWVdID0gKGkgPCBsZXZlbCkgP1xuICAgICAgICAgICAgICAgIG5vb3AgOlxuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kRmFjdG9yeShtZXRob2ROYW1lLCBsZXZlbCwgbG9nZ2VyTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWZpbmUgbG9nLmxvZyBhcyBhbiBhbGlhcyBmb3IgbG9nLmRlYnVnXG4gICAgICAgIHRoaXMubG9nID0gdGhpcy5kZWJ1ZztcbiAgICB9XG5cbiAgICAvLyBJbiBvbGQgSUUgdmVyc2lvbnMsIHRoZSBjb25zb2xlIGlzbid0IHByZXNlbnQgdW50aWwgeW91IGZpcnN0IG9wZW4gaXQuXG4gICAgLy8gV2UgYnVpbGQgcmVhbE1ldGhvZCgpIHJlcGxhY2VtZW50cyBoZXJlIHRoYXQgcmVnZW5lcmF0ZSBsb2dnaW5nIG1ldGhvZHNcbiAgICBmdW5jdGlvbiBlbmFibGVMb2dnaW5nV2hlbkNvbnNvbGVBcnJpdmVzKG1ldGhvZE5hbWUsIGxldmVsLCBsb2dnZXJOYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09IHVuZGVmaW5lZFR5cGUpIHtcbiAgICAgICAgICAgICAgICByZXBsYWNlTG9nZ2luZ01ldGhvZHMuY2FsbCh0aGlzLCBsZXZlbCwgbG9nZ2VyTmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpc1ttZXRob2ROYW1lXS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIEJ5IGRlZmF1bHQsIHdlIHVzZSBjbG9zZWx5IGJvdW5kIHJlYWwgbWV0aG9kcyB3aGVyZXZlciBwb3NzaWJsZSwgYW5kXG4gICAgLy8gb3RoZXJ3aXNlIHdlIHdhaXQgZm9yIGEgY29uc29sZSB0byBhcHBlYXIsIGFuZCB0aGVuIHRyeSBhZ2Fpbi5cbiAgICBmdW5jdGlvbiBkZWZhdWx0TWV0aG9kRmFjdG9yeShtZXRob2ROYW1lLCBsZXZlbCwgbG9nZ2VyTmFtZSkge1xuICAgICAgICAvKmpzaGludCB2YWxpZHRoaXM6dHJ1ZSAqL1xuICAgICAgICByZXR1cm4gcmVhbE1ldGhvZChtZXRob2ROYW1lKSB8fFxuICAgICAgICAgICAgICAgZW5hYmxlTG9nZ2luZ1doZW5Db25zb2xlQXJyaXZlcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIExvZ2dlcihuYW1lLCBkZWZhdWx0TGV2ZWwsIGZhY3RvcnkpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBjdXJyZW50TGV2ZWw7XG4gICAgICB2YXIgc3RvcmFnZUtleSA9IFwibG9nbGV2ZWxcIjtcbiAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgIHN0b3JhZ2VLZXkgKz0gXCI6XCIgKyBuYW1lO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBwZXJzaXN0TGV2ZWxJZlBvc3NpYmxlKGxldmVsTnVtKSB7XG4gICAgICAgICAgdmFyIGxldmVsTmFtZSA9IChsb2dNZXRob2RzW2xldmVsTnVtXSB8fCAnc2lsZW50JykudG9VcHBlckNhc2UoKTtcblxuICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSB1bmRlZmluZWRUeXBlKSByZXR1cm47XG5cbiAgICAgICAgICAvLyBVc2UgbG9jYWxTdG9yYWdlIGlmIGF2YWlsYWJsZVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV0gPSBsZXZlbE5hbWU7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG5cbiAgICAgICAgICAvLyBVc2Ugc2Vzc2lvbiBjb29raWUgYXMgZmFsbGJhY2tcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQuY29va2llID1cbiAgICAgICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoc3RvcmFnZUtleSkgKyBcIj1cIiArIGxldmVsTmFtZSArIFwiO1wiO1xuICAgICAgICAgIH0gY2F0Y2ggKGlnbm9yZSkge31cbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZ2V0UGVyc2lzdGVkTGV2ZWwoKSB7XG4gICAgICAgICAgdmFyIHN0b3JlZExldmVsO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IHVuZGVmaW5lZFR5cGUpIHJldHVybjtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHN0b3JlZExldmVsID0gd2luZG93LmxvY2FsU3RvcmFnZVtzdG9yYWdlS2V5XTtcbiAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG5cbiAgICAgICAgICAvLyBGYWxsYmFjayB0byBjb29raWVzIGlmIGxvY2FsIHN0b3JhZ2UgZ2l2ZXMgdXMgbm90aGluZ1xuICAgICAgICAgIGlmICh0eXBlb2Ygc3RvcmVkTGV2ZWwgPT09IHVuZGVmaW5lZFR5cGUpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIHZhciBjb29raWUgPSB3aW5kb3cuZG9jdW1lbnQuY29va2llO1xuICAgICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gY29va2llLmluZGV4T2YoXG4gICAgICAgICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHN0b3JhZ2VLZXkpICsgXCI9XCIpO1xuICAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgIHN0b3JlZExldmVsID0gL14oW147XSspLy5leGVjKGNvb2tpZS5zbGljZShsb2NhdGlvbikpWzFdO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSWYgdGhlIHN0b3JlZCBsZXZlbCBpcyBub3QgdmFsaWQsIHRyZWF0IGl0IGFzIGlmIG5vdGhpbmcgd2FzIHN0b3JlZC5cbiAgICAgICAgICBpZiAoc2VsZi5sZXZlbHNbc3RvcmVkTGV2ZWxdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgc3RvcmVkTGV2ZWwgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHN0b3JlZExldmVsO1xuICAgICAgfVxuXG4gICAgICAvKlxuICAgICAgICpcbiAgICAgICAqIFB1YmxpYyBsb2dnZXIgQVBJIC0gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9waW10ZXJyeS9sb2dsZXZlbCBmb3IgZGV0YWlsc1xuICAgICAgICpcbiAgICAgICAqL1xuXG4gICAgICBzZWxmLm5hbWUgPSBuYW1lO1xuXG4gICAgICBzZWxmLmxldmVscyA9IHsgXCJUUkFDRVwiOiAwLCBcIkRFQlVHXCI6IDEsIFwiSU5GT1wiOiAyLCBcIldBUk5cIjogMyxcbiAgICAgICAgICBcIkVSUk9SXCI6IDQsIFwiU0lMRU5UXCI6IDV9O1xuXG4gICAgICBzZWxmLm1ldGhvZEZhY3RvcnkgPSBmYWN0b3J5IHx8IGRlZmF1bHRNZXRob2RGYWN0b3J5O1xuXG4gICAgICBzZWxmLmdldExldmVsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBjdXJyZW50TGV2ZWw7XG4gICAgICB9O1xuXG4gICAgICBzZWxmLnNldExldmVsID0gZnVuY3Rpb24gKGxldmVsLCBwZXJzaXN0KSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBsZXZlbCA9PT0gXCJzdHJpbmdcIiAmJiBzZWxmLmxldmVsc1tsZXZlbC50b1VwcGVyQ2FzZSgpXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGxldmVsID0gc2VsZi5sZXZlbHNbbGV2ZWwudG9VcHBlckNhc2UoKV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09IFwibnVtYmVyXCIgJiYgbGV2ZWwgPj0gMCAmJiBsZXZlbCA8PSBzZWxmLmxldmVscy5TSUxFTlQpIHtcbiAgICAgICAgICAgICAgY3VycmVudExldmVsID0gbGV2ZWw7XG4gICAgICAgICAgICAgIGlmIChwZXJzaXN0ICE9PSBmYWxzZSkgeyAgLy8gZGVmYXVsdHMgdG8gdHJ1ZVxuICAgICAgICAgICAgICAgICAgcGVyc2lzdExldmVsSWZQb3NzaWJsZShsZXZlbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmVwbGFjZUxvZ2dpbmdNZXRob2RzLmNhbGwoc2VsZiwgbGV2ZWwsIG5hbWUpO1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgPT09IHVuZGVmaW5lZFR5cGUgJiYgbGV2ZWwgPCBzZWxmLmxldmVscy5TSUxFTlQpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBcIk5vIGNvbnNvbGUgYXZhaWxhYmxlIGZvciBsb2dnaW5nXCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aHJvdyBcImxvZy5zZXRMZXZlbCgpIGNhbGxlZCB3aXRoIGludmFsaWQgbGV2ZWw6IFwiICsgbGV2ZWw7XG4gICAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgc2VsZi5zZXREZWZhdWx0TGV2ZWwgPSBmdW5jdGlvbiAobGV2ZWwpIHtcbiAgICAgICAgICBpZiAoIWdldFBlcnNpc3RlZExldmVsKCkpIHtcbiAgICAgICAgICAgICAgc2VsZi5zZXRMZXZlbChsZXZlbCwgZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHNlbGYuZW5hYmxlQWxsID0gZnVuY3Rpb24ocGVyc2lzdCkge1xuICAgICAgICAgIHNlbGYuc2V0TGV2ZWwoc2VsZi5sZXZlbHMuVFJBQ0UsIHBlcnNpc3QpO1xuICAgICAgfTtcblxuICAgICAgc2VsZi5kaXNhYmxlQWxsID0gZnVuY3Rpb24ocGVyc2lzdCkge1xuICAgICAgICAgIHNlbGYuc2V0TGV2ZWwoc2VsZi5sZXZlbHMuU0lMRU5ULCBwZXJzaXN0KTtcbiAgICAgIH07XG5cbiAgICAgIC8vIEluaXRpYWxpemUgd2l0aCB0aGUgcmlnaHQgbGV2ZWxcbiAgICAgIHZhciBpbml0aWFsTGV2ZWwgPSBnZXRQZXJzaXN0ZWRMZXZlbCgpO1xuICAgICAgaWYgKGluaXRpYWxMZXZlbCA9PSBudWxsKSB7XG4gICAgICAgICAgaW5pdGlhbExldmVsID0gZGVmYXVsdExldmVsID09IG51bGwgPyBcIldBUk5cIiA6IGRlZmF1bHRMZXZlbDtcbiAgICAgIH1cbiAgICAgIHNlbGYuc2V0TGV2ZWwoaW5pdGlhbExldmVsLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKlxuICAgICAqIFRvcC1sZXZlbCBBUElcbiAgICAgKlxuICAgICAqL1xuXG4gICAgdmFyIGRlZmF1bHRMb2dnZXIgPSBuZXcgTG9nZ2VyKCk7XG5cbiAgICB2YXIgX2xvZ2dlcnNCeU5hbWUgPSB7fTtcbiAgICBkZWZhdWx0TG9nZ2VyLmdldExvZ2dlciA9IGZ1bmN0aW9uIGdldExvZ2dlcihuYW1lKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gXCJzdHJpbmdcIiB8fCBuYW1lID09PSBcIlwiKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIllvdSBtdXN0IHN1cHBseSBhIG5hbWUgd2hlbiBjcmVhdGluZyBhIGxvZ2dlci5cIik7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbG9nZ2VyID0gX2xvZ2dlcnNCeU5hbWVbbmFtZV07XG4gICAgICAgIGlmICghbG9nZ2VyKSB7XG4gICAgICAgICAgbG9nZ2VyID0gX2xvZ2dlcnNCeU5hbWVbbmFtZV0gPSBuZXcgTG9nZ2VyKFxuICAgICAgICAgICAgbmFtZSwgZGVmYXVsdExvZ2dlci5nZXRMZXZlbCgpLCBkZWZhdWx0TG9nZ2VyLm1ldGhvZEZhY3RvcnkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2dnZXI7XG4gICAgfTtcblxuICAgIC8vIEdyYWIgdGhlIGN1cnJlbnQgZ2xvYmFsIGxvZyB2YXJpYWJsZSBpbiBjYXNlIG9mIG92ZXJ3cml0ZVxuICAgIHZhciBfbG9nID0gKHR5cGVvZiB3aW5kb3cgIT09IHVuZGVmaW5lZFR5cGUpID8gd2luZG93LmxvZyA6IHVuZGVmaW5lZDtcbiAgICBkZWZhdWx0TG9nZ2VyLm5vQ29uZmxpY3QgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IHVuZGVmaW5lZFR5cGUgJiZcbiAgICAgICAgICAgICAgIHdpbmRvdy5sb2cgPT09IGRlZmF1bHRMb2dnZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2cgPSBfbG9nO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlZmF1bHRMb2dnZXI7XG4gICAgfTtcblxuICAgIGRlZmF1bHRMb2dnZXIuZ2V0TG9nZ2VycyA9IGZ1bmN0aW9uIGdldExvZ2dlcnMoKSB7XG4gICAgICAgIHJldHVybiBfbG9nZ2Vyc0J5TmFtZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlZmF1bHRMb2dnZXI7XG59KSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9sb2dsZXZlbC9saWIvbG9nbGV2ZWwuanNcbi8vIG1vZHVsZSBpZCA9IDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///7\n')},function(module,exports,__webpack_require__){eval("var store = __webpack_require__(79)('wks');\nvar uid = __webpack_require__(48);\nvar Symbol = __webpack_require__(4).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3drcy5qcz85MjQwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBzdG9yZSA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCd3a3MnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5TeW1ib2w7XG52YXIgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcblxudmFyICRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cbiAgICBVU0VfU1lNQk9MICYmIFN5bWJvbFtuYW1lXSB8fCAoVVNFX1NZTUJPTCA/IFN5bWJvbCA6IHVpZCkoJ1N5bWJvbC4nICsgbmFtZSkpO1xufTtcblxuJGV4cG9ydHMuc3RvcmUgPSBzdG9yZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fd2tzLmpzXG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(417), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvcHJvbWlzZS5qcz9mZmYxIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3Byb21pc2UuanNcbi8vIG1vZHVsZSBpZCA9IDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///9\n')},function(module,exports,__webpack_require__){eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(5)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcz82ZDRhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gMTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///10\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(3);\nvar IE8_DOM_DEFINE = __webpack_require__(148);\nvar toPrimitive = __webpack_require__(31);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(10) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZHAuanM/OTQzMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBkUCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIScpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZHAuanNcbi8vIG1vZHVsZSBpZCA9IDExXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///11\n")},function(module,exports,__webpack_require__){eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(33);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1sZW5ndGguanM/MDViYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///12\n")},function(module,exports){eval("var core = module.exports = { version: '2.5.3' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanM/MTVlMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi41LjMnIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanNcbi8vIG1vZHVsZSBpZCA9IDEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///13\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(46);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.divideURL = divideURL;\nexports.emptyObject = emptyObject;\nexports.secondsSinceEpoch = secondsSinceEpoch;\nexports.deepClone = deepClone;\nexports.removePathFromURL = removePathFromURL;\nexports.getUserURLFromEmail = getUserURLFromEmail;\nexports.getUserEmailFromURL = getUserEmailFromURL;\nexports.convertToUserURL = convertToUserURL;\nexports.isDataObjectURL = isDataObjectURL;\nexports.isLegacy = isLegacy;\nexports.isURL = isURL;\nexports.isUserURL = isUserURL;\nexports.isHypertyURL = isHypertyURL;\nexports.getConfigurationResources = getConfigurationResources;\nexports.buildURL = buildURL;\nexports.generateGUID = generateGUID;\nexports.getUserIdentityDomain = getUserIdentityDomain;\nexports.isBackendServiceURL = isBackendServiceURL;\nexports.divideEmail = divideEmail;\nexports.assign = assign;\nexports.splitObjectURL = splitObjectURL;\nexports.checkAttribute = checkAttribute;\nexports.parseAttributes = parseAttributes;\nexports.isEmpty = isEmpty;\nexports.chatkeysToStringCloner = chatkeysToStringCloner;\nexports.chatkeysToArrayCloner = chatkeysToArrayCloner;\nexports.parseMessageURL = parseMessageURL;\nexports.availableSpace = availableSpace;\nexports.encode = encode;\nexports.decode = decode;\nexports.decodeToUint8Array = decodeToUint8Array;\nexports.stringify = stringify;\nexports.parse = parse;\nexports.parseToUint8Array = parseToUint8Array;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n/**\r\n * Support module with some functions will be useful\r\n * @module utils\r\n */\n\n/**\r\n * @typedef divideURL\r\n * @type Object\r\n * @property {string} type The type of URL\r\n * @property {string} domain The domain of URL\r\n * @property {string} identity The identity of URL\r\n */\n\n/**\r\n * Divide an url in type, domain and identity\r\n * @param {URL.URL} url - url address\r\n * @return {divideURL} the result of divideURL\r\n */\nfunction divideURL(url) {\n\n function recurse(value) {\n var regex = /([a-zA-Z-]*)(:\\/\\/(?:\\.)?|:)([-a-zA-Z0-9@:%._+~#=]{2,256})([-a-zA-Z0-9@:%._+~#=/]*)/gi;\n var subst = '$1,$3,$4';\n var parts = value.replace(regex, subst).split(',');\n return parts;\n }\n\n var parts = recurse(url);\n\n // If the url has no scheme\n if (parts[0] === url && !parts[0].includes('@')) {\n\n var _result = {\n type: '',\n domain: url,\n identity: ''\n };\n\n console.warn('[DivideURL] DivideURL don\\'t support url without scheme. Please review your url address', url);\n\n return _result;\n }\n\n // check if the url has the scheme and includes an @\n if (parts[0] === url && parts[0].includes('@')) {\n var scheme = parts[0] === url ? 'smtp' : parts[0];\n parts = recurse(scheme + '://' + parts[0]);\n }\n\n // if the domain includes an @, divide it to domain and identity respectively\n if (parts[1].includes('@')) {\n parts[2] = parts[0] + '://' + parts[1];\n parts[1] = parts[1].substr(parts[1].indexOf('@') + 1);\n } /*else if (parts[2].includes('/')) {\r\n parts[2] = parts[2].substr(parts[2].lastIndexOf('/')+1);\r\n }*/\n\n var result = {\n type: parts[0],\n domain: parts[1],\n identity: parts[2]\n };\n\n return result;\n}\n\n/**\r\n * Check if an Object is empty\r\n * @param {Object} object Object to be checked\r\n * @return {Boolean} status of Object, empty or not (true|false);\r\n */\nfunction emptyObject(object) {\n return (0, _keys2.default)(object).length > 0 ? false : true;\n}\n\nfunction secondsSinceEpoch() {\n return Math.floor(Date.now() / 1000);\n}\n\n/**\r\n * Make a COPY of the original data\r\n * @param {Object} obj - object to be cloned\r\n * @return {Object}\r\n */\nfunction deepClone(obj) {\n //TODO: simple but inefficient JSON deep clone...\n if (obj) return JSON.parse((0, _stringify2.default)(obj));\n}\n\nfunction removePathFromURL(url) {\n var splitURL = url.split('/');\n return splitURL[0] + '//' + splitURL[2] + '/' + splitURL[3];\n}\n\n/**\r\n * Obtains the user URL that corresponds to a given email\r\n * @param {string} userEmail The user email\r\n * @return {URL.URL} userURL The user URL\r\n */\nfunction getUserURLFromEmail(userEmail) {\n var indexOfAt = userEmail.indexOf('@');\n return 'user://' + userEmail.substring(indexOfAt + 1, userEmail.length) + '/' + userEmail.substring(0, indexOfAt);\n}\n\n/**\r\n * Obtains the user email that corresponds to a given URL\r\n * @param {URL.URL} userURL The user URL\r\n * @return {string} userEmail The user email\r\n */\nfunction getUserEmailFromURL(userURL) {\n var url = divideURL(userURL);\n return url.identity.replace('/', '') + '@' + url.domain; // identity field has '/exampleID' instead of 'exampleID'\n}\n\n/**\r\n * Check if the user identifier is already in the URL format, if not, convert to URL format\r\n * @param {string} identifier user identifier\r\n * @return {string} userURL the user URL\r\n */\nfunction convertToUserURL(identifier) {\n\n // check if the identifier is already in the url format\n if (identifier.substring(0, 7) === 'user://') {\n var dividedURL = divideURL(identifier);\n\n //check if the url is well formated\n if (dividedURL.domain && dividedURL.identity) {\n return identifier;\n } else {\n throw 'userURL with wrong format';\n }\n\n //if not, convert the user email to URL format\n } else {\n return getUserURLFromEmail(identifier);\n }\n}\n\nfunction isDataObjectURL(url) {\n var schemasToIgnore = ['domain-idp', 'runtime', 'domain', 'hyperty'];\n var splitURL = url.split('://');\n var urlSchema = splitURL[0];\n\n return schemasToIgnore.indexOf(urlSchema) === -1;\n}\n\nfunction isLegacy(url) {\n if (url.split('@').length > 1) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction isURL(url) {\n return url.split('/').length >= 3;\n}\n\nfunction isUserURL(url) {\n return divideURL(url).type === 'user';\n}\n\nfunction isHypertyURL(url) {\n return divideURL(url).type === 'hyperty';\n}\n\n/**\r\n * get information relative each component configured on runtime configuration;\r\n * @param {object} configuration object with all configuration\r\n * @param {string} component string with the component to get the configuration, like, runtimeURLS, catalogueURLs, msgNodeURL, domainRegistryURL;\r\n * @param {string} resource type of resource to get, like, catalogue, runtimeUA, protocolstub, idpProxy\r\n * @return {object} return an object with all configurations;\r\n */\nfunction getConfigurationResources(configuration, component, resource) {\n var objectResource = configuration[component];\n var resourceType = objectResource[resource];\n\n return resourceType;\n}\n\n/**\r\n * Build a full url with the runtime configuration;\r\n * @param {object} configuration object with all configuration\r\n * @param {string} component string with the component to get the configuration, like, runtimeURLS, catalogueURLs, msgNodeURL, domainRegistryURL;\r\n * @param {string} resource type of resource to get, like, catalogue, runtimeUA, protocolstub, idpProxy\r\n * @param {string} type resource to get, like a hyperty name or protocolstub name;\r\n * @param {boolean} useFallback if true the function will check if have a fallback url;\r\n * @return {string} partial url to contact the resource;\r\n */\nfunction buildURL(configuration, component, resource, type) {\n var useFallback = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n var objectResource = configuration[component];\n var url = void 0;\n\n if (!objectResource.hasOwnProperty(resource)) {\n throw Error('The configuration ' + (0, _stringify2.default)(objectResource, '', 2) + ' don\\'t have the ' + resource + ' resource you are looking for');\n }\n\n var resourceType = objectResource[resource];\n\n if (type) {\n url = resourceType.prefix + configuration.domain + resourceType.suffix + type;\n if (resourceType.hasOwnProperty('fallback') && useFallback) {\n if (resourceType.fallback.indexOf('%domain%')) {\n url = resourceType.fallback.replace(/(%domain%)/g, configuration.domain) + type;\n } else {\n url = resourceType.fallback + type;\n }\n }\n } else {\n url = resourceType.prefix + configuration.domain + resourceType.suffix;\n }\n\n // console.log(url);\n\n return url;\n}\n\n/**\r\n * Generate a Global Unique ID\r\n *\r\n * @returns String;\r\n */\nfunction generateGUID() {\n\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n\nfunction getUserIdentityDomain(url) {\n var dividedURL = divideURL(url);\n var splitedDomain = dividedURL.domain.split('.');\n var splitedLength = splitedDomain.length;\n if (splitedLength == 1) {\n return splitedDomain[splitedLength - 1];\n }\n var domain = splitedDomain[splitedLength - 2] + '.' + splitedDomain[splitedLength - 1];\n return domain;\n}\n\n/**\r\n * Check if URL is from a backend service\r\n * @param {string} url URL to be processed\r\n * @return {boolean}\r\n */\n\nfunction isBackendServiceURL(url) {\n var dividedURL = divideURL(url);\n var splitedDomain = dividedURL.domain.split('.');\n var backendSchemes = ['domain', 'global', 'domain-idp']; // should be defined in the runtime configuration\n var backendSubDomains = ['registry', 'msg-node']; // should be defined in the runtime configuration\n var subDomain = void 0;\n\n if (splitedDomain.length > 1) {\n subDomain = splitedDomain.filter(function (item) {\n return backendSubDomains.indexOf(item) !== -1;\n })[0];\n }\n\n if (subDomain && backendSubDomains.indexOf(subDomain) !== -1) {\n return true;\n }\n\n if (dividedURL.type) {\n return backendSchemes.indexOf(dividedURL.type) !== -1;\n }\n\n return false;\n}\n\nfunction divideEmail(email) {\n var indexOfAt = email.indexOf('@');\n\n var result = {\n username: email.substring(0, indexOfAt),\n domain: email.substring(indexOfAt + 1, email.length)\n };\n\n return result;\n}\n\nfunction assign(obj, keyPath, value) {\n\n if (!obj) obj = {};\n if (typeof keyPath === 'string') keyPath = parseAttributes(keyPath);\n\n var lastKeyIndex = keyPath.length - 1;\n\n for (var i = 0; i < lastKeyIndex; ++i) {\n var key = keyPath[i];\n if (!(key in obj)) {\n obj[key] = {};\n }\n\n obj = obj[key];\n }\n\n obj[keyPath[lastKeyIndex]] = value;\n}\n\nfunction splitObjectURL(dataObjectURL) {\n console.info('[utils - splitObjectURL]: ', dataObjectURL);\n\n var splitedURL = dataObjectURL.split('/');\n var url = splitedURL[0] + '//' + splitedURL[2] + '/' + splitedURL[3];\n var resource = splitedURL[5];\n\n var result = {\n url: url,\n resource: resource\n };\n\n console.info('[utils - splitObjectURL]: ', result);\n\n return result;\n}\n\nfunction checkAttribute(path) {\n\n var regex = /((([a-zA-Z]+):\\/\\/([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})\\/[a-zA-Z0-9.]+@[a-zA-Z0-9]+(-)?[a-zA-Z0-9]+(\\.)?[a-zA-Z0-9]{2,10}?\\.[a-zA-Z]{2,10})(.+(?=.identity))?/gm;\n\n var list = [];\n var final = [];\n var test = path.match(regex);\n\n if (test == null) {\n final = path.split('.');\n } else {\n var m = void 0;\n while ((m = regex.exec(path)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (m.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n\n // The result can be accessed through the `m`-variable.\n m.forEach(function (match, groupIndex) {\n if (groupIndex === 0) {\n list.push(match);\n }\n });\n }\n var result = void 0;\n list.forEach(function (url) {\n\n result = path.replace(url, '*-*');\n final = result.split('.').map(function (item) {\n\n if (item === '*-*') {\n return url;\n }\n\n return item;\n });\n });\n }\n\n console.log('[RuntimeCore.Utils.checkAttribute]', final);\n return final;\n}\n\nfunction parseAttributes(path) {\n var regex = /([0-9a-zA-Z][-\\w]*):\\/\\//g;\n\n var string3 = 'identity';\n\n if (!path.includes('://')) {\n return path.split('.');\n } else {\n var string1 = path.split(regex)[0];\n\n var array1 = string1.split('.');\n\n var string2 = path.replace(string1, '');\n\n if (path.includes(string3)) {\n\n var array2 = string2.split(string3 + '.');\n\n console.log('array2 ' + array2);\n\n string2 = array2[0].slice('.', -1);\n\n array2 = array2[1].split('.');\n\n array1.push(string2, string3);\n\n array1 = array1.concat(array2);\n } else {\n array1.push(string2);\n }\n\n return array1.filter(Boolean);\n }\n}\n\nfunction isEmpty(obj) {\n for (var prop in obj) {\n\n if (obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n\n return (0, _stringify2.default)(obj) === (0, _stringify2.default)({});\n}\n\nfunction chatkeysToStringCloner(sessionKeys) {\n var dataObjectSessionKeysClone = {};\n var fields = (0, _keys2.default)(sessionKeys);\n if (fields) {\n try {\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n dataObjectSessionKeysClone[field] = {};\n dataObjectSessionKeysClone[field].sessionKey = sessionKeys[field].sessionKey.toString();\n dataObjectSessionKeysClone[field].isToEncrypt = sessionKeys[field].isToEncrypt;\n }\n } catch (err) {\n console.error('_chatkeysToStringCloner:err', err);\n }\n }\n return dataObjectSessionKeysClone;\n}\n\nfunction chatkeysToArrayCloner(sessionKeys) {\n var dataObjectSessionKeysClone = {};\n var fields = (0, _keys2.default)(sessionKeys);\n if (fields) {\n try {\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n dataObjectSessionKeysClone[field] = {};\n var arrayValues = JSON.parse('[' + sessionKeys[field].sessionKey + ']');\n dataObjectSessionKeysClone[field].sessionKey = new Uint8Array(arrayValues);\n dataObjectSessionKeysClone[field].isToEncrypt = sessionKeys[field].isToEncrypt;\n }\n } catch (err) {\n console.error('_chatkeysToArrayCloner:err', err);\n }\n }\n return dataObjectSessionKeysClone;\n}\n\nfunction parseMessageURL(URL) {\n var splitedToURL = URL.split('/');\n if (splitedToURL.length <= 6) {\n return splitedToURL[0] + '//' + splitedToURL[2] + '/' + splitedToURL[3];\n } else {\n return splitedToURL[0] + '//' + splitedToURL[2] + '/' + splitedToURL[3] + '/' + splitedToURL[4];\n }\n}\n\nfunction availableSpace(usage, quota) {\n var available = (usage / quota).toFixed(2);\n return {\n quota: quota,\n usage: usage,\n percent: Number(available)\n };\n}\n\n/**\r\n* Encodes a JS object to base 64 encode\r\n* @param {Object} value byteArray value\r\n* @return {string} encoded value\r\n*/\nfunction encode(value) {\n try {\n var stringValue = stringify(value);\n return btoa(stringValue);\n } catch (err) {\n console.error('[Utils.encode:err] ' + err);\n throw err;\n }\n}\n\n/**\r\n * Decode a base64 string to object\r\n * @param {string_b64} value value encoded in base 64\r\n * @return {Object} decodedValue\r\n */\nfunction decode(value) {\n try {\n return JSON.parse(atob(value));\n } catch (err) {\n console.log('[Utils.decode:err] ' + err);\n throw err;\n }\n}\n\n/**\r\n* Decode a base64 string to Uint8Array\r\n* @param {string_b64} value byteArray value\r\n* @return {Uint8Array} encoded value\r\n*/\nfunction decodeToUint8Array(value) {\n try {\n return new Uint8Array(decode(value));\n } catch (err) {\n console.error('[Utils.decodeToUint8Array:err] ' + err);\n throw err;\n }\n}\n\n/**\r\n* Converts a JS object to string\r\n* NOTE: Special conversion for Uint8Arrays\r\n* @param {Object} value byteArray value\r\n* @return {Uint8Array} encoded value\r\n*/\nfunction stringify(value) {\n try {\n var stringValue = void 0;\n if (value.constructor === Uint8Array) {\n stringValue = '[' + value.toString() + ']'; // the [] is for JSON.parse compatibility\n } else {\n stringValue = (0, _stringify2.default)(value);\n }\n return stringValue;\n } catch (err) {\n console.error('[Utils.stringify:err] ' + err);\n throw err;\n }\n}\n\n/**\r\n* Converts a stringified object to object\r\n* @param {String} value byteArray value\r\n* @return {Object} encoded value\r\n*/\nfunction parse(value) {\n try {\n return JSON.parse(value);\n } catch (err) {\n console.error('[Utils.parse:err]' + err);\n console.trace();\n console.error('That that cause the error:', value);\n throw err;\n }\n}\n\n/**\r\n* Converts a stringified object to object\r\n* @param {String} value byteArray value\r\n* @return {Uint8Array} encoded value\r\n*/\nfunction parseToUint8Array(value) {\n try {\n return new Uint8Array(parse(value));\n } catch (err) {\n console.error('[Utils.parseToUint8Array:err]' + err);\n throw err;\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL3V0aWxzL3V0aWxzLmpzP2JlNzMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcclxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcclxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxyXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxyXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcclxuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcclxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxyXG4qXHJcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcclxuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbipcclxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4qXHJcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbioqL1xyXG4vKipcclxuICogU3VwcG9ydCBtb2R1bGUgd2l0aCBzb21lIGZ1bmN0aW9ucyB3aWxsIGJlIHVzZWZ1bFxyXG4gKiBAbW9kdWxlIHV0aWxzXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEB0eXBlZGVmIGRpdmlkZVVSTFxyXG4gKiBAdHlwZSBPYmplY3RcclxuICogQHByb3BlcnR5IHtzdHJpbmd9IHR5cGUgVGhlIHR5cGUgb2YgVVJMXHJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkb21haW4gVGhlIGRvbWFpbiBvZiBVUkxcclxuICogQHByb3BlcnR5IHtzdHJpbmd9IGlkZW50aXR5IFRoZSBpZGVudGl0eSBvZiBVUkxcclxuICovXHJcblxyXG4vKipcclxuICogRGl2aWRlIGFuIHVybCBpbiB0eXBlLCBkb21haW4gYW5kIGlkZW50aXR5XHJcbiAqIEBwYXJhbSAge1VSTC5VUkx9IHVybCAtIHVybCBhZGRyZXNzXHJcbiAqIEByZXR1cm4ge2RpdmlkZVVSTH0gdGhlIHJlc3VsdCBvZiBkaXZpZGVVUkxcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkaXZpZGVVUkwodXJsKSB7XHJcblxyXG4gIGZ1bmN0aW9uIHJlY3Vyc2UodmFsdWUpIHtcclxuICAgIGNvbnN0IHJlZ2V4ID0gLyhbYS16QS1aLV0qKSg6XFwvXFwvKD86XFwuKT98OikoWy1hLXpBLVowLTlAOiUuXyt+Iz1dezIsMjU2fSkoWy1hLXpBLVowLTlAOiUuXyt+Iz0vXSopL2dpO1xyXG4gICAgY29uc3Qgc3Vic3QgPSAnJDEsJDMsJDQnO1xyXG4gICAgbGV0IHBhcnRzID0gdmFsdWUucmVwbGFjZShyZWdleCwgc3Vic3QpLnNwbGl0KCcsJyk7XHJcbiAgICByZXR1cm4gcGFydHM7XHJcbiAgfVxyXG5cclxuICBsZXQgcGFydHMgPSByZWN1cnNlKHVybCk7XHJcblxyXG4gIC8vIElmIHRoZSB1cmwgaGFzIG5vIHNjaGVtZVxyXG4gIGlmIChwYXJ0c1swXSA9PT0gdXJsICYmICFwYXJ0c1swXS5pbmNsdWRlcygnQCcpKSB7XHJcblxyXG4gICAgbGV0IHJlc3VsdCA9IHtcclxuICAgICAgdHlwZTogJycsXHJcbiAgICAgIGRvbWFpbjogdXJsLFxyXG4gICAgICBpZGVudGl0eTogJydcclxuICAgIH07XHJcblxyXG4gICAgY29uc29sZS53YXJuKCdbRGl2aWRlVVJMXSBEaXZpZGVVUkwgZG9uXFwndCBzdXBwb3J0IHVybCB3aXRob3V0IHNjaGVtZS4gUGxlYXNlIHJldmlldyB5b3VyIHVybCBhZGRyZXNzJywgdXJsKTtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8gY2hlY2sgaWYgdGhlIHVybCBoYXMgdGhlIHNjaGVtZSBhbmQgaW5jbHVkZXMgYW4gQFxyXG4gIGlmIChwYXJ0c1swXSA9PT0gdXJsICYmIHBhcnRzWzBdLmluY2x1ZGVzKCdAJykpIHtcclxuICAgIGxldCBzY2hlbWUgPSBwYXJ0c1swXSA9PT0gdXJsID8gJ3NtdHAnIDogcGFydHNbMF07XHJcbiAgICBwYXJ0cyA9IHJlY3Vyc2Uoc2NoZW1lICsgJzovLycgKyBwYXJ0c1swXSk7XHJcbiAgfVxyXG5cclxuICAvLyBpZiB0aGUgZG9tYWluIGluY2x1ZGVzIGFuIEAsIGRpdmlkZSBpdCB0byBkb21haW4gYW5kIGlkZW50aXR5IHJlc3BlY3RpdmVseVxyXG4gIGlmIChwYXJ0c1sxXS5pbmNsdWRlcygnQCcpKSB7XHJcbiAgICBwYXJ0c1syXSA9IHBhcnRzWzBdICsgJzovLycgKyBwYXJ0c1sxXTtcclxuICAgIHBhcnRzWzFdID0gcGFydHNbMV0uc3Vic3RyKHBhcnRzWzFdLmluZGV4T2YoJ0AnKSArIDEpO1xyXG4gIH0gXHQvKmVsc2UgaWYgKHBhcnRzWzJdLmluY2x1ZGVzKCcvJykpIHtcclxuICAgIHBhcnRzWzJdID0gcGFydHNbMl0uc3Vic3RyKHBhcnRzWzJdLmxhc3RJbmRleE9mKCcvJykrMSk7XHJcbiAgfSovXHJcblxyXG4gIGxldCByZXN1bHQgPSB7XHJcbiAgICB0eXBlOiBwYXJ0c1swXSxcclxuICAgIGRvbWFpbjogcGFydHNbMV0sXHJcbiAgICBpZGVudGl0eTogcGFydHNbMl1cclxuICB9O1xyXG5cclxuICByZXR1cm4gcmVzdWx0O1xyXG5cclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrIGlmIGFuIE9iamVjdCBpcyBlbXB0eVxyXG4gKiBAcGFyYW0gIHtPYmplY3R9IG9iamVjdCBPYmplY3QgdG8gYmUgY2hlY2tlZFxyXG4gKiBAcmV0dXJuIHtCb29sZWFufSAgICAgICBzdGF0dXMgb2YgT2JqZWN0LCBlbXB0eSBvciBub3QgKHRydWV8ZmFsc2UpO1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5T2JqZWN0KG9iamVjdCkge1xyXG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCA+IDAgPyBmYWxzZSA6IHRydWU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRzU2luY2VFcG9jaCgpIHtcclxuICByZXR1cm4gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogTWFrZSBhIENPUFkgb2YgdGhlIG9yaWdpbmFsIGRhdGFcclxuICogQHBhcmFtICB7T2JqZWN0fSAgb2JqIC0gb2JqZWN0IHRvIGJlIGNsb25lZFxyXG4gKiBAcmV0dXJuIHtPYmplY3R9XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVlcENsb25lKG9iaikge1xyXG4gIC8vVE9ETzogc2ltcGxlIGJ1dCBpbmVmZmljaWVudCBKU09OIGRlZXAgY2xvbmUuLi5cclxuICBpZiAob2JqKSByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVBhdGhGcm9tVVJMKHVybCkge1xyXG4gIGxldCBzcGxpdFVSTCA9IHVybC5zcGxpdCgnLycpO1xyXG4gIHJldHVybiBzcGxpdFVSTFswXSArICcvLycgKyBzcGxpdFVSTFsyXSArICcvJyArIHNwbGl0VVJMWzNdO1xyXG59XHJcblxyXG4vKipcclxuICogT2J0YWlucyB0aGUgdXNlciBVUkwgdGhhdCBjb3JyZXNwb25kcyB0byBhIGdpdmVuIGVtYWlsXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gdXNlckVtYWlsIFRoZSB1c2VyIGVtYWlsXHJcbiAqIEByZXR1cm4ge1VSTC5VUkx9IHVzZXJVUkwgVGhlIHVzZXIgVVJMXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlclVSTEZyb21FbWFpbCh1c2VyRW1haWwpIHtcclxuICBsZXQgaW5kZXhPZkF0ID0gdXNlckVtYWlsLmluZGV4T2YoJ0AnKTtcclxuICByZXR1cm4gJ3VzZXI6Ly8nICsgdXNlckVtYWlsLnN1YnN0cmluZyhpbmRleE9mQXQgKyAxLCB1c2VyRW1haWwubGVuZ3RoKSArICcvJyArIHVzZXJFbWFpbC5zdWJzdHJpbmcoMCwgaW5kZXhPZkF0KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIE9idGFpbnMgdGhlIHVzZXIgZW1haWwgdGhhdCBjb3JyZXNwb25kcyB0byBhIGdpdmVuIFVSTFxyXG4gKiBAcGFyYW0gIHtVUkwuVVJMfSB1c2VyVVJMIFRoZSB1c2VyIFVSTFxyXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHVzZXJFbWFpbCBUaGUgdXNlciBlbWFpbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFVzZXJFbWFpbEZyb21VUkwodXNlclVSTCkge1xyXG4gIGxldCB1cmwgPSBkaXZpZGVVUkwodXNlclVSTCk7XHJcbiAgcmV0dXJuIHVybC5pZGVudGl0eS5yZXBsYWNlKCcvJywgJycpICsgJ0AnICsgdXJsLmRvbWFpbjsgLy8gaWRlbnRpdHkgZmllbGQgaGFzICcvZXhhbXBsZUlEJyBpbnN0ZWFkIG9mICdleGFtcGxlSUQnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiB0aGUgdXNlciBpZGVudGlmaWVyIGlzIGFscmVhZHkgaW4gdGhlIFVSTCBmb3JtYXQsIGlmIG5vdCwgY29udmVydCB0byBVUkwgZm9ybWF0XHJcbiAqIEBwYXJhbSAge3N0cmluZ30gICBpZGVudGlmaWVyICB1c2VyIGlkZW50aWZpZXJcclxuICogQHJldHVybiB7c3RyaW5nfSAgIHVzZXJVUkwgICAgdGhlIHVzZXIgVVJMXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvVXNlclVSTChpZGVudGlmaWVyKSB7XHJcblxyXG4gIC8vIGNoZWNrIGlmIHRoZSBpZGVudGlmaWVyIGlzIGFscmVhZHkgaW4gdGhlIHVybCBmb3JtYXRcclxuICBpZiAoaWRlbnRpZmllci5zdWJzdHJpbmcoMCwgNykgPT09ICd1c2VyOi8vJykge1xyXG4gICAgbGV0IGRpdmlkZWRVUkwgPSBkaXZpZGVVUkwoaWRlbnRpZmllcik7XHJcblxyXG4gICAgLy9jaGVjayBpZiB0aGUgdXJsIGlzIHdlbGwgZm9ybWF0ZWRcclxuICAgIGlmIChkaXZpZGVkVVJMLmRvbWFpbiAmJiBkaXZpZGVkVVJMLmlkZW50aXR5KSB7XHJcbiAgICAgIHJldHVybiBpZGVudGlmaWVyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgJ3VzZXJVUkwgd2l0aCB3cm9uZyBmb3JtYXQnO1xyXG4gICAgfVxyXG5cclxuICAvL2lmIG5vdCwgY29udmVydCB0aGUgdXNlciBlbWFpbCB0byBVUkwgZm9ybWF0XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBnZXRVc2VyVVJMRnJvbUVtYWlsKGlkZW50aWZpZXIpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0YU9iamVjdFVSTCh1cmwpIHtcclxuICBsZXQgc2NoZW1hc1RvSWdub3JlID0gWydkb21haW4taWRwJywgJ3J1bnRpbWUnLCAnZG9tYWluJywgJ2h5cGVydHknXTtcclxuICBsZXQgc3BsaXRVUkwgPSAodXJsKS5zcGxpdCgnOi8vJyk7XHJcbiAgbGV0IHVybFNjaGVtYSA9IHNwbGl0VVJMWzBdO1xyXG5cclxuICByZXR1cm4gc2NoZW1hc1RvSWdub3JlLmluZGV4T2YodXJsU2NoZW1hKSA9PT0gLTE7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0xlZ2FjeSh1cmwpIHtcclxuICBpZiAodXJsLnNwbGl0KCdAJykubGVuZ3RoID4gMSkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1VSTCh1cmwpIHtcclxuICByZXR1cm4gKHVybCkuc3BsaXQoJy8nKS5sZW5ndGggPj0gMztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzVXNlclVSTCh1cmwpIHtcclxuICByZXR1cm4gZGl2aWRlVVJMKHVybCkudHlwZSA9PT0gJ3VzZXInO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNIeXBlcnR5VVJMKHVybCkge1xyXG4gIHJldHVybiBkaXZpZGVVUkwodXJsKS50eXBlID09PSAnaHlwZXJ0eSc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBnZXQgaW5mb3JtYXRpb24gcmVsYXRpdmUgZWFjaCBjb21wb25lbnQgY29uZmlndXJlZCBvbiBydW50aW1lIGNvbmZpZ3VyYXRpb247XHJcbiAqIEBwYXJhbSAge29iamVjdH0gY29uZmlndXJhdGlvbiBvYmplY3Qgd2l0aCBhbGwgY29uZmlndXJhdGlvblxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGNvbXBvbmVudCAgICAgc3RyaW5nIHdpdGggdGhlIGNvbXBvbmVudCB0byBnZXQgdGhlIGNvbmZpZ3VyYXRpb24sIGxpa2UsIHJ1bnRpbWVVUkxTLCBjYXRhbG9ndWVVUkxzLCBtc2dOb2RlVVJMLCBkb21haW5SZWdpc3RyeVVSTDtcclxuICogQHBhcmFtICB7c3RyaW5nfSByZXNvdXJjZSAgICAgIHR5cGUgb2YgcmVzb3VyY2UgdG8gZ2V0LCBsaWtlLCBjYXRhbG9ndWUsIHJ1bnRpbWVVQSwgcHJvdG9jb2xzdHViLCBpZHBQcm94eVxyXG4gKiBAcmV0dXJuIHtvYmplY3R9ICAgICAgICAgICAgICAgcmV0dXJuIGFuIG9iamVjdCB3aXRoIGFsbCBjb25maWd1cmF0aW9ucztcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWd1cmF0aW9uUmVzb3VyY2VzKGNvbmZpZ3VyYXRpb24sIGNvbXBvbmVudCwgcmVzb3VyY2UpIHtcclxuICBsZXQgb2JqZWN0UmVzb3VyY2UgPSBjb25maWd1cmF0aW9uW2NvbXBvbmVudF07XHJcbiAgbGV0IHJlc291cmNlVHlwZSA9IG9iamVjdFJlc291cmNlW3Jlc291cmNlXTtcclxuXHJcbiAgcmV0dXJuIHJlc291cmNlVHlwZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEJ1aWxkIGEgZnVsbCB1cmwgd2l0aCB0aGUgcnVudGltZSBjb25maWd1cmF0aW9uO1xyXG4gKiBAcGFyYW0gIHtvYmplY3R9IGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggYWxsIGNvbmZpZ3VyYXRpb25cclxuICogQHBhcmFtICB7c3RyaW5nfSBjb21wb25lbnQgICAgIHN0cmluZyB3aXRoIHRoZSBjb21wb25lbnQgdG8gZ2V0IHRoZSBjb25maWd1cmF0aW9uLCBsaWtlLCBydW50aW1lVVJMUywgY2F0YWxvZ3VlVVJMcywgbXNnTm9kZVVSTCwgZG9tYWluUmVnaXN0cnlVUkw7XHJcbiAqIEBwYXJhbSAge3N0cmluZ30gcmVzb3VyY2UgICAgICB0eXBlIG9mIHJlc291cmNlIHRvIGdldCwgbGlrZSwgY2F0YWxvZ3VlLCBydW50aW1lVUEsIHByb3RvY29sc3R1YiwgaWRwUHJveHlcclxuICogQHBhcmFtICB7c3RyaW5nfSB0eXBlICAgICAgICAgIHJlc291cmNlIHRvIGdldCwgbGlrZSBhIGh5cGVydHkgbmFtZSBvciBwcm90b2NvbHN0dWIgbmFtZTtcclxuICogQHBhcmFtICB7Ym9vbGVhbn0gdXNlRmFsbGJhY2sgIGlmIHRydWUgdGhlIGZ1bmN0aW9uIHdpbGwgY2hlY2sgaWYgaGF2ZSBhIGZhbGxiYWNrIHVybDtcclxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgICAgIHBhcnRpYWwgdXJsIHRvIGNvbnRhY3QgdGhlIHJlc291cmNlO1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVVJMKGNvbmZpZ3VyYXRpb24sIGNvbXBvbmVudCwgcmVzb3VyY2UsIHR5cGUsIHVzZUZhbGxiYWNrID0gZmFsc2UpIHtcclxuICBsZXQgb2JqZWN0UmVzb3VyY2UgPSBjb25maWd1cmF0aW9uW2NvbXBvbmVudF07XHJcbiAgbGV0IHVybDtcclxuXHJcbiAgaWYgKCFvYmplY3RSZXNvdXJjZS5oYXNPd25Qcm9wZXJ0eShyZXNvdXJjZSkpIHtcclxuICAgIHRocm93IEVycm9yKCdUaGUgY29uZmlndXJhdGlvbiAnICsgSlNPTi5zdHJpbmdpZnkob2JqZWN0UmVzb3VyY2UsICcnLCAyKSArICcgZG9uXFwndCBoYXZlIHRoZSAnICsgcmVzb3VyY2UgKyAnIHJlc291cmNlIHlvdSBhcmUgbG9va2luZyBmb3InKTtcclxuICB9XHJcblxyXG4gIGxldCByZXNvdXJjZVR5cGUgPSBvYmplY3RSZXNvdXJjZVtyZXNvdXJjZV07XHJcblxyXG4gIGlmICh0eXBlKSB7XHJcbiAgICB1cmwgPSByZXNvdXJjZVR5cGUucHJlZml4ICsgY29uZmlndXJhdGlvbi5kb21haW4gKyByZXNvdXJjZVR5cGUuc3VmZml4ICsgdHlwZTtcclxuICAgIGlmIChyZXNvdXJjZVR5cGUuaGFzT3duUHJvcGVydHkoJ2ZhbGxiYWNrJykgJiYgdXNlRmFsbGJhY2spIHtcclxuICAgICAgaWYgKHJlc291cmNlVHlwZS5mYWxsYmFjay5pbmRleE9mKCclZG9tYWluJScpKSB7XHJcbiAgICAgICAgdXJsID0gcmVzb3VyY2VUeXBlLmZhbGxiYWNrLnJlcGxhY2UoLyglZG9tYWluJSkvZywgY29uZmlndXJhdGlvbi5kb21haW4pICsgdHlwZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1cmwgPSByZXNvdXJjZVR5cGUuZmFsbGJhY2sgKyB0eXBlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIHVybCA9IHJlc291cmNlVHlwZS5wcmVmaXggKyBjb25maWd1cmF0aW9uLmRvbWFpbiArIHJlc291cmNlVHlwZS5zdWZmaXg7XHJcbiAgfVxyXG5cclxuICAvLyBjb25zb2xlLmxvZyh1cmwpO1xyXG5cclxuICByZXR1cm4gdXJsO1xyXG59XHJcblxyXG4vKipcclxuICogR2VuZXJhdGUgYSBHbG9iYWwgVW5pcXVlIElEXHJcbiAqXHJcbiAqIEByZXR1cm5zIFN0cmluZztcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUdVSUQoKSB7XHJcblxyXG4gIGZ1bmN0aW9uIHM0KCkge1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoKDEgKyBNYXRoLnJhbmRvbSgpKSAqIDB4MTAwMDApXHJcbiAgICAgIC50b1N0cmluZygxNilcclxuICAgICAgLnN1YnN0cmluZygxKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBzNCgpICsgczQoKSArICctJyArIHM0KCkgKyAnLScgKyBzNCgpICsgJy0nICsgczQoKSArICctJyArIHM0KCkgKyBzNCgpICsgczQoKTtcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRVc2VySWRlbnRpdHlEb21haW4odXJsKSB7XHJcbiAgbGV0IGRpdmlkZWRVUkwgPSBkaXZpZGVVUkwodXJsKTtcclxuICBsZXQgc3BsaXRlZERvbWFpbiA9IGRpdmlkZWRVUkwuZG9tYWluLnNwbGl0KCcuJyk7XHJcbiAgbGV0IHNwbGl0ZWRMZW5ndGggPSBzcGxpdGVkRG9tYWluLmxlbmd0aDtcclxuICBpZiAoc3BsaXRlZExlbmd0aCA9PSAxKSB7XHJcbiAgICByZXR1cm4gc3BsaXRlZERvbWFpbltzcGxpdGVkTGVuZ3RoIC0gMV07XHJcbiAgfVxyXG4gIGxldCBkb21haW4gPSBzcGxpdGVkRG9tYWluW3NwbGl0ZWRMZW5ndGggLSAyXSArICcuJyArIHNwbGl0ZWREb21haW5bc3BsaXRlZExlbmd0aCAtIDFdO1xyXG4gIHJldHVybiBkb21haW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiBVUkwgaXMgZnJvbSBhIGJhY2tlbmQgc2VydmljZVxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHVybCAgICAgVVJMIHRvIGJlIHByb2Nlc3NlZFxyXG4gKiBAcmV0dXJuIHtib29sZWFufVxyXG4gKi9cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0JhY2tlbmRTZXJ2aWNlVVJMKHVybCkge1xyXG4gIGxldCBkaXZpZGVkVVJMID0gZGl2aWRlVVJMKHVybCk7XHJcbiAgbGV0IHNwbGl0ZWREb21haW4gPSBkaXZpZGVkVVJMLmRvbWFpbi5zcGxpdCgnLicpO1xyXG4gIGxldCBiYWNrZW5kU2NoZW1lcyA9IFsnZG9tYWluJywgJ2dsb2JhbCcsICdkb21haW4taWRwJ107IC8vIHNob3VsZCBiZSBkZWZpbmVkIGluIHRoZSBydW50aW1lIGNvbmZpZ3VyYXRpb25cclxuICBsZXQgYmFja2VuZFN1YkRvbWFpbnMgPSBbJ3JlZ2lzdHJ5JywgJ21zZy1ub2RlJ107IC8vIHNob3VsZCBiZSBkZWZpbmVkIGluIHRoZSBydW50aW1lIGNvbmZpZ3VyYXRpb25cclxuICBsZXQgc3ViRG9tYWluO1xyXG5cclxuICBpZiAoc3BsaXRlZERvbWFpbi5sZW5ndGggPiAxKSB7XHJcbiAgICBzdWJEb21haW4gPSBzcGxpdGVkRG9tYWluLmZpbHRlcihpdGVtID0+IGJhY2tlbmRTdWJEb21haW5zLmluZGV4T2YoaXRlbSkgIT09IC0xKVswXTtcclxuICB9XHJcblxyXG4gIGlmIChzdWJEb21haW4gJiYgYmFja2VuZFN1YkRvbWFpbnMuaW5kZXhPZihzdWJEb21haW4pICE9PSAtMSkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBpZiAoZGl2aWRlZFVSTC50eXBlKSB7XHJcbiAgICByZXR1cm4gKGJhY2tlbmRTY2hlbWVzLmluZGV4T2YoZGl2aWRlZFVSTC50eXBlKSAhPT0gLTEpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZGl2aWRlRW1haWwoZW1haWwpIHtcclxuICBsZXQgaW5kZXhPZkF0ID0gZW1haWwuaW5kZXhPZignQCcpO1xyXG5cclxuICBsZXQgcmVzdWx0ID0ge1xyXG4gICAgdXNlcm5hbWU6IGVtYWlsLnN1YnN0cmluZygwLCBpbmRleE9mQXQpLFxyXG4gICAgZG9tYWluOiBlbWFpbC5zdWJzdHJpbmcoaW5kZXhPZkF0ICsgMSwgZW1haWwubGVuZ3RoKVxyXG4gIH07XHJcblxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduKG9iaiwga2V5UGF0aCwgdmFsdWUpIHtcclxuXHJcbiAgaWYgKCFvYmopIG9iaiA9IHt9O1xyXG4gIGlmICh0eXBlb2Yoa2V5UGF0aCkgPT09ICdzdHJpbmcnKSBrZXlQYXRoID0gcGFyc2VBdHRyaWJ1dGVzKGtleVBhdGgpO1xyXG5cclxuICBsZXQgbGFzdEtleUluZGV4ID0ga2V5UGF0aC5sZW5ndGggLSAxO1xyXG5cclxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RLZXlJbmRleDsgKytpKSB7XHJcbiAgICBsZXQga2V5ID0ga2V5UGF0aFtpXTtcclxuICAgIGlmICghKGtleSBpbiBvYmopKSB7XHJcbiAgICAgIG9ialtrZXldID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgb2JqID0gb2JqW2tleV07XHJcblxyXG4gIH1cclxuXHJcbiAgb2JqW2tleVBhdGhbbGFzdEtleUluZGV4XV0gPSB2YWx1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0T2JqZWN0VVJMKGRhdGFPYmplY3RVUkwpIHtcclxuICBjb25zb2xlLmluZm8oJ1t1dGlscyAtIHNwbGl0T2JqZWN0VVJMXTogJywgZGF0YU9iamVjdFVSTCk7XHJcblxyXG4gIGxldCBzcGxpdGVkVVJMID0gZGF0YU9iamVjdFVSTC5zcGxpdCgnLycpO1xyXG4gIGxldCB1cmwgPSBzcGxpdGVkVVJMWzBdICsgJy8vJyArIHNwbGl0ZWRVUkxbMl0gKyAnLycgKyBzcGxpdGVkVVJMWzNdO1xyXG4gIGxldCByZXNvdXJjZSA9IHNwbGl0ZWRVUkxbNV07XHJcblxyXG4gIGxldCByZXN1bHQgPSB7XHJcbiAgICB1cmw6IHVybCxcclxuICAgIHJlc291cmNlOiByZXNvdXJjZVxyXG4gIH07XHJcblxyXG4gIGNvbnNvbGUuaW5mbygnW3V0aWxzIC0gc3BsaXRPYmplY3RVUkxdOiAnLCByZXN1bHQpO1xyXG5cclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tBdHRyaWJ1dGUocGF0aCkge1xyXG5cclxuICBsZXQgcmVnZXggPSAvKCgoW2EtekEtWl0rKTpcXC9cXC8oWzAtOWEtekEtWl1bLVxcd10qWzAtOWEtekEtWl1cXC4pK1thLXpBLVpdezIsOX0pXFwvW2EtekEtWjAtOS5dK0BbYS16QS1aMC05XSsoLSk/W2EtekEtWjAtOV0rKFxcLik/W2EtekEtWjAtOV17MiwxMH0/XFwuW2EtekEtWl17MiwxMH0pKC4rKD89LmlkZW50aXR5KSk/L2dtO1xyXG5cclxuICBsZXQgbGlzdCA9IFtdO1xyXG4gIGxldCBmaW5hbCA9IFtdO1xyXG4gIGxldCB0ZXN0ID0gcGF0aC5tYXRjaChyZWdleCk7XHJcblxyXG4gIGlmICh0ZXN0ID09IG51bGwpIHtcclxuICAgIGZpbmFsID0gcGF0aC5zcGxpdCgnLicpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBsZXQgbTtcclxuICAgIHdoaWxlICgobSA9IHJlZ2V4LmV4ZWMocGF0aCkpICE9PSBudWxsKSB7XHJcbiAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGluZmluaXRlIGxvb3BzIHdpdGggemVyby13aWR0aCBtYXRjaGVzXHJcbiAgICAgIGlmIChtLmluZGV4ID09PSByZWdleC5sYXN0SW5kZXgpIHtcclxuICAgICAgICByZWdleC5sYXN0SW5kZXgrKztcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gVGhlIHJlc3VsdCBjYW4gYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYG1gLXZhcmlhYmxlLlxyXG4gICAgICBtLmZvckVhY2goKG1hdGNoLCBncm91cEluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKGdyb3VwSW5kZXggPT09IDApIHtcclxuICAgICAgICAgIGxpc3QucHVzaChtYXRjaCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGxldCByZXN1bHQ7XHJcbiAgICBsaXN0LmZvckVhY2goKHVybCkgPT4ge1xyXG5cclxuICAgICAgcmVzdWx0ID0gcGF0aC5yZXBsYWNlKHVybCwgJyotKicpO1xyXG4gICAgICBmaW5hbCA9IHJlc3VsdC5zcGxpdCgnLicpLm1hcCgoaXRlbSkgPT4ge1xyXG5cclxuICAgICAgICBpZiAoaXRlbSA9PT0gJyotKicpIHsgcmV0dXJuIHVybDsgfVxyXG5cclxuICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNvbnNvbGUubG9nKCdbUnVudGltZUNvcmUuVXRpbHMuY2hlY2tBdHRyaWJ1dGVdJywgZmluYWwpO1xyXG4gIHJldHVybiBmaW5hbDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQXR0cmlidXRlcyhwYXRoKSB7XHJcbiAgbGV0IHJlZ2V4ID0gLyhbMC05YS16QS1aXVstXFx3XSopOlxcL1xcLy9nO1xyXG5cclxuICBsZXQgc3RyaW5nMyA9ICdpZGVudGl0eSc7XHJcblxyXG4gIGlmICghcGF0aC5pbmNsdWRlcygnOi8vJykpIHtcclxuICAgIHJldHVybiAocGF0aC5zcGxpdCgnLicpKTtcclxuICB9IGVsc2Uge1xyXG4gICAgbGV0IHN0cmluZzEgPSBwYXRoLnNwbGl0KHJlZ2V4KVswXTtcclxuXHJcbiAgICBsZXQgYXJyYXkxID0gc3RyaW5nMS5zcGxpdCgnLicpO1xyXG5cclxuICAgIGxldCBzdHJpbmcyID0gcGF0aC5yZXBsYWNlKHN0cmluZzEsICcnKTtcclxuXHJcbiAgICBpZiAocGF0aC5pbmNsdWRlcyhzdHJpbmczKSkge1xyXG5cclxuICAgICAgbGV0IGFycmF5MiA9IHN0cmluZzIuc3BsaXQoc3RyaW5nMyArICcuJyk7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZygnYXJyYXkyICcgKyBhcnJheTIpO1xyXG5cclxuICAgICAgc3RyaW5nMiA9IGFycmF5MlswXS5zbGljZSgnLicsIC0xKTtcclxuXHJcbiAgICAgIGFycmF5MiA9IGFycmF5MlsxXS5zcGxpdCgnLicpO1xyXG5cclxuICAgICAgYXJyYXkxLnB1c2goc3RyaW5nMiwgc3RyaW5nMyk7XHJcblxyXG4gICAgICBhcnJheTEgPSBhcnJheTEuY29uY2F0KGFycmF5Mik7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXJyYXkxLnB1c2goc3RyaW5nMik7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoYXJyYXkxLmZpbHRlcihCb29sZWFuKSk7XHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0VtcHR5KG9iaikge1xyXG4gIGZvciAodmFyIHByb3AgaW4gb2JqKSB7XHJcblxyXG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaikgPT09IEpTT04uc3RyaW5naWZ5KHt9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNoYXRrZXlzVG9TdHJpbmdDbG9uZXIoc2Vzc2lvbktleXMpIHtcclxuICBsZXQgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmUgPSB7fTtcclxuICBsZXQgZmllbGRzID0gT2JqZWN0LmtleXMoc2Vzc2lvbktleXMpO1xyXG4gIGlmIChmaWVsZHMpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgIGZpZWxkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBmaWVsZCA9IGZpZWxkc1tpXTtcclxuICAgICAgICBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZVtmaWVsZF0gPSB7fTtcclxuICAgICAgICBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZVtmaWVsZF0uc2Vzc2lvbktleSA9IHNlc3Npb25LZXlzW2ZpZWxkXS5zZXNzaW9uS2V5LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmVbZmllbGRdLmlzVG9FbmNyeXB0ID0gc2Vzc2lvbktleXNbZmllbGRdLmlzVG9FbmNyeXB0O1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignX2NoYXRrZXlzVG9TdHJpbmdDbG9uZXI6ZXJyJywgZXJyKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2hhdGtleXNUb0FycmF5Q2xvbmVyKHNlc3Npb25LZXlzKSB7XHJcbiAgbGV0IGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lID0ge307XHJcbiAgbGV0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHNlc3Npb25LZXlzKTtcclxuICBpZiAoZmllbGRzKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICBmaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgZmllbGQgPSBmaWVsZHNbaV07XHJcbiAgICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmVbZmllbGRdID0ge307XHJcbiAgICAgICAgbGV0IGFycmF5VmFsdWVzID0gSlNPTi5wYXJzZSgnWycgKyBzZXNzaW9uS2V5c1tmaWVsZF0uc2Vzc2lvbktleSArICddJyk7XHJcbiAgICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmVbZmllbGRdLnNlc3Npb25LZXkgPSBuZXcgVWludDhBcnJheShhcnJheVZhbHVlcyk7XHJcbiAgICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmVbZmllbGRdLmlzVG9FbmNyeXB0ID0gc2Vzc2lvbktleXNbZmllbGRdLmlzVG9FbmNyeXB0O1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignX2NoYXRrZXlzVG9BcnJheUNsb25lcjplcnInLCBlcnIpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU1lc3NhZ2VVUkwoVVJMKSB7XHJcbiAgbGV0IHNwbGl0ZWRUb1VSTCA9IFVSTC5zcGxpdCgnLycpO1xyXG4gIGlmIChzcGxpdGVkVG9VUkwubGVuZ3RoIDw9IDYpIHtcclxuICAgIHJldHVybiBzcGxpdGVkVG9VUkxbMF0gKyAnLy8nICsgc3BsaXRlZFRvVVJMWzJdICsgJy8nICsgc3BsaXRlZFRvVVJMWzNdO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gc3BsaXRlZFRvVVJMWzBdICsgJy8vJyArIHNwbGl0ZWRUb1VSTFsyXSArICcvJyArIHNwbGl0ZWRUb1VSTFszXSArICcvJyArIHNwbGl0ZWRUb1VSTFs0XTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhdmFpbGFibGVTcGFjZSh1c2FnZSwgcXVvdGEpIHtcclxuICBjb25zdCBhdmFpbGFibGUgPSAodXNhZ2UgLyBxdW90YSkudG9GaXhlZCgyKTtcclxuICByZXR1cm4ge1xyXG4gICAgcXVvdGE6IHF1b3RhLFxyXG4gICAgdXNhZ2U6IHVzYWdlLFxyXG4gICAgcGVyY2VudDogTnVtYmVyKGF2YWlsYWJsZSlcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuKiBFbmNvZGVzIGEgSlMgb2JqZWN0IHRvIGJhc2UgNjQgZW5jb2RlXHJcbiogQHBhcmFtICAge09iamVjdH0gICAgdmFsdWUgICAgYnl0ZUFycmF5IHZhbHVlXHJcbiogQHJldHVybiAge3N0cmluZ30gICBlbmNvZGVkIHZhbHVlXHJcbiovXHJcbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGUodmFsdWUpIHtcclxuICB0cnkge1xyXG4gICAgbGV0IHN0cmluZ1ZhbHVlID0gc3RyaW5naWZ5KHZhbHVlKTtcclxuICAgIHJldHVybiBidG9hKHN0cmluZ1ZhbHVlKTtcclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoJ1tVdGlscy5lbmNvZGU6ZXJyXSAnICsgZXJyKTtcclxuICAgIHRocm93IGVycjtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gICogRGVjb2RlIGEgYmFzZTY0IHN0cmluZyB0byBvYmplY3RcclxuICAqIEBwYXJhbSAgIHtzdHJpbmdfYjY0fSAgICB2YWx1ZSAgICB2YWx1ZSBlbmNvZGVkIGluIGJhc2UgNjRcclxuICAqIEByZXR1cm4gIHtPYmplY3R9IGRlY29kZWRWYWx1ZVxyXG4gICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGUodmFsdWUpIHtcclxuICB0cnkge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXRvYih2YWx1ZSkpO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgY29uc29sZS5sb2coJ1tVdGlscy5kZWNvZGU6ZXJyXSAnICsgZXJyKTtcclxuICAgIHRocm93IGVycjtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4qIERlY29kZSBhIGJhc2U2NCBzdHJpbmcgdG8gVWludDhBcnJheVxyXG4qIEBwYXJhbSAgIHtzdHJpbmdfYjY0fSAgICB2YWx1ZSAgICBieXRlQXJyYXkgdmFsdWVcclxuKiBAcmV0dXJuICB7VWludDhBcnJheX0gICBlbmNvZGVkIHZhbHVlXHJcbiovXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVUb1VpbnQ4QXJyYXkodmFsdWUpIHtcclxuICB0cnkge1xyXG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGRlY29kZSh2YWx1ZSkpO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgY29uc29sZS5lcnJvcignW1V0aWxzLmRlY29kZVRvVWludDhBcnJheTplcnJdICcgKyBlcnIpO1xyXG4gICAgdGhyb3cgZXJyO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiogQ29udmVydHMgYSBKUyBvYmplY3QgdG8gc3RyaW5nXHJcbiogTk9URTogU3BlY2lhbCBjb252ZXJzaW9uIGZvciBVaW50OEFycmF5c1xyXG4qIEBwYXJhbSAgIHtPYmplY3R9ICAgIHZhbHVlICAgIGJ5dGVBcnJheSB2YWx1ZVxyXG4qIEByZXR1cm4gIHtVaW50OEFycmF5fSAgIGVuY29kZWQgdmFsdWVcclxuKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeSh2YWx1ZSkge1xyXG4gIHRyeSB7XHJcbiAgICBsZXQgc3RyaW5nVmFsdWU7XHJcbiAgICBpZiAodmFsdWUuY29uc3RydWN0b3IgPT09IFVpbnQ4QXJyYXkpIHtcclxuICAgICAgc3RyaW5nVmFsdWUgPSAnWycgKyB2YWx1ZS50b1N0cmluZygpICsgJ10nOyAvLyB0aGUgW10gaXMgZm9yIEpTT04ucGFyc2UgY29tcGF0aWJpbGl0eVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3RyaW5nVmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyaW5nVmFsdWU7XHJcbiAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdbVXRpbHMuc3RyaW5naWZ5OmVycl0gJyArIGVycik7XHJcbiAgICB0aHJvdyBlcnI7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuKiBDb252ZXJ0cyBhIHN0cmluZ2lmaWVkIG9iamVjdCB0byBvYmplY3RcclxuKiBAcGFyYW0gICB7U3RyaW5nfSAgICB2YWx1ZSAgICBieXRlQXJyYXkgdmFsdWVcclxuKiBAcmV0dXJuICB7T2JqZWN0fSAgIGVuY29kZWQgdmFsdWVcclxuKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKHZhbHVlKSB7XHJcbiAgdHJ5IHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoJ1tVdGlscy5wYXJzZTplcnJdJyArIGVycik7XHJcbiAgICBjb25zb2xlLnRyYWNlKCk7XHJcbiAgICBjb25zb2xlLmVycm9yKCdUaGF0IHRoYXQgY2F1c2UgdGhlIGVycm9yOicsIHZhbHVlKTtcclxuICAgIHRocm93IGVycjtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4qIENvbnZlcnRzIGEgc3RyaW5naWZpZWQgb2JqZWN0IHRvIG9iamVjdFxyXG4qIEBwYXJhbSAgIHtTdHJpbmd9ICAgIHZhbHVlICAgIGJ5dGVBcnJheSB2YWx1ZVxyXG4qIEByZXR1cm4gIHtVaW50OEFycmF5fSAgIGVuY29kZWQgdmFsdWVcclxuKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVG9VaW50OEFycmF5KHZhbHVlKSB7XHJcbiAgdHJ5IHtcclxuICAgIHJldHVybiBuZXcgVWludDhBcnJheShwYXJzZSh2YWx1ZSkpO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgY29uc29sZS5lcnJvcignW1V0aWxzLnBhcnNlVG9VaW50OEFycmF5OmVycl0nICsgZXJyKTtcclxuICAgIHRocm93IGVycjtcclxuICB9XHJcbn1cclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy91dGlscy91dGlscy5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUF3Q0E7QUFzREE7QUFJQTtBQVVBO0FBS0E7QUFVQTtBQVVBO0FBVUE7QUFtQkE7QUFRQTtBQVFBO0FBSUE7QUFJQTtBQVdBO0FBZ0JBO0FBaUNBO0FBWUE7QUFpQkE7QUFzQkE7QUFZQTtBQW9CQTtBQWlCQTtBQTBDQTtBQXVDQTtBQVlBO0FBa0JBO0FBbUJBO0FBU0E7QUFjQTtBQWVBO0FBY0E7QUFlQTtBQW9CQTtBQWdCQTtBQUNBOzs7QUFwa0JBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBOzs7OztBQUtBOzs7Ozs7OztBQVFBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBU0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///14\n")},function(module,exports,__webpack_require__){eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(32);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1vYmplY3QuanM/MTZiYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMTMgVG9PYmplY3QoYXJndW1lbnQpXG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///15\n")},function(module,exports){eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzPzVkMjMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///16\n")},function(module,exports){eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oYXMuanM/NTgxNyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oYXMuanNcbi8vIG1vZHVsZSBpZCA9IDE3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///17\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(11);\nvar createDesc = __webpack_require__(47);\nmodule.exports = __webpack_require__(10) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oaWRlLmpzP2RhOWQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRQLmYob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSAxOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///18\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar hide = __webpack_require__(18);\nvar has = __webpack_require__(17);\nvar SRC = __webpack_require__(48)('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(30).inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZWRlZmluZS5qcz80NzcwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFNSQyA9IHJlcXVpcmUoJy4vX3VpZCcpKCdzcmMnKTtcbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyICR0b1N0cmluZyA9IEZ1bmN0aW9uW1RPX1NUUklOR107XG52YXIgVFBMID0gKCcnICsgJHRvU3RyaW5nKS5zcGxpdChUT19TVFJJTkcpO1xuXG5yZXF1aXJlKCcuL19jb3JlJykuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gJHRvU3RyaW5nLmNhbGwoaXQpO1xufTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsLCBzYWZlKSB7XG4gIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIHZhbCA9PSAnZnVuY3Rpb24nO1xuICBpZiAoaXNGdW5jdGlvbikgaGFzKHZhbCwgJ25hbWUnKSB8fCBoaWRlKHZhbCwgJ25hbWUnLCBrZXkpO1xuICBpZiAoT1trZXldID09PSB2YWwpIHJldHVybjtcbiAgaWYgKGlzRnVuY3Rpb24pIGhhcyh2YWwsIFNSQykgfHwgaGlkZSh2YWwsIFNSQywgT1trZXldID8gJycgKyBPW2tleV0gOiBUUEwuam9pbihTdHJpbmcoa2V5KSkpO1xuICBpZiAoTyA9PT0gZ2xvYmFsKSB7XG4gICAgT1trZXldID0gdmFsO1xuICB9IGVsc2UgaWYgKCFzYWZlKSB7XG4gICAgZGVsZXRlIE9ba2V5XTtcbiAgICBoaWRlKE8sIGtleSwgdmFsKTtcbiAgfSBlbHNlIGlmIChPW2tleV0pIHtcbiAgICBPW2tleV0gPSB2YWw7XG4gIH0gZWxzZSB7XG4gICAgaGlkZShPLCBrZXksIHZhbCk7XG4gIH1cbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxufSkoRnVuY3Rpb24ucHJvdG90eXBlLCBUT19TVFJJTkcsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiB0aGlzW1NSQ10gfHwgJHRvU3RyaW5nLmNhbGwodGhpcyk7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcmVkZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDE5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///19\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar fails = __webpack_require__(5);\nvar defined = __webpack_require__(32);\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctaHRtbC5qcz9jYjdkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG52YXIgcXVvdCA9IC9cIi9nO1xuLy8gQi4yLjMuMi4xIENyZWF0ZUhUTUwoc3RyaW5nLCB0YWcsIGF0dHJpYnV0ZSwgdmFsdWUpXG52YXIgY3JlYXRlSFRNTCA9IGZ1bmN0aW9uIChzdHJpbmcsIHRhZywgYXR0cmlidXRlLCB2YWx1ZSkge1xuICB2YXIgUyA9IFN0cmluZyhkZWZpbmVkKHN0cmluZykpO1xuICB2YXIgcDEgPSAnPCcgKyB0YWc7XG4gIGlmIChhdHRyaWJ1dGUgIT09ICcnKSBwMSArPSAnICcgKyBhdHRyaWJ1dGUgKyAnPVwiJyArIFN0cmluZyh2YWx1ZSkucmVwbGFjZShxdW90LCAnJnF1b3Q7JykgKyAnXCInO1xuICByZXR1cm4gcDEgKyAnPicgKyBTICsgJzwvJyArIHRhZyArICc+Jztcbn07XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChOQU1FLCBleGVjKSB7XG4gIHZhciBPID0ge307XG4gIE9bTkFNRV0gPSBleGVjKGNyZWF0ZUhUTUwpO1xuICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGVzdCA9ICcnW05BTUVdKCdcIicpO1xuICAgIHJldHVybiB0ZXN0ICE9PSB0ZXN0LnRvTG93ZXJDYXNlKCkgfHwgdGVzdC5zcGxpdCgnXCInKS5sZW5ndGggPiAzO1xuICB9KSwgJ1N0cmluZycsIE8pO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWh0bWwuanNcbi8vIG1vZHVsZSBpZCA9IDIwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///20\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(22);\nvar core = __webpack_require__(13);\nvar ctx = __webpack_require__(65);\nvar hide = __webpack_require__(58);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qcz85MGNkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVztcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGtleSwgb3duLCBvdXQ7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG93biAmJiBrZXkgaW4gZXhwb3J0cykgY29udGludWU7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKVxuICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG4gICAgOiBJU19XUkFQICYmIHRhcmdldFtrZXldID09IG91dCA/IChmdW5jdGlvbiAoQykge1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEMpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmIChJU19QUk9UTykge1xuICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0O1xuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcbiAgICAgIGlmICh0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKSBoaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qc1xuLy8gbW9kdWxlIGlkID0gMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///21\n")},function(module,exports){eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcz9lY2FiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDIyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///22\n")},function(module,exports,__webpack_require__){eval("var store = __webpack_require__(136)('wks');\nvar uid = __webpack_require__(95);\nvar Symbol = __webpack_require__(22).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qcz83NTJjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBzdG9yZSA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCd3a3MnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5TeW1ib2w7XG52YXIgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcblxudmFyICRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cbiAgICBVU0VfU1lNQk9MICYmIFN5bWJvbFtuYW1lXSB8fCAoVVNFX1NZTUJPTCA/IFN5bWJvbCA6IHVpZCkoJ1N5bWJvbC4nICsgbmFtZSkpO1xufTtcblxuJGV4cG9ydHMuc3RvcmUgPSBzdG9yZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MuanNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///23\n")},function(module,exports,__webpack_require__){eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(70);\nvar defined = __webpack_require__(32);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1pb2JqZWN0LmpzPzNjN2EiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gdG8gaW5kZXhlZCBvYmplY3QsIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIElPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8taW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///24\n")},function(module,exports,__webpack_require__){eval("var pIE = __webpack_require__(71);\nvar createDesc = __webpack_require__(47);\nvar toIObject = __webpack_require__(24);\nvar toPrimitive = __webpack_require__(31);\nvar has = __webpack_require__(17);\nvar IE8_DOM_DEFINE = __webpack_require__(148);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(10) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wZC5qcz9jN2RjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBnT1BEIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSU9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGdPUEQoTywgUCk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzKE8sIFApKSByZXR1cm4gY3JlYXRlRGVzYyghcElFLmYuY2FsbChPLCBQKSwgT1tQXSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wZC5qc1xuLy8gbW9kdWxlIGlkID0gMjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///25\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(17);\nvar toObject = __webpack_require__(15);\nvar IE_PROTO = __webpack_require__(103)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ3BvLmpzPzI4ZWEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvIDogbnVsbDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1ncG8uanNcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///26\n")},function(module,exports,__webpack_require__){eval("// optional / simple context binding\nvar aFunction = __webpack_require__(16);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jdHguanM/YWM1YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2N0eC5qc1xuLy8gbW9kdWxlIGlkID0gMjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///27\n")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2YuanM/YzlkMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvZi5qc1xuLy8gbW9kdWxlIGlkID0gMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///28\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar fails = __webpack_require__(5);\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpY3QtbWV0aG9kLmpzPzM0ZGEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobWV0aG9kLCBhcmcpIHtcbiAgcmV0dXJuICEhbWV0aG9kICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jYWxsXG4gICAgYXJnID8gbWV0aG9kLmNhbGwobnVsbCwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAxKSA6IG1ldGhvZC5jYWxsKG51bGwpO1xuICB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmljdC1tZXRob2QuanNcbi8vIG1vZHVsZSBpZCA9IDI5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n")},function(module,exports){eval("var core = module.exports = { version: '2.5.3' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb3JlLmpzP2VlMDUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHsgdmVyc2lvbjogJzIuNS4zJyB9O1xuaWYgKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpIF9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29yZS5qc1xuLy8gbW9kdWxlIGlkID0gMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n")},function(module,exports,__webpack_require__){eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(6);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1wcmltaXRpdmUuanM/YjM4OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMSBUb1ByaW1pdGl2ZShpbnB1dCBbLCBQcmVmZXJyZWRUeXBlXSlcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///31\n")},function(module,exports){eval('// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError("Can\'t call method on " + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kZWZpbmVkLmpzP2ZmMDgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGVmaW5lZC5qc1xuLy8gbW9kdWxlIGlkID0gMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///32\n')},function(module,exports){eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1pbnRlZ2VyLmpzP2ExZTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWludGVnZXIuanNcbi8vIG1vZHVsZSBpZCA9IDMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///33\n")},function(module,exports,__webpack_require__){eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(0);\nvar core = __webpack_require__(30);\nvar fails = __webpack_require__(5);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qtc2FwLmpzP2RlMmUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBleGVjKSB7XG4gIHZhciBmbiA9IChjb3JlLk9iamVjdCB8fCB7fSlbS0VZXSB8fCBPYmplY3RbS0VZXTtcbiAgdmFyIGV4cCA9IHt9O1xuICBleHBbS0VZXSA9IGV4ZWMoZm4pO1xuICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHsgZm4oMSk7IH0pLCAnT2JqZWN0JywgZXhwKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1zYXAuanNcbi8vIG1vZHVsZSBpZCA9IDM0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///34\n")},function(module,exports,__webpack_require__){eval("// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = __webpack_require__(27);\nvar IObject = __webpack_require__(70);\nvar toObject = __webpack_require__(15);\nvar toLength = __webpack_require__(12);\nvar asc = __webpack_require__(120);\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1tZXRob2RzLmpzPzJlMTQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMCAtPiBBcnJheSNmb3JFYWNoXG4vLyAxIC0+IEFycmF5I21hcFxuLy8gMiAtPiBBcnJheSNmaWx0ZXJcbi8vIDMgLT4gQXJyYXkjc29tZVxuLy8gNCAtPiBBcnJheSNldmVyeVxuLy8gNSAtPiBBcnJheSNmaW5kXG4vLyA2IC0+IEFycmF5I2ZpbmRJbmRleFxudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFzYyA9IHJlcXVpcmUoJy4vX2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUWVBFLCAkY3JlYXRlKSB7XG4gIHZhciBJU19NQVAgPSBUWVBFID09IDE7XG4gIHZhciBJU19GSUxURVIgPSBUWVBFID09IDI7XG4gIHZhciBJU19TT01FID0gVFlQRSA9PSAzO1xuICB2YXIgSVNfRVZFUlkgPSBUWVBFID09IDQ7XG4gIHZhciBJU19GSU5EX0lOREVYID0gVFlQRSA9PSA2O1xuICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDtcbiAgdmFyIGNyZWF0ZSA9ICRjcmVhdGUgfHwgYXNjO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7XG4gICAgdmFyIHNlbGYgPSBJT2JqZWN0KE8pO1xuICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSID8gY3JlYXRlKCR0aGlzLCAwKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdmFsLCByZXM7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWwgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlcyA9IGYodmFsLCBpbmRleCwgTyk7XG4gICAgICBpZiAoVFlQRSkge1xuICAgICAgICBpZiAoSVNfTUFQKSByZXN1bHRbaW5kZXhdID0gcmVzOyAgIC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXMpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWw7ICAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiByZXN1bHQucHVzaCh2YWwpOyAgICAgICAgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHJldHVybiBmYWxzZTsgLy8gZXZlcnlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfSU5ERVggPyAtMSA6IElTX1NPTUUgfHwgSVNfRVZFUlkgPyBJU19FVkVSWSA6IHJlc3VsdDtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LW1ldGhvZHMuanNcbi8vIG1vZHVsZSBpZCA9IDM1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///35\n")},function(module,exports){eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcz8xMmE4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///36\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(452), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9rZXlzLmpzPzdkOTgiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9rZXlzXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAzN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///37\n')},function(module,exports,__webpack_require__){"use strict";eval("\nif (__webpack_require__(10)) {\n var LIBRARY = __webpack_require__(49);\n var global = __webpack_require__(4);\n var fails = __webpack_require__(5);\n var $export = __webpack_require__(0);\n var $typed = __webpack_require__(89);\n var $buffer = __webpack_require__(126);\n var ctx = __webpack_require__(27);\n var anInstance = __webpack_require__(55);\n var propertyDesc = __webpack_require__(47);\n var hide = __webpack_require__(18);\n var redefineAll = __webpack_require__(57);\n var toInteger = __webpack_require__(33);\n var toLength = __webpack_require__(12);\n var toIndex = __webpack_require__(174);\n var toAbsoluteIndex = __webpack_require__(51);\n var toPrimitive = __webpack_require__(31);\n var has = __webpack_require__(17);\n var classof = __webpack_require__(72);\n var isObject = __webpack_require__(6);\n var toObject = __webpack_require__(15);\n var isArrayIter = __webpack_require__(117);\n var create = __webpack_require__(52);\n var getPrototypeOf = __webpack_require__(26);\n var gOPN = __webpack_require__(53).f;\n var getIterFn = __webpack_require__(119);\n var uid = __webpack_require__(48);\n var wks = __webpack_require__(8);\n var createArrayMethod = __webpack_require__(35);\n var createArrayIncludes = __webpack_require__(80);\n var speciesConstructor = __webpack_require__(87);\n var ArrayIterators = __webpack_require__(122);\n var Iterators = __webpack_require__(63);\n var $iterDetect = __webpack_require__(84);\n var setSpecies = __webpack_require__(54);\n var arrayFill = __webpack_require__(121);\n var arrayCopyWithin = __webpack_require__(164);\n var $DP = __webpack_require__(11);\n var $GOPD = __webpack_require__(25);\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190eXBlZC1hcnJheS5qcz9lZmI1Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbmlmIChyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpKSB7XG4gIHZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xuICB2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG4gIHZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG4gIHZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4gIHZhciAkdHlwZWQgPSByZXF1aXJlKCcuL190eXBlZCcpO1xuICB2YXIgJGJ1ZmZlciA9IHJlcXVpcmUoJy4vX3R5cGVkLWJ1ZmZlcicpO1xuICB2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG4gIHZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbiAgdmFyIHByb3BlcnR5RGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbiAgdmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG4gIHZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xuICB2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xuICB2YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbiAgdmFyIHRvSW5kZXggPSByZXF1aXJlKCcuL190by1pbmRleCcpO1xuICB2YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbiAgdmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG4gIHZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbiAgdmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG4gIHZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuICB2YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbiAgdmFyIGlzQXJyYXlJdGVyID0gcmVxdWlyZSgnLi9faXMtYXJyYXktaXRlcicpO1xuICB2YXIgY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xuICB2YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG4gIHZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xuICB2YXIgZ2V0SXRlckZuID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcbiAgdmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xuICB2YXIgd2tzID0gcmVxdWlyZSgnLi9fd2tzJyk7XG4gIHZhciBjcmVhdGVBcnJheU1ldGhvZCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKTtcbiAgdmFyIGNyZWF0ZUFycmF5SW5jbHVkZXMgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpO1xuICB2YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuICB2YXIgQXJyYXlJdGVyYXRvcnMgPSByZXF1aXJlKCcuL2VzNi5hcnJheS5pdGVyYXRvcicpO1xuICB2YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG4gIHZhciAkaXRlckRldGVjdCA9IHJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0Jyk7XG4gIHZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKTtcbiAgdmFyIGFycmF5RmlsbCA9IHJlcXVpcmUoJy4vX2FycmF5LWZpbGwnKTtcbiAgdmFyIGFycmF5Q29weVdpdGhpbiA9IHJlcXVpcmUoJy4vX2FycmF5LWNvcHktd2l0aGluJyk7XG4gIHZhciAkRFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbiAgdmFyICRHT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbiAgdmFyIGRQID0gJERQLmY7XG4gIHZhciBnT1BEID0gJEdPUEQuZjtcbiAgdmFyIFJhbmdlRXJyb3IgPSBnbG9iYWwuUmFuZ2VFcnJvcjtcbiAgdmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG4gIHZhciBVaW50OEFycmF5ID0gZ2xvYmFsLlVpbnQ4QXJyYXk7XG4gIHZhciBBUlJBWV9CVUZGRVIgPSAnQXJyYXlCdWZmZXInO1xuICB2YXIgU0hBUkVEX0JVRkZFUiA9ICdTaGFyZWQnICsgQVJSQVlfQlVGRkVSO1xuICB2YXIgQllURVNfUEVSX0VMRU1FTlQgPSAnQllURVNfUEVSX0VMRU1FTlQnO1xuICB2YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG4gIHZhciBBcnJheVByb3RvID0gQXJyYXlbUFJPVE9UWVBFXTtcbiAgdmFyICRBcnJheUJ1ZmZlciA9ICRidWZmZXIuQXJyYXlCdWZmZXI7XG4gIHZhciAkRGF0YVZpZXcgPSAkYnVmZmVyLkRhdGFWaWV3O1xuICB2YXIgYXJyYXlGb3JFYWNoID0gY3JlYXRlQXJyYXlNZXRob2QoMCk7XG4gIHZhciBhcnJheUZpbHRlciA9IGNyZWF0ZUFycmF5TWV0aG9kKDIpO1xuICB2YXIgYXJyYXlTb21lID0gY3JlYXRlQXJyYXlNZXRob2QoMyk7XG4gIHZhciBhcnJheUV2ZXJ5ID0gY3JlYXRlQXJyYXlNZXRob2QoNCk7XG4gIHZhciBhcnJheUZpbmQgPSBjcmVhdGVBcnJheU1ldGhvZCg1KTtcbiAgdmFyIGFycmF5RmluZEluZGV4ID0gY3JlYXRlQXJyYXlNZXRob2QoNik7XG4gIHZhciBhcnJheUluY2x1ZGVzID0gY3JlYXRlQXJyYXlJbmNsdWRlcyh0cnVlKTtcbiAgdmFyIGFycmF5SW5kZXhPZiA9IGNyZWF0ZUFycmF5SW5jbHVkZXMoZmFsc2UpO1xuICB2YXIgYXJyYXlWYWx1ZXMgPSBBcnJheUl0ZXJhdG9ycy52YWx1ZXM7XG4gIHZhciBhcnJheUtleXMgPSBBcnJheUl0ZXJhdG9ycy5rZXlzO1xuICB2YXIgYXJyYXlFbnRyaWVzID0gQXJyYXlJdGVyYXRvcnMuZW50cmllcztcbiAgdmFyIGFycmF5TGFzdEluZGV4T2YgPSBBcnJheVByb3RvLmxhc3RJbmRleE9mO1xuICB2YXIgYXJyYXlSZWR1Y2UgPSBBcnJheVByb3RvLnJlZHVjZTtcbiAgdmFyIGFycmF5UmVkdWNlUmlnaHQgPSBBcnJheVByb3RvLnJlZHVjZVJpZ2h0O1xuICB2YXIgYXJyYXlKb2luID0gQXJyYXlQcm90by5qb2luO1xuICB2YXIgYXJyYXlTb3J0ID0gQXJyYXlQcm90by5zb3J0O1xuICB2YXIgYXJyYXlTbGljZSA9IEFycmF5UHJvdG8uc2xpY2U7XG4gIHZhciBhcnJheVRvU3RyaW5nID0gQXJyYXlQcm90by50b1N0cmluZztcbiAgdmFyIGFycmF5VG9Mb2NhbGVTdHJpbmcgPSBBcnJheVByb3RvLnRvTG9jYWxlU3RyaW5nO1xuICB2YXIgSVRFUkFUT1IgPSB3a3MoJ2l0ZXJhdG9yJyk7XG4gIHZhciBUQUcgPSB3a3MoJ3RvU3RyaW5nVGFnJyk7XG4gIHZhciBUWVBFRF9DT05TVFJVQ1RPUiA9IHVpZCgndHlwZWRfY29uc3RydWN0b3InKTtcbiAgdmFyIERFRl9DT05TVFJVQ1RPUiA9IHVpZCgnZGVmX2NvbnN0cnVjdG9yJyk7XG4gIHZhciBBTExfQ09OU1RSVUNUT1JTID0gJHR5cGVkLkNPTlNUUjtcbiAgdmFyIFRZUEVEX0FSUkFZID0gJHR5cGVkLlRZUEVEO1xuICB2YXIgVklFVyA9ICR0eXBlZC5WSUVXO1xuICB2YXIgV1JPTkdfTEVOR1RIID0gJ1dyb25nIGxlbmd0aCEnO1xuXG4gIHZhciAkbWFwID0gY3JlYXRlQXJyYXlNZXRob2QoMSwgZnVuY3Rpb24gKE8sIGxlbmd0aCkge1xuICAgIHJldHVybiBhbGxvY2F0ZShzcGVjaWVzQ29uc3RydWN0b3IoTywgT1tERUZfQ09OU1RSVUNUT1JdKSwgbGVuZ3RoKTtcbiAgfSk7XG5cbiAgdmFyIExJVFRMRV9FTkRJQU4gPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KG5ldyBVaW50MTZBcnJheShbMV0pLmJ1ZmZlcilbMF0gPT09IDE7XG4gIH0pO1xuXG4gIHZhciBGT1JDRURfU0VUID0gISFVaW50OEFycmF5ICYmICEhVWludDhBcnJheVtQUk9UT1RZUEVdLnNldCAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgbmV3IFVpbnQ4QXJyYXkoMSkuc2V0KHt9KTtcbiAgfSk7XG5cbiAgdmFyIHRvT2Zmc2V0ID0gZnVuY3Rpb24gKGl0LCBCWVRFUykge1xuICAgIHZhciBvZmZzZXQgPSB0b0ludGVnZXIoaXQpO1xuICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCAlIEJZVEVTKSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBvZmZzZXQhJyk7XG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfTtcblxuICB2YXIgdmFsaWRhdGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICBpZiAoaXNPYmplY3QoaXQpICYmIFRZUEVEX0FSUkFZIGluIGl0KSByZXR1cm4gaXQ7XG4gICAgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSB0eXBlZCBhcnJheSEnKTtcbiAgfTtcblxuICB2YXIgYWxsb2NhdGUgPSBmdW5jdGlvbiAoQywgbGVuZ3RoKSB7XG4gICAgaWYgKCEoaXNPYmplY3QoQykgJiYgVFlQRURfQ09OU1RSVUNUT1IgaW4gQykpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignSXQgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IhJyk7XG4gICAgfSByZXR1cm4gbmV3IEMobGVuZ3RoKTtcbiAgfTtcblxuICB2YXIgc3BlY2llc0Zyb21MaXN0ID0gZnVuY3Rpb24gKE8sIGxpc3QpIHtcbiAgICByZXR1cm4gZnJvbUxpc3Qoc3BlY2llc0NvbnN0cnVjdG9yKE8sIE9bREVGX0NPTlNUUlVDVE9SXSksIGxpc3QpO1xuICB9O1xuXG4gIHZhciBmcm9tTGlzdCA9IGZ1bmN0aW9uIChDLCBsaXN0KSB7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gbGlzdC5sZW5ndGg7XG4gICAgdmFyIHJlc3VsdCA9IGFsbG9jYXRlKEMsIGxlbmd0aCk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSByZXN1bHRbaW5kZXhdID0gbGlzdFtpbmRleCsrXTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHZhciBhZGRHZXR0ZXIgPSBmdW5jdGlvbiAoaXQsIGtleSwgaW50ZXJuYWwpIHtcbiAgICBkUChpdCwga2V5LCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fZFtpbnRlcm5hbF07IH0gfSk7XG4gIH07XG5cbiAgdmFyICRmcm9tID0gZnVuY3Rpb24gZnJvbShzb3VyY2UgLyogLCBtYXBmbiwgdGhpc0FyZyAqLykge1xuICAgIHZhciBPID0gdG9PYmplY3Qoc291cmNlKTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIG1hcGZuID0gYUxlbiA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciBpdGVyRm4gPSBnZXRJdGVyRm4oTyk7XG4gICAgdmFyIGksIGxlbmd0aCwgdmFsdWVzLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmIChpdGVyRm4gIT0gdW5kZWZpbmVkICYmICFpc0FycmF5SXRlcihpdGVyRm4pKSB7XG4gICAgICBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoTyksIHZhbHVlcyA9IFtdLCBpID0gMDsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyBpKyspIHtcbiAgICAgICAgdmFsdWVzLnB1c2goc3RlcC52YWx1ZSk7XG4gICAgICB9IE8gPSB2YWx1ZXM7XG4gICAgfVxuICAgIGlmIChtYXBwaW5nICYmIGFMZW4gPiAyKSBtYXBmbiA9IGN0eChtYXBmbiwgYXJndW1lbnRzWzJdLCAyKTtcbiAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCksIHJlc3VsdCA9IGFsbG9jYXRlKHRoaXMsIGxlbmd0aCk7IGxlbmd0aCA+IGk7IGkrKykge1xuICAgICAgcmVzdWx0W2ldID0gbWFwcGluZyA/IG1hcGZuKE9baV0sIGkpIDogT1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICB2YXIgJG9mID0gZnVuY3Rpb24gb2YoLyogLi4uaXRlbXMgKi8pIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciByZXN1bHQgPSBhbGxvY2F0ZSh0aGlzLCBsZW5ndGgpO1xuICAgIHdoaWxlIChsZW5ndGggPiBpbmRleCkgcmVzdWx0W2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleCsrXTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIGlPUyBTYWZhcmkgNi54IGZhaWxzIGhlcmVcbiAgdmFyIFRPX0xPQ0FMRV9CVUcgPSAhIVVpbnQ4QXJyYXkgJiYgZmFpbHMoZnVuY3Rpb24gKCkgeyBhcnJheVRvTG9jYWxlU3RyaW5nLmNhbGwobmV3IFVpbnQ4QXJyYXkoMSkpOyB9KTtcblxuICB2YXIgJHRvTG9jYWxlU3RyaW5nID0gZnVuY3Rpb24gdG9Mb2NhbGVTdHJpbmcoKSB7XG4gICAgcmV0dXJuIGFycmF5VG9Mb2NhbGVTdHJpbmcuYXBwbHkoVE9fTE9DQUxFX0JVRyA/IGFycmF5U2xpY2UuY2FsbCh2YWxpZGF0ZSh0aGlzKSkgOiB2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgfTtcblxuICB2YXIgcHJvdG8gPSB7XG4gICAgY29weVdpdGhpbjogZnVuY3Rpb24gY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0IC8qICwgZW5kICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlDb3B5V2l0aGluLmNhbGwodmFsaWRhdGUodGhpcyksIHRhcmdldCwgc3RhcnQsIGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgcmV0dXJuIGFycmF5RXZlcnkodmFsaWRhdGUodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGZpbGw6IGZ1bmN0aW9uIGZpbGwodmFsdWUgLyogLCBzdGFydCwgZW5kICovKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIHJldHVybiBhcnJheUZpbGwuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgcmV0dXJuIHNwZWNpZXNGcm9tTGlzdCh0aGlzLCBhcnJheUZpbHRlcih2YWxpZGF0ZSh0aGlzKSwgY2FsbGJhY2tmbixcbiAgICAgICAgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpKTtcbiAgICB9LFxuICAgIGZpbmQ6IGZ1bmN0aW9uIGZpbmQocHJlZGljYXRlIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgcmV0dXJuIGFycmF5RmluZCh2YWxpZGF0ZSh0aGlzKSwgcHJlZGljYXRlLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBmaW5kSW5kZXg6IGZ1bmN0aW9uIGZpbmRJbmRleChwcmVkaWNhdGUgLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlGaW5kSW5kZXgodmFsaWRhdGUodGhpcyksIHByZWRpY2F0ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgYXJyYXlGb3JFYWNoKHZhbGlkYXRlKHRoaXMpLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBpbmRleE9mOiBmdW5jdGlvbiBpbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggKi8pIHtcbiAgICAgIHJldHVybiBhcnJheUluZGV4T2YodmFsaWRhdGUodGhpcyksIHNlYXJjaEVsZW1lbnQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlJbmNsdWRlcyh2YWxpZGF0ZSh0aGlzKSwgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgam9pbjogZnVuY3Rpb24gam9pbihzZXBhcmF0b3IpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5Sm9pbi5hcHBseSh2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGxhc3RJbmRleE9mOiBmdW5jdGlvbiBsYXN0SW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ICovKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIHJldHVybiBhcnJheUxhc3RJbmRleE9mLmFwcGx5KHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgbWFwOiBmdW5jdGlvbiBtYXAobWFwZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gJG1hcCh2YWxpZGF0ZSh0aGlzKSwgbWFwZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIHJlZHVjZTogZnVuY3Rpb24gcmVkdWNlKGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5UmVkdWNlLmFwcGx5KHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgcmVkdWNlUmlnaHQ6IGZ1bmN0aW9uIHJlZHVjZVJpZ2h0KGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5UmVkdWNlUmlnaHQuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICByZXZlcnNlOiBmdW5jdGlvbiByZXZlcnNlKCkge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgdmFyIGxlbmd0aCA9IHZhbGlkYXRlKHRoYXQpLmxlbmd0aDtcbiAgICAgIHZhciBtaWRkbGUgPSBNYXRoLmZsb29yKGxlbmd0aCAvIDIpO1xuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIHZhciB2YWx1ZTtcbiAgICAgIHdoaWxlIChpbmRleCA8IG1pZGRsZSkge1xuICAgICAgICB2YWx1ZSA9IHRoYXRbaW5kZXhdO1xuICAgICAgICB0aGF0W2luZGV4KytdID0gdGhhdFstLWxlbmd0aF07XG4gICAgICAgIHRoYXRbbGVuZ3RoXSA9IHZhbHVlO1xuICAgICAgfSByZXR1cm4gdGhhdDtcbiAgICB9LFxuICAgIHNvbWU6IGZ1bmN0aW9uIHNvbWUoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICAgIHJldHVybiBhcnJheVNvbWUodmFsaWRhdGUodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIHNvcnQ6IGZ1bmN0aW9uIHNvcnQoY29tcGFyZWZuKSB7XG4gICAgICByZXR1cm4gYXJyYXlTb3J0LmNhbGwodmFsaWRhdGUodGhpcyksIGNvbXBhcmVmbik7XG4gICAgfSxcbiAgICBzdWJhcnJheTogZnVuY3Rpb24gc3ViYXJyYXkoYmVnaW4sIGVuZCkge1xuICAgICAgdmFyIE8gPSB2YWxpZGF0ZSh0aGlzKTtcbiAgICAgIHZhciBsZW5ndGggPSBPLmxlbmd0aDtcbiAgICAgIHZhciAkYmVnaW4gPSB0b0Fic29sdXRlSW5kZXgoYmVnaW4sIGxlbmd0aCk7XG4gICAgICByZXR1cm4gbmV3IChzcGVjaWVzQ29uc3RydWN0b3IoTywgT1tERUZfQ09OU1RSVUNUT1JdKSkoXG4gICAgICAgIE8uYnVmZmVyLFxuICAgICAgICBPLmJ5dGVPZmZzZXQgKyAkYmVnaW4gKiBPLkJZVEVTX1BFUl9FTEVNRU5ULFxuICAgICAgICB0b0xlbmd0aCgoZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiB0b0Fic29sdXRlSW5kZXgoZW5kLCBsZW5ndGgpKSAtICRiZWdpbilcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIHZhciAkc2xpY2UgPSBmdW5jdGlvbiBzbGljZShzdGFydCwgZW5kKSB7XG4gICAgcmV0dXJuIHNwZWNpZXNGcm9tTGlzdCh0aGlzLCBhcnJheVNsaWNlLmNhbGwodmFsaWRhdGUodGhpcyksIHN0YXJ0LCBlbmQpKTtcbiAgfTtcblxuICB2YXIgJHNldCA9IGZ1bmN0aW9uIHNldChhcnJheUxpa2UgLyogLCBvZmZzZXQgKi8pIHtcbiAgICB2YWxpZGF0ZSh0aGlzKTtcbiAgICB2YXIgb2Zmc2V0ID0gdG9PZmZzZXQoYXJndW1lbnRzWzFdLCAxKTtcbiAgICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgdmFyIHNyYyA9IHRvT2JqZWN0KGFycmF5TGlrZSk7XG4gICAgdmFyIGxlbiA9IHRvTGVuZ3RoKHNyYy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgaWYgKGxlbiArIG9mZnNldCA+IGxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgIHdoaWxlIChpbmRleCA8IGxlbikgdGhpc1tvZmZzZXQgKyBpbmRleF0gPSBzcmNbaW5kZXgrK107XG4gIH07XG5cbiAgdmFyICRpdGVyYXRvcnMgPSB7XG4gICAgZW50cmllczogZnVuY3Rpb24gZW50cmllcygpIHtcbiAgICAgIHJldHVybiBhcnJheUVudHJpZXMuY2FsbCh2YWxpZGF0ZSh0aGlzKSk7XG4gICAgfSxcbiAgICBrZXlzOiBmdW5jdGlvbiBrZXlzKCkge1xuICAgICAgcmV0dXJuIGFycmF5S2V5cy5jYWxsKHZhbGlkYXRlKHRoaXMpKTtcbiAgICB9LFxuICAgIHZhbHVlczogZnVuY3Rpb24gdmFsdWVzKCkge1xuICAgICAgcmV0dXJuIGFycmF5VmFsdWVzLmNhbGwodmFsaWRhdGUodGhpcykpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgaXNUQUluZGV4ID0gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7XG4gICAgcmV0dXJuIGlzT2JqZWN0KHRhcmdldClcbiAgICAgICYmIHRhcmdldFtUWVBFRF9BUlJBWV1cbiAgICAgICYmIHR5cGVvZiBrZXkgIT0gJ3N5bWJvbCdcbiAgICAgICYmIGtleSBpbiB0YXJnZXRcbiAgICAgICYmIFN0cmluZygra2V5KSA9PSBTdHJpbmcoa2V5KTtcbiAgfTtcbiAgdmFyICRnZXREZXNjID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSB7XG4gICAgcmV0dXJuIGlzVEFJbmRleCh0YXJnZXQsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpXG4gICAgICA/IHByb3BlcnR5RGVzYygyLCB0YXJnZXRba2V5XSlcbiAgICAgIDogZ09QRCh0YXJnZXQsIGtleSk7XG4gIH07XG4gIHZhciAkc2V0RGVzYyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjKSB7XG4gICAgaWYgKGlzVEFJbmRleCh0YXJnZXQsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpXG4gICAgICAmJiBpc09iamVjdChkZXNjKVxuICAgICAgJiYgaGFzKGRlc2MsICd2YWx1ZScpXG4gICAgICAmJiAhaGFzKGRlc2MsICdnZXQnKVxuICAgICAgJiYgIWhhcyhkZXNjLCAnc2V0JylcbiAgICAgIC8vIFRPRE86IGFkZCB2YWxpZGF0aW9uIGRlc2NyaXB0b3Igdy9vIGNhbGxpbmcgYWNjZXNzb3JzXG4gICAgICAmJiAhZGVzYy5jb25maWd1cmFibGVcbiAgICAgICYmICghaGFzKGRlc2MsICd3cml0YWJsZScpIHx8IGRlc2Mud3JpdGFibGUpXG4gICAgICAmJiAoIWhhcyhkZXNjLCAnZW51bWVyYWJsZScpIHx8IGRlc2MuZW51bWVyYWJsZSlcbiAgICApIHtcbiAgICAgIHRhcmdldFtrZXldID0gZGVzYy52YWx1ZTtcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfSByZXR1cm4gZFAodGFyZ2V0LCBrZXksIGRlc2MpO1xuICB9O1xuXG4gIGlmICghQUxMX0NPTlNUUlVDVE9SUykge1xuICAgICRHT1BELmYgPSAkZ2V0RGVzYztcbiAgICAkRFAuZiA9ICRzZXREZXNjO1xuICB9XG5cbiAgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhQUxMX0NPTlNUUlVDVE9SUywgJ09iamVjdCcsIHtcbiAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICRnZXREZXNjLFxuICAgIGRlZmluZVByb3BlcnR5OiAkc2V0RGVzY1xuICB9KTtcblxuICBpZiAoZmFpbHMoZnVuY3Rpb24gKCkgeyBhcnJheVRvU3RyaW5nLmNhbGwoe30pOyB9KSkge1xuICAgIGFycmF5VG9TdHJpbmcgPSBhcnJheVRvTG9jYWxlU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gYXJyYXlKb2luLmNhbGwodGhpcyk7XG4gICAgfTtcbiAgfVxuXG4gIHZhciAkVHlwZWRBcnJheVByb3RvdHlwZSQgPSByZWRlZmluZUFsbCh7fSwgcHJvdG8pO1xuICByZWRlZmluZUFsbCgkVHlwZWRBcnJheVByb3RvdHlwZSQsICRpdGVyYXRvcnMpO1xuICBoaWRlKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgSVRFUkFUT1IsICRpdGVyYXRvcnMudmFsdWVzKTtcbiAgcmVkZWZpbmVBbGwoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCB7XG4gICAgc2xpY2U6ICRzbGljZSxcbiAgICBzZXQ6ICRzZXQsXG4gICAgY29uc3RydWN0b3I6IGZ1bmN0aW9uICgpIHsgLyogbm9vcCAqLyB9LFxuICAgIHRvU3RyaW5nOiBhcnJheVRvU3RyaW5nLFxuICAgIHRvTG9jYWxlU3RyaW5nOiAkdG9Mb2NhbGVTdHJpbmdcbiAgfSk7XG4gIGFkZEdldHRlcigkVHlwZWRBcnJheVByb3RvdHlwZSQsICdidWZmZXInLCAnYicpO1xuICBhZGRHZXR0ZXIoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCAnYnl0ZU9mZnNldCcsICdvJyk7XG4gIGFkZEdldHRlcigkVHlwZWRBcnJheVByb3RvdHlwZSQsICdieXRlTGVuZ3RoJywgJ2wnKTtcbiAgYWRkR2V0dGVyKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJ2xlbmd0aCcsICdlJyk7XG4gIGRQKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgVEFHLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzW1RZUEVEX0FSUkFZXTsgfVxuICB9KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXN0YXRlbWVudHNcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBCWVRFUywgd3JhcHBlciwgQ0xBTVBFRCkge1xuICAgIENMQU1QRUQgPSAhIUNMQU1QRUQ7XG4gICAgdmFyIE5BTUUgPSBLRVkgKyAoQ0xBTVBFRCA/ICdDbGFtcGVkJyA6ICcnKSArICdBcnJheSc7XG4gICAgdmFyIEdFVFRFUiA9ICdnZXQnICsgS0VZO1xuICAgIHZhciBTRVRURVIgPSAnc2V0JyArIEtFWTtcbiAgICB2YXIgVHlwZWRBcnJheSA9IGdsb2JhbFtOQU1FXTtcbiAgICB2YXIgQmFzZSA9IFR5cGVkQXJyYXkgfHwge307XG4gICAgdmFyIFRBQyA9IFR5cGVkQXJyYXkgJiYgZ2V0UHJvdG90eXBlT2YoVHlwZWRBcnJheSk7XG4gICAgdmFyIEZPUkNFRCA9ICFUeXBlZEFycmF5IHx8ICEkdHlwZWQuQUJWO1xuICAgIHZhciBPID0ge307XG4gICAgdmFyIFR5cGVkQXJyYXlQcm90b3R5cGUgPSBUeXBlZEFycmF5ICYmIFR5cGVkQXJyYXlbUFJPVE9UWVBFXTtcbiAgICB2YXIgZ2V0dGVyID0gZnVuY3Rpb24gKHRoYXQsIGluZGV4KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoYXQuX2Q7XG4gICAgICByZXR1cm4gZGF0YS52W0dFVFRFUl0oaW5kZXggKiBCWVRFUyArIGRhdGEubywgTElUVExFX0VORElBTik7XG4gICAgfTtcbiAgICB2YXIgc2V0dGVyID0gZnVuY3Rpb24gKHRoYXQsIGluZGV4LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGF0Ll9kO1xuICAgICAgaWYgKENMQU1QRUQpIHZhbHVlID0gKHZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZSkpIDwgMCA/IDAgOiB2YWx1ZSA+IDB4ZmYgPyAweGZmIDogdmFsdWUgJiAweGZmO1xuICAgICAgZGF0YS52W1NFVFRFUl0oaW5kZXggKiBCWVRFUyArIGRhdGEubywgdmFsdWUsIExJVFRMRV9FTkRJQU4pO1xuICAgIH07XG4gICAgdmFyIGFkZEVsZW1lbnQgPSBmdW5jdGlvbiAodGhhdCwgaW5kZXgpIHtcbiAgICAgIGRQKHRoYXQsIGluZGV4LCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBnZXR0ZXIodGhpcywgaW5kZXgpO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBzZXR0ZXIodGhpcywgaW5kZXgsIHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSB7XG4gICAgICBUeXBlZEFycmF5ID0gd3JhcHBlcihmdW5jdGlvbiAodGhhdCwgZGF0YSwgJG9mZnNldCwgJGxlbmd0aCkge1xuICAgICAgICBhbkluc3RhbmNlKHRoYXQsIFR5cGVkQXJyYXksIE5BTUUsICdfZCcpO1xuICAgICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICAgICAgdmFyIGJ1ZmZlciwgYnl0ZUxlbmd0aCwgbGVuZ3RoLCBrbGFzcztcbiAgICAgICAgaWYgKCFpc09iamVjdChkYXRhKSkge1xuICAgICAgICAgIGxlbmd0aCA9IHRvSW5kZXgoZGF0YSk7XG4gICAgICAgICAgYnl0ZUxlbmd0aCA9IGxlbmd0aCAqIEJZVEVTO1xuICAgICAgICAgIGJ1ZmZlciA9IG5ldyAkQXJyYXlCdWZmZXIoYnl0ZUxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mICRBcnJheUJ1ZmZlciB8fCAoa2xhc3MgPSBjbGFzc29mKGRhdGEpKSA9PSBBUlJBWV9CVUZGRVIgfHwga2xhc3MgPT0gU0hBUkVEX0JVRkZFUikge1xuICAgICAgICAgIGJ1ZmZlciA9IGRhdGE7XG4gICAgICAgICAgb2Zmc2V0ID0gdG9PZmZzZXQoJG9mZnNldCwgQllURVMpO1xuICAgICAgICAgIHZhciAkbGVuID0gZGF0YS5ieXRlTGVuZ3RoO1xuICAgICAgICAgIGlmICgkbGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICgkbGVuICUgQllURVMpIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICAgICAgICAgIGJ5dGVMZW5ndGggPSAkbGVuIC0gb2Zmc2V0O1xuICAgICAgICAgICAgaWYgKGJ5dGVMZW5ndGggPCAwKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ5dGVMZW5ndGggPSB0b0xlbmd0aCgkbGVuZ3RoKSAqIEJZVEVTO1xuICAgICAgICAgICAgaWYgKGJ5dGVMZW5ndGggKyBvZmZzZXQgPiAkbGVuKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxlbmd0aCA9IGJ5dGVMZW5ndGggLyBCWVRFUztcbiAgICAgICAgfSBlbHNlIGlmIChUWVBFRF9BUlJBWSBpbiBkYXRhKSB7XG4gICAgICAgICAgcmV0dXJuIGZyb21MaXN0KFR5cGVkQXJyYXksIGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiAkZnJvbS5jYWxsKFR5cGVkQXJyYXksIGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGhpZGUodGhhdCwgJ19kJywge1xuICAgICAgICAgIGI6IGJ1ZmZlcixcbiAgICAgICAgICBvOiBvZmZzZXQsXG4gICAgICAgICAgbDogYnl0ZUxlbmd0aCxcbiAgICAgICAgICBlOiBsZW5ndGgsXG4gICAgICAgICAgdjogbmV3ICREYXRhVmlldyhidWZmZXIpXG4gICAgICAgIH0pO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIGFkZEVsZW1lbnQodGhhdCwgaW5kZXgrKyk7XG4gICAgICB9KTtcbiAgICAgIFR5cGVkQXJyYXlQcm90b3R5cGUgPSBUeXBlZEFycmF5W1BST1RPVFlQRV0gPSBjcmVhdGUoJFR5cGVkQXJyYXlQcm90b3R5cGUkKTtcbiAgICAgIGhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgJ2NvbnN0cnVjdG9yJywgVHlwZWRBcnJheSk7XG4gICAgfSBlbHNlIGlmICghZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgICAgVHlwZWRBcnJheSgxKTtcbiAgICB9KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgICAgbmV3IFR5cGVkQXJyYXkoLTEpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIH0pIHx8ICEkaXRlckRldGVjdChmdW5jdGlvbiAoaXRlcikge1xuICAgICAgbmV3IFR5cGVkQXJyYXkoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICAgIG5ldyBUeXBlZEFycmF5KG51bGwpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgICAgbmV3IFR5cGVkQXJyYXkoMS41KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICAgIG5ldyBUeXBlZEFycmF5KGl0ZXIpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIH0sIHRydWUpKSB7XG4gICAgICBUeXBlZEFycmF5ID0gd3JhcHBlcihmdW5jdGlvbiAodGhhdCwgZGF0YSwgJG9mZnNldCwgJGxlbmd0aCkge1xuICAgICAgICBhbkluc3RhbmNlKHRoYXQsIFR5cGVkQXJyYXksIE5BTUUpO1xuICAgICAgICB2YXIga2xhc3M7XG4gICAgICAgIC8vIGB3c2AgbW9kdWxlIGJ1ZywgdGVtcG9yYXJpbHkgcmVtb3ZlIHZhbGlkYXRpb24gbGVuZ3RoIGZvciBVaW50OEFycmF5XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJzb2NrZXRzL3dzL3B1bGwvNjQ1XG4gICAgICAgIGlmICghaXNPYmplY3QoZGF0YSkpIHJldHVybiBuZXcgQmFzZSh0b0luZGV4KGRhdGEpKTtcbiAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiAkQXJyYXlCdWZmZXIgfHwgKGtsYXNzID0gY2xhc3NvZihkYXRhKSkgPT0gQVJSQVlfQlVGRkVSIHx8IGtsYXNzID09IFNIQVJFRF9CVUZGRVIpIHtcbiAgICAgICAgICByZXR1cm4gJGxlbmd0aCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IG5ldyBCYXNlKGRhdGEsIHRvT2Zmc2V0KCRvZmZzZXQsIEJZVEVTKSwgJGxlbmd0aClcbiAgICAgICAgICAgIDogJG9mZnNldCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gbmV3IEJhc2UoZGF0YSwgdG9PZmZzZXQoJG9mZnNldCwgQllURVMpKVxuICAgICAgICAgICAgICA6IG5ldyBCYXNlKGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChUWVBFRF9BUlJBWSBpbiBkYXRhKSByZXR1cm4gZnJvbUxpc3QoVHlwZWRBcnJheSwgZGF0YSk7XG4gICAgICAgIHJldHVybiAkZnJvbS5jYWxsKFR5cGVkQXJyYXksIGRhdGEpO1xuICAgICAgfSk7XG4gICAgICBhcnJheUZvckVhY2goVEFDICE9PSBGdW5jdGlvbi5wcm90b3R5cGUgPyBnT1BOKEJhc2UpLmNvbmNhdChnT1BOKFRBQykpIDogZ09QTihCYXNlKSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoIShrZXkgaW4gVHlwZWRBcnJheSkpIGhpZGUoVHlwZWRBcnJheSwga2V5LCBCYXNlW2tleV0pO1xuICAgICAgfSk7XG4gICAgICBUeXBlZEFycmF5W1BST1RPVFlQRV0gPSBUeXBlZEFycmF5UHJvdG90eXBlO1xuICAgICAgaWYgKCFMSUJSQVJZKSBUeXBlZEFycmF5UHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVHlwZWRBcnJheTtcbiAgICB9XG4gICAgdmFyICRuYXRpdmVJdGVyYXRvciA9IFR5cGVkQXJyYXlQcm90b3R5cGVbSVRFUkFUT1JdO1xuICAgIHZhciBDT1JSRUNUX0lURVJfTkFNRSA9ICEhJG5hdGl2ZUl0ZXJhdG9yXG4gICAgICAmJiAoJG5hdGl2ZUl0ZXJhdG9yLm5hbWUgPT0gJ3ZhbHVlcycgfHwgJG5hdGl2ZUl0ZXJhdG9yLm5hbWUgPT0gdW5kZWZpbmVkKTtcbiAgICB2YXIgJGl0ZXJhdG9yID0gJGl0ZXJhdG9ycy52YWx1ZXM7XG4gICAgaGlkZShUeXBlZEFycmF5LCBUWVBFRF9DT05TVFJVQ1RPUiwgdHJ1ZSk7XG4gICAgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBUWVBFRF9BUlJBWSwgTkFNRSk7XG4gICAgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBWSUVXLCB0cnVlKTtcbiAgICBoaWRlKFR5cGVkQXJyYXlQcm90b3R5cGUsIERFRl9DT05TVFJVQ1RPUiwgVHlwZWRBcnJheSk7XG5cbiAgICBpZiAoQ0xBTVBFRCA/IG5ldyBUeXBlZEFycmF5KDEpW1RBR10gIT0gTkFNRSA6ICEoVEFHIGluIFR5cGVkQXJyYXlQcm90b3R5cGUpKSB7XG4gICAgICBkUChUeXBlZEFycmF5UHJvdG90eXBlLCBUQUcsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBOQU1FOyB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBPW05BTUVdID0gVHlwZWRBcnJheTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogKFR5cGVkQXJyYXkgIT0gQmFzZSksIE8pO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlMsIE5BTUUsIHtcbiAgICAgIEJZVEVTX1BFUl9FTEVNRU5UOiBCWVRFU1xuICAgIH0pO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiBmYWlscyhmdW5jdGlvbiAoKSB7IEJhc2Uub2YuY2FsbChUeXBlZEFycmF5LCAxKTsgfSksIE5BTUUsIHtcbiAgICAgIGZyb206ICRmcm9tLFxuICAgICAgb2Y6ICRvZlxuICAgIH0pO1xuXG4gICAgaWYgKCEoQllURVNfUEVSX0VMRU1FTlQgaW4gVHlwZWRBcnJheVByb3RvdHlwZSkpIGhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgQllURVNfUEVSX0VMRU1FTlQsIEJZVEVTKTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5QLCBOQU1FLCBwcm90byk7XG5cbiAgICBzZXRTcGVjaWVzKE5BTUUpO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBGT1JDRURfU0VULCBOQU1FLCB7IHNldDogJHNldCB9KTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIUNPUlJFQ1RfSVRFUl9OQU1FLCBOQU1FLCAkaXRlcmF0b3JzKTtcblxuICAgIGlmICghTElCUkFSWSAmJiBUeXBlZEFycmF5UHJvdG90eXBlLnRvU3RyaW5nICE9IGFycmF5VG9TdHJpbmcpIFR5cGVkQXJyYXlQcm90b3R5cGUudG9TdHJpbmcgPSBhcnJheVRvU3RyaW5nO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICBuZXcgVHlwZWRBcnJheSgxKS5zbGljZSgpO1xuICAgIH0pLCBOQU1FLCB7IHNsaWNlOiAkc2xpY2UgfSk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gWzEsIDJdLnRvTG9jYWxlU3RyaW5nKCkgIT0gbmV3IFR5cGVkQXJyYXkoWzEsIDJdKS50b0xvY2FsZVN0cmluZygpO1xuICAgIH0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICBUeXBlZEFycmF5UHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsIDJdKTtcbiAgICB9KSksIE5BTUUsIHsgdG9Mb2NhbGVTdHJpbmc6ICR0b0xvY2FsZVN0cmluZyB9KTtcblxuICAgIEl0ZXJhdG9yc1tOQU1FXSA9IENPUlJFQ1RfSVRFUl9OQU1FID8gJG5hdGl2ZUl0ZXJhdG9yIDogJGl0ZXJhdG9yO1xuICAgIGlmICghTElCUkFSWSAmJiAhQ09SUkVDVF9JVEVSX05BTUUpIGhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgSVRFUkFUT1IsICRpdGVyYXRvcik7XG4gIH07XG59IGVsc2UgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3R5cGVkLWFycmF5LmpzXG4vLyBtb2R1bGUgaWQgPSAzOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///38\n")},function(module,exports,__webpack_require__){eval("var Map = __webpack_require__(169);\nvar $export = __webpack_require__(0);\nvar shared = __webpack_require__(79)('metadata');\nvar store = shared.store || (shared.store = new (__webpack_require__(172))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhZGF0YS5qcz9jMDJiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBNYXAgPSByZXF1aXJlKCcuL2VzNi5tYXAnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ21ldGFkYXRhJyk7XG52YXIgc3RvcmUgPSBzaGFyZWQuc3RvcmUgfHwgKHNoYXJlZC5zdG9yZSA9IG5ldyAocmVxdWlyZSgnLi9lczYud2Vhay1tYXAnKSkoKSk7XG5cbnZhciBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwID0gZnVuY3Rpb24gKHRhcmdldCwgdGFyZ2V0S2V5LCBjcmVhdGUpIHtcbiAgdmFyIHRhcmdldE1ldGFkYXRhID0gc3RvcmUuZ2V0KHRhcmdldCk7XG4gIGlmICghdGFyZ2V0TWV0YWRhdGEpIHtcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBzdG9yZS5zZXQodGFyZ2V0LCB0YXJnZXRNZXRhZGF0YSA9IG5ldyBNYXAoKSk7XG4gIH1cbiAgdmFyIGtleU1ldGFkYXRhID0gdGFyZ2V0TWV0YWRhdGEuZ2V0KHRhcmdldEtleSk7XG4gIGlmICgha2V5TWV0YWRhdGEpIHtcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB0YXJnZXRNZXRhZGF0YS5zZXQodGFyZ2V0S2V5LCBrZXlNZXRhZGF0YSA9IG5ldyBNYXAoKSk7XG4gIH0gcmV0dXJuIGtleU1ldGFkYXRhO1xufTtcbnZhciBvcmRpbmFyeUhhc093bk1ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gIHZhciBtZXRhZGF0YU1hcCA9IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgZmFsc2UpO1xuICByZXR1cm4gbWV0YWRhdGFNYXAgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogbWV0YWRhdGFNYXAuaGFzKE1ldGFkYXRhS2V5KTtcbn07XG52YXIgb3JkaW5hcnlHZXRPd25NZXRhZGF0YSA9IGZ1bmN0aW9uIChNZXRhZGF0YUtleSwgTywgUCkge1xuICB2YXIgbWV0YWRhdGFNYXAgPSBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIGZhbHNlKTtcbiAgcmV0dXJuIG1ldGFkYXRhTWFwID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBtZXRhZGF0YU1hcC5nZXQoTWV0YWRhdGFLZXkpO1xufTtcbnZhciBvcmRpbmFyeURlZmluZU93bk1ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlLCBPLCBQKSB7XG4gIGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgdHJ1ZSkuc2V0KE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlKTtcbn07XG52YXIgb3JkaW5hcnlPd25NZXRhZGF0YUtleXMgPSBmdW5jdGlvbiAodGFyZ2V0LCB0YXJnZXRLZXkpIHtcbiAgdmFyIG1ldGFkYXRhTWFwID0gZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCh0YXJnZXQsIHRhcmdldEtleSwgZmFsc2UpO1xuICB2YXIga2V5cyA9IFtdO1xuICBpZiAobWV0YWRhdGFNYXApIG1ldGFkYXRhTWFwLmZvckVhY2goZnVuY3Rpb24gKF8sIGtleSkgeyBrZXlzLnB1c2goa2V5KTsgfSk7XG4gIHJldHVybiBrZXlzO1xufTtcbnZhciB0b01ldGFLZXkgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGl0ID09ICdzeW1ib2wnID8gaXQgOiBTdHJpbmcoaXQpO1xufTtcbnZhciBleHAgPSBmdW5jdGlvbiAoTykge1xuICAkZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCBPKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzdG9yZTogc3RvcmUsXG4gIG1hcDogZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCxcbiAgaGFzOiBvcmRpbmFyeUhhc093bk1ldGFkYXRhLFxuICBnZXQ6IG9yZGluYXJ5R2V0T3duTWV0YWRhdGEsXG4gIHNldDogb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSxcbiAga2V5czogb3JkaW5hcnlPd25NZXRhZGF0YUtleXMsXG4gIGtleTogdG9NZXRhS2V5LFxuICBleHA6IGV4cFxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWV0YWRhdGEuanNcbi8vIG1vZHVsZSBpZCA9IDM5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///39\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(41);\nvar IE8_DOM_DEFINE = __webpack_require__(184);\nvar toPrimitive = __webpack_require__(132);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(44) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcz83YWYwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGRQID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzXG4vLyBtb2R1bGUgaWQgPSA0MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///40\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(36);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcz9lZmIzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1vYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDQxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///41\n")},function(module,exports,__webpack_require__){eval("var META = __webpack_require__(48)('meta');\nvar isObject = __webpack_require__(6);\nvar has = __webpack_require__(17);\nvar setDesc = __webpack_require__(11).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(5)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhLmpzP2Q1YTAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIE1FVEEgPSByZXF1aXJlKCcuL191aWQnKSgnbWV0YScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgc2V0RGVzYyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaWQgPSAwO1xudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgRlJFRVpFID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpO1xufSk7XG52YXIgc2V0TWV0YSA9IGZ1bmN0aW9uIChpdCkge1xuICBzZXREZXNjKGl0LCBNRVRBLCB7IHZhbHVlOiB7XG4gICAgaTogJ08nICsgKytpZCwgLy8gb2JqZWN0IElEXG4gICAgdzoge30gICAgICAgICAgLy8gd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSB9KTtcbn07XG52YXIgZmFzdEtleSA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7XG4gIC8vIHJldHVybiBwcmltaXRpdmUgd2l0aCBwcmVmaXhcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG4gIGlmICghaGFzKGl0LCBNRVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gJ0YnO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiAnRSc7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIG9iamVjdCBJRFxuICB9IHJldHVybiBpdFtNRVRBXS5pO1xufTtcbnZhciBnZXRXZWFrID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiB0cnVlO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiBmYWxzZTtcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gaGFzaCB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IHJldHVybiBpdFtNRVRBXS53O1xufTtcbi8vIGFkZCBtZXRhZGF0YSBvbiBmcmVlemUtZmFtaWx5IG1ldGhvZHMgY2FsbGluZ1xudmFyIG9uRnJlZXplID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChGUkVFWkUgJiYgbWV0YS5ORUVEICYmIGlzRXh0ZW5zaWJsZShpdCkgJiYgIWhhcyhpdCwgTUVUQSkpIHNldE1ldGEoaXQpO1xuICByZXR1cm4gaXQ7XG59O1xudmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgS0VZOiBNRVRBLFxuICBORUVEOiBmYWxzZSxcbiAgZmFzdEtleTogZmFzdEtleSxcbiAgZ2V0V2VhazogZ2V0V2VhayxcbiAgb25GcmVlemU6IG9uRnJlZXplXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhLmpzXG4vLyBtb2R1bGUgaWQgPSA0MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///42\n")},function(module,exports,__webpack_require__){eval("// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(8)('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(18)(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanM/NDYxMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMi4xLjMuMzEgQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG52YXIgVU5TQ09QQUJMRVMgPSByZXF1aXJlKCcuL193a3MnKSgndW5zY29wYWJsZXMnKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuaWYgKEFycmF5UHJvdG9bVU5TQ09QQUJMRVNdID09IHVuZGVmaW5lZCkgcmVxdWlyZSgnLi9faGlkZScpKEFycmF5UHJvdG8sIFVOU0NPUEFCTEVTLCB7fSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgQXJyYXlQcm90b1tVTlNDT1BBQkxFU11ba2V5XSA9IHRydWU7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanNcbi8vIG1vZHVsZSBpZCA9IDQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///43\n")},function(module,exports,__webpack_require__){eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(66)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzP2Y4NGQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanNcbi8vIG1vZHVsZSBpZCA9IDQ0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///44\n")},function(module,exports,__webpack_require__){eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(187);\nvar defined = __webpack_require__(130);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NGRjNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///45\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(465), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2pzb24vc3RyaW5naWZ5LmpzPzlhZjEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5XCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2pzb24vc3RyaW5naWZ5LmpzXG4vLyBtb2R1bGUgaWQgPSA0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n')},function(module,exports){eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzPzdkNGQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcHJvcGVydHktZGVzYy5qc1xuLy8gbW9kdWxlIGlkID0gNDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///47\n")},function(module,exports){eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL191aWQuanM/YmE1NCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaWQgPSAwO1xudmFyIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdWlkLmpzXG4vLyBtb2R1bGUgaWQgPSA0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///48\n")},function(module,exports){eval("module.exports = false;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19saWJyYXJ5LmpzPzU3NzkiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbGlicmFyeS5qc1xuLy8gbW9kdWxlIGlkID0gNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(150);\nvar enumBugKeys = __webpack_require__(104);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qta2V5cy5qcz80MjFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSA1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///50\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(33);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcz9jZThmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///51\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(3);\nvar dPs = __webpack_require__(151);\nvar enumBugKeys = __webpack_require__(104);\nvar IE_PROTO = __webpack_require__(103)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(101)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(105).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzP2VmMjkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBkUHMgPSByZXF1aXJlKCcuL19vYmplY3QtZHBzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgRW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBjcmVhdGVEaWN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdpZnJhbWUnKTtcbiAgdmFyIGkgPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIGd0ID0gJz4nO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICByZXF1aXJlKCcuL19odG1sJykuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGktLSkgZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tpXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZFBzKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA1MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///52\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(150);\nvar hiddenKeys = __webpack_require__(104).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wbi5qcz81OWMzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi43IC8gMTUuMi4zLjQgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKS5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BuLmpzXG4vLyBtb2R1bGUgaWQgPSA1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///53\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(4);\nvar dP = __webpack_require__(11);\nvar DESCRIPTORS = __webpack_require__(10);\nvar SPECIES = __webpack_require__(8)('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtc3BlY2llcy5qcz8wODQ5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZKSB7XG4gIHZhciBDID0gZ2xvYmFsW0tFWV07XG4gIGlmIChERVNDUklQVE9SUyAmJiBDICYmICFDW1NQRUNJRVNdKSBkUC5mKEMsIFNQRUNJRVMsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9XG4gIH0pO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDU0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///54\n")},function(module,exports){eval("module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hbi1pbnN0YW5jZS5qcz9mNDZhIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSwgZm9yYmlkZGVuRmllbGQpIHtcbiAgaWYgKCEoaXQgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikgfHwgKGZvcmJpZGRlbkZpZWxkICE9PSB1bmRlZmluZWQgJiYgZm9yYmlkZGVuRmllbGQgaW4gaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKG5hbWUgKyAnOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hbi1pbnN0YW5jZS5qc1xuLy8gbW9kdWxlIGlkID0gNTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///55\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(27);\nvar call = __webpack_require__(162);\nvar isArrayIter = __webpack_require__(117);\nvar anObject = __webpack_require__(3);\nvar toLength = __webpack_require__(12);\nvar getIterFn = __webpack_require__(119);\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mb3Itb2YuanM/YmU2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4vX2l0ZXItY2FsbCcpO1xudmFyIGlzQXJyYXlJdGVyID0gcmVxdWlyZSgnLi9faXMtYXJyYXktaXRlcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBnZXRJdGVyRm4gPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIEJSRUFLID0ge307XG52YXIgUkVUVVJOID0ge307XG52YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCBlbnRyaWVzLCBmbiwgdGhhdCwgSVRFUkFUT1IpIHtcbiAgdmFyIGl0ZXJGbiA9IElURVJBVE9SID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcmFibGU7IH0gOiBnZXRJdGVyRm4oaXRlcmFibGUpO1xuICB2YXIgZiA9IGN0eChmbiwgdGhhdCwgZW50cmllcyA/IDIgOiAxKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCwgc3RlcCwgaXRlcmF0b3IsIHJlc3VsdDtcbiAgaWYgKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ZXJhYmxlICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvclxuICBpZiAoaXNBcnJheUl0ZXIoaXRlckZuKSkgZm9yIChsZW5ndGggPSB0b0xlbmd0aChpdGVyYWJsZS5sZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgIHJlc3VsdCA9IGVudHJpZXMgPyBmKGFuT2JqZWN0KHN0ZXAgPSBpdGVyYWJsZVtpbmRleF0pWzBdLCBzdGVwWzFdKSA6IGYoaXRlcmFibGVbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIGZvciAoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChpdGVyYWJsZSk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTspIHtcbiAgICByZXN1bHQgPSBjYWxsKGl0ZXJhdG9yLCBmLCBzdGVwLnZhbHVlLCBlbnRyaWVzKTtcbiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcbmV4cG9ydHMuQlJFQUsgPSBCUkVBSztcbmV4cG9ydHMuUkVUVVJOID0gUkVUVVJOO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mb3Itb2YuanNcbi8vIG1vZHVsZSBpZCA9IDU2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n")},function(module,exports,__webpack_require__){eval("var redefine = __webpack_require__(19);\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZWRlZmluZS1hbGwuanM/MDM1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNyY1trZXldLCBzYWZlKTtcbiAgcmV0dXJuIHRhcmdldDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qc1xuLy8gbW9kdWxlIGlkID0gNTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///57\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(40);\nvar createDesc = __webpack_require__(73);\nmodule.exports = __webpack_require__(44) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanM/ODQ5YyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qc1xuLy8gbW9kdWxlIGlkID0gNThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///58\n")},function(module,exports){eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcz8wZjYyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzXG4vLyBtb2R1bGUgaWQgPSA1OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///59\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(455), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzY3MWUiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA2MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///60\n')},function(module,exports,__webpack_require__){eval("var def = __webpack_require__(11).f;\nvar has = __webpack_require__(17);\nvar TAG = __webpack_require__(8)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qcz9jOThiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkZWYgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgdGFnLCBzdGF0KSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKSBkZWYoaXQsIFRBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWcgfSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qc1xuLy8gbW9kdWxlIGlkID0gNjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///61\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar defined = __webpack_require__(32);\nvar fails = __webpack_require__(5);\nvar spaces = __webpack_require__(107);\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctdHJpbS5qcz82MjY3Il0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgc3BhY2VzID0gcmVxdWlyZSgnLi9fc3RyaW5nLXdzJyk7XG52YXIgc3BhY2UgPSAnWycgKyBzcGFjZXMgKyAnXSc7XG52YXIgbm9uID0gJ1xcdTIwMGJcXHUwMDg1JztcbnZhciBsdHJpbSA9IFJlZ0V4cCgnXicgKyBzcGFjZSArIHNwYWNlICsgJyonKTtcbnZhciBydHJpbSA9IFJlZ0V4cChzcGFjZSArIHNwYWNlICsgJyokJyk7XG5cbnZhciBleHBvcnRlciA9IGZ1bmN0aW9uIChLRVksIGV4ZWMsIEFMSUFTKSB7XG4gIHZhciBleHAgPSB7fTtcbiAgdmFyIEZPUkNFID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhIXNwYWNlc1tLRVldKCkgfHwgbm9uW0tFWV0oKSAhPSBub247XG4gIH0pO1xuICB2YXIgZm4gPSBleHBbS0VZXSA9IEZPUkNFID8gZXhlYyh0cmltKSA6IHNwYWNlc1tLRVldO1xuICBpZiAoQUxJQVMpIGV4cFtBTElBU10gPSBmbjtcbiAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBGT1JDRSwgJ1N0cmluZycsIGV4cCk7XG59O1xuXG4vLyAxIC0+IFN0cmluZyN0cmltTGVmdFxuLy8gMiAtPiBTdHJpbmcjdHJpbVJpZ2h0XG4vLyAzIC0+IFN0cmluZyN0cmltXG52YXIgdHJpbSA9IGV4cG9ydGVyLnRyaW0gPSBmdW5jdGlvbiAoc3RyaW5nLCBUWVBFKSB7XG4gIHN0cmluZyA9IFN0cmluZyhkZWZpbmVkKHN0cmluZykpO1xuICBpZiAoVFlQRSAmIDEpIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKGx0cmltLCAnJyk7XG4gIGlmIChUWVBFICYgMikgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UocnRyaW0sICcnKTtcbiAgcmV0dXJuIHN0cmluZztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0ZXI7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy10cmltLmpzXG4vLyBtb2R1bGUgaWQgPSA2MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///62\n")},function(module,exports){eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyYXRvcnMuanM/NmNkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyYXRvcnMuanNcbi8vIG1vZHVsZSBpZCA9IDYzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///63\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL192YWxpZGF0ZS1jb2xsZWN0aW9uLmpzP2NlYWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgVFlQRSkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSB8fCBpdC5fdCAhPT0gVFlQRSkgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdmFsaWRhdGUtY29sbGVjdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gNjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///64\n")},function(module,exports,__webpack_require__){eval("// optional / simple context binding\nvar aFunction = __webpack_require__(94);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanNcbi8vIG1vZHVsZSBpZCA9IDY1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///65\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzXG4vLyBtb2R1bGUgaWQgPSA2NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///66\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(186);\nvar enumBugKeys = __webpack_require__(137);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gNjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///67\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(78);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n }\n\n return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanM/Y2YwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHNlbGYsIGNhbGwpIHtcbiAgaWYgKCFzZWxmKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNhbGwgJiYgKCh0eXBlb2YgY2FsbCA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoY2FsbCkpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzXG4vLyBtb2R1bGUgaWQgPSA2OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///68\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(457);\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(203);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(78);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== "function" && superClass !== null) {\n throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzPzNkZmQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKTtcblxudmFyIF9zZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXRQcm90b3R5cGVPZik7XG5cbnZhciBfY3JlYXRlID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2NyZWF0ZVwiKTtcblxudmFyIF9jcmVhdGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlKTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArICh0eXBlb2Ygc3VwZXJDbGFzcyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoc3VwZXJDbGFzcykpKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9ICgwLCBfY3JlYXRlMi5kZWZhdWx0KShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mMi5kZWZhdWx0ID8gKDAsIF9zZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzcztcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzXG4vLyBtb2R1bGUgaWQgPSA2OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///69\n')},function(module,exports,__webpack_require__){eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(28);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pb2JqZWN0LmpzPzQzYTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///70\n")},function(module,exports){eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtcGllLmpzPzYzNTYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1waWUuanNcbi8vIG1vZHVsZSBpZCA9IDcxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///71\n")},function(module,exports,__webpack_require__){eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(28);\nvar TAG = __webpack_require__(8)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jbGFzc29mLmpzP2MwMmQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jbGFzc29mLmpzXG4vLyBtb2R1bGUgaWQgPSA3MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///72\n")},function(module,exports){eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanNcbi8vIG1vZHVsZSBpZCA9IDczXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///73\n")},function(module,exports){eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcz9mZGI0Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzXG4vLyBtb2R1bGUgaWQgPSA3NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///74\n")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanNcbi8vIG1vZHVsZSBpZCA9IDc1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///75\n")},function(module,exports,__webpack_require__){eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(130);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///76\n")},function(module,exports){eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanM/MzY5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtcGllLmpzXG4vLyBtb2R1bGUgaWQgPSA3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///77\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(441);\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(443);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {\n return typeof obj === "undefined" ? "undefined" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcz9hNDU2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2l0ZXJhdG9yID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yXCIpO1xuXG52YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTtcblxudmFyIF9zeW1ib2wgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9zeW1ib2xcIik7XG5cbnZhciBfc3ltYm9sMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N5bWJvbCk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgX2l0ZXJhdG9yMi5kZWZhdWx0ID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgX3R5cGVvZihfaXRlcmF0b3IyLmRlZmF1bHQpID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YuanNcbi8vIG1vZHVsZSBpZCA9IDc4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///78\n')},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zaGFyZWQuanM/NTU2OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB7fSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zaGFyZWQuanNcbi8vIG1vZHVsZSBpZCA9IDc5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///79\n")},function(module,exports,__webpack_require__){eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(24);\nvar toLength = __webpack_require__(12);\nvar toAbsoluteIndex = __webpack_require__(51);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qcz9hMmRlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qc1xuLy8gbW9kdWxlIGlkID0gODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///80\n")},function(module,exports){eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wcy5qcz82MzUzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BzLmpzXG4vLyBtb2R1bGUgaWQgPSA4MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///81\n")},function(module,exports,__webpack_require__){eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(28);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1hcnJheS5qcz81Y2VkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMi4yIElzQXJyYXkoYXJndW1lbnQpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIGNvZihhcmcpID09ICdBcnJheSc7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1hcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gODJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///82\n")},function(module,exports,__webpack_require__){eval("// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(6);\nvar cof = __webpack_require__(28);\nvar MATCH = __webpack_require__(8)('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1yZWdleHAuanM/YmI0MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuOCBJc1JlZ0V4cChhcmd1bWVudClcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIE1BVENIID0gcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXNSZWdFeHA7XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgKChpc1JlZ0V4cCA9IGl0W01BVENIXSkgIT09IHVuZGVmaW5lZCA/ICEhaXNSZWdFeHAgOiBjb2YoaXQpID09ICdSZWdFeHAnKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLXJlZ2V4cC5qc1xuLy8gbW9kdWxlIGlkID0gODNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///83\n")},function(module,exports,__webpack_require__){eval("var ITERATOR = __webpack_require__(8)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWRldGVjdC5qcz9hYTRjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uICgpIHsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBza2lwQ2xvc2luZykge1xuICBpZiAoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNhZmUgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gWzddO1xuICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpO1xuICAgIGl0ZXIubmV4dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgZG9uZTogc2FmZSA9IHRydWUgfTsgfTtcbiAgICBhcnJbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcjsgfTtcbiAgICBleGVjKGFycik7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA4NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///84\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(3);\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mbGFncy5qcz9kMjkxIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDIxLjIuNS4zIGdldCBSZWdFeHAucHJvdG90eXBlLmZsYWdzXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IGFuT2JqZWN0KHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIGlmICh0aGF0Lmdsb2JhbCkgcmVzdWx0ICs9ICdnJztcbiAgaWYgKHRoYXQuaWdub3JlQ2FzZSkgcmVzdWx0ICs9ICdpJztcbiAgaWYgKHRoYXQubXVsdGlsaW5lKSByZXN1bHQgKz0gJ20nO1xuICBpZiAodGhhdC51bmljb2RlKSByZXN1bHQgKz0gJ3UnO1xuICBpZiAodGhhdC5zdGlja3kpIHJlc3VsdCArPSAneSc7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mbGFncy5qc1xuLy8gbW9kdWxlIGlkID0gODVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///85\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar hide = __webpack_require__(18);\nvar redefine = __webpack_require__(19);\nvar fails = __webpack_require__(5);\nvar defined = __webpack_require__(32);\nvar wks = __webpack_require__(8);\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n var fns = exec(defined, SYMBOL, ''[KEY]);\n var strfn = fns[0];\n var rxfn = fns[1];\n if (fails(function () {\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n })) {\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19maXgtcmUtd2tzLmpzPzU2MGQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xudmFyIHdrcyA9IHJlcXVpcmUoJy4vX3drcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGxlbmd0aCwgZXhlYykge1xuICB2YXIgU1lNQk9MID0gd2tzKEtFWSk7XG4gIHZhciBmbnMgPSBleGVjKGRlZmluZWQsIFNZTUJPTCwgJydbS0VZXSk7XG4gIHZhciBzdHJmbiA9IGZuc1swXTtcbiAgdmFyIHJ4Zm4gPSBmbnNbMV07XG4gIGlmIChmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIE8gPSB7fTtcbiAgICBPW1NZTUJPTF0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9O1xuICAgIHJldHVybiAnJ1tLRVldKE8pICE9IDc7XG4gIH0pKSB7XG4gICAgcmVkZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgS0VZLCBzdHJmbik7XG4gICAgaGlkZShSZWdFeHAucHJvdG90eXBlLCBTWU1CT0wsIGxlbmd0aCA9PSAyXG4gICAgICAvLyAyMS4yLjUuOCBSZWdFeHAucHJvdG90eXBlW0BAcmVwbGFjZV0oc3RyaW5nLCByZXBsYWNlVmFsdWUpXG4gICAgICAvLyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KVxuICAgICAgPyBmdW5jdGlvbiAoc3RyaW5nLCBhcmcpIHsgcmV0dXJuIHJ4Zm4uY2FsbChzdHJpbmcsIHRoaXMsIGFyZyk7IH1cbiAgICAgIC8vIDIxLjIuNS42IFJlZ0V4cC5wcm90b3R5cGVbQEBtYXRjaF0oc3RyaW5nKVxuICAgICAgLy8gMjEuMi41LjkgUmVnRXhwLnByb3RvdHlwZVtAQHNlYXJjaF0oc3RyaW5nKVxuICAgICAgOiBmdW5jdGlvbiAoc3RyaW5nKSB7IHJldHVybiByeGZuLmNhbGwoc3RyaW5nLCB0aGlzKTsgfVxuICAgICk7XG4gIH1cbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZpeC1yZS13a3MuanNcbi8vIG1vZHVsZSBpZCA9IDg2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///86\n")},function(module,exports,__webpack_require__){eval("// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(3);\nvar aFunction = __webpack_require__(16);\nvar SPECIES = __webpack_require__(8)('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zcGVjaWVzLWNvbnN0cnVjdG9yLmpzP2VjZWQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4zLjIwIFNwZWNpZXNDb25zdHJ1Y3RvcihPLCBkZWZhdWx0Q29uc3RydWN0b3IpXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBEKSB7XG4gIHZhciBDID0gYW5PYmplY3QoTykuY29uc3RydWN0b3I7XG4gIHZhciBTO1xuICByZXR1cm4gQyA9PT0gdW5kZWZpbmVkIHx8IChTID0gYW5PYmplY3QoQylbU1BFQ0lFU10pID09IHVuZGVmaW5lZCA/IEQgOiBhRnVuY3Rpb24oUyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zcGVjaWVzLWNvbnN0cnVjdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA4N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///87\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(4);\nvar $export = __webpack_require__(0);\nvar redefine = __webpack_require__(19);\nvar redefineAll = __webpack_require__(57);\nvar meta = __webpack_require__(42);\nvar forOf = __webpack_require__(56);\nvar anInstance = __webpack_require__(55);\nvar isObject = __webpack_require__(6);\nvar fails = __webpack_require__(5);\nvar $iterDetect = __webpack_require__(84);\nvar setToStringTag = __webpack_require__(61);\nvar inheritIfRequired = __webpack_require__(108);\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2xsZWN0aW9uLmpzP2QxMTgiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBtZXRhID0gcmVxdWlyZSgnLi9fbWV0YScpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgJGl0ZXJEZXRlY3QgPSByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4vX2luaGVyaXQtaWYtcmVxdWlyZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTkFNRSwgd3JhcHBlciwgbWV0aG9kcywgY29tbW9uLCBJU19NQVAsIElTX1dFQUspIHtcbiAgdmFyIEJhc2UgPSBnbG9iYWxbTkFNRV07XG4gIHZhciBDID0gQmFzZTtcbiAgdmFyIEFEREVSID0gSVNfTUFQID8gJ3NldCcgOiAnYWRkJztcbiAgdmFyIHByb3RvID0gQyAmJiBDLnByb3RvdHlwZTtcbiAgdmFyIE8gPSB7fTtcbiAgdmFyIGZpeE1ldGhvZCA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgICB2YXIgZm4gPSBwcm90b1tLRVldO1xuICAgIHJlZGVmaW5lKHByb3RvLCBLRVksXG4gICAgICBLRVkgPT0gJ2RlbGV0ZScgPyBmdW5jdGlvbiAoYSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3QoYSkgPyBmYWxzZSA6IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhKTtcbiAgICAgIH0gOiBLRVkgPT0gJ2hhcycgPyBmdW5jdGlvbiBoYXMoYSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3QoYSkgPyBmYWxzZSA6IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhKTtcbiAgICAgIH0gOiBLRVkgPT0gJ2dldCcgPyBmdW5jdGlvbiBnZXQoYSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3QoYSkgPyB1bmRlZmluZWQgOiBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSk7XG4gICAgICB9IDogS0VZID09ICdhZGQnID8gZnVuY3Rpb24gYWRkKGEpIHsgZm4uY2FsbCh0aGlzLCBhID09PSAwID8gMCA6IGEpOyByZXR1cm4gdGhpczsgfVxuICAgICAgICA6IGZ1bmN0aW9uIHNldChhLCBiKSB7IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhLCBiKTsgcmV0dXJuIHRoaXM7IH1cbiAgICApO1xuICB9O1xuICBpZiAodHlwZW9mIEMgIT0gJ2Z1bmN0aW9uJyB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIG5ldyBDKCkuZW50cmllcygpLm5leHQoKTtcbiAgfSkpKSB7XG4gICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3JcbiAgICBDID0gY29tbW9uLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpO1xuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCBtZXRob2RzKTtcbiAgICBtZXRhLk5FRUQgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHZhciBpbnN0YW5jZSA9IG5ldyBDKCk7XG4gICAgLy8gZWFybHkgaW1wbGVtZW50YXRpb25zIG5vdCBzdXBwb3J0cyBjaGFpbmluZ1xuICAgIHZhciBIQVNOVF9DSEFJTklORyA9IGluc3RhbmNlW0FEREVSXShJU19XRUFLID8ge30gOiAtMCwgMSkgIT0gaW5zdGFuY2U7XG4gICAgLy8gVjggfiAgQ2hyb21pdW0gNDAtIHdlYWstY29sbGVjdGlvbnMgdGhyb3dzIG9uIHByaW1pdGl2ZXMsIGJ1dCBzaG91bGQgcmV0dXJuIGZhbHNlXG4gICAgdmFyIFRIUk9XU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24gKCkgeyBpbnN0YW5jZS5oYXMoMSk7IH0pO1xuICAgIC8vIG1vc3QgZWFybHkgaW1wbGVtZW50YXRpb25zIGRvZXNuJ3Qgc3VwcG9ydHMgaXRlcmFibGVzLCBtb3N0IG1vZGVybiAtIG5vdCBjbG9zZSBpdCBjb3JyZWN0bHlcbiAgICB2YXIgQUNDRVBUX0lURVJBQkxFUyA9ICRpdGVyRGV0ZWN0KGZ1bmN0aW9uIChpdGVyKSB7IG5ldyBDKGl0ZXIpOyB9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICAvLyBmb3IgZWFybHkgaW1wbGVtZW50YXRpb25zIC0wIGFuZCArMCBub3QgdGhlIHNhbWVcbiAgICB2YXIgQlVHR1lfWkVSTyA9ICFJU19XRUFLICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFY4IH4gQ2hyb21pdW0gNDItIGZhaWxzIG9ubHkgd2l0aCA1KyBlbGVtZW50c1xuICAgICAgdmFyICRpbnN0YW5jZSA9IG5ldyBDKCk7XG4gICAgICB2YXIgaW5kZXggPSA1O1xuICAgICAgd2hpbGUgKGluZGV4LS0pICRpbnN0YW5jZVtBRERFUl0oaW5kZXgsIGluZGV4KTtcbiAgICAgIHJldHVybiAhJGluc3RhbmNlLmhhcygtMCk7XG4gICAgfSk7XG4gICAgaWYgKCFBQ0NFUFRfSVRFUkFCTEVTKSB7XG4gICAgICBDID0gd3JhcHBlcihmdW5jdGlvbiAodGFyZ2V0LCBpdGVyYWJsZSkge1xuICAgICAgICBhbkluc3RhbmNlKHRhcmdldCwgQywgTkFNRSk7XG4gICAgICAgIHZhciB0aGF0ID0gaW5oZXJpdElmUmVxdWlyZWQobmV3IEJhc2UoKSwgdGFyZ2V0LCBDKTtcbiAgICAgICAgaWYgKGl0ZXJhYmxlICE9IHVuZGVmaW5lZCkgZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGhhdFtBRERFUl0sIHRoYXQpO1xuICAgICAgICByZXR1cm4gdGhhdDtcbiAgICAgIH0pO1xuICAgICAgQy5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgIHByb3RvLmNvbnN0cnVjdG9yID0gQztcbiAgICB9XG4gICAgaWYgKFRIUk9XU19PTl9QUklNSVRJVkVTIHx8IEJVR0dZX1pFUk8pIHtcbiAgICAgIGZpeE1ldGhvZCgnZGVsZXRlJyk7XG4gICAgICBmaXhNZXRob2QoJ2hhcycpO1xuICAgICAgSVNfTUFQICYmIGZpeE1ldGhvZCgnZ2V0Jyk7XG4gICAgfVxuICAgIGlmIChCVUdHWV9aRVJPIHx8IEhBU05UX0NIQUlOSU5HKSBmaXhNZXRob2QoQURERVIpO1xuICAgIC8vIHdlYWsgY29sbGVjdGlvbnMgc2hvdWxkIG5vdCBjb250YWlucyAuY2xlYXIgbWV0aG9kXG4gICAgaWYgKElTX1dFQUsgJiYgcHJvdG8uY2xlYXIpIGRlbGV0ZSBwcm90by5jbGVhcjtcbiAgfVxuXG4gIHNldFRvU3RyaW5nVGFnKEMsIE5BTUUpO1xuXG4gIE9bTkFNRV0gPSBDO1xuICAkZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqIChDICE9IEJhc2UpLCBPKTtcblxuICBpZiAoIUlTX1dFQUspIGNvbW1vbi5zZXRTdHJvbmcoQywgTkFNRSwgSVNfTUFQKTtcblxuICByZXR1cm4gQztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24uanNcbi8vIG1vZHVsZSBpZCA9IDg4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///88\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar hide = __webpack_require__(18);\nvar uid = __webpack_require__(48);\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190eXBlZC5qcz9kM2I5Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFRZUEVEID0gdWlkKCd0eXBlZF9hcnJheScpO1xudmFyIFZJRVcgPSB1aWQoJ3ZpZXcnKTtcbnZhciBBQlYgPSAhIShnbG9iYWwuQXJyYXlCdWZmZXIgJiYgZ2xvYmFsLkRhdGFWaWV3KTtcbnZhciBDT05TVFIgPSBBQlY7XG52YXIgaSA9IDA7XG52YXIgbCA9IDk7XG52YXIgVHlwZWQ7XG5cbnZhciBUeXBlZEFycmF5Q29uc3RydWN0b3JzID0gKFxuICAnSW50OEFycmF5LFVpbnQ4QXJyYXksVWludDhDbGFtcGVkQXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXknXG4pLnNwbGl0KCcsJyk7XG5cbndoaWxlIChpIDwgbCkge1xuICBpZiAoVHlwZWQgPSBnbG9iYWxbVHlwZWRBcnJheUNvbnN0cnVjdG9yc1tpKytdXSkge1xuICAgIGhpZGUoVHlwZWQucHJvdG90eXBlLCBUWVBFRCwgdHJ1ZSk7XG4gICAgaGlkZShUeXBlZC5wcm90b3R5cGUsIFZJRVcsIHRydWUpO1xuICB9IGVsc2UgQ09OU1RSID0gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBBQlY6IEFCVixcbiAgQ09OU1RSOiBDT05TVFIsXG4gIFRZUEVEOiBUWVBFRCxcbiAgVklFVzogVklFV1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdHlwZWQuanNcbi8vIG1vZHVsZSBpZCA9IDg5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///89\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// Forced replacement prototype accessors methods\nmodule.exports = __webpack_require__(49) || !__webpack_require__(5)(function () {\n var K = Math.random();\n // In FF throws only define methods\n // eslint-disable-next-line no-undef, no-useless-call\n __defineSetter__.call(null, K, function () { /* empty */ });\n delete __webpack_require__(4)[K];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZm9yY2VkLXBhbS5qcz83NjZlIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEZvcmNlZCByZXBsYWNlbWVudCBwcm90b3R5cGUgYWNjZXNzb3JzIG1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fbGlicmFyeScpIHx8ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgdmFyIEsgPSBNYXRoLnJhbmRvbSgpO1xuICAvLyBJbiBGRiB0aHJvd3Mgb25seSBkZWZpbmUgbWV0aG9kc1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWYsIG5vLXVzZWxlc3MtY2FsbFxuICBfX2RlZmluZVNldHRlcl9fLmNhbGwobnVsbCwgSywgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbiAgZGVsZXRlIHJlcXVpcmUoJy4vX2dsb2JhbCcpW0tdO1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1mb3JjZWQtcGFtLmpzXG4vLyBtb2R1bGUgaWQgPSA5MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///90\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = __webpack_require__(0);\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtY29sbGVjdGlvbi1vZi5qcz9kMjNkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTExFQ1RJT04pIHtcbiAgJGV4cG9ydCgkZXhwb3J0LlMsIENPTExFQ1RJT04sIHsgb2Y6IGZ1bmN0aW9uIG9mKCkge1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBBID0gbmV3IEFycmF5KGxlbmd0aCk7XG4gICAgd2hpbGUgKGxlbmd0aC0tKSBBW2xlbmd0aF0gPSBhcmd1bWVudHNbbGVuZ3RoXTtcbiAgICByZXR1cm4gbmV3IHRoaXMoQSk7XG4gIH0gfSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtY29sbGVjdGlvbi1vZi5qc1xuLy8gbW9kdWxlIGlkID0gOTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///91\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = __webpack_require__(0);\nvar aFunction = __webpack_require__(16);\nvar ctx = __webpack_require__(27);\nvar forOf = __webpack_require__(56);\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtY29sbGVjdGlvbi1mcm9tLmpzPzg4YWEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09MTEVDVElPTikge1xuICAkZXhwb3J0KCRleHBvcnQuUywgQ09MTEVDVElPTiwgeyBmcm9tOiBmdW5jdGlvbiBmcm9tKHNvdXJjZSAvKiAsIG1hcEZuLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIG1hcEZuID0gYXJndW1lbnRzWzFdO1xuICAgIHZhciBtYXBwaW5nLCBBLCBuLCBjYjtcbiAgICBhRnVuY3Rpb24odGhpcyk7XG4gICAgbWFwcGluZyA9IG1hcEZuICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG1hcHBpbmcpIGFGdW5jdGlvbihtYXBGbik7XG4gICAgaWYgKHNvdXJjZSA9PSB1bmRlZmluZWQpIHJldHVybiBuZXcgdGhpcygpO1xuICAgIEEgPSBbXTtcbiAgICBpZiAobWFwcGluZykge1xuICAgICAgbiA9IDA7XG4gICAgICBjYiA9IGN0eChtYXBGbiwgYXJndW1lbnRzWzJdLCAyKTtcbiAgICAgIGZvck9mKHNvdXJjZSwgZmFsc2UsIGZ1bmN0aW9uIChuZXh0SXRlbSkge1xuICAgICAgICBBLnB1c2goY2IobmV4dEl0ZW0sIG4rKykpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvck9mKHNvdXJjZSwgZmFsc2UsIEEucHVzaCwgQSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgdGhpcyhBKTtcbiAgfSB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NldC1jb2xsZWN0aW9uLWZyb20uanNcbi8vIG1vZHVsZSBpZCA9IDkyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///92\n")},function(module,exports){eval("module.exports = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qc1xuLy8gbW9kdWxlIGlkID0gOTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///93\n")},function(module,exports){eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gOTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///94\n")},function(module,exports){eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qc1xuLy8gbW9kdWxlIGlkID0gOTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///95\n")},function(module,exports,__webpack_require__){eval("var def = __webpack_require__(40).f;\nvar has = __webpack_require__(59);\nvar TAG = __webpack_require__(23)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdiYTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanNcbi8vIG1vZHVsZSBpZCA9IDk2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///96\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(435), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9hc3NpZ24uanM/YzI4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2Fzc2lnblwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvYXNzaWduLmpzXG4vLyBtb2R1bGUgaWQgPSA5N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///97\n')},function(module,exports,__webpack_require__){eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(21);\nvar core = __webpack_require__(13);\nvar fails = __webpack_require__(66);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanM/YmFhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qtc2FwLmpzXG4vLyBtb2R1bGUgaWQgPSA5OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///98\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(14);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('address-allocation'); /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\n// Log system\n\n\n// TODO: this could not be the best way to do a Singleton but at this moment it works;\n\nvar instance = void 0;\n\n/**\r\n * Class will ask to the message node for addresses\r\n */\n\nvar AddressAllocation = function () {\n /* private\r\n _url: URL\r\n _bus: MiniBus\r\n */\n\n /**\r\n * Create an Address Allocation\r\n * @param {URL.URL} url - url from who is sending the message\r\n * @param {MiniBus} bus - MiniBus used for address allocation\r\n */\n function AddressAllocation(url, bus, registry) {\n (0, _classCallCheck3.default)(this, AddressAllocation);\n\n\n if (!instance) {\n this._url = url + '/address-allocation';\n this._bus = bus;\n this._registry = registry;\n instance = this;\n } else {\n return instance;\n }\n }\n\n (0, _createClass3.default)(AddressAllocation, [{\n key: 'create',\n\n\n /**\r\n *\r\n * Ask for creation of a number of Hyperty addresses, to the domain message node.\r\n *\r\n * @param {Domain} domain - domain of the message node\r\n * @param {Number} number - number of address to be allocated\r\n * @param {Descriptor} info - descriptor to search for the hyperty (TODO:// this should be confirmed)\r\n * @see https://github.com/reTHINK-project/specs/blob/master/datamodel/core/hyperty-catalogue/readme.md#catalogue-data-model\r\n * @param {scheme} scheme - scheme of address to be created or reused, like: hyperty, comm, context, etc;\r\n * @param {boolean|URL.HypertyURL} reuseURL - reuseURL is used to reuse the hypertyURL previously registred;\r\n * @returns {Promise} this is Promise and returns an object with the address information\r\n *\r\n * @memberOf AddressAllocation\r\n */\n value: function create(domain, number, info, scheme, reuseURL) {\n\n // // console.log('typeof(reuseURL)', typeof(reuseURL), reuseURL);\n //debugger;\n if (reuseURL) {\n\n if (typeof reuseURL === 'boolean') {\n\n if (reuseURL) {\n return this._reuseAllocatedAddress(domain, number, info, scheme, reuseURL);\n } else {\n return this._allocateNewAddress(domain, scheme, number);\n }\n }\n\n if (typeof reuseURL === 'string' && (0, _utils.isURL)(reuseURL)) {\n //return this._reuseAllocatedAddress(domain, number, info, scheme, reuseURL);\n return new _promise2.default(function (resolve, reject) {\n var value = { newAddress: false, address: [reuseURL] };\n return resolve(value);\n });\n }\n } else {\n log.info('[AddressAllocation] - new address will be allocated');\n\n // if there is no URL saved request a new URL\n return this._allocateNewAddress(domain, scheme, number);\n }\n }\n }, {\n key: '_reuseAllocatedAddress',\n value: function _reuseAllocatedAddress(domain, number, info, scheme, reuseURL) {\n var _this2 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n console.log('REUSETEST - _reuseAllocatedAddress', domain, number, info, scheme, reuseURL);\n _this2._registry.checkRegisteredURLs(info, reuseURL).then(function (urls) {\n console.log('REUSETEST - registeredurls', urls);\n if (urls) {\n log.info('[AddressAllocation - ' + scheme + '] - Reuse URL');\n var value = { newAddress: false, address: urls };\n resolve(value);\n } else {\n\n if (typeof reuseURL === 'string') {\n log.info('[AddressAllocation - reuseURL] - Object ' + reuseURL + ' not found');\n reject('URL Not Found');\n } else if (typeof reuseURL === 'boolean') {\n _this2._allocateNewAddress(domain, scheme, number).then(resolve).catch(reject);\n } else {\n reject('URL Not Found');\n }\n }\n });\n });\n }\n }, {\n key: '_allocateNewAddress',\n value: function _allocateNewAddress(domain, scheme, number) {\n var _this3 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var msg = {\n type: 'create', from: _this3._url, to: 'domain://msg-node.' + domain + '/address-allocation',\n body: { value: { number: number } }\n };\n\n if (scheme !== 'hyperty') msg.body.scheme = scheme;\n\n log.info('[AddressAllocation - ' + scheme + '] - Request new URL');\n\n _this3._bus.postMessage(msg, function (reply) {\n if (reply.body.code === 200) {\n var result = { newAddress: true, address: reply.body.value.allocated };\n resolve(result);\n } else {\n reject(reply.body.desc);\n }\n });\n });\n }\n\n /**\r\n * Send a request to the domain message node, to deallocate one or more addresses\r\n * @param {Domain} domain - Domain of the message node.\r\n * @param {addresses} addresses to request the deallocation\r\n * @returns {Promise} the response by the message node\r\n */\n\n }, {\n key: 'delete',\n value: function _delete(domain, addresses) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var message = {\n type: 'delete', from: _this._url, to: 'domain://msg-node.' + domain + '/address-allocation',\n body: { childrenResources: addresses }\n };\n\n _this._bus.postMessage(message, function (reply) {\n if (reply.body.code === 200) {\n resolve(reply.body.code);\n } else {\n reject(reply.body.desc);\n }\n });\n });\n }\n }, {\n key: 'url',\n\n\n /**\r\n * get the URL value\r\n * @return {string} The url value;\r\n */\n get: function get() {\n return this._url;\n }\n }], [{\n key: 'instance',\n get: function get() {\n if (!instance) {\n throw new Error('The address allocation was not instantiated');\n }\n\n return instance;\n }\n }]);\n return AddressAllocation;\n}();\n\nexports.default = AddressAllocation;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2FsbG9jYXRpb24vQWRkcmVzc0FsbG9jYXRpb24uanM/MWU2YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxyXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxyXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXHJcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xyXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxyXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXHJcbipcclxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuKlxyXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbipcclxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKiovXHJcblxyXG4vLyBMb2cgc3lzdGVtXHJcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XHJcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdhZGRyZXNzLWFsbG9jYXRpb24nKTtcclxuXHJcblxyXG5pbXBvcnQge2lzVVJMfSBmcm9tICcuLi91dGlscy91dGlscyc7XHJcblxyXG4vLyBUT0RPOiB0aGlzIGNvdWxkIG5vdCBiZSB0aGUgYmVzdCB3YXkgdG8gZG8gYSBTaW5nbGV0b24gYnV0IGF0IHRoaXMgbW9tZW50IGl0IHdvcmtzO1xyXG5cclxubGV0IGluc3RhbmNlO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzIHdpbGwgYXNrIHRvIHRoZSBtZXNzYWdlIG5vZGUgZm9yIGFkZHJlc3Nlc1xyXG4gKi9cclxuY2xhc3MgQWRkcmVzc0FsbG9jYXRpb24ge1xyXG4gIC8qIHByaXZhdGVcclxuICBfdXJsOiBVUkxcclxuICBfYnVzOiBNaW5pQnVzXHJcbiAgKi9cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGFuIEFkZHJlc3MgQWxsb2NhdGlvblxyXG4gICAqIEBwYXJhbSAge1VSTC5VUkx9ICAgICAgdXJsIC0gdXJsIGZyb20gd2hvIGlzIHNlbmRpbmcgdGhlIG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gIHtNaW5pQnVzfSAgICAgIGJ1cyAtIE1pbmlCdXMgdXNlZCBmb3IgYWRkcmVzcyBhbGxvY2F0aW9uXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IodXJsLCBidXMsIHJlZ2lzdHJ5KSB7XHJcblxyXG4gICAgaWYgKCFpbnN0YW5jZSkge1xyXG4gICAgICB0aGlzLl91cmwgPSB1cmwgKyAnL2FkZHJlc3MtYWxsb2NhdGlvbic7XHJcbiAgICAgIHRoaXMuX2J1cyA9IGJ1cztcclxuICAgICAgdGhpcy5fcmVnaXN0cnkgPSByZWdpc3RyeTtcclxuICAgICAgaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGluc3RhbmNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldCBpbnN0YW5jZSgpIHtcclxuICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYWRkcmVzcyBhbGxvY2F0aW9uIHdhcyBub3QgaW5zdGFudGlhdGVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGluc3RhbmNlXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnZXQgdGhlIFVSTCB2YWx1ZVxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHVybCB2YWx1ZTtcclxuICAgKi9cclxuICBnZXQgdXJsKCkgeyByZXR1cm4gdGhpcy5fdXJsOyB9XHJcblxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEFzayBmb3IgY3JlYXRpb24gb2YgYSBudW1iZXIgb2YgSHlwZXJ0eSBhZGRyZXNzZXMsIHRvIHRoZSBkb21haW4gbWVzc2FnZSBub2RlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtEb21haW59IGRvbWFpbiAtIGRvbWFpbiBvZiB0aGUgbWVzc2FnZSBub2RlXHJcbiAgICogQHBhcmFtIHtOdW1iZXJ9IG51bWJlciAtIG51bWJlciBvZiBhZGRyZXNzIHRvIGJlIGFsbG9jYXRlZFxyXG4gICAqIEBwYXJhbSB7RGVzY3JpcHRvcn0gaW5mbyAtIGRlc2NyaXB0b3IgdG8gc2VhcmNoIGZvciB0aGUgaHlwZXJ0eSAoVE9ETzovLyB0aGlzIHNob3VsZCBiZSBjb25maXJtZWQpXHJcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L3NwZWNzL2Jsb2IvbWFzdGVyL2RhdGFtb2RlbC9jb3JlL2h5cGVydHktY2F0YWxvZ3VlL3JlYWRtZS5tZCNjYXRhbG9ndWUtZGF0YS1tb2RlbFxyXG4gICAqIEBwYXJhbSB7c2NoZW1lfSBzY2hlbWUgLSBzY2hlbWUgb2YgYWRkcmVzcyB0byBiZSBjcmVhdGVkIG9yIHJldXNlZCwgbGlrZTogaHlwZXJ0eSwgY29tbSwgY29udGV4dCwgZXRjO1xyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbnxVUkwuSHlwZXJ0eVVSTH0gcmV1c2VVUkwgLSByZXVzZVVSTCBpcyB1c2VkIHRvIHJldXNlIHRoZSBoeXBlcnR5VVJMIHByZXZpb3VzbHkgcmVnaXN0cmVkO1xyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdCwgRXJyb3I+fSB0aGlzIGlzIFByb21pc2UgYW5kIHJldHVybnMgYW4gb2JqZWN0IHdpdGggdGhlIGFkZHJlc3MgaW5mb3JtYXRpb25cclxuICAgKlxyXG4gICAqIEBtZW1iZXJPZiBBZGRyZXNzQWxsb2NhdGlvblxyXG4gICAqL1xyXG4gIGNyZWF0ZShkb21haW4sIG51bWJlciwgaW5mbywgc2NoZW1lLCByZXVzZVVSTCkge1xyXG5cclxuICAgIC8vIC8vIGNvbnNvbGUubG9nKCd0eXBlb2YocmV1c2VVUkwpJywgdHlwZW9mKHJldXNlVVJMKSwgcmV1c2VVUkwpO1xyXG4gICAgLy9kZWJ1Z2dlcjtcclxuICAgIGlmIChyZXVzZVVSTCkge1xyXG5cclxuICAgICAgaWYgKHR5cGVvZihyZXVzZVVSTCkgPT09ICdib29sZWFuJykge1xyXG5cclxuICAgICAgICBpZiAocmV1c2VVUkwpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLl9yZXVzZUFsbG9jYXRlZEFkZHJlc3MoZG9tYWluLCBudW1iZXIsIGluZm8sIHNjaGVtZSwgcmV1c2VVUkwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5fYWxsb2NhdGVOZXdBZGRyZXNzKGRvbWFpbiwgc2NoZW1lLCBudW1iZXIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0eXBlb2YocmV1c2VVUkwpID09PSAnc3RyaW5nJyAmJiBpc1VSTChyZXVzZVVSTCkpIHtcclxuICAgICAgICAvL3JldHVybiB0aGlzLl9yZXVzZUFsbG9jYXRlZEFkZHJlc3MoZG9tYWluLCBudW1iZXIsIGluZm8sIHNjaGVtZSwgcmV1c2VVUkwpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSB7IG5ld0FkZHJlc3M6IGZhbHNlLCBhZGRyZXNzOiBbcmV1c2VVUkxdIH07XHJcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh2YWx1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsb2cuaW5mbygnW0FkZHJlc3NBbGxvY2F0aW9uXSAtIG5ldyBhZGRyZXNzIHdpbGwgYmUgYWxsb2NhdGVkJyk7XHJcblxyXG4gICAgICAvLyBpZiB0aGVyZSBpcyBubyBVUkwgc2F2ZWQgcmVxdWVzdCBhIG5ldyBVUkxcclxuICAgICAgcmV0dXJuIHRoaXMuX2FsbG9jYXRlTmV3QWRkcmVzcyhkb21haW4sIHNjaGVtZSwgbnVtYmVyKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBfcmV1c2VBbGxvY2F0ZWRBZGRyZXNzKGRvbWFpbiwgbnVtYmVyLCBpbmZvLCBzY2hlbWUsIHJldXNlVVJMKSB7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKCdSRVVTRVRFU1QgLSAgX3JldXNlQWxsb2NhdGVkQWRkcmVzcycsIGRvbWFpbiwgbnVtYmVyLCBpbmZvLCBzY2hlbWUsIHJldXNlVVJMKTtcclxuICAgICAgdGhpcy5fcmVnaXN0cnkuY2hlY2tSZWdpc3RlcmVkVVJMcyhpbmZvLCByZXVzZVVSTCkudGhlbigodXJscykgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdSRVVTRVRFU1QgLSAgcmVnaXN0ZXJlZHVybHMnLCB1cmxzKTtcclxuICAgICAgICBpZiAodXJscykge1xyXG4gICAgICAgICAgbG9nLmluZm8oJ1tBZGRyZXNzQWxsb2NhdGlvbiAtICcgKyBzY2hlbWUgKyAnXSAtIFJldXNlIFVSTCcpO1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0ge25ld0FkZHJlc3M6IGZhbHNlLCBhZGRyZXNzOiB1cmxzfTtcclxuICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgaWYgKHR5cGVvZihyZXVzZVVSTCkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbQWRkcmVzc0FsbG9jYXRpb24gLSByZXVzZVVSTF0gLSBPYmplY3QgJyArIHJldXNlVVJMICsgJyBub3QgZm91bmQnKTtcclxuICAgICAgICAgICAgcmVqZWN0KCdVUkwgTm90IEZvdW5kJyk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZihyZXVzZVVSTCkgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICB0aGlzLl9hbGxvY2F0ZU5ld0FkZHJlc3MoZG9tYWluLCBzY2hlbWUsIG51bWJlcikudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVqZWN0KCdVUkwgTm90IEZvdW5kJyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX2FsbG9jYXRlTmV3QWRkcmVzcyhkb21haW4sIHNjaGVtZSwgbnVtYmVyKSB7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHJcbiAgICAgIGxldCBtc2cgPSB7XHJcbiAgICAgICAgdHlwZTogJ2NyZWF0ZScsIGZyb206IHRoaXMuX3VybCwgdG86ICdkb21haW46Ly9tc2ctbm9kZS4nICsgZG9tYWluICsgJy9hZGRyZXNzLWFsbG9jYXRpb24nLFxyXG4gICAgICAgIGJvZHk6IHt2YWx1ZTogeyBudW1iZXI6IG51bWJlciB9IH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIGlmIChzY2hlbWUgIT09ICdoeXBlcnR5JykgbXNnLmJvZHkuc2NoZW1lID0gc2NoZW1lO1xyXG5cclxuICAgICAgbG9nLmluZm8oJ1tBZGRyZXNzQWxsb2NhdGlvbiAtICcgKyBzY2hlbWUgKyAnXSAtIFJlcXVlc3QgbmV3IFVSTCcpO1xyXG5cclxuICAgICAgdGhpcy5fYnVzLnBvc3RNZXNzYWdlKG1zZywgKHJlcGx5KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0ge25ld0FkZHJlc3M6IHRydWUsIGFkZHJlc3M6IHJlcGx5LmJvZHkudmFsdWUuYWxsb2NhdGVkfTtcclxuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVqZWN0KHJlcGx5LmJvZHkuZGVzYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFNlbmQgYSByZXF1ZXN0IHRvIHRoZSBkb21haW4gbWVzc2FnZSBub2RlLCB0byBkZWFsbG9jYXRlIG9uZSBvciBtb3JlIGFkZHJlc3Nlc1xyXG4gICogQHBhcmFtICB7RG9tYWlufSBkb21haW4gLSBEb21haW4gb2YgdGhlIG1lc3NhZ2Ugbm9kZS5cclxuICAqIEBwYXJhbSAge2FkZHJlc3Nlc30gYWRkcmVzc2VzIHRvIHJlcXVlc3QgdGhlIGRlYWxsb2NhdGlvblxyXG4gICogQHJldHVybnMge1Byb21pc2V9ICB0aGUgcmVzcG9uc2UgYnkgdGhlIG1lc3NhZ2Ugbm9kZVxyXG4gICovXHJcbiAgZGVsZXRlKGRvbWFpbiwgYWRkcmVzc2VzKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICBsZXQgbWVzc2FnZSA9IHtcclxuICAgICAgICB0eXBlOiAnZGVsZXRlJywgZnJvbTogX3RoaXMuX3VybCwgdG86ICdkb21haW46Ly9tc2ctbm9kZS4nICsgZG9tYWluICsgJy9hZGRyZXNzLWFsbG9jYXRpb24nLFxyXG4gICAgICAgIGJvZHk6IHtjaGlsZHJlblJlc291cmNlczogYWRkcmVzc2VzfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVwbHkpID0+IHtcclxuICAgICAgICBpZiAocmVwbHkuYm9keS5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHJlc29sdmUocmVwbHkuYm9keS5jb2RlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVqZWN0KHJlcGx5LmJvZHkuZGVzYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEFkZHJlc3NBbGxvY2F0aW9uO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2FsbG9jYXRpb24vQWRkcmVzc0FsbG9jYXRpb24uanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCQTtBQUNBO0FBREE7QUFDQTtBQUdBO0FBQ0E7Ozs7O0FBSkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRkE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQ0E7Ozs7O0FBS0E7Ozs7O0FBS0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFnQkE7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7O0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTs7O0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7O0FBdElBOzs7O0FBSUE7QUFBQTtBQUFBOzs7QUFaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUEySUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///99\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(14);\n\nvar _Crypto = __webpack_require__(490);\n\nvar _Crypto2 = _interopRequireDefault(_Crypto);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('CryptoManager'); // Log System\n\n/**\r\n* The Crypto Manager provides manages cryptographic features for the runtime including:\r\n* - Mutual Authentication between peers\r\n* - Crypto Keys\r\n* - e2e encryption and decription of communication between Hyperties and dta objects\r\n*\r\n*/\nvar CryptoManager = function () {\n\n /**\r\n * This is the constructor to initialise the CryptoManager, it does not require any input.\r\n * The init() must called in order to set mandatories attributes\r\n */\n\n function CryptoManager(storageManager) {\n (0, _classCallCheck3.default)(this, CryptoManager);\n\n this.storageManager = storageManager;\n this.userDefaultKeyRef = 'userAsymmetricKey';\n }\n\n (0, _createClass3.default)(CryptoManager, [{\n key: 'init',\n value: function init(runtimeURL, runtimeCapabilities, storageManager, dataObjectsStorage, registry, coreDiscovery, idm, runtimeFactory) {\n var _this = this;\n\n if (!runtimeURL) throw new Error('[] runtimeURL is missing.');\n if (!storageManager) throw new Error('storageManager is missing');\n if (!runtimeFactory) throw new Error('runtimeFactory is missing');\n\n _this._runtimeURL = runtimeURL;\n _this._cryptoManagerURL = _this._runtimeURL + '/cryptoManager';\n\n //_this._myURL = _this._runtimeURL + '/crypto';\n _this.storageManager = storageManager;\n _this.dataObjectsStorage = dataObjectsStorage;\n _this.runtimeCapabilities = runtimeCapabilities;\n\n _this._runtimeFactory = runtimeFactory;\n _this._domain = (0, _utils.divideURL)(_this._runtimeURL).domain;\n\n _this.crypto = new _Crypto2.default(_this._runtimeFactory);\n\n // hashTable to store all the crypto information between two hyperties\n _this.chatKeys = {};\n\n // hashTable to store the symmetric keys to be used in the chat group\n _this.dataObjectSessionKeys = {};\n\n //failsafe to enable/disable all the criptographic functions\n _this.isToUseEncryption = true;\n\n _this._registry = registry;\n _this._coreDiscovery = coreDiscovery;\n\n _this._idm = idm;\n }\n\n //******************* GET AND SET METHODS *******************\n\n /**\r\n * return the messageBus in this Registry\r\n * @param {MessageBus} messageBus\r\n */\n\n }, {\n key: 'loadSessionKeys',\n\n\n // to be used to initialise IDM with SessionKeys used in previous session\n\n value: function loadSessionKeys() {\n var _this = this;\n return new _promise2.default(function (resolve) {\n\n _this.storageManager.get('dataObjectSessionKeys').then(function (sessionKeys) {\n if (sessionKeys) _this.dataObjectSessionKeys = sessionKeys;else _this.dataObjectSessionKeys = {};\n resolve();\n });\n });\n }\n }, {\n key: '_isFromRemoteSM',\n value: function _isFromRemoteSM(from) {\n var splitFrom = from.split('://');\n return splitFrom[0] === 'runtime' && from !== this._runtimeURL + '/sm';\n }\n }, {\n key: 'addCryptoGUIListeners',\n value: function addCryptoGUIListeners() {\n //TODO: Change the GUI invocation of this method\n var _this = this;\n\n _this._messageBus.addListener(_this._cryptoManagerURL, function (msg) {\n var funcName = msg.body.method;\n\n //let returnedValue;\n if (funcName === 'generateRSAKeyPair') {\n _this._crypto.getMyPublicKey().then(function (key) {\n var value = { type: 'execute', value: key, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if generateRSAKeyPair method postMessage error: ' + err);\n }\n });\n return;\n }\n });\n }\n\n //******************* ENCRYPTION METHODS *******************\n /**\r\n * Identifies the messages to be encrypted\r\n * @param {Message} message\r\n * @returns {boolean} returns true if the message requires encryption\r\n */\n\n }, {\n key: '_isToEncrypt',\n value: function _isToEncrypt(message) {\n var _this = this;\n log.info('[CryptoManager.istoChyperModule]', message);\n var isCreate = message.type === 'create';\n var isFromHyperty = message.from.includes('hyperty://');\n var isToHyperty = message.to.includes('hyperty://');\n var isToDataObject = (0, _utils.isDataObjectURL)(message.to);\n var reporter = _this.registry.getDataObjectReporter(message.to);\n\n var doMutualAuthentication = message.body.hasOwnProperty('mutual') ? message.body.mutual : true;\n\n if (!doMutualAuthentication) return false;\n if (reporter !== null && (0, _utils.isLegacy)(reporter)) {\n return false;\n }\n\n //if is not to apply encryption, then returns resolve\n if (!this.isToUseEncryption && !(message.type === 'handshake')) {\n log.info('not handshake: encryption disabled');\n return false;\n }\n\n if (message.type === 'update') {\n log.info('update:encryption disabled');\n return false;\n }\n\n if ((0, _utils.isLegacy)(message.to)) return false;\n\n return isCreate && isFromHyperty && isToHyperty || isCreate && isFromHyperty && isToDataObject && doMutualAuthentication || message.type === 'handshake' || message.type === 'update' && doMutualAuthentication;\n }\n }, {\n key: '_isToDecrypt',\n value: function _isToDecrypt(message) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n // For sybscribe message let's start the mutualAuthentication\n var isSubscription = message.type === 'subscribe';\n var isFromRemoteSM = _this._isFromRemoteSM(message.from);\n\n if (isSubscription & isFromRemoteSM) {\n log.log('_doMutualAuthenticationPhase1');\n console.log('istoDecrypt', message);\n var reporter = _this.registry.getDataObjectReporter(message.to);\n if (reporter !== null && (0, _utils.isLegacy)(reporter)) {\n return resolve(false);\n }\n\n _this._doMutualAuthenticationPhase1(message).then(function () {\n resolve(false);\n }, function (error) {\n reject(error);\n });\n } else if (message.hasOwnProperty('body') && message.body.hasOwnProperty('value') && typeof message.body.value === 'string') {\n log.log('_isToDecrypt:true');\n resolve(true);\n } else {\n log.log('_isToDecrypt:false');\n resolve(false);\n }\n }).catch(function (error) {\n log.error('[CryptoManager._isToDecrypt]', error);\n });\n }\n }, {\n key: 'encryptMessage',\n value: function encryptMessage(message) {\n //log.info('encryptMessage:message', message);\n var _this = this;\n\n log.log('encrypt message ');\n\n return new _promise2.default(function (resolve, reject) {\n\n var isHandShakeType = message.type === 'handshake';\n\n //if is not to apply encryption, then returns resolve\n if (!_this._isToEncrypt(message)) {\n // log.log('decryption disabled');\n return resolve(message);\n }\n\n var dataObjectURL = (0, _utils.parseMessageURL)(message.to);\n\n var isToDataObject = (0, _utils.isDataObjectURL)(dataObjectURL);\n var isToLegacyIdentity = (0, _utils.isLegacy)(message.to);\n var isFromHyperty = (0, _utils.divideURL)(message.from).type === 'hyperty';\n var isToHyperty = (0, _utils.divideURL)(message.to).type === 'hyperty';\n\n if (message.type === 'update') {\n log.log('encrypt message: message type update');\n return resolve(message);\n }\n\n if (isToLegacyIdentity) {\n resolve(message);\n } else if (isFromHyperty && isToHyperty) {\n var userURL = _this._registry.getHypertyOwner(message.from);\n if (userURL) {\n\n // check if exists any keys between two users\n var chatKeys = _this.chatKeys[message.from + '<->' + message.to];\n if (!chatKeys) {\n chatKeys = _this._newChatCrypto(message, userURL);\n\n //log.log('createChatKey encrypt', message.from + message.to);\n _this.chatKeys[message.from + '<->' + message.to] = chatKeys;\n message.body.handshakePhase = 'startHandShake';\n }\n\n if (chatKeys.authenticated && !isHandShakeType) {\n\n var iv = _this.crypto.generateIV();\n _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, (0, _utils.stringify)(message.body.value), iv).then(function (encryptedValue) {\n\n var filteredMessage = _this._filterMessageToHash(message, (0, _utils.stringify)(message.body.value) + (0, _utils.stringify)(iv), chatKeys.hypertyFrom.messageInfo);\n\n _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage).then(function (hash) {\n //log.log('result of hash ', hash);\n var value = { iv: (0, _utils.encode)(iv), value: (0, _utils.encode)(encryptedValue), hash: (0, _utils.encode)(hash) };\n message.body.value = (0, _utils.encode)(value);\n\n resolve(message);\n });\n });\n\n // if is a handshake message, just resolve it\n } else if (isHandShakeType) {\n resolve(message);\n\n // else, starts a new handshake protocol\n } else {\n _this._doHandShakePhase(message, chatKeys).then(function (value) {\n _this.chatKeys[message.from + '<->' + message.to] = value.chatKeys;\n\n _this._messageBus.postMessage(value.message);\n reject('encrypt handshake protocol phase ');\n });\n }\n } else {\n reject('In encryptMessage: Hyperty owner URL was not found');\n }\n\n //if from hyperty to a dataObjectURL\n } else if (isFromHyperty && isToDataObject) {\n\n //log.log('dataObject value to encrypt: ', message.body.value);\n //log.log('IdentityModule - encrypt from hyperty to dataobject ', message);\n\n _this.storageManager.get('dataObjectSessionKeys').then(function (sessionKeys) {\n sessionKeys = (0, _utils.chatkeysToArrayCloner)(sessionKeys || {});\n var dataObjectKey = sessionKeys ? sessionKeys[dataObjectURL] : null;\n\n _this.dataObjectsStorage.getDataObject(dataObjectURL).then(function (isHypertyReporter) {\n //if no key exists, create a new one if is the reporter of dataObject\n if (!dataObjectKey) {\n // if the hyperty is the reporter of the dataObject then generates a session key\n if (isHypertyReporter.reporter && isHypertyReporter.reporter === message.from) {\n\n var sessionKey = _this.crypto.generateRandom();\n _this.dataObjectSessionKeys[dataObjectURL] = { sessionKey: sessionKey, isToEncrypt: true };\n var dataObjectSessionKeysClone = (0, _utils.chatkeysToStringCloner)(_this.dataObjectSessionKeys);\n\n //TODO: check if this does not need to be stored\n _this.storageManager.set('dataObjectSessionKeys', 0, dataObjectSessionKeysClone).catch(function (err) {\n reject('On encryptMessage from method storageManager.set error: ' + err);\n });\n dataObjectKey = _this.dataObjectSessionKeys[dataObjectURL];\n }\n }\n\n //check if there is already a session key for the chat room\n if (dataObjectKey) {\n\n // and if is to apply encryption, encrypt the messages\n if (dataObjectKey.isToEncrypt) {\n var _iv = _this.crypto.generateIV();\n var stringifiedIV = (0, _utils.stringify)(_iv);\n var stringifiedMessageBody = (0, _utils.stringify)(message.body.value);\n\n _this.crypto.encryptAES(dataObjectKey.sessionKey, stringifiedMessageBody, _iv).then(function (encryptedValue) {\n delete message.body.identity.assertion; //TODO: Check why assertion is comming on the message!\n delete message.body.identity.expires; //TODO: Check why expires is comming on the message!\n var filteredMessage = _this._filterMessageToHash(message, stringifiedMessageBody + stringifiedIV);\n\n _this.crypto.hashHMAC(dataObjectKey.sessionKey, filteredMessage).then(function (hash) {\n // log.log('hash ', hash);\n\n var newValue = { value: (0, _utils.encode)(encryptedValue), iv: (0, _utils.encode)(_iv), hash: (0, _utils.encode)(hash) };\n\n message.body.value = (0, _utils.stringify)(newValue);\n resolve(message);\n });\n });\n\n // if not, just send the message\n } else {\n resolve(message);\n }\n\n // start the generation of a new session Key\n } else {\n reject('Data object key could not be defined: Failed to decrypt message ');\n }\n }).catch(function (err) {\n reject('On encryptMessage from method dataObjectsStorage.getDataObject error: ' + err);\n });\n }).catch(function (err) {\n reject('On encryptMessage from method storageManager.get error: ' + err);\n });\n }\n });\n }\n }, {\n key: 'encryptDataObject',\n value: function encryptDataObject(dataObject, sender) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n log.info('dataObject value to encrypt: ', dataObject);\n\n var dataObjectURL = (0, _utils.parseMessageURL)(sender);\n\n _this.storageManager.get('dataObjectSessionKeys').then(function (sessionKeys) {\n sessionKeys = (0, _utils.chatkeysToArrayCloner)(sessionKeys || {});\n var dataObjectKey = sessionKeys ? sessionKeys[dataObjectURL] : null;\n\n //check if there is already a session key for the chat room\n if (dataObjectKey) {\n\n // and if is to apply encryption, encrypt the messages\n if (dataObjectKey.isToEncrypt) {\n var iv = _this.crypto.generateIV();\n\n _this.crypto.encryptAES(dataObjectKey.sessionKey, (0, _utils.stringify)(dataObject), iv).then(function (encryptedValue) {\n var newValue = { value: (0, _utils.encode)(encryptedValue), iv: (0, _utils.encode)(iv) };\n\n //log.log('encrypted dataObject', newValue);\n return resolve(newValue);\n }).catch(function (err) {\n reject('On encryptDataObject from method encryptAES error: ' + err);\n });\n\n // if not, just send the message\n } else {\n log.info('The dataObject is not encrypted');\n return resolve(dataObject);\n }\n\n // start the generation of a new session Key\n } else {\n return reject('No dataObjectKey for this dataObjectURL:', dataObjectURL);\n }\n }).catch(function (err) {\n reject('On encryptDataObject from method storageManager.get error: ' + err);\n });\n });\n }\n }, {\n key: 'decryptMessage',\n value: function decryptMessage(message) {\n var _this = this;\n\n // log.log('decryptMessage:message', message);\n\n return new _promise2.default(function (resolve, reject) {\n var isHandShakeType = message.type === 'handshake';\n\n _this._isToDecrypt(message).then(function (isToDecrypt) {\n\n //if is not to apply encryption, then returns resolve\n if (!isToDecrypt) return resolve(message);\n\n var dataObjectURL = (0, _utils.parseMessageURL)(message.to);\n\n var isToDataObject = (0, _utils.isDataObjectURL)(dataObjectURL);\n var isFromHyperty = (0, _utils.divideURL)(message.from).type === 'hyperty';\n var isToHyperty = (0, _utils.divideURL)(message.to).type === 'hyperty';\n\n if (message.type === 'update') {\n return resolve(message);\n }\n\n //is is hyperty to hyperty communication\n if (isFromHyperty && isToHyperty) {\n // log.log('decrypt hyperty to hyperty');\n var userURL = _this._registry.getHypertyOwner(message.to);\n if (userURL) {\n\n var chatKeys = _this.chatKeys[message.to + '<->' + message.from];\n if (!chatKeys) {\n chatKeys = _this._newChatCrypto(message, userURL, 'decrypt');\n _this.chatKeys[message.to + '<->' + message.from] = chatKeys;\n }\n\n if (chatKeys.authenticated && !isHandShakeType) {\n var value = (0, _utils.decode)(message.body.value);\n var iv = (0, _utils.decodeToUint8Array)(value.iv);\n var data = (0, _utils.decodeToUint8Array)(value.value);\n var hash = (0, _utils.decodeToUint8Array)(value.hash);\n _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, data, iv).then(function (decryptedData) {\n // log.log('decrypted value ', decryptedData);\n message.body.value = decryptedData;\n\n var filteredMessage = _this._filterMessageToHash(message, decryptedData + iv);\n\n _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, hash).then(function (result) {\n //log.log('result of hash verification! ', result);\n message.body.assertedIdentity = true;\n resolve(message);\n });\n });\n } else if (isHandShakeType) {\n _this._doHandShakePhase(message, chatKeys).then(function (value) {\n\n //if it was started by doMutualAuthentication then ends the protocol\n if (value === 'handShakeEnd') {\n //reject('decrypt handshake protocol phase');\n\n // if was started by a message, then resend that message\n } else {\n _this.chatKeys[message.to + '<->' + message.from] = value.chatKeys;\n _this._messageBus.postMessage(value.message);\n\n //reject('decrypt handshake protocol phase ');\n }\n });\n } else {\n reject('wrong message do decrypt');\n }\n } else {\n reject('error on decrypt message');\n }\n\n //if from hyperty to a dataObjectURL\n } else if (isFromHyperty && isToDataObject) {\n // log.log('dataObject value to decrypt: ', message.body);\n\n _this.storageManager.get('dataObjectSessionKeys').then(function (sessionKeys) {\n sessionKeys = (0, _utils.chatkeysToArrayCloner)(sessionKeys || {});\n var dataObjectKey = sessionKeys ? sessionKeys[dataObjectURL] : null;\n\n if (dataObjectKey) {\n\n //check if is to apply encryption\n if (dataObjectKey.isToEncrypt) {\n var parsedValue = (0, _utils.parse)(message.body.value);\n var _iv2 = (0, _utils.decodeToUint8Array)(parsedValue.iv);\n var encryptedValue = (0, _utils.decodeToUint8Array)(parsedValue.value);\n var _hash = (0, _utils.decodeToUint8Array)(parsedValue.hash);\n\n _this.crypto.decryptAES(dataObjectKey.sessionKey, encryptedValue, _iv2).then(function (decryptedValue) {\n var parsedValue = (0, _utils.parse)(decryptedValue);\n\n // log.log('decrypted Value,', parsedValue);\n message.body.value = parsedValue;\n\n var filteredMessage = _this._filterMessageToHash(message, (0, _utils.stringify)(parsedValue) + (0, _utils.stringify)(_iv2));\n\n _this.crypto.verifyHMAC(dataObjectKey.sessionKey, filteredMessage, _hash).then(function (result) {\n log.log('Received message HMAC result', result);\n\n message.body.assertedIdentity = true;\n resolve(message);\n }).catch(function (err) {\n reject('Message HMAC is invalid: ' + err);\n });\n });\n\n //if not, just return the message\n } else {\n message.body.assertedIdentity = true;\n resolve(message);\n }\n } else {\n message.body.assertedIdentity = true;\n resolve(message);\n\n //reject('no sessionKey for chat room found');\n }\n });\n } else {\n reject('wrong message to decrypt');\n }\n });\n });\n }\n }, {\n key: 'decryptDataObject',\n value: function decryptDataObject(dataObject, sender) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n //if is not to apply encryption, then returns resolve\n if (!_this.isToUseEncryption) {\n // log.log('decryption disabled');\n return resolve(dataObject);\n }\n\n var dataObjectURL = (0, _utils.parseMessageURL)(sender);\n\n // log.log('dataObject value to decrypt: ', dataObject);\n\n _this.storageManager.get('dataObjectSessionKeys').then(function (sessionKeys) {\n sessionKeys = (0, _utils.chatkeysToArrayCloner)(sessionKeys);\n var dataObjectKey = sessionKeys ? sessionKeys[dataObjectURL] : null;\n\n if (dataObjectKey) {\n\n //check if is to apply encryption\n if (dataObjectKey.isToEncrypt) {\n var iv = (0, _utils.decodeToUint8Array)(dataObject.iv);\n var encryptedValue = (0, _utils.decodeToUint8Array)(dataObject.value);\n\n _this.crypto.decryptAES(dataObjectKey.sessionKey, encryptedValue, iv).then(function (decryptedValue) {\n var parsedValue = (0, _utils.parse)(decryptedValue);\n var newValue = { value: parsedValue, iv: (0, _utils.encode)(iv) };\n\n // log.log('decrypted dataObject,', newValue);\n\n return resolve(newValue);\n }).catch(function (err) {\n reject('On decryptDataObject from method encryptAES error: ' + err);\n });\n\n //if not, just return the dataObject\n } else {\n // log.log('The dataObject is not encrypted');\n return resolve(dataObject);\n }\n } else {\n return reject('No dataObjectKey for this dataObjectURL:', dataObjectURL);\n }\n });\n });\n }\n }, {\n key: '_doMutualAuthenticationPhase1',\n value: function _doMutualAuthenticationPhase1(message) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n var to = message.to.split('/');\n\n //let subsIndex = to.indexOf('subscription');\n //let isDataObjectSubscription = subsIndex !== -1;\n to.pop();\n var dataObjectURL = to[0] + '//' + to[2] + '/' + to[3];\n _this._doMutualAuthenticationPhase2(dataObjectURL, message.body.subscriber).then(function () {\n _this._registry.registerSubscriber(dataObjectURL, message.body.subscriber);\n resolve();\n }, function (error) {\n reject(error);\n });\n });\n }\n }, {\n key: '_doMutualAuthenticationPhase2',\n value: function _doMutualAuthenticationPhase2(sender, receiver) {\n log.info('doMutualAuthentication:sender ', sender);\n log.info('doMutualAuthentication:receiver ', receiver);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var dataObjectURL = void 0;\n\n // check if the sender is a dataObject and if so stores that value\n var reporterURL = _this._registry.getReporterURLSynchonous(sender);\n if (reporterURL) {\n dataObjectURL = sender;\n sender = reporterURL;\n }\n\n var msg = {\n to: receiver,\n from: sender,\n callback: undefined,\n body: { handshakePhase: 'startHandShake', ignore: 'ignoreMessage' }\n };\n\n if (!sender || !receiver) {\n return reject('sender or receiver missing on doMutualAuthentication');\n }\n\n var chatKeys = _this.chatKeys[sender + '<->' + receiver];\n var userURL = _this._registry.getHypertyOwner(sender);\n\n if (userURL) {\n\n if (!chatKeys) {\n // callback to resolve when finish the mutual authentication\n var resolved = function resolved(value) {\n // log.log('callback value:', value);\n resolve(value);\n };\n msg.callback = resolved;\n msg.dataObjectURL = dataObjectURL;\n\n chatKeys = _this._newChatCrypto(msg, userURL);\n _this.chatKeys[sender + '<->' + receiver] = chatKeys;\n }\n\n if (chatKeys.authenticated) {\n\n var startSessionKeyExchange = {\n to: sender,\n from: receiver\n };\n chatKeys.dataObjectURL = dataObjectURL;\n _this._sendReporterSessionKey(startSessionKeyExchange, chatKeys).then(function (value) {\n\n _this._messageBus.postMessage(value.message);\n resolve('exchange of chat sessionKey initiated');\n }).catch(function (err) {\n reject('On doMutualAuthentication from method _sendReporterSessionKey error: ' + err);\n });\n } else {\n _this._doHandShakePhase(msg, chatKeys);\n }\n } else {\n reject('Mutual authentication error: Hyperty owner could not be resolved');\n }\n });\n }\n\n /**\r\n * returns the reporter associated to the dataObject URL\r\n * @param {String} dataObjectURL dataObject url\r\n * @return {String} reporter dataObject url reporter\r\n */\n /* _getHypertyFromDataObject(dataObjectURL) {\r\n log.info('_getHypertyFromDataObject:dataObjectURL', dataObjectURL);\r\n let _this = this;\r\n return new Promise(function(resolve, reject) {\r\n let splitedURL = divideURL(dataObjectURL);\r\n let domain = splitedURL.domain;\r\n let finalURL = _this._parseMessageURL(dataObjectURL);\r\n // check if is the creator of the hyperty\r\n let reporterURL = _this.registry.getReporterURLSynchonous(finalURL);\r\n log.info('_getHypertyFromDataObject:reporterURL', reporterURL);\r\n if (reporterURL) {\r\n resolve(reporterURL);\r\n } else {\r\n // check if there is already an association from an hypertyURL to the dataObject\r\n let storedReporterURL = _this.dataObjectsIdentity[finalURL];\r\n log.info('_getHypertyFromDataObject:storedReporterURL', storedReporterURL);\r\n if (storedReporterURL) {\r\n resolve(storedReporterURL);\r\n } else {\r\n // check if there is any hyperty that subscribed the dataObjectURL\r\n let subscriberHyperty = _this.registry.getDataObjectSubscriberHyperty(dataObjectURL);\r\n log.info('_getHypertyFromDataObject:subscriberHyperty', subscriberHyperty);\r\n if (subscriberHyperty) {\r\n resolve(subscriberHyperty);\r\n } else {\r\n // search in domain registry for the hyperty associated to the dataObject\r\n // search in case is a subscriber who wants to know the reporter\r\n _this._coreDiscovery.discoverDataObjectPerURL(finalURL, domain).then(dataObject => {\r\n log.info('_getHypertyFromDataObject:dataObject', dataObject);\r\n _this.dataObjectsIdentity[finalURL] = dataObject.reporter;\r\n log.info('_getHypertyFromDataObject:dataObject.reporter', dataObject.reporter);\r\n resolve(dataObject.reporter);\r\n }, err => {\r\n reject(err);\r\n });\r\n }\r\n }\r\n }\r\n });\r\n }*/\n\n }, {\n key: '_sendReporterSessionKey',\n value: function _sendReporterSessionKey(message, chatKeys) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var sessionKeyBundle = _this.dataObjectSessionKeys[chatKeys.dataObjectURL];\n var reporterSessionKeyMsg = void 0;\n var valueToEncrypt = void 0;\n var sessionKey = void 0;\n var iv = void 0;\n var value = {};\n\n //if there is not yet a session Key, generates a new one\n if (!sessionKeyBundle) {\n sessionKey = _this.crypto.generateRandom();\n _this.dataObjectSessionKeys[chatKeys.dataObjectURL] = { sessionKey: sessionKey, isToEncrypt: true };\n\n var dataObjectSessionKeysClone = (0, _utils.chatkeysToStringCloner)(_this.dataObjectSessionKeys);\n\n _this.storageManager.set('dataObjectSessionKeys', 0, dataObjectSessionKeysClone).catch(function (err) {\n reject('On _sendReporterSessionKey from method storageManager.set(dataObjectSessionKeys...) error: ' + err);\n });\n } else {\n sessionKey = sessionKeyBundle.sessionKey;\n }\n\n try {\n valueToEncrypt = (0, _utils.encode)({ value: (0, _utils.encode)(sessionKey), dataObjectURL: chatKeys.dataObjectURL });\n } catch (err) {\n return reject('On _sendReporterSessionKey from method storageManager.set error valueToEncrypt: ' + err);\n }\n\n iv = _this.crypto.generateIV();\n value.iv = (0, _utils.encode)(iv);\n _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, valueToEncrypt, iv).then(function (encryptedValue) {\n\n reporterSessionKeyMsg = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'reporterSessionKey',\n value: (0, _utils.encode)(encryptedValue)\n }\n };\n\n var filteredMessage = _this._filterMessageToHash(reporterSessionKeyMsg, valueToEncrypt + iv, chatKeys.hypertyFrom.messageInfo);\n\n return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage);\n }).then(function (hashedMessage) {\n var valueWithHash = (0, _utils.encode)({ value: reporterSessionKeyMsg.body.value, hash: (0, _utils.encode)(hashedMessage), iv: value.iv });\n\n reporterSessionKeyMsg.body.value = valueWithHash;\n\n resolve({ message: reporterSessionKeyMsg, chatKeys: chatKeys });\n }).catch(function (err) {\n reject('On _sendReporterSessionKey from chained promises encryptAES error: ' + err);\n });\n });\n }\n\n /**\r\n * Function that resolve and create the domainURL in case it is provided one. If not, resolve the default domainURL\r\n * @param {String} idpDomain idpDomain (Optional)\r\n */\n\n }, {\n key: '_resolveDomain',\n value: function _resolveDomain(idpDomain) {\n if (!idpDomain) {\n return 'domain-idp://google.com';\n } else {\n return 'domain-idp://' + idpDomain;\n }\n }\n }, {\n key: '_doHandShakePhase',\n value: function _doHandShakePhase(message, chatKeys) {\n // log('_doHandShakePhase:dataObject', message);\n //\tlog('_doHandShakePhase:chatKeys', chatKeys);\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var handshakeType = message.body.handshakePhase;\n var iv = void 0;\n var hash = void 0;\n var value = {};\n var filteredMessage = void 0;\n var privateKeyHolder = void 0;\n\n log.info('handshake phase: ', handshakeType);\n\n switch (handshakeType) {\n\n case 'startHandShake':\n {\n chatKeys.keys.fromRandom = _this.crypto.generateRandom();\n var startHandShakeMsg = {\n type: 'handshake',\n to: message.to,\n from: message.from,\n body: {\n handshakePhase: 'senderHello',\n value: (0, _utils.encode)(chatKeys.keys.fromRandom)\n }\n };\n chatKeys.handshakeHistory.senderHello = _this._filterMessageToHash(startHandShakeMsg, undefined, chatKeys.hypertyFrom.messageInfo);\n\n // check if was the encrypt function or the mutual authentication that request the\n // start of the handShakePhase.\n\n if (chatKeys.initialMessage) {\n resolve({ message: startHandShakeMsg, chatKeys: chatKeys });\n } else {\n _this.chatKeys[message.from + '<->' + message.to] = chatKeys;\n _this._messageBus.postMessage(startHandShakeMsg);\n }\n\n break;\n }\n case 'senderHello':\n {\n\n log.log('senderHello');\n chatKeys.handshakeHistory.senderHello = _this._filterMessageToHash(message);\n chatKeys.keys.fromRandom = (0, _utils.decodeToUint8Array)(message.body.value);\n chatKeys.keys.toRandom = _this.crypto.generateRandom();\n\n var senderHelloMsg = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'receiverHello',\n value: (0, _utils.encode)(chatKeys.keys.toRandom)\n }\n };\n chatKeys.handshakeHistory.receiverHello = _this._filterMessageToHash(senderHelloMsg, undefined, chatKeys.hypertyFrom.messageInfo);\n resolve({ message: senderHelloMsg, chatKeys: chatKeys });\n\n break;\n }\n case 'receiverHello':\n {\n\n log.log('receiverHello');\n _this.getMyPrivateKey().then(function (privateKey) {\n privateKeyHolder = privateKey;\n\n chatKeys.handshakeHistory.receiverHello = _this._filterMessageToHash(message);\n\n return _this._idm.validateAssertion(message.body.identity.assertion, undefined, message.body.identity.idp.domain);\n }).then(function (value) {\n\n //TODO remove later this verification as soon as all the IdP proxy are updated in the example\n var encodedpublicKey = typeof value.contents === 'string' ? value.contents : value.contents.nonce;\n\n var receiverPublicKey = (0, _utils.parseToUint8Array)(encodedpublicKey);\n var premasterSecret = _this.crypto.generatePMS();\n var toRandom = message.body.value;\n chatKeys.hypertyTo.assertion = message.body.identity.assertion;\n chatKeys.hypertyTo.publicKey = receiverPublicKey;\n chatKeys.hypertyTo.userID = message.body.identity.userProfile.userURL;\n chatKeys.keys.toRandom = (0, _utils.decodeToUint8Array)(toRandom);\n chatKeys.keys.premasterKey = premasterSecret;\n\n var concatKey = _this.crypto.concatPMSwithRandoms(premasterSecret, chatKeys.keys.toRandom, chatKeys.keys.fromRandom);\n\n return _this.crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom);\n\n //generate the master key\n }).then(function (masterKey) {\n chatKeys.keys.masterKey = masterKey;\n\n return _this.crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom);\n\n //generate the symmetric and hash keys\n }).then(function (keys) {\n\n chatKeys.keys.hypertyToSessionKey = new Uint8Array(keys[0]);\n chatKeys.keys.hypertyFromSessionKey = new Uint8Array(keys[1]);\n chatKeys.keys.hypertyToHashKey = new Uint8Array(keys[2]);\n chatKeys.keys.hypertyFromHashKey = new Uint8Array(keys[3]);\n iv = _this.crypto.generateIV();\n value.iv = (0, _utils.encode)(iv);\n\n var messageStructure = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'senderCertificate'\n }\n };\n\n // hash the value and the iv\n filteredMessage = _this._filterMessageToHash(messageStructure, 'ok' + iv, chatKeys.hypertyFrom.messageInfo);\n return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage);\n }).then(function (hash) {\n value.hash = (0, _utils.encode)(hash);\n\n //encrypt the data\n return _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, 'ok', iv);\n }).then(function (encryptedData) {\n value.symetricEncryption = (0, _utils.encode)(encryptedData);\n\n return _this.crypto.encryptRSA(chatKeys.hypertyTo.publicKey, chatKeys.keys.premasterKey);\n }).then(function (encryptedValue) {\n value.assymetricEncryption = (0, _utils.encode)(encryptedValue);\n\n var messageStructure = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'senderCertificate'\n }\n };\n\n var messageToHash = _this._filterMessageToHash(messageStructure, chatKeys.keys.premasterKey, chatKeys.hypertyFrom.messageInfo);\n return _this.crypto.signRSA(privateKeyHolder, (0, _utils.encode)(chatKeys.handshakeHistory) + (0, _utils.encode)(messageToHash));\n }).then(function (signature) {\n\n value.signature = (0, _utils.encode)(signature);\n\n var receiverHelloMsg = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'senderCertificate',\n value: (0, _utils.encode)(value)\n }\n };\n chatKeys.handshakeHistory.senderCertificate = _this._filterMessageToHash(receiverHelloMsg, 'ok' + iv, chatKeys.hypertyFrom.messageInfo);\n\n resolve({ message: receiverHelloMsg, chatKeys: chatKeys });\n }, function (error) {\n return reject(error);\n });\n\n break;\n }\n case 'senderCertificate':\n {\n\n log.log('senderCertificate');\n\n var receivedValue = (0, _utils.decode)(message.body.value);\n\n _this.getMyPrivateKey().then(function (privateKey) {\n privateKeyHolder = privateKey;\n\n return _this._idm.validateAssertion(message.body.identity.assertion, undefined, message.body.identity.idp.domain);\n }).then(function (value) {\n var encryptedPMS = (0, _utils.decodeToUint8Array)(receivedValue.assymetricEncryption);\n\n //TODO remove later this verification as soon as all the IdP proxy are updated in the example\n var encodedpublicKey = typeof value.contents === 'string' ? value.contents : value.contents.nonce;\n\n var senderPublicKey = (0, _utils.parseToUint8Array)(encodedpublicKey);\n chatKeys.hypertyTo.assertion = message.body.identity.assertion;\n chatKeys.hypertyTo.publicKey = senderPublicKey;\n chatKeys.hypertyTo.userID = message.body.identity.userProfile.userURL;\n\n return _this.crypto.decryptRSA(privateKeyHolder, encryptedPMS);\n }, function (error) {\n // log.log(error);\n reject('Error during authentication of identity: ', error.message);\n\n //obtain the PremasterKey using the private key\n }).then(function (pms) {\n\n chatKeys.keys.premasterKey = new Uint8Array(pms);\n\n var signature = (0, _utils.decodeToUint8Array)(receivedValue.signature);\n\n var receivedmsgToHash = _this._filterMessageToHash(message, chatKeys.keys.premasterKey);\n\n return _this.crypto.verifyRSA(chatKeys.hypertyTo.publicKey, (0, _utils.encode)(chatKeys.handshakeHistory) + (0, _utils.encode)(receivedmsgToHash), signature);\n\n // validates the signature received\n }).then(function (signValidationResult) {\n\n //log.log('SenderCertificate - signature validation result ', signValidationResult);\n var concatKey = _this.crypto.concatPMSwithRandoms(chatKeys.keys.premasterKey, chatKeys.keys.toRandom, chatKeys.keys.fromRandom);\n\n return _this.crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom);\n\n // generates the master keys from the Premaster key and the randoms\n }).then(function (masterKey) {\n chatKeys.keys.masterKey = masterKey;\n\n return _this.crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom);\n\n // generates the symmetric keys to be used in the symmetric encryption\n }).then(function (keys) {\n chatKeys.keys.hypertyFromSessionKey = new Uint8Array(keys[0]);\n chatKeys.keys.hypertyToSessionKey = new Uint8Array(keys[1]);\n chatKeys.keys.hypertyFromHashKey = new Uint8Array(keys[2]);\n chatKeys.keys.hypertyToHashKey = new Uint8Array(keys[3]);\n iv = (0, _utils.decodeToUint8Array)(receivedValue.iv);\n var data = (0, _utils.decodeToUint8Array)(receivedValue.symetricEncryption);\n\n return _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, data, iv);\n }).then(function (decryptedData) {\n // log.log('decryptedData', decryptedData);\n\n chatKeys.handshakeHistory.senderCertificate = _this._filterMessageToHash(message, decryptedData + iv);\n\n var hashReceived = (0, _utils.decodeToUint8Array)(receivedValue.hash);\n\n filteredMessage = _this._filterMessageToHash(message, decryptedData + iv);\n\n return _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, hashReceived);\n }).then(function (verifiedHash) {\n\n // log.log('result of hash verification ', verifiedHash);\n var receiverFinishedMessage = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'receiverFinishedMessage'\n }\n };\n iv = _this.crypto.generateIV();\n value.iv = (0, _utils.encode)(iv);\n\n filteredMessage = _this._filterMessageToHash(receiverFinishedMessage, 'ok!' + iv, chatKeys.hypertyFrom.messageInfo);\n\n //log.log('TIAGO: doHandShakePhase verifiedHash');\n return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage);\n }).then(function (hash) {\n\n value.hash = (0, _utils.encode)(hash);\n return _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, 'ok!', iv);\n }).then(function (encryptedValue) {\n value.value = (0, _utils.encode)(encryptedValue);\n var receiverFinishedMessage = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'receiverFinishedMessage',\n value: (0, _utils.encode)(value)\n }\n };\n\n chatKeys.handshakeHistory.receiverFinishedMessage = _this._filterMessageToHash(receiverFinishedMessage, 'ok!' + iv, chatKeys.hypertyFrom.messageInfo);\n chatKeys.authenticated = true;\n resolve({ message: receiverFinishedMessage, chatKeys: chatKeys });\n }).catch(function (err) {\n reject('On _doHandShakePhase from senderCertificate error: ' + err);\n });\n\n break;\n }\n case 'receiverFinishedMessage':\n {\n\n chatKeys.authenticated = true;\n\n value = (0, _utils.decode)(message.body.value);\n\n iv = (0, _utils.decodeToUint8Array)(value.iv);\n var data = (0, _utils.decodeToUint8Array)(value.value);\n hash = (0, _utils.decodeToUint8Array)(value.hash);\n\n _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, data, iv).then(function (decryptedData) {\n // log.log('decryptedData', decryptedData);\n chatKeys.handshakeHistory.receiverFinishedMessage = _this._filterMessageToHash(message, decryptedData + iv);\n\n var filteredMessage = _this._filterMessageToHash(message, decryptedData + iv);\n _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, hash).then(function (result) {\n\n // check if there was an initial message that was blocked and send it\n if (chatKeys.initialMessage) {\n\n var initialMessage = {\n type: 'create',\n to: message.from,\n from: message.to,\n body: {\n value: chatKeys.initialMessage.body.value\n }\n };\n\n resolve({ message: initialMessage, chatKeys: chatKeys });\n\n //sends the sessionKey to the subscriber hyperty\n } else {\n _this._sendReporterSessionKey(message, chatKeys).then(function (value) {\n\n resolve(value);\n }).catch(function (err) {\n reject('On _doHandShakePhase from receiverFinishedMessage error: ' + err);\n });\n }\n });\n });\n\n break;\n }\n\n case 'reporterSessionKey':\n {\n\n log.log('reporterSessionKey');\n\n var valueIVandHash = (0, _utils.decode)(message.body.value);\n hash = (0, _utils.decodeToUint8Array)(valueIVandHash.hash);\n iv = (0, _utils.decodeToUint8Array)(valueIVandHash.iv);\n var encryptedValue = (0, _utils.decodeToUint8Array)(valueIVandHash.value);\n var parsedValue = void 0;\n var sessionKey = void 0;\n var dataObjectURL = void 0;\n var receiverAcknowledgeMsg = void 0;\n\n //log.log('[IdentityModule reporterSessionKey] - decryptAES: ', chatKeys.keys.hypertyToSessionKey, encryptedValue, iv);\n\n _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, encryptedValue, iv).then(function (decryptedValue) {\n\n parsedValue = (0, _utils.decode)(decryptedValue);\n sessionKey = (0, _utils.decodeToUint8Array)(parsedValue.value);\n dataObjectURL = parsedValue.dataObjectURL;\n\n var messageToHash = _this._filterMessageToHash(message, decryptedValue + iv);\n\n return _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, messageToHash, hash);\n }).then(function (hashResult) {\n\n // log.log('hash successfully validated ', hashResult);\n\n _this.dataObjectSessionKeys[dataObjectURL] = { sessionKey: sessionKey, isToEncrypt: true };\n var dataObjectSessionKeysClone = (0, _utils.chatkeysToStringCloner)(_this.dataObjectSessionKeys);\n _this.storageManager.set('dataObjectSessionKeys', 0, dataObjectSessionKeysClone).catch(function (err) {\n reject('On _sendReporterSessionKey from method reporterSessionKey error: ' + err);\n });\n\n iv = _this.crypto.generateIV();\n value.iv = (0, _utils.encode)(iv);\n\n return _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, 'ok!!', iv);\n }).then(function (encryptedValue) {\n\n receiverAcknowledgeMsg = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'receiverAcknowledge'\n }\n };\n\n value.value = (0, _utils.encode)(encryptedValue);\n var messageToHash = _this._filterMessageToHash(receiverAcknowledgeMsg, 'ok!!' + iv, chatKeys.hypertyFrom.messageInfo);\n\n return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, messageToHash);\n }).then(function (hashedMessage) {\n var finalValue = (0, _utils.encode)({ value: value.value, hash: (0, _utils.encode)(hashedMessage), iv: value.iv });\n\n receiverAcknowledgeMsg.body.value = finalValue;\n resolve({ message: receiverAcknowledgeMsg, chatKeys: chatKeys });\n }).catch(function (err) {\n reject('On _doHandShakePhase from reporterSessionKey error: ' + err);\n });\n\n break;\n }\n\n case 'receiverAcknowledge':\n {\n\n log.log('receiverAcknowledge');\n\n var receivedvalueIVandHash = (0, _utils.decode)(message.body.value);\n var receivedHash = (0, _utils.decodeToUint8Array)(receivedvalueIVandHash.hash);\n iv = (0, _utils.decodeToUint8Array)(receivedvalueIVandHash.iv);\n var receivedEncryptedValue = (0, _utils.decodeToUint8Array)(receivedvalueIVandHash.value);\n\n _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, receivedEncryptedValue, iv).then(function (decryptedValue) {\n\n var filteredMessage = _this._filterMessageToHash(message, decryptedValue + iv);\n return _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, receivedHash);\n }).then(function (hashResult) {\n // log.log('hashResult ', hashResult);\n\n var callback = chatKeys.callback;\n\n if (callback) {\n callback('handShakeEnd');\n }\n resolve('handShakeEnd');\n }).catch(function (err) {\n reject('On _doHandShakePhase from receiverAcknowledge error: ' + err);\n });\n\n break;\n }\n\n default:\n reject(message);\n }\n });\n }\n\n /**\r\n * filter the messages to hash, by removing some fields not generated by the runtime core\r\n * @param {Message} message message\r\n * @param {String} decryptedValue (Optional) value from body.value in case it originally comes encrypted\r\n * @param {JSON} identity(Optional) add the hyperty identity associated in case is not added to the initial message\r\n * @return {Message} new message filtered\r\n */\n\n }, {\n key: '_filterMessageToHash',\n value: function _filterMessageToHash(message, decryptedValue, identity) {\n\n return {\n type: message.type,\n from: message.from,\n to: message.to,\n body: {\n identity: identity || message.body.identity,\n value: decryptedValue || message.body.value,\n handshakePhase: message.body.handshakePhase\n }\n };\n }\n\n /**\r\n * generates the initial structure for the keys between two users\r\n * @param {JSON} message initial message that triggers the mutual authentication\r\n * @param {String} userURL userURL\r\n * @param {boolean} receiver(Optional) indicates if is the sender or the receiver that creates a new chat crypto\r\n * @return {JSON} newChatCrypto new JSON structure for the chat crypto\r\n */\n\n }, {\n key: '_newChatCrypto',\n value: function _newChatCrypto(message, userURL, receiver) {\n var _this = this;\n\n //check whether is the sender or the receiver to create a new chatCrypto\n //to mantain consistency on the keys if the receiver create a new chatCrypto,\n //then invert the fields\n var from = receiver ? message.to : message.from;\n var to = receiver ? message.from : message.to;\n\n var userInfo = _this._idm.getIdentity(userURL);\n\n var newChatCrypto = {\n hypertyFrom: {\n hyperty: from,\n userID: userInfo.userProfile.userURL,\n\n //privateKey: \"getMyPublicKey\",\n //publicKey: \"getMyPrivateKey\",\n assertion: userInfo.assertion,\n messageInfo: userInfo\n },\n hypertyTo: {\n hyperty: to,\n userID: undefined,\n publicKey: undefined,\n assertion: undefined\n },\n keys: {\n hypertyToSessionKey: undefined,\n hypertyFromSessionKey: undefined,\n hypertyToHashKey: undefined,\n hypertyFromHashKey: undefined,\n toRandom: undefined,\n fromRandom: undefined,\n premasterKey: undefined,\n masterKey: undefined\n },\n handshakeHistory: {\n senderHello: undefined,\n receiverHello: undefined,\n senderCertificate: undefined,\n receiverFinishedMessage: undefined\n },\n initialMessage: message.body.ignore ? undefined : message,\n callback: message.callback,\n authenticated: false,\n dataObjectURL: message.dataObjectURL\n };\n\n return newChatCrypto;\n }\n\n /**\r\n * Retrieves a public keys given a user refrence. If no key is found,\r\n generates a new key asymmetric key and retrieves the public keys.\r\n * @param {userRef} String user reference for the key pair\r\n * @return {Array} public key\r\n */\n\n }, {\n key: 'getMyPublicKey',\n value: function getMyPublicKey() {\n var userRef = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.userDefaultKeyRef;\n\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n _this.storageManager.get(userRef).then(function (storedKeyPair) {\n if (storedKeyPair) {\n return resolve(storedKeyPair.public);\n }\n _this._generateAndStoreNewAsymetricKey(userRef).then(function (generatedKeyPair) {\n resolve(generatedKeyPair.public);\n }).catch(function (err) {\n log.error('[getMyPublicKey:_generateAndStoreNewAsymetricKey:err]: ' + err.message);\n reject(err);\n });\n }).catch(function (err) {\n log.error('[getMyPublicKey:storageManager:err]: ' + err.message);\n reject(err);\n });\n });\n }\n\n /**\r\n * Retrieves a private keys given a user refrence. If no key is found,\r\n generates a new key asymmetric key and retrieves the private key.\r\n * @param {userRef} String user reference for the key pair\r\n * @return {Array} private key\r\n **/\n\n }, {\n key: 'getMyPrivateKey',\n value: function getMyPrivateKey() {\n var userRef = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.userDefaultKeyRef;\n\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n _this.storageManager.get(userRef).then(function (storedKeyPair) {\n if (storedKeyPair) {\n return resolve(storedKeyPair.private);\n }\n _this._generateAndStoreNewAsymetricKey(userRef).then(function (generatedKeyPair) {\n resolve(generatedKeyPair.private);\n }).catch(function (err) {\n log.error('[getMyPrivateKey:_generateAndStoreNewAsymetricKey:err]: ' + err.message);\n reject(err);\n });\n }).catch(function (err) {\n log.error('[getMyPrivateKey:storageManager:err]: ' + err.message);\n reject(err);\n });\n });\n }\n\n /**\r\n * Generates a new key pair, stores and retrives the key pair.\r\n * @param {userRef} String user reference for the key pair\r\n * @return {Array} private key\r\n **/\n\n }, {\n key: '_generateAndStoreNewAsymetricKey',\n value: function _generateAndStoreNewAsymetricKey(userRef) {\n var _this = this;\n var keyPair = undefined;\n return new _promise2.default(function (resolve, reject) {\n _this.crypto.generateRSAKeyPair().then(function (generatedKeyPair) {\n log.log('_generateAndStoreNewAsymetricKey:userAsymmetricKeyGenerated', generatedKeyPair);\n keyPair = generatedKeyPair;\n return _this.storageManager.set(userRef, 0, generatedKeyPair);\n }).then(function (storedReference) {\n log.log('_generateAndStoreNewAsymetricKey:userAsymmetricKeySuccess', storedReference);\n resolve(keyPair);\n }).catch(function (err) {\n log.error('[_generateAndStoreNewAsymetricKey:err]: ' + err.message);\n reject(err);\n });\n });\n }\n }, {\n key: 'messageBus',\n get: function get() {\n var _this = this;\n return _this._messageBus;\n }\n\n /**\r\n * Set the messageBus in this Registry\r\n * @param {MessageBus} messageBus\r\n */\n ,\n set: function set(messageBus) {\n var _this = this;\n _this._messageBus = messageBus;\n\n _this.addCryptoGUIListeners();\n }\n\n /**\r\n * return the coreDiscovery component\r\n */\n\n }, {\n key: 'coreDiscovery',\n get: function get() {\n var _this = this;\n return _this._coreDiscovery;\n }\n\n /**\r\n * return user's public key\r\n */\n\n /* getMyPublicKey() {\r\n // to be implemented\r\n return new Promise((resolve)=> {\r\n resolve('mypublickey');\r\n });\r\n }\r\n */\n /**\r\n * Set the coreDiscovery component\r\n * @param {coreDiscovery} coreDiscovery\r\n */\n ,\n set: function set(coreDiscovery) {\n var _this = this;\n _this._coreDiscovery = coreDiscovery;\n }\n\n /**\r\n * return the registry in this idModule\r\n * @param {registry} registry\r\n */\n\n }, {\n key: 'registry',\n get: function get() {\n var _this = this;\n return _this._registry;\n }\n\n /**\r\n * Set the registry in this idModule\r\n * @param {registry} reg\r\n */\n ,\n set: function set(registry) {\n var _this = this;\n _this._registry = registry;\n }\n }]);\n return CryptoManager;\n}();\n\n/*\r\nconst nodeJSKeyPairPopulate = { public: [48, 130, 1, 34, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0, 3, 130, 1, 15, 0, 48, 130, 1, 10, 2, 130, 1, 1, 0, 228, 43, 101, 12, 121, 7, 157, 71, 81, 58, 219, 32, 10, 108, 193, 179, 212, 116, 255, 59, 217, 32, 161, 201, 53, 171, 226, 199, 137, 202, 171, 60, 82, 53, 125, 62, 177, 126, 165, 24, 141, 30, 15, 226, 59, 107, 34, 7, 13, 149, 112, 125, 10, 230, 191, 156, 164, 177, 10, 185, 13, 66, 3, 217, 166, 244, 90, 119, 111, 27, 145, 104, 71, 189, 166, 226, 255, 133, 83, 151, 231, 101, 151, 89, 22, 19, 65, 154, 10, 53, 208, 218, 252, 219, 37, 50, 212, 86, 145, 107, 132, 90, 233, 202, 227, 108, 114, 141, 29, 73, 187, 31, 13, 234, 0, 232, 24, 191, 35, 149, 179, 138, 214, 159, 245, 162, 148, 221, 118, 17, 105, 89, 151, 146, 209, 55, 236, 61, 143, 233, 228, 10, 115, 8, 81, 197, 45, 123, 187, 223, 176, 254, 165, 69, 143, 29, 100, 114, 17, 130, 226, 223, 33, 11, 240, 81, 61, 172, 191, 157, 246, 202, 87, 131, 221, 88, 48, 127, 159, 119, 160, 152, 117, 61, 253, 174, 65, 214, 203, 218, 63, 50, 78, 160, 181, 221, 211, 128, 70, 178, 191, 170, 0, 13, 122, 173, 12, 203, 252, 4, 184, 225, 252, 7, 62, 96, 116, 15, 216, 158, 55, 85, 48, 16, 9, 206, 119, 74, 112, 243, 136, 84, 184, 223, 254, 101, 91, 61, 10, 91, 85, 192, 147, 144, 57, 29, 66, 238, 199, 244, 193, 194, 150, 232, 200, 107, 2, 3, 1, 0, 1],\r\n private: [48, 130, 4, 191, 2, 1, 0, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0, 4, 130, 4, 169, 48, 130, 4, 165, 2, 1, 0, 2, 130, 1, 1, 0, 228, 43, 101, 12, 121, 7, 157, 71, 81, 58, 219, 32, 10, 108, 193, 179, 212, 116, 255, 59, 217, 32, 161, 201, 53, 171, 226, 199, 137, 202, 171, 60, 82, 53, 125, 62, 177, 126, 165, 24, 141, 30, 15, 226, 59, 107, 34, 7, 13, 149, 112, 125, 10, 230, 191, 156, 164, 177, 10, 185, 13, 66, 3, 217, 166, 244, 90, 119, 111, 27, 145, 104, 71, 189, 166, 226, 255, 133, 83, 151, 231, 101, 151, 89, 22, 19, 65, 154, 10, 53, 208, 218, 252, 219, 37, 50, 212, 86, 145, 107, 132, 90, 233, 202, 227, 108, 114, 141, 29, 73, 187, 31, 13, 234, 0, 232, 24, 191, 35, 149, 179, 138, 214, 159, 245, 162, 148, 221, 118, 17, 105, 89, 151, 146, 209, 55, 236, 61, 143, 233, 228, 10, 115, 8, 81, 197, 45, 123, 187, 223, 176, 254, 165, 69, 143, 29, 100, 114, 17, 130, 226, 223, 33, 11, 240, 81, 61, 172, 191, 157, 246, 202, 87, 131, 221, 88, 48, 127, 159, 119, 160, 152, 117, 61, 253, 174, 65, 214, 203, 218, 63, 50, 78, 160, 181, 221, 211, 128, 70, 178, 191, 170, 0, 13, 122, 173, 12, 203, 252, 4, 184, 225, 252, 7, 62, 96, 116, 15, 216, 158, 55, 85, 48, 16, 9, 206, 119, 74, 112, 243, 136, 84, 184, 223, 254, 101, 91, 61, 10, 91, 85, 192, 147, 144, 57, 29, 66, 238, 199, 244, 193, 194, 150, 232, 200, 107, 2, 3, 1, 0, 1, 2, 130, 1, 0, 103, 244, 137, 118, 116, 82, 14, 203, 102, 107, 253, 88, 12, 199, 222, 60, 243, 136, 86, 157, 74, 224, 190, 53, 113, 57, 157, 250, 49, 130, 96, 31, 252, 136, 152, 70, 143, 17, 215, 96, 103, 51, 18, 35, 141, 212, 210, 205, 9, 216, 83, 70, 245, 71, 138, 119, 112, 229, 164, 176, 9, 37, 81, 161, 193, 154, 68, 249, 115, 106, 201, 6, 12, 225, 144, 126, 141, 210, 141, 242, 128, 159, 221, 163, 222, 21, 233, 230, 167, 206, 59, 24, 250, 233, 81, 122, 102, 26, 6, 233, 72, 133, 47, 77, 155, 238, 86, 6, 139, 24, 131, 163, 179, 112, 48, 247, 142, 6, 207, 204, 173, 223, 140, 199, 150, 95, 123, 152, 202, 155, 131, 238, 62, 96, 133, 4, 217, 51, 121, 30, 38, 178, 189, 216, 44, 35, 241, 93, 7, 62, 90, 111, 216, 66, 209, 243, 128, 234, 141, 84, 135, 181, 13, 38, 220, 114, 245, 240, 178, 95, 220, 206, 11, 186, 234, 213, 66, 121, 83, 68, 89, 75, 46, 183, 145, 183, 147, 160, 215, 118, 198, 125, 181, 146, 30, 251, 58, 87, 47, 209, 237, 97, 24, 47, 179, 6, 110, 242, 99, 150, 226, 148, 198, 174, 146, 101, 213, 87, 178, 10, 223, 105, 18, 56, 53, 22, 212, 158, 170, 176, 51, 86, 145, 125, 124, 44, 9, 85, 19, 144, 246, 170, 78, 124, 30, 32, 12, 166, 174, 139, 77, 63, 173, 82, 10, 153, 2, 129, 129, 0, 248, 18, 143, 246, 137, 136, 145, 219, 178, 39, 27, 94, 64, 90, 47, 163, 114, 60, 63, 187, 131, 143, 244, 16, 42, 128, 231, 117, 92, 98, 219, 155, 62, 107, 252, 17, 245, 45, 160, 225, 103, 142, 72, 36, 193, 150, 235, 214, 175, 62, 212, 56, 45, 9, 0, 60, 114, 107, 134, 228, 204, 131, 131, 214, 94, 201, 148, 159, 99, 139, 181, 13, 119, 38, 30, 107, 166, 165, 203, 43, 34, 20, 207, 171, 32, 58, 167, 62, 196, 153, 103, 204, 213, 247, 48, 111, 227, 59, 95, 97, 194, 187, 53, 10, 247, 108, 58, 86, 28, 29, 113, 8, 110, 171, 220, 245, 11, 82, 233, 223, 91, 68, 166, 117, 174, 187, 62, 77, 2, 129, 129, 0, 235, 118, 2, 105, 239, 212, 30, 104, 157, 41, 109, 11, 248, 152, 22, 236, 97, 40, 153, 131, 228, 5, 86, 187, 113, 126, 144, 76, 141, 79, 110, 250, 146, 152, 49, 58, 156, 201, 176, 92, 189, 209, 30, 112, 108, 175, 204, 204, 247, 164, 46, 129, 239, 98, 127, 49, 145, 218, 63, 193, 124, 174, 18, 98, 201, 99, 154, 162, 138, 78, 159, 253, 3, 248, 3, 209, 36, 239, 193, 155, 193, 5, 19, 236, 37, 78, 118, 135, 250, 199, 7, 141, 248, 120, 36, 136, 93, 98, 174, 60, 18, 215, 93, 174, 107, 141, 116, 145, 167, 221, 210, 169, 247, 67, 254, 222, 161, 134, 63, 221, 90, 87, 42, 99, 227, 81, 173, 151, 2, 129, 129, 0, 133, 23, 168, 103, 83, 232, 146, 160, 181, 23, 40, 38, 204, 13, 214, 203, 49, 41, 195, 227, 189, 181, 8, 243, 119, 106, 75, 67, 250, 250, 10, 234, 98, 118, 26, 250, 35, 121, 132, 124, 10, 76, 26, 198, 165, 154, 108, 19, 117, 88, 23, 17, 192, 143, 184, 177, 181, 141, 157, 4, 185, 248, 193, 77, 204, 243, 7, 170, 240, 4, 111, 113, 183, 0, 27, 136, 20, 19, 149, 74, 33, 241, 218, 108, 236, 80, 171, 148, 16, 116, 97, 109, 83, 74, 88, 145, 94, 239, 102, 192, 19, 114, 207, 5, 128, 51, 111, 164, 237, 86, 154, 99, 52, 197, 62, 57, 182, 6, 152, 245, 61, 137, 58, 105, 159, 2, 84, 109, 2, 129, 129, 0, 226, 67, 111, 132, 95, 91, 101, 177, 63, 189, 44, 53, 193, 184, 92, 230, 223, 98, 133, 74, 209, 86, 52, 7, 65, 195, 206, 100, 81, 178, 144, 65, 167, 151, 42, 79, 89, 149, 18, 173, 188, 21, 244, 251, 49, 230, 41, 150, 153, 46, 35, 38, 231, 99, 174, 56, 115, 32, 215, 253, 85, 147, 108, 197, 147, 34, 236, 216, 222, 177, 57, 90, 136, 114, 207, 48, 46, 31, 90, 220, 18, 58, 143, 239, 111, 214, 27, 95, 6, 36, 53, 229, 62, 108, 45, 39, 1, 30, 47, 178, 56, 164, 206, 56, 42, 208, 46, 193, 61, 31, 147, 45, 147, 23, 187, 22, 50, 255, 111, 229, 132, 199, 152, 75, 142, 136, 209, 151, 2, 129, 129, 0, 165, 56, 232, 76, 55, 57, 240, 159, 92, 207, 220, 143, 130, 30, 57, 234, 251, 172, 171, 180, 54, 159, 229, 96, 246, 73, 112, 146, 75, 157, 242, 201, 161, 218, 37, 176, 35, 170, 50, 90, 148, 102, 191, 199, 239, 174, 78, 72, 67, 85, 199, 45, 149, 145, 132, 161, 212, 33, 157, 75, 216, 79, 39, 233, 18, 210, 255, 26, 72, 229, 239, 44, 12, 147, 158, 176, 192, 95, 126, 32, 175, 23, 226, 131, 139, 197, 175, 193, 62, 8, 151, 252, 68, 154, 94, 89, 189, 125, 90, 30, 36, 175, 73, 230, 194, 13, 233, 247, 123, 60, 241, 47, 171, 51, 189, 112, 111, 213, 141, 89, 70, 249, 236, 63, 236, 110, 115, 208]};\r\n*/\n\nexports.default = new CryptoManager();\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9jcnlwdG9NYW5hZ2VyL0NyeXB0b01hbmFnZXIuanM/ZDliYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMb2cgU3lzdGVtXHJcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XHJcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdDcnlwdG9NYW5hZ2VyJyk7XHJcblxyXG5pbXBvcnQge2RpdmlkZVVSTCwgaXNEYXRhT2JqZWN0VVJMLCBpc0xlZ2FjeSwgY2hhdGtleXNUb1N0cmluZ0Nsb25lciwgY2hhdGtleXNUb0FycmF5Q2xvbmVyLCBwYXJzZU1lc3NhZ2VVUkwsXHJcbiAgcGFyc2UsIHN0cmluZ2lmeSwgZW5jb2RlLCBkZWNvZGUsIGRlY29kZVRvVWludDhBcnJheSwgcGFyc2VUb1VpbnQ4QXJyYXl9IGZyb20gJy4uL3V0aWxzL3V0aWxzLmpzJztcclxuaW1wb3J0IENyeXB0byBmcm9tICcuL0NyeXB0byc7XHJcblxyXG4vKipcclxuKiAgVGhlIENyeXB0byBNYW5hZ2VyIHByb3ZpZGVzIG1hbmFnZXMgY3J5cHRvZ3JhcGhpYyBmZWF0dXJlcyBmb3IgdGhlIHJ1bnRpbWUgaW5jbHVkaW5nOlxyXG4qICAtIE11dHVhbCBBdXRoZW50aWNhdGlvbiBiZXR3ZWVuIHBlZXJzXHJcbiogIC0gQ3J5cHRvIEtleXNcclxuKiAgLSBlMmUgZW5jcnlwdGlvbiBhbmQgZGVjcmlwdGlvbiBvZiBjb21tdW5pY2F0aW9uIGJldHdlZW4gSHlwZXJ0aWVzIGFuZCBkdGEgb2JqZWN0c1xyXG4qXHJcbiovXHJcbmNsYXNzIENyeXB0b01hbmFnZXIge1xyXG5cclxuICAvKipcclxuICAqIFRoaXMgaXMgdGhlIGNvbnN0cnVjdG9yIHRvIGluaXRpYWxpc2UgdGhlIENyeXB0b01hbmFnZXIsIGl0IGRvZXMgbm90IHJlcXVpcmUgYW55IGlucHV0LlxyXG4gICogVGhlIGluaXQoKSBtdXN0IGNhbGxlZCBpbiBvcmRlciB0byBzZXQgbWFuZGF0b3JpZXMgYXR0cmlidXRlc1xyXG4gICovXHJcblxyXG4gIGNvbnN0cnVjdG9yKHN0b3JhZ2VNYW5hZ2VyKSB7XHJcbiAgICB0aGlzLnN0b3JhZ2VNYW5hZ2VyID0gc3RvcmFnZU1hbmFnZXI7XHJcbiAgICB0aGlzLnVzZXJEZWZhdWx0S2V5UmVmID0gJ3VzZXJBc3ltbWV0cmljS2V5JztcclxuICB9XHJcblxyXG4gIGluaXQocnVudGltZVVSTCwgcnVudGltZUNhcGFiaWxpdGllcywgc3RvcmFnZU1hbmFnZXIsIGRhdGFPYmplY3RzU3RvcmFnZSwgcmVnaXN0cnksIGNvcmVEaXNjb3ZlcnksIGlkbSwgcnVudGltZUZhY3RvcnkpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgaWYgKCFydW50aW1lVVJMKSB0aHJvdyBuZXcgRXJyb3IoJ1tdIHJ1bnRpbWVVUkwgaXMgbWlzc2luZy4nKTtcclxuICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHRocm93IG5ldyBFcnJvcignc3RvcmFnZU1hbmFnZXIgaXMgbWlzc2luZycpO1xyXG4gICAgaWYgKCFydW50aW1lRmFjdG9yeSkgdGhyb3cgbmV3IEVycm9yKCdydW50aW1lRmFjdG9yeSBpcyBtaXNzaW5nJyk7XHJcblxyXG4gICAgX3RoaXMuX3J1bnRpbWVVUkwgPSBydW50aW1lVVJMO1xyXG4gICAgX3RoaXMuX2NyeXB0b01hbmFnZXJVUkwgPSBfdGhpcy5fcnVudGltZVVSTCArICcvY3J5cHRvTWFuYWdlcic7XHJcblxyXG4gICAgLy9fdGhpcy5fbXlVUkwgPSBfdGhpcy5fcnVudGltZVVSTCArICcvY3J5cHRvJztcclxuICAgIF90aGlzLnN0b3JhZ2VNYW5hZ2VyID0gc3RvcmFnZU1hbmFnZXI7XHJcbiAgICBfdGhpcy5kYXRhT2JqZWN0c1N0b3JhZ2UgPSBkYXRhT2JqZWN0c1N0b3JhZ2U7XHJcbiAgICBfdGhpcy5ydW50aW1lQ2FwYWJpbGl0aWVzID0gcnVudGltZUNhcGFiaWxpdGllcztcclxuXHJcbiAgICBfdGhpcy5fcnVudGltZUZhY3RvcnkgPSBydW50aW1lRmFjdG9yeTtcclxuICAgIF90aGlzLl9kb21haW4gPSBkaXZpZGVVUkwoX3RoaXMuX3J1bnRpbWVVUkwpLmRvbWFpbjtcclxuXHJcbiAgICBfdGhpcy5jcnlwdG8gPSBuZXcgQ3J5cHRvKF90aGlzLl9ydW50aW1lRmFjdG9yeSk7XHJcblxyXG4gICAgLy8gaGFzaFRhYmxlIHRvIHN0b3JlIGFsbCB0aGUgY3J5cHRvIGluZm9ybWF0aW9uIGJldHdlZW4gdHdvIGh5cGVydGllc1xyXG4gICAgX3RoaXMuY2hhdEtleXMgPSB7fTtcclxuXHJcbiAgICAvLyBoYXNoVGFibGUgdG8gc3RvcmUgdGhlIHN5bW1ldHJpYyBrZXlzIHRvIGJlIHVzZWQgaW4gdGhlIGNoYXQgZ3JvdXBcclxuICAgIF90aGlzLmRhdGFPYmplY3RTZXNzaW9uS2V5cyA9IHt9O1xyXG5cclxuICAgIC8vZmFpbHNhZmUgdG8gZW5hYmxlL2Rpc2FibGUgYWxsIHRoZSBjcmlwdG9ncmFwaGljIGZ1bmN0aW9uc1xyXG4gICAgX3RoaXMuaXNUb1VzZUVuY3J5cHRpb24gPSB0cnVlO1xyXG5cclxuICAgIF90aGlzLl9yZWdpc3RyeSA9IHJlZ2lzdHJ5O1xyXG4gICAgX3RoaXMuX2NvcmVEaXNjb3ZlcnkgPSBjb3JlRGlzY292ZXJ5O1xyXG5cclxuICAgIF90aGlzLl9pZG0gPSBpZG07XHJcblxyXG4gIH1cclxuXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqIEdFVCBBTkQgU0VUIE1FVEhPRFMgKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAvKipcclxuICAqIHJldHVybiB0aGUgbWVzc2FnZUJ1cyBpbiB0aGlzIFJlZ2lzdHJ5XHJcbiAgKiBAcGFyYW0ge01lc3NhZ2VCdXN9ICAgICAgICAgICBtZXNzYWdlQnVzXHJcbiAgKi9cclxuICBnZXQgbWVzc2FnZUJ1cygpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gX3RoaXMuX21lc3NhZ2VCdXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFNldCB0aGUgbWVzc2FnZUJ1cyBpbiB0aGlzIFJlZ2lzdHJ5XHJcbiAgKiBAcGFyYW0ge01lc3NhZ2VCdXN9ICAgICAgICAgICBtZXNzYWdlQnVzXHJcbiAgKi9cclxuICBzZXQgbWVzc2FnZUJ1cyhtZXNzYWdlQnVzKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgX3RoaXMuX21lc3NhZ2VCdXMgPSBtZXNzYWdlQnVzO1xyXG5cclxuICAgIF90aGlzLmFkZENyeXB0b0dVSUxpc3RlbmVycygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiByZXR1cm4gdGhlIGNvcmVEaXNjb3ZlcnkgY29tcG9uZW50XHJcbiAgKi9cclxuICBnZXQgY29yZURpc2NvdmVyeSgpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gX3RoaXMuX2NvcmVEaXNjb3Zlcnk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIHJldHVybiB1c2VyJ3MgcHVibGljIGtleVxyXG4gICovXHJcblxyXG4gIC8qICBnZXRNeVB1YmxpY0tleSgpIHtcclxuICAgIC8vIHRvIGJlIGltcGxlbWVudGVkXHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKT0+IHtcclxuICAgICAgcmVzb2x2ZSgnbXlwdWJsaWNrZXknKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcbiovXHJcbiAgLyoqXHJcbiAgKiBTZXQgdGhlIGNvcmVEaXNjb3ZlcnkgY29tcG9uZW50XHJcbiAgKiBAcGFyYW0ge2NvcmVEaXNjb3Zlcnl9IGNvcmVEaXNjb3ZlcnlcclxuICAqL1xyXG4gIHNldCBjb3JlRGlzY292ZXJ5KGNvcmVEaXNjb3ZlcnkpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBfdGhpcy5fY29yZURpc2NvdmVyeSA9IGNvcmVEaXNjb3Zlcnk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIHJldHVybiB0aGUgcmVnaXN0cnkgaW4gdGhpcyBpZE1vZHVsZVxyXG4gICogQHBhcmFtIHtyZWdpc3RyeX0gICAgICAgICAgIHJlZ2lzdHJ5XHJcbiAgKi9cclxuICBnZXQgcmVnaXN0cnkoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIF90aGlzLl9yZWdpc3RyeTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogU2V0IHRoZSByZWdpc3RyeSBpbiB0aGlzIGlkTW9kdWxlXHJcbiAgKiBAcGFyYW0ge3JlZ2lzdHJ5fSAgICAgcmVnXHJcbiAgKi9cclxuICBzZXQgcmVnaXN0cnkocmVnaXN0cnkpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBfdGhpcy5fcmVnaXN0cnkgPSByZWdpc3RyeTtcclxuICB9XHJcblxyXG5cclxuICAvLyB0byBiZSB1c2VkIHRvIGluaXRpYWxpc2UgSURNIHdpdGggU2Vzc2lvbktleXMgdXNlZCBpbiBwcmV2aW91cyBzZXNzaW9uXHJcblxyXG4gIGxvYWRTZXNzaW9uS2V5cygpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuXHJcbiAgICAgIF90aGlzLnN0b3JhZ2VNYW5hZ2VyLmdldCgnZGF0YU9iamVjdFNlc3Npb25LZXlzJykudGhlbigoc2Vzc2lvbktleXMpID0+IHtcclxuICAgICAgICBpZiAoc2Vzc2lvbktleXMpIF90aGlzLmRhdGFPYmplY3RTZXNzaW9uS2V5cyA9IHNlc3Npb25LZXlzO1xyXG4gICAgICAgIGVsc2UgX3RoaXMuZGF0YU9iamVjdFNlc3Npb25LZXlzID0ge307XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX2lzRnJvbVJlbW90ZVNNKGZyb20pIHtcclxuICAgIGxldCBzcGxpdEZyb20gPSBmcm9tLnNwbGl0KCc6Ly8nKTtcclxuICAgIHJldHVybiBzcGxpdEZyb21bMF0gPT09ICdydW50aW1lJyAmJiBmcm9tICE9PSB0aGlzLl9ydW50aW1lVVJMICsgJy9zbSc7XHJcbiAgfVxyXG5cclxuICBhZGRDcnlwdG9HVUlMaXN0ZW5lcnMoKSB7XHJcbiAgICAvL1RPRE86IENoYW5nZSB0aGUgR1VJIGludm9jYXRpb24gb2YgdGhpcyBtZXRob2RcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgX3RoaXMuX21lc3NhZ2VCdXMuYWRkTGlzdGVuZXIoX3RoaXMuX2NyeXB0b01hbmFnZXJVUkwsIChtc2cpID0+IHtcclxuICAgICAgbGV0IGZ1bmNOYW1lID0gbXNnLmJvZHkubWV0aG9kO1xyXG5cclxuICAgICAgLy9sZXQgcmV0dXJuZWRWYWx1ZTtcclxuICAgICAgaWYgKGZ1bmNOYW1lID09PSAnZ2VuZXJhdGVSU0FLZXlQYWlyJykge1xyXG4gICAgICAgIF90aGlzLl9jcnlwdG8uZ2V0TXlQdWJsaWNLZXkoKS50aGVuKChrZXkpID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHt0eXBlOiAnZXhlY3V0ZScsIHZhbHVlOiBrZXksIGNvZGU6IDIwMH07XHJcbiAgICAgICAgICBsZXQgcmVwbHlNc2cgPSB7aWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgdG86IG1zZy5mcm9tLCBmcm9tOiBtc2cudG8sIGJvZHk6IHZhbHVlfTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHJlcGx5TXNnKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICBsb2cuZXJyb3IoJ09uIGFkZEdVSUxpc3RlbmVycyBmcm9tIGlmIGdlbmVyYXRlUlNBS2V5UGFpciBtZXRob2QgcG9zdE1lc3NhZ2UgZXJyb3I6ICcgKyBlcnIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vKioqKioqKioqKioqKioqKioqKiBFTkNSWVBUSU9OIE1FVEhPRFMgKioqKioqKioqKioqKioqKioqKlxyXG4gIC8qKlxyXG4qIElkZW50aWZpZXMgdGhlIG1lc3NhZ2VzIHRvIGJlIGVuY3J5cHRlZFxyXG4qIEBwYXJhbSB7TWVzc2FnZX0gICAgbWVzc2FnZVxyXG4qIEByZXR1cm5zIHtib29sZWFufSAgcmV0dXJucyB0cnVlIGlmIHRoZSBtZXNzYWdlIHJlcXVpcmVzIGVuY3J5cHRpb25cclxuKi9cclxuXHJcbiAgX2lzVG9FbmNyeXB0KG1lc3NhZ2UpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsb2cuaW5mbygnW0NyeXB0b01hbmFnZXIuaXN0b0NoeXBlck1vZHVsZV0nLCBtZXNzYWdlKTtcclxuICAgIGxldCBpc0NyZWF0ZSA9IG1lc3NhZ2UudHlwZSA9PT0gJ2NyZWF0ZSc7XHJcbiAgICBsZXQgaXNGcm9tSHlwZXJ0eSA9IG1lc3NhZ2UuZnJvbS5pbmNsdWRlcygnaHlwZXJ0eTovLycpO1xyXG4gICAgbGV0IGlzVG9IeXBlcnR5ID0gbWVzc2FnZS50by5pbmNsdWRlcygnaHlwZXJ0eTovLycpO1xyXG4gICAgbGV0IGlzVG9EYXRhT2JqZWN0ID0gaXNEYXRhT2JqZWN0VVJMKG1lc3NhZ2UudG8pO1xyXG4gICAgbGV0IHJlcG9ydGVyID0gX3RoaXMucmVnaXN0cnkuZ2V0RGF0YU9iamVjdFJlcG9ydGVyKG1lc3NhZ2UudG8pO1xyXG5cclxuXHJcbiAgICBsZXQgZG9NdXR1YWxBdXRoZW50aWNhdGlvbiA9IG1lc3NhZ2UuYm9keS5oYXNPd25Qcm9wZXJ0eSgnbXV0dWFsJykgPyBtZXNzYWdlLmJvZHkubXV0dWFsIDogdHJ1ZTtcclxuXHJcbiAgICBpZiAoIWRvTXV0dWFsQXV0aGVudGljYXRpb24pIHJldHVybiBmYWxzZTtcclxuICAgIGlmIChyZXBvcnRlciAhPT0gbnVsbCAmJiBpc0xlZ2FjeShyZXBvcnRlcikpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vaWYgaXMgbm90IHRvIGFwcGx5IGVuY3J5cHRpb24sIHRoZW4gcmV0dXJucyByZXNvbHZlXHJcbiAgICBpZiAoIXRoaXMuaXNUb1VzZUVuY3J5cHRpb24gJiYgIShtZXNzYWdlLnR5cGUgPT09ICdoYW5kc2hha2UnKSkge1xyXG4gICAgICBsb2cuaW5mbygnbm90IGhhbmRzaGFrZTogZW5jcnlwdGlvbiBkaXNhYmxlZCcpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ3VwZGF0ZScpIHtcclxuICAgICAgbG9nLmluZm8oJ3VwZGF0ZTplbmNyeXB0aW9uIGRpc2FibGVkJyk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXNMZWdhY3kobWVzc2FnZS50bykpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gKChpc0NyZWF0ZSAmJiBpc0Zyb21IeXBlcnR5ICYmIGlzVG9IeXBlcnR5KSB8fCAoaXNDcmVhdGUgJiYgaXNGcm9tSHlwZXJ0eSAmJiBpc1RvRGF0YU9iamVjdCAmJiBkb011dHVhbEF1dGhlbnRpY2F0aW9uKSB8fCBtZXNzYWdlLnR5cGUgPT09ICdoYW5kc2hha2UnIHx8IChtZXNzYWdlLnR5cGUgPT09ICd1cGRhdGUnICYmIGRvTXV0dWFsQXV0aGVudGljYXRpb24pKTtcclxuICB9XHJcblxyXG5cclxuICBfaXNUb0RlY3J5cHQobWVzc2FnZSkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgLy8gRm9yIHN5YnNjcmliZSBtZXNzYWdlIGxldCdzIHN0YXJ0IHRoZSBtdXR1YWxBdXRoZW50aWNhdGlvblxyXG4gICAgICBsZXQgaXNTdWJzY3JpcHRpb24gPSBtZXNzYWdlLnR5cGUgPT09ICdzdWJzY3JpYmUnO1xyXG4gICAgICBsZXQgaXNGcm9tUmVtb3RlU00gPSBfdGhpcy5faXNGcm9tUmVtb3RlU00obWVzc2FnZS5mcm9tKTtcclxuXHJcbiAgICAgIGlmIChpc1N1YnNjcmlwdGlvbiAmIGlzRnJvbVJlbW90ZVNNKSB7XHJcbiAgICAgICAgbG9nLmxvZygnX2RvTXV0dWFsQXV0aGVudGljYXRpb25QaGFzZTEnKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnaXN0b0RlY3J5cHQnLCBtZXNzYWdlKTtcclxuICAgICAgICBsZXQgcmVwb3J0ZXIgPSBfdGhpcy5yZWdpc3RyeS5nZXREYXRhT2JqZWN0UmVwb3J0ZXIobWVzc2FnZS50byk7XHJcbiAgICAgICAgaWYgKHJlcG9ydGVyICE9PSBudWxsICYmIGlzTGVnYWN5KHJlcG9ydGVyKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgX3RoaXMuX2RvTXV0dWFsQXV0aGVudGljYXRpb25QaGFzZTEobWVzc2FnZSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaGFzT3duUHJvcGVydHkoJ2JvZHknKSAmJiBtZXNzYWdlLmJvZHkuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykgJiYgdHlwZW9mIG1lc3NhZ2UuYm9keS52YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBsb2cubG9nKCdfaXNUb0RlY3J5cHQ6dHJ1ZScpO1xyXG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbG9nLmxvZygnX2lzVG9EZWNyeXB0OmZhbHNlJyk7XHJcbiAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgbG9nLmVycm9yKCdbQ3J5cHRvTWFuYWdlci5faXNUb0RlY3J5cHRdJywgZXJyb3IpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgZW5jcnlwdE1lc3NhZ2UobWVzc2FnZSkge1xyXG4gICAgLy9sb2cuaW5mbygnZW5jcnlwdE1lc3NhZ2U6bWVzc2FnZScsIG1lc3NhZ2UpO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBsb2cubG9nKCdlbmNyeXB0IG1lc3NhZ2UgJyk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG5cclxuICAgICAgbGV0IGlzSGFuZFNoYWtlVHlwZSA9IG1lc3NhZ2UudHlwZSA9PT0gJ2hhbmRzaGFrZSc7XHJcblxyXG4gICAgICAvL2lmIGlzIG5vdCB0byBhcHBseSBlbmNyeXB0aW9uLCB0aGVuIHJldHVybnMgcmVzb2x2ZVxyXG4gICAgICBpZiAoIV90aGlzLl9pc1RvRW5jcnlwdChtZXNzYWdlKSkge1xyXG4gICAgICAgIC8vIGxvZy5sb2coJ2RlY3J5cHRpb24gZGlzYWJsZWQnKTtcclxuICAgICAgICByZXR1cm4gcmVzb2x2ZShtZXNzYWdlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGRhdGFPYmplY3RVUkwgPSBwYXJzZU1lc3NhZ2VVUkwobWVzc2FnZS50byk7XHJcblxyXG4gICAgICBsZXQgaXNUb0RhdGFPYmplY3QgPSBpc0RhdGFPYmplY3RVUkwoZGF0YU9iamVjdFVSTCk7XHJcbiAgICAgIGxldCBpc1RvTGVnYWN5SWRlbnRpdHkgPSBpc0xlZ2FjeShtZXNzYWdlLnRvKTtcclxuICAgICAgbGV0IGlzRnJvbUh5cGVydHkgPSBkaXZpZGVVUkwobWVzc2FnZS5mcm9tKS50eXBlID09PSAnaHlwZXJ0eSc7XHJcbiAgICAgIGxldCBpc1RvSHlwZXJ0eSA9IGRpdmlkZVVSTChtZXNzYWdlLnRvKS50eXBlID09PSAnaHlwZXJ0eSc7XHJcblxyXG4gICAgICBpZiAobWVzc2FnZS50eXBlID09PSAndXBkYXRlJykge1xyXG4gICAgICAgIGxvZy5sb2coJ2VuY3J5cHQgbWVzc2FnZTogbWVzc2FnZSB0eXBlIHVwZGF0ZScpO1xyXG4gICAgICAgIHJldHVybiByZXNvbHZlKG1lc3NhZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNUb0xlZ2FjeUlkZW50aXR5KSB7XHJcbiAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcclxuICAgICAgfSBlbHNlIGlmIChpc0Zyb21IeXBlcnR5ICYmIGlzVG9IeXBlcnR5KSB7XHJcbiAgICAgICAgbGV0IHVzZXJVUkwgPSBfdGhpcy5fcmVnaXN0cnkuZ2V0SHlwZXJ0eU93bmVyKG1lc3NhZ2UuZnJvbSk7XHJcbiAgICAgICAgaWYgKHVzZXJVUkwpIHtcclxuXHJcbiAgICAgICAgICAvLyBjaGVjayBpZiBleGlzdHMgYW55IGtleXMgYmV0d2VlbiB0d28gdXNlcnNcclxuICAgICAgICAgIGxldCBjaGF0S2V5cyA9IF90aGlzLmNoYXRLZXlzW21lc3NhZ2UuZnJvbSArICc8LT4nICsgbWVzc2FnZS50b107XHJcbiAgICAgICAgICBpZiAoIWNoYXRLZXlzKSB7XHJcbiAgICAgICAgICAgIGNoYXRLZXlzID0gX3RoaXMuX25ld0NoYXRDcnlwdG8obWVzc2FnZSwgdXNlclVSTCk7XHJcblxyXG4gICAgICAgICAgICAvL2xvZy5sb2coJ2NyZWF0ZUNoYXRLZXkgZW5jcnlwdCcsIG1lc3NhZ2UuZnJvbSArIG1lc3NhZ2UudG8pO1xyXG4gICAgICAgICAgICBfdGhpcy5jaGF0S2V5c1ttZXNzYWdlLmZyb20gKyAnPC0+JyArIG1lc3NhZ2UudG9dID0gY2hhdEtleXM7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UuYm9keS5oYW5kc2hha2VQaGFzZSA9ICdzdGFydEhhbmRTaGFrZSc7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGNoYXRLZXlzLmF1dGhlbnRpY2F0ZWQgJiYgIWlzSGFuZFNoYWtlVHlwZSkge1xyXG5cclxuICAgICAgICAgICAgbGV0IGl2ID0gX3RoaXMuY3J5cHRvLmdlbmVyYXRlSVYoKTtcclxuICAgICAgICAgICAgX3RoaXMuY3J5cHRvLmVuY3J5cHRBRVMoY2hhdEtleXMua2V5cy5oeXBlcnR5RnJvbVNlc3Npb25LZXksIHN0cmluZ2lmeShtZXNzYWdlLmJvZHkudmFsdWUpLCBpdikudGhlbihlbmNyeXB0ZWRWYWx1ZSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgIGxldCBmaWx0ZXJlZE1lc3NhZ2UgPSBfdGhpcy5fZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlLCBzdHJpbmdpZnkobWVzc2FnZS5ib2R5LnZhbHVlKSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ2lmeShpdiksIGNoYXRLZXlzLmh5cGVydHlGcm9tLm1lc3NhZ2VJbmZvKTtcclxuXHJcbiAgICAgICAgICAgICAgX3RoaXMuY3J5cHRvLmhhc2hITUFDKGNoYXRLZXlzLmtleXMuaHlwZXJ0eUZyb21IYXNoS2V5LCBmaWx0ZXJlZE1lc3NhZ2UpLnRoZW4oaGFzaCA9PiB7XHJcbiAgICAgICAgICAgICAgICAvL2xvZy5sb2coJ3Jlc3VsdCBvZiBoYXNoICcsIGhhc2gpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0ge2l2OiBlbmNvZGUoaXYpLCB2YWx1ZTogZW5jb2RlKGVuY3J5cHRlZFZhbHVlKSwgaGFzaDogZW5jb2RlKGhhc2gpfTtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UuYm9keS52YWx1ZSA9IGVuY29kZSh2YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvLyBpZiBpcyBhIGhhbmRzaGFrZSBtZXNzYWdlLCBqdXN0IHJlc29sdmUgaXRcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNIYW5kU2hha2VUeXBlKSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7XHJcblxyXG4gICAgICAgICAgICAvLyBlbHNlLCBzdGFydHMgYSBuZXcgaGFuZHNoYWtlIHByb3RvY29sXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBfdGhpcy5fZG9IYW5kU2hha2VQaGFzZShtZXNzYWdlLCBjaGF0S2V5cykudGhlbihmdW5jdGlvbih2YWx1ZSkge1xyXG4gICAgICAgICAgICAgIF90aGlzLmNoYXRLZXlzW21lc3NhZ2UuZnJvbSArICc8LT4nICsgbWVzc2FnZS50b10gPSB2YWx1ZS5jaGF0S2V5cztcclxuXHJcbiAgICAgICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UodmFsdWUubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmVqZWN0KCdlbmNyeXB0IGhhbmRzaGFrZSBwcm90b2NvbCBwaGFzZSAnKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlamVjdCgnSW4gZW5jcnlwdE1lc3NhZ2U6IEh5cGVydHkgb3duZXIgVVJMIHdhcyBub3QgZm91bmQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAvL2lmIGZyb20gaHlwZXJ0eSB0byBhIGRhdGFPYmplY3RVUkxcclxuICAgICAgfSBlbHNlIGlmIChpc0Zyb21IeXBlcnR5ICYmIGlzVG9EYXRhT2JqZWN0KSB7XHJcblxyXG4gICAgICAgIC8vbG9nLmxvZygnZGF0YU9iamVjdCB2YWx1ZSB0byBlbmNyeXB0OiAnLCBtZXNzYWdlLmJvZHkudmFsdWUpO1xyXG4gICAgICAgIC8vbG9nLmxvZygnSWRlbnRpdHlNb2R1bGUgLSBlbmNyeXB0IGZyb20gaHlwZXJ0eSB0byBkYXRhb2JqZWN0ICcsIG1lc3NhZ2UpO1xyXG5cclxuICAgICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5nZXQoJ2RhdGFPYmplY3RTZXNzaW9uS2V5cycpLnRoZW4oKHNlc3Npb25LZXlzKSA9PiB7XHJcbiAgICAgICAgICBzZXNzaW9uS2V5cyA9IGNoYXRrZXlzVG9BcnJheUNsb25lcihzZXNzaW9uS2V5cyB8fCB7fSk7XHJcbiAgICAgICAgICBsZXQgZGF0YU9iamVjdEtleSA9IHNlc3Npb25LZXlzID8gc2Vzc2lvbktleXNbZGF0YU9iamVjdFVSTF0gOiBudWxsO1xyXG5cclxuICAgICAgICAgIF90aGlzLmRhdGFPYmplY3RzU3RvcmFnZS5nZXREYXRhT2JqZWN0KGRhdGFPYmplY3RVUkwpLnRoZW4oKGlzSHlwZXJ0eVJlcG9ydGVyKSA9PiB7XHJcbiAgICAgICAgICAgIC8vaWYgbm8ga2V5IGV4aXN0cywgY3JlYXRlIGEgbmV3IG9uZSBpZiBpcyB0aGUgcmVwb3J0ZXIgb2YgZGF0YU9iamVjdFxyXG4gICAgICAgICAgICBpZiAoIWRhdGFPYmplY3RLZXkpIHtcclxuICAgICAgICAgICAgICAvLyBpZiB0aGUgaHlwZXJ0eSBpcyB0aGUgcmVwb3J0ZXIgb2YgdGhlIGRhdGFPYmplY3QgdGhlbiBnZW5lcmF0ZXMgYSBzZXNzaW9uIGtleVxyXG4gICAgICAgICAgICAgIGlmIChpc0h5cGVydHlSZXBvcnRlci5yZXBvcnRlciAmJiBpc0h5cGVydHlSZXBvcnRlci5yZXBvcnRlciA9PT0gbWVzc2FnZS5mcm9tKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNlc3Npb25LZXkgPSBfdGhpcy5jcnlwdG8uZ2VuZXJhdGVSYW5kb20oKTtcclxuICAgICAgICAgICAgICAgIF90aGlzLmRhdGFPYmplY3RTZXNzaW9uS2V5c1tkYXRhT2JqZWN0VVJMXSA9IHtzZXNzaW9uS2V5OiBzZXNzaW9uS2V5LCBpc1RvRW5jcnlwdDogdHJ1ZX07XHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmUgPSBjaGF0a2V5c1RvU3RyaW5nQ2xvbmVyKF90aGlzLmRhdGFPYmplY3RTZXNzaW9uS2V5cyk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy9UT0RPOiBjaGVjayBpZiB0aGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgc3RvcmVkXHJcbiAgICAgICAgICAgICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5zZXQoJ2RhdGFPYmplY3RTZXNzaW9uS2V5cycsIDAsIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lKS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICByZWplY3QoJ09uIGVuY3J5cHRNZXNzYWdlIGZyb20gbWV0aG9kIHN0b3JhZ2VNYW5hZ2VyLnNldCBlcnJvcjogJyArIGVycik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGRhdGFPYmplY3RLZXkgPSBfdGhpcy5kYXRhT2JqZWN0U2Vzc2lvbktleXNbZGF0YU9iamVjdFVSTF07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2NoZWNrIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBzZXNzaW9uIGtleSBmb3IgdGhlIGNoYXQgcm9vbVxyXG4gICAgICAgICAgICBpZiAoZGF0YU9iamVjdEtleSkge1xyXG5cclxuICAgICAgICAgICAgICAvLyBhbmQgaWYgaXMgdG8gYXBwbHkgZW5jcnlwdGlvbiwgZW5jcnlwdCB0aGUgbWVzc2FnZXNcclxuICAgICAgICAgICAgICBpZiAoZGF0YU9iamVjdEtleS5pc1RvRW5jcnlwdCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGl2ID0gX3RoaXMuY3J5cHRvLmdlbmVyYXRlSVYoKTtcclxuICAgICAgICAgICAgICAgIGxldCBzdHJpbmdpZmllZElWID0gc3RyaW5naWZ5KGl2KTtcclxuICAgICAgICAgICAgICAgIGxldCBzdHJpbmdpZmllZE1lc3NhZ2VCb2R5ID0gc3RyaW5naWZ5KG1lc3NhZ2UuYm9keS52YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgX3RoaXMuY3J5cHRvLmVuY3J5cHRBRVMoZGF0YU9iamVjdEtleS5zZXNzaW9uS2V5LCBzdHJpbmdpZmllZE1lc3NhZ2VCb2R5LCBpdikudGhlbihlbmNyeXB0ZWRWYWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBtZXNzYWdlLmJvZHkuaWRlbnRpdHkuYXNzZXJ0aW9uOyAvL1RPRE86IENoZWNrIHdoeSBhc3NlcnRpb24gaXMgY29tbWluZyBvbiB0aGUgbWVzc2FnZSFcclxuICAgICAgICAgICAgICAgICAgZGVsZXRlIG1lc3NhZ2UuYm9keS5pZGVudGl0eS5leHBpcmVzOyAvL1RPRE86IENoZWNrIHdoeSBleHBpcmVzIGlzIGNvbW1pbmcgb24gdGhlIG1lc3NhZ2UhXHJcbiAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJlZE1lc3NhZ2UgPSBfdGhpcy5fZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlLCBzdHJpbmdpZmllZE1lc3NhZ2VCb2R5ICsgc3RyaW5naWZpZWRJVik7XHJcblxyXG4gICAgICAgICAgICAgICAgICBfdGhpcy5jcnlwdG8uaGFzaEhNQUMoZGF0YU9iamVjdEtleS5zZXNzaW9uS2V5LCBmaWx0ZXJlZE1lc3NhZ2UpLnRoZW4oaGFzaCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbG9nLmxvZygnaGFzaCAnLCBoYXNoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0ge3ZhbHVlOiBlbmNvZGUoZW5jcnlwdGVkVmFsdWUpLCBpdjogZW5jb2RlKGl2KSwgaGFzaDogZW5jb2RlKGhhc2gpfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5ib2R5LnZhbHVlID0gc3RyaW5naWZ5KG5ld1ZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAvLyBpZiBub3QsIGp1c3Qgc2VuZCB0aGUgbWVzc2FnZVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgLy8gc3RhcnQgdGhlIGdlbmVyYXRpb24gb2YgYSBuZXcgc2Vzc2lvbiBLZXlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZWplY3QoJ0RhdGEgb2JqZWN0IGtleSBjb3VsZCBub3QgYmUgZGVmaW5lZDogRmFpbGVkIHRvIGRlY3J5cHQgbWVzc2FnZSAnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHsgcmVqZWN0KCdPbiBlbmNyeXB0TWVzc2FnZSBmcm9tIG1ldGhvZCBkYXRhT2JqZWN0c1N0b3JhZ2UuZ2V0RGF0YU9iamVjdCBlcnJvcjogJyArIGVycik7IH0pO1xyXG4gICAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnT24gZW5jcnlwdE1lc3NhZ2UgZnJvbSBtZXRob2Qgc3RvcmFnZU1hbmFnZXIuZ2V0IGVycm9yOiAnICsgZXJyKTsgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZW5jcnlwdERhdGFPYmplY3QoZGF0YU9iamVjdCwgc2VuZGVyKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgbG9nLmluZm8oJ2RhdGFPYmplY3QgdmFsdWUgdG8gZW5jcnlwdDogJywgZGF0YU9iamVjdCk7XHJcblxyXG4gICAgICBsZXQgZGF0YU9iamVjdFVSTCA9IHBhcnNlTWVzc2FnZVVSTChzZW5kZXIpO1xyXG5cclxuICAgICAgX3RoaXMuc3RvcmFnZU1hbmFnZXIuZ2V0KCdkYXRhT2JqZWN0U2Vzc2lvbktleXMnKS50aGVuKChzZXNzaW9uS2V5cykgPT4ge1xyXG4gICAgICAgIHNlc3Npb25LZXlzID0gY2hhdGtleXNUb0FycmF5Q2xvbmVyKHNlc3Npb25LZXlzIHx8IHt9KTtcclxuICAgICAgICBsZXQgZGF0YU9iamVjdEtleSA9IHNlc3Npb25LZXlzID8gc2Vzc2lvbktleXNbZGF0YU9iamVjdFVSTF0gOiBudWxsO1xyXG5cclxuICAgICAgICAvL2NoZWNrIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBzZXNzaW9uIGtleSBmb3IgdGhlIGNoYXQgcm9vbVxyXG4gICAgICAgIGlmIChkYXRhT2JqZWN0S2V5KSB7XHJcblxyXG4gICAgICAgICAgLy8gYW5kIGlmIGlzIHRvIGFwcGx5IGVuY3J5cHRpb24sIGVuY3J5cHQgdGhlIG1lc3NhZ2VzXHJcbiAgICAgICAgICBpZiAoZGF0YU9iamVjdEtleS5pc1RvRW5jcnlwdCkge1xyXG4gICAgICAgICAgICBsZXQgaXYgPSBfdGhpcy5jcnlwdG8uZ2VuZXJhdGVJVigpO1xyXG5cclxuICAgICAgICAgICAgX3RoaXMuY3J5cHRvLmVuY3J5cHRBRVMoZGF0YU9iamVjdEtleS5zZXNzaW9uS2V5LCBzdHJpbmdpZnkoZGF0YU9iamVjdCksIGl2KS50aGVuKGVuY3J5cHRlZFZhbHVlID0+IHtcclxuICAgICAgICAgICAgICBsZXQgbmV3VmFsdWUgPSB7IHZhbHVlOiBlbmNvZGUoZW5jcnlwdGVkVmFsdWUpLCBpdjogZW5jb2RlKGl2KSB9O1xyXG5cclxuICAgICAgICAgICAgICAvL2xvZy5sb2coJ2VuY3J5cHRlZCBkYXRhT2JqZWN0JywgbmV3VmFsdWUpO1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKG5ld1ZhbHVlKTtcclxuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHsgcmVqZWN0KCdPbiBlbmNyeXB0RGF0YU9iamVjdCBmcm9tIG1ldGhvZCBlbmNyeXB0QUVTIGVycm9yOiAnICsgZXJyKTsgfSk7XHJcblxyXG4gICAgICAgICAgLy8gaWYgbm90LCBqdXN0IHNlbmQgdGhlIG1lc3NhZ2VcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxvZy5pbmZvKCdUaGUgZGF0YU9iamVjdCBpcyBub3QgZW5jcnlwdGVkJyk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKGRhdGFPYmplY3QpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIHN0YXJ0IHRoZSBnZW5lcmF0aW9uIG9mIGEgbmV3IHNlc3Npb24gS2V5XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiByZWplY3QoJ05vIGRhdGFPYmplY3RLZXkgZm9yIHRoaXMgZGF0YU9iamVjdFVSTDonLCBkYXRhT2JqZWN0VVJMKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnT24gZW5jcnlwdERhdGFPYmplY3QgZnJvbSBtZXRob2Qgc3RvcmFnZU1hbmFnZXIuZ2V0IGVycm9yOiAnICsgZXJyKTsgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRlY3J5cHRNZXNzYWdlKG1lc3NhZ2UpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgLy8gIGxvZy5sb2coJ2RlY3J5cHRNZXNzYWdlOm1lc3NhZ2UnLCBtZXNzYWdlKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgIGxldCBpc0hhbmRTaGFrZVR5cGUgPSBtZXNzYWdlLnR5cGUgPT09ICdoYW5kc2hha2UnO1xyXG5cclxuICAgICAgX3RoaXMuX2lzVG9EZWNyeXB0KG1lc3NhZ2UpLnRoZW4oKGlzVG9EZWNyeXB0KSA9PiB7XHJcblxyXG4gICAgICAgIC8vaWYgaXMgbm90IHRvIGFwcGx5IGVuY3J5cHRpb24sIHRoZW4gcmV0dXJucyByZXNvbHZlXHJcbiAgICAgICAgaWYgKCFpc1RvRGVjcnlwdCkgcmV0dXJuIHJlc29sdmUobWVzc2FnZSk7XHJcblxyXG4gICAgICAgIGxldCBkYXRhT2JqZWN0VVJMID0gcGFyc2VNZXNzYWdlVVJMKG1lc3NhZ2UudG8pO1xyXG5cclxuICAgICAgICBsZXQgaXNUb0RhdGFPYmplY3QgPSBpc0RhdGFPYmplY3RVUkwoZGF0YU9iamVjdFVSTCk7XHJcbiAgICAgICAgbGV0IGlzRnJvbUh5cGVydHkgPSBkaXZpZGVVUkwobWVzc2FnZS5mcm9tKS50eXBlID09PSAnaHlwZXJ0eSc7XHJcbiAgICAgICAgbGV0IGlzVG9IeXBlcnR5ID0gZGl2aWRlVVJMKG1lc3NhZ2UudG8pLnR5cGUgPT09ICdoeXBlcnR5JztcclxuXHJcbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ3VwZGF0ZScpIHtcclxuICAgICAgICAgIHJldHVybiByZXNvbHZlKG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9pcyBpcyBoeXBlcnR5IHRvIGh5cGVydHkgY29tbXVuaWNhdGlvblxyXG4gICAgICAgIGlmIChpc0Zyb21IeXBlcnR5ICYmIGlzVG9IeXBlcnR5KSB7XHJcbiAgICAgICAgICAvLyBsb2cubG9nKCdkZWNyeXB0IGh5cGVydHkgdG8gaHlwZXJ0eScpO1xyXG4gICAgICAgICAgbGV0IHVzZXJVUkwgPSBfdGhpcy5fcmVnaXN0cnkuZ2V0SHlwZXJ0eU93bmVyKG1lc3NhZ2UudG8pO1xyXG4gICAgICAgICAgaWYgKHVzZXJVUkwpIHtcclxuXHJcbiAgICAgICAgICAgIGxldCBjaGF0S2V5cyA9IF90aGlzLmNoYXRLZXlzW21lc3NhZ2UudG8gKyAnPC0+JyArIG1lc3NhZ2UuZnJvbV07XHJcbiAgICAgICAgICAgIGlmICghY2hhdEtleXMpIHtcclxuICAgICAgICAgICAgICBjaGF0S2V5cyA9IF90aGlzLl9uZXdDaGF0Q3J5cHRvKG1lc3NhZ2UsIHVzZXJVUkwsICdkZWNyeXB0Jyk7XHJcbiAgICAgICAgICAgICAgX3RoaXMuY2hhdEtleXNbbWVzc2FnZS50byArICc8LT4nICsgbWVzc2FnZS5mcm9tXSA9IGNoYXRLZXlzO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoY2hhdEtleXMuYXV0aGVudGljYXRlZCAmJiAhaXNIYW5kU2hha2VUeXBlKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZGVjb2RlKG1lc3NhZ2UuYm9keS52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgbGV0IGl2ID0gZGVjb2RlVG9VaW50OEFycmF5KHZhbHVlLml2KTtcclxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IGRlY29kZVRvVWludDhBcnJheSh2YWx1ZS52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgbGV0IGhhc2ggPSBkZWNvZGVUb1VpbnQ4QXJyYXkodmFsdWUuaGFzaCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMuY3J5cHRvLmRlY3J5cHRBRVMoY2hhdEtleXMua2V5cy5oeXBlcnR5VG9TZXNzaW9uS2V5LCBkYXRhLCBpdikudGhlbihkZWNyeXB0ZWREYXRhID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGxvZy5sb2coJ2RlY3J5cHRlZCB2YWx1ZSAnLCBkZWNyeXB0ZWREYXRhKTtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UuYm9keS52YWx1ZSA9IGRlY3J5cHRlZERhdGE7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGZpbHRlcmVkTWVzc2FnZSA9IF90aGlzLl9maWx0ZXJNZXNzYWdlVG9IYXNoKG1lc3NhZ2UsIGRlY3J5cHRlZERhdGEgKyBpdik7XHJcblxyXG4gICAgICAgICAgICAgICAgX3RoaXMuY3J5cHRvLnZlcmlmeUhNQUMoY2hhdEtleXMua2V5cy5oeXBlcnR5VG9IYXNoS2V5LCBmaWx0ZXJlZE1lc3NhZ2UsIGhhc2gpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgLy9sb2cubG9nKCdyZXN1bHQgb2YgaGFzaCB2ZXJpZmljYXRpb24hICcsIHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuYm9keS5hc3NlcnRlZElkZW50aXR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0hhbmRTaGFrZVR5cGUpIHtcclxuICAgICAgICAgICAgICBfdGhpcy5fZG9IYW5kU2hha2VQaGFzZShtZXNzYWdlLCBjaGF0S2V5cykudGhlbihmdW5jdGlvbih2YWx1ZSkge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vaWYgaXQgd2FzIHN0YXJ0ZWQgYnkgZG9NdXR1YWxBdXRoZW50aWNhdGlvbiB0aGVuIGVuZHMgdGhlIHByb3RvY29sXHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09ICdoYW5kU2hha2VFbmQnKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vcmVqZWN0KCdkZWNyeXB0IGhhbmRzaGFrZSBwcm90b2NvbCBwaGFzZScpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gaWYgd2FzIHN0YXJ0ZWQgYnkgYSBtZXNzYWdlLCB0aGVuIHJlc2VuZCB0aGF0IG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLmNoYXRLZXlzW21lc3NhZ2UudG8gKyAnPC0+JyArIG1lc3NhZ2UuZnJvbV0gPSB2YWx1ZS5jaGF0S2V5cztcclxuICAgICAgICAgICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UodmFsdWUubWVzc2FnZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvL3JlamVjdCgnZGVjcnlwdCBoYW5kc2hha2UgcHJvdG9jb2wgcGhhc2UgJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVqZWN0KCd3cm9uZyBtZXNzYWdlIGRvIGRlY3J5cHQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVqZWN0KCdlcnJvciBvbiBkZWNyeXB0IG1lc3NhZ2UnKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvL2lmIGZyb20gaHlwZXJ0eSB0byBhIGRhdGFPYmplY3RVUkxcclxuICAgICAgICB9IGVsc2UgaWYgKGlzRnJvbUh5cGVydHkgJiYgaXNUb0RhdGFPYmplY3QpIHtcclxuICAgICAgICAgIC8vIGxvZy5sb2coJ2RhdGFPYmplY3QgdmFsdWUgdG8gZGVjcnlwdDogJywgbWVzc2FnZS5ib2R5KTtcclxuXHJcbiAgICAgICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5nZXQoJ2RhdGFPYmplY3RTZXNzaW9uS2V5cycpLnRoZW4oKHNlc3Npb25LZXlzKSA9PiB7XHJcbiAgICAgICAgICAgIHNlc3Npb25LZXlzID0gY2hhdGtleXNUb0FycmF5Q2xvbmVyKHNlc3Npb25LZXlzIHx8IHt9KTtcclxuICAgICAgICAgICAgbGV0IGRhdGFPYmplY3RLZXkgPSBzZXNzaW9uS2V5cyA/IHNlc3Npb25LZXlzW2RhdGFPYmplY3RVUkxdIDogbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGlmIChkYXRhT2JqZWN0S2V5KSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vY2hlY2sgaWYgaXMgdG8gYXBwbHkgZW5jcnlwdGlvblxyXG4gICAgICAgICAgICAgIGlmIChkYXRhT2JqZWN0S2V5LmlzVG9FbmNyeXB0KSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGFyc2VkVmFsdWUgPSBwYXJzZShtZXNzYWdlLmJvZHkudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGl2ID0gZGVjb2RlVG9VaW50OEFycmF5KHBhcnNlZFZhbHVlLml2KTtcclxuICAgICAgICAgICAgICAgIGxldCBlbmNyeXB0ZWRWYWx1ZSA9IGRlY29kZVRvVWludDhBcnJheShwYXJzZWRWYWx1ZS52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgaGFzaCA9IGRlY29kZVRvVWludDhBcnJheShwYXJzZWRWYWx1ZS5oYXNoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBfdGhpcy5jcnlwdG8uZGVjcnlwdEFFUyhkYXRhT2JqZWN0S2V5LnNlc3Npb25LZXksIGVuY3J5cHRlZFZhbHVlLCBpdikudGhlbihkZWNyeXB0ZWRWYWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBwYXJzZWRWYWx1ZSA9IHBhcnNlKGRlY3J5cHRlZFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIGxvZy5sb2coJ2RlY3J5cHRlZCBWYWx1ZSwnLCBwYXJzZWRWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuYm9keS52YWx1ZSA9IHBhcnNlZFZhbHVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgbGV0IGZpbHRlcmVkTWVzc2FnZSA9IF90aGlzLl9maWx0ZXJNZXNzYWdlVG9IYXNoKG1lc3NhZ2UsIHN0cmluZ2lmeShwYXJzZWRWYWx1ZSkgKyBzdHJpbmdpZnkoaXYpKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLmNyeXB0by52ZXJpZnlITUFDKGRhdGFPYmplY3RLZXkuc2Vzc2lvbktleSwgZmlsdGVyZWRNZXNzYWdlLCBoYXNoKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nLmxvZygnUmVjZWl2ZWQgbWVzc2FnZSBITUFDIHJlc3VsdCcsIHJlc3VsdCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuYm9keS5hc3NlcnRlZElkZW50aXR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4geyByZWplY3QoJ01lc3NhZ2UgSE1BQyBpcyBpbnZhbGlkOiAnICsgZXJyKTsgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvL2lmIG5vdCwganVzdCByZXR1cm4gdGhlIG1lc3NhZ2VcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZS5ib2R5LmFzc2VydGVkSWRlbnRpdHkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuYm9keS5hc3NlcnRlZElkZW50aXR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2UpO1xyXG5cclxuICAgICAgICAgICAgICAvL3JlamVjdCgnbm8gc2Vzc2lvbktleSBmb3IgY2hhdCByb29tIGZvdW5kJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVqZWN0KCd3cm9uZyBtZXNzYWdlIHRvIGRlY3J5cHQnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVjcnlwdERhdGFPYmplY3QoZGF0YU9iamVjdCwgc2VuZGVyKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgLy9pZiBpcyBub3QgdG8gYXBwbHkgZW5jcnlwdGlvbiwgdGhlbiByZXR1cm5zIHJlc29sdmVcclxuICAgICAgaWYgKCFfdGhpcy5pc1RvVXNlRW5jcnlwdGlvbikge1xyXG4gICAgICAgIC8vIGxvZy5sb2coJ2RlY3J5cHRpb24gZGlzYWJsZWQnKTtcclxuICAgICAgICByZXR1cm4gcmVzb2x2ZShkYXRhT2JqZWN0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGRhdGFPYmplY3RVUkwgPSBwYXJzZU1lc3NhZ2VVUkwoc2VuZGVyKTtcclxuXHJcbiAgICAgIC8vIGxvZy5sb2coJ2RhdGFPYmplY3QgdmFsdWUgdG8gZGVjcnlwdDogJywgZGF0YU9iamVjdCk7XHJcblxyXG4gICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5nZXQoJ2RhdGFPYmplY3RTZXNzaW9uS2V5cycpLnRoZW4oKHNlc3Npb25LZXlzKSA9PiB7XHJcbiAgICAgICAgc2Vzc2lvbktleXMgPSBjaGF0a2V5c1RvQXJyYXlDbG9uZXIoc2Vzc2lvbktleXMpO1xyXG4gICAgICAgIGxldCBkYXRhT2JqZWN0S2V5ID0gc2Vzc2lvbktleXMgPyBzZXNzaW9uS2V5c1tkYXRhT2JqZWN0VVJMXSA6IG51bGw7XHJcblxyXG4gICAgICAgIGlmIChkYXRhT2JqZWN0S2V5KSB7XHJcblxyXG4gICAgICAgICAgLy9jaGVjayBpZiBpcyB0byBhcHBseSBlbmNyeXB0aW9uXHJcbiAgICAgICAgICBpZiAoZGF0YU9iamVjdEtleS5pc1RvRW5jcnlwdCkge1xyXG4gICAgICAgICAgICBsZXQgaXYgPSBkZWNvZGVUb1VpbnQ4QXJyYXkoZGF0YU9iamVjdC5pdik7XHJcbiAgICAgICAgICAgIGxldCBlbmNyeXB0ZWRWYWx1ZSA9IGRlY29kZVRvVWludDhBcnJheShkYXRhT2JqZWN0LnZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIF90aGlzLmNyeXB0by5kZWNyeXB0QUVTKGRhdGFPYmplY3RLZXkuc2Vzc2lvbktleSwgZW5jcnlwdGVkVmFsdWUsIGl2KS50aGVuKGRlY3J5cHRlZFZhbHVlID0+IHtcclxuICAgICAgICAgICAgICBsZXQgcGFyc2VkVmFsdWUgPSBwYXJzZShkZWNyeXB0ZWRWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0geyB2YWx1ZTogcGFyc2VkVmFsdWUsIGl2OiBlbmNvZGUoaXYpIH07XHJcblxyXG4gICAgICAgICAgICAgIC8vIGxvZy5sb2coJ2RlY3J5cHRlZCBkYXRhT2JqZWN0LCcsIG5ld1ZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUobmV3VmFsdWUpO1xyXG4gICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4geyByZWplY3QoJ09uIGRlY3J5cHREYXRhT2JqZWN0IGZyb20gbWV0aG9kIGVuY3J5cHRBRVMgZXJyb3I6ICcgKyBlcnIpOyB9KTtcclxuXHJcbiAgICAgICAgICAvL2lmIG5vdCwganVzdCByZXR1cm4gdGhlIGRhdGFPYmplY3RcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGxvZy5sb2coJ1RoZSBkYXRhT2JqZWN0IGlzIG5vdCBlbmNyeXB0ZWQnKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoZGF0YU9iamVjdCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KCdObyBkYXRhT2JqZWN0S2V5IGZvciB0aGlzIGRhdGFPYmplY3RVUkw6JywgZGF0YU9iamVjdFVSTCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX2RvTXV0dWFsQXV0aGVudGljYXRpb25QaGFzZTEobWVzc2FnZSkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgbGV0IHRvID0gbWVzc2FnZS50by5zcGxpdCgnLycpO1xyXG5cclxuICAgICAgLy9sZXQgc3Vic0luZGV4ID0gdG8uaW5kZXhPZignc3Vic2NyaXB0aW9uJyk7XHJcbiAgICAgIC8vbGV0IGlzRGF0YU9iamVjdFN1YnNjcmlwdGlvbiA9IHN1YnNJbmRleCAhPT0gLTE7XHJcbiAgICAgIHRvLnBvcCgpO1xyXG4gICAgICBsZXQgZGF0YU9iamVjdFVSTCA9IHRvWzBdICsgJy8vJyArIHRvWzJdICsgJy8nICsgdG9bM107XHJcbiAgICAgIF90aGlzLl9kb011dHVhbEF1dGhlbnRpY2F0aW9uUGhhc2UyKGRhdGFPYmplY3RVUkwsIG1lc3NhZ2UuYm9keS5zdWJzY3JpYmVyKS50aGVuKCgpID0+IHtcclxuICAgICAgICBfdGhpcy5fcmVnaXN0cnkucmVnaXN0ZXJTdWJzY3JpYmVyKGRhdGFPYmplY3RVUkwsIG1lc3NhZ2UuYm9keS5zdWJzY3JpYmVyKTtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBfZG9NdXR1YWxBdXRoZW50aWNhdGlvblBoYXNlMihzZW5kZXIsIHJlY2VpdmVyKSB7XHJcbiAgICBsb2cuaW5mbygnZG9NdXR1YWxBdXRoZW50aWNhdGlvbjpzZW5kZXIgJywgc2VuZGVyKTtcclxuICAgIGxvZy5pbmZvKCdkb011dHVhbEF1dGhlbnRpY2F0aW9uOnJlY2VpdmVyICcsIHJlY2VpdmVyKTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG5cclxuICAgICAgbGV0IGRhdGFPYmplY3RVUkw7XHJcblxyXG4gICAgICAvLyBjaGVjayBpZiB0aGUgc2VuZGVyIGlzIGEgZGF0YU9iamVjdCBhbmQgaWYgc28gc3RvcmVzIHRoYXQgdmFsdWVcclxuICAgICAgbGV0IHJlcG9ydGVyVVJMID0gX3RoaXMuX3JlZ2lzdHJ5LmdldFJlcG9ydGVyVVJMU3luY2hvbm91cyhzZW5kZXIpO1xyXG4gICAgICBpZiAocmVwb3J0ZXJVUkwpIHtcclxuICAgICAgICBkYXRhT2JqZWN0VVJMID0gc2VuZGVyO1xyXG4gICAgICAgIHNlbmRlciA9IHJlcG9ydGVyVVJMO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbXNnID0ge1xyXG4gICAgICAgIHRvOiByZWNlaXZlcixcclxuICAgICAgICBmcm9tOiBzZW5kZXIsXHJcbiAgICAgICAgY2FsbGJhY2s6IHVuZGVmaW5lZCxcclxuICAgICAgICBib2R5OiB7aGFuZHNoYWtlUGhhc2U6ICdzdGFydEhhbmRTaGFrZScsIGlnbm9yZTogJ2lnbm9yZU1lc3NhZ2UnfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKCFzZW5kZXIgfHwgIXJlY2VpdmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlamVjdCgnc2VuZGVyIG9yIHJlY2VpdmVyIG1pc3Npbmcgb24gZG9NdXR1YWxBdXRoZW50aWNhdGlvbicpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgY2hhdEtleXMgPSBfdGhpcy5jaGF0S2V5c1tzZW5kZXIgKyAnPC0+JyArIHJlY2VpdmVyXTtcclxuICAgICAgbGV0IHVzZXJVUkwgPSBfdGhpcy5fcmVnaXN0cnkuZ2V0SHlwZXJ0eU93bmVyKHNlbmRlcik7XHJcblxyXG4gICAgICBpZiAodXNlclVSTCkge1xyXG5cclxuICAgICAgICBpZiAoIWNoYXRLZXlzKSB7XHJcbiAgICAgICAgICAvLyBjYWxsYmFjayB0byByZXNvbHZlIHdoZW4gZmluaXNoIHRoZSBtdXR1YWwgYXV0aGVudGljYXRpb25cclxuICAgICAgICAgIGxldCByZXNvbHZlZCA9IGZ1bmN0aW9uKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIC8vIGxvZy5sb2coJ2NhbGxiYWNrIHZhbHVlOicsIHZhbHVlKTtcclxuICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgbXNnLmNhbGxiYWNrID0gcmVzb2x2ZWQ7XHJcbiAgICAgICAgICBtc2cuZGF0YU9iamVjdFVSTCA9IGRhdGFPYmplY3RVUkw7XHJcblxyXG4gICAgICAgICAgY2hhdEtleXMgPSBfdGhpcy5fbmV3Q2hhdENyeXB0byhtc2csIHVzZXJVUkwpO1xyXG4gICAgICAgICAgX3RoaXMuY2hhdEtleXNbc2VuZGVyICsgJzwtPicgKyByZWNlaXZlcl0gPSBjaGF0S2V5cztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGF0S2V5cy5hdXRoZW50aWNhdGVkKSB7XHJcblxyXG4gICAgICAgICAgbGV0IHN0YXJ0U2Vzc2lvbktleUV4Y2hhbmdlID0ge1xyXG4gICAgICAgICAgICB0bzogc2VuZGVyLFxyXG4gICAgICAgICAgICBmcm9tOiByZWNlaXZlclxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGNoYXRLZXlzLmRhdGFPYmplY3RVUkwgPSBkYXRhT2JqZWN0VVJMO1xyXG4gICAgICAgICAgX3RoaXMuX3NlbmRSZXBvcnRlclNlc3Npb25LZXkoc3RhcnRTZXNzaW9uS2V5RXhjaGFuZ2UsIGNoYXRLZXlzKS50aGVuKHZhbHVlID0+IHtcclxuXHJcbiAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHZhbHVlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXNvbHZlKCdleGNoYW5nZSBvZiBjaGF0IHNlc3Npb25LZXkgaW5pdGlhdGVkJyk7XHJcbiAgICAgICAgICB9KS5jYXRjaChlcnIgPT4geyByZWplY3QoJ09uIGRvTXV0dWFsQXV0aGVudGljYXRpb24gZnJvbSBtZXRob2QgX3NlbmRSZXBvcnRlclNlc3Npb25LZXkgZXJyb3I6ICcgKyBlcnIpOyB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgX3RoaXMuX2RvSGFuZFNoYWtlUGhhc2UobXNnLCBjaGF0S2V5cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlamVjdCgnTXV0dWFsIGF1dGhlbnRpY2F0aW9uIGVycm9yOiBIeXBlcnR5IG93bmVyIGNvdWxkIG5vdCBiZSByZXNvbHZlZCcpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgKiByZXR1cm5zIHRoZSByZXBvcnRlciBhc3NvY2lhdGVkIHRvIHRoZSBkYXRhT2JqZWN0IFVSTFxyXG4gICogQHBhcmFtICAge1N0cmluZ30gICBkYXRhT2JqZWN0VVJMICAgICAgICAgZGF0YU9iamVjdCB1cmxcclxuICAqIEByZXR1cm4gICB7U3RyaW5nfSAgcmVwb3J0ZXIgICAgICAgICAgICAgIGRhdGFPYmplY3QgdXJsIHJlcG9ydGVyXHJcbiAgKi9cclxuICAvKiAgX2dldEh5cGVydHlGcm9tRGF0YU9iamVjdChkYXRhT2JqZWN0VVJMKSB7XHJcbiAgICBsb2cuaW5mbygnX2dldEh5cGVydHlGcm9tRGF0YU9iamVjdDpkYXRhT2JqZWN0VVJMJywgZGF0YU9iamVjdFVSTCk7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIGxldCBzcGxpdGVkVVJMID0gZGl2aWRlVVJMKGRhdGFPYmplY3RVUkwpO1xyXG4gICAgICBsZXQgZG9tYWluID0gc3BsaXRlZFVSTC5kb21haW47XHJcbiAgICAgIGxldCBmaW5hbFVSTCA9IF90aGlzLl9wYXJzZU1lc3NhZ2VVUkwoZGF0YU9iamVjdFVSTCk7XHJcblxyXG4gICAgICAvLyBjaGVjayBpZiBpcyB0aGUgY3JlYXRvciBvZiB0aGUgaHlwZXJ0eVxyXG4gICAgICBsZXQgcmVwb3J0ZXJVUkwgPSBfdGhpcy5yZWdpc3RyeS5nZXRSZXBvcnRlclVSTFN5bmNob25vdXMoZmluYWxVUkwpO1xyXG4gICAgICBsb2cuaW5mbygnX2dldEh5cGVydHlGcm9tRGF0YU9iamVjdDpyZXBvcnRlclVSTCcsIHJlcG9ydGVyVVJMKTtcclxuXHJcbiAgICAgIGlmIChyZXBvcnRlclVSTCkge1xyXG4gICAgICAgIHJlc29sdmUocmVwb3J0ZXJVUkwpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIGFscmVhZHkgYW4gYXNzb2NpYXRpb24gZnJvbSBhbiBoeXBlcnR5VVJMIHRvIHRoZSBkYXRhT2JqZWN0XHJcbiAgICAgICAgbGV0IHN0b3JlZFJlcG9ydGVyVVJMID0gX3RoaXMuZGF0YU9iamVjdHNJZGVudGl0eVtmaW5hbFVSTF07XHJcbiAgICAgICAgbG9nLmluZm8oJ19nZXRIeXBlcnR5RnJvbURhdGFPYmplY3Q6c3RvcmVkUmVwb3J0ZXJVUkwnLCBzdG9yZWRSZXBvcnRlclVSTCk7XHJcblxyXG4gICAgICAgIGlmIChzdG9yZWRSZXBvcnRlclVSTCkge1xyXG4gICAgICAgICAgcmVzb2x2ZShzdG9yZWRSZXBvcnRlclVSTCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBoeXBlcnR5IHRoYXQgc3Vic2NyaWJlZCB0aGUgZGF0YU9iamVjdFVSTFxyXG4gICAgICAgICAgbGV0IHN1YnNjcmliZXJIeXBlcnR5ID0gX3RoaXMucmVnaXN0cnkuZ2V0RGF0YU9iamVjdFN1YnNjcmliZXJIeXBlcnR5KGRhdGFPYmplY3RVUkwpO1xyXG4gICAgICAgICAgbG9nLmluZm8oJ19nZXRIeXBlcnR5RnJvbURhdGFPYmplY3Q6c3Vic2NyaWJlckh5cGVydHknLCBzdWJzY3JpYmVySHlwZXJ0eSk7XHJcblxyXG4gICAgICAgICAgaWYgKHN1YnNjcmliZXJIeXBlcnR5KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoc3Vic2NyaWJlckh5cGVydHkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gc2VhcmNoIGluIGRvbWFpbiByZWdpc3RyeSBmb3IgdGhlIGh5cGVydHkgYXNzb2NpYXRlZCB0byB0aGUgZGF0YU9iamVjdFxyXG4gICAgICAgICAgICAvLyBzZWFyY2ggaW4gY2FzZSBpcyBhIHN1YnNjcmliZXIgd2hvIHdhbnRzIHRvIGtub3cgdGhlIHJlcG9ydGVyXHJcbiAgICAgICAgICAgIF90aGlzLl9jb3JlRGlzY292ZXJ5LmRpc2NvdmVyRGF0YU9iamVjdFBlclVSTChmaW5hbFVSTCwgZG9tYWluKS50aGVuKGRhdGFPYmplY3QgPT4ge1xyXG4gICAgICAgICAgICAgIGxvZy5pbmZvKCdfZ2V0SHlwZXJ0eUZyb21EYXRhT2JqZWN0OmRhdGFPYmplY3QnLCBkYXRhT2JqZWN0KTtcclxuICAgICAgICAgICAgICBfdGhpcy5kYXRhT2JqZWN0c0lkZW50aXR5W2ZpbmFsVVJMXSA9IGRhdGFPYmplY3QucmVwb3J0ZXI7XHJcbiAgICAgICAgICAgICAgbG9nLmluZm8oJ19nZXRIeXBlcnR5RnJvbURhdGFPYmplY3Q6ZGF0YU9iamVjdC5yZXBvcnRlcicsIGRhdGFPYmplY3QucmVwb3J0ZXIpO1xyXG4gICAgICAgICAgICAgIHJlc29sdmUoZGF0YU9iamVjdC5yZXBvcnRlcik7XHJcbiAgICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSovXHJcblxyXG4gIF9zZW5kUmVwb3J0ZXJTZXNzaW9uS2V5KG1lc3NhZ2UsIGNoYXRLZXlzKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIGxldCBzZXNzaW9uS2V5QnVuZGxlID0gX3RoaXMuZGF0YU9iamVjdFNlc3Npb25LZXlzW2NoYXRLZXlzLmRhdGFPYmplY3RVUkxdO1xyXG4gICAgICBsZXQgcmVwb3J0ZXJTZXNzaW9uS2V5TXNnO1xyXG4gICAgICBsZXQgdmFsdWVUb0VuY3J5cHQ7XHJcbiAgICAgIGxldCBzZXNzaW9uS2V5O1xyXG4gICAgICBsZXQgaXY7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHt9O1xyXG5cclxuICAgICAgLy9pZiB0aGVyZSBpcyBub3QgeWV0IGEgc2Vzc2lvbiBLZXksIGdlbmVyYXRlcyBhIG5ldyBvbmVcclxuICAgICAgaWYgKCFzZXNzaW9uS2V5QnVuZGxlKSB7XHJcbiAgICAgICAgc2Vzc2lvbktleSA9IF90aGlzLmNyeXB0by5nZW5lcmF0ZVJhbmRvbSgpO1xyXG4gICAgICAgIF90aGlzLmRhdGFPYmplY3RTZXNzaW9uS2V5c1tjaGF0S2V5cy5kYXRhT2JqZWN0VVJMXSA9IHtzZXNzaW9uS2V5OiBzZXNzaW9uS2V5LCBpc1RvRW5jcnlwdDogdHJ1ZX07XHJcblxyXG4gICAgICAgIGxldCBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZSA9IGNoYXRrZXlzVG9TdHJpbmdDbG9uZXIoX3RoaXMuZGF0YU9iamVjdFNlc3Npb25LZXlzKTtcclxuXHJcbiAgICAgICAgX3RoaXMuc3RvcmFnZU1hbmFnZXIuc2V0KCdkYXRhT2JqZWN0U2Vzc2lvbktleXMnLCAwLCBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgIHJlamVjdCgnT24gX3NlbmRSZXBvcnRlclNlc3Npb25LZXkgZnJvbSBtZXRob2Qgc3RvcmFnZU1hbmFnZXIuc2V0KGRhdGFPYmplY3RTZXNzaW9uS2V5cy4uLikgZXJyb3I6ICcgKyBlcnIpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZXNzaW9uS2V5ID0gc2Vzc2lvbktleUJ1bmRsZS5zZXNzaW9uS2V5O1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHZhbHVlVG9FbmNyeXB0ID0gZW5jb2RlKHt2YWx1ZTogZW5jb2RlKHNlc3Npb25LZXkpLCBkYXRhT2JqZWN0VVJMOiBjaGF0S2V5cy5kYXRhT2JqZWN0VVJMfSk7XHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJldHVybiByZWplY3QoJ09uIF9zZW5kUmVwb3J0ZXJTZXNzaW9uS2V5IGZyb20gbWV0aG9kIHN0b3JhZ2VNYW5hZ2VyLnNldCBlcnJvciB2YWx1ZVRvRW5jcnlwdDogJyArIGVycik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGl2ID0gX3RoaXMuY3J5cHRvLmdlbmVyYXRlSVYoKTtcclxuICAgICAgdmFsdWUuaXYgPSBlbmNvZGUoaXYpO1xyXG4gICAgICBfdGhpcy5jcnlwdG8uZW5jcnlwdEFFUyhjaGF0S2V5cy5rZXlzLmh5cGVydHlGcm9tU2Vzc2lvbktleSwgdmFsdWVUb0VuY3J5cHQsIGl2KS50aGVuKGVuY3J5cHRlZFZhbHVlID0+IHtcclxuXHJcbiAgICAgICAgcmVwb3J0ZXJTZXNzaW9uS2V5TXNnID0ge1xyXG4gICAgICAgICAgdHlwZTogJ2hhbmRzaGFrZScsXHJcbiAgICAgICAgICB0bzogbWVzc2FnZS5mcm9tLFxyXG4gICAgICAgICAgZnJvbTogbWVzc2FnZS50byxcclxuICAgICAgICAgIGJvZHk6IHtcclxuICAgICAgICAgICAgaGFuZHNoYWtlUGhhc2U6ICdyZXBvcnRlclNlc3Npb25LZXknLFxyXG4gICAgICAgICAgICB2YWx1ZTogZW5jb2RlKGVuY3J5cHRlZFZhbHVlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGxldCBmaWx0ZXJlZE1lc3NhZ2UgPSBfdGhpcy5fZmlsdGVyTWVzc2FnZVRvSGFzaChyZXBvcnRlclNlc3Npb25LZXlNc2csIHZhbHVlVG9FbmNyeXB0ICsgaXYsIGNoYXRLZXlzLmh5cGVydHlGcm9tLm1lc3NhZ2VJbmZvKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by5oYXNoSE1BQyhjaGF0S2V5cy5rZXlzLmh5cGVydHlGcm9tSGFzaEtleSwgZmlsdGVyZWRNZXNzYWdlKTtcclxuICAgICAgfSkudGhlbihoYXNoZWRNZXNzYWdlID0+IHtcclxuICAgICAgICBsZXQgdmFsdWVXaXRoSGFzaCA9IGVuY29kZSh7dmFsdWU6IHJlcG9ydGVyU2Vzc2lvbktleU1zZy5ib2R5LnZhbHVlLCBoYXNoOiBlbmNvZGUoaGFzaGVkTWVzc2FnZSksIGl2OiB2YWx1ZS5pdn0pO1xyXG5cclxuICAgICAgICByZXBvcnRlclNlc3Npb25LZXlNc2cuYm9keS52YWx1ZSA9IHZhbHVlV2l0aEhhc2g7XHJcblxyXG4gICAgICAgIHJlc29sdmUoe21lc3NhZ2U6IHJlcG9ydGVyU2Vzc2lvbktleU1zZywgY2hhdEtleXM6IGNoYXRLZXlzfSk7XHJcbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgcmVqZWN0KCdPbiBfc2VuZFJlcG9ydGVyU2Vzc2lvbktleSBmcm9tIGNoYWluZWQgcHJvbWlzZXMgZW5jcnlwdEFFUyBlcnJvcjogJyArIGVycik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEZ1bmN0aW9uIHRoYXQgcmVzb2x2ZSBhbmQgY3JlYXRlIHRoZSBkb21haW5VUkwgaW4gY2FzZSBpdCBpcyBwcm92aWRlZCBvbmUuIElmIG5vdCwgcmVzb2x2ZSB0aGUgZGVmYXVsdCBkb21haW5VUkxcclxuICAqIEBwYXJhbSB7U3RyaW5nfSAgICAgaWRwRG9tYWluICAgICBpZHBEb21haW4gKE9wdGlvbmFsKVxyXG4gICovXHJcbiAgX3Jlc29sdmVEb21haW4oaWRwRG9tYWluKSB7XHJcbiAgICBpZiAoIWlkcERvbWFpbikge1xyXG4gICAgICByZXR1cm4gJ2RvbWFpbi1pZHA6Ly9nb29nbGUuY29tJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnZG9tYWluLWlkcDovLycgKyBpZHBEb21haW47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfZG9IYW5kU2hha2VQaGFzZShtZXNzYWdlLCBjaGF0S2V5cykge1xyXG4gIC8vIGxvZygnX2RvSGFuZFNoYWtlUGhhc2U6ZGF0YU9iamVjdCcsIG1lc3NhZ2UpO1xyXG4gIC8vXHRsb2coJ19kb0hhbmRTaGFrZVBoYXNlOmNoYXRLZXlzJywgY2hhdEtleXMpO1xyXG5cclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG5cclxuICAgICAgbGV0IGhhbmRzaGFrZVR5cGUgPSBtZXNzYWdlLmJvZHkuaGFuZHNoYWtlUGhhc2U7XHJcbiAgICAgIGxldCBpdjtcclxuICAgICAgbGV0IGhhc2g7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHt9O1xyXG4gICAgICBsZXQgZmlsdGVyZWRNZXNzYWdlO1xyXG4gICAgICBsZXQgcHJpdmF0ZUtleUhvbGRlcjtcclxuXHJcbiAgICAgIGxvZy5pbmZvKCdoYW5kc2hha2UgcGhhc2U6ICcsIGhhbmRzaGFrZVR5cGUpO1xyXG5cclxuICAgICAgc3dpdGNoIChoYW5kc2hha2VUeXBlKSB7XHJcblxyXG4gICAgICAgIGNhc2UgJ3N0YXJ0SGFuZFNoYWtlJzoge1xyXG4gICAgICAgICAgY2hhdEtleXMua2V5cy5mcm9tUmFuZG9tID0gX3RoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tKCk7XHJcbiAgICAgICAgICBsZXQgc3RhcnRIYW5kU2hha2VNc2cgPSB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdoYW5kc2hha2UnLFxyXG4gICAgICAgICAgICB0bzogbWVzc2FnZS50byxcclxuICAgICAgICAgICAgZnJvbTogbWVzc2FnZS5mcm9tLFxyXG4gICAgICAgICAgICBib2R5OiB7XHJcbiAgICAgICAgICAgICAgaGFuZHNoYWtlUGhhc2U6ICdzZW5kZXJIZWxsbycsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGVuY29kZShjaGF0S2V5cy5rZXlzLmZyb21SYW5kb20pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBjaGF0S2V5cy5oYW5kc2hha2VIaXN0b3J5LnNlbmRlckhlbGxvID0gX3RoaXMuX2ZpbHRlck1lc3NhZ2VUb0hhc2goc3RhcnRIYW5kU2hha2VNc2csIHVuZGVmaW5lZCwgY2hhdEtleXMuaHlwZXJ0eUZyb20ubWVzc2FnZUluZm8pO1xyXG5cclxuICAgICAgICAgIC8vIGNoZWNrIGlmIHdhcyB0aGUgZW5jcnlwdCBmdW5jdGlvbiBvciB0aGUgbXV0dWFsIGF1dGhlbnRpY2F0aW9uIHRoYXQgcmVxdWVzdCB0aGVcclxuICAgICAgICAgIC8vIHN0YXJ0IG9mIHRoZSBoYW5kU2hha2VQaGFzZS5cclxuXHJcbiAgICAgICAgICBpZiAoY2hhdEtleXMuaW5pdGlhbE1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZSh7bWVzc2FnZTogc3RhcnRIYW5kU2hha2VNc2csIGNoYXRLZXlzOiBjaGF0S2V5c30pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgX3RoaXMuY2hhdEtleXNbbWVzc2FnZS5mcm9tICsgJzwtPicgKyBtZXNzYWdlLnRvXSA9IGNoYXRLZXlzO1xyXG4gICAgICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShzdGFydEhhbmRTaGFrZU1zZyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdzZW5kZXJIZWxsbyc6IHtcclxuXHJcbiAgICAgICAgICBsb2cubG9nKCdzZW5kZXJIZWxsbycpO1xyXG4gICAgICAgICAgY2hhdEtleXMuaGFuZHNoYWtlSGlzdG9yeS5zZW5kZXJIZWxsbyA9IF90aGlzLl9maWx0ZXJNZXNzYWdlVG9IYXNoKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgY2hhdEtleXMua2V5cy5mcm9tUmFuZG9tID0gZGVjb2RlVG9VaW50OEFycmF5KG1lc3NhZ2UuYm9keS52YWx1ZSk7XHJcbiAgICAgICAgICBjaGF0S2V5cy5rZXlzLnRvUmFuZG9tID0gX3RoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tKCk7XHJcblxyXG4gICAgICAgICAgbGV0IHNlbmRlckhlbGxvTXNnID0ge1xyXG4gICAgICAgICAgICB0eXBlOiAnaGFuZHNoYWtlJyxcclxuICAgICAgICAgICAgdG86IG1lc3NhZ2UuZnJvbSxcclxuICAgICAgICAgICAgZnJvbTogbWVzc2FnZS50byxcclxuICAgICAgICAgICAgYm9keToge1xyXG4gICAgICAgICAgICAgIGhhbmRzaGFrZVBoYXNlOiAncmVjZWl2ZXJIZWxsbycsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGVuY29kZShjaGF0S2V5cy5rZXlzLnRvUmFuZG9tKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgY2hhdEtleXMuaGFuZHNoYWtlSGlzdG9yeS5yZWNlaXZlckhlbGxvID0gX3RoaXMuX2ZpbHRlck1lc3NhZ2VUb0hhc2goc2VuZGVySGVsbG9Nc2csIHVuZGVmaW5lZCwgY2hhdEtleXMuaHlwZXJ0eUZyb20ubWVzc2FnZUluZm8pO1xyXG4gICAgICAgICAgcmVzb2x2ZSh7bWVzc2FnZTogc2VuZGVySGVsbG9Nc2csIGNoYXRLZXlzOiBjaGF0S2V5c30pO1xyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdyZWNlaXZlckhlbGxvJzoge1xyXG5cclxuICAgICAgICAgIGxvZy5sb2coJ3JlY2VpdmVySGVsbG8nKTtcclxuICAgICAgICAgIF90aGlzLmdldE15UHJpdmF0ZUtleSgpLnRoZW4ocHJpdmF0ZUtleSA9PntcclxuICAgICAgICAgICAgcHJpdmF0ZUtleUhvbGRlciA9IHByaXZhdGVLZXk7XHJcblxyXG4gICAgICAgICAgICBjaGF0S2V5cy5oYW5kc2hha2VIaXN0b3J5LnJlY2VpdmVySGVsbG8gPSBfdGhpcy5fZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5faWRtLnZhbGlkYXRlQXNzZXJ0aW9uKG1lc3NhZ2UuYm9keS5pZGVudGl0eS5hc3NlcnRpb24sIHVuZGVmaW5lZCwgbWVzc2FnZS5ib2R5LmlkZW50aXR5LmlkcC5kb21haW4pO1xyXG4gICAgICAgICAgfSkudGhlbigodmFsdWUpID0+IHtcclxuXHJcbiAgICAgICAgICAgIC8vVE9ETyByZW1vdmUgbGF0ZXIgdGhpcyB2ZXJpZmljYXRpb24gYXMgc29vbiBhcyBhbGwgdGhlIElkUCBwcm94eSBhcmUgdXBkYXRlZCBpbiB0aGUgZXhhbXBsZVxyXG4gICAgICAgICAgICBsZXQgZW5jb2RlZHB1YmxpY0tleSA9ICh0eXBlb2YgdmFsdWUuY29udGVudHMgPT09ICdzdHJpbmcnKSA/IHZhbHVlLmNvbnRlbnRzIDogdmFsdWUuY29udGVudHMubm9uY2U7XHJcblxyXG4gICAgICAgICAgICBsZXQgcmVjZWl2ZXJQdWJsaWNLZXkgPSBwYXJzZVRvVWludDhBcnJheShlbmNvZGVkcHVibGljS2V5KTtcclxuICAgICAgICAgICAgbGV0IHByZW1hc3RlclNlY3JldCA9IF90aGlzLmNyeXB0by5nZW5lcmF0ZVBNUygpO1xyXG4gICAgICAgICAgICBsZXQgdG9SYW5kb20gPSBtZXNzYWdlLmJvZHkudmFsdWU7XHJcbiAgICAgICAgICAgIGNoYXRLZXlzLmh5cGVydHlUby5hc3NlcnRpb24gPSBtZXNzYWdlLmJvZHkuaWRlbnRpdHkuYXNzZXJ0aW9uO1xyXG4gICAgICAgICAgICBjaGF0S2V5cy5oeXBlcnR5VG8ucHVibGljS2V5ID0gcmVjZWl2ZXJQdWJsaWNLZXk7XHJcbiAgICAgICAgICAgIGNoYXRLZXlzLmh5cGVydHlUby51c2VySUQgICAgPSBtZXNzYWdlLmJvZHkuaWRlbnRpdHkudXNlclByb2ZpbGUudXNlclVSTDtcclxuICAgICAgICAgICAgY2hhdEtleXMua2V5cy50b1JhbmRvbSAgPSBkZWNvZGVUb1VpbnQ4QXJyYXkodG9SYW5kb20pO1xyXG4gICAgICAgICAgICBjaGF0S2V5cy5rZXlzLnByZW1hc3RlcktleSA9IHByZW1hc3RlclNlY3JldDtcclxuXHJcbiAgICAgICAgICAgIGxldCBjb25jYXRLZXkgPSBfdGhpcy5jcnlwdG8uY29uY2F0UE1Td2l0aFJhbmRvbXMocHJlbWFzdGVyU2VjcmV0LCBjaGF0S2V5cy5rZXlzLnRvUmFuZG9tLCBjaGF0S2V5cy5rZXlzLmZyb21SYW5kb20pO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by5nZW5lcmF0ZU1hc3RlclNlY3JldChjb25jYXRLZXksICdtZXNzYWdlSGlzdG9yaWMnICsgY2hhdEtleXMua2V5cy50b1JhbmRvbSArIGNoYXRLZXlzLmtleXMuZnJvbVJhbmRvbSk7XHJcblxyXG4gICAgICAgICAgICAvL2dlbmVyYXRlIHRoZSBtYXN0ZXIga2V5XHJcbiAgICAgICAgICB9KS50aGVuKChtYXN0ZXJLZXkpID0+IHtcclxuICAgICAgICAgICAgY2hhdEtleXMua2V5cy5tYXN0ZXJLZXkgPSBtYXN0ZXJLZXk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLmdlbmVyYXRlS2V5cyhtYXN0ZXJLZXksICdrZXkgZXhwYW5zaW9uJyArIGNoYXRLZXlzLmtleXMudG9SYW5kb20gKyBjaGF0S2V5cy5rZXlzLmZyb21SYW5kb20pO1xyXG5cclxuICAgICAgICAgICAgLy9nZW5lcmF0ZSB0aGUgc3ltbWV0cmljIGFuZCBoYXNoIGtleXNcclxuICAgICAgICAgIH0pLnRoZW4oKGtleXMpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGNoYXRLZXlzLmtleXMuaHlwZXJ0eVRvU2Vzc2lvbktleSA9IG5ldyBVaW50OEFycmF5KGtleXNbMF0pO1xyXG4gICAgICAgICAgICBjaGF0S2V5cy5rZXlzLmh5cGVydHlGcm9tU2Vzc2lvbktleSA9IG5ldyBVaW50OEFycmF5KGtleXNbMV0pO1xyXG4gICAgICAgICAgICBjaGF0S2V5cy5rZXlzLmh5cGVydHlUb0hhc2hLZXkgPSBuZXcgVWludDhBcnJheShrZXlzWzJdKTtcclxuICAgICAgICAgICAgY2hhdEtleXMua2V5cy5oeXBlcnR5RnJvbUhhc2hLZXkgPSBuZXcgVWludDhBcnJheShrZXlzWzNdKTtcclxuICAgICAgICAgICAgaXYgPSBfdGhpcy5jcnlwdG8uZ2VuZXJhdGVJVigpO1xyXG4gICAgICAgICAgICB2YWx1ZS5pdiA9IGVuY29kZShpdik7XHJcblxyXG4gICAgICAgICAgICBsZXQgbWVzc2FnZVN0cnVjdHVyZSA9IHtcclxuICAgICAgICAgICAgICB0eXBlOiAnaGFuZHNoYWtlJyxcclxuICAgICAgICAgICAgICB0bzogbWVzc2FnZS5mcm9tLFxyXG4gICAgICAgICAgICAgIGZyb206IG1lc3NhZ2UudG8sXHJcbiAgICAgICAgICAgICAgYm9keToge1xyXG4gICAgICAgICAgICAgICAgaGFuZHNoYWtlUGhhc2U6ICdzZW5kZXJDZXJ0aWZpY2F0ZSdcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAvLyBoYXNoIHRoZSB2YWx1ZSBhbmQgdGhlIGl2XHJcbiAgICAgICAgICAgIGZpbHRlcmVkTWVzc2FnZSA9IF90aGlzLl9maWx0ZXJNZXNzYWdlVG9IYXNoKG1lc3NhZ2VTdHJ1Y3R1cmUsICdvaycgKyBpdiwgY2hhdEtleXMuaHlwZXJ0eUZyb20ubWVzc2FnZUluZm8pO1xyXG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLmhhc2hITUFDKGNoYXRLZXlzLmtleXMuaHlwZXJ0eUZyb21IYXNoS2V5LCBmaWx0ZXJlZE1lc3NhZ2UpO1xyXG4gICAgICAgICAgfSkudGhlbigoaGFzaCkgPT4ge1xyXG4gICAgICAgICAgICB2YWx1ZS5oYXNoID0gZW5jb2RlKGhhc2gpO1xyXG5cclxuICAgICAgICAgICAgLy9lbmNyeXB0IHRoZSBkYXRhXHJcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5jcnlwdG8uZW5jcnlwdEFFUyhjaGF0S2V5cy5rZXlzLmh5cGVydHlGcm9tU2Vzc2lvbktleSwgJ29rJywgaXYpO1xyXG4gICAgICAgICAgfSkudGhlbigoZW5jcnlwdGVkRGF0YSkgPT4ge1xyXG4gICAgICAgICAgICB2YWx1ZS5zeW1ldHJpY0VuY3J5cHRpb24gPSBlbmNvZGUoZW5jcnlwdGVkRGF0YSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLmVuY3J5cHRSU0EoY2hhdEtleXMuaHlwZXJ0eVRvLnB1YmxpY0tleSwgY2hhdEtleXMua2V5cy5wcmVtYXN0ZXJLZXkpO1xyXG5cclxuICAgICAgICAgIH0pLnRoZW4oKGVuY3J5cHRlZFZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHZhbHVlLmFzc3ltZXRyaWNFbmNyeXB0aW9uID0gZW5jb2RlKGVuY3J5cHRlZFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlU3RydWN0dXJlID0ge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdoYW5kc2hha2UnLFxyXG4gICAgICAgICAgICAgIHRvOiBtZXNzYWdlLmZyb20sXHJcbiAgICAgICAgICAgICAgZnJvbTogbWVzc2FnZS50byxcclxuICAgICAgICAgICAgICBib2R5OiB7XHJcbiAgICAgICAgICAgICAgICBoYW5kc2hha2VQaGFzZTogJ3NlbmRlckNlcnRpZmljYXRlJ1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlVG9IYXNoID0gX3RoaXMuX2ZpbHRlck1lc3NhZ2VUb0hhc2gobWVzc2FnZVN0cnVjdHVyZSwgY2hhdEtleXMua2V5cy5wcmVtYXN0ZXJLZXksIGNoYXRLZXlzLmh5cGVydHlGcm9tLm1lc3NhZ2VJbmZvKTtcclxuICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by5zaWduUlNBKHByaXZhdGVLZXlIb2xkZXIsIGVuY29kZShjaGF0S2V5cy5oYW5kc2hha2VIaXN0b3J5KSArIGVuY29kZShtZXNzYWdlVG9IYXNoKSk7XHJcbiAgICAgICAgICB9KS50aGVuKHNpZ25hdHVyZSA9PiB7XHJcblxyXG4gICAgICAgICAgICB2YWx1ZS5zaWduYXR1cmUgPSBlbmNvZGUoc2lnbmF0dXJlKTtcclxuXHJcbiAgICAgICAgICAgIGxldCByZWNlaXZlckhlbGxvTXNnID0ge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdoYW5kc2hha2UnLFxyXG4gICAgICAgICAgICAgIHRvOiBtZXNzYWdlLmZyb20sXHJcbiAgICAgICAgICAgICAgZnJvbTogbWVzc2FnZS50byxcclxuICAgICAgICAgICAgICBib2R5OiB7XHJcbiAgICAgICAgICAgICAgICBoYW5kc2hha2VQaGFzZTogJ3NlbmRlckNlcnRpZmljYXRlJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBlbmNvZGUodmFsdWUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjaGF0S2V5cy5oYW5kc2hha2VIaXN0b3J5LnNlbmRlckNlcnRpZmljYXRlID0gX3RoaXMuX2ZpbHRlck1lc3NhZ2VUb0hhc2gocmVjZWl2ZXJIZWxsb01zZywgJ29rJyArIGl2LCBjaGF0S2V5cy5oeXBlcnR5RnJvbS5tZXNzYWdlSW5mbyk7XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKHttZXNzYWdlOiByZWNlaXZlckhlbGxvTXNnLCBjaGF0S2V5czogY2hhdEtleXN9KTtcclxuXHJcbiAgICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnc2VuZGVyQ2VydGlmaWNhdGUnOiB7XHJcblxyXG4gICAgICAgICAgbG9nLmxvZygnc2VuZGVyQ2VydGlmaWNhdGUnKTtcclxuXHJcbiAgICAgICAgICBsZXQgcmVjZWl2ZWRWYWx1ZSA9IGRlY29kZShtZXNzYWdlLmJvZHkudmFsdWUpO1xyXG5cclxuICAgICAgICAgIF90aGlzLmdldE15UHJpdmF0ZUtleSgpLnRoZW4ocHJpdmF0ZUtleSA9PntcclxuICAgICAgICAgICAgcHJpdmF0ZUtleUhvbGRlciA9IHByaXZhdGVLZXk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuX2lkbS52YWxpZGF0ZUFzc2VydGlvbihtZXNzYWdlLmJvZHkuaWRlbnRpdHkuYXNzZXJ0aW9uLCB1bmRlZmluZWQsIG1lc3NhZ2UuYm9keS5pZGVudGl0eS5pZHAuZG9tYWluKTtcclxuICAgICAgICAgIH0pLnRoZW4oKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBlbmNyeXB0ZWRQTVMgPSBkZWNvZGVUb1VpbnQ4QXJyYXkocmVjZWl2ZWRWYWx1ZS5hc3N5bWV0cmljRW5jcnlwdGlvbik7XHJcblxyXG4gICAgICAgICAgICAvL1RPRE8gcmVtb3ZlIGxhdGVyIHRoaXMgdmVyaWZpY2F0aW9uIGFzIHNvb24gYXMgYWxsIHRoZSBJZFAgcHJveHkgYXJlIHVwZGF0ZWQgaW4gdGhlIGV4YW1wbGVcclxuICAgICAgICAgICAgbGV0IGVuY29kZWRwdWJsaWNLZXkgPSAodHlwZW9mIHZhbHVlLmNvbnRlbnRzID09PSAnc3RyaW5nJykgPyB2YWx1ZS5jb250ZW50cyA6IHZhbHVlLmNvbnRlbnRzLm5vbmNlO1xyXG5cclxuICAgICAgICAgICAgbGV0IHNlbmRlclB1YmxpY0tleSA9IHBhcnNlVG9VaW50OEFycmF5KGVuY29kZWRwdWJsaWNLZXkpO1xyXG4gICAgICAgICAgICBjaGF0S2V5cy5oeXBlcnR5VG8uYXNzZXJ0aW9uID0gbWVzc2FnZS5ib2R5LmlkZW50aXR5LmFzc2VydGlvbjtcclxuICAgICAgICAgICAgY2hhdEtleXMuaHlwZXJ0eVRvLnB1YmxpY0tleSA9IHNlbmRlclB1YmxpY0tleTtcclxuICAgICAgICAgICAgY2hhdEtleXMuaHlwZXJ0eVRvLnVzZXJJRCAgICA9IG1lc3NhZ2UuYm9keS5pZGVudGl0eS51c2VyUHJvZmlsZS51c2VyVVJMO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by5kZWNyeXB0UlNBKHByaXZhdGVLZXlIb2xkZXIsIGVuY3J5cHRlZFBNUyk7XHJcblxyXG4gICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGxvZy5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgICByZWplY3QoJ0Vycm9yIGR1cmluZyBhdXRoZW50aWNhdGlvbiBvZiBpZGVudGl0eTogJywgZXJyb3IubWVzc2FnZSk7XHJcblxyXG4gICAgICAgICAgICAvL29idGFpbiB0aGUgUHJlbWFzdGVyS2V5IHVzaW5nIHRoZSBwcml2YXRlIGtleVxyXG4gICAgICAgICAgfSkudGhlbihwbXMgPT4ge1xyXG5cclxuICAgICAgICAgICAgY2hhdEtleXMua2V5cy5wcmVtYXN0ZXJLZXkgPSBuZXcgVWludDhBcnJheShwbXMpO1xyXG5cclxuICAgICAgICAgICAgbGV0IHNpZ25hdHVyZSA9IGRlY29kZVRvVWludDhBcnJheShyZWNlaXZlZFZhbHVlLnNpZ25hdHVyZSk7XHJcblxyXG4gICAgICAgICAgICBsZXQgcmVjZWl2ZWRtc2dUb0hhc2ggPSBfdGhpcy5fZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlLCBjaGF0S2V5cy5rZXlzLnByZW1hc3RlcktleSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLnZlcmlmeVJTQShjaGF0S2V5cy5oeXBlcnR5VG8ucHVibGljS2V5LCBlbmNvZGUoY2hhdEtleXMuaGFuZHNoYWtlSGlzdG9yeSkgKyBlbmNvZGUocmVjZWl2ZWRtc2dUb0hhc2gpLCBzaWduYXR1cmUpO1xyXG5cclxuICAgICAgICAgICAgLy8gdmFsaWRhdGVzIHRoZSBzaWduYXR1cmUgcmVjZWl2ZWRcclxuICAgICAgICAgIH0pLnRoZW4oc2lnblZhbGlkYXRpb25SZXN1bHQgPT4ge1xyXG5cclxuICAgICAgICAgICAgLy9sb2cubG9nKCdTZW5kZXJDZXJ0aWZpY2F0ZSAtIHNpZ25hdHVyZSB2YWxpZGF0aW9uIHJlc3VsdCAnLCBzaWduVmFsaWRhdGlvblJlc3VsdCk7XHJcbiAgICAgICAgICAgIGxldCBjb25jYXRLZXkgPSBfdGhpcy5jcnlwdG8uY29uY2F0UE1Td2l0aFJhbmRvbXMoY2hhdEtleXMua2V5cy5wcmVtYXN0ZXJLZXksIGNoYXRLZXlzLmtleXMudG9SYW5kb20sIGNoYXRLZXlzLmtleXMuZnJvbVJhbmRvbSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLmdlbmVyYXRlTWFzdGVyU2VjcmV0KGNvbmNhdEtleSwgJ21lc3NhZ2VIaXN0b3JpYycgKyBjaGF0S2V5cy5rZXlzLnRvUmFuZG9tICsgY2hhdEtleXMua2V5cy5mcm9tUmFuZG9tKTtcclxuXHJcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlcyB0aGUgbWFzdGVyIGtleXMgZnJvbSB0aGUgUHJlbWFzdGVyIGtleSBhbmQgdGhlIHJhbmRvbXNcclxuICAgICAgICAgIH0pLnRoZW4obWFzdGVyS2V5ID0+IHtcclxuICAgICAgICAgICAgY2hhdEtleXMua2V5cy5tYXN0ZXJLZXkgPSBtYXN0ZXJLZXk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLmdlbmVyYXRlS2V5cyhtYXN0ZXJLZXksICdrZXkgZXhwYW5zaW9uJyArIGNoYXRLZXlzLmtleXMudG9SYW5kb20gKyBjaGF0S2V5cy5rZXlzLmZyb21SYW5kb20pO1xyXG5cclxuICAgICAgICAgICAgLy8gZ2VuZXJhdGVzIHRoZSBzeW1tZXRyaWMga2V5cyB0byBiZSB1c2VkIGluIHRoZSBzeW1tZXRyaWMgZW5jcnlwdGlvblxyXG4gICAgICAgICAgfSkudGhlbihrZXlzID0+IHtcclxuICAgICAgICAgICAgY2hhdEtleXMua2V5cy5oeXBlcnR5RnJvbVNlc3Npb25LZXkgPSBuZXcgVWludDhBcnJheShrZXlzWzBdKTtcclxuICAgICAgICAgICAgY2hhdEtleXMua2V5cy5oeXBlcnR5VG9TZXNzaW9uS2V5ID0gbmV3IFVpbnQ4QXJyYXkoa2V5c1sxXSk7XHJcbiAgICAgICAgICAgIGNoYXRLZXlzLmtleXMuaHlwZXJ0eUZyb21IYXNoS2V5ID0gbmV3IFVpbnQ4QXJyYXkoa2V5c1syXSk7XHJcbiAgICAgICAgICAgIGNoYXRLZXlzLmtleXMuaHlwZXJ0eVRvSGFzaEtleSA9IG5ldyBVaW50OEFycmF5KGtleXNbM10pO1xyXG4gICAgICAgICAgICBpdiA9IGRlY29kZVRvVWludDhBcnJheShyZWNlaXZlZFZhbHVlLml2KTtcclxuICAgICAgICAgICAgbGV0IGRhdGEgPSBkZWNvZGVUb1VpbnQ4QXJyYXkocmVjZWl2ZWRWYWx1ZS5zeW1ldHJpY0VuY3J5cHRpb24pO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by5kZWNyeXB0QUVTKGNoYXRLZXlzLmtleXMuaHlwZXJ0eVRvU2Vzc2lvbktleSwgZGF0YSwgaXYpO1xyXG5cclxuICAgICAgICAgIH0pLnRoZW4oZGVjcnlwdGVkRGF0YSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGxvZy5sb2coJ2RlY3J5cHRlZERhdGEnLCBkZWNyeXB0ZWREYXRhKTtcclxuXHJcbiAgICAgICAgICAgIGNoYXRLZXlzLmhhbmRzaGFrZUhpc3Rvcnkuc2VuZGVyQ2VydGlmaWNhdGUgPSBfdGhpcy5fZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlLCBkZWNyeXB0ZWREYXRhICsgaXYpO1xyXG5cclxuICAgICAgICAgICAgbGV0IGhhc2hSZWNlaXZlZCA9IGRlY29kZVRvVWludDhBcnJheShyZWNlaXZlZFZhbHVlLmhhc2gpO1xyXG5cclxuICAgICAgICAgICAgZmlsdGVyZWRNZXNzYWdlID0gX3RoaXMuX2ZpbHRlck1lc3NhZ2VUb0hhc2gobWVzc2FnZSwgZGVjcnlwdGVkRGF0YSArIGl2KTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5jcnlwdG8udmVyaWZ5SE1BQyhjaGF0S2V5cy5rZXlzLmh5cGVydHlUb0hhc2hLZXksIGZpbHRlcmVkTWVzc2FnZSwgaGFzaFJlY2VpdmVkKTtcclxuXHJcbiAgICAgICAgICB9KS50aGVuKHZlcmlmaWVkSGFzaCAgPT4ge1xyXG5cclxuICAgICAgICAgICAgLy8gbG9nLmxvZygncmVzdWx0IG9mIGhhc2ggdmVyaWZpY2F0aW9uICcsIHZlcmlmaWVkSGFzaCk7XHJcbiAgICAgICAgICAgIGxldCByZWNlaXZlckZpbmlzaGVkTWVzc2FnZSA9IHtcclxuICAgICAgICAgICAgICB0eXBlOiAnaGFuZHNoYWtlJyxcclxuICAgICAgICAgICAgICB0bzogbWVzc2FnZS5mcm9tLFxyXG4gICAgICAgICAgICAgIGZyb206IG1lc3NhZ2UudG8sXHJcbiAgICAgICAgICAgICAgYm9keToge1xyXG4gICAgICAgICAgICAgICAgaGFuZHNoYWtlUGhhc2U6ICdyZWNlaXZlckZpbmlzaGVkTWVzc2FnZSdcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGl2ID0gX3RoaXMuY3J5cHRvLmdlbmVyYXRlSVYoKTtcclxuICAgICAgICAgICAgdmFsdWUuaXYgPSBlbmNvZGUoaXYpO1xyXG5cclxuICAgICAgICAgICAgZmlsdGVyZWRNZXNzYWdlID0gX3RoaXMuX2ZpbHRlck1lc3NhZ2VUb0hhc2gocmVjZWl2ZXJGaW5pc2hlZE1lc3NhZ2UsICdvayEnICsgaXYsIGNoYXRLZXlzLmh5cGVydHlGcm9tLm1lc3NhZ2VJbmZvKTtcclxuXHJcbiAgICAgICAgICAgIC8vbG9nLmxvZygnVElBR086IGRvSGFuZFNoYWtlUGhhc2UgdmVyaWZpZWRIYXNoJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5jcnlwdG8uaGFzaEhNQUMoY2hhdEtleXMua2V5cy5oeXBlcnR5RnJvbUhhc2hLZXksIGZpbHRlcmVkTWVzc2FnZSk7XHJcbiAgICAgICAgICB9KS50aGVuKGhhc2ggPT4ge1xyXG5cclxuICAgICAgICAgICAgdmFsdWUuaGFzaCA9IGVuY29kZShoYXNoKTtcclxuICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by5lbmNyeXB0QUVTKGNoYXRLZXlzLmtleXMuaHlwZXJ0eUZyb21TZXNzaW9uS2V5LCAnb2shJywgaXYpO1xyXG5cclxuICAgICAgICAgIH0pLnRoZW4oZW5jcnlwdGVkVmFsdWUgPT4ge1xyXG4gICAgICAgICAgICB2YWx1ZS52YWx1ZSA9IGVuY29kZShlbmNyeXB0ZWRWYWx1ZSk7XHJcbiAgICAgICAgICAgIGxldCByZWNlaXZlckZpbmlzaGVkTWVzc2FnZSA9IHtcclxuICAgICAgICAgICAgICB0eXBlOiAnaGFuZHNoYWtlJyxcclxuICAgICAgICAgICAgICB0bzogbWVzc2FnZS5mcm9tLFxyXG4gICAgICAgICAgICAgIGZyb206IG1lc3NhZ2UudG8sXHJcbiAgICAgICAgICAgICAgYm9keToge1xyXG4gICAgICAgICAgICAgICAgaGFuZHNoYWtlUGhhc2U6ICdyZWNlaXZlckZpbmlzaGVkTWVzc2FnZScsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogZW5jb2RlKHZhbHVlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGNoYXRLZXlzLmhhbmRzaGFrZUhpc3RvcnkucmVjZWl2ZXJGaW5pc2hlZE1lc3NhZ2UgPSBfdGhpcy5fZmlsdGVyTWVzc2FnZVRvSGFzaChyZWNlaXZlckZpbmlzaGVkTWVzc2FnZSwgJ29rIScgKyBpdiwgY2hhdEtleXMuaHlwZXJ0eUZyb20ubWVzc2FnZUluZm8pO1xyXG4gICAgICAgICAgICBjaGF0S2V5cy5hdXRoZW50aWNhdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmVzb2x2ZSh7bWVzc2FnZTogcmVjZWl2ZXJGaW5pc2hlZE1lc3NhZ2UsIGNoYXRLZXlzOiBjaGF0S2V5c30pO1xyXG4gICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgcmVqZWN0KCdPbiBfZG9IYW5kU2hha2VQaGFzZSBmcm9tIHNlbmRlckNlcnRpZmljYXRlIGVycm9yOiAnICsgZXJyKTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdyZWNlaXZlckZpbmlzaGVkTWVzc2FnZSc6IHtcclxuXHJcbiAgICAgICAgICBjaGF0S2V5cy5hdXRoZW50aWNhdGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB2YWx1ZSA9IGRlY29kZShtZXNzYWdlLmJvZHkudmFsdWUpO1xyXG5cclxuICAgICAgICAgIGl2ID0gZGVjb2RlVG9VaW50OEFycmF5KHZhbHVlLml2KTtcclxuICAgICAgICAgIGxldCBkYXRhID0gZGVjb2RlVG9VaW50OEFycmF5KHZhbHVlLnZhbHVlKTtcclxuICAgICAgICAgIGhhc2ggPSBkZWNvZGVUb1VpbnQ4QXJyYXkodmFsdWUuaGFzaCk7XHJcblxyXG4gICAgICAgICAgX3RoaXMuY3J5cHRvLmRlY3J5cHRBRVMoY2hhdEtleXMua2V5cy5oeXBlcnR5VG9TZXNzaW9uS2V5LCBkYXRhLCBpdikudGhlbihkZWNyeXB0ZWREYXRhID0+IHtcclxuICAgICAgICAgICAgLy8gbG9nLmxvZygnZGVjcnlwdGVkRGF0YScsIGRlY3J5cHRlZERhdGEpO1xyXG4gICAgICAgICAgICBjaGF0S2V5cy5oYW5kc2hha2VIaXN0b3J5LnJlY2VpdmVyRmluaXNoZWRNZXNzYWdlID0gX3RoaXMuX2ZpbHRlck1lc3NhZ2VUb0hhc2gobWVzc2FnZSwgZGVjcnlwdGVkRGF0YSArIGl2KTtcclxuXHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJlZE1lc3NhZ2UgPSBfdGhpcy5fZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlLCBkZWNyeXB0ZWREYXRhICsgaXYpO1xyXG4gICAgICAgICAgICBfdGhpcy5jcnlwdG8udmVyaWZ5SE1BQyhjaGF0S2V5cy5rZXlzLmh5cGVydHlUb0hhc2hLZXksIGZpbHRlcmVkTWVzc2FnZSwgaGFzaCkudGhlbihyZXN1bHQgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAvLyBjaGVjayBpZiB0aGVyZSB3YXMgYW4gaW5pdGlhbCBtZXNzYWdlIHRoYXQgd2FzIGJsb2NrZWQgYW5kIHNlbmQgaXRcclxuICAgICAgICAgICAgICBpZiAoY2hhdEtleXMuaW5pdGlhbE1lc3NhZ2UpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgaW5pdGlhbE1lc3NhZ2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdjcmVhdGUnLFxyXG4gICAgICAgICAgICAgICAgICB0bzogbWVzc2FnZS5mcm9tLFxyXG4gICAgICAgICAgICAgICAgICBmcm9tOiBtZXNzYWdlLnRvLFxyXG4gICAgICAgICAgICAgICAgICBib2R5OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNoYXRLZXlzLmluaXRpYWxNZXNzYWdlLmJvZHkudmFsdWVcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHttZXNzYWdlOiBpbml0aWFsTWVzc2FnZSwgY2hhdEtleXM6IGNoYXRLZXlzfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy9zZW5kcyB0aGUgc2Vzc2lvbktleSB0byB0aGUgc3Vic2NyaWJlciBoeXBlcnR5XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLl9zZW5kUmVwb3J0ZXJTZXNzaW9uS2V5KG1lc3NhZ2UsIGNoYXRLZXlzKS50aGVuKHZhbHVlID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmVqZWN0KCdPbiBfZG9IYW5kU2hha2VQaGFzZSBmcm9tIHJlY2VpdmVyRmluaXNoZWRNZXNzYWdlIGVycm9yOiAnICsgZXJyKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhc2UgJ3JlcG9ydGVyU2Vzc2lvbktleSc6IHtcclxuXHJcbiAgICAgICAgICBsb2cubG9nKCdyZXBvcnRlclNlc3Npb25LZXknKTtcclxuXHJcbiAgICAgICAgICBsZXQgdmFsdWVJVmFuZEhhc2ggPSBkZWNvZGUobWVzc2FnZS5ib2R5LnZhbHVlKTtcclxuICAgICAgICAgIGhhc2ggPSBkZWNvZGVUb1VpbnQ4QXJyYXkodmFsdWVJVmFuZEhhc2guaGFzaCk7XHJcbiAgICAgICAgICBpdiA9IGRlY29kZVRvVWludDhBcnJheSh2YWx1ZUlWYW5kSGFzaC5pdik7XHJcbiAgICAgICAgICBsZXQgZW5jcnlwdGVkVmFsdWUgPSBkZWNvZGVUb1VpbnQ4QXJyYXkodmFsdWVJVmFuZEhhc2gudmFsdWUpO1xyXG4gICAgICAgICAgbGV0IHBhcnNlZFZhbHVlO1xyXG4gICAgICAgICAgbGV0IHNlc3Npb25LZXk7XHJcbiAgICAgICAgICBsZXQgZGF0YU9iamVjdFVSTDtcclxuICAgICAgICAgIGxldCByZWNlaXZlckFja25vd2xlZGdlTXNnO1xyXG5cclxuICAgICAgICAgIC8vbG9nLmxvZygnW0lkZW50aXR5TW9kdWxlIHJlcG9ydGVyU2Vzc2lvbktleV0gLSBkZWNyeXB0QUVTOiAnLCBjaGF0S2V5cy5rZXlzLmh5cGVydHlUb1Nlc3Npb25LZXksIGVuY3J5cHRlZFZhbHVlLCBpdik7XHJcblxyXG4gICAgICAgICAgX3RoaXMuY3J5cHRvLmRlY3J5cHRBRVMoY2hhdEtleXMua2V5cy5oeXBlcnR5VG9TZXNzaW9uS2V5LCBlbmNyeXB0ZWRWYWx1ZSwgaXYpLnRoZW4oZGVjcnlwdGVkVmFsdWUgPT4ge1xyXG5cclxuICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBkZWNvZGUoZGVjcnlwdGVkVmFsdWUpO1xyXG4gICAgICAgICAgICBzZXNzaW9uS2V5ID0gZGVjb2RlVG9VaW50OEFycmF5KHBhcnNlZFZhbHVlLnZhbHVlKTtcclxuICAgICAgICAgICAgZGF0YU9iamVjdFVSTCA9IHBhcnNlZFZhbHVlLmRhdGFPYmplY3RVUkw7XHJcblxyXG4gICAgICAgICAgICBsZXQgbWVzc2FnZVRvSGFzaCA9IF90aGlzLl9maWx0ZXJNZXNzYWdlVG9IYXNoKG1lc3NhZ2UsIGRlY3J5cHRlZFZhbHVlICsgaXYpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by52ZXJpZnlITUFDKGNoYXRLZXlzLmtleXMuaHlwZXJ0eVRvSGFzaEtleSwgbWVzc2FnZVRvSGFzaCwgaGFzaCk7XHJcblxyXG4gICAgICAgICAgfSkudGhlbihoYXNoUmVzdWx0ID0+IHtcclxuXHJcblxyXG4gICAgICAgICAgICAvLyBsb2cubG9nKCdoYXNoIHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgJywgaGFzaFJlc3VsdCk7XHJcblxyXG4gICAgICAgICAgICBfdGhpcy5kYXRhT2JqZWN0U2Vzc2lvbktleXNbZGF0YU9iamVjdFVSTF0gPSAge3Nlc3Npb25LZXk6IHNlc3Npb25LZXksIGlzVG9FbmNyeXB0OiB0cnVlfTtcclxuICAgICAgICAgICAgbGV0IGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lID0gY2hhdGtleXNUb1N0cmluZ0Nsb25lcihfdGhpcy5kYXRhT2JqZWN0U2Vzc2lvbktleXMpO1xyXG4gICAgICAgICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5zZXQoJ2RhdGFPYmplY3RTZXNzaW9uS2V5cycsIDAsIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lKS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIHJlamVjdCgnT24gX3NlbmRSZXBvcnRlclNlc3Npb25LZXkgZnJvbSBtZXRob2QgcmVwb3J0ZXJTZXNzaW9uS2V5IGVycm9yOiAnICsgZXJyKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBpdiA9IF90aGlzLmNyeXB0by5nZW5lcmF0ZUlWKCk7XHJcbiAgICAgICAgICAgIHZhbHVlLml2ID0gZW5jb2RlKGl2KTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5jcnlwdG8uZW5jcnlwdEFFUyhjaGF0S2V5cy5rZXlzLmh5cGVydHlGcm9tU2Vzc2lvbktleSwgJ29rISEnLCBpdik7XHJcbiAgICAgICAgICB9KS50aGVuKGVuY3J5cHRlZFZhbHVlID0+IHtcclxuXHJcbiAgICAgICAgICAgIHJlY2VpdmVyQWNrbm93bGVkZ2VNc2cgPSB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ2hhbmRzaGFrZScsXHJcbiAgICAgICAgICAgICAgdG86IG1lc3NhZ2UuZnJvbSxcclxuICAgICAgICAgICAgICBmcm9tOiBtZXNzYWdlLnRvLFxyXG4gICAgICAgICAgICAgIGJvZHk6IHtcclxuICAgICAgICAgICAgICAgIGhhbmRzaGFrZVBoYXNlOiAncmVjZWl2ZXJBY2tub3dsZWRnZSdcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB2YWx1ZS52YWx1ZSA9IGVuY29kZShlbmNyeXB0ZWRWYWx1ZSk7XHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlVG9IYXNoID0gX3RoaXMuX2ZpbHRlck1lc3NhZ2VUb0hhc2gocmVjZWl2ZXJBY2tub3dsZWRnZU1zZywgJ29rISEnICsgaXYsIGNoYXRLZXlzLmh5cGVydHlGcm9tLm1lc3NhZ2VJbmZvKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5jcnlwdG8uaGFzaEhNQUMoY2hhdEtleXMua2V5cy5oeXBlcnR5RnJvbUhhc2hLZXksIG1lc3NhZ2VUb0hhc2gpO1xyXG4gICAgICAgICAgfSkudGhlbihoYXNoZWRNZXNzYWdlID0+IHtcclxuICAgICAgICAgICAgbGV0IGZpbmFsVmFsdWUgPSBlbmNvZGUoe3ZhbHVlOiB2YWx1ZS52YWx1ZSwgaGFzaDogZW5jb2RlKGhhc2hlZE1lc3NhZ2UpLCBpdjogdmFsdWUuaXZ9KTtcclxuXHJcbiAgICAgICAgICAgIHJlY2VpdmVyQWNrbm93bGVkZ2VNc2cuYm9keS52YWx1ZSA9IGZpbmFsVmFsdWU7XHJcbiAgICAgICAgICAgIHJlc29sdmUoe21lc3NhZ2U6IHJlY2VpdmVyQWNrbm93bGVkZ2VNc2csIGNoYXRLZXlzOiBjaGF0S2V5c30pO1xyXG4gICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgcmVqZWN0KCdPbiBfZG9IYW5kU2hha2VQaGFzZSBmcm9tIHJlcG9ydGVyU2Vzc2lvbktleSBlcnJvcjogJyArIGVycik7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhc2UgJ3JlY2VpdmVyQWNrbm93bGVkZ2UnOiB7XHJcblxyXG4gICAgICAgICAgbG9nLmxvZygncmVjZWl2ZXJBY2tub3dsZWRnZScpO1xyXG5cclxuICAgICAgICAgIGxldCByZWNlaXZlZHZhbHVlSVZhbmRIYXNoID0gZGVjb2RlKG1lc3NhZ2UuYm9keS52YWx1ZSk7XHJcbiAgICAgICAgICBsZXQgcmVjZWl2ZWRIYXNoID0gZGVjb2RlVG9VaW50OEFycmF5KHJlY2VpdmVkdmFsdWVJVmFuZEhhc2guaGFzaCk7XHJcbiAgICAgICAgICBpdiA9IGRlY29kZVRvVWludDhBcnJheShyZWNlaXZlZHZhbHVlSVZhbmRIYXNoLml2KTtcclxuICAgICAgICAgIGxldCByZWNlaXZlZEVuY3J5cHRlZFZhbHVlID0gZGVjb2RlVG9VaW50OEFycmF5KHJlY2VpdmVkdmFsdWVJVmFuZEhhc2gudmFsdWUpO1xyXG5cclxuICAgICAgICAgIF90aGlzLmNyeXB0by5kZWNyeXB0QUVTKGNoYXRLZXlzLmtleXMuaHlwZXJ0eVRvU2Vzc2lvbktleSwgcmVjZWl2ZWRFbmNyeXB0ZWRWYWx1ZSwgaXYpLnRoZW4oZGVjcnlwdGVkVmFsdWUgPT4ge1xyXG5cclxuICAgICAgICAgICAgbGV0IGZpbHRlcmVkTWVzc2FnZSA9IF90aGlzLl9maWx0ZXJNZXNzYWdlVG9IYXNoKG1lc3NhZ2UsIGRlY3J5cHRlZFZhbHVlICsgaXYpO1xyXG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLnZlcmlmeUhNQUMoY2hhdEtleXMua2V5cy5oeXBlcnR5VG9IYXNoS2V5LCBmaWx0ZXJlZE1lc3NhZ2UsIHJlY2VpdmVkSGFzaCk7XHJcbiAgICAgICAgICB9KS50aGVuKGhhc2hSZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAvLyBsb2cubG9nKCdoYXNoUmVzdWx0ICcsIGhhc2hSZXN1bHQpO1xyXG5cclxuICAgICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2hhdEtleXMuY2FsbGJhY2s7XHJcblxyXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICBjYWxsYmFjaygnaGFuZFNoYWtlRW5kJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzb2x2ZSgnaGFuZFNoYWtlRW5kJyk7XHJcbiAgICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICByZWplY3QoJ09uIF9kb0hhbmRTaGFrZVBoYXNlIGZyb20gcmVjZWl2ZXJBY2tub3dsZWRnZSBlcnJvcjogJyArIGVycik7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICByZWplY3QobWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRvIGhhc2gsIGJ5IHJlbW92aW5nIHNvbWUgZmllbGRzIG5vdCBnZW5lcmF0ZWQgYnkgdGhlIHJ1bnRpbWUgY29yZVxyXG4gICogQHBhcmFtIHtNZXNzYWdlfSAgbWVzc2FnZSAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VcclxuICAqIEBwYXJhbSB7U3RyaW5nfSAgZGVjcnlwdGVkVmFsdWUgKE9wdGlvbmFsKSAgICB2YWx1ZSBmcm9tIGJvZHkudmFsdWUgaW4gY2FzZSBpdCBvcmlnaW5hbGx5IGNvbWVzIGVuY3J5cHRlZFxyXG4gICogQHBhcmFtIHtKU09OfSAgaWRlbnRpdHkoT3B0aW9uYWwpICAgIGFkZCB0aGUgaHlwZXJ0eSBpZGVudGl0eSBhc3NvY2lhdGVkIGluIGNhc2UgaXMgbm90IGFkZGVkIHRvIHRoZSBpbml0aWFsIG1lc3NhZ2VcclxuICAqIEByZXR1cm4ge01lc3NhZ2V9ICBuZXcgbWVzc2FnZSBmaWx0ZXJlZFxyXG4gICovXHJcbiAgX2ZpbHRlck1lc3NhZ2VUb0hhc2gobWVzc2FnZSwgZGVjcnlwdGVkVmFsdWUsIGlkZW50aXR5KSB7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdHlwZTogbWVzc2FnZS50eXBlLFxyXG4gICAgICBmcm9tOiBtZXNzYWdlLmZyb20sXHJcbiAgICAgIHRvOiBtZXNzYWdlLnRvLFxyXG4gICAgICBib2R5OiB7XHJcbiAgICAgICAgaWRlbnRpdHk6IGlkZW50aXR5IHx8IG1lc3NhZ2UuYm9keS5pZGVudGl0eSxcclxuICAgICAgICB2YWx1ZTogZGVjcnlwdGVkVmFsdWUgfHwgbWVzc2FnZS5ib2R5LnZhbHVlLFxyXG4gICAgICAgIGhhbmRzaGFrZVBoYXNlOiBtZXNzYWdlLmJvZHkuaGFuZHNoYWtlUGhhc2VcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogZ2VuZXJhdGVzIHRoZSBpbml0aWFsIHN0cnVjdHVyZSBmb3IgdGhlIGtleXMgYmV0d2VlbiB0d28gdXNlcnNcclxuICAqIEBwYXJhbSB7SlNPTn0gICAgbWVzc2FnZSAgICAgICAgICAgICAgaW5pdGlhbCBtZXNzYWdlIHRoYXQgdHJpZ2dlcnMgdGhlIG11dHVhbCBhdXRoZW50aWNhdGlvblxyXG4gICogQHBhcmFtIHtTdHJpbmd9ICB1c2VyVVJMICAgICAgICAgICAgICB1c2VyVVJMXHJcbiAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlY2VpdmVyKE9wdGlvbmFsKSAgaW5kaWNhdGVzIGlmIGlzIHRoZSBzZW5kZXIgb3IgdGhlIHJlY2VpdmVyIHRoYXQgY3JlYXRlcyBhIG5ldyBjaGF0IGNyeXB0b1xyXG4gICogQHJldHVybiB7SlNPTn0gbmV3Q2hhdENyeXB0byAgbmV3IEpTT04gc3RydWN0dXJlIGZvciB0aGUgY2hhdCBjcnlwdG9cclxuICAqL1xyXG4gIF9uZXdDaGF0Q3J5cHRvKG1lc3NhZ2UsIHVzZXJVUkwsIHJlY2VpdmVyKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIC8vY2hlY2sgd2hldGhlciBpcyB0aGUgc2VuZGVyIG9yIHRoZSByZWNlaXZlciB0byBjcmVhdGUgYSBuZXcgY2hhdENyeXB0b1xyXG4gICAgLy90byBtYW50YWluIGNvbnNpc3RlbmN5IG9uIHRoZSBrZXlzIGlmIHRoZSByZWNlaXZlciBjcmVhdGUgYSBuZXcgY2hhdENyeXB0byxcclxuICAgIC8vdGhlbiBpbnZlcnQgdGhlIGZpZWxkc1xyXG4gICAgbGV0IGZyb20gPSAocmVjZWl2ZXIpID8gbWVzc2FnZS50byA6IG1lc3NhZ2UuZnJvbTtcclxuICAgIGxldCB0byA9IChyZWNlaXZlcikgPyBtZXNzYWdlLmZyb20gOiBtZXNzYWdlLnRvO1xyXG5cclxuICAgIGxldCB1c2VySW5mbyA9IF90aGlzLl9pZG0uZ2V0SWRlbnRpdHkodXNlclVSTCk7XHJcblxyXG4gICAgbGV0IG5ld0NoYXRDcnlwdG8gPVxyXG4gICAgICB7XHJcbiAgICAgICAgaHlwZXJ0eUZyb206XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaHlwZXJ0eTogZnJvbSxcclxuICAgICAgICAgIHVzZXJJRDogdXNlckluZm8udXNlclByb2ZpbGUudXNlclVSTCxcclxuXHJcbiAgICAgICAgICAvL3ByaXZhdGVLZXk6IFwiZ2V0TXlQdWJsaWNLZXlcIixcclxuICAgICAgICAgIC8vcHVibGljS2V5OiBcImdldE15UHJpdmF0ZUtleVwiLFxyXG4gICAgICAgICAgYXNzZXJ0aW9uOiB1c2VySW5mby5hc3NlcnRpb24sXHJcbiAgICAgICAgICBtZXNzYWdlSW5mbzogdXNlckluZm9cclxuICAgICAgICB9LFxyXG4gICAgICAgIGh5cGVydHlUbzpcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoeXBlcnR5OiB0byxcclxuICAgICAgICAgIHVzZXJJRDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgcHVibGljS2V5OiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBhc3NlcnRpb246IHVuZGVmaW5lZFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAga2V5czpcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoeXBlcnR5VG9TZXNzaW9uS2V5OiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBoeXBlcnR5RnJvbVNlc3Npb25LZXk6IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGh5cGVydHlUb0hhc2hLZXk6IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGh5cGVydHlGcm9tSGFzaEtleTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdG9SYW5kb206IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGZyb21SYW5kb206IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHByZW1hc3RlcktleTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgbWFzdGVyS2V5OiB1bmRlZmluZWRcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhbmRzaGFrZUhpc3Rvcnk6IHtcclxuICAgICAgICAgIHNlbmRlckhlbGxvOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICByZWNlaXZlckhlbGxvOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBzZW5kZXJDZXJ0aWZpY2F0ZTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgcmVjZWl2ZXJGaW5pc2hlZE1lc3NhZ2U6IHVuZGVmaW5lZFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaW5pdGlhbE1lc3NhZ2U6IChtZXNzYWdlLmJvZHkuaWdub3JlKSA/IHVuZGVmaW5lZCA6IG1lc3NhZ2UsXHJcbiAgICAgICAgY2FsbGJhY2s6IG1lc3NhZ2UuY2FsbGJhY2ssXHJcbiAgICAgICAgYXV0aGVudGljYXRlZDogZmFsc2UsXHJcbiAgICAgICAgZGF0YU9iamVjdFVSTDogbWVzc2FnZS5kYXRhT2JqZWN0VVJMXHJcbiAgICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG5ld0NoYXRDcnlwdG87XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFJldHJpZXZlcyBhIHB1YmxpYyBrZXlzIGdpdmVuIGEgdXNlciByZWZyZW5jZS4gSWYgbm8ga2V5IGlzIGZvdW5kLFxyXG4gIGdlbmVyYXRlcyBhIG5ldyBrZXkgYXN5bW1ldHJpYyBrZXkgYW5kIHJldHJpZXZlcyB0aGUgcHVibGljIGtleXMuXHJcbiAgKiBAcGFyYW0gICB7dXNlclJlZn0gICAgU3RyaW5nICAgIHVzZXIgcmVmZXJlbmNlIGZvciB0aGUga2V5IHBhaXJcclxuICAqIEByZXR1cm4gIHtBcnJheX0gICBwdWJsaWMga2V5XHJcbiAgKi9cclxuICBnZXRNeVB1YmxpY0tleSh1c2VyUmVmID0gdGhpcy51c2VyRGVmYXVsdEtleVJlZikge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIF90aGlzLnN0b3JhZ2VNYW5hZ2VyLmdldCh1c2VyUmVmKS50aGVuKHN0b3JlZEtleVBhaXIgPT4ge1xyXG4gICAgICAgIGlmIChzdG9yZWRLZXlQYWlyKSB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShzdG9yZWRLZXlQYWlyLnB1YmxpYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF90aGlzLl9nZW5lcmF0ZUFuZFN0b3JlTmV3QXN5bWV0cmljS2V5KHVzZXJSZWYpLnRoZW4oZ2VuZXJhdGVkS2V5UGFpciA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKGdlbmVyYXRlZEtleVBhaXIucHVibGljKTtcclxuICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgbG9nLmVycm9yKCdbZ2V0TXlQdWJsaWNLZXk6X2dlbmVyYXRlQW5kU3RvcmVOZXdBc3ltZXRyaWNLZXk6ZXJyXTogJyArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgIGxvZy5lcnJvcignW2dldE15UHVibGljS2V5OnN0b3JhZ2VNYW5hZ2VyOmVycl06ICcgKyBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFJldHJpZXZlcyBhIHByaXZhdGUga2V5cyBnaXZlbiBhIHVzZXIgcmVmcmVuY2UuIElmIG5vIGtleSBpcyBmb3VuZCxcclxuICBnZW5lcmF0ZXMgYSBuZXcga2V5IGFzeW1tZXRyaWMga2V5IGFuZCByZXRyaWV2ZXMgdGhlIHByaXZhdGUga2V5LlxyXG4gICogQHBhcmFtICAge3VzZXJSZWZ9ICAgIFN0cmluZyAgICB1c2VyIHJlZmVyZW5jZSBmb3IgdGhlIGtleSBwYWlyXHJcbiAgKiBAcmV0dXJuICB7QXJyYXl9ICAgcHJpdmF0ZSBrZXlcclxuICAqKi9cclxuICBnZXRNeVByaXZhdGVLZXkodXNlclJlZiA9IHRoaXMudXNlckRlZmF1bHRLZXlSZWYpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5nZXQodXNlclJlZikudGhlbihzdG9yZWRLZXlQYWlyID0+IHtcclxuICAgICAgICBpZiAoc3RvcmVkS2V5UGFpcikge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoc3RvcmVkS2V5UGFpci5wcml2YXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgX3RoaXMuX2dlbmVyYXRlQW5kU3RvcmVOZXdBc3ltZXRyaWNLZXkodXNlclJlZikudGhlbihnZW5lcmF0ZWRLZXlQYWlyID0+IHtcclxuICAgICAgICAgIHJlc29sdmUoZ2VuZXJhdGVkS2V5UGFpci5wcml2YXRlKTtcclxuICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgbG9nLmVycm9yKCdbZ2V0TXlQcml2YXRlS2V5Ol9nZW5lcmF0ZUFuZFN0b3JlTmV3QXN5bWV0cmljS2V5OmVycl06ICcgKyBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICBsb2cuZXJyb3IoJ1tnZXRNeVByaXZhdGVLZXk6c3RvcmFnZU1hbmFnZXI6ZXJyXTogJyArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAqIEdlbmVyYXRlcyBhIG5ldyBrZXkgcGFpciwgc3RvcmVzIGFuZCByZXRyaXZlcyB0aGUga2V5IHBhaXIuXHJcbiAgKiBAcGFyYW0gICB7dXNlclJlZn0gICAgU3RyaW5nICAgIHVzZXIgcmVmZXJlbmNlIGZvciB0aGUga2V5IHBhaXJcclxuICAqIEByZXR1cm4gIHtBcnJheX0gICBwcml2YXRlIGtleVxyXG4gICoqL1xyXG4gIF9nZW5lcmF0ZUFuZFN0b3JlTmV3QXN5bWV0cmljS2V5KHVzZXJSZWYpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQga2V5UGFpciA9IHVuZGVmaW5lZDtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIF90aGlzLmNyeXB0by5nZW5lcmF0ZVJTQUtleVBhaXIoKS50aGVuKGdlbmVyYXRlZEtleVBhaXIgPT4ge1xyXG4gICAgICAgIGxvZy5sb2coJ19nZW5lcmF0ZUFuZFN0b3JlTmV3QXN5bWV0cmljS2V5OnVzZXJBc3ltbWV0cmljS2V5R2VuZXJhdGVkJywgZ2VuZXJhdGVkS2V5UGFpcik7XHJcbiAgICAgICAga2V5UGFpciA9IGdlbmVyYXRlZEtleVBhaXI7XHJcbiAgICAgICAgcmV0dXJuIF90aGlzLnN0b3JhZ2VNYW5hZ2VyLnNldCh1c2VyUmVmLCAwLCBnZW5lcmF0ZWRLZXlQYWlyKTtcclxuICAgICAgfSkudGhlbihzdG9yZWRSZWZlcmVuY2UgPT4ge1xyXG4gICAgICAgIGxvZy5sb2coJ19nZW5lcmF0ZUFuZFN0b3JlTmV3QXN5bWV0cmljS2V5OnVzZXJBc3ltbWV0cmljS2V5U3VjY2VzcycsIHN0b3JlZFJlZmVyZW5jZSk7XHJcbiAgICAgICAgcmVzb2x2ZShrZXlQYWlyKTtcclxuICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICBsb2cuZXJyb3IoJ1tfZ2VuZXJhdGVBbmRTdG9yZU5ld0FzeW1ldHJpY0tleTplcnJdOiAnICsgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbi8qXHJcbmNvbnN0IG5vZGVKU0tleVBhaXJQb3B1bGF0ZSA9IHsgcHVibGljOiBbNDgsIDEzMCwgMSwgMzQsIDQ4LCAxMywgNiwgOSwgNDIsIDEzNCwgNzIsIDEzNCwgMjQ3LCAxMywgMSwgMSwgMSwgNSwgMCwgMywgMTMwLCAxLCAxNSwgMCwgNDgsIDEzMCwgMSwgMTAsIDIsIDEzMCwgMSwgMSwgMCwgMjI4LCA0MywgMTAxLCAxMiwgMTIxLCA3LCAxNTcsIDcxLCA4MSwgNTgsIDIxOSwgMzIsIDEwLCAxMDgsIDE5MywgMTc5LCAyMTIsIDExNiwgMjU1LCA1OSwgMjE3LCAzMiwgMTYxLCAyMDEsIDUzLCAxNzEsIDIyNiwgMTk5LCAxMzcsIDIwMiwgMTcxLCA2MCwgODIsIDUzLCAxMjUsIDYyLCAxNzcsIDEyNiwgMTY1LCAyNCwgMTQxLCAzMCwgMTUsIDIyNiwgNTksIDEwNywgMzQsIDcsIDEzLCAxNDksIDExMiwgMTI1LCAxMCwgMjMwLCAxOTEsIDE1NiwgMTY0LCAxNzcsIDEwLCAxODUsIDEzLCA2NiwgMywgMjE3LCAxNjYsIDI0NCwgOTAsIDExOSwgMTExLCAyNywgMTQ1LCAxMDQsIDcxLCAxODksIDE2NiwgMjI2LCAyNTUsIDEzMywgODMsIDE1MSwgMjMxLCAxMDEsIDE1MSwgODksIDIyLCAxOSwgNjUsIDE1NCwgMTAsIDUzLCAyMDgsIDIxOCwgMjUyLCAyMTksIDM3LCA1MCwgMjEyLCA4NiwgMTQ1LCAxMDcsIDEzMiwgOTAsIDIzMywgMjAyLCAyMjcsIDEwOCwgMTE0LCAxNDEsIDI5LCA3MywgMTg3LCAzMSwgMTMsIDIzNCwgMCwgMjMyLCAyNCwgMTkxLCAzNSwgMTQ5LCAxNzksIDEzOCwgMjE0LCAxNTksIDI0NSwgMTYyLCAxNDgsIDIyMSwgMTE4LCAxNywgMTA1LCA4OSwgMTUxLCAxNDYsIDIwOSwgNTUsIDIzNiwgNjEsIDE0MywgMjMzLCAyMjgsIDEwLCAxMTUsIDgsIDgxLCAxOTcsIDQ1LCAxMjMsIDE4NywgMjIzLCAxNzYsIDI1NCwgMTY1LCA2OSwgMTQzLCAyOSwgMTAwLCAxMTQsIDE3LCAxMzAsIDIyNiwgMjIzLCAzMywgMTEsIDI0MCwgODEsIDYxLCAxNzIsIDE5MSwgMTU3LCAyNDYsIDIwMiwgODcsIDEzMSwgMjIxLCA4OCwgNDgsIDEyNywgMTU5LCAxMTksIDE2MCwgMTUyLCAxMTcsIDYxLCAyNTMsIDE3NCwgNjUsIDIxNCwgMjAzLCAyMTgsIDYzLCA1MCwgNzgsIDE2MCwgMTgxLCAyMjEsIDIxMSwgMTI4LCA3MCwgMTc4LCAxOTEsIDE3MCwgMCwgMTMsIDEyMiwgMTczLCAxMiwgMjAzLCAyNTIsIDQsIDE4NCwgMjI1LCAyNTIsIDcsIDYyLCA5NiwgMTE2LCAxNSwgMjE2LCAxNTgsIDU1LCA4NSwgNDgsIDE2LCA5LCAyMDYsIDExOSwgNzQsIDExMiwgMjQzLCAxMzYsIDg0LCAxODQsIDIyMywgMjU0LCAxMDEsIDkxLCA2MSwgMTAsIDkxLCA4NSwgMTkyLCAxNDcsIDE0NCwgNTcsIDI5LCA2NiwgMjM4LCAxOTksIDI0NCwgMTkzLCAxOTQsIDE1MCwgMjMyLCAyMDAsIDEwNywgMiwgMywgMSwgMCwgMV0sXHJcbiAgcHJpdmF0ZTogWzQ4LCAxMzAsIDQsIDE5MSwgMiwgMSwgMCwgNDgsIDEzLCA2LCA5LCA0MiwgMTM0LCA3MiwgMTM0LCAyNDcsIDEzLCAxLCAxLCAxLCA1LCAwLCA0LCAxMzAsIDQsIDE2OSwgNDgsIDEzMCwgNCwgMTY1LCAyLCAxLCAwLCAyLCAxMzAsIDEsIDEsIDAsIDIyOCwgNDMsIDEwMSwgMTIsIDEyMSwgNywgMTU3LCA3MSwgODEsIDU4LCAyMTksIDMyLCAxMCwgMTA4LCAxOTMsIDE3OSwgMjEyLCAxMTYsIDI1NSwgNTksIDIxNywgMzIsIDE2MSwgMjAxLCA1MywgMTcxLCAyMjYsIDE5OSwgMTM3LCAyMDIsIDE3MSwgNjAsIDgyLCA1MywgMTI1LCA2MiwgMTc3LCAxMjYsIDE2NSwgMjQsIDE0MSwgMzAsIDE1LCAyMjYsIDU5LCAxMDcsIDM0LCA3LCAxMywgMTQ5LCAxMTIsIDEyNSwgMTAsIDIzMCwgMTkxLCAxNTYsIDE2NCwgMTc3LCAxMCwgMTg1LCAxMywgNjYsIDMsIDIxNywgMTY2LCAyNDQsIDkwLCAxMTksIDExMSwgMjcsIDE0NSwgMTA0LCA3MSwgMTg5LCAxNjYsIDIyNiwgMjU1LCAxMzMsIDgzLCAxNTEsIDIzMSwgMTAxLCAxNTEsIDg5LCAyMiwgMTksIDY1LCAxNTQsIDEwLCA1MywgMjA4LCAyMTgsIDI1MiwgMjE5LCAzNywgNTAsIDIxMiwgODYsIDE0NSwgMTA3LCAxMzIsIDkwLCAyMzMsIDIwMiwgMjI3LCAxMDgsIDExNCwgMTQxLCAyOSwgNzMsIDE4NywgMzEsIDEzLCAyMzQsIDAsIDIzMiwgMjQsIDE5MSwgMzUsIDE0OSwgMTc5LCAxMzgsIDIxNCwgMTU5LCAyNDUsIDE2MiwgMTQ4LCAyMjEsIDExOCwgMTcsIDEwNSwgODksIDE1MSwgMTQ2LCAyMDksIDU1LCAyMzYsIDYxLCAxNDMsIDIzMywgMjI4LCAxMCwgMTE1LCA4LCA4MSwgMTk3LCA0NSwgMTIzLCAxODcsIDIyMywgMTc2LCAyNTQsIDE2NSwgNjksIDE0MywgMjksIDEwMCwgMTE0LCAxNywgMTMwLCAyMjYsIDIyMywgMzMsIDExLCAyNDAsIDgxLCA2MSwgMTcyLCAxOTEsIDE1NywgMjQ2LCAyMDIsIDg3LCAxMzEsIDIyMSwgODgsIDQ4LCAxMjcsIDE1OSwgMTE5LCAxNjAsIDE1MiwgMTE3LCA2MSwgMjUzLCAxNzQsIDY1LCAyMTQsIDIwMywgMjE4LCA2MywgNTAsIDc4LCAxNjAsIDE4MSwgMjIxLCAyMTEsIDEyOCwgNzAsIDE3OCwgMTkxLCAxNzAsIDAsIDEzLCAxMjIsIDE3MywgMTIsIDIwMywgMjUyLCA0LCAxODQsIDIyNSwgMjUyLCA3LCA2MiwgOTYsIDExNiwgMTUsIDIxNiwgMTU4LCA1NSwgODUsIDQ4LCAxNiwgOSwgMjA2LCAxMTksIDc0LCAxMTIsIDI0MywgMTM2LCA4NCwgMTg0LCAyMjMsIDI1NCwgMTAxLCA5MSwgNjEsIDEwLCA5MSwgODUsIDE5MiwgMTQ3LCAxNDQsIDU3LCAyOSwgNjYsIDIzOCwgMTk5LCAyNDQsIDE5MywgMTk0LCAxNTAsIDIzMiwgMjAwLCAxMDcsIDIsIDMsIDEsIDAsIDEsIDIsIDEzMCwgMSwgMCwgMTAzLCAyNDQsIDEzNywgMTE4LCAxMTYsIDgyLCAxNCwgMjAzLCAxMDIsIDEwNywgMjUzLCA4OCwgMTIsIDE5OSwgMjIyLCA2MCwgMjQzLCAxMzYsIDg2LCAxNTcsIDc0LCAyMjQsIDE5MCwgNTMsIDExMywgNTcsIDE1NywgMjUwLCA0OSwgMTMwLCA5NiwgMzEsIDI1MiwgMTM2LCAxNTIsIDcwLCAxNDMsIDE3LCAyMTUsIDk2LCAxMDMsIDUxLCAxOCwgMzUsIDE0MSwgMjEyLCAyMTAsIDIwNSwgOSwgMjE2LCA4MywgNzAsIDI0NSwgNzEsIDEzOCwgMTE5LCAxMTIsIDIyOSwgMTY0LCAxNzYsIDksIDM3LCA4MSwgMTYxLCAxOTMsIDE1NCwgNjgsIDI0OSwgMTE1LCAxMDYsIDIwMSwgNiwgMTIsIDIyNSwgMTQ0LCAxMjYsIDE0MSwgMjEwLCAxNDEsIDI0MiwgMTI4LCAxNTksIDIyMSwgMTYzLCAyMjIsIDIxLCAyMzMsIDIzMCwgMTY3LCAyMDYsIDU5LCAyNCwgMjUwLCAyMzMsIDgxLCAxMjIsIDEwMiwgMjYsIDYsIDIzMywgNzIsIDEzMywgNDcsIDc3LCAxNTUsIDIzOCwgODYsIDYsIDEzOSwgMjQsIDEzMSwgMTYzLCAxNzksIDExMiwgNDgsIDI0NywgMTQyLCA2LCAyMDcsIDIwNCwgMTczLCAyMjMsIDE0MCwgMTk5LCAxNTAsIDk1LCAxMjMsIDE1MiwgMjAyLCAxNTUsIDEzMSwgMjM4LCA2MiwgOTYsIDEzMywgNCwgMjE3LCA1MSwgMTIxLCAzMCwgMzgsIDE3OCwgMTg5LCAyMTYsIDQ0LCAzNSwgMjQxLCA5MywgNywgNjIsIDkwLCAxMTEsIDIxNiwgNjYsIDIwOSwgMjQzLCAxMjgsIDIzNCwgMTQxLCA4NCwgMTM1LCAxODEsIDEzLCAzOCwgMjIwLCAxMTQsIDI0NSwgMjQwLCAxNzgsIDk1LCAyMjAsIDIwNiwgMTEsIDE4NiwgMjM0LCAyMTMsIDY2LCAxMjEsIDgzLCA2OCwgODksIDc1LCA0NiwgMTgzLCAxNDUsIDE4MywgMTQ3LCAxNjAsIDIxNSwgMTE4LCAxOTgsIDEyNSwgMTgxLCAxNDYsIDMwLCAyNTEsIDU4LCA4NywgNDcsIDIwOSwgMjM3LCA5NywgMjQsIDQ3LCAxNzksIDYsIDExMCwgMjQyLCA5OSwgMTUwLCAyMjYsIDE0OCwgMTk4LCAxNzQsIDE0NiwgMTAxLCAyMTMsIDg3LCAxNzgsIDEwLCAyMjMsIDEwNSwgMTgsIDU2LCA1MywgMjIsIDIxMiwgMTU4LCAxNzAsIDE3NiwgNTEsIDg2LCAxNDUsIDEyNSwgMTI0LCA0NCwgOSwgODUsIDE5LCAxNDQsIDI0NiwgMTcwLCA3OCwgMTI0LCAzMCwgMzIsIDEyLCAxNjYsIDE3NCwgMTM5LCA3NywgNjMsIDE3MywgODIsIDEwLCAxNTMsIDIsIDEyOSwgMTI5LCAwLCAyNDgsIDE4LCAxNDMsIDI0NiwgMTM3LCAxMzYsIDE0NSwgMjE5LCAxNzgsIDM5LCAyNywgOTQsIDY0LCA5MCwgNDcsIDE2MywgMTE0LCA2MCwgNjMsIDE4NywgMTMxLCAxNDMsIDI0NCwgMTYsIDQyLCAxMjgsIDIzMSwgMTE3LCA5MiwgOTgsIDIxOSwgMTU1LCA2MiwgMTA3LCAyNTIsIDE3LCAyNDUsIDQ1LCAxNjAsIDIyNSwgMTAzLCAxNDIsIDcyLCAzNiwgMTkzLCAxNTAsIDIzNSwgMjE0LCAxNzUsIDYyLCAyMTIsIDU2LCA0NSwgOSwgMCwgNjAsIDExNCwgMTA3LCAxMzQsIDIyOCwgMjA0LCAxMzEsIDEzMSwgMjE0LCA5NCwgMjAxLCAxNDgsIDE1OSwgOTksIDEzOSwgMTgxLCAxMywgMTE5LCAzOCwgMzAsIDEwNywgMTY2LCAxNjUsIDIwMywgNDMsIDM0LCAyMCwgMjA3LCAxNzEsIDMyLCA1OCwgMTY3LCA2MiwgMTk2LCAxNTMsIDEwMywgMjA0LCAyMTMsIDI0NywgNDgsIDExMSwgMjI3LCA1OSwgOTUsIDk3LCAxOTQsIDE4NywgNTMsIDEwLCAyNDcsIDEwOCwgNTgsIDg2LCAyOCwgMjksIDExMywgOCwgMTEwLCAxNzEsIDIyMCwgMjQ1LCAxMSwgODIsIDIzMywgMjIzLCA5MSwgNjgsIDE2NiwgMTE3LCAxNzQsIDE4NywgNjIsIDc3LCAyLCAxMjksIDEyOSwgMCwgMjM1LCAxMTgsIDIsIDEwNSwgMjM5LCAyMTIsIDMwLCAxMDQsIDE1NywgNDEsIDEwOSwgMTEsIDI0OCwgMTUyLCAyMiwgMjM2LCA5NywgNDAsIDE1MywgMTMxLCAyMjgsIDUsIDg2LCAxODcsIDExMywgMTI2LCAxNDQsIDc2LCAxNDEsIDc5LCAxMTAsIDI1MCwgMTQ2LCAxNTIsIDQ5LCA1OCwgMTU2LCAyMDEsIDE3NiwgOTIsIDE4OSwgMjA5LCAzMCwgMTEyLCAxMDgsIDE3NSwgMjA0LCAyMDQsIDI0NywgMTY0LCA0NiwgMTI5LCAyMzksIDk4LCAxMjcsIDQ5LCAxNDUsIDIxOCwgNjMsIDE5MywgMTI0LCAxNzQsIDE4LCA5OCwgMjAxLCA5OSwgMTU0LCAxNjIsIDEzOCwgNzgsIDE1OSwgMjUzLCAzLCAyNDgsIDMsIDIwOSwgMzYsIDIzOSwgMTkzLCAxNTUsIDE5MywgNSwgMTksIDIzNiwgMzcsIDc4LCAxMTgsIDEzNSwgMjUwLCAxOTksIDcsIDE0MSwgMjQ4LCAxMjAsIDM2LCAxMzYsIDkzLCA5OCwgMTc0LCA2MCwgMTgsIDIxNSwgOTMsIDE3NCwgMTA3LCAxNDEsIDExNiwgMTQ1LCAxNjcsIDIyMSwgMjEwLCAxNjksIDI0NywgNjcsIDI1NCwgMjIyLCAxNjEsIDEzNCwgNjMsIDIyMSwgOTAsIDg3LCA0MiwgOTksIDIyNywgODEsIDE3MywgMTUxLCAyLCAxMjksIDEyOSwgMCwgMTMzLCAyMywgMTY4LCAxMDMsIDgzLCAyMzIsIDE0NiwgMTYwLCAxODEsIDIzLCA0MCwgMzgsIDIwNCwgMTMsIDIxNCwgMjAzLCA0OSwgNDEsIDE5NSwgMjI3LCAxODksIDE4MSwgOCwgMjQzLCAxMTksIDEwNiwgNzUsIDY3LCAyNTAsIDI1MCwgMTAsIDIzNCwgOTgsIDExOCwgMjYsIDI1MCwgMzUsIDEyMSwgMTMyLCAxMjQsIDEwLCA3NiwgMjYsIDE5OCwgMTY1LCAxNTQsIDEwOCwgMTksIDExNywgODgsIDIzLCAxNywgMTkyLCAxNDMsIDE4NCwgMTc3LCAxODEsIDE0MSwgMTU3LCA0LCAxODUsIDI0OCwgMTkzLCA3NywgMjA0LCAyNDMsIDcsIDE3MCwgMjQwLCA0LCAxMTEsIDExMywgMTgzLCAwLCAyNywgMTM2LCAyMCwgMTksIDE0OSwgNzQsIDMzLCAyNDEsIDIxOCwgMTA4LCAyMzYsIDgwLCAxNzEsIDE0OCwgMTYsIDExNiwgOTcsIDEwOSwgODMsIDc0LCA4OCwgMTQ1LCA5NCwgMjM5LCAxMDIsIDE5MiwgMTksIDExNCwgMjA3LCA1LCAxMjgsIDUxLCAxMTEsIDE2NCwgMjM3LCA4NiwgMTU0LCA5OSwgNTIsIDE5NywgNjIsIDU3LCAxODIsIDYsIDE1MiwgMjQ1LCA2MSwgMTM3LCA1OCwgMTA1LCAxNTksIDIsIDg0LCAxMDksIDIsIDEyOSwgMTI5LCAwLCAyMjYsIDY3LCAxMTEsIDEzMiwgOTUsIDkxLCAxMDEsIDE3NywgNjMsIDE4OSwgNDQsIDUzLCAxOTMsIDE4NCwgOTIsIDIzMCwgMjIzLCA5OCwgMTMzLCA3NCwgMjA5LCA4NiwgNTIsIDcsIDY1LCAxOTUsIDIwNiwgMTAwLCA4MSwgMTc4LCAxNDQsIDY1LCAxNjcsIDE1MSwgNDIsIDc5LCA4OSwgMTQ5LCAxOCwgMTczLCAxODgsIDIxLCAyNDQsIDI1MSwgNDksIDIzMCwgNDEsIDE1MCwgMTUzLCA0NiwgMzUsIDM4LCAyMzEsIDk5LCAxNzQsIDU2LCAxMTUsIDMyLCAyMTUsIDI1MywgODUsIDE0NywgMTA4LCAxOTcsIDE0NywgMzQsIDIzNiwgMjE2LCAyMjIsIDE3NywgNTcsIDkwLCAxMzYsIDExNCwgMjA3LCA0OCwgNDYsIDMxLCA5MCwgMjIwLCAxOCwgNTgsIDE0MywgMjM5LCAxMTEsIDIxNCwgMjcsIDk1LCA2LCAzNiwgNTMsIDIyOSwgNjIsIDEwOCwgNDUsIDM5LCAxLCAzMCwgNDcsIDE3OCwgNTYsIDE2NCwgMjA2LCA1NiwgNDIsIDIwOCwgNDYsIDE5MywgNjEsIDMxLCAxNDcsIDQ1LCAxNDcsIDIzLCAxODcsIDIyLCA1MCwgMjU1LCAxMTEsIDIyOSwgMTMyLCAxOTksIDE1MiwgNzUsIDE0MiwgMTM2LCAyMDksIDE1MSwgMiwgMTI5LCAxMjksIDAsIDE2NSwgNTYsIDIzMiwgNzYsIDU1LCA1NywgMjQwLCAxNTksIDkyLCAyMDcsIDIyMCwgMTQzLCAxMzAsIDMwLCA1NywgMjM0LCAyNTEsIDE3MiwgMTcxLCAxODAsIDU0LCAxNTksIDIyOSwgOTYsIDI0NiwgNzMsIDExMiwgMTQ2LCA3NSwgMTU3LCAyNDIsIDIwMSwgMTYxLCAyMTgsIDM3LCAxNzYsIDM1LCAxNzAsIDUwLCA5MCwgMTQ4LCAxMDIsIDE5MSwgMTk5LCAyMzksIDE3NCwgNzgsIDcyLCA2NywgODUsIDE5OSwgNDUsIDE0OSwgMTQ1LCAxMzIsIDE2MSwgMjEyLCAzMywgMTU3LCA3NSwgMjE2LCA3OSwgMzksIDIzMywgMTgsIDIxMCwgMjU1LCAyNiwgNzIsIDIyOSwgMjM5LCA0NCwgMTIsIDE0NywgMTU4LCAxNzYsIDE5MiwgOTUsIDEyNiwgMzIsIDE3NSwgMjMsIDIyNiwgMTMxLCAxMzksIDE5NywgMTc1LCAxOTMsIDYyLCA4LCAxNTEsIDI1MiwgNjgsIDE1NCwgOTQsIDg5LCAxODksIDEyNSwgOTAsIDMwLCAzNiwgMTc1LCA3MywgMjMwLCAxOTQsIDEzLCAyMzMsIDI0NywgMTIzLCA2MCwgMjQxLCA0NywgMTcxLCA1MSwgMTg5LCAxMTIsIDExMSwgMjEzLCAxNDEsIDg5LCA3MCwgMjQ5LCAyMzYsIDYzLCAyMzYsIDExMCwgMTE1LCAyMDhdfTtcclxuKi9cclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBDcnlwdG9NYW5hZ2VyKCk7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvY3J5cHRvTWFuYWdlci9DcnlwdG9NYW5hZ2VyLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBTEE7QUFDQTtBQUtBOzs7Ozs7O0FBT0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFxRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7Ozs7O0FBS0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUpBO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFKQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUpBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSkE7QUFTQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSkE7QUFDQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFKQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBMVpBO0FBNFpBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUpBO0FBVUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBU0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQXRDQTtBQUNBO0FBd0NBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQXYwQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlBOzs7Ozs7O0FBU0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQTZ3Q0E7Ozs7O0FBS0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///100\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nvar document = __webpack_require__(4).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qcz84ZTFjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kb20tY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///101\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar core = __webpack_require__(30);\nvar LIBRARY = __webpack_require__(49);\nvar wksExt = __webpack_require__(149);\nvar defineProperty = __webpack_require__(11).f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fd2tzLWRlZmluZS5qcz9kZTBmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgd2tzRXh0ID0gcmVxdWlyZSgnLi9fd2tzLWV4dCcpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgdmFyICRTeW1ib2wgPSBjb3JlLlN5bWJvbCB8fCAoY29yZS5TeW1ib2wgPSBMSUJSQVJZID8ge30gOiBnbG9iYWwuU3ltYm9sIHx8IHt9KTtcbiAgaWYgKG5hbWUuY2hhckF0KDApICE9ICdfJyAmJiAhKG5hbWUgaW4gJFN5bWJvbCkpIGRlZmluZVByb3BlcnR5KCRTeW1ib2wsIG5hbWUsIHsgdmFsdWU6IHdrc0V4dC5mKG5hbWUpIH0pO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fd2tzLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMTAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///102\n")},function(module,exports,__webpack_require__){eval("var shared = __webpack_require__(79)('keys');\nvar uid = __webpack_require__(48);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2hhcmVkLWtleS5qcz85OTkzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgna2V5cycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///103\n")},function(module,exports){eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZW51bS1idWcta2V5cy5qcz80MGE1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///104\n")},function(module,exports,__webpack_require__){eval("var document = __webpack_require__(4).document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faHRtbC5qcz83NzRlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2h0bWwuanNcbi8vIG1vZHVsZSBpZCA9IDEwNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///105\n")},function(module,exports,__webpack_require__){eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(6);\nvar anObject = __webpack_require__(3);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(27)(Function.call, __webpack_require__(25).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LXByb3RvLmpzPzgyZjAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gV29ya3Mgd2l0aCBfX3Byb3RvX18gb25seS4gT2xkIHY4IGNhbid0IHdvcmsgd2l0aCBudWxsIHByb3RvIG9iamVjdHMuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChPLCBwcm90bykge1xuICBhbk9iamVjdChPKTtcbiAgaWYgKCFpc09iamVjdChwcm90bykgJiYgcHJvdG8gIT09IG51bGwpIHRocm93IFR5cGVFcnJvcihwcm90byArIFwiOiBjYW4ndCBzZXQgYXMgcHJvdG90eXBlIVwiKTtcbn07XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKCdfX3Byb3RvX18nIGluIHt9ID8gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIGZ1bmN0aW9uICh0ZXN0LCBidWdneSwgc2V0KSB7XG4gICAgICB0cnkge1xuICAgICAgICBzZXQgPSByZXF1aXJlKCcuL19jdHgnKShGdW5jdGlvbi5jYWxsLCByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmYoT2JqZWN0LnByb3RvdHlwZSwgJ19fcHJvdG9fXycpLnNldCwgMik7XG4gICAgICAgIHNldCh0ZXN0LCBbXSk7XG4gICAgICAgIGJ1Z2d5ID0gISh0ZXN0IGluc3RhbmNlb2YgQXJyYXkpO1xuICAgICAgfSBjYXRjaCAoZSkgeyBidWdneSA9IHRydWU7IH1cbiAgICAgIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgICAgICBjaGVjayhPLCBwcm90byk7XG4gICAgICAgIGlmIChidWdneSkgTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICAgICAgZWxzZSBzZXQoTywgcHJvdG8pO1xuICAgICAgICByZXR1cm4gTztcbiAgICAgIH07XG4gICAgfSh7fSwgZmFsc2UpIDogdW5kZWZpbmVkKSxcbiAgY2hlY2s6IGNoZWNrXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtcHJvdG8uanNcbi8vIG1vZHVsZSBpZCA9IDEwNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///106\n")},function(module,exports){eval("module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXdzLmpzPzVkZGIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAnXFx4MDlcXHgwQVxceDBCXFx4MENcXHgwRFxceDIwXFx4QTBcXHUxNjgwXFx1MTgwRVxcdTIwMDBcXHUyMDAxXFx1MjAwMlxcdTIwMDMnICtcbiAgJ1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMEFcXHUyMDJGXFx1MjA1RlxcdTMwMDBcXHUyMDI4XFx1MjAyOVxcdUZFRkYnO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctd3MuanNcbi8vIG1vZHVsZSBpZCA9IDEwN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///107\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nvar setPrototypeOf = __webpack_require__(106).set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW5oZXJpdC1pZi1yZXF1aXJlZC5qcz85MjI3Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fc2V0LXByb3RvJykuc2V0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgdGFyZ2V0LCBDKSB7XG4gIHZhciBTID0gdGFyZ2V0LmNvbnN0cnVjdG9yO1xuICB2YXIgUDtcbiAgaWYgKFMgIT09IEMgJiYgdHlwZW9mIFMgPT0gJ2Z1bmN0aW9uJyAmJiAoUCA9IFMucHJvdG90eXBlKSAhPT0gQy5wcm90b3R5cGUgJiYgaXNPYmplY3QoUCkgJiYgc2V0UHJvdG90eXBlT2YpIHtcbiAgICBzZXRQcm90b3R5cGVPZih0aGF0LCBQKTtcbiAgfSByZXR1cm4gdGhhdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2luaGVyaXQtaWYtcmVxdWlyZWQuanNcbi8vIG1vZHVsZSBpZCA9IDEwOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///108\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar toInteger = __webpack_require__(33);\nvar defined = __webpack_require__(32);\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXJlcGVhdC5qcz9jNDA3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiByZXBlYXQoY291bnQpIHtcbiAgdmFyIHN0ciA9IFN0cmluZyhkZWZpbmVkKHRoaXMpKTtcbiAgdmFyIHJlcyA9ICcnO1xuICB2YXIgbiA9IHRvSW50ZWdlcihjb3VudCk7XG4gIGlmIChuIDwgMCB8fCBuID09IEluZmluaXR5KSB0aHJvdyBSYW5nZUVycm9yKFwiQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmVcIik7XG4gIGZvciAoO24gPiAwOyAobiA+Pj49IDEpICYmIChzdHIgKz0gc3RyKSkgaWYgKG4gJiAxKSByZXMgKz0gc3RyO1xuICByZXR1cm4gcmVzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXJlcGVhdC5qc1xuLy8gbW9kdWxlIGlkID0gMTA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///109\n")},function(module,exports){eval("// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1zaWduLmpzPzczMDkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjI4IE1hdGguc2lnbih4KVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLnNpZ24gfHwgZnVuY3Rpb24gc2lnbih4KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgcmV0dXJuICh4ID0gK3gpID09IDAgfHwgeCAhPSB4ID8geCA6IHggPCAwID8gLTEgOiAxO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1zaWduLmpzXG4vLyBtb2R1bGUgaWQgPSAxMTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///110\n")},function(module,exports){eval("// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1leHBtMS5qcz9jN2JmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4xNCBNYXRoLmV4cG0xKHgpXG52YXIgJGV4cG0xID0gTWF0aC5leHBtMTtcbm1vZHVsZS5leHBvcnRzID0gKCEkZXhwbTFcbiAgLy8gT2xkIEZGIGJ1Z1xuICB8fCAkZXhwbTEoMTApID4gMjIwMjUuNDY1Nzk0ODA2NzE5IHx8ICRleHBtMSgxMCkgPCAyMjAyNS40NjU3OTQ4MDY3MTY1MTY4XG4gIC8vIFRvciBCcm93c2VyIGJ1Z1xuICB8fCAkZXhwbTEoLTJlLTE3KSAhPSAtMmUtMTdcbikgPyBmdW5jdGlvbiBleHBtMSh4KSB7XG4gIHJldHVybiAoeCA9ICt4KSA9PSAwID8geCA6IHggPiAtMWUtNiAmJiB4IDwgMWUtNiA/IHggKyB4ICogeCAvIDIgOiBNYXRoLmV4cCh4KSAtIDE7XG59IDogJGV4cG0xO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLWV4cG0xLmpzXG4vLyBtb2R1bGUgaWQgPSAxMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///111\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(33);\nvar defined = __webpack_require__(32);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWF0LmpzP2UzZGEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykge1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICAgIHZhciBpID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIGwgPSBzLmxlbmd0aDtcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoaSA8IDAgfHwgaSA+PSBsKSByZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWF0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///112\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(49);\nvar $export = __webpack_require__(0);\nvar redefine = __webpack_require__(19);\nvar hide = __webpack_require__(18);\nvar has = __webpack_require__(17);\nvar Iterators = __webpack_require__(63);\nvar $iterCreate = __webpack_require__(114);\nvar setToStringTag = __webpack_require__(61);\nvar getPrototypeOf = __webpack_require__(26);\nvar ITERATOR = __webpack_require__(8)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = (!BUGGY && $native) || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1kZWZpbmUuanM/YjljZCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgJGl0ZXJDcmVhdGUgPSByZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEJVR0dZID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpOyAvLyBTYWZhcmkgaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG52YXIgRkZfSVRFUkFUT1IgPSAnQEBpdGVyYXRvcic7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChCYXNlLCBOQU1FLCBDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpIHtcbiAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuICB2YXIgZ2V0TWV0aG9kID0gZnVuY3Rpb24gKGtpbmQpIHtcbiAgICBpZiAoIUJVR0dZICYmIGtpbmQgaW4gcHJvdG8pIHJldHVybiBwcm90b1traW5kXTtcbiAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICB9O1xuICB2YXIgVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICB2YXIgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTO1xuICB2YXIgVkFMVUVTX0JVRyA9IGZhbHNlO1xuICB2YXIgcHJvdG8gPSBCYXNlLnByb3RvdHlwZTtcbiAgdmFyICRuYXRpdmUgPSBwcm90b1tJVEVSQVRPUl0gfHwgcHJvdG9bRkZfSVRFUkFUT1JdIHx8IERFRkFVTFQgJiYgcHJvdG9bREVGQVVMVF07XG4gIHZhciAkZGVmYXVsdCA9ICghQlVHR1kgJiYgJG5hdGl2ZSkgfHwgZ2V0TWV0aG9kKERFRkFVTFQpO1xuICB2YXIgJGVudHJpZXMgPSBERUZBVUxUID8gIURFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZCgnZW50cmllcycpIDogdW5kZWZpbmVkO1xuICB2YXIgJGFueU5hdGl2ZSA9IE5BTUUgPT0gJ0FycmF5JyA/IHByb3RvLmVudHJpZXMgfHwgJG5hdGl2ZSA6ICRuYXRpdmU7XG4gIHZhciBtZXRob2RzLCBrZXksIEl0ZXJhdG9yUHJvdG90eXBlO1xuICAvLyBGaXggbmF0aXZlXG4gIGlmICgkYW55TmF0aXZlKSB7XG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZigkYW55TmF0aXZlLmNhbGwobmV3IEJhc2UoKSkpO1xuICAgIGlmIChJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBJdGVyYXRvclByb3RvdHlwZS5uZXh0KSB7XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvclByb3RvdHlwZSwgVEFHLCB0cnVlKTtcbiAgICAgIC8vIGZpeCBmb3Igc29tZSBvbGQgZW5naW5lc1xuICAgICAgaWYgKCFMSUJSQVJZICYmICFoYXMoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SKSkgaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgIH1cbiAgfVxuICAvLyBmaXggQXJyYXkje3ZhbHVlcywgQEBpdGVyYXRvcn0ubmFtZSBpbiBWOCAvIEZGXG4gIGlmIChERUZfVkFMVUVTICYmICRuYXRpdmUgJiYgJG5hdGl2ZS5uYW1lICE9PSBWQUxVRVMpIHtcbiAgICBWQUxVRVNfQlVHID0gdHJ1ZTtcbiAgICAkZGVmYXVsdCA9IGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuICRuYXRpdmUuY2FsbCh0aGlzKTsgfTtcbiAgfVxuICAvLyBEZWZpbmUgaXRlcmF0b3JcbiAgaWYgKCghTElCUkFSWSB8fCBGT1JDRUQpICYmIChCVUdHWSB8fCBWQUxVRVNfQlVHIHx8ICFwcm90b1tJVEVSQVRPUl0pKSB7XG4gICAgaGlkZShwcm90bywgSVRFUkFUT1IsICRkZWZhdWx0KTtcbiAgfVxuICAvLyBQbHVnIGZvciBsaWJyYXJ5XG4gIEl0ZXJhdG9yc1tOQU1FXSA9ICRkZWZhdWx0O1xuICBJdGVyYXRvcnNbVEFHXSA9IHJldHVyblRoaXM7XG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6ICRlbnRyaWVzXG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSBmb3IgKGtleSBpbiBtZXRob2RzKSB7XG4gICAgICBpZiAoIShrZXkgaW4gcHJvdG8pKSByZWRlZmluZShwcm90bywga2V5LCBtZXRob2RzW2tleV0pO1xuICAgIH0gZWxzZSAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChCVUdHWSB8fCBWQUxVRVNfQlVHKSwgTkFNRSwgbWV0aG9kcyk7XG4gIH1cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMTEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///113\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar create = __webpack_require__(52);\nvar descriptor = __webpack_require__(47);\nvar setToStringTag = __webpack_require__(61);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(18)(IteratorPrototype, __webpack_require__(8)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1jcmVhdGUuanM/MjExMiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIGRlc2NyaXB0b3IgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cbi8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19oaWRlJykoSXRlcmF0b3JQcm90b3R5cGUsIHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpIHtcbiAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7IG5leHQ6IGRlc2NyaXB0b3IoMSwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKENvbnN0cnVjdG9yLCBOQU1FICsgJyBJdGVyYXRvcicpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDExNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///114\n")},function(module,exports,__webpack_require__){eval("// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(83);\nvar defined = __webpack_require__(32);\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWNvbnRleHQuanM/OTJhYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBoZWxwZXIgZm9yIFN0cmluZyN7c3RhcnRzV2l0aCwgZW5kc1dpdGgsIGluY2x1ZGVzfVxudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgc2VhcmNoU3RyaW5nLCBOQU1FKSB7XG4gIGlmIChpc1JlZ0V4cChzZWFyY2hTdHJpbmcpKSB0aHJvdyBUeXBlRXJyb3IoJ1N0cmluZyMnICsgTkFNRSArIFwiIGRvZXNuJ3QgYWNjZXB0IHJlZ2V4IVwiKTtcbiAgcmV0dXJuIFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1jb250ZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///115\n")},function(module,exports,__webpack_require__){eval("var MATCH = __webpack_require__(8)('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZmFpbHMtaXMtcmVnZXhwLmpzP2Q0NDQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIE1BVENIID0gcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgdmFyIHJlID0gLy4vO1xuICB0cnkge1xuICAgICcvLi8nW0tFWV0ocmUpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlW01BVENIXSA9IGZhbHNlO1xuICAgICAgcmV0dXJuICEnLy4vJ1tLRVldKHJlKTtcbiAgICB9IGNhdGNoIChmKSB7IC8qIGVtcHR5ICovIH1cbiAgfSByZXR1cm4gdHJ1ZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZhaWxzLWlzLXJlZ2V4cC5qc1xuLy8gbW9kdWxlIGlkID0gMTE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///116\n")},function(module,exports,__webpack_require__){eval("// check on default Array iterator\nvar Iterators = __webpack_require__(63);\nvar ITERATOR = __webpack_require__(8)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qcz9mNmY2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3JcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAhPT0gdW5kZWZpbmVkICYmIChJdGVyYXRvcnMuQXJyYXkgPT09IGl0IHx8IEFycmF5UHJvdG9bSVRFUkFUT1JdID09PSBpdCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1hcnJheS1pdGVyLmpzXG4vLyBtb2R1bGUgaWQgPSAxMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///117\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $defineProperty = __webpack_require__(11);\nvar createDesc = __webpack_require__(47);\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY3JlYXRlLXByb3BlcnR5LmpzPzZkMjMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgaW5kZXgsIHZhbHVlKSB7XG4gIGlmIChpbmRleCBpbiBvYmplY3QpICRkZWZpbmVQcm9wZXJ0eS5mKG9iamVjdCwgaW5kZXgsIGNyZWF0ZURlc2MoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbaW5kZXhdID0gdmFsdWU7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jcmVhdGUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDExOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///118\n")},function(module,exports,__webpack_require__){eval("var classof = __webpack_require__(72);\nvar ITERATOR = __webpack_require__(8)('iterator');\nvar Iterators = __webpack_require__(63);\nmodule.exports = __webpack_require__(30).getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanM/NDg3NyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ICE9IHVuZGVmaW5lZCkgcmV0dXJuIGl0W0lURVJBVE9SXVxuICAgIHx8IGl0WydAQGl0ZXJhdG9yJ11cbiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanNcbi8vIG1vZHVsZSBpZCA9IDExOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///119\n")},function(module,exports,__webpack_require__){eval("// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = __webpack_require__(306);\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktc3BlY2llcy1jcmVhdGUuanM/YTY1NCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA5LjQuMi4zIEFycmF5U3BlY2llc0NyZWF0ZShvcmlnaW5hbEFycmF5LCBsZW5ndGgpXG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbCwgbGVuZ3RoKSB7XG4gIHJldHVybiBuZXcgKHNwZWNpZXNDb25zdHJ1Y3RvcihvcmlnaW5hbCkpKGxlbmd0aCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTIwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///120\n")},function(module,exports,__webpack_require__){"use strict";eval("// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n\nvar toObject = __webpack_require__(15);\nvar toAbsoluteIndex = __webpack_require__(51);\nvar toLength = __webpack_require__(12);\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktZmlsbC5qcz9jYzI2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIyLjEuMy42IEFycmF5LnByb3RvdHlwZS5maWxsKHZhbHVlLCBzdGFydCA9IDAsIGVuZCA9IHRoaXMubGVuZ3RoKVxuJ3VzZSBzdHJpY3QnO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmaWxsKHZhbHVlIC8qICwgc3RhcnQgPSAwLCBlbmQgPSBAbGVuZ3RoICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCBsZW5ndGgpO1xuICB2YXIgZW5kID0gYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gIHZhciBlbmRQb3MgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbmd0aCk7XG4gIHdoaWxlIChlbmRQb3MgPiBpbmRleCkgT1tpbmRleCsrXSA9IHZhbHVlO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWZpbGwuanNcbi8vIG1vZHVsZSBpZCA9IDEyMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///121\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar addToUnscopables = __webpack_require__(43);\nvar step = __webpack_require__(165);\nvar Iterators = __webpack_require__(63);\nvar toIObject = __webpack_require__(24);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(113)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanM/NWEwNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIHN0ZXAgPSByZXF1aXJlKCcuL19pdGVyLXN0ZXAnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG5cbi8vIDIyLjEuMy40IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzKClcbi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpXG4vLyAyMi4xLjMuMjkgQXJyYXkucHJvdG90eXBlLnZhbHVlcygpXG4vLyAyMi4xLjMuMzAgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgIC8vIGtpbmRcbi8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBraW5kID0gdGhpcy5faztcbiAgdmFyIGluZGV4ID0gdGhpcy5faSsrO1xuICBpZiAoIU8gfHwgaW5kZXggPj0gTy5sZW5ndGgpIHtcbiAgICB0aGlzLl90ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBzdGVwKDEpO1xuICB9XG4gIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHN0ZXAoMCwgaW5kZXgpO1xuICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHN0ZXAoMCwgT1tpbmRleF0pO1xuICByZXR1cm4gc3RlcCgwLCBbaW5kZXgsIE9baW5kZXhdXSk7XG59LCAndmFsdWVzJyk7XG5cbi8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJSAoOS40LjQuNiwgOS40LjQuNylcbkl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2tleXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpO1xuYWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gMTIyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///122\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(27);\nvar invoke = __webpack_require__(155);\nvar html = __webpack_require__(105);\nvar cel = __webpack_require__(101);\nvar global = __webpack_require__(4);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(28)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdGFzay5qcz80OWU4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBpbnZva2UgPSByZXF1aXJlKCcuL19pbnZva2UnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi9faHRtbCcpO1xudmFyIGNlbCA9IHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgc2V0VGFzayA9IGdsb2JhbC5zZXRJbW1lZGlhdGU7XG52YXIgY2xlYXJUYXNrID0gZ2xvYmFsLmNsZWFySW1tZWRpYXRlO1xudmFyIE1lc3NhZ2VDaGFubmVsID0gZ2xvYmFsLk1lc3NhZ2VDaGFubmVsO1xudmFyIERpc3BhdGNoID0gZ2xvYmFsLkRpc3BhdGNoO1xudmFyIGNvdW50ZXIgPSAwO1xudmFyIHF1ZXVlID0ge307XG52YXIgT05SRUFEWVNUQVRFQ0hBTkdFID0gJ29ucmVhZHlzdGF0ZWNoYW5nZSc7XG52YXIgZGVmZXIsIGNoYW5uZWwsIHBvcnQ7XG52YXIgcnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaWQgPSArdGhpcztcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICBpZiAocXVldWUuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgdmFyIGZuID0gcXVldWVbaWRdO1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gICAgZm4oKTtcbiAgfVxufTtcbnZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudCkge1xuICBydW4uY2FsbChldmVudC5kYXRhKTtcbn07XG4vLyBOb2RlLmpzIDAuOSsgJiBJRTEwKyBoYXMgc2V0SW1tZWRpYXRlLCBvdGhlcndpc2U6XG5pZiAoIXNldFRhc2sgfHwgIWNsZWFyVGFzaykge1xuICBzZXRUYXNrID0gZnVuY3Rpb24gc2V0SW1tZWRpYXRlKGZuKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTtcbiAgICB2YXIgaSA9IDE7XG4gICAgd2hpbGUgKGFyZ3VtZW50cy5sZW5ndGggPiBpKSBhcmdzLnB1c2goYXJndW1lbnRzW2krK10pO1xuICAgIHF1ZXVlWysrY291bnRlcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgICAgIGludm9rZSh0eXBlb2YgZm4gPT0gJ2Z1bmN0aW9uJyA/IGZuIDogRnVuY3Rpb24oZm4pLCBhcmdzKTtcbiAgICB9O1xuICAgIGRlZmVyKGNvdW50ZXIpO1xuICAgIHJldHVybiBjb3VudGVyO1xuICB9O1xuICBjbGVhclRhc2sgPSBmdW5jdGlvbiBjbGVhckltbWVkaWF0ZShpZCkge1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gIH07XG4gIC8vIE5vZGUuanMgMC44LVxuICBpZiAocmVxdWlyZSgnLi9fY29mJykocHJvY2VzcykgPT0gJ3Byb2Nlc3MnKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soY3R4KHJ1biwgaWQsIDEpKTtcbiAgICB9O1xuICAvLyBTcGhlcmUgKEpTIGdhbWUgZW5naW5lKSBEaXNwYXRjaCBBUElcbiAgfSBlbHNlIGlmIChEaXNwYXRjaCAmJiBEaXNwYXRjaC5ub3cpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgRGlzcGF0Y2gubm93KGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBNZXNzYWdlQ2hhbm5lbCwgaW5jbHVkZXMgV2ViV29ya2Vyc1xuICB9IGVsc2UgaWYgKE1lc3NhZ2VDaGFubmVsKSB7XG4gICAgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgIHBvcnQgPSBjaGFubmVsLnBvcnQyO1xuICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gbGlzdGVuZXI7XG4gICAgZGVmZXIgPSBjdHgocG9ydC5wb3N0TWVzc2FnZSwgcG9ydCwgMSk7XG4gIC8vIEJyb3dzZXJzIHdpdGggcG9zdE1lc3NhZ2UsIHNraXAgV2ViV29ya2Vyc1xuICAvLyBJRTggaGFzIHBvc3RNZXNzYWdlLCBidXQgaXQncyBzeW5jICYgdHlwZW9mIGl0cyBwb3N0TWVzc2FnZSBpcyAnb2JqZWN0J1xuICB9IGVsc2UgaWYgKGdsb2JhbC5hZGRFdmVudExpc3RlbmVyICYmIHR5cGVvZiBwb3N0TWVzc2FnZSA9PSAnZnVuY3Rpb24nICYmICFnbG9iYWwuaW1wb3J0U2NyaXB0cykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBnbG9iYWwucG9zdE1lc3NhZ2UoaWQgKyAnJywgJyonKTtcbiAgICB9O1xuICAgIGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbGlzdGVuZXIsIGZhbHNlKTtcbiAgLy8gSUU4LVxuICB9IGVsc2UgaWYgKE9OUkVBRFlTVEFURUNIQU5HRSBpbiBjZWwoJ3NjcmlwdCcpKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGh0bWwuYXBwZW5kQ2hpbGQoY2VsKCdzY3JpcHQnKSlbT05SRUFEWVNUQVRFQ0hBTkdFXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaHRtbC5yZW1vdmVDaGlsZCh0aGlzKTtcbiAgICAgICAgcnVuLmNhbGwoaWQpO1xuICAgICAgfTtcbiAgICB9O1xuICAvLyBSZXN0IG9sZCBicm93c2Vyc1xuICB9IGVsc2Uge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBzZXRUaW1lb3V0KGN0eChydW4sIGlkLCAxKSwgMCk7XG4gICAgfTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0VGFzayxcbiAgY2xlYXI6IGNsZWFyVGFza1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gMTIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///123\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar macrotask = __webpack_require__(123).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(28)(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n var promise = Promise.resolve();\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWljcm90YXNrLmpzPzgzN2UiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIG1hY3JvdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKS5zZXQ7XG52YXIgT2JzZXJ2ZXIgPSBnbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xudmFyIGlzTm9kZSA9IHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBoZWFkLCBsYXN0LCBub3RpZnk7XG5cbiAgdmFyIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnQsIGZuO1xuICAgIGlmIChpc05vZGUgJiYgKHBhcmVudCA9IHByb2Nlc3MuZG9tYWluKSkgcGFyZW50LmV4aXQoKTtcbiAgICB3aGlsZSAoaGVhZCkge1xuICAgICAgZm4gPSBoZWFkLmZuO1xuICAgICAgaGVhZCA9IGhlYWQubmV4dDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZuKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChoZWFkKSBub3RpZnkoKTtcbiAgICAgICAgZWxzZSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gbGFzdCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocGFyZW50KSBwYXJlbnQuZW50ZXIoKTtcbiAgfTtcblxuICAvLyBOb2RlLmpzXG4gIGlmIChpc05vZGUpIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGZsdXNoKTtcbiAgICB9O1xuICAvLyBicm93c2VycyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXIsIGV4Y2VwdCBpT1MgU2FmYXJpIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMzOVxuICB9IGVsc2UgaWYgKE9ic2VydmVyICYmICEoZ2xvYmFsLm5hdmlnYXRvciAmJiBnbG9iYWwubmF2aWdhdG9yLnN0YW5kYWxvbmUpKSB7XG4gICAgdmFyIHRvZ2dsZSA9IHRydWU7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XG4gICAgbmV3IE9ic2VydmVyKGZsdXNoKS5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBub2RlLmRhdGEgPSB0b2dnbGUgPSAhdG9nZ2xlO1xuICAgIH07XG4gIC8vIGVudmlyb25tZW50cyB3aXRoIG1heWJlIG5vbi1jb21wbGV0ZWx5IGNvcnJlY3QsIGJ1dCBleGlzdGVudCBQcm9taXNlXG4gIH0gZWxzZSBpZiAoUHJvbWlzZSAmJiBQcm9taXNlLnJlc29sdmUpIHtcbiAgICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb21pc2UudGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcbiAgLy8gLSBzZXRJbW1lZGlhdGVcbiAgLy8gLSBNZXNzYWdlQ2hhbm5lbFxuICAvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIHN0cmFuZ2UgSUUgKyB3ZWJwYWNrIGRldiBzZXJ2ZXIgYnVnIC0gdXNlIC5jYWxsKGdsb2JhbClcbiAgICAgIG1hY3JvdGFzay5jYWxsKGdsb2JhbCwgZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgdmFyIHRhc2sgPSB7IGZuOiBmbiwgbmV4dDogdW5kZWZpbmVkIH07XG4gICAgaWYgKGxhc3QpIGxhc3QubmV4dCA9IHRhc2s7XG4gICAgaWYgKCFoZWFkKSB7XG4gICAgICBoZWFkID0gdGFzaztcbiAgICAgIG5vdGlmeSgpO1xuICAgIH0gbGFzdCA9IHRhc2s7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19taWNyb3Rhc2suanNcbi8vIG1vZHVsZSBpZCA9IDEyNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///124\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(16);\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qcz9jM2EwIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDI1LjQuMS41IE5ld1Byb21pc2VDYXBhYmlsaXR5KEMpXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xuXG5mdW5jdGlvbiBQcm9taXNlQ2FwYWJpbGl0eShDKSB7XG4gIHZhciByZXNvbHZlLCByZWplY3Q7XG4gIHRoaXMucHJvbWlzZSA9IG5ldyBDKGZ1bmN0aW9uICgkJHJlc29sdmUsICQkcmVqZWN0KSB7XG4gICAgaWYgKHJlc29sdmUgIT09IHVuZGVmaW5lZCB8fCByZWplY3QgIT09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKCdCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvcicpO1xuICAgIHJlc29sdmUgPSAkJHJlc29sdmU7XG4gICAgcmVqZWN0ID0gJCRyZWplY3Q7XG4gIH0pO1xuICB0aGlzLnJlc29sdmUgPSBhRnVuY3Rpb24ocmVzb2x2ZSk7XG4gIHRoaXMucmVqZWN0ID0gYUZ1bmN0aW9uKHJlamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiAoQykge1xuICByZXR1cm4gbmV3IFByb21pc2VDYXBhYmlsaXR5KEMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qc1xuLy8gbW9kdWxlIGlkID0gMTI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///125\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(4);\nvar DESCRIPTORS = __webpack_require__(10);\nvar LIBRARY = __webpack_require__(49);\nvar $typed = __webpack_require__(89);\nvar hide = __webpack_require__(18);\nvar redefineAll = __webpack_require__(57);\nvar fails = __webpack_require__(5);\nvar anInstance = __webpack_require__(55);\nvar toInteger = __webpack_require__(33);\nvar toLength = __webpack_require__(12);\nvar toIndex = __webpack_require__(174);\nvar gOPN = __webpack_require__(53).f;\nvar dP = __webpack_require__(11).f;\nvar arrayFill = __webpack_require__(121);\nvar setToStringTag = __webpack_require__(61);\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdHlwZWQtYnVmZmVyLmpzPzJlYjciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyICR0eXBlZCA9IHJlcXVpcmUoJy4vX3R5cGVkJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0luZGV4ID0gcmVxdWlyZSgnLi9fdG8taW5kZXgnKTtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBhcnJheUZpbGwgPSByZXF1aXJlKCcuL19hcnJheS1maWxsJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIEFSUkFZX0JVRkZFUiA9ICdBcnJheUJ1ZmZlcic7XG52YXIgREFUQV9WSUVXID0gJ0RhdGFWaWV3JztcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBXUk9OR19MRU5HVEggPSAnV3JvbmcgbGVuZ3RoISc7XG52YXIgV1JPTkdfSU5ERVggPSAnV3JvbmcgaW5kZXghJztcbnZhciAkQXJyYXlCdWZmZXIgPSBnbG9iYWxbQVJSQVlfQlVGRkVSXTtcbnZhciAkRGF0YVZpZXcgPSBnbG9iYWxbREFUQV9WSUVXXTtcbnZhciBNYXRoID0gZ2xvYmFsLk1hdGg7XG52YXIgUmFuZ2VFcnJvciA9IGdsb2JhbC5SYW5nZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNoYWRvdy1yZXN0cmljdGVkLW5hbWVzXG52YXIgSW5maW5pdHkgPSBnbG9iYWwuSW5maW5pdHk7XG52YXIgQmFzZUJ1ZmZlciA9ICRBcnJheUJ1ZmZlcjtcbnZhciBhYnMgPSBNYXRoLmFicztcbnZhciBwb3cgPSBNYXRoLnBvdztcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgbG9nID0gTWF0aC5sb2c7XG52YXIgTE4yID0gTWF0aC5MTjI7XG52YXIgQlVGRkVSID0gJ2J1ZmZlcic7XG52YXIgQllURV9MRU5HVEggPSAnYnl0ZUxlbmd0aCc7XG52YXIgQllURV9PRkZTRVQgPSAnYnl0ZU9mZnNldCc7XG52YXIgJEJVRkZFUiA9IERFU0NSSVBUT1JTID8gJ19iJyA6IEJVRkZFUjtcbnZhciAkTEVOR1RIID0gREVTQ1JJUFRPUlMgPyAnX2wnIDogQllURV9MRU5HVEg7XG52YXIgJE9GRlNFVCA9IERFU0NSSVBUT1JTID8gJ19vJyA6IEJZVEVfT0ZGU0VUO1xuXG4vLyBJRUVFNzU0IGNvbnZlcnNpb25zIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvaWVlZTc1NFxuZnVuY3Rpb24gcGFja0lFRUU3NTQodmFsdWUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgYnVmZmVyID0gbmV3IEFycmF5KG5CeXRlcyk7XG4gIHZhciBlTGVuID0gbkJ5dGVzICogOCAtIG1MZW4gLSAxO1xuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMTtcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxO1xuICB2YXIgcnQgPSBtTGVuID09PSAyMyA/IHBvdygyLCAtMjQpIC0gcG93KDIsIC03NykgOiAwO1xuICB2YXIgaSA9IDA7XG4gIHZhciBzID0gdmFsdWUgPCAwIHx8IHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDAgPyAxIDogMDtcbiAgdmFyIGUsIG0sIGM7XG4gIHZhbHVlID0gYWJzKHZhbHVlKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICBpZiAodmFsdWUgIT0gdmFsdWUgfHwgdmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIG0gPSB2YWx1ZSAhPSB2YWx1ZSA/IDEgOiAwO1xuICAgIGUgPSBlTWF4O1xuICB9IGVsc2Uge1xuICAgIGUgPSBmbG9vcihsb2codmFsdWUpIC8gTE4yKTtcbiAgICBpZiAodmFsdWUgKiAoYyA9IHBvdygyLCAtZSkpIDwgMSkge1xuICAgICAgZS0tO1xuICAgICAgYyAqPSAyO1xuICAgIH1cbiAgICBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIHZhbHVlICs9IHJ0IC8gYztcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgKz0gcnQgKiBwb3coMiwgMSAtIGVCaWFzKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlICogYyA+PSAyKSB7XG4gICAgICBlKys7XG4gICAgICBjIC89IDI7XG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gZU1heCkge1xuICAgICAgbSA9IDA7XG4gICAgICBlID0gZU1heDtcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKHZhbHVlICogYyAtIDEpICogcG93KDIsIG1MZW4pO1xuICAgICAgZSA9IGUgKyBlQmlhcztcbiAgICB9IGVsc2Uge1xuICAgICAgbSA9IHZhbHVlICogcG93KDIsIGVCaWFzIC0gMSkgKiBwb3coMiwgbUxlbik7XG4gICAgICBlID0gMDtcbiAgICB9XG4gIH1cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW2krK10gPSBtICYgMjU1LCBtIC89IDI1NiwgbUxlbiAtPSA4KTtcbiAgZSA9IGUgPDwgbUxlbiB8IG07XG4gIGVMZW4gKz0gbUxlbjtcbiAgZm9yICg7IGVMZW4gPiAwOyBidWZmZXJbaSsrXSA9IGUgJiAyNTUsIGUgLz0gMjU2LCBlTGVuIC09IDgpO1xuICBidWZmZXJbLS1pXSB8PSBzICogMTI4O1xuICByZXR1cm4gYnVmZmVyO1xufVxuZnVuY3Rpb24gdW5wYWNrSUVFRTc1NChidWZmZXIsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMTtcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDE7XG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMTtcbiAgdmFyIG5CaXRzID0gZUxlbiAtIDc7XG4gIHZhciBpID0gbkJ5dGVzIC0gMTtcbiAgdmFyIHMgPSBidWZmZXJbaS0tXTtcbiAgdmFyIGUgPSBzICYgMTI3O1xuICB2YXIgbTtcbiAgcyA+Pj0gNztcbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IGUgKiAyNTYgKyBidWZmZXJbaV0sIGktLSwgbkJpdHMgLT0gOCk7XG4gIG0gPSBlICYgKDEgPDwgLW5CaXRzKSAtIDE7XG4gIGUgPj49IC1uQml0cztcbiAgbkJpdHMgKz0gbUxlbjtcbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IG0gKiAyNTYgKyBidWZmZXJbaV0sIGktLSwgbkJpdHMgLT0gOCk7XG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhcztcbiAgfSBlbHNlIGlmIChlID09PSBlTWF4KSB7XG4gICAgcmV0dXJuIG0gPyBOYU4gOiBzID8gLUluZmluaXR5IDogSW5maW5pdHk7XG4gIH0gZWxzZSB7XG4gICAgbSA9IG0gKyBwb3coMiwgbUxlbik7XG4gICAgZSA9IGUgLSBlQmlhcztcbiAgfSByZXR1cm4gKHMgPyAtMSA6IDEpICogbSAqIHBvdygyLCBlIC0gbUxlbik7XG59XG5cbmZ1bmN0aW9uIHVucGFja0kzMihieXRlcykge1xuICByZXR1cm4gYnl0ZXNbM10gPDwgMjQgfCBieXRlc1syXSA8PCAxNiB8IGJ5dGVzWzFdIDw8IDggfCBieXRlc1swXTtcbn1cbmZ1bmN0aW9uIHBhY2tJOChpdCkge1xuICByZXR1cm4gW2l0ICYgMHhmZl07XG59XG5mdW5jdGlvbiBwYWNrSTE2KGl0KSB7XG4gIHJldHVybiBbaXQgJiAweGZmLCBpdCA+PiA4ICYgMHhmZl07XG59XG5mdW5jdGlvbiBwYWNrSTMyKGl0KSB7XG4gIHJldHVybiBbaXQgJiAweGZmLCBpdCA+PiA4ICYgMHhmZiwgaXQgPj4gMTYgJiAweGZmLCBpdCA+PiAyNCAmIDB4ZmZdO1xufVxuZnVuY3Rpb24gcGFja0Y2NChpdCkge1xuICByZXR1cm4gcGFja0lFRUU3NTQoaXQsIDUyLCA4KTtcbn1cbmZ1bmN0aW9uIHBhY2tGMzIoaXQpIHtcbiAgcmV0dXJuIHBhY2tJRUVFNzU0KGl0LCAyMywgNCk7XG59XG5cbmZ1bmN0aW9uIGFkZEdldHRlcihDLCBrZXksIGludGVybmFsKSB7XG4gIGRQKENbUFJPVE9UWVBFXSwga2V5LCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpc1tpbnRlcm5hbF07IH0gfSk7XG59XG5cbmZ1bmN0aW9uIGdldCh2aWV3LCBieXRlcywgaW5kZXgsIGlzTGl0dGxlRW5kaWFuKSB7XG4gIHZhciBudW1JbmRleCA9ICtpbmRleDtcbiAgdmFyIGludEluZGV4ID0gdG9JbmRleChudW1JbmRleCk7XG4gIGlmIChpbnRJbmRleCArIGJ5dGVzID4gdmlld1skTEVOR1RIXSkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19JTkRFWCk7XG4gIHZhciBzdG9yZSA9IHZpZXdbJEJVRkZFUl0uX2I7XG4gIHZhciBzdGFydCA9IGludEluZGV4ICsgdmlld1skT0ZGU0VUXTtcbiAgdmFyIHBhY2sgPSBzdG9yZS5zbGljZShzdGFydCwgc3RhcnQgKyBieXRlcyk7XG4gIHJldHVybiBpc0xpdHRsZUVuZGlhbiA/IHBhY2sgOiBwYWNrLnJldmVyc2UoKTtcbn1cbmZ1bmN0aW9uIHNldCh2aWV3LCBieXRlcywgaW5kZXgsIGNvbnZlcnNpb24sIHZhbHVlLCBpc0xpdHRsZUVuZGlhbikge1xuICB2YXIgbnVtSW5kZXggPSAraW5kZXg7XG4gIHZhciBpbnRJbmRleCA9IHRvSW5kZXgobnVtSW5kZXgpO1xuICBpZiAoaW50SW5kZXggKyBieXRlcyA+IHZpZXdbJExFTkdUSF0pIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfSU5ERVgpO1xuICB2YXIgc3RvcmUgPSB2aWV3WyRCVUZGRVJdLl9iO1xuICB2YXIgc3RhcnQgPSBpbnRJbmRleCArIHZpZXdbJE9GRlNFVF07XG4gIHZhciBwYWNrID0gY29udmVyc2lvbigrdmFsdWUpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzOyBpKyspIHN0b3JlW3N0YXJ0ICsgaV0gPSBwYWNrW2lzTGl0dGxlRW5kaWFuID8gaSA6IGJ5dGVzIC0gaSAtIDFdO1xufVxuXG5pZiAoISR0eXBlZC5BQlYpIHtcbiAgJEFycmF5QnVmZmVyID0gZnVuY3Rpb24gQXJyYXlCdWZmZXIobGVuZ3RoKSB7XG4gICAgYW5JbnN0YW5jZSh0aGlzLCAkQXJyYXlCdWZmZXIsIEFSUkFZX0JVRkZFUik7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0b0luZGV4KGxlbmd0aCk7XG4gICAgdGhpcy5fYiA9IGFycmF5RmlsbC5jYWxsKG5ldyBBcnJheShieXRlTGVuZ3RoKSwgMCk7XG4gICAgdGhpc1skTEVOR1RIXSA9IGJ5dGVMZW5ndGg7XG4gIH07XG5cbiAgJERhdGFWaWV3ID0gZnVuY3Rpb24gRGF0YVZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSB7XG4gICAgYW5JbnN0YW5jZSh0aGlzLCAkRGF0YVZpZXcsIERBVEFfVklFVyk7XG4gICAgYW5JbnN0YW5jZShidWZmZXIsICRBcnJheUJ1ZmZlciwgREFUQV9WSUVXKTtcbiAgICB2YXIgYnVmZmVyTGVuZ3RoID0gYnVmZmVyWyRMRU5HVEhdO1xuICAgIHZhciBvZmZzZXQgPSB0b0ludGVnZXIoYnl0ZU9mZnNldCk7XG4gICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ID4gYnVmZmVyTGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBvZmZzZXQhJyk7XG4gICAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPT09IHVuZGVmaW5lZCA/IGJ1ZmZlckxlbmd0aCAtIG9mZnNldCA6IHRvTGVuZ3RoKGJ5dGVMZW5ndGgpO1xuICAgIGlmIChvZmZzZXQgKyBieXRlTGVuZ3RoID4gYnVmZmVyTGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgdGhpc1skQlVGRkVSXSA9IGJ1ZmZlcjtcbiAgICB0aGlzWyRPRkZTRVRdID0gb2Zmc2V0O1xuICAgIHRoaXNbJExFTkdUSF0gPSBieXRlTGVuZ3RoO1xuICB9O1xuXG4gIGlmIChERVNDUklQVE9SUykge1xuICAgIGFkZEdldHRlcigkQXJyYXlCdWZmZXIsIEJZVEVfTEVOR1RILCAnX2wnKTtcbiAgICBhZGRHZXR0ZXIoJERhdGFWaWV3LCBCVUZGRVIsICdfYicpO1xuICAgIGFkZEdldHRlcigkRGF0YVZpZXcsIEJZVEVfTEVOR1RILCAnX2wnKTtcbiAgICBhZGRHZXR0ZXIoJERhdGFWaWV3LCBCWVRFX09GRlNFVCwgJ19vJyk7XG4gIH1cblxuICByZWRlZmluZUFsbCgkRGF0YVZpZXdbUFJPVE9UWVBFXSwge1xuICAgIGdldEludDg6IGZ1bmN0aW9uIGdldEludDgoYnl0ZU9mZnNldCkge1xuICAgICAgcmV0dXJuIGdldCh0aGlzLCAxLCBieXRlT2Zmc2V0KVswXSA8PCAyNCA+PiAyNDtcbiAgICB9LFxuICAgIGdldFVpbnQ4OiBmdW5jdGlvbiBnZXRVaW50OChieXRlT2Zmc2V0KSB7XG4gICAgICByZXR1cm4gZ2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQpWzBdO1xuICAgIH0sXG4gICAgZ2V0SW50MTY6IGZ1bmN0aW9uIGdldEludDE2KGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHZhciBieXRlcyA9IGdldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pO1xuICAgICAgcmV0dXJuIChieXRlc1sxXSA8PCA4IHwgYnl0ZXNbMF0pIDw8IDE2ID4+IDE2O1xuICAgIH0sXG4gICAgZ2V0VWludDE2OiBmdW5jdGlvbiBnZXRVaW50MTYoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgdmFyIGJ5dGVzID0gZ2V0KHRoaXMsIDIsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50c1sxXSk7XG4gICAgICByZXR1cm4gYnl0ZXNbMV0gPDwgOCB8IGJ5dGVzWzBdO1xuICAgIH0sXG4gICAgZ2V0SW50MzI6IGZ1bmN0aW9uIGdldEludDMyKGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHJldHVybiB1bnBhY2tJMzIoZ2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50c1sxXSkpO1xuICAgIH0sXG4gICAgZ2V0VWludDMyOiBmdW5jdGlvbiBnZXRVaW50MzIoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgcmV0dXJuIHVucGFja0kzMihnZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKSkgPj4+IDA7XG4gICAgfSxcbiAgICBnZXRGbG9hdDMyOiBmdW5jdGlvbiBnZXRGbG9hdDMyKGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHJldHVybiB1bnBhY2tJRUVFNzU0KGdldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pLCAyMywgNCk7XG4gICAgfSxcbiAgICBnZXRGbG9hdDY0OiBmdW5jdGlvbiBnZXRGbG9hdDY0KGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHJldHVybiB1bnBhY2tJRUVFNzU0KGdldCh0aGlzLCA4LCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pLCA1MiwgOCk7XG4gICAgfSxcbiAgICBzZXRJbnQ4OiBmdW5jdGlvbiBzZXRJbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKSB7XG4gICAgICBzZXQodGhpcywgMSwgYnl0ZU9mZnNldCwgcGFja0k4LCB2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXRVaW50ODogZnVuY3Rpb24gc2V0VWludDgoYnl0ZU9mZnNldCwgdmFsdWUpIHtcbiAgICAgIHNldCh0aGlzLCAxLCBieXRlT2Zmc2V0LCBwYWNrSTgsIHZhbHVlKTtcbiAgICB9LFxuICAgIHNldEludDE2OiBmdW5jdGlvbiBzZXRJbnQxNihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDIsIGJ5dGVPZmZzZXQsIHBhY2tJMTYsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH0sXG4gICAgc2V0VWludDE2OiBmdW5jdGlvbiBzZXRVaW50MTYoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBwYWNrSTE2LCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9LFxuICAgIHNldEludDMyOiBmdW5jdGlvbiBzZXRJbnQzMihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIHBhY2tJMzIsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH0sXG4gICAgc2V0VWludDMyOiBmdW5jdGlvbiBzZXRVaW50MzIoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBwYWNrSTMyLCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9LFxuICAgIHNldEZsb2F0MzI6IGZ1bmN0aW9uIHNldEZsb2F0MzIoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBwYWNrRjMyLCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9LFxuICAgIHNldEZsb2F0NjQ6IGZ1bmN0aW9uIHNldEZsb2F0NjQoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCA4LCBieXRlT2Zmc2V0LCBwYWNrRjY0LCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9XG4gIH0pO1xufSBlbHNlIHtcbiAgaWYgKCFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgJEFycmF5QnVmZmVyKDEpO1xuICB9KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIG5ldyAkQXJyYXlCdWZmZXIoLTEpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICB9KSB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgbmV3ICRBcnJheUJ1ZmZlcigpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIG5ldyAkQXJyYXlCdWZmZXIoMS41KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBuZXcgJEFycmF5QnVmZmVyKE5hTik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgcmV0dXJuICRBcnJheUJ1ZmZlci5uYW1lICE9IEFSUkFZX0JVRkZFUjtcbiAgfSkpIHtcbiAgICAkQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiBBcnJheUJ1ZmZlcihsZW5ndGgpIHtcbiAgICAgIGFuSW5zdGFuY2UodGhpcywgJEFycmF5QnVmZmVyKTtcbiAgICAgIHJldHVybiBuZXcgQmFzZUJ1ZmZlcih0b0luZGV4KGxlbmd0aCkpO1xuICAgIH07XG4gICAgdmFyIEFycmF5QnVmZmVyUHJvdG8gPSAkQXJyYXlCdWZmZXJbUFJPVE9UWVBFXSA9IEJhc2VCdWZmZXJbUFJPVE9UWVBFXTtcbiAgICBmb3IgKHZhciBrZXlzID0gZ09QTihCYXNlQnVmZmVyKSwgaiA9IDAsIGtleTsga2V5cy5sZW5ndGggPiBqOykge1xuICAgICAgaWYgKCEoKGtleSA9IGtleXNbaisrXSkgaW4gJEFycmF5QnVmZmVyKSkgaGlkZSgkQXJyYXlCdWZmZXIsIGtleSwgQmFzZUJ1ZmZlcltrZXldKTtcbiAgICB9XG4gICAgaWYgKCFMSUJSQVJZKSBBcnJheUJ1ZmZlclByb3RvLmNvbnN0cnVjdG9yID0gJEFycmF5QnVmZmVyO1xuICB9XG4gIC8vIGlPUyBTYWZhcmkgNy54IGJ1Z1xuICB2YXIgdmlldyA9IG5ldyAkRGF0YVZpZXcobmV3ICRBcnJheUJ1ZmZlcigyKSk7XG4gIHZhciAkc2V0SW50OCA9ICREYXRhVmlld1tQUk9UT1RZUEVdLnNldEludDg7XG4gIHZpZXcuc2V0SW50OCgwLCAyMTQ3NDgzNjQ4KTtcbiAgdmlldy5zZXRJbnQ4KDEsIDIxNDc0ODM2NDkpO1xuICBpZiAodmlldy5nZXRJbnQ4KDApIHx8ICF2aWV3LmdldEludDgoMSkpIHJlZGVmaW5lQWxsKCREYXRhVmlld1tQUk9UT1RZUEVdLCB7XG4gICAgc2V0SW50ODogZnVuY3Rpb24gc2V0SW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgJHNldEludDguY2FsbCh0aGlzLCBieXRlT2Zmc2V0LCB2YWx1ZSA8PCAyNCA+PiAyNCk7XG4gICAgfSxcbiAgICBzZXRVaW50ODogZnVuY3Rpb24gc2V0VWludDgoYnl0ZU9mZnNldCwgdmFsdWUpIHtcbiAgICAgICRzZXRJbnQ4LmNhbGwodGhpcywgYnl0ZU9mZnNldCwgdmFsdWUgPDwgMjQgPj4gMjQpO1xuICAgIH1cbiAgfSwgdHJ1ZSk7XG59XG5zZXRUb1N0cmluZ1RhZygkQXJyYXlCdWZmZXIsIEFSUkFZX0JVRkZFUik7XG5zZXRUb1N0cmluZ1RhZygkRGF0YVZpZXcsIERBVEFfVklFVyk7XG5oaWRlKCREYXRhVmlld1tQUk9UT1RZUEVdLCAkdHlwZWQuVklFVywgdHJ1ZSk7XG5leHBvcnRzW0FSUkFZX0JVRkZFUl0gPSAkQXJyYXlCdWZmZXI7XG5leHBvcnRzW0RBVEFfVklFV10gPSAkRGF0YVZpZXc7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3R5cGVkLWJ1ZmZlci5qc1xuLy8gbW9kdWxlIGlkID0gMTI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///126\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdXNlci1hZ2VudC5qcz9lMzVjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBuYXZpZ2F0b3IgPSBnbG9iYWwubmF2aWdhdG9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IudXNlckFnZW50IHx8ICcnO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL191c2VyLWFnZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAxMjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///127\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $at = __webpack_require__(418)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(183)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanM/Y2QwNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbi8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIgaW5kZXggPSB0aGlzLl9pO1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBPLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG4gIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDEyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///128\n")},function(module,exports){eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzPzUyZTEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW50ZWdlci5qc1xuLy8gbW9kdWxlIGlkID0gMTI5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///129\n")},function(module,exports){eval('// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError("Can\'t call method on " + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZWZpbmVkLmpzP2U3NjgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZWZpbmVkLmpzXG4vLyBtb2R1bGUgaWQgPSAxMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///130\n')},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(36);\nvar document = __webpack_require__(22).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzPzM4ZGQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTMxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///131\n")},function(module,exports,__webpack_require__){eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(36);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanM/MzI2MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMSBUb1ByaW1pdGl2ZShpbnB1dCBbLCBQcmVmZXJyZWRUeXBlXSlcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzXG4vLyBtb2R1bGUgaWQgPSAxMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///132\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(41);\nvar dPs = __webpack_require__(420);\nvar enumBugKeys = __webpack_require__(137);\nvar IE_PROTO = __webpack_require__(135)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(131)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(188).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzPzYyODYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBkUHMgPSByZXF1aXJlKCcuL19vYmplY3QtZHBzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgRW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBjcmVhdGVEaWN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdpZnJhbWUnKTtcbiAgdmFyIGkgPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIGd0ID0gJz4nO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICByZXF1aXJlKCcuL19odG1sJykuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGktLSkgZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tpXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZFBzKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///133\n")},function(module,exports,__webpack_require__){eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(129);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1sZW5ndGguanM/NDExMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1sZW5ndGguanNcbi8vIG1vZHVsZSBpZCA9IDEzNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///134\n")},function(module,exports,__webpack_require__){eval("var shared = __webpack_require__(136)('keys');\nvar uid = __webpack_require__(95);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzPzZiMWQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCdrZXlzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIHNoYXJlZFtrZXldIHx8IChzaGFyZWRba2V5XSA9IHVpZChrZXkpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2hhcmVkLWtleS5qc1xuLy8gbW9kdWxlIGlkID0gMTM1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///135\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(22);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanM/N2JjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB7fSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qc1xuLy8gbW9kdWxlIGlkID0gMTM2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///136\n")},function(module,exports){eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzP2M2NzciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSUUgOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSAoXG4gICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnXG4pLnNwbGl0KCcsJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1idWcta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///137\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(94);\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzP2E4MDQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gMjUuNC4xLjUgTmV3UHJvbWlzZUNhcGFiaWxpdHkoQylcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5cbmZ1bmN0aW9uIFByb21pc2VDYXBhYmlsaXR5KEMpIHtcbiAgdmFyIHJlc29sdmUsIHJlamVjdDtcbiAgdGhpcy5wcm9taXNlID0gbmV3IEMoZnVuY3Rpb24gKCQkcmVzb2x2ZSwgJCRyZWplY3QpIHtcbiAgICBpZiAocmVzb2x2ZSAhPT0gdW5kZWZpbmVkIHx8IHJlamVjdCAhPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoJ0JhZCBQcm9taXNlIGNvbnN0cnVjdG9yJyk7XG4gICAgcmVzb2x2ZSA9ICQkcmVzb2x2ZTtcbiAgICByZWplY3QgPSAkJHJlamVjdDtcbiAgfSk7XG4gIHRoaXMucmVzb2x2ZSA9IGFGdW5jdGlvbihyZXNvbHZlKTtcbiAgdGhpcy5yZWplY3QgPSBhRnVuY3Rpb24ocmVqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIChDKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanNcbi8vIG1vZHVsZSBpZCA9IDEzOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///138\n")},function(module,exports){eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wcy5qcz9kNjQ0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcHMuanNcbi8vIG1vZHVsZSBpZCA9IDEzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///139\n")},function(module,exports,__webpack_require__){eval("exports.f = __webpack_require__(23);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZXh0LmpzPzJhMWUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fd2tzJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLWV4dC5qc1xuLy8gbW9kdWxlIGlkID0gMTQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///140\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(22);\nvar core = __webpack_require__(13);\nvar LIBRARY = __webpack_require__(93);\nvar wksExt = __webpack_require__(140);\nvar defineProperty = __webpack_require__(40).f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZGVmaW5lLmpzPzcyYjkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgJFN5bWJvbCA9IGNvcmUuU3ltYm9sIHx8IChjb3JlLlN5bWJvbCA9IExJQlJBUlkgPyB7fSA6IGdsb2JhbC5TeW1ib2wgfHwge30pO1xuICBpZiAobmFtZS5jaGFyQXQoMCkgIT0gJ18nICYmICEobmFtZSBpbiAkU3ltYm9sKSkgZGVmaW5lUHJvcGVydHkoJFN5bWJvbCwgbmFtZSwgeyB2YWx1ZTogd2tzRXh0LmYobmFtZSkgfSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1kZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDE0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///141\n")},function(module,exports,__webpack_require__){eval("var pIE = __webpack_require__(77);\nvar createDesc = __webpack_require__(73);\nvar toIObject = __webpack_require__(45);\nvar toPrimitive = __webpack_require__(132);\nvar has = __webpack_require__(59);\nvar IE8_DOM_DEFINE = __webpack_require__(184);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(44) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wZC5qcz8yY2E2Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBnT1BEIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSU9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGdPUEQoTywgUCk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzKE8sIFApKSByZXR1cm4gY3JlYXRlRGVzYyghcElFLmYuY2FsbChPLCBQKSwgT1tQXSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzXG4vLyBtb2R1bGUgaWQgPSAxNDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///142\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\nvar runtimeUtils = exports.runtimeUtils = {\n runtimeDescriptor: {},\n runtimeCapabilities: {\n constraints: {}\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ydW50aW1lL3J1bnRpbWVVdGlscy5qcz9iYWE0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBsZXQgcnVudGltZVV0aWxzID0ge1xyXG4gIHJ1bnRpbWVEZXNjcmlwdG9yOiB7fSxcclxuICBydW50aW1lQ2FwYWJpbGl0aWVzOiB7XHJcbiAgICBjb25zdHJhaW50czoge31cclxuICB9XHJcbn07XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcnVudGltZS9ydW50aW1lVXRpbHMuanMiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUZBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///143\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar runtimeConfiguration = exports.runtimeConfiguration = {\n\n // TODO this should be changed with the definition used for indexeddb\n // look at: https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore\n // Now we are using the definition for Dexie; (http://dexie.org/docs/Version/Version.stores())\n storageSchemas: {\n capabilities: {\n capabilities: 'key,version,value'\n },\n subscriptions: {\n subscriptions: 'key,version,value'\n },\n runtime: {\n 'runtime:URL': 'key,version,value',\n 'p2pHandler:URL': 'key,version,value'\n },\n registry: {\n 'registry:DataObjectURLs': 'key,version,value',\n 'registry:HypertyURLs': 'key,version,value'\n },\n cryptoManager: {\n userAsymmetricKey: 'key,version,value',\n dataObjectSessionKeys: 'key,version,value'\n },\n identity: {\n accessTokens: 'key,version,value',\n identities: 'userURL, userProfile.email, userProfile.userURL, userProfile.name'\n },\n runtimeCatalogue: {\n runtimeCatalogue: '&cguid, accessControlPolicy, constraints, dataObjects, hypertyType, objectName, sourcePackage, version'\n },\n policy: {\n 'rethink:activePolicy': 'key,version,value',\n 'rethink:groups': 'key,version,value',\n 'rethink:userPolicies': 'key,version,value',\n 'rethink:spPolicies': 'key,version,value'\n },\n syncherManager: {\n 'syncherManager:ObjectURLs': 'key,version,value'\n },\n hypertyResources: {\n hypertyResources: '&resourceURL, name, contentUrl, content, created, reporter, resourceType'\n }\n },\n\n runtimeURLS: {\n registry: {\n prefix: 'hyperty-runtime://',\n suffix: 'registry'\n },\n identityModule: {\n prefix: 'hyperty-runtime://',\n suffix: '/idm'\n },\n runtimeUA: {\n prefix: 'hyperty-runtime://',\n suffix: '/ua'\n },\n catalogue: {\n prefix: 'hyperty-runtime://',\n suffix: '/catalogue'\n },\n graphConnector: {\n prefix: 'hyperty-runtime://',\n suffix: '/graph'\n },\n syncManager: {\n prefix: 'hyperty-runtime://',\n suffix: '/sm'\n }\n },\n catalogueURLs: {\n protocolstub: {\n prefix: 'hyperty-catalogue://catalogue.',\n suffix: '/.well-known/protocolstub/',\n fallback: 'hyperty-catalogue://catalogue.%domain%/.well-known/protocolstub/'\n },\n idpProxy: {\n prefix: 'hyperty-catalogue://catalogue.',\n suffix: '/.well-known/idp-proxy/',\n fallback: 'hyperty-catalogue://catalogue.%domain%/.well-known/idp-proxy/'\n }\n },\n msgNodeURL: {\n prefix: 'domain://msg-node.',\n suffix: '',\n hypertyAddressAllocation: '/hyperty-address-allocation',\n objectAddressAllocation: '/object-address-allocation',\n subscriptionManagement: '/sm'\n },\n domainRegistryURL: {\n prefix: 'domain://registry.',\n suffix: ''\n },\n globalRegistryURL: 'global://registry.'\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ydW50aW1lL3J1bnRpbWVDb25maWd1cmF0aW9uLmpzPzZiMWIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHJ1bnRpbWVDb25maWd1cmF0aW9uID0ge1xyXG5cclxuICAvLyBUT0RPIHRoaXMgc2hvdWxkIGJlIGNoYW5nZWQgd2l0aCB0aGUgZGVmaW5pdGlvbiB1c2VkIGZvciBpbmRleGVkZGJcclxuICAvLyBsb29rIGF0OiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSURCT2JqZWN0U3RvcmVcclxuICAvLyBOb3cgd2UgYXJlIHVzaW5nIHRoZSBkZWZpbml0aW9uIGZvciBEZXhpZTsgKGh0dHA6Ly9kZXhpZS5vcmcvZG9jcy9WZXJzaW9uL1ZlcnNpb24uc3RvcmVzKCkpXHJcbiAgc3RvcmFnZVNjaGVtYXM6IHtcclxuICAgIGNhcGFiaWxpdGllczoge1xyXG4gICAgICBjYXBhYmlsaXRpZXM6ICdrZXksdmVyc2lvbix2YWx1ZSdcclxuICAgIH0sXHJcbiAgICBzdWJzY3JpcHRpb25zOiB7XHJcbiAgICAgIHN1YnNjcmlwdGlvbnM6ICdrZXksdmVyc2lvbix2YWx1ZSdcclxuICAgIH0sXHJcbiAgICBydW50aW1lOiB7XHJcbiAgICAgICdydW50aW1lOlVSTCc6ICdrZXksdmVyc2lvbix2YWx1ZScsXHJcbiAgICAgICdwMnBIYW5kbGVyOlVSTCc6ICdrZXksdmVyc2lvbix2YWx1ZSdcclxuICAgIH0sXHJcbiAgICByZWdpc3RyeToge1xyXG4gICAgICAncmVnaXN0cnk6RGF0YU9iamVjdFVSTHMnOiAna2V5LHZlcnNpb24sdmFsdWUnLFxyXG4gICAgICAncmVnaXN0cnk6SHlwZXJ0eVVSTHMnOiAna2V5LHZlcnNpb24sdmFsdWUnXHJcbiAgICB9LFxyXG4gICAgY3J5cHRvTWFuYWdlcjoge1xyXG4gICAgICB1c2VyQXN5bW1ldHJpY0tleTogJ2tleSx2ZXJzaW9uLHZhbHVlJyxcclxuICAgICAgZGF0YU9iamVjdFNlc3Npb25LZXlzOiAna2V5LHZlcnNpb24sdmFsdWUnXHJcbiAgICB9LFxyXG4gICAgaWRlbnRpdHk6IHtcclxuICAgICAgYWNjZXNzVG9rZW5zOiAna2V5LHZlcnNpb24sdmFsdWUnLFxyXG4gICAgICBpZGVudGl0aWVzOiAndXNlclVSTCwgdXNlclByb2ZpbGUuZW1haWwsIHVzZXJQcm9maWxlLnVzZXJVUkwsIHVzZXJQcm9maWxlLm5hbWUnXHJcbiAgICB9LFxyXG4gICAgcnVudGltZUNhdGFsb2d1ZToge1xyXG4gICAgICBydW50aW1lQ2F0YWxvZ3VlOiAnJmNndWlkLCBhY2Nlc3NDb250cm9sUG9saWN5LCBjb25zdHJhaW50cywgZGF0YU9iamVjdHMsIGh5cGVydHlUeXBlLCBvYmplY3ROYW1lLCBzb3VyY2VQYWNrYWdlLCB2ZXJzaW9uJ1xyXG4gICAgfSxcclxuICAgIHBvbGljeToge1xyXG4gICAgICAncmV0aGluazphY3RpdmVQb2xpY3knOiAna2V5LHZlcnNpb24sdmFsdWUnLFxyXG4gICAgICAncmV0aGluazpncm91cHMnOiAna2V5LHZlcnNpb24sdmFsdWUnLFxyXG4gICAgICAncmV0aGluazp1c2VyUG9saWNpZXMnOiAna2V5LHZlcnNpb24sdmFsdWUnLFxyXG4gICAgICAncmV0aGluazpzcFBvbGljaWVzJzogJ2tleSx2ZXJzaW9uLHZhbHVlJ1xyXG4gICAgfSxcclxuICAgIHN5bmNoZXJNYW5hZ2VyOiB7XHJcbiAgICAgICdzeW5jaGVyTWFuYWdlcjpPYmplY3RVUkxzJzogJ2tleSx2ZXJzaW9uLHZhbHVlJ1xyXG4gICAgfSxcclxuICAgIGh5cGVydHlSZXNvdXJjZXM6IHtcclxuICAgICAgaHlwZXJ0eVJlc291cmNlczogJyZyZXNvdXJjZVVSTCwgbmFtZSwgY29udGVudFVybCwgY29udGVudCwgY3JlYXRlZCwgcmVwb3J0ZXIsIHJlc291cmNlVHlwZSdcclxuICAgIH1cclxuICB9LFxyXG5cclxuICBydW50aW1lVVJMUzoge1xyXG4gICAgcmVnaXN0cnk6IHtcclxuICAgICAgcHJlZml4OiAnaHlwZXJ0eS1ydW50aW1lOi8vJyxcclxuICAgICAgc3VmZml4OiAncmVnaXN0cnknXHJcbiAgICB9LFxyXG4gICAgaWRlbnRpdHlNb2R1bGU6IHtcclxuICAgICAgcHJlZml4OiAnaHlwZXJ0eS1ydW50aW1lOi8vJyxcclxuICAgICAgc3VmZml4OiAnL2lkbSdcclxuICAgIH0sXHJcbiAgICBydW50aW1lVUE6IHtcclxuICAgICAgcHJlZml4OiAnaHlwZXJ0eS1ydW50aW1lOi8vJyxcclxuICAgICAgc3VmZml4OiAnL3VhJ1xyXG4gICAgfSxcclxuICAgIGNhdGFsb2d1ZToge1xyXG4gICAgICBwcmVmaXg6ICdoeXBlcnR5LXJ1bnRpbWU6Ly8nLFxyXG4gICAgICBzdWZmaXg6ICcvY2F0YWxvZ3VlJ1xyXG4gICAgfSxcclxuICAgIGdyYXBoQ29ubmVjdG9yOiB7XHJcbiAgICAgIHByZWZpeDogJ2h5cGVydHktcnVudGltZTovLycsXHJcbiAgICAgIHN1ZmZpeDogJy9ncmFwaCdcclxuICAgIH0sXHJcbiAgICBzeW5jTWFuYWdlcjoge1xyXG4gICAgICBwcmVmaXg6ICdoeXBlcnR5LXJ1bnRpbWU6Ly8nLFxyXG4gICAgICBzdWZmaXg6ICcvc20nXHJcbiAgICB9XHJcbiAgfSxcclxuICBjYXRhbG9ndWVVUkxzOiB7XHJcbiAgICBwcm90b2NvbHN0dWI6IHtcclxuICAgICAgcHJlZml4OiAnaHlwZXJ0eS1jYXRhbG9ndWU6Ly9jYXRhbG9ndWUuJyxcclxuICAgICAgc3VmZml4OiAnLy53ZWxsLWtub3duL3Byb3RvY29sc3R1Yi8nLFxyXG4gICAgICBmYWxsYmFjazogJ2h5cGVydHktY2F0YWxvZ3VlOi8vY2F0YWxvZ3VlLiVkb21haW4lLy53ZWxsLWtub3duL3Byb3RvY29sc3R1Yi8nXHJcbiAgICB9LFxyXG4gICAgaWRwUHJveHk6IHtcclxuICAgICAgcHJlZml4OiAnaHlwZXJ0eS1jYXRhbG9ndWU6Ly9jYXRhbG9ndWUuJyxcclxuICAgICAgc3VmZml4OiAnLy53ZWxsLWtub3duL2lkcC1wcm94eS8nLFxyXG4gICAgICBmYWxsYmFjazogJ2h5cGVydHktY2F0YWxvZ3VlOi8vY2F0YWxvZ3VlLiVkb21haW4lLy53ZWxsLWtub3duL2lkcC1wcm94eS8nXHJcbiAgICB9XHJcbiAgfSxcclxuICBtc2dOb2RlVVJMOiB7XHJcbiAgICBwcmVmaXg6ICdkb21haW46Ly9tc2ctbm9kZS4nLFxyXG4gICAgc3VmZml4OiAnJyxcclxuICAgIGh5cGVydHlBZGRyZXNzQWxsb2NhdGlvbjogJy9oeXBlcnR5LWFkZHJlc3MtYWxsb2NhdGlvbicsXHJcbiAgICBvYmplY3RBZGRyZXNzQWxsb2NhdGlvbjogJy9vYmplY3QtYWRkcmVzcy1hbGxvY2F0aW9uJyxcclxuICAgIHN1YnNjcmlwdGlvbk1hbmFnZW1lbnQ6ICcvc20nXHJcbiAgfSxcclxuICBkb21haW5SZWdpc3RyeVVSTDoge1xyXG4gICAgcHJlZml4OiAnZG9tYWluOi8vcmVnaXN0cnkuJyxcclxuICAgIHN1ZmZpeDogJydcclxuICB9LFxyXG4gIGdsb2JhbFJlZ2lzdHJ5VVJMOiAnZ2xvYmFsOi8vcmVnaXN0cnkuJ1xyXG59O1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3J1bnRpbWUvcnVudGltZUNvbmZpZ3VyYXRpb24uanMiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBREE7QUFuQ0E7QUFDQTtBQXVDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQXJCQTtBQTBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBTkE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUE5RkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///144\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Operators = function () {\n function Operators() {\n (0, _classCallCheck3.default)(this, Operators);\n }\n\n (0, _createClass3.default)(Operators, [{\n key: 'and',\n value: function and(params) {\n return params[0] && params[1];\n }\n }, {\n key: 'between',\n value: function between(params) {\n var start = parseInt(params[0][0]);\n var end = parseInt(params[0][1]);\n var now = params[1];\n\n if (end < start) {\n now = now < start ? now += 2400 : now;\n end += 2400;\n }\n\n return now > start && now < end;\n }\n }, {\n key: 'equals',\n value: function equals(params) {\n return String(params[0]) === '*' || String(params[0]) === String(params[1]);\n }\n }, {\n key: 'greaterThan',\n value: function greaterThan(params) {\n return params[1] > params[0];\n }\n }, {\n key: 'in',\n value: function _in(params) {\n return params[0].indexOf(params[1]) > -1;\n }\n }, {\n key: 'lessThan',\n value: function lessThan(params) {\n return params[1] < params[0];\n }\n }, {\n key: 'not',\n value: function not(params) {\n return !params[0];\n }\n }, {\n key: 'or',\n value: function or(params) {\n return params[0] || params[1];\n }\n }]);\n return Operators;\n}();\n\nexports.default = Operators;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvT3BlcmF0b3JzLmpzPzFjNDIiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgT3BlcmF0b3JzIHtcclxuXHJcbiAgYW5kKHBhcmFtcykge1xyXG4gICAgcmV0dXJuIHBhcmFtc1swXSAmJiBwYXJhbXNbMV07XHJcbiAgfVxyXG5cclxuICBiZXR3ZWVuKHBhcmFtcykge1xyXG4gICAgbGV0IHN0YXJ0ID0gcGFyc2VJbnQocGFyYW1zWzBdWzBdKTtcclxuICAgIGxldCBlbmQgPSBwYXJzZUludChwYXJhbXNbMF1bMV0pO1xyXG4gICAgbGV0IG5vdyA9IHBhcmFtc1sxXTtcclxuXHJcbiAgICBpZiAoZW5kIDwgc3RhcnQpIHtcclxuICAgICAgbm93ID0gKG5vdyA8IHN0YXJ0KSA/IG5vdyArPSAyNDAwIDogbm93O1xyXG4gICAgICBlbmQgKz0gMjQwMDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKG5vdyA+IHN0YXJ0ICYmIG5vdyA8IGVuZCk7XHJcbiAgfVxyXG5cclxuICBlcXVhbHMocGFyYW1zKSB7XHJcbiAgICByZXR1cm4gU3RyaW5nKHBhcmFtc1swXSkgPT09ICcqJyB8fCBTdHJpbmcocGFyYW1zWzBdKSA9PT0gU3RyaW5nKHBhcmFtc1sxXSk7XHJcbiAgfVxyXG5cclxuICBncmVhdGVyVGhhbihwYXJhbXMpIHtcclxuICAgIHJldHVybiBwYXJhbXNbMV0gPiBwYXJhbXNbMF07XHJcbiAgfVxyXG5cclxuICBpbihwYXJhbXMpIHtcclxuICAgIHJldHVybiBwYXJhbXNbMF0uaW5kZXhPZihwYXJhbXNbMV0pID4gLTE7XHJcbiAgfVxyXG5cclxuICBsZXNzVGhhbihwYXJhbXMpIHtcclxuICAgIHJldHVybiBwYXJhbXNbMV0gPCBwYXJhbXNbMF07XHJcbiAgfVxyXG5cclxuICBub3QocGFyYW1zKSB7XHJcbiAgICByZXR1cm4gIXBhcmFtc1swXTtcclxuICB9XHJcblxyXG4gIG9yKHBhcmFtcykge1xyXG4gICAgcmV0dXJuIHBhcmFtc1swXSB8fCBwYXJhbXNbMV07XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgT3BlcmF0b3JzO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3BvbGljeS9PcGVyYXRvcnMuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///145\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Operators = __webpack_require__(145);\n\nvar _Operators2 = _interopRequireDefault(_Operators);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* @author Ana Caldeira \r\n* @classdesc Class to represent a condition and evaluate its applicability.\r\n*/\nvar Condition = function () {\n\n /**\r\n * Creates a new Condition.\r\n * @class\r\n * @param {string} attribute\r\n * @param {string} operator\r\n * @param {*} params\r\n */\n function Condition(attribute, operator, params) {\n (0, _classCallCheck3.default)(this, Condition);\n\n this.attribute = attribute;\n this.operator = operator;\n this.params = params;\n this.operators = new _Operators2.default();\n }\n\n /**\r\n * Verifies if the condition is applicable to the message. First, the system value that corresponds to the attribute is retrieved; then, that value is compared with the parameter specified in the condition by executing the operator implementation. If the operator is 'in' and the name of a group is given, then the array holding the members of the group is retrieved before the comparison.\r\n * @param {Object} context environment where the Policy Engine is being used\r\n * @param {Object} message\r\n */\n\n\n (0, _createClass3.default)(Condition, [{\n key: 'isApplicable',\n value: function isApplicable(context, message) {\n context[this.attribute] = { message: message };\n var value = context[this.attribute];\n var tempParam = void 0;\n\n if (this.operator === 'in') {\n if (!Array.isArray(this.params)) {\n tempParam = context.getGroup(this.params, message.to);\n return this.operators[this.operator]([tempParam, value]);\n }\n }\n\n return this.operators[this.operator]([this.params, value]);\n }\n }]);\n return Condition;\n}(); /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\nexports.default = Condition;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29uZGl0aW9ucy9Db25kaXRpb24uanM/MmUzMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxyXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxyXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXHJcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xyXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxyXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXHJcbipcclxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuKlxyXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbipcclxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKiovXHJcblxyXG5pbXBvcnQgT3BlcmF0b3JzIGZyb20gJy4uL09wZXJhdG9ycyc7XHJcblxyXG4vKipcclxuKiBAYXV0aG9yIEFuYSBDYWxkZWlyYSA8YW5hLmNhbGRlaXJhQHRlY25pY28udWxpc2JvYS5wdD5cclxuKiBAY2xhc3NkZXNjIENsYXNzIHRvIHJlcHJlc2VudCBhIGNvbmRpdGlvbiBhbmQgZXZhbHVhdGUgaXRzIGFwcGxpY2FiaWxpdHkuXHJcbiovXHJcbmNsYXNzIENvbmRpdGlvbiB7XHJcblxyXG4gIC8qKlxyXG4gICogQ3JlYXRlcyBhIG5ldyBDb25kaXRpb24uXHJcbiAgKiBAY2xhc3NcclxuICAqIEBwYXJhbSAge3N0cmluZ30gIGF0dHJpYnV0ZVxyXG4gICogQHBhcmFtICB7c3RyaW5nfSAgb3BlcmF0b3JcclxuICAqIEBwYXJhbSAgeyp9ICAgICAgIHBhcmFtc1xyXG4gICovXHJcbiAgY29uc3RydWN0b3IoYXR0cmlidXRlLCBvcGVyYXRvciwgcGFyYW1zKSB7XHJcbiAgICB0aGlzLmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTtcclxuICAgIHRoaXMub3BlcmF0b3IgPSBvcGVyYXRvcjtcclxuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgdGhpcy5vcGVyYXRvcnMgPSBuZXcgT3BlcmF0b3JzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFZlcmlmaWVzIGlmIHRoZSBjb25kaXRpb24gaXMgYXBwbGljYWJsZSB0byB0aGUgbWVzc2FnZS4gRmlyc3QsIHRoZSBzeXN0ZW0gdmFsdWUgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgYXR0cmlidXRlIGlzIHJldHJpZXZlZDsgdGhlbiwgdGhhdCB2YWx1ZSBpcyBjb21wYXJlZCB3aXRoIHRoZSBwYXJhbWV0ZXIgc3BlY2lmaWVkIGluIHRoZSBjb25kaXRpb24gYnkgZXhlY3V0aW5nIHRoZSBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbi4gSWYgdGhlIG9wZXJhdG9yIGlzICdpbicgYW5kIHRoZSBuYW1lIG9mIGEgZ3JvdXAgaXMgZ2l2ZW4sIHRoZW4gdGhlIGFycmF5IGhvbGRpbmcgdGhlIG1lbWJlcnMgb2YgdGhlIGdyb3VwIGlzIHJldHJpZXZlZCBiZWZvcmUgdGhlIGNvbXBhcmlzb24uXHJcbiAgKiBAcGFyYW0gIHtPYmplY3R9ICAgIGNvbnRleHQgICBlbnZpcm9ubWVudCB3aGVyZSB0aGUgUG9saWN5IEVuZ2luZSBpcyBiZWluZyB1c2VkXHJcbiAgKiBAcGFyYW0gIHtPYmplY3R9ICAgIG1lc3NhZ2VcclxuICAqL1xyXG4gIGlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlKSB7XHJcbiAgICBjb250ZXh0W3RoaXMuYXR0cmlidXRlXSA9IHsgbWVzc2FnZTogbWVzc2FnZSB9O1xyXG4gICAgbGV0IHZhbHVlID0gY29udGV4dFt0aGlzLmF0dHJpYnV0ZV07XHJcbiAgICBsZXQgdGVtcFBhcmFtO1xyXG5cclxuICAgIGlmICh0aGlzLm9wZXJhdG9yID09PSAnaW4nKSB7XHJcbiAgICAgIGlmICghKEFycmF5LmlzQXJyYXkodGhpcy5wYXJhbXMpKSkge1xyXG4gICAgICAgIHRlbXBQYXJhbSA9IGNvbnRleHQuZ2V0R3JvdXAodGhpcy5wYXJhbXMsIG1lc3NhZ2UudG8pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wZXJhdG9yc1t0aGlzLm9wZXJhdG9yXShbdGVtcFBhcmFtLCB2YWx1ZV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMub3BlcmF0b3JzW3RoaXMub3BlcmF0b3JdKFt0aGlzLnBhcmFtcywgdmFsdWVdKTtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDb25kaXRpb247XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L2NvbmRpdGlvbnMvQ29uZGl0aW9uLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQXVCQTtBQUNBOzs7OztBQUNBOzs7O0FBSUE7QUFDQTtBQUNBOzs7Ozs7O0FBT0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQS9EQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtRUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///146\n")},function(module,exports){eval('var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function("return this")() || (1,eval)("this");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === "object")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it\'s\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcz8zNjk4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBnO1xyXG5cclxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcclxuZyA9IChmdW5jdGlvbigpIHtcclxuXHRyZXR1cm4gdGhpcztcclxufSkoKTtcclxuXHJcbnRyeSB7XHJcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXHJcblx0ZyA9IGcgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpIHx8ICgxLGV2YWwpKFwidGhpc1wiKTtcclxufSBjYXRjaChlKSB7XHJcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcclxuXHRpZih0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKVxyXG5cdFx0ZyA9IHdpbmRvdztcclxufVxyXG5cclxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxyXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xyXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGc7XHJcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vICh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qc1xuLy8gbW9kdWxlIGlkID0gMTQ3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///147\n')},function(module,exports,__webpack_require__){eval("module.exports = !__webpack_require__(10) && !__webpack_require__(5)(function () {\n return Object.defineProperty(__webpack_require__(101)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faWU4LWRvbS1kZWZpbmUuanM/YzU5NiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMTQ4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///148\n")},function(module,exports,__webpack_require__){eval("exports.f = __webpack_require__(8);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fd2tzLWV4dC5qcz8zM2M1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX3drcycpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL193a3MtZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAxNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///149\n")},function(module,exports,__webpack_require__){eval("var has = __webpack_require__(17);\nvar toIObject = __webpack_require__(24);\nvar arrayIndexOf = __webpack_require__(80)(false);\nvar IE_PROTO = __webpack_require__(103)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanM/NDVlMSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGFycmF5SW5kZXhPZiA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykoZmFsc2UpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSBpZiAoa2V5ICE9IElFX1BST1RPKSBoYXMoTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmFycmF5SW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDE1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///150\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(11);\nvar anObject = __webpack_require__(3);\nvar getKeys = __webpack_require__(50);\n\nmodule.exports = __webpack_require__(10) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWRwcy5qcz9iNzBjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IGdldEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgUDtcbiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG4gIHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gMTUxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///151\n")},function(module,exports,__webpack_require__){eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(24);\nvar gOPN = __webpack_require__(53).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWdvcG4tZXh0LmpzPzZjNmYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsbGJhY2sgZm9yIElFMTEgYnVnZ3kgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgd2l0aCBpZnJhbWUgYW5kIHdpbmRvd1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbnZhciB3aW5kb3dOYW1lcyA9IHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzXG4gID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSA6IFtdO1xuXG52YXIgZ2V0V2luZG93TmFtZXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZ09QTihpdCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gd2luZG93TmFtZXMuc2xpY2UoKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHtcbiAgcmV0dXJuIHdpbmRvd05hbWVzICYmIHRvU3RyaW5nLmNhbGwoaXQpID09ICdbb2JqZWN0IFdpbmRvd10nID8gZ2V0V2luZG93TmFtZXMoaXQpIDogZ09QTih0b0lPYmplY3QoaXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qc1xuLy8gbW9kdWxlIGlkID0gMTUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///152\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(50);\nvar gOPS = __webpack_require__(81);\nvar pIE = __webpack_require__(71);\nvar toObject = __webpack_require__(15);\nvar IObject = __webpack_require__(70);\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(5)(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWFzc2lnbi5qcz9hMTg3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDE5LjEuMi4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UsIC4uLilcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyICRhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuXG4vLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1Zylcbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHZhciBBID0ge307XG4gIHZhciBCID0ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICB2YXIgUyA9IFN5bWJvbCgpO1xuICB2YXIgSyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdCc7XG4gIEFbU10gPSA3O1xuICBLLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7IEJba10gPSBrOyB9KTtcbiAgcmV0dXJuICRhc3NpZ24oe30sIEEpW1NdICE9IDcgfHwgT2JqZWN0LmtleXMoJGFzc2lnbih7fSwgQikpLmpvaW4oJycpICE9IEs7XG59KSA/IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHZhciBUID0gdG9PYmplY3QodGFyZ2V0KTtcbiAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAxO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgdmFyIGlzRW51bSA9IHBJRS5mO1xuICB3aGlsZSAoYUxlbiA+IGluZGV4KSB7XG4gICAgdmFyIFMgPSBJT2JqZWN0KGFyZ3VtZW50c1tpbmRleCsrXSk7XG4gICAgdmFyIGtleXMgPSBnZXRTeW1ib2xzID8gZ2V0S2V5cyhTKS5jb25jYXQoZ2V0U3ltYm9scyhTKSkgOiBnZXRLZXlzKFMpO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaiA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaikgaWYgKGlzRW51bS5jYWxsKFMsIGtleSA9IGtleXNbaisrXSkpIFRba2V5XSA9IFNba2V5XTtcbiAgfSByZXR1cm4gVDtcbn0gOiAkYXNzaWduO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtYXNzaWduLmpzXG4vLyBtb2R1bGUgaWQgPSAxNTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///153\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar aFunction = __webpack_require__(16);\nvar isObject = __webpack_require__(6);\nvar invoke = __webpack_require__(155);\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYmluZC5qcz82NmRjIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBpbnZva2UgPSByZXF1aXJlKCcuL19pbnZva2UnKTtcbnZhciBhcnJheVNsaWNlID0gW10uc2xpY2U7XG52YXIgZmFjdG9yaWVzID0ge307XG5cbnZhciBjb25zdHJ1Y3QgPSBmdW5jdGlvbiAoRiwgbGVuLCBhcmdzKSB7XG4gIGlmICghKGxlbiBpbiBmYWN0b3JpZXMpKSB7XG4gICAgZm9yICh2YXIgbiA9IFtdLCBpID0gMDsgaSA8IGxlbjsgaSsrKSBuW2ldID0gJ2FbJyArIGkgKyAnXSc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgZmFjdG9yaWVzW2xlbl0gPSBGdW5jdGlvbignRixhJywgJ3JldHVybiBuZXcgRignICsgbi5qb2luKCcsJykgKyAnKScpO1xuICB9IHJldHVybiBmYWN0b3JpZXNbbGVuXShGLCBhcmdzKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRnVuY3Rpb24uYmluZCB8fCBmdW5jdGlvbiBiaW5kKHRoYXQgLyogLCAuLi5hcmdzICovKSB7XG4gIHZhciBmbiA9IGFGdW5jdGlvbih0aGlzKTtcbiAgdmFyIHBhcnRBcmdzID0gYXJyYXlTbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gIHZhciBib3VuZCA9IGZ1bmN0aW9uICgvKiBhcmdzLi4uICovKSB7XG4gICAgdmFyIGFyZ3MgPSBwYXJ0QXJncy5jb25jYXQoYXJyYXlTbGljZS5jYWxsKGFyZ3VtZW50cykpO1xuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgYm91bmQgPyBjb25zdHJ1Y3QoZm4sIGFyZ3MubGVuZ3RoLCBhcmdzKSA6IGludm9rZShmbiwgYXJncywgdGhhdCk7XG4gIH07XG4gIGlmIChpc09iamVjdChmbi5wcm90b3R5cGUpKSBib3VuZC5wcm90b3R5cGUgPSBmbi5wcm90b3R5cGU7XG4gIHJldHVybiBib3VuZDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2JpbmQuanNcbi8vIG1vZHVsZSBpZCA9IDE1NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///154\n")},function(module,exports){eval("// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW52b2tlLmpzPzNjNzAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFzdCBhcHBseSwgaHR0cDovL2pzcGVyZi5sbmtpdC5jb20vZmFzdC1hcHBseS81XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgYXJncywgdGhhdCkge1xuICB2YXIgdW4gPSB0aGF0ID09PSB1bmRlZmluZWQ7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiB1biA/IGZuKClcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCk7XG4gICAgY2FzZSAxOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgY2FzZSA0OiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgfSByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJncyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pbnZva2UuanNcbi8vIG1vZHVsZSBpZCA9IDE1NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///155\n")},function(module,exports,__webpack_require__){eval("var $parseInt = __webpack_require__(4).parseInt;\nvar $trim = __webpack_require__(62).trim;\nvar ws = __webpack_require__(107);\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcGFyc2UtaW50LmpzPzNhMDQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRwYXJzZUludCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLnBhcnNlSW50O1xudmFyICR0cmltID0gcmVxdWlyZSgnLi9fc3RyaW5nLXRyaW0nKS50cmltO1xudmFyIHdzID0gcmVxdWlyZSgnLi9fc3RyaW5nLXdzJyk7XG52YXIgaGV4ID0gL15bLStdPzBbeFhdLztcblxubW9kdWxlLmV4cG9ydHMgPSAkcGFyc2VJbnQod3MgKyAnMDgnKSAhPT0gOCB8fCAkcGFyc2VJbnQod3MgKyAnMHgxNicpICE9PSAyMiA/IGZ1bmN0aW9uIHBhcnNlSW50KHN0ciwgcmFkaXgpIHtcbiAgdmFyIHN0cmluZyA9ICR0cmltKFN0cmluZyhzdHIpLCAzKTtcbiAgcmV0dXJuICRwYXJzZUludChzdHJpbmcsIChyYWRpeCA+Pj4gMCkgfHwgKGhleC50ZXN0KHN0cmluZykgPyAxNiA6IDEwKSk7XG59IDogJHBhcnNlSW50O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wYXJzZS1pbnQuanNcbi8vIG1vZHVsZSBpZCA9IDE1NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///156\n")},function(module,exports,__webpack_require__){eval("var $parseFloat = __webpack_require__(4).parseFloat;\nvar $trim = __webpack_require__(62).trim;\n\nmodule.exports = 1 / $parseFloat(__webpack_require__(107) + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcGFyc2UtZmxvYXQuanM/ZjJkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJHBhcnNlRmxvYXQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5wYXJzZUZsb2F0O1xudmFyICR0cmltID0gcmVxdWlyZSgnLi9fc3RyaW5nLXRyaW0nKS50cmltO1xuXG5tb2R1bGUuZXhwb3J0cyA9IDEgLyAkcGFyc2VGbG9hdChyZXF1aXJlKCcuL19zdHJpbmctd3MnKSArICctMCcpICE9PSAtSW5maW5pdHkgPyBmdW5jdGlvbiBwYXJzZUZsb2F0KHN0cikge1xuICB2YXIgc3RyaW5nID0gJHRyaW0oU3RyaW5nKHN0ciksIDMpO1xuICB2YXIgcmVzdWx0ID0gJHBhcnNlRmxvYXQoc3RyaW5nKTtcbiAgcmV0dXJuIHJlc3VsdCA9PT0gMCAmJiBzdHJpbmcuY2hhckF0KDApID09ICctJyA/IC0wIDogcmVzdWx0O1xufSA6ICRwYXJzZUZsb2F0O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wYXJzZS1mbG9hdC5qc1xuLy8gbW9kdWxlIGlkID0gMTU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///157\n")},function(module,exports,__webpack_require__){eval("var cof = __webpack_require__(28);\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYS1udW1iZXItdmFsdWUuanM/N2QyZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgbXNnKSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ251bWJlcicgJiYgY29mKGl0KSAhPSAnTnVtYmVyJykgdGhyb3cgVHlwZUVycm9yKG1zZyk7XG4gIHJldHVybiAraXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hLW51bWJlci12YWx1ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///158\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.3 Number.isInteger(number)\nvar isObject = __webpack_require__(6);\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtaW50ZWdlci5qcz85ZmRmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjEuMi4zIE51bWJlci5pc0ludGVnZXIobnVtYmVyKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0ludGVnZXIoaXQpIHtcbiAgcmV0dXJuICFpc09iamVjdChpdCkgJiYgaXNGaW5pdGUoaXQpICYmIGZsb29yKGl0KSA9PT0gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAxNTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///159\n")},function(module,exports){eval("// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1sb2cxcC5qcz80NzNkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4yMCBNYXRoLmxvZzFwKHgpXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGgubG9nMXAgfHwgZnVuY3Rpb24gbG9nMXAoeCkge1xuICByZXR1cm4gKHggPSAreCkgPiAtMWUtOCAmJiB4IDwgMWUtOCA/IHggLSB4ICogeCAvIDIgOiBNYXRoLmxvZygxICsgeCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLWxvZzFwLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///160\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.16 Math.fround(x)\nvar sign = __webpack_require__(110);\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1mcm91bmQuanM/ODNmOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4yLjIuMTYgTWF0aC5mcm91bmQoeClcbnZhciBzaWduID0gcmVxdWlyZSgnLi9fbWF0aC1zaWduJyk7XG52YXIgcG93ID0gTWF0aC5wb3c7XG52YXIgRVBTSUxPTiA9IHBvdygyLCAtNTIpO1xudmFyIEVQU0lMT04zMiA9IHBvdygyLCAtMjMpO1xudmFyIE1BWDMyID0gcG93KDIsIDEyNykgKiAoMiAtIEVQU0lMT04zMik7XG52YXIgTUlOMzIgPSBwb3coMiwgLTEyNik7XG5cbnZhciByb3VuZFRpZXNUb0V2ZW4gPSBmdW5jdGlvbiAobikge1xuICByZXR1cm4gbiArIDEgLyBFUFNJTE9OIC0gMSAvIEVQU0lMT047XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguZnJvdW5kIHx8IGZ1bmN0aW9uIGZyb3VuZCh4KSB7XG4gIHZhciAkYWJzID0gTWF0aC5hYnMoeCk7XG4gIHZhciAkc2lnbiA9IHNpZ24oeCk7XG4gIHZhciBhLCByZXN1bHQ7XG4gIGlmICgkYWJzIDwgTUlOMzIpIHJldHVybiAkc2lnbiAqIHJvdW5kVGllc1RvRXZlbigkYWJzIC8gTUlOMzIgLyBFUFNJTE9OMzIpICogTUlOMzIgKiBFUFNJTE9OMzI7XG4gIGEgPSAoMSArIEVQU0lMT04zMiAvIEVQU0lMT04pICogJGFicztcbiAgcmVzdWx0ID0gYSAtIChhIC0gJGFicyk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgaWYgKHJlc3VsdCA+IE1BWDMyIHx8IHJlc3VsdCAhPSByZXN1bHQpIHJldHVybiAkc2lnbiAqIEluZmluaXR5O1xuICByZXR1cm4gJHNpZ24gKiByZXN1bHQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLWZyb3VuZC5qc1xuLy8gbW9kdWxlIGlkID0gMTYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///161\n")},function(module,exports,__webpack_require__){eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(3);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1jYWxsLmpzPzVlZjUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwgZm4sIHZhbHVlLCBlbnRyaWVzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGVudHJpZXMgPyBmbihhbk9iamVjdCh2YWx1ZSlbMF0sIHZhbHVlWzFdKSA6IGZuKHZhbHVlKTtcbiAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcbiAgfSBjYXRjaCAoZSkge1xuICAgIHZhciByZXQgPSBpdGVyYXRvclsncmV0dXJuJ107XG4gICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSBhbk9iamVjdChyZXQuY2FsbChpdGVyYXRvcikpO1xuICAgIHRocm93IGU7XG4gIH1cbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItY2FsbC5qc1xuLy8gbW9kdWxlIGlkID0gMTYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///162\n")},function(module,exports,__webpack_require__){eval("var aFunction = __webpack_require__(16);\nvar toObject = __webpack_require__(15);\nvar IObject = __webpack_require__(70);\nvar toLength = __webpack_require__(12);\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktcmVkdWNlLmpzPzE2NDIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgY2FsbGJhY2tmbiwgYUxlbiwgbWVtbywgaXNSaWdodCkge1xuICBhRnVuY3Rpb24oY2FsbGJhY2tmbik7XG4gIHZhciBPID0gdG9PYmplY3QodGhhdCk7XG4gIHZhciBzZWxmID0gSU9iamVjdChPKTtcbiAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgdmFyIGluZGV4ID0gaXNSaWdodCA/IGxlbmd0aCAtIDEgOiAwO1xuICB2YXIgaSA9IGlzUmlnaHQgPyAtMSA6IDE7XG4gIGlmIChhTGVuIDwgMikgZm9yICg7Oykge1xuICAgIGlmIChpbmRleCBpbiBzZWxmKSB7XG4gICAgICBtZW1vID0gc2VsZltpbmRleF07XG4gICAgICBpbmRleCArPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGluZGV4ICs9IGk7XG4gICAgaWYgKGlzUmlnaHQgPyBpbmRleCA8IDAgOiBsZW5ndGggPD0gaW5kZXgpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZScpO1xuICAgIH1cbiAgfVxuICBmb3IgKDtpc1JpZ2h0ID8gaW5kZXggPj0gMCA6IGxlbmd0aCA+IGluZGV4OyBpbmRleCArPSBpKSBpZiAoaW5kZXggaW4gc2VsZikge1xuICAgIG1lbW8gPSBjYWxsYmFja2ZuKG1lbW8sIHNlbGZbaW5kZXhdLCBpbmRleCwgTyk7XG4gIH1cbiAgcmV0dXJuIG1lbW87XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1yZWR1Y2UuanNcbi8vIG1vZHVsZSBpZCA9IDE2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///163\n")},function(module,exports,__webpack_require__){"use strict";eval("// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n\nvar toObject = __webpack_require__(15);\nvar toAbsoluteIndex = __webpack_require__(51);\nvar toLength = __webpack_require__(12);\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktY29weS13aXRoaW4uanM/MGNmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMi4xLjMuMyBBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0LCBlbmQgPSB0aGlzLmxlbmd0aClcbid1c2Ugc3RyaWN0JztcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBbXS5jb3B5V2l0aGluIHx8IGZ1bmN0aW9uIGNvcHlXaXRoaW4odGFyZ2V0IC8qID0gMCAqLywgc3RhcnQgLyogPSAwLCBlbmQgPSBAbGVuZ3RoICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gIHZhciBsZW4gPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gIHZhciB0byA9IHRvQWJzb2x1dGVJbmRleCh0YXJnZXQsIGxlbik7XG4gIHZhciBmcm9tID0gdG9BYnNvbHV0ZUluZGV4KHN0YXJ0LCBsZW4pO1xuICB2YXIgZW5kID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gIHZhciBjb3VudCA9IE1hdGgubWluKChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbikpIC0gZnJvbSwgbGVuIC0gdG8pO1xuICB2YXIgaW5jID0gMTtcbiAgaWYgKGZyb20gPCB0byAmJiB0byA8IGZyb20gKyBjb3VudCkge1xuICAgIGluYyA9IC0xO1xuICAgIGZyb20gKz0gY291bnQgLSAxO1xuICAgIHRvICs9IGNvdW50IC0gMTtcbiAgfVxuICB3aGlsZSAoY291bnQtLSA+IDApIHtcbiAgICBpZiAoZnJvbSBpbiBPKSBPW3RvXSA9IE9bZnJvbV07XG4gICAgZWxzZSBkZWxldGUgT1t0b107XG4gICAgdG8gKz0gaW5jO1xuICAgIGZyb20gKz0gaW5jO1xuICB9IHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktY29weS13aXRoaW4uanNcbi8vIG1vZHVsZSBpZCA9IDE2NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///164\n")},function(module,exports){eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1zdGVwLmpzPzI4MWQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9uZSwgdmFsdWUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmUgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItc3RlcC5qc1xuLy8gbW9kdWxlIGlkID0gMTY1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///165\n")},function(module,exports,__webpack_require__){eval("// 21.2.5.3 get RegExp.prototype.flags()\nif (__webpack_require__(10) && /./g.flags != 'g') __webpack_require__(11).f(RegExp.prototype, 'flags', {\n configurable: true,\n get: __webpack_require__(85)\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLmZsYWdzLmpzP2E1ZGYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjEuMi41LjMgZ2V0IFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MoKVxuaWYgKHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgLy4vZy5mbGFncyAhPSAnZycpIHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYoUmVnRXhwLnByb3RvdHlwZSwgJ2ZsYWdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGdldDogcmVxdWlyZSgnLi9fZmxhZ3MnKVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5mbGFncy5qc1xuLy8gbW9kdWxlIGlkID0gMTY2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///166\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcGVyZm9ybS5qcz80ODM1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyBlOiBmYWxzZSwgdjogZXhlYygpIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4geyBlOiB0cnVlLCB2OiBlIH07XG4gIH1cbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3BlcmZvcm0uanNcbi8vIG1vZHVsZSBpZCA9IDE2N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///167\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\nvar newPromiseCapability = __webpack_require__(125);\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzPzllOTgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQywgeCkge1xuICBhbk9iamVjdChDKTtcbiAgaWYgKGlzT2JqZWN0KHgpICYmIHguY29uc3RydWN0b3IgPT09IEMpIHJldHVybiB4O1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKEMpO1xuICB2YXIgcmVzb2x2ZSA9IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmU7XG4gIHJlc29sdmUoeCk7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///168\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar strong = __webpack_require__(170);\nvar validate = __webpack_require__(64);\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = __webpack_require__(88)(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWFwLmpzPzMyY2IiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIHN0cm9uZyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24tc3Ryb25nJyk7XG52YXIgdmFsaWRhdGUgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgTUFQID0gJ01hcCc7XG5cbi8vIDIzLjEgTWFwIE9iamVjdHNcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbicpKE1BUCwgZnVuY3Rpb24gKGdldCkge1xuICByZXR1cm4gZnVuY3Rpb24gTWFwKCkgeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIHtcbiAgLy8gMjMuMS4zLjYgTWFwLnByb3RvdHlwZS5nZXQoa2V5KVxuICBnZXQ6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICB2YXIgZW50cnkgPSBzdHJvbmcuZ2V0RW50cnkodmFsaWRhdGUodGhpcywgTUFQKSwga2V5KTtcbiAgICByZXR1cm4gZW50cnkgJiYgZW50cnkudjtcbiAgfSxcbiAgLy8gMjMuMS4zLjkgTWFwLnByb3RvdHlwZS5zZXQoa2V5LCB2YWx1ZSlcbiAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIHJldHVybiBzdHJvbmcuZGVmKHZhbGlkYXRlKHRoaXMsIE1BUCksIGtleSA9PT0gMCA/IDAgOiBrZXksIHZhbHVlKTtcbiAgfVxufSwgc3Ryb25nLCB0cnVlKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWFwLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///169\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar dP = __webpack_require__(11).f;\nvar create = __webpack_require__(52);\nvar redefineAll = __webpack_require__(57);\nvar ctx = __webpack_require__(27);\nvar anInstance = __webpack_require__(55);\nvar forOf = __webpack_require__(56);\nvar $iterDefine = __webpack_require__(113);\nvar step = __webpack_require__(165);\nvar setSpecies = __webpack_require__(54);\nvar DESCRIPTORS = __webpack_require__(10);\nvar fastKey = __webpack_require__(42).fastKey;\nvar validate = __webpack_require__(64);\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29sbGVjdGlvbi1zdHJvbmcuanM/MGUwOCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgJGl0ZXJEZWZpbmUgPSByZXF1aXJlKCcuL19pdGVyLWRlZmluZScpO1xudmFyIHN0ZXAgPSByZXF1aXJlKCcuL19pdGVyLXN0ZXAnKTtcbnZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFzdEtleSA9IHJlcXVpcmUoJy4vX21ldGEnKS5mYXN0S2V5O1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIFNJWkUgPSBERVNDUklQVE9SUyA/ICdfcycgOiAnc2l6ZSc7XG5cbnZhciBnZXRFbnRyeSA9IGZ1bmN0aW9uICh0aGF0LCBrZXkpIHtcbiAgLy8gZmFzdCBjYXNlXG4gIHZhciBpbmRleCA9IGZhc3RLZXkoa2V5KTtcbiAgdmFyIGVudHJ5O1xuICBpZiAoaW5kZXggIT09ICdGJykgcmV0dXJuIHRoYXQuX2lbaW5kZXhdO1xuICAvLyBmcm96ZW4gb2JqZWN0IGNhc2VcbiAgZm9yIChlbnRyeSA9IHRoYXQuX2Y7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm4pIHtcbiAgICBpZiAoZW50cnkuayA9PSBrZXkpIHJldHVybiBlbnRyeTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldENvbnN0cnVjdG9yOiBmdW5jdGlvbiAod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUikge1xuICAgIHZhciBDID0gd3JhcHBlcihmdW5jdGlvbiAodGhhdCwgaXRlcmFibGUpIHtcbiAgICAgIGFuSW5zdGFuY2UodGhhdCwgQywgTkFNRSwgJ19pJyk7XG4gICAgICB0aGF0Ll90ID0gTkFNRTsgICAgICAgICAvLyBjb2xsZWN0aW9uIHR5cGVcbiAgICAgIHRoYXQuX2kgPSBjcmVhdGUobnVsbCk7IC8vIGluZGV4XG4gICAgICB0aGF0Ll9mID0gdW5kZWZpbmVkOyAgICAvLyBmaXJzdCBlbnRyeVxuICAgICAgdGhhdC5fbCA9IHVuZGVmaW5lZDsgICAgLy8gbGFzdCBlbnRyeVxuICAgICAgdGhhdFtTSVpFXSA9IDA7ICAgICAgICAgLy8gc2l6ZVxuICAgICAgaWYgKGl0ZXJhYmxlICE9IHVuZGVmaW5lZCkgZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGhhdFtBRERFUl0sIHRoYXQpO1xuICAgIH0pO1xuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCB7XG4gICAgICAvLyAyMy4xLjMuMSBNYXAucHJvdG90eXBlLmNsZWFyKClcbiAgICAgIC8vIDIzLjIuMy4yIFNldC5wcm90b3R5cGUuY2xlYXIoKVxuICAgICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgICBmb3IgKHZhciB0aGF0ID0gdmFsaWRhdGUodGhpcywgTkFNRSksIGRhdGEgPSB0aGF0Ll9pLCBlbnRyeSA9IHRoYXQuX2Y7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm4pIHtcbiAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoZW50cnkucCkgZW50cnkucCA9IGVudHJ5LnAubiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBkZWxldGUgZGF0YVtlbnRyeS5pXTtcbiAgICAgICAgfVxuICAgICAgICB0aGF0Ll9mID0gdGhhdC5fbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhhdFtTSVpFXSA9IDA7XG4gICAgICB9LFxuICAgICAgLy8gMjMuMS4zLjMgTWFwLnByb3RvdHlwZS5kZWxldGUoa2V5KVxuICAgICAgLy8gMjMuMi4zLjQgU2V0LnByb3RvdHlwZS5kZWxldGUodmFsdWUpXG4gICAgICAnZGVsZXRlJzogZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdGhhdCA9IHZhbGlkYXRlKHRoaXMsIE5BTUUpO1xuICAgICAgICB2YXIgZW50cnkgPSBnZXRFbnRyeSh0aGF0LCBrZXkpO1xuICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICB2YXIgbmV4dCA9IGVudHJ5Lm47XG4gICAgICAgICAgdmFyIHByZXYgPSBlbnRyeS5wO1xuICAgICAgICAgIGRlbGV0ZSB0aGF0Ll9pW2VudHJ5LmldO1xuICAgICAgICAgIGVudHJ5LnIgPSB0cnVlO1xuICAgICAgICAgIGlmIChwcmV2KSBwcmV2Lm4gPSBuZXh0O1xuICAgICAgICAgIGlmIChuZXh0KSBuZXh0LnAgPSBwcmV2O1xuICAgICAgICAgIGlmICh0aGF0Ll9mID09IGVudHJ5KSB0aGF0Ll9mID0gbmV4dDtcbiAgICAgICAgICBpZiAodGhhdC5fbCA9PSBlbnRyeSkgdGhhdC5fbCA9IHByZXY7XG4gICAgICAgICAgdGhhdFtTSVpFXS0tO1xuICAgICAgICB9IHJldHVybiAhIWVudHJ5O1xuICAgICAgfSxcbiAgICAgIC8vIDIzLjIuMy42IFNldC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICAgICAgLy8gMjMuMS4zLjUgTWFwLnByb3RvdHlwZS5mb3JFYWNoKGNhbGxiYWNrZm4sIHRoaXNBcmcgPSB1bmRlZmluZWQpXG4gICAgICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgICAgIHZhbGlkYXRlKHRoaXMsIE5BTUUpO1xuICAgICAgICB2YXIgZiA9IGN0eChjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMyk7XG4gICAgICAgIHZhciBlbnRyeTtcbiAgICAgICAgd2hpbGUgKGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhpcy5fZikge1xuICAgICAgICAgIGYoZW50cnkudiwgZW50cnkuaywgdGhpcyk7XG4gICAgICAgICAgLy8gcmV2ZXJ0IHRvIHRoZSBsYXN0IGV4aXN0aW5nIGVudHJ5XG4gICAgICAgICAgd2hpbGUgKGVudHJ5ICYmIGVudHJ5LnIpIGVudHJ5ID0gZW50cnkucDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIDIzLjEuMy43IE1hcC5wcm90b3R5cGUuaGFzKGtleSlcbiAgICAgIC8vIDIzLjIuMy43IFNldC5wcm90b3R5cGUuaGFzKHZhbHVlKVxuICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICAgIHJldHVybiAhIWdldEVudHJ5KHZhbGlkYXRlKHRoaXMsIE5BTUUpLCBrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChERVNDUklQVE9SUykgZFAoQy5wcm90b3R5cGUsICdzaXplJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZSh0aGlzLCBOQU1FKVtTSVpFXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gQztcbiAgfSxcbiAgZGVmOiBmdW5jdGlvbiAodGhhdCwga2V5LCB2YWx1ZSkge1xuICAgIHZhciBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSk7XG4gICAgdmFyIHByZXYsIGluZGV4O1xuICAgIC8vIGNoYW5nZSBleGlzdGluZyBlbnRyeVxuICAgIGlmIChlbnRyeSkge1xuICAgICAgZW50cnkudiA9IHZhbHVlO1xuICAgIC8vIGNyZWF0ZSBuZXcgZW50cnlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhhdC5fbCA9IGVudHJ5ID0ge1xuICAgICAgICBpOiBpbmRleCA9IGZhc3RLZXkoa2V5LCB0cnVlKSwgLy8gPC0gaW5kZXhcbiAgICAgICAgazoga2V5LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGtleVxuICAgICAgICB2OiB2YWx1ZSwgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gdmFsdWVcbiAgICAgICAgcDogcHJldiA9IHRoYXQuX2wsICAgICAgICAgICAgIC8vIDwtIHByZXZpb3VzIGVudHJ5XG4gICAgICAgIG46IHVuZGVmaW5lZCwgICAgICAgICAgICAgICAgICAvLyA8LSBuZXh0IGVudHJ5XG4gICAgICAgIHI6IGZhbHNlICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSByZW1vdmVkXG4gICAgICB9O1xuICAgICAgaWYgKCF0aGF0Ll9mKSB0aGF0Ll9mID0gZW50cnk7XG4gICAgICBpZiAocHJldikgcHJldi5uID0gZW50cnk7XG4gICAgICB0aGF0W1NJWkVdKys7XG4gICAgICAvLyBhZGQgdG8gaW5kZXhcbiAgICAgIGlmIChpbmRleCAhPT0gJ0YnKSB0aGF0Ll9pW2luZGV4XSA9IGVudHJ5O1xuICAgIH0gcmV0dXJuIHRoYXQ7XG4gIH0sXG4gIGdldEVudHJ5OiBnZXRFbnRyeSxcbiAgc2V0U3Ryb25nOiBmdW5jdGlvbiAoQywgTkFNRSwgSVNfTUFQKSB7XG4gICAgLy8gYWRkIC5rZXlzLCAudmFsdWVzLCAuZW50cmllcywgW0BAaXRlcmF0b3JdXG4gICAgLy8gMjMuMS4zLjQsIDIzLjEuMy44LCAyMy4xLjMuMTEsIDIzLjEuMy4xMiwgMjMuMi4zLjUsIDIzLjIuMy44LCAyMy4yLjMuMTAsIDIzLjIuMy4xMVxuICAgICRpdGVyRGVmaW5lKEMsIE5BTUUsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICAgICAgdGhpcy5fdCA9IHZhbGlkYXRlKGl0ZXJhdGVkLCBOQU1FKTsgLy8gdGFyZ2V0XG4gICAgICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgICAgICAvLyBraW5kXG4gICAgICB0aGlzLl9sID0gdW5kZWZpbmVkOyAgICAgICAgICAgICAgICAvLyBwcmV2aW91c1xuICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIHZhciBraW5kID0gdGhhdC5faztcbiAgICAgIHZhciBlbnRyeSA9IHRoYXQuX2w7XG4gICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcbiAgICAgIHdoaWxlIChlbnRyeSAmJiBlbnRyeS5yKSBlbnRyeSA9IGVudHJ5LnA7XG4gICAgICAvLyBnZXQgbmV4dCBlbnRyeVxuICAgICAgaWYgKCF0aGF0Ll90IHx8ICEodGhhdC5fbCA9IGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhhdC5fdC5fZikpIHtcbiAgICAgICAgLy8gb3IgZmluaXNoIHRoZSBpdGVyYXRpb25cbiAgICAgICAgdGhhdC5fdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHN0ZXAoMSk7XG4gICAgICB9XG4gICAgICAvLyByZXR1cm4gc3RlcCBieSBraW5kXG4gICAgICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGVudHJ5LmspO1xuICAgICAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIGVudHJ5LnYpO1xuICAgICAgcmV0dXJuIHN0ZXAoMCwgW2VudHJ5LmssIGVudHJ5LnZdKTtcbiAgICB9LCBJU19NQVAgPyAnZW50cmllcycgOiAndmFsdWVzJywgIUlTX01BUCwgdHJ1ZSk7XG5cbiAgICAvLyBhZGQgW0BAc3BlY2llc10sIDIzLjEuMi4yLCAyMy4yLjIuMlxuICAgIHNldFNwZWNpZXMoTkFNRSk7XG4gIH1cbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24tc3Ryb25nLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///170\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar strong = __webpack_require__(170);\nvar validate = __webpack_require__(64);\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = __webpack_require__(88)(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc2V0LmpzPzc1MjUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIHN0cm9uZyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24tc3Ryb25nJyk7XG52YXIgdmFsaWRhdGUgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgU0VUID0gJ1NldCc7XG5cbi8vIDIzLjIgU2V0IE9iamVjdHNcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbicpKFNFVCwgZnVuY3Rpb24gKGdldCkge1xuICByZXR1cm4gZnVuY3Rpb24gU2V0KCkgeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIHtcbiAgLy8gMjMuMi4zLjEgU2V0LnByb3RvdHlwZS5hZGQodmFsdWUpXG4gIGFkZDogZnVuY3Rpb24gYWRkKHZhbHVlKSB7XG4gICAgcmV0dXJuIHN0cm9uZy5kZWYodmFsaWRhdGUodGhpcywgU0VUKSwgdmFsdWUgPSB2YWx1ZSA9PT0gMCA/IDAgOiB2YWx1ZSwgdmFsdWUpO1xuICB9XG59LCBzdHJvbmcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zZXQuanNcbi8vIG1vZHVsZSBpZCA9IDE3MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///171\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar each = __webpack_require__(35)(0);\nvar redefine = __webpack_require__(19);\nvar meta = __webpack_require__(42);\nvar assign = __webpack_require__(153);\nvar weak = __webpack_require__(173);\nvar isObject = __webpack_require__(6);\nvar fails = __webpack_require__(5);\nvar validate = __webpack_require__(64);\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = __webpack_require__(88)(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYud2Vhay1tYXAuanM/NjQzNSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgZWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgwKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgbWV0YSA9IHJlcXVpcmUoJy4vX21ldGEnKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL19vYmplY3QtYXNzaWduJyk7XG52YXIgd2VhayA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24td2VhaycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIFdFQUtfTUFQID0gJ1dlYWtNYXAnO1xudmFyIGdldFdlYWsgPSBtZXRhLmdldFdlYWs7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZTtcbnZhciB1bmNhdWdodEZyb3plblN0b3JlID0gd2Vhay51ZnN0b3JlO1xudmFyIHRtcCA9IHt9O1xudmFyIEludGVybmFsTWFwO1xuXG52YXIgd3JhcHBlciA9IGZ1bmN0aW9uIChnZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFdlYWtNYXAoKSB7XG4gICAgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7XG4gIH07XG59O1xuXG52YXIgbWV0aG9kcyA9IHtcbiAgLy8gMjMuMy4zLjMgV2Vha01hcC5wcm90b3R5cGUuZ2V0KGtleSlcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgaWYgKGlzT2JqZWN0KGtleSkpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0V2VhayhrZXkpO1xuICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHZhbGlkYXRlKHRoaXMsIFdFQUtfTUFQKSkuZ2V0KGtleSk7XG4gICAgICByZXR1cm4gZGF0YSA/IGRhdGFbdGhpcy5faV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9LFxuICAvLyAyMy4zLjMuNSBXZWFrTWFwLnByb3RvdHlwZS5zZXQoa2V5LCB2YWx1ZSlcbiAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIHJldHVybiB3ZWFrLmRlZih2YWxpZGF0ZSh0aGlzLCBXRUFLX01BUCksIGtleSwgdmFsdWUpO1xuICB9XG59O1xuXG4vLyAyMy4zIFdlYWtNYXAgT2JqZWN0c1xudmFyICRXZWFrTWFwID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uJykoV0VBS19NQVAsIHdyYXBwZXIsIG1ldGhvZHMsIHdlYWssIHRydWUsIHRydWUpO1xuXG4vLyBJRTExIFdlYWtNYXAgZnJvemVuIGtleXMgZml4XG5pZiAoZmFpbHMoZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3ICRXZWFrTWFwKCkuc2V0KChPYmplY3QuZnJlZXplIHx8IE9iamVjdCkodG1wKSwgNykuZ2V0KHRtcCkgIT0gNzsgfSkpIHtcbiAgSW50ZXJuYWxNYXAgPSB3ZWFrLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIFdFQUtfTUFQKTtcbiAgYXNzaWduKEludGVybmFsTWFwLnByb3RvdHlwZSwgbWV0aG9kcyk7XG4gIG1ldGEuTkVFRCA9IHRydWU7XG4gIGVhY2goWydkZWxldGUnLCAnaGFzJywgJ2dldCcsICdzZXQnXSwgZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBwcm90byA9ICRXZWFrTWFwLnByb3RvdHlwZTtcbiAgICB2YXIgbWV0aG9kID0gcHJvdG9ba2V5XTtcbiAgICByZWRlZmluZShwcm90bywga2V5LCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgLy8gc3RvcmUgZnJvemVuIG9iamVjdHMgb24gaW50ZXJuYWwgd2Vha21hcCBzaGltXG4gICAgICBpZiAoaXNPYmplY3QoYSkgJiYgIWlzRXh0ZW5zaWJsZShhKSkge1xuICAgICAgICBpZiAoIXRoaXMuX2YpIHRoaXMuX2YgPSBuZXcgSW50ZXJuYWxNYXAoKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2Zba2V5XShhLCBiKTtcbiAgICAgICAgcmV0dXJuIGtleSA9PSAnc2V0JyA/IHRoaXMgOiByZXN1bHQ7XG4gICAgICAvLyBzdG9yZSBhbGwgdGhlIHJlc3Qgb24gbmF0aXZlIHdlYWttYXBcbiAgICAgIH0gcmV0dXJuIG1ldGhvZC5jYWxsKHRoaXMsIGEsIGIpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYud2Vhay1tYXAuanNcbi8vIG1vZHVsZSBpZCA9IDE3MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///172\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar redefineAll = __webpack_require__(57);\nvar getWeak = __webpack_require__(42).getWeak;\nvar anObject = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\nvar anInstance = __webpack_require__(55);\nvar forOf = __webpack_require__(56);\nvar createArrayMethod = __webpack_require__(35);\nvar $has = __webpack_require__(17);\nvar validate = __webpack_require__(64);\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTczLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29sbGVjdGlvbi13ZWFrLmpzPzdjOTQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG52YXIgZ2V0V2VhayA9IHJlcXVpcmUoJy4vX21ldGEnKS5nZXRXZWFrO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIGNyZWF0ZUFycmF5TWV0aG9kID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpO1xudmFyICRoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBhcnJheUZpbmQgPSBjcmVhdGVBcnJheU1ldGhvZCg1KTtcbnZhciBhcnJheUZpbmRJbmRleCA9IGNyZWF0ZUFycmF5TWV0aG9kKDYpO1xudmFyIGlkID0gMDtcblxuLy8gZmFsbGJhY2sgZm9yIHVuY2F1Z2h0IGZyb3plbiBrZXlzXG52YXIgdW5jYXVnaHRGcm96ZW5TdG9yZSA9IGZ1bmN0aW9uICh0aGF0KSB7XG4gIHJldHVybiB0aGF0Ll9sIHx8ICh0aGF0Ll9sID0gbmV3IFVuY2F1Z2h0RnJvemVuU3RvcmUoKSk7XG59O1xudmFyIFVuY2F1Z2h0RnJvemVuU3RvcmUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYSA9IFtdO1xufTtcbnZhciBmaW5kVW5jYXVnaHRGcm96ZW4gPSBmdW5jdGlvbiAoc3RvcmUsIGtleSkge1xuICByZXR1cm4gYXJyYXlGaW5kKHN0b3JlLmEsIGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBpdFswXSA9PT0ga2V5O1xuICB9KTtcbn07XG5VbmNhdWdodEZyb3plblN0b3JlLnByb3RvdHlwZSA9IHtcbiAgZ2V0OiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIGVudHJ5ID0gZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gICAgaWYgKGVudHJ5KSByZXR1cm4gZW50cnlbMV07XG4gIH0sXG4gIGhhczogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiAhIWZpbmRVbmNhdWdodEZyb3plbih0aGlzLCBrZXkpO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgdmFyIGVudHJ5ID0gZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gICAgaWYgKGVudHJ5KSBlbnRyeVsxXSA9IHZhbHVlO1xuICAgIGVsc2UgdGhpcy5hLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSxcbiAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgaW5kZXggPSBhcnJheUZpbmRJbmRleCh0aGlzLmEsIGZ1bmN0aW9uIChpdCkge1xuICAgICAgcmV0dXJuIGl0WzBdID09PSBrZXk7XG4gICAgfSk7XG4gICAgaWYgKH5pbmRleCkgdGhpcy5hLnNwbGljZShpbmRleCwgMSk7XG4gICAgcmV0dXJuICEhfmluZGV4O1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0Q29uc3RydWN0b3I6IGZ1bmN0aW9uICh3cmFwcGVyLCBOQU1FLCBJU19NQVAsIEFEREVSKSB7XG4gICAgdmFyIEMgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBpdGVyYWJsZSkge1xuICAgICAgYW5JbnN0YW5jZSh0aGF0LCBDLCBOQU1FLCAnX2knKTtcbiAgICAgIHRoYXQuX3QgPSBOQU1FOyAgICAgIC8vIGNvbGxlY3Rpb24gdHlwZVxuICAgICAgdGhhdC5faSA9IGlkKys7ICAgICAgLy8gY29sbGVjdGlvbiBpZFxuICAgICAgdGhhdC5fbCA9IHVuZGVmaW5lZDsgLy8gbGVhayBzdG9yZSBmb3IgdW5jYXVnaHQgZnJvemVuIG9iamVjdHNcbiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTtcbiAgICB9KTtcbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwge1xuICAgICAgLy8gMjMuMy4zLjIgV2Vha01hcC5wcm90b3R5cGUuZGVsZXRlKGtleSlcbiAgICAgIC8vIDIzLjQuMy4zIFdlYWtTZXQucHJvdG90eXBlLmRlbGV0ZSh2YWx1ZSlcbiAgICAgICdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmICghaXNPYmplY3Qoa2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB2YXIgZGF0YSA9IGdldFdlYWsoa2V5KTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHZhbGlkYXRlKHRoaXMsIE5BTUUpKVsnZGVsZXRlJ10oa2V5KTtcbiAgICAgICAgcmV0dXJuIGRhdGEgJiYgJGhhcyhkYXRhLCB0aGlzLl9pKSAmJiBkZWxldGUgZGF0YVt0aGlzLl9pXTtcbiAgICAgIH0sXG4gICAgICAvLyAyMy4zLjMuNCBXZWFrTWFwLnByb3RvdHlwZS5oYXMoa2V5KVxuICAgICAgLy8gMjMuNC4zLjQgV2Vha1NldC5wcm90b3R5cGUuaGFzKHZhbHVlKVxuICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICAgIGlmICghaXNPYmplY3Qoa2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB2YXIgZGF0YSA9IGdldFdlYWsoa2V5KTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHZhbGlkYXRlKHRoaXMsIE5BTUUpKS5oYXMoa2V5KTtcbiAgICAgICAgcmV0dXJuIGRhdGEgJiYgJGhhcyhkYXRhLCB0aGlzLl9pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gQztcbiAgfSxcbiAgZGVmOiBmdW5jdGlvbiAodGhhdCwga2V5LCB2YWx1ZSkge1xuICAgIHZhciBkYXRhID0gZ2V0V2Vhayhhbk9iamVjdChrZXkpLCB0cnVlKTtcbiAgICBpZiAoZGF0YSA9PT0gdHJ1ZSkgdW5jYXVnaHRGcm96ZW5TdG9yZSh0aGF0KS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgZWxzZSBkYXRhW3RoYXQuX2ldID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoYXQ7XG4gIH0sXG4gIHVmc3RvcmU6IHVuY2F1Z2h0RnJvemVuU3RvcmVcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24td2Vhay5qc1xuLy8gbW9kdWxlIGlkID0gMTczXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///173\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = __webpack_require__(33);\nvar toLength = __webpack_require__(12);\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8taW5kZXguanM/ZjAzZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2luZGV4XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gIHZhciBudW1iZXIgPSB0b0ludGVnZXIoaXQpO1xuICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgobnVtYmVyKTtcbiAgaWYgKG51bWJlciAhPT0gbGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBsZW5ndGghJyk7XG4gIHJldHVybiBsZW5ndGg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///174\n")},function(module,exports,__webpack_require__){eval("// all object keys, includes non-enumerable and symbols\nvar gOPN = __webpack_require__(53);\nvar gOPS = __webpack_require__(81);\nvar anObject = __webpack_require__(3);\nvar Reflect = __webpack_require__(4).Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb3duLWtleXMuanM/NjE0YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBSZWZsZWN0ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuUmVmbGVjdDtcbm1vZHVsZS5leHBvcnRzID0gUmVmbGVjdCAmJiBSZWZsZWN0Lm93bktleXMgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdPUE4uZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgcmV0dXJuIGdldFN5bWJvbHMgPyBrZXlzLmNvbmNhdChnZXRTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb3duLWtleXMuanNcbi8vIG1vZHVsZSBpZCA9IDE3NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///175\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = __webpack_require__(82);\nvar isObject = __webpack_require__(6);\nvar toLength = __webpack_require__(12);\nvar ctx = __webpack_require__(27);\nvar IS_CONCAT_SPREADABLE = __webpack_require__(8)('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZmxhdHRlbi1pbnRvLWFycmF5LmpzPzIwNWEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1mbGF0TWFwLyNzZWMtRmxhdHRlbkludG9BcnJheVxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL19pcy1hcnJheScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBJU19DT05DQVRfU1BSRUFEQUJMRSA9IHJlcXVpcmUoJy4vX3drcycpKCdpc0NvbmNhdFNwcmVhZGFibGUnKTtcblxuZnVuY3Rpb24gZmxhdHRlbkludG9BcnJheSh0YXJnZXQsIG9yaWdpbmFsLCBzb3VyY2UsIHNvdXJjZUxlbiwgc3RhcnQsIGRlcHRoLCBtYXBwZXIsIHRoaXNBcmcpIHtcbiAgdmFyIHRhcmdldEluZGV4ID0gc3RhcnQ7XG4gIHZhciBzb3VyY2VJbmRleCA9IDA7XG4gIHZhciBtYXBGbiA9IG1hcHBlciA/IGN0eChtYXBwZXIsIHRoaXNBcmcsIDMpIDogZmFsc2U7XG4gIHZhciBlbGVtZW50LCBzcHJlYWRhYmxlO1xuXG4gIHdoaWxlIChzb3VyY2VJbmRleCA8IHNvdXJjZUxlbikge1xuICAgIGlmIChzb3VyY2VJbmRleCBpbiBzb3VyY2UpIHtcbiAgICAgIGVsZW1lbnQgPSBtYXBGbiA/IG1hcEZuKHNvdXJjZVtzb3VyY2VJbmRleF0sIHNvdXJjZUluZGV4LCBvcmlnaW5hbCkgOiBzb3VyY2Vbc291cmNlSW5kZXhdO1xuXG4gICAgICBzcHJlYWRhYmxlID0gZmFsc2U7XG4gICAgICBpZiAoaXNPYmplY3QoZWxlbWVudCkpIHtcbiAgICAgICAgc3ByZWFkYWJsZSA9IGVsZW1lbnRbSVNfQ09OQ0FUX1NQUkVBREFCTEVdO1xuICAgICAgICBzcHJlYWRhYmxlID0gc3ByZWFkYWJsZSAhPT0gdW5kZWZpbmVkID8gISFzcHJlYWRhYmxlIDogaXNBcnJheShlbGVtZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNwcmVhZGFibGUgJiYgZGVwdGggPiAwKSB7XG4gICAgICAgIHRhcmdldEluZGV4ID0gZmxhdHRlbkludG9BcnJheSh0YXJnZXQsIG9yaWdpbmFsLCBlbGVtZW50LCB0b0xlbmd0aChlbGVtZW50Lmxlbmd0aCksIHRhcmdldEluZGV4LCBkZXB0aCAtIDEpIC0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0YXJnZXRJbmRleCA+PSAweDFmZmZmZmZmZmZmZmZmKSB0aHJvdyBUeXBlRXJyb3IoKTtcbiAgICAgICAgdGFyZ2V0W3RhcmdldEluZGV4XSA9IGVsZW1lbnQ7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldEluZGV4Kys7XG4gICAgfVxuICAgIHNvdXJjZUluZGV4Kys7XG4gIH1cbiAgcmV0dXJuIHRhcmdldEluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW5JbnRvQXJyYXk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZsYXR0ZW4taW50by1hcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gMTc2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///176\n")},function(module,exports,__webpack_require__){eval("// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = __webpack_require__(12);\nvar repeat = __webpack_require__(109);\nvar defined = __webpack_require__(32);\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXBhZC5qcz9kOTU0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0cmluZy1wYWQtc3RhcnQtZW5kXG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciByZXBlYXQgPSByZXF1aXJlKCcuL19zdHJpbmctcmVwZWF0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgbWF4TGVuZ3RoLCBmaWxsU3RyaW5nLCBsZWZ0KSB7XG4gIHZhciBTID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICB2YXIgc3RyaW5nTGVuZ3RoID0gUy5sZW5ndGg7XG4gIHZhciBmaWxsU3RyID0gZmlsbFN0cmluZyA9PT0gdW5kZWZpbmVkID8gJyAnIDogU3RyaW5nKGZpbGxTdHJpbmcpO1xuICB2YXIgaW50TWF4TGVuZ3RoID0gdG9MZW5ndGgobWF4TGVuZ3RoKTtcbiAgaWYgKGludE1heExlbmd0aCA8PSBzdHJpbmdMZW5ndGggfHwgZmlsbFN0ciA9PSAnJykgcmV0dXJuIFM7XG4gIHZhciBmaWxsTGVuID0gaW50TWF4TGVuZ3RoIC0gc3RyaW5nTGVuZ3RoO1xuICB2YXIgc3RyaW5nRmlsbGVyID0gcmVwZWF0LmNhbGwoZmlsbFN0ciwgTWF0aC5jZWlsKGZpbGxMZW4gLyBmaWxsU3RyLmxlbmd0aCkpO1xuICBpZiAoc3RyaW5nRmlsbGVyLmxlbmd0aCA+IGZpbGxMZW4pIHN0cmluZ0ZpbGxlciA9IHN0cmluZ0ZpbGxlci5zbGljZSgwLCBmaWxsTGVuKTtcbiAgcmV0dXJuIGxlZnQgPyBzdHJpbmdGaWxsZXIgKyBTIDogUyArIHN0cmluZ0ZpbGxlcjtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1wYWQuanNcbi8vIG1vZHVsZSBpZCA9IDE3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///177\n")},function(module,exports,__webpack_require__){eval("var getKeys = __webpack_require__(50);\nvar toIObject = __webpack_require__(24);\nvar isEnum = __webpack_require__(71).f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXRvLWFycmF5LmpzPzk0YTEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBpc0VudW0gPSByZXF1aXJlKCcuL19vYmplY3QtcGllJykuZjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlzRW50cmllcykge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3QoaXQpO1xuICAgIHZhciBrZXlzID0gZ2V0S2V5cyhPKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChsZW5ndGggPiBpKSBpZiAoaXNFbnVtLmNhbGwoTywga2V5ID0ga2V5c1tpKytdKSkge1xuICAgICAgcmVzdWx0LnB1c2goaXNFbnRyaWVzID8gW2tleSwgT1trZXldXSA6IE9ba2V5XSk7XG4gICAgfSByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXRvLWFycmF5LmpzXG4vLyBtb2R1bGUgaWQgPSAxNzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///178\n")},function(module,exports,__webpack_require__){eval('// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = __webpack_require__(72);\nvar from = __webpack_require__(180);\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + "#toJSON isn\'t generic");\n return from(this);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29sbGVjdGlvbi10by1qc29uLmpzPzVkNzAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgZnJvbSA9IHJlcXVpcmUoJy4vX2FycmF5LWZyb20taXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICBpZiAoY2xhc3NvZih0aGlzKSAhPSBOQU1FKSB0aHJvdyBUeXBlRXJyb3IoTkFNRSArIFwiI3RvSlNPTiBpc24ndCBnZW5lcmljXCIpO1xuICAgIHJldHVybiBmcm9tKHRoaXMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29sbGVjdGlvbi10by1qc29uLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///179\n')},function(module,exports,__webpack_require__){eval("var forOf = __webpack_require__(56);\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTgwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktZnJvbS1pdGVyYWJsZS5qcz80MDZlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyLCBJVEVSQVRPUikge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGZvck9mKGl0ZXIsIGZhbHNlLCByZXN1bHQucHVzaCwgcmVzdWx0LCBJVEVSQVRPUik7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1mcm9tLWl0ZXJhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSAxODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///180\n")},function(module,exports){eval("// https://rwaldron.github.io/proposal-math-extensions/\nmodule.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {\n if (\n arguments.length === 0\n // eslint-disable-next-line no-self-compare\n || x != x\n // eslint-disable-next-line no-self-compare\n || inLow != inLow\n // eslint-disable-next-line no-self-compare\n || inHigh != inHigh\n // eslint-disable-next-line no-self-compare\n || outLow != outLow\n // eslint-disable-next-line no-self-compare\n || outHigh != outHigh\n ) return NaN;\n if (x === Infinity || x === -Infinity) return x;\n return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTgxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1zY2FsZS5qcz81OThmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbm1vZHVsZS5leHBvcnRzID0gTWF0aC5zY2FsZSB8fCBmdW5jdGlvbiBzY2FsZSh4LCBpbkxvdywgaW5IaWdoLCBvdXRMb3csIG91dEhpZ2gpIHtcbiAgaWYgKFxuICAgIGFyZ3VtZW50cy5sZW5ndGggPT09IDBcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIHx8IHggIT0geFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgfHwgaW5Mb3cgIT0gaW5Mb3dcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIHx8IGluSGlnaCAhPSBpbkhpZ2hcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIHx8IG91dExvdyAhPSBvdXRMb3dcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIHx8IG91dEhpZ2ggIT0gb3V0SGlnaFxuICApIHJldHVybiBOYU47XG4gIGlmICh4ID09PSBJbmZpbml0eSB8fCB4ID09PSAtSW5maW5pdHkpIHJldHVybiB4O1xuICByZXR1cm4gKHggLSBpbkxvdykgKiAob3V0SGlnaCAtIG91dExvdykgLyAoaW5IaWdoIC0gaW5Mb3cpICsgb3V0TG93O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1zY2FsZS5qc1xuLy8gbW9kdWxlIGlkID0gMTgxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///181\n")},function(module,exports){eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTgyLmpzIiwic291cmNlcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///182\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(93);\nvar $export = __webpack_require__(21);\nvar redefine = __webpack_require__(185);\nvar hide = __webpack_require__(58);\nvar has = __webpack_require__(59);\nvar Iterators = __webpack_require__(74);\nvar $iterCreate = __webpack_require__(419);\nvar setToStringTag = __webpack_require__(96);\nvar getPrototypeOf = __webpack_require__(189);\nvar ITERATOR = __webpack_require__(23)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = (!BUGGY && $native) || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTgzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qcz9iYzgwIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciAkaXRlckNyZWF0ZSA9IHJlcXVpcmUoJy4vX2l0ZXItY3JlYXRlJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1kgPSAhKFtdLmtleXMgJiYgJ25leHQnIGluIFtdLmtleXMoKSk7IC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbnZhciBGRl9JVEVSQVRPUiA9ICdAQGl0ZXJhdG9yJztcbnZhciBLRVlTID0gJ2tleXMnO1xudmFyIFZBTFVFUyA9ICd2YWx1ZXMnO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEJhc2UsIE5BTUUsIENvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCkge1xuICAkaXRlckNyZWF0ZShDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG4gIHZhciBnZXRNZXRob2QgPSBmdW5jdGlvbiAoa2luZCkge1xuICAgIGlmICghQlVHR1kgJiYga2luZCBpbiBwcm90bykgcmV0dXJuIHByb3RvW2tpbmRdO1xuICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgIH0gcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gIH07XG4gIHZhciBUQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIHZhciBERUZfVkFMVUVTID0gREVGQVVMVCA9PSBWQUxVRVM7XG4gIHZhciBWQUxVRVNfQlVHID0gZmFsc2U7XG4gIHZhciBwcm90byA9IEJhc2UucHJvdG90eXBlO1xuICB2YXIgJG5hdGl2ZSA9IHByb3RvW0lURVJBVE9SXSB8fCBwcm90b1tGRl9JVEVSQVRPUl0gfHwgREVGQVVMVCAmJiBwcm90b1tERUZBVUxUXTtcbiAgdmFyICRkZWZhdWx0ID0gKCFCVUdHWSAmJiAkbmF0aXZlKSB8fCBnZXRNZXRob2QoREVGQVVMVCk7XG4gIHZhciAkZW50cmllcyA9IERFRkFVTFQgPyAhREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKCdlbnRyaWVzJykgOiB1bmRlZmluZWQ7XG4gIHZhciAkYW55TmF0aXZlID0gTkFNRSA9PSAnQXJyYXknID8gcHJvdG8uZW50cmllcyB8fCAkbmF0aXZlIDogJG5hdGl2ZTtcbiAgdmFyIG1ldGhvZHMsIGtleSwgSXRlcmF0b3JQcm90b3R5cGU7XG4gIC8vIEZpeCBuYXRpdmVcbiAgaWYgKCRhbnlOYXRpdmUpIHtcbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKCRhbnlOYXRpdmUuY2FsbChuZXcgQmFzZSgpKSk7XG4gICAgaWYgKEl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcbiAgICAgIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpO1xuICAgICAgLy8gZml4IGZvciBzb21lIG9sZCBlbmdpbmVzXG4gICAgICBpZiAoIUxJQlJBUlkgJiYgIWhhcyhJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IpKSBoaWRlKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG4gICAgfVxuICB9XG4gIC8vIGZpeCBBcnJheSN7dmFsdWVzLCBAQGl0ZXJhdG9yfS5uYW1lIGluIFY4IC8gRkZcbiAgaWYgKERFRl9WQUxVRVMgJiYgJG5hdGl2ZSAmJiAkbmF0aXZlLm5hbWUgIT09IFZBTFVFUykge1xuICAgIFZBTFVFU19CVUcgPSB0cnVlO1xuICAgICRkZWZhdWx0ID0gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gJG5hdGl2ZS5jYWxsKHRoaXMpOyB9O1xuICB9XG4gIC8vIERlZmluZSBpdGVyYXRvclxuICBpZiAoKCFMSUJSQVJZIHx8IEZPUkNFRCkgJiYgKEJVR0dZIHx8IFZBTFVFU19CVUcgfHwgIXByb3RvW0lURVJBVE9SXSkpIHtcbiAgICBoaWRlKHByb3RvLCBJVEVSQVRPUiwgJGRlZmF1bHQpO1xuICB9XG4gIC8vIFBsdWcgZm9yIGxpYnJhcnlcbiAgSXRlcmF0b3JzW05BTUVdID0gJGRlZmF1bHQ7XG4gIEl0ZXJhdG9yc1tUQUddID0gcmV0dXJuVGhpcztcbiAgaWYgKERFRkFVTFQpIHtcbiAgICBtZXRob2RzID0ge1xuICAgICAgdmFsdWVzOiBERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6IElTX1NFVCA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKEtFWVMpLFxuICAgICAgZW50cmllczogJGVudHJpZXNcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoa2V5IGluIG1ldGhvZHMpIHtcbiAgICAgIGlmICghKGtleSBpbiBwcm90bykpIHJlZGVmaW5lKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7XG4gICAgfSBlbHNlICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKEJVR0dZIHx8IFZBTFVFU19CVUcpLCBOQU1FLCBtZXRob2RzKTtcbiAgfVxuICByZXR1cm4gbWV0aG9kcztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDE4M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///183\n")},function(module,exports,__webpack_require__){eval("module.exports = !__webpack_require__(44) && !__webpack_require__(66)(function () {\n return Object.defineProperty(__webpack_require__(131)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qcz80OWYwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnZGl2JyksICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faWU4LWRvbS1kZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDE4NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///184\n")},function(module,exports,__webpack_require__){eval("module.exports = __webpack_require__(58);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS5qcz9mM2NkIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faGlkZScpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzXG4vLyBtb2R1bGUgaWQgPSAxODVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///185\n")},function(module,exports,__webpack_require__){eval("var has = __webpack_require__(59);\nvar toIObject = __webpack_require__(45);\nvar arrayIndexOf = __webpack_require__(421)(false);\nvar IE_PROTO = __webpack_require__(135)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy1pbnRlcm5hbC5qcz8yMWI4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgYXJyYXlJbmRleE9mID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKShmYWxzZSk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pIGlmIChrZXkgIT0gSUVfUFJPVE8pIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzXG4vLyBtb2R1bGUgaWQgPSAxODZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///186\n")},function(module,exports,__webpack_require__){eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(75);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pb2JqZWN0LmpzPzMxNGUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAxODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///187\n")},function(module,exports,__webpack_require__){eval("var document = __webpack_require__(22).document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19odG1sLmpzPzQ0ZjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG5tb2R1bGUuZXhwb3J0cyA9IGRvY3VtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19odG1sLmpzXG4vLyBtb2R1bGUgaWQgPSAxODhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///188\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(59);\nvar toObject = __webpack_require__(76);\nvar IE_PROTO = __webpack_require__(135)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzPzNmM2MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvIDogbnVsbDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdwby5qc1xuLy8gbW9kdWxlIGlkID0gMTg5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///189\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(423);\nvar global = __webpack_require__(22);\nvar hide = __webpack_require__(58);\nvar Iterators = __webpack_require__(74);\nvar TO_STRING_TAG = __webpack_require__(23)('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUuanM/ZmFkMyJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuL2VzNi5hcnJheS5pdGVyYXRvcicpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgVE9fU1RSSU5HX1RBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG52YXIgRE9NSXRlcmFibGVzID0gKCdDU1NSdWxlTGlzdCxDU1NTdHlsZURlY2xhcmF0aW9uLENTU1ZhbHVlTGlzdCxDbGllbnRSZWN0TGlzdCxET01SZWN0TGlzdCxET01TdHJpbmdMaXN0LCcgK1xuICAnRE9NVG9rZW5MaXN0LERhdGFUcmFuc2Zlckl0ZW1MaXN0LEZpbGVMaXN0LEhUTUxBbGxDb2xsZWN0aW9uLEhUTUxDb2xsZWN0aW9uLEhUTUxGb3JtRWxlbWVudCxIVE1MU2VsZWN0RWxlbWVudCwnICtcbiAgJ01lZGlhTGlzdCxNaW1lVHlwZUFycmF5LE5hbWVkTm9kZU1hcCxOb2RlTGlzdCxQYWludFJlcXVlc3RMaXN0LFBsdWdpbixQbHVnaW5BcnJheSxTVkdMZW5ndGhMaXN0LFNWR051bWJlckxpc3QsJyArXG4gICdTVkdQYXRoU2VnTGlzdCxTVkdQb2ludExpc3QsU1ZHU3RyaW5nTGlzdCxTVkdUcmFuc2Zvcm1MaXN0LFNvdXJjZUJ1ZmZlckxpc3QsU3R5bGVTaGVldExpc3QsVGV4dFRyYWNrQ3VlTGlzdCwnICtcbiAgJ1RleHRUcmFja0xpc3QsVG91Y2hMaXN0Jykuc3BsaXQoJywnKTtcblxuZm9yICh2YXIgaSA9IDA7IGkgPCBET01JdGVyYWJsZXMubGVuZ3RoOyBpKyspIHtcbiAgdmFyIE5BTUUgPSBET01JdGVyYWJsZXNbaV07XG4gIHZhciBDb2xsZWN0aW9uID0gZ2xvYmFsW05BTUVdO1xuICB2YXIgcHJvdG8gPSBDb2xsZWN0aW9uICYmIENvbGxlY3Rpb24ucHJvdG90eXBlO1xuICBpZiAocHJvdG8gJiYgIXByb3RvW1RPX1NUUklOR19UQUddKSBoaWRlKHByb3RvLCBUT19TVFJJTkdfVEFHLCBOQU1FKTtcbiAgSXRlcmF0b3JzW05BTUVdID0gSXRlcmF0b3JzLkFycmF5O1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qc1xuLy8gbW9kdWxlIGlkID0gMTkwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///190\n")},function(module,exports,__webpack_require__){eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(75);\nvar TAG = __webpack_require__(23)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jbGFzc29mLmpzPzQ1OGYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanNcbi8vIG1vZHVsZSBpZCA9IDE5MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///191\n")},function(module,exports,__webpack_require__){eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(41);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNhbGwuanM/OWFjNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIGVudHJpZXMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW50cmllcyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuICAvLyA3LjQuNiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCBjb21wbGV0aW9uKVxuICB9IGNhdGNoIChlKSB7XG4gICAgdmFyIHJldCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIGFuT2JqZWN0KHJldC5jYWxsKGl0ZXJhdG9yKSk7XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNhbGwuanNcbi8vIG1vZHVsZSBpZCA9IDE5MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///192\n")},function(module,exports,__webpack_require__){eval("// check on default Array iterator\nvar Iterators = __webpack_require__(74);\nvar ITERATOR = __webpack_require__(23)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1hcnJheS1pdGVyLmpzPzMyMWMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b1tJVEVSQVRPUl0gPT09IGl0KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qc1xuLy8gbW9kdWxlIGlkID0gMTkzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///193\n")},function(module,exports,__webpack_require__){eval("var classof = __webpack_require__(191);\nvar ITERATOR = __webpack_require__(23)('iterator');\nvar Iterators = __webpack_require__(74);\nmodule.exports = __webpack_require__(13).getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcz9kZGZiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5nZXRJdGVyYXRvck1ldGhvZCA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgIT0gdW5kZWZpbmVkKSByZXR1cm4gaXRbSVRFUkFUT1JdXG4gICAgfHwgaXRbJ0BAaXRlcmF0b3InXVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzXG4vLyBtb2R1bGUgaWQgPSAxOTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///194\n")},function(module,exports,__webpack_require__){eval("// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(41);\nvar aFunction = __webpack_require__(94);\nvar SPECIES = __webpack_require__(23)('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zcGVjaWVzLWNvbnN0cnVjdG9yLmpzP2I3Y2MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4zLjIwIFNwZWNpZXNDb25zdHJ1Y3RvcihPLCBkZWZhdWx0Q29uc3RydWN0b3IpXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBEKSB7XG4gIHZhciBDID0gYW5PYmplY3QoTykuY29uc3RydWN0b3I7XG4gIHZhciBTO1xuICByZXR1cm4gQyA9PT0gdW5kZWZpbmVkIHx8IChTID0gYW5PYmplY3QoQylbU1BFQ0lFU10pID09IHVuZGVmaW5lZCA/IEQgOiBhRnVuY3Rpb24oUyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDE5NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///195\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(65);\nvar invoke = __webpack_require__(429);\nvar html = __webpack_require__(188);\nvar cel = __webpack_require__(131);\nvar global = __webpack_require__(22);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(75)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190YXNrLmpzPzJmOGQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGludm9rZSA9IHJlcXVpcmUoJy4vX2ludm9rZScpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuL19odG1sJyk7XG52YXIgY2VsID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBzZXRUYXNrID0gZ2xvYmFsLnNldEltbWVkaWF0ZTtcbnZhciBjbGVhclRhc2sgPSBnbG9iYWwuY2xlYXJJbW1lZGlhdGU7XG52YXIgTWVzc2FnZUNoYW5uZWwgPSBnbG9iYWwuTWVzc2FnZUNoYW5uZWw7XG52YXIgRGlzcGF0Y2ggPSBnbG9iYWwuRGlzcGF0Y2g7XG52YXIgY291bnRlciA9IDA7XG52YXIgcXVldWUgPSB7fTtcbnZhciBPTlJFQURZU1RBVEVDSEFOR0UgPSAnb25yZWFkeXN0YXRlY2hhbmdlJztcbnZhciBkZWZlciwgY2hhbm5lbCwgcG9ydDtcbnZhciBydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpZCA9ICt0aGlzO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gIGlmIChxdWV1ZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICB2YXIgZm4gPSBxdWV1ZVtpZF07XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgICBmbigpO1xuICB9XG59O1xudmFyIGxpc3RlbmVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gIHJ1bi5jYWxsKGV2ZW50LmRhdGEpO1xufTtcbi8vIE5vZGUuanMgMC45KyAmIElFMTArIGhhcyBzZXRJbW1lZGlhdGUsIG90aGVyd2lzZTpcbmlmICghc2V0VGFzayB8fCAhY2xlYXJUYXNrKSB7XG4gIHNldFRhc2sgPSBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoZm4pIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIHZhciBpID0gMTtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgcXVldWVbKytjb3VudGVyXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgICAgaW52b2tlKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nID8gZm4gOiBGdW5jdGlvbihmbiksIGFyZ3MpO1xuICAgIH07XG4gICAgZGVmZXIoY291bnRlcik7XG4gICAgcmV0dXJuIGNvdW50ZXI7XG4gIH07XG4gIGNsZWFyVGFzayA9IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGlkKSB7XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgfTtcbiAgLy8gTm9kZS5qcyAwLjgtXG4gIGlmIChyZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2VzcycpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIFNwaGVyZSAoSlMgZ2FtZSBlbmdpbmUpIERpc3BhdGNoIEFQSVxuICB9IGVsc2UgaWYgKERpc3BhdGNoICYmIERpc3BhdGNoLm5vdykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBEaXNwYXRjaC5ub3coY3R4KHJ1biwgaWQsIDEpKTtcbiAgICB9O1xuICAvLyBCcm93c2VycyB3aXRoIE1lc3NhZ2VDaGFubmVsLCBpbmNsdWRlcyBXZWJXb3JrZXJzXG4gIH0gZWxzZSBpZiAoTWVzc2FnZUNoYW5uZWwpIHtcbiAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgcG9ydCA9IGNoYW5uZWwucG9ydDI7XG4gICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBsaXN0ZW5lcjtcbiAgICBkZWZlciA9IGN0eChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0LCAxKTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBwb3N0TWVzc2FnZSwgc2tpcCBXZWJXb3JrZXJzXG4gIC8vIElFOCBoYXMgcG9zdE1lc3NhZ2UsIGJ1dCBpdCdzIHN5bmMgJiB0eXBlb2YgaXRzIHBvc3RNZXNzYWdlIGlzICdvYmplY3QnXG4gIH0gZWxzZSBpZiAoZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiYgdHlwZW9mIHBvc3RNZXNzYWdlID09ICdmdW5jdGlvbicgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHRzKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShpZCArICcnLCAnKicpO1xuICAgIH07XG4gICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0ZW5lciwgZmFsc2UpO1xuICAvLyBJRTgtXG4gIH0gZWxzZSBpZiAoT05SRUFEWVNUQVRFQ0hBTkdFIGluIGNlbCgnc2NyaXB0JykpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgaHRtbC5hcHBlbmRDaGlsZChjZWwoJ3NjcmlwdCcpKVtPTlJFQURZU1RBVEVDSEFOR0VdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICBydW4uY2FsbChpZCk7XG4gICAgICB9O1xuICAgIH07XG4gIC8vIFJlc3Qgb2xkIGJyb3dzZXJzXG4gIH0gZWxzZSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHNldFRpbWVvdXQoY3R4KHJ1biwgaWQsIDEpLCAwKTtcbiAgICB9O1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXRUYXNrLFxuICBjbGVhcjogY2xlYXJUYXNrXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanNcbi8vIG1vZHVsZSBpZCA9IDE5NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///196\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wZXJmb3JtLmpzPzc0ZDAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiB7IGU6IGZhbHNlLCB2OiBleGVjKCkgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB7IGU6IHRydWUsIHY6IGUgfTtcbiAgfVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wZXJmb3JtLmpzXG4vLyBtb2R1bGUgaWQgPSAxOTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///197\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(41);\nvar isObject = __webpack_require__(36);\nvar newPromiseCapability = __webpack_require__(138);\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9taXNlLXJlc29sdmUuanM/N2M5NSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDLCB4KSB7XG4gIGFuT2JqZWN0KEMpO1xuICBpZiAoaXNPYmplY3QoeCkgJiYgeC5jb25zdHJ1Y3RvciA9PT0gQykgcmV0dXJuIHg7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYoQyk7XG4gIHZhciByZXNvbHZlID0gcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgcmVzb2x2ZSh4KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTk4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///198\n")},function(module,exports,__webpack_require__){eval("var ITERATOR = __webpack_require__(23)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qcz83NThkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uICgpIHsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBza2lwQ2xvc2luZykge1xuICBpZiAoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNhZmUgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gWzddO1xuICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpO1xuICAgIGl0ZXIubmV4dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgZG9uZTogc2FmZSA9IHRydWUgfTsgfTtcbiAgICBhcnJbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcjsgfTtcbiAgICBleGVjKGFycik7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZXRlY3QuanNcbi8vIG1vZHVsZSBpZCA9IDE5OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///199\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(438), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzPzBiODMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eS5qc1xuLy8gbW9kdWxlIGlkID0gMjAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///200\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.log = undefined;\n\nvar _loglevel = __webpack_require__(7);\n\nvar _loglevel2 = _interopRequireDefault(_loglevel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar a = _loglevel2.default.getLogger('address-allocation');\nvar b = _loglevel2.default.getLogger('Bus');\nvar c = _loglevel2.default.getLogger('MessageBus');\nvar d = _loglevel2.default.getLogger('CoreDiscovery');\nvar e = _loglevel2.default.getLogger('GraphConnector');\nvar f = _loglevel2.default.getLogger('HypertyResourcesStorage');\nvar g = _loglevel2.default.getLogger('IdentityModule');\nvar h = _loglevel2.default.getLogger('PEP');\nvar i = _loglevel2.default.getLogger('P2PConnectionResolve');\nvar j = _loglevel2.default.getLogger('Registry');\nvar k = _loglevel2.default.getLogger('RuntimeUA');\nvar l = _loglevel2.default.getLogger('Loader');\nvar m = _loglevel2.default.getLogger('Descriptors');\nvar n = _loglevel2.default.getLogger('DataObjectsStorage');\nvar o = _loglevel2.default.getLogger('Subscription');\nvar p = _loglevel2.default.getLogger('SubscriptionManager');\nvar q = _loglevel2.default.getLogger('ObserverObject');\nvar r = _loglevel2.default.getLogger('ReporterObject');\nvar s = _loglevel2.default.getLogger('SynSubscription');\nvar t = _loglevel2.default.getLogger('SyncherManager');\nvar u = _loglevel2.default.getLogger('IdentityManager');\nvar v = _loglevel2.default.getLogger('CryptoManager');\nvar x = _loglevel2.default.getLogger('Pipeline');\n\nexports.log = _loglevel2.default;\n\n/**\r\n 0 actual logging methods, ordered and available as:\r\n\r\n 0 - log.trace(msg)\r\n 1 - log.debug(msg)\r\n 2 - log.info(msg)\r\n 3 - log.warn(msg)\r\n 4 - log.error(msg)\r\n\r\n log.log(msg) is also available, as an alias for log.debug(msg), to improve compatibility with console, and make migration easier.\r\n\r\n Exact output formatting of these will depend on the console available in the current context of your application. For example, many environments will include a full stack trace with all trace() calls, and icons or similar to highlight other calls.\r\n\r\n These methods should never fail in any environment, even if no console object is currently available, and should always fall back to an available log method even if the specific method called (e.g. warn) isn't available.\r\n\r\n Be aware that all this means that these method won't necessarily always produce exactly the output you expect in every environment; loglevel only guarantees that these methods will never explode on you, and that it will call the most relevant method it can find, with your argument. Firefox is a notable example here: due to a current Firefox bug log.trace(msg) calls in Firefox will print only the stacktrace, and won't include any passed message arguments.\r\n\r\n*/\n\n// address-allocation\n\na.setLevel(3);\n\n// Bus\nb.setLevel(3);\n\n// MessageBus\nc.setLevel(0);\n\n// CoreDiscovery\nd.setLevel(5);\n\n// GraphConnector\ne.setLevel(5);\n\n// HypertyResourcesStorage\nf.setLevel(3);\n\n// IdentityModule\ng.setLevel(0);\n\n// PEP\nh.setLevel(3);\n\n// P2PConnectionResolve\ni.setLevel(3);\n\n// Registry\nj.setLevel(3);\n\n// RuntimeUA\nk.setLevel(3);\n\n// Loader\nl.setLevel(3);\n\n// Descriptors\nm.setLevel(3);\n\n// DataObjectsStorage\nn.setLevel(3);\n\n// Subscription\no.setLevel(3);\n\n// SubscriptionManager\np.setLevel(3);\n\n// ObserverObject\nq.setLevel(3);\n\n// ReporterObject\nr.setLevel(3);\n\n// SynSubscription\ns.setLevel(3);\n\n// SyncherManager\nt.setLevel(3);\n\n// IdentityManager\nu.setLevel(3);\n\n// CryptoManager\nv.setLevel(3);\n\n// Pipeline\nx.setLevel(3);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9sb2dMZXZlbHMuanM/ZjM5MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJ2xvZ2xldmVsJztcclxuXHJcbmNvbnN0IGEgPSBsb2cuZ2V0TG9nZ2VyKCdhZGRyZXNzLWFsbG9jYXRpb24nKTtcclxuY29uc3QgYiA9IGxvZy5nZXRMb2dnZXIoJ0J1cycpO1xyXG5jb25zdCBjID0gbG9nLmdldExvZ2dlcignTWVzc2FnZUJ1cycpO1xyXG5jb25zdCBkID0gbG9nLmdldExvZ2dlcignQ29yZURpc2NvdmVyeScpO1xyXG5jb25zdCBlID0gbG9nLmdldExvZ2dlcignR3JhcGhDb25uZWN0b3InKTtcclxuY29uc3QgZiA9IGxvZy5nZXRMb2dnZXIoJ0h5cGVydHlSZXNvdXJjZXNTdG9yYWdlJyk7XHJcbmNvbnN0IGcgPSBsb2cuZ2V0TG9nZ2VyKCdJZGVudGl0eU1vZHVsZScpO1xyXG5jb25zdCBoID0gbG9nLmdldExvZ2dlcignUEVQJyk7XHJcbmNvbnN0IGkgPSBsb2cuZ2V0TG9nZ2VyKCdQMlBDb25uZWN0aW9uUmVzb2x2ZScpO1xyXG5jb25zdCBqID0gbG9nLmdldExvZ2dlcignUmVnaXN0cnknKTtcclxuY29uc3QgayA9IGxvZy5nZXRMb2dnZXIoJ1J1bnRpbWVVQScpO1xyXG5jb25zdCBsID0gbG9nLmdldExvZ2dlcignTG9hZGVyJyk7XHJcbmNvbnN0IG0gPSBsb2cuZ2V0TG9nZ2VyKCdEZXNjcmlwdG9ycycpO1xyXG5jb25zdCBuID0gbG9nLmdldExvZ2dlcignRGF0YU9iamVjdHNTdG9yYWdlJyk7XHJcbmNvbnN0IG8gPSBsb2cuZ2V0TG9nZ2VyKCdTdWJzY3JpcHRpb24nKTtcclxuY29uc3QgcCA9IGxvZy5nZXRMb2dnZXIoJ1N1YnNjcmlwdGlvbk1hbmFnZXInKTtcclxuY29uc3QgcSA9IGxvZy5nZXRMb2dnZXIoJ09ic2VydmVyT2JqZWN0Jyk7XHJcbmNvbnN0IHIgPSBsb2cuZ2V0TG9nZ2VyKCdSZXBvcnRlck9iamVjdCcpO1xyXG5jb25zdCBzID0gbG9nLmdldExvZ2dlcignU3luU3Vic2NyaXB0aW9uJyk7XHJcbmNvbnN0IHQgPSBsb2cuZ2V0TG9nZ2VyKCdTeW5jaGVyTWFuYWdlcicpO1xyXG5jb25zdCB1ID0gbG9nLmdldExvZ2dlcignSWRlbnRpdHlNYW5hZ2VyJyk7XHJcbmNvbnN0IHYgPSBsb2cuZ2V0TG9nZ2VyKCdDcnlwdG9NYW5hZ2VyJyk7XHJcbmNvbnN0IHggPSBsb2cuZ2V0TG9nZ2VyKCdQaXBlbGluZScpO1xyXG5cclxuXHJcbmV4cG9ydCB7IGxvZyB9O1xyXG5cclxuLyoqXHJcbiAgMCBhY3R1YWwgbG9nZ2luZyBtZXRob2RzLCBvcmRlcmVkIGFuZCBhdmFpbGFibGUgYXM6XHJcblxyXG4gICAgICAwIC0gbG9nLnRyYWNlKG1zZylcclxuICAgICAgMSAtIGxvZy5kZWJ1Zyhtc2cpXHJcbiAgICAgIDIgLSBsb2cuaW5mbyhtc2cpXHJcbiAgICAgIDMgLSBsb2cud2Fybihtc2cpXHJcbiAgICAgIDQgLSBsb2cuZXJyb3IobXNnKVxyXG5cclxuICBsb2cubG9nKG1zZykgaXMgYWxzbyBhdmFpbGFibGUsIGFzIGFuIGFsaWFzIGZvciBsb2cuZGVidWcobXNnKSwgdG8gaW1wcm92ZSBjb21wYXRpYmlsaXR5IHdpdGggY29uc29sZSwgYW5kIG1ha2UgbWlncmF0aW9uIGVhc2llci5cclxuXHJcbiAgRXhhY3Qgb3V0cHV0IGZvcm1hdHRpbmcgb2YgdGhlc2Ugd2lsbCBkZXBlbmQgb24gdGhlIGNvbnNvbGUgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IGNvbnRleHQgb2YgeW91ciBhcHBsaWNhdGlvbi4gRm9yIGV4YW1wbGUsIG1hbnkgZW52aXJvbm1lbnRzIHdpbGwgaW5jbHVkZSBhIGZ1bGwgc3RhY2sgdHJhY2Ugd2l0aCBhbGwgdHJhY2UoKSBjYWxscywgYW5kIGljb25zIG9yIHNpbWlsYXIgdG8gaGlnaGxpZ2h0IG90aGVyIGNhbGxzLlxyXG5cclxuICBUaGVzZSBtZXRob2RzIHNob3VsZCBuZXZlciBmYWlsIGluIGFueSBlbnZpcm9ubWVudCwgZXZlbiBpZiBubyBjb25zb2xlIG9iamVjdCBpcyBjdXJyZW50bHkgYXZhaWxhYmxlLCBhbmQgc2hvdWxkIGFsd2F5cyBmYWxsIGJhY2sgdG8gYW4gYXZhaWxhYmxlIGxvZyBtZXRob2QgZXZlbiBpZiB0aGUgc3BlY2lmaWMgbWV0aG9kIGNhbGxlZCAoZS5nLiB3YXJuKSBpc24ndCBhdmFpbGFibGUuXHJcblxyXG4gIEJlIGF3YXJlIHRoYXQgYWxsIHRoaXMgbWVhbnMgdGhhdCB0aGVzZSBtZXRob2Qgd29uJ3QgbmVjZXNzYXJpbHkgYWx3YXlzIHByb2R1Y2UgZXhhY3RseSB0aGUgb3V0cHV0IHlvdSBleHBlY3QgaW4gZXZlcnkgZW52aXJvbm1lbnQ7IGxvZ2xldmVsIG9ubHkgZ3VhcmFudGVlcyB0aGF0IHRoZXNlIG1ldGhvZHMgd2lsbCBuZXZlciBleHBsb2RlIG9uIHlvdSwgYW5kIHRoYXQgaXQgd2lsbCBjYWxsIHRoZSBtb3N0IHJlbGV2YW50IG1ldGhvZCBpdCBjYW4gZmluZCwgd2l0aCB5b3VyIGFyZ3VtZW50LiBGaXJlZm94IGlzIGEgbm90YWJsZSBleGFtcGxlIGhlcmU6IGR1ZSB0byBhIGN1cnJlbnQgRmlyZWZveCBidWcgbG9nLnRyYWNlKG1zZykgY2FsbHMgaW4gRmlyZWZveCB3aWxsIHByaW50IG9ubHkgdGhlIHN0YWNrdHJhY2UsIGFuZCB3b24ndCBpbmNsdWRlIGFueSBwYXNzZWQgbWVzc2FnZSBhcmd1bWVudHMuXHJcblxyXG4qL1xyXG5cclxuXHJcbi8vIGFkZHJlc3MtYWxsb2NhdGlvblxyXG5hLnNldExldmVsKDMpO1xyXG5cclxuLy8gQnVzXHJcbmIuc2V0TGV2ZWwoMyk7XHJcblxyXG4vLyBNZXNzYWdlQnVzXHJcbmMuc2V0TGV2ZWwoMCk7XHJcblxyXG4vLyBDb3JlRGlzY292ZXJ5XHJcbmQuc2V0TGV2ZWwoNSk7XHJcblxyXG4vLyBHcmFwaENvbm5lY3RvclxyXG5lLnNldExldmVsKDUpO1xyXG5cclxuLy8gSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2VcclxuZi5zZXRMZXZlbCgzKTtcclxuXHJcbi8vIElkZW50aXR5TW9kdWxlXHJcbmcuc2V0TGV2ZWwoMCk7XHJcblxyXG4vLyBQRVBcclxuaC5zZXRMZXZlbCgzKTtcclxuXHJcbi8vIFAyUENvbm5lY3Rpb25SZXNvbHZlXHJcbmkuc2V0TGV2ZWwoMyk7XHJcblxyXG4vLyBSZWdpc3RyeVxyXG5qLnNldExldmVsKDMpO1xyXG5cclxuLy8gUnVudGltZVVBXHJcbmsuc2V0TGV2ZWwoMyk7XHJcblxyXG4vLyBMb2FkZXJcclxubC5zZXRMZXZlbCgzKTtcclxuXHJcbi8vIERlc2NyaXB0b3JzXHJcbm0uc2V0TGV2ZWwoMyk7XHJcblxyXG4vLyBEYXRhT2JqZWN0c1N0b3JhZ2Vcclxubi5zZXRMZXZlbCgzKTtcclxuXHJcbi8vIFN1YnNjcmlwdGlvblxyXG5vLnNldExldmVsKDMpO1xyXG5cclxuLy8gU3Vic2NyaXB0aW9uTWFuYWdlclxyXG5wLnNldExldmVsKDMpO1xyXG5cclxuLy8gT2JzZXJ2ZXJPYmplY3RcclxucS5zZXRMZXZlbCgzKTtcclxuXHJcbi8vIFJlcG9ydGVyT2JqZWN0XHJcbnIuc2V0TGV2ZWwoMyk7XHJcblxyXG4vLyBTeW5TdWJzY3JpcHRpb25cclxucy5zZXRMZXZlbCgzKTtcclxuXHJcbi8vIFN5bmNoZXJNYW5hZ2VyXHJcbnQuc2V0TGV2ZWwoMyk7XHJcblxyXG4vLyBJZGVudGl0eU1hbmFnZXJcclxudS5zZXRMZXZlbCgzKTtcclxuXHJcbi8vIENyeXB0b01hbmFnZXJcclxudi5zZXRMZXZlbCgzKTtcclxuXHJcbi8vIFBpcGVsaW5lXHJcbnguc2V0TGV2ZWwoMyk7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvbG9nTGV2ZWxzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///201\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(186);\nvar hiddenKeys = __webpack_require__(137).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi5qcz85ZjQ0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi43IC8gMTUuMi4zLjQgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKS5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcG4uanNcbi8vIG1vZHVsZSBpZCA9IDIwMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///202\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(461), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzPzNhZjQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGVcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2NyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///203\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('Bus');\n\n/**\r\n* @author micaelpedrosa@gmail.com\r\n* Minimal interface and implementation to send and receive messages. It can be reused in many type of components.\r\n* Components that need a message system should receive this class as a dependency or extend it.\r\n* Extensions should implement the following private methods: _onPostMessage and _registerExternalListener\r\n*/\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n\n// Log system\n\nvar Bus = function () {\n /* private\r\n _msgId: number;\r\n _subscriptions: \r\n _responseTimeOut: number\r\n _responseCallbacks: void>\r\n */\n\n function Bus() {\n (0, _classCallCheck3.default)(this, Bus);\n\n var _this = this;\n _this._msgId = 0;\n _this._subscriptions = {};\n\n _this._responseTimeOut = 15000; //default to 3s\n _this._responseCallbacks = {};\n\n _this._registerExternalListener();\n }\n\n /**\r\n * Register listener to receive message when \"msg.to === url\".\r\n * Special url \"*\" for default listener is accepted to intercept all messages.\r\n * @param {URL} url Address to intercept, tha is in the message \"to\"\r\n * @param {Listener} listener listener\r\n * @return {MsgListener} instance of MsgListener\r\n */\n\n\n (0, _createClass3.default)(Bus, [{\n key: 'addListener',\n value: function addListener(url, listener) {\n var _this = this;\n\n var item = new MsgListener(_this._subscriptions, url, listener);\n var itemList = _this._subscriptions[url];\n if (!itemList) {\n itemList = [];\n _this._subscriptions[url] = itemList;\n }\n\n itemList.push(item);\n return item;\n }\n\n /**\r\n * Manually add a response listener. Only one listener per message ID should exist.\r\n * ATENTION, there is no timeout for this listener.\r\n * The listener should be removed with a removeResponseListener, failing to do this will result in a unreleased memory problem.\r\n * @param {URL} url Origin address of the message sent, \"msg.from\".\r\n * @param {number} msgId Message ID that is returned from the postMessage.\r\n * @param {Function} responseListener Callback function for the response\r\n */\n\n }, {\n key: 'addResponseListener',\n value: function addResponseListener(url, msgId, responseListener) {\n this._responseCallbacks[url + msgId] = responseListener;\n }\n\n /**\r\n * Remove the response listener.\r\n * @param {URL} url Origin address of the message sent, \"msg.from\".\r\n * @param {number} msgId Message ID that is returned from the postMessage\r\n */\n\n }, {\n key: 'removeResponseListener',\n value: function removeResponseListener(url, msgId) {\n delete this._responseCallbacks[url + msgId];\n }\n\n /**\r\n * Remove all existent listeners for the URL\r\n * @param {URL} url Address registered\r\n */\n\n }, {\n key: 'removeAllListenersOf',\n value: function removeAllListenersOf(url) {\n delete this._subscriptions[url];\n }\n\n /**\r\n * Helper method to bind listeners (in both directions) into other MiniBus target.\r\n * @param {URL} outUrl Outbound URL, register listener for url in direction \"this -> target\"\r\n * @param {URL} inUrl Inbound URL, register listener for url in direction \"target -> this\"\r\n * @param {MiniBus} target The other target MiniBus\r\n * @return {Bound} an object that contains the properties [thisListener, targetListener] and the unbind method.\r\n */\n\n }, {\n key: 'bind',\n value: function bind(outUrl, inUrl, target) {\n var _this2 = this;\n\n var _this = this;\n\n var thisListn = _this.addListener(outUrl, function (msg) {\n target.postMessage(msg);\n });\n\n var targetListn = target.addListener(inUrl, function (msg) {\n _this.postMessage(msg);\n });\n\n return {\n thisListener: thisListn,\n targetListener: targetListn,\n unbind: function unbind() {\n _this2.thisListener.remove();\n _this2.targetListener.remove();\n }\n };\n }\n\n //publish on default listeners\n\n }, {\n key: '_publishOnDefault',\n value: function _publishOnDefault(msg) {\n //is there any \"*\" (default) listeners?\n var itemList = this._subscriptions['*'];\n if (itemList) {\n this._publishOn(itemList, msg);\n }\n }\n\n //publish on a subscription list.\n\n }, {\n key: '_publishOn',\n value: function _publishOn(itemList, msg) {\n itemList.forEach(function (sub) {\n sub._callback(msg);\n });\n }\n }, {\n key: '_responseCallback',\n value: function _responseCallback(inMsg, responseCallback) {\n var timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n var _this = this;\n\n //automatic management of response handlers\n if (responseCallback) {\n var responseId = inMsg.from + inMsg.id;\n _this._responseCallbacks[responseId] = responseCallback;\n\n if (timeout) {\n setTimeout(function () {\n var responseFun = _this._responseCallbacks[responseId];\n delete _this._responseCallbacks[responseId];\n\n if (responseFun) {\n var errorMsg = {\n id: inMsg.id, type: 'response',\n body: { code: 408, desc: 'Response timeout!', value: inMsg }\n };\n\n responseFun(errorMsg);\n }\n }, _this._responseTimeOut);\n }\n }\n }\n\n //TODO: provisional responses should reset timeout\n\n }, {\n key: '_onResponse',\n value: function _onResponse(msg) {\n var _this = this;\n\n if (msg.type === 'response') {\n var responseId = msg.to + msg.id;\n var responseFun = _this._responseCallbacks[responseId];\n\n if (msg.body.code >= 200) {\n //if it's a provisional response, don't delete response listener\n delete _this._responseCallbacks[responseId];\n }\n\n if (responseFun) {\n responseFun(msg);\n return true;\n }\n }\n\n return false;\n }\n\n //receive messages from external interface\n\n }, {\n key: '_onMessage',\n value: function _onMessage(msg) {\n var _this = this;\n\n if (!_this._onResponse(msg)) {\n var itemList = _this._subscriptions[msg.to];\n if (itemList) {\n _this._publishOn(itemList, msg);\n } else {\n _this._publishOnDefault(msg);\n }\n }\n }\n }, {\n key: '_genId',\n value: function _genId(inMsg) {\n //TODO: how do we manage message ID's? Should it be a global runtime counter, or per URL address?\n //Global counter will not work, because there will be multiple MiniBus instances!\n //Per URL, can be a lot of data to maintain!\n //Maybe a counter per MiniBus instance. This is the assumed solution for now.\n if (!inMsg.id || inMsg.id === 0) {\n this._msgId++;\n inMsg.id = this._msgId;\n }\n }\n\n /**\r\n * Send messages to local listeners, or if not exists to external listeners.\r\n * It's has an optional mechanism for automatic management of response handlers.\r\n * The response handler will be unregistered after receiving the response, or after response timeout (default to 3s).\r\n * @param {Message} msg Message to send. Message ID is automatically added to the message.\r\n * @param {Function} responseCallback Optional parameter, if the developer what's automatic response management.\r\n * @return {number} Returns the message ID, in case it should be needed for manual management of the response handler.\r\n */\n\n }, {\n key: 'postMessage',\n value: function postMessage(inMsg, responseCallback) {}\n\n /**\r\n * Function to post messages with a number of retries in case timeouts occur.\r\n * @param {Message} msg Message to send. Message ID is automatically added to the message.\r\n * @param {Function} responseCallback Optional parameter, if the developer what's automatic response management.\r\n * @param {integer} retries number of retries when timeouts occur\r\n * @return {boolean} message delivery result;\r\n */\n\n }, {\n key: 'postMessageWithRetries',\n value: function postMessageWithRetries(msg, retries, callback) {\n\n var _this = this;\n\n var retry = 0;\n //let timeout = true;\n\n var sendMsg = function sendMsg() {\n\n return new _promise2.default(function (resolve, reject) {\n _this.postMessage(msg, function (reply) {\n if (reply.body.code === 408 || reply.body.code === 500) reject();else {\n log.info('[Bus.postMessageWithRetries] msg delivered: ', msg);\n callback(reply);\n resolve();\n }\n });\n });\n };\n\n var tryAgain = function tryAgain() {\n sendMsg().then(function () {\n //timeout = false;\n return;\n }, function () {\n log.warn('[Bus.postMessageWithRetries] Message Bounced (retry ' + retry + '): \\'', msg);\n if (retry++ < retries) {\n tryAgain();\n // setTimeout(() => { tryAgain(); }, 1000);\n } else {\n var error = '[Error] Message Bounced (delivery attempts ' + retries + '): \\'';\n throw new Error(error + msg);\n }\n });\n };\n tryAgain();\n }\n\n /**\r\n * Not public available, used by the class extension implementation, to process messages from the public \"postMessage\" without a registered listener.\r\n * Used to send the message to an external interface, like a WebWorker, IFrame, etc.\r\n * @param {Message.Message} msg Message\r\n */\n\n }, {\n key: '_onPostMessage',\n value: function _onPostMessage(msg) {} /*implementation will send message to external system*/\n\n /**\r\n * Not public available, used by the class extension implementation, to process all messages that enter the MiniBus from an external interface, like a WebWorker, IFrame, etc.\r\n * This method is called one time in the constructor to register external listeners.\r\n * The implementation will probably call the \"_onMessage\" method to publish in the local listeners.\r\n * DO NOT call \"postMessage\", there is a danger that the message enters in a cycle!\r\n */\n\n }, {\n key: '_registerExternalListener',\n value: function _registerExternalListener() {/*implementation will register external listener and call \"this._onMessage(msg)\" */}\n }]);\n return Bus;\n}();\n\nvar MsgListener = function () {\n /* private\r\n _subscriptions: ;\r\n _url: string;\r\n _callback: (msg) => void;\r\n */\n\n function MsgListener(subscriptions, url, callback) {\n (0, _classCallCheck3.default)(this, MsgListener);\n\n var _this = this;\n\n _this._subscriptions = subscriptions;\n _this._url = url;\n _this._callback = callback;\n }\n\n (0, _createClass3.default)(MsgListener, [{\n key: 'remove',\n\n\n /**\r\n * Remove this listener from the Bus\r\n */\n value: function remove() {\n var _this = this;\n\n var subs = _this._subscriptions[_this._url];\n if (subs) {\n var index = subs.indexOf(_this);\n subs.splice(index, 1);\n\n //if there are no listeners, remove the subscription entirely.\n if (subs.length === 0) {\n delete _this._subscriptions[_this._url];\n }\n }\n }\n }, {\n key: 'url',\n get: function get() {\n return this._url;\n }\n }]);\n return MsgListener;\n}();\n\nexports.default = Bus;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvQnVzLmpzPzZkMTciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcclxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcclxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxyXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxyXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcclxuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcclxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxyXG4qXHJcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcclxuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbipcclxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4qXHJcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbioqL1xyXG5cclxuLy8gTG9nIHN5c3RlbVxyXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xyXG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignQnVzJyk7XHJcblxyXG4vKipcclxuKiBAYXV0aG9yIG1pY2FlbHBlZHJvc2FAZ21haWwuY29tXHJcbiogTWluaW1hbCBpbnRlcmZhY2UgYW5kIGltcGxlbWVudGF0aW9uIHRvIHNlbmQgYW5kIHJlY2VpdmUgbWVzc2FnZXMuIEl0IGNhbiBiZSByZXVzZWQgaW4gbWFueSB0eXBlIG9mIGNvbXBvbmVudHMuXHJcbiogQ29tcG9uZW50cyB0aGF0IG5lZWQgYSBtZXNzYWdlIHN5c3RlbSBzaG91bGQgcmVjZWl2ZSB0aGlzIGNsYXNzIGFzIGEgZGVwZW5kZW5jeSBvciBleHRlbmQgaXQuXHJcbiogRXh0ZW5zaW9ucyBzaG91bGQgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgcHJpdmF0ZSBtZXRob2RzOiBfb25Qb3N0TWVzc2FnZSBhbmQgX3JlZ2lzdGVyRXh0ZXJuYWxMaXN0ZW5lclxyXG4qL1xyXG5jbGFzcyBCdXMge1xyXG4gIC8qIHByaXZhdGVcclxuICBfbXNnSWQ6IG51bWJlcjtcclxuICBfc3Vic2NyaXB0aW9uczogPHVybDogTXNnTGlzdGVuZXJbXT5cclxuXHJcbiAgX3Jlc3BvbnNlVGltZU91dDogbnVtYmVyXHJcbiAgX3Jlc3BvbnNlQ2FsbGJhY2tzOiA8dXJsK2lkOiAobXNnKSA9PiB2b2lkPlxyXG5cclxuICAqL1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBfdGhpcy5fbXNnSWQgPSAwO1xyXG4gICAgX3RoaXMuX3N1YnNjcmlwdGlvbnMgPSB7fTtcclxuXHJcbiAgICBfdGhpcy5fcmVzcG9uc2VUaW1lT3V0ID0gMTUwMDA7IC8vZGVmYXVsdCB0byAzc1xyXG4gICAgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzID0ge307XHJcblxyXG4gICAgX3RoaXMuX3JlZ2lzdGVyRXh0ZXJuYWxMaXN0ZW5lcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBSZWdpc3RlciBsaXN0ZW5lciB0byByZWNlaXZlIG1lc3NhZ2Ugd2hlbiBcIm1zZy50byA9PT0gdXJsXCIuXHJcbiAgKiBTcGVjaWFsIHVybCBcIipcIiBmb3IgZGVmYXVsdCBsaXN0ZW5lciBpcyBhY2NlcHRlZCB0byBpbnRlcmNlcHQgYWxsIG1lc3NhZ2VzLlxyXG4gICogQHBhcmFtIHtVUkx9IHVybCBBZGRyZXNzIHRvIGludGVyY2VwdCwgdGhhIGlzIGluIHRoZSBtZXNzYWdlIFwidG9cIlxyXG4gICogQHBhcmFtIHtMaXN0ZW5lcn0gbGlzdGVuZXIgbGlzdGVuZXJcclxuICAqIEByZXR1cm4ge01zZ0xpc3RlbmVyfSBpbnN0YW5jZSBvZiBNc2dMaXN0ZW5lclxyXG4gICovXHJcbiAgYWRkTGlzdGVuZXIodXJsLCBsaXN0ZW5lcikge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBsZXQgaXRlbSA9IG5ldyBNc2dMaXN0ZW5lcihfdGhpcy5fc3Vic2NyaXB0aW9ucywgdXJsLCBsaXN0ZW5lcik7XHJcbiAgICBsZXQgaXRlbUxpc3QgPSBfdGhpcy5fc3Vic2NyaXB0aW9uc1t1cmxdO1xyXG4gICAgaWYgKCFpdGVtTGlzdCkge1xyXG4gICAgICBpdGVtTGlzdCA9IFtdO1xyXG4gICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1t1cmxdID0gaXRlbUxpc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgaXRlbUxpc3QucHVzaChpdGVtKTtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFudWFsbHkgYWRkIGEgcmVzcG9uc2UgbGlzdGVuZXIuIE9ubHkgb25lIGxpc3RlbmVyIHBlciBtZXNzYWdlIElEIHNob3VsZCBleGlzdC5cclxuICAgKiBBVEVOVElPTiwgdGhlcmUgaXMgbm8gdGltZW91dCBmb3IgdGhpcyBsaXN0ZW5lci5cclxuICAgKiBUaGUgbGlzdGVuZXIgc2hvdWxkIGJlIHJlbW92ZWQgd2l0aCBhIHJlbW92ZVJlc3BvbnNlTGlzdGVuZXIsIGZhaWxpbmcgdG8gZG8gdGhpcyB3aWxsIHJlc3VsdCBpbiBhIHVucmVsZWFzZWQgbWVtb3J5IHByb2JsZW0uXHJcbiAgICogQHBhcmFtIHtVUkx9IHVybCBPcmlnaW4gYWRkcmVzcyBvZiB0aGUgbWVzc2FnZSBzZW50LCBcIm1zZy5mcm9tXCIuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1zZ0lkIE1lc3NhZ2UgSUQgdGhhdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBwb3N0TWVzc2FnZS5cclxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNwb25zZUxpc3RlbmVyIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgcmVzcG9uc2VcclxuICAgKi9cclxuICBhZGRSZXNwb25zZUxpc3RlbmVyKHVybCwgbXNnSWQsIHJlc3BvbnNlTGlzdGVuZXIpIHtcclxuICAgIHRoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3VybCArIG1zZ0lkXSA9IHJlc3BvbnNlTGlzdGVuZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgdGhlIHJlc3BvbnNlIGxpc3RlbmVyLlxyXG4gICAqIEBwYXJhbSB7VVJMfSB1cmwgT3JpZ2luIGFkZHJlc3Mgb2YgdGhlIG1lc3NhZ2Ugc2VudCwgXCJtc2cuZnJvbVwiLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtc2dJZCAgTWVzc2FnZSBJRCB0aGF0IGlzIHJldHVybmVkIGZyb20gdGhlIHBvc3RNZXNzYWdlXHJcbiAgICovXHJcbiAgcmVtb3ZlUmVzcG9uc2VMaXN0ZW5lcih1cmwsIG1zZ0lkKSB7XHJcbiAgICBkZWxldGUgdGhpcy5fcmVzcG9uc2VDYWxsYmFja3NbdXJsICsgbXNnSWRdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGFsbCBleGlzdGVudCBsaXN0ZW5lcnMgZm9yIHRoZSBVUkxcclxuICAgKiBAcGFyYW0gIHtVUkx9IHVybCBBZGRyZXNzIHJlZ2lzdGVyZWRcclxuICAgKi9cclxuICByZW1vdmVBbGxMaXN0ZW5lcnNPZih1cmwpIHtcclxuICAgIGRlbGV0ZSB0aGlzLl9zdWJzY3JpcHRpb25zW3VybF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGJpbmQgbGlzdGVuZXJzIChpbiBib3RoIGRpcmVjdGlvbnMpIGludG8gb3RoZXIgTWluaUJ1cyB0YXJnZXQuXHJcbiAgICogQHBhcmFtICB7VVJMfSBvdXRVcmwgT3V0Ym91bmQgVVJMLCByZWdpc3RlciBsaXN0ZW5lciBmb3IgdXJsIGluIGRpcmVjdGlvbiBcInRoaXMgLT4gdGFyZ2V0XCJcclxuICAgKiBAcGFyYW0gIHtVUkx9IGluVXJsIEluYm91bmQgVVJMLCByZWdpc3RlciBsaXN0ZW5lciBmb3IgdXJsIGluIGRpcmVjdGlvbiBcInRhcmdldCAtPiB0aGlzXCJcclxuICAgKiBAcGFyYW0gIHtNaW5pQnVzfSB0YXJnZXQgVGhlIG90aGVyIHRhcmdldCBNaW5pQnVzXHJcbiAgICogQHJldHVybiB7Qm91bmR9IGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBwcm9wZXJ0aWVzIFt0aGlzTGlzdGVuZXIsIHRhcmdldExpc3RlbmVyXSBhbmQgdGhlIHVuYmluZCBtZXRob2QuXHJcbiAgICovXHJcbiAgYmluZChvdXRVcmwsIGluVXJsLCB0YXJnZXQpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IHRoaXNMaXN0biA9IF90aGlzLmFkZExpc3RlbmVyKG91dFVybCwgKG1zZykgPT4ge1xyXG4gICAgICB0YXJnZXQucG9zdE1lc3NhZ2UobXNnKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCB0YXJnZXRMaXN0biA9IHRhcmdldC5hZGRMaXN0ZW5lcihpblVybCwgKG1zZykgPT4ge1xyXG4gICAgICBfdGhpcy5wb3N0TWVzc2FnZShtc2cpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGhpc0xpc3RlbmVyOiB0aGlzTGlzdG4sXHJcbiAgICAgIHRhcmdldExpc3RlbmVyOiB0YXJnZXRMaXN0bixcclxuICAgICAgdW5iaW5kOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50aGlzTGlzdGVuZXIucmVtb3ZlKCk7XHJcbiAgICAgICAgdGhpcy50YXJnZXRMaXN0ZW5lci5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vcHVibGlzaCBvbiBkZWZhdWx0IGxpc3RlbmVyc1xyXG4gIF9wdWJsaXNoT25EZWZhdWx0KG1zZykge1xyXG4gICAgLy9pcyB0aGVyZSBhbnkgXCIqXCIgKGRlZmF1bHQpIGxpc3RlbmVycz9cclxuICAgIGxldCBpdGVtTGlzdCA9IHRoaXMuX3N1YnNjcmlwdGlvbnNbJyonXTtcclxuICAgIGlmIChpdGVtTGlzdCkge1xyXG4gICAgICB0aGlzLl9wdWJsaXNoT24oaXRlbUxpc3QsIG1zZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3B1Ymxpc2ggb24gYSBzdWJzY3JpcHRpb24gbGlzdC5cclxuICBfcHVibGlzaE9uKGl0ZW1MaXN0LCBtc2cpIHtcclxuICAgIGl0ZW1MaXN0LmZvckVhY2goKHN1YikgPT4ge1xyXG4gICAgICBzdWIuX2NhbGxiYWNrKG1zZyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIF9yZXNwb25zZUNhbGxiYWNrKGluTXNnLCByZXNwb25zZUNhbGxiYWNrLCB0aW1lb3V0ID0gdHJ1ZSkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICAvL2F1dG9tYXRpYyBtYW5hZ2VtZW50IG9mIHJlc3BvbnNlIGhhbmRsZXJzXHJcbiAgICBpZiAocmVzcG9uc2VDYWxsYmFjaykge1xyXG4gICAgICBsZXQgcmVzcG9uc2VJZCA9IGluTXNnLmZyb20gKyBpbk1zZy5pZDtcclxuICAgICAgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdID0gcmVzcG9uc2VDYWxsYmFjaztcclxuXHJcbiAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgcmVzcG9uc2VGdW4gPSBfdGhpcy5fcmVzcG9uc2VDYWxsYmFja3NbcmVzcG9uc2VJZF07XHJcbiAgICAgICAgICBkZWxldGUgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdO1xyXG5cclxuICAgICAgICAgIGlmIChyZXNwb25zZUZ1bikge1xyXG4gICAgICAgICAgICBsZXQgZXJyb3JNc2cgPSB7XHJcbiAgICAgICAgICAgICAgaWQ6IGluTXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgICAgICAgIGJvZHk6IHsgY29kZTogNDA4LCBkZXNjOiAnUmVzcG9uc2UgdGltZW91dCEnLCB2YWx1ZTogaW5Nc2cgfVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgcmVzcG9uc2VGdW4oZXJyb3JNc2cpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIF90aGlzLl9yZXNwb25zZVRpbWVPdXQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbi8vVE9ETzogcHJvdmlzaW9uYWwgcmVzcG9uc2VzIHNob3VsZCByZXNldCB0aW1lb3V0XHJcbiAgX29uUmVzcG9uc2UobXNnKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGlmIChtc2cudHlwZSA9PT0gJ3Jlc3BvbnNlJykge1xyXG4gICAgICBsZXQgcmVzcG9uc2VJZCA9IG1zZy50byArIG1zZy5pZDtcclxuICAgICAgbGV0IHJlc3BvbnNlRnVuID0gX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdO1xyXG5cclxuICAgICAgaWYgKG1zZy5ib2R5LmNvZGUgPj0gMjAwKSB7IC8vaWYgaXQncyBhIHByb3Zpc2lvbmFsIHJlc3BvbnNlLCBkb24ndCBkZWxldGUgcmVzcG9uc2UgbGlzdGVuZXJcclxuICAgICAgICBkZWxldGUgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocmVzcG9uc2VGdW4pIHtcclxuICAgICAgICByZXNwb25zZUZ1bihtc2cpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvL3JlY2VpdmUgbWVzc2FnZXMgZnJvbSBleHRlcm5hbCBpbnRlcmZhY2VcclxuICBfb25NZXNzYWdlKG1zZykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBpZiAoIV90aGlzLl9vblJlc3BvbnNlKG1zZykpIHtcclxuICAgICAgbGV0IGl0ZW1MaXN0ID0gX3RoaXMuX3N1YnNjcmlwdGlvbnNbbXNnLnRvXTtcclxuICAgICAgaWYgKGl0ZW1MaXN0KSB7XHJcbiAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBfdGhpcy5fcHVibGlzaE9uRGVmYXVsdChtc2cpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfZ2VuSWQoaW5Nc2cpIHtcclxuICAgIC8vVE9ETzogaG93IGRvIHdlIG1hbmFnZSBtZXNzYWdlIElEJ3M/IFNob3VsZCBpdCBiZSBhIGdsb2JhbCBydW50aW1lIGNvdW50ZXIsIG9yIHBlciBVUkwgYWRkcmVzcz9cclxuICAgIC8vR2xvYmFsIGNvdW50ZXIgd2lsbCBub3Qgd29yaywgYmVjYXVzZSB0aGVyZSB3aWxsIGJlIG11bHRpcGxlIE1pbmlCdXMgaW5zdGFuY2VzIVxyXG4gICAgLy9QZXIgVVJMLCBjYW4gYmUgYSBsb3Qgb2YgZGF0YSB0byBtYWludGFpbiFcclxuICAgIC8vTWF5YmUgYSBjb3VudGVyIHBlciBNaW5pQnVzIGluc3RhbmNlLiBUaGlzIGlzIHRoZSBhc3N1bWVkIHNvbHV0aW9uIGZvciBub3cuXHJcbiAgICBpZiAoIWluTXNnLmlkIHx8IGluTXNnLmlkID09PSAwKSB7XHJcbiAgICAgIHRoaXMuX21zZ0lkKys7XHJcbiAgICAgIGluTXNnLmlkID0gdGhpcy5fbXNnSWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFNlbmQgbWVzc2FnZXMgdG8gbG9jYWwgbGlzdGVuZXJzLCBvciBpZiBub3QgZXhpc3RzIHRvIGV4dGVybmFsIGxpc3RlbmVycy5cclxuICAqIEl0J3MgaGFzIGFuIG9wdGlvbmFsIG1lY2hhbmlzbSBmb3IgYXV0b21hdGljIG1hbmFnZW1lbnQgb2YgcmVzcG9uc2UgaGFuZGxlcnMuXHJcbiAgKiBUaGUgcmVzcG9uc2UgaGFuZGxlciB3aWxsIGJlIHVucmVnaXN0ZXJlZCBhZnRlciByZWNlaXZpbmcgdGhlIHJlc3BvbnNlLCBvciBhZnRlciByZXNwb25zZSB0aW1lb3V0IChkZWZhdWx0IHRvIDNzKS5cclxuICAqIEBwYXJhbSAge01lc3NhZ2V9IG1zZyBNZXNzYWdlIHRvIHNlbmQuIE1lc3NhZ2UgSUQgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgbWVzc2FnZS5cclxuICAqIEBwYXJhbSAge0Z1bmN0aW9ufSByZXNwb25zZUNhbGxiYWNrIE9wdGlvbmFsIHBhcmFtZXRlciwgaWYgdGhlIGRldmVsb3BlciB3aGF0J3MgYXV0b21hdGljIHJlc3BvbnNlIG1hbmFnZW1lbnQuXHJcbiAgKiBAcmV0dXJuIHtudW1iZXJ9IFJldHVybnMgdGhlIG1lc3NhZ2UgSUQsIGluIGNhc2UgaXQgc2hvdWxkIGJlIG5lZWRlZCBmb3IgbWFudWFsIG1hbmFnZW1lbnQgb2YgdGhlIHJlc3BvbnNlIGhhbmRsZXIuXHJcbiAgKi9cclxuICBwb3N0TWVzc2FnZShpbk1zZywgcmVzcG9uc2VDYWxsYmFjaykgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIHRvIHBvc3QgbWVzc2FnZXMgd2l0aCBhIG51bWJlciBvZiByZXRyaWVzIGluIGNhc2UgdGltZW91dHMgb2NjdXIuXHJcbiAgICogQHBhcmFtICB7TWVzc2FnZX0gbXNnIE1lc3NhZ2UgdG8gc2VuZC4gTWVzc2FnZSBJRCBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBtZXNzYWdlLlxyXG4gICAqIEBwYXJhbSAge0Z1bmN0aW9ufSByZXNwb25zZUNhbGxiYWNrIE9wdGlvbmFsIHBhcmFtZXRlciwgaWYgdGhlIGRldmVsb3BlciB3aGF0J3MgYXV0b21hdGljIHJlc3BvbnNlIG1hbmFnZW1lbnQuXHJcbiAgICogQHBhcmFtICB7aW50ZWdlcn0gcmV0cmllcyBudW1iZXIgb2YgcmV0cmllcyB3aGVuIHRpbWVvdXRzIG9jY3VyXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gbWVzc2FnZSBkZWxpdmVyeSByZXN1bHQ7XHJcbiAgICovXHJcblxyXG5cclxuICBwb3N0TWVzc2FnZVdpdGhSZXRyaWVzKG1zZywgcmV0cmllcywgY2FsbGJhY2spIHtcclxuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCByZXRyeSA9IDA7XHJcbiAgICAvL2xldCB0aW1lb3V0ID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgc2VuZE1zZyA9IGZ1bmN0aW9uKCkge1xyXG5cclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBfdGhpcy5wb3N0TWVzc2FnZShtc2csIChyZXBseSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gNDA4IHx8IHJlcGx5LmJvZHkuY29kZSA9PT0gNTAwKSByZWplY3QoKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsb2cuaW5mbygnW0J1cy5wb3N0TWVzc2FnZVdpdGhSZXRyaWVzXSBtc2cgZGVsaXZlcmVkOiAnLCBtc2cpO1xyXG4gICAgICAgICAgICBjYWxsYmFjayhyZXBseSk7XHJcbiAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGxldCB0cnlBZ2FpbiA9ICgpID0+IHtcclxuICAgICAgc2VuZE1zZygpLnRoZW4oKCk9PntcclxuICAgICAgICAvL3RpbWVvdXQgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0sICgpPT57XHJcbiAgICAgICAgbG9nLndhcm4oYFtCdXMucG9zdE1lc3NhZ2VXaXRoUmV0cmllc10gTWVzc2FnZSBCb3VuY2VkIChyZXRyeSAke3JldHJ5fSk6ICdgLCBtc2cpO1xyXG4gICAgICAgIGlmIChyZXRyeSsrIDwgcmV0cmllcykge1xyXG4gICAgICAgICAgdHJ5QWdhaW4oKTtcclxuICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4geyB0cnlBZ2FpbigpOyB9LCAxMDAwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBgW0Vycm9yXSBNZXNzYWdlIEJvdW5jZWQgKGRlbGl2ZXJ5IGF0dGVtcHRzICR7cmV0cmllc30pOiAnYDtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvciArIG1zZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICB0cnlBZ2FpbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTm90IHB1YmxpYyBhdmFpbGFibGUsIHVzZWQgYnkgdGhlIGNsYXNzIGV4dGVuc2lvbiBpbXBsZW1lbnRhdGlvbiwgdG8gcHJvY2VzcyBtZXNzYWdlcyBmcm9tIHRoZSBwdWJsaWMgXCJwb3N0TWVzc2FnZVwiIHdpdGhvdXQgYSByZWdpc3RlcmVkIGxpc3RlbmVyLlxyXG4gICAqIFVzZWQgdG8gc2VuZCB0aGUgbWVzc2FnZSB0byBhbiBleHRlcm5hbCBpbnRlcmZhY2UsIGxpa2UgYSBXZWJXb3JrZXIsIElGcmFtZSwgZXRjLlxyXG4gICAqIEBwYXJhbSAge01lc3NhZ2UuTWVzc2FnZX0gbXNnIE1lc3NhZ2VcclxuICAgKi9cclxuICBfb25Qb3N0TWVzc2FnZShtc2cpIHsgLyppbXBsZW1lbnRhdGlvbiB3aWxsIHNlbmQgbWVzc2FnZSB0byBleHRlcm5hbCBzeXN0ZW0qLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5vdCBwdWJsaWMgYXZhaWxhYmxlLCB1c2VkIGJ5IHRoZSBjbGFzcyBleHRlbnNpb24gaW1wbGVtZW50YXRpb24sIHRvIHByb2Nlc3MgYWxsIG1lc3NhZ2VzIHRoYXQgZW50ZXIgdGhlIE1pbmlCdXMgZnJvbSBhbiBleHRlcm5hbCBpbnRlcmZhY2UsIGxpa2UgYSBXZWJXb3JrZXIsIElGcmFtZSwgZXRjLlxyXG4gICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmUgdGltZSBpbiB0aGUgY29uc3RydWN0b3IgdG8gcmVnaXN0ZXIgZXh0ZXJuYWwgbGlzdGVuZXJzLlxyXG4gICAqIFRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIHByb2JhYmx5IGNhbGwgdGhlIFwiX29uTWVzc2FnZVwiIG1ldGhvZCB0byBwdWJsaXNoIGluIHRoZSBsb2NhbCBsaXN0ZW5lcnMuXHJcbiAgICogRE8gTk9UIGNhbGwgXCJwb3N0TWVzc2FnZVwiLCB0aGVyZSBpcyBhIGRhbmdlciB0aGF0IHRoZSBtZXNzYWdlIGVudGVycyBpbiBhIGN5Y2xlIVxyXG4gICAqL1xyXG4gIF9yZWdpc3RlckV4dGVybmFsTGlzdGVuZXIoKSB7IC8qaW1wbGVtZW50YXRpb24gd2lsbCByZWdpc3RlciBleHRlcm5hbCBsaXN0ZW5lciBhbmQgY2FsbCBcInRoaXMuX29uTWVzc2FnZShtc2cpXCIgKi8gfVxyXG5cclxufVxyXG5cclxuY2xhc3MgTXNnTGlzdGVuZXIge1xyXG4gIC8qIHByaXZhdGVcclxuICBfc3Vic2NyaXB0aW9uczogPHN0cmluZzogTXNnTGlzdGVuZXJbXT47XHJcbiAgX3VybDogc3RyaW5nO1xyXG4gIF9jYWxsYmFjazogKG1zZykgPT4gdm9pZDtcclxuICAqL1xyXG5cclxuICBjb25zdHJ1Y3RvcihzdWJzY3JpcHRpb25zLCB1cmwsIGNhbGxiYWNrKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIF90aGlzLl9zdWJzY3JpcHRpb25zID0gc3Vic2NyaXB0aW9ucztcclxuICAgIF90aGlzLl91cmwgPSB1cmw7XHJcbiAgICBfdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjaztcclxuICB9XHJcblxyXG4gIGdldCB1cmwoKSB7IHJldHVybiB0aGlzLl91cmw7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIHRoaXMgbGlzdGVuZXIgZnJvbSB0aGUgQnVzXHJcbiAgICovXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBsZXQgc3VicyA9IF90aGlzLl9zdWJzY3JpcHRpb25zW190aGlzLl91cmxdO1xyXG4gICAgaWYgKHN1YnMpIHtcclxuICAgICAgbGV0IGluZGV4ID0gc3Vicy5pbmRleE9mKF90aGlzKTtcclxuICAgICAgc3Vicy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cclxuICAgICAgLy9pZiB0aGVyZSBhcmUgbm8gbGlzdGVuZXJzLCByZW1vdmUgdGhlIHN1YnNjcmlwdGlvbiBlbnRpcmVseS5cclxuICAgICAgaWYgKHN1YnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgZGVsZXRlIF90aGlzLl9zdWJzY3JpcHRpb25zW190aGlzLl91cmxdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBCdXM7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvYnVzL0J1cy5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBO0FBQ0E7QUFEQTtBQUNBOzs7OztBQUFBO0FBQ0E7QUFDQTs7Ozs7O0FBM0JBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTtBQUNBO0FBU0E7QUFDQTs7Ozs7OztBQVNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFPQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBTUE7Ozs7O0FBSUE7QUFDQTs7Ozs7O0FBTUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBR0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQWxCQTtBQUFBO0FBQUE7Ozs7O0FBcUJBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///204\n")},function(module,exports,__webpack_require__){eval('// version: 0.8.0\r\n// date: Tue Jan 09 2018 17:01:37 GMT+0000 (WET)\r\n// licence: \r\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the "License");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an "AS IS" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\r\n\r\n\r\n!function(e,t){ true?module.exports=t():"function"==typeof define&&define.amd?define("Utils",[],t):"object"==typeof exports?exports.Utils=t():(e[""]=e[""]||{},e[""].Utils=t())}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=196)}({0:function(e,t){var n=e.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},1:function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},10:function(e,t,n){var r=n(8),o=n(15);e.exports=n(3)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},12:function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},121:function(e,t){!function(){"use strict";if(!Object.observe&&"function"==typeof Proxy){function e(e,t,n,r,o,i){var u,c=this;function s(e,r){if(s.delay=r,!s.pause&&c.changeset.length>0){if(!e){var o=c.changeset.filter(function(e){return!n||n.indexOf(e.type)>=0});o.length>0&&t(o)}c.changeset=[]}}return s.pause=o,s.delay=i,c.get=function(e,t){return"__observer__"===t?c:"unobserve"===t?function(){return Object.unobserve(e),e}:"deliver"===t?s:e[t]},c.target=e,c.changeset=[],c.target.__observerCallbacks__||(Object.defineProperty(e,"__observerCallbacks__",{enumerable:!1,configurable:!0,writable:!1,value:[]}),Object.defineProperty(e,"__observers__",{enumerable:!1,configurable:!0,writable:!1,value:[]})),c.target.__observerCallbacks__.push(t),c.target.__observers__.push(this),u=new Proxy(e,c),s(!1,i),u}e.prototype.deliver=function(){return this.get(null,"deliver")},e.prototype.set=function(e,t,n){var r=e[t],o=void 0===r?"add":"update";if(e[t]=n,e.__observers__.indexOf(this)>=0&&(!this.acceptlist||this.acceptlist.indexOf(o)>=0)){var i={object:e,name:t,type:o},u=0===this.changeset.length,c=this.deliver();"update"===o&&(i.oldValue=r),this.changeset.push(i),u&&c(!1,"number"==typeof c.delay?c.delay:10)}return!0},e.prototype.deleteProperty=function(e,t){var n=e[t];if(delete e[t],e.__observers__.indexOf(this)>=0&&!this.acceptlist||this.acceptlist.indexOf("delete")>=0){var r={object:e,name:t,type:"delete",oldValue:n},o=0===this.changeset.length,i=this.deliver();this.changeset.push(r),o&&i(!1,"number"==typeof i.delay?i.delay:10)}return!0},e.prototype.defineProperty=function(e,t,n){if(Object.defineProperty(e,t,n),e.__observers__.indexOf(this)>=0&&!this.acceptlist||this.acceptlist.indexOf("reconfigure")>=0){var r={object:e,name:t,type:"reconfigure"},o=0===this.changeset.length,i=this.deliver();this.changeset.push(r),o&&i(!1,"number"==typeof i.delay?i.delay:10)}return!0},e.prototype.setPrototypeOf=function(e,t){var n=Object.getPrototypeOf(e);if(Object.setPrototypeOf(e,t),e.__observers__.indexOf(this)>=0&&!this.acceptlist||this.acceptlist.indexOf("setPrototype")>=0){var r={object:e,name:"__proto__",type:"setPrototype",oldValue:n},o=0===this.changeset.length,i=this.deliver();this.changeset.push(r),o&&i(!1,"number"==typeof i.delay?i.delay:10)}return!0},e.prototype.preventExtensions=function(e){if(Object.preventExtensions(e),e.__observers__.indexOf(this)>=0&&!this.acceptlist||this.acceptlist.indexOf("preventExtensions")>=0){var t={object:e,type:"preventExtensions"},n=0===this.changeset.length,r=this.deliver();this.changeset.push(t),n&&r(!1,"number"==typeof r.delay?r.delay:10)}return!0},Object.observe=function(t,n,r,o,i,u){return new e(t,n,r,o,i,u)},Object.unobserve=function(e,t){if(e.__observerCallbacks__){if(!t)return e.__observerCallbacks__.splice(0,e.__observerCallbacks__.length),void e.__observers__.splice(0,e.__observers__.length);e.__observerCallbacks__.forEach(function(n,r){t===n&&(e.__observerCallbacks__.splice(r,1),delete e.__observers__[r].callback,e.__observers__.splice(r,1))})}},Array.observe=function(e,t,n,r,o,i){if(!(e instanceof Array||Array.isArray(e)))throw new TypeError("First argument to Array.observer is not an Array");n=n||["add","update","delete","splice"];var u=new Proxy(e,{get:function(t,r){return"unobserve"===r?function(e){return e?Object.unobserve(t,e):t.unobserve()}:"splice"===r?function(r,o){if("number"!=typeof r||"number"!=typeof o)throw new TypeError("First two arguments to Array splice are not number, number");var i=this.slice(r,r+o),u=arguments.length>1?arguments.length-2:0,s={object:e,type:"splice",index:r,removed:i,addedCount:u};if(t.splice.apply(t,arguments),n.indexOf("splice")>=0){r=0===c.__observer__.changeset.length;var a=c.__observer__.deliver();c.__observer__.changeset.push(s),r&&a(!1,"number"==typeof a.delay?a.delay:10)}}:"push"===r?function(e){return this.splice(this.length,0,e)}:"pop"===r?function(){return this.splice(this.length-1,1)}:"unshift"===r?function(e){return this.splice(0,0,e)}:"shift"===r?function(){return this.splice(0,1)}:t[r]}}),c=Object.observe(u,function(e){var r=e.filter(function(e){return"length"!==e.name&&"add"!==e.name&&(!n||n.indexOf(e.type)>=0)});r.length>0&&t(r)},n,r,o,i);return c},Array.unobserve=function(e,t){return e.unobserve(t)}}Object.deepObserve=function(e,t,n){var r=function(e){return{}.toString.call(e).match(/\\s([a-zA-Z]+)/)[1].toLowerCase()};function o(e,n){Object.keys(e).forEach(function(o){if(("object"===r(e[o])||"array"===r(e[o]))&&!e[o].hasOwnProperty("__observers__")){var i=n.slice(0);i.push(o),e[o]=Object.deepObserve(e[o],t,i)}})}return o(e,n=n||[]),Object.observe(e,function(e){var r=[];e.forEach(function(e){var t=(n.length>0?n.join(".")+".":"")+e.name;"update"!==e.type&&"add"!==e.type||o(e.object,n),r.push({name:e.name,object:e.object,type:e.type,oldValue:e.oldValue,newValue:e.object[e.name],keypath:t}),function e(t,n,o,i,u){i instanceof Object?Object.keys(i).forEach(function(c){if(!o||o[c]!==i[c]){var s=o&&void 0!==o[c]?o[c]:void 0,a=void 0===s?"add":"update",f=u+"."+c;r.push({name:t,object:n,type:a,oldValue:s,newValue:i[c],keypath:f}),e(t,n,s,i[c],f)}}):o instanceof Object&&Object.keys(o).forEach(function(c){var s=null===i?"update":"delete",a=u+"."+c;r.push({name:t,object:n,type:s,oldValue:o[c],newValue:i,keypath:a}),e(t,n,o[c],void 0,a)})}(e.name,e.object,e.oldValue,e.object[e.name],t)}),t(r)})}}()},14:function(e,t,n){var r=n(22);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},15:function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},196:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WatchingYou=void 0;var r,o=n(197),i=(r=o)&&r.__esModule?r:{default:r};t.WatchingYou=i.default},197:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(4)),o=i(n(7));function i(e){return e&&e.__esModule?e:{default:e}}n(121);var u=function(){function e(){(0,r.default)(this,e),this._watching={},this._observers=[]}return(0,o.default)(e,[{key:"watch",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this._watching[e]=r?Object.deepObserve(t,function(t){t.every(function(t){n._fireEvent(e,t)})}):Object.observe(t,function(t){t.every(function(t){n._fireEvent(e,t)})}),this._watching[e]}},{key:"observe",value:function(e,t){this._observers.push({key:e,callback:t})}},{key:"_fireEvent",value:function(e,t){this._observers.filter(function(t){return t.key===e}).forEach(function(e){e.callback(t)})}}]),e}();t.default=u,e.exports=t.default},22:function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},24:function(e,t,n){var r=n(6);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can\'t convert object to primitive value")}},26:function(e,t,n){var r=n(6),o=n(1).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},3:function(e,t,n){e.exports=!n(12)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},38:function(e,t,n){e.exports=!n(3)&&!n(12)(function(){return 7!=Object.defineProperty(n(26)("div"),"a",{get:function(){return 7}}).a})},4:function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},5:function(e,t,n){var r=n(1),o=n(0),i=n(14),u=n(10),c="prototype",s=function(e,t,n){var a,f,l,p=e&s.F,d=e&s.G,v=e&s.S,b=e&s.P,h=e&s.B,_=e&s.W,y=d?o:o[t]||(o[t]={}),g=y[c],j=d?r:v?r[t]:(r[t]||{})[c];d&&(n=t);for(a in n)(f=!p&&j&&void 0!==j[a])&&a in y||(l=f?j[a]:n[a],y[a]=d&&"function"!=typeof j[a]?n[a]:h&&f?i(l,r):_&&j[a]==l?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t[c]=e[c],t}(l):b&&"function"==typeof l?i(Function.call,l):l,b&&((y.virtual||(y.virtual={}))[a]=l,e&s.R&&g&&!g[a]&&u(g,a,l)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,e.exports=s},55:function(e,t,n){e.exports={default:n(60),__esModule:!0}},6:function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},60:function(e,t,n){n(61);var r=n(0).Object;e.exports=function(e,t,n){return r.defineProperty(e,t,n)}},61:function(e,t,n){var r=n(5);r(r.S+r.F*!n(3),"Object",{defineProperty:n(8).f})},7:function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(55),i=(r=o)&&r.__esModule?r:{default:r};t.default=function(){function e(e,t){for(var n=0;n timeNow) {\n _this.defaultIdentity.expires = parseInt(expires);\n _this.currentIdentity = id;\n }\n });\n }\n\n resolve();\n });\n });\n }\n }, {\n key: 'loadAccessTokens',\n value: function loadAccessTokens() {\n var _this = this;\n return new _promise2.default(function (resolve) {\n\n _this._storageManager.get('accessTokens').then(function (accessTokens) {\n\n if (accessTokens) _this._accessTokens = accessTokens;\n resolve();\n });\n });\n }\n\n // to confirm if this function is required when the App constraints the identity selection\n\n }, {\n key: 'addIdentity',\n value: function addIdentity(identity) {\n var _this2 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n if (_this._isValid(identity)) {\n var id = identity.identifiers[0];\n (0, _assign2.default)(_this2._identities[id], identity);\n _this2._storeIdentity(identity).then(function () {\n _this2._identities[id].status = 'created';\n resolve();\n });\n } else {\n reject('[Identities.addIdentity] invalid IdAssertion');\n }\n });\n }\n }, {\n key: 'addAssertion',\n value: function addAssertion(assertion) {\n var _this3 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n if (_this._isValid(assertion)) {\n assertion.userProfile.guid = _this._guid;\n var userUrl = assertion.userProfile.userURL;\n if (!_this.identities[userUrl]) _this._identities[userUrl] = assertion;else _this.identities[userUrl] = assertion;\n\n _this._store().then(function () {\n _this3._identities[userUrl].status = 'created';\n resolve(assertion);\n });\n } else {\n reject('[Identities.addAssertion] invalid IdAssertion: ', assertion);\n }\n });\n }\n }, {\n key: 'removeIdentity',\n value: function removeIdentity(userUrl) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n delete _this.identities[userUrl];\n\n _this._store().then(function () {\n resolve();\n });\n });\n }\n }, {\n key: 'addAccessToken',\n value: function addAccessToken(accessToken) {\n var _this = this;\n log.info('[Identities.addAccessToken] ', accessToken);\n\n return new _promise2.default(function (resolve, reject) {\n\n if (_this._isValidAccessToken(accessToken)) {\n\n // let newAccessToken = deepClone(accessToken);\n\n _this._accessTokens[accessToken.domain] = accessToken;\n\n _this._storeAccessTokens().then(function () {\n _this._accessTokens[accessToken.domain].status = 'created';\n resolve(accessToken);\n });\n } else {\n reject('[Identities.addIdentity] invalid AccessToken: ', accessToken);\n }\n });\n }\n }, {\n key: 'setAccessTokenInProgress',\n value: function setAccessTokenInProgress(domain) {\n\n if (this._accessTokens[domain]) this._accessTokens[domain].status = 'in-progress';else this._accessTokens[domain] = { status: 'in-progress' };\n }\n }, {\n key: 'getAccessToken',\n value: function getAccessToken(domain, resources) {\n var accessToken = this._accessTokens[domain];\n\n if (!accessToken) {\n return undefined;\n } else if (resources.every(function (i) {\n return accessToken.resources.indexOf(i) != -1;\n })) {\n return this._accessTokens[domain];\n } else {\n return new Error('[Identities.getAccessToken] Not found for ', domain);\n }\n }\n }, {\n key: 'updateAssertion',\n value: function updateAssertion(assertion) {\n var _this = this;\n\n return new _promise2.default(function (resolve) {\n var userUrl = assertion.userProfile.userUrl;\n\n if (!_this.identities[userUrl]) {\n return reject('[Identities.updateAssertion] Identity not found for ', userUrl);\n } else {\n _this.identities[userUrl] = assertion;\n _this._store().then(function () {\n resolve();\n });\n }\n });\n }\n }, {\n key: 'addIdAssertion',\n value: function addIdAssertion(identifier, assertion, idp, scope) {\n var _this = this;\n\n var newIdAssertion = new IdAssertion(assertion, idp, scope);\n\n _this.idAssertionList.push(newIdAssertion);\n }\n\n //TODO: complete with more verifications. To be moved to Identity?\n\n }, {\n key: '_isValid',\n value: function _isValid(identity) {\n if (!identity.hasOwnProperty('assertion')) {\n return false;\n }\n\n var splitedAssertion = identity.assertion.split('.');\n var assertionParsed = void 0;\n\n //verify if the token contains the 3 components, or just the assertion\n try {\n if (splitedAssertion[1]) {\n assertionParsed = (0, _utils.decode)(splitedAssertion[1]);\n } else {\n assertionParsed = (0, _utils.decode)(identity.assertion);\n }\n } catch (err) {\n return false;\n }\n\n return true;\n }\n }, {\n key: '_isValidAccessToken',\n value: function _isValidAccessToken(accessToken) {\n\n if (!accessToken.hasOwnProperty('accessToken')) {\n return false;\n }\n\n if (!accessToken.hasOwnProperty('domain')) {\n return false;\n }\n\n if (!(accessToken.hasOwnProperty('resources') && Array.isArray(accessToken.resources))) {\n return false;\n }\n\n if (!(accessToken.hasOwnProperty('expires') && (0, _isInteger2.default)(accessToken.expires))) {\n return false;\n }\n\n if (!accessToken.hasOwnProperty('input')) {\n return false;\n }\n\n return true;\n }\n\n //TODO: add function to only set one new identity using the new indexed storage manager\n\n }, {\n key: '_store',\n value: function _store() {\n var _this4 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var store = (0, _keys2.default)(_this4._identities).map(function (userURL) {\n return _this._storageManager.set(userURL, 0, _this4._identities[userURL], 'identities');\n });\n\n _promise2.default.all(store).then(function () {\n resolve();\n }).catch(function (err) {\n reject('On _sendReporterSessionKey from method storeIdentity error: ' + err);\n });\n });\n }\n }, {\n key: '_storeAccessTokens',\n value: function _storeAccessTokens() {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var accessTokens = (0, _utils.deepClone)(_this._accessTokens);\n\n _this._storageManager.set('accessTokens', 0, accessTokens).then(function () {\n resolve();\n }).catch(function (err) {\n reject('On _sendReporterSessionKey from method storeIdentity error: ' + err);\n });\n });\n }\n }, {\n key: 'identities',\n get: function get() {\n return this._identities;\n }\n }, {\n key: 'accessTokens',\n get: function get() {\n return this._accessTokens;\n }\n }, {\n key: 'watchingYou',\n get: function get() {\n return this._watchingYou;\n }\n }, {\n key: 'guid',\n set: function set(guid) {\n this._guid = guid;\n },\n get: function get() {\n return this._guid;\n }\n }, {\n key: 'defaultIdentity',\n set: function set(identifier) {\n if (this.identities[identifier]) this._defaultIdentity = identifier;else throw new Error('[Identities.set defaultIdentity ] Error: identity does not exist here: ', identifier);\n },\n get: function get() {\n if (this._defaultIdentity) return (0, _assign2.default)({}, this.identities[this._defaultIdentity]);else return false;\n }\n }, {\n key: 'currentIdentity',\n set: function set(identifier) {\n if (this.identities[identifier]) this._currentIdentity = identifier;else throw '[Identities.set currentIdentity ] Error: identity does not exist here: ', identifier;\n },\n get: function get() {\n return (0, _assign2.default)({}, this.identities[this._currentIdentity]);\n }\n }, {\n key: 'identifiers',\n get: function get() {\n return (0, _keys2.default)(this._identities);\n }\n }]);\n return Identities;\n}();\n\n// move to Identity service framework?\n\nvar IdAssertion = function () {\n function IdAssertion(assertion, idp, userProfile) {\n (0, _classCallCheck3.default)(this, IdAssertion);\n\n var _this = this;\n\n _this._assertion = assertion;\n _this._idp = idp;\n _this._userProfile = userProfile;\n }\n\n (0, _createClass3.default)(IdAssertion, [{\n key: 'assertion',\n get: function get() {\n return this._assertion;\n }\n }, {\n key: 'idp',\n get: function get() {\n return this._idp;\n }\n }, {\n key: 'userProfile',\n get: function get() {\n return this._userProfile;\n }\n }]);\n return IdAssertion;\n}();\n\nvar IdValidation = function () {\n function IdValidation(identity, contents) {\n (0, _classCallCheck3.default)(this, IdValidation);\n\n var _this = this;\n _this.identity = identity;\n _this.contents = contents;\n }\n\n (0, _createClass3.default)(IdValidation, [{\n key: 'validates',\n value: function validates(identity, contents) {\n //TODO implement the logic\n\n }\n }]);\n return IdValidation;\n}();\n\nexports.default = Identities;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9pZGVudGl0eS9JZGVudGl0aWVzLmpzPzM1NjQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9nIFN5c3RlbVxyXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xyXG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignSWRlbnRpdHlNb2R1bGUnKTtcclxuXHJcbmltcG9ydCB7IGRlY29kZSwgc2Vjb25kc1NpbmNlRXBvY2gsIGRlZXBDbG9uZSB9IGZyb20gJy4uL3V0aWxzL3V0aWxzLmpzJztcclxuaW1wb3J0IHsgV2F0Y2hpbmdZb3UgfSBmcm9tICdzZXJ2aWNlLWZyYW1ld29yay9kaXN0L1V0aWxzJztcclxuXHJcblxyXG4vKipcclxuKiBUaGUgSWRlbnRpdHkgRGF0YSBNb2RlbCBpcyB1c2VkIHRvIG1vZGVsIHRoZSByZVRISU5LIFVzZXIgZW50aXR5LiBUaGUgSWRlbnRpdHkgZGF0YSBtb2RlbCBpcyBoYW5kbGVkIGJ5IElkZW50aXR5IE1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eS5cclxuKlxyXG4qL1xyXG5jbGFzcyBJZGVudGl0aWVzIHtcclxuXHJcbiAgY29uc3RydWN0b3IodHlwZSwgc3RvcmFnZU1hbmFnZXIpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgX3RoaXMuX3dhdGNoaW5nWW91ID0gbmV3IFdhdGNoaW5nWW91KCk7XHJcblxyXG4gICAgX3RoaXMuX3N0b3JhZ2VNYW5hZ2VyID0gc3RvcmFnZU1hbmFnZXI7XHJcbiAgICBfdGhpcy5fZ3VpZDtcclxuICAgIF90aGlzLl90eXBlID0gdHlwZTtcclxuICAgIF90aGlzLl9pZGVudGl0aWVzID0ge307XHJcbiAgICBfdGhpcy5fYWNjZXNzVG9rZW5zID0gX3RoaXMud2F0Y2hpbmdZb3Uud2F0Y2goJ2FjY2Vzc1Rva2VucycsIHt9LCB0cnVlKTtcclxuXHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMuX2lkZW50aXRpZXMgPSB7fTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMpO1xyXG4gICAgdGhpcy5jdXJyZW50SWRlbnRpdHkgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmRlZmF1bHRJZGVudGl0eSA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGdldCBpZGVudGl0aWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkZW50aXRpZXM7XHJcbiAgfVxyXG5cclxuICBnZXQgYWNjZXNzVG9rZW5zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjY2Vzc1Rva2VucztcclxuICB9XHJcblxyXG4gIGdldCB3YXRjaGluZ1lvdSgpIHtcclxuICAgIHJldHVybiB0aGlzLl93YXRjaGluZ1lvdTtcclxuICB9XHJcblxyXG4gIHNldCBndWlkKGd1aWQpIHtcclxuICAgIHRoaXMuX2d1aWQgPSBndWlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGd1aWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ3VpZDtcclxuICB9XHJcblxyXG4gIHNldCBkZWZhdWx0SWRlbnRpdHkoaWRlbnRpZmllcikge1xyXG4gICAgaWYgKHRoaXMuaWRlbnRpdGllc1tpZGVudGlmaWVyXSkgdGhpcy5fZGVmYXVsdElkZW50aXR5ID0gaWRlbnRpZmllcjtcclxuICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKCdbSWRlbnRpdGllcy5zZXQgZGVmYXVsdElkZW50aXR5IF0gRXJyb3I6IGlkZW50aXR5IGRvZXMgbm90IGV4aXN0IGhlcmU6ICcsIGlkZW50aWZpZXIpO1xyXG4gIH1cclxuXHJcbiAgc2V0IGN1cnJlbnRJZGVudGl0eShpZGVudGlmaWVyKSB7XHJcbiAgICBpZiAodGhpcy5pZGVudGl0aWVzW2lkZW50aWZpZXJdKSB0aGlzLl9jdXJyZW50SWRlbnRpdHkgPSBpZGVudGlmaWVyO1xyXG4gICAgZWxzZSB0aHJvdyAnW0lkZW50aXRpZXMuc2V0IGN1cnJlbnRJZGVudGl0eSBdIEVycm9yOiBpZGVudGl0eSBkb2VzIG5vdCBleGlzdCBoZXJlOiAnLCBpZGVudGlmaWVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmF1bHRJZGVudGl0eSgpIHtcclxuICAgIGlmICh0aGlzLl9kZWZhdWx0SWRlbnRpdHkpIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmlkZW50aXRpZXNbdGhpcy5fZGVmYXVsdElkZW50aXR5XSk7XHJcbiAgICBlbHNlIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldCBjdXJyZW50SWRlbnRpdHkoKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5pZGVudGl0aWVzW3RoaXMuX2N1cnJlbnRJZGVudGl0eV0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlkZW50aWZpZXJzKCkge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX2lkZW50aXRpZXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SWRlbnRpdHkoaWRlbnRpZmllcikge1xyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX2lkZW50aXRpZXNbaWRlbnRpZmllcl0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZElkZW50aXRpZXMoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcblxyXG4gICAgICBfdGhpcy5fc3RvcmFnZU1hbmFnZXIuZ2V0KG51bGwsIG51bGwsICdpZGVudGl0aWVzJykudGhlbigoaWRlbnRpdGllcykgPT4ge1xyXG5cclxuICAgICAgICBsb2cuaW5mbygnW0lkZW50aXRpZXMuTG9hZCBJZGVudGl0aWVzXSBpZGVudGl0aWVzOiAnLCBpZGVudGl0aWVzKTtcclxuXHJcbiAgICAgICAgaWYgKGlkZW50aXRpZXMpIHtcclxuICAgICAgICAgIF90aGlzLl9pZGVudGl0aWVzID0gaWRlbnRpdGllcztcclxuXHJcbiAgICAgICAgICAvLyBsZXQncyBzZXQgYXMgZGVmYXVsdCBpZGVudGl0eSB0aGUgb25lIHRoYXQgZXhwaXJlcyBsYXRlclxyXG5cclxuICAgICAgICAgIF90aGlzLmlkZW50aWZpZXJzLmZvckVhY2goKGlkKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB0aW1lTm93ID0gc2Vjb25kc1NpbmNlRXBvY2goKTtcclxuICAgICAgICAgICAgbGV0IGlkZW50aXR5ID0gX3RoaXMuX2lkZW50aXRpZXNbaWRdO1xyXG4gICAgICAgICAgICBsZXQgZXhwaXJlcyA9IGlkZW50aXR5LmV4cGlyZXM7XHJcblxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgIGlmICghaWRlbnRpdHkuaGFzT3duUHJvcGVydHkoJ2ludGVyd29ya2luZycpXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgfHwgIWlkZW50aXR5LmludGVyd29ya2luZykge1xyXG4gICAgICAgICAgICBfdGhpcy5kZWZhdWx0SWRlbnRpdHkgPSBpZDtcclxuXHJcbiAgICAgICAgICAgIGlmIChwYXJzZUludChleHBpcmVzKSA+IHRpbWVOb3cpIHtcclxuICAgICAgICAgICAgICBfdGhpcy5kZWZhdWx0SWRlbnRpdHkuZXhwaXJlcyA9IHBhcnNlSW50KGV4cGlyZXMpO1xyXG4gICAgICAgICAgICAgIF90aGlzLmN1cnJlbnRJZGVudGl0eSA9IGlkO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkQWNjZXNzVG9rZW5zKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG5cclxuICAgICAgX3RoaXMuX3N0b3JhZ2VNYW5hZ2VyLmdldCgnYWNjZXNzVG9rZW5zJykudGhlbigoYWNjZXNzVG9rZW5zKSA9PiB7XHJcblxyXG4gICAgICAgIGlmIChhY2Nlc3NUb2tlbnMpIF90aGlzLl9hY2Nlc3NUb2tlbnMgPSBhY2Nlc3NUb2tlbnM7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gdG8gY29uZmlybSBpZiB0aGlzIGZ1bmN0aW9uIGlzIHJlcXVpcmVkIHdoZW4gdGhlIEFwcCBjb25zdHJhaW50cyB0aGUgaWRlbnRpdHkgc2VsZWN0aW9uXHJcblxyXG4gIGFkZElkZW50aXR5KGlkZW50aXR5KSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmIChfdGhpcy5faXNWYWxpZChpZGVudGl0eSkpIHtcclxuICAgICAgICBsZXQgaWQgPSBpZGVudGl0eS5pZGVudGlmaWVyc1swXTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2lkZW50aXRpZXNbaWRdLCBpZGVudGl0eSk7XHJcbiAgICAgICAgdGhpcy5fc3RvcmVJZGVudGl0eShpZGVudGl0eSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9pZGVudGl0aWVzW2lkXS5zdGF0dXMgPSAnY3JlYXRlZCc7XHJcbiAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7IHJlamVjdCgnW0lkZW50aXRpZXMuYWRkSWRlbnRpdHldIGludmFsaWQgSWRBc3NlcnRpb24nKTsgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgYWRkQXNzZXJ0aW9uKGFzc2VydGlvbikge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAoX3RoaXMuX2lzVmFsaWQoYXNzZXJ0aW9uKSkge1xyXG4gICAgICAgIGFzc2VydGlvbi51c2VyUHJvZmlsZS5ndWlkID0gX3RoaXMuX2d1aWQ7XHJcbiAgICAgICAgbGV0IHVzZXJVcmwgPSBhc3NlcnRpb24udXNlclByb2ZpbGUudXNlclVSTDtcclxuICAgICAgICBpZiAoIV90aGlzLmlkZW50aXRpZXNbdXNlclVybF0pIF90aGlzLl9pZGVudGl0aWVzW3VzZXJVcmxdID0gYXNzZXJ0aW9uO1xyXG4gICAgICAgIGVsc2UgX3RoaXMuaWRlbnRpdGllc1t1c2VyVXJsXSA9IGFzc2VydGlvbjtcclxuXHJcbiAgICAgICAgX3RoaXMuX3N0b3JlKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9pZGVudGl0aWVzW3VzZXJVcmxdLnN0YXR1cyA9ICdjcmVhdGVkJztcclxuICAgICAgICAgIHJlc29sdmUoYXNzZXJ0aW9uKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHsgcmVqZWN0KCdbSWRlbnRpdGllcy5hZGRBc3NlcnRpb25dIGludmFsaWQgSWRBc3NlcnRpb246ICcsIGFzc2VydGlvbik7IH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHJlbW92ZUlkZW50aXR5KHVzZXJVcmwpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGRlbGV0ZSBfdGhpcy5pZGVudGl0aWVzW3VzZXJVcmxdO1xyXG5cclxuICAgICAgX3RoaXMuX3N0b3JlKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBhZGRBY2Nlc3NUb2tlbihhY2Nlc3NUb2tlbikge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGxvZy5pbmZvKCdbSWRlbnRpdGllcy5hZGRBY2Nlc3NUb2tlbl0gJywgYWNjZXNzVG9rZW4pO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICBpZiAoX3RoaXMuX2lzVmFsaWRBY2Nlc3NUb2tlbihhY2Nlc3NUb2tlbikpIHtcclxuXHJcbiAgICAgICAgLy8gICAgICAgIGxldCBuZXdBY2Nlc3NUb2tlbiA9IGRlZXBDbG9uZShhY2Nlc3NUb2tlbik7XHJcblxyXG4gICAgICAgIF90aGlzLl9hY2Nlc3NUb2tlbnNbYWNjZXNzVG9rZW4uZG9tYWluXSA9IGFjY2Vzc1Rva2VuO1xyXG5cclxuICAgICAgICBfdGhpcy5fc3RvcmVBY2Nlc3NUb2tlbnMoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIF90aGlzLl9hY2Nlc3NUb2tlbnNbYWNjZXNzVG9rZW4uZG9tYWluXS5zdGF0dXMgPSAnY3JlYXRlZCc7XHJcbiAgICAgICAgICByZXNvbHZlKGFjY2Vzc1Rva2VuKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHsgcmVqZWN0KCdbSWRlbnRpdGllcy5hZGRJZGVudGl0eV0gaW52YWxpZCBBY2Nlc3NUb2tlbjogJywgYWNjZXNzVG9rZW4pOyB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBzZXRBY2Nlc3NUb2tlbkluUHJvZ3Jlc3MoZG9tYWluKSB7XHJcblxyXG4gICAgaWYgKHRoaXMuX2FjY2Vzc1Rva2Vuc1tkb21haW5dKSB0aGlzLl9hY2Nlc3NUb2tlbnNbZG9tYWluXS5zdGF0dXMgPSAnaW4tcHJvZ3Jlc3MnO1xyXG4gICAgZWxzZSB0aGlzLl9hY2Nlc3NUb2tlbnNbZG9tYWluXSA9IHsgc3RhdHVzOiAnaW4tcHJvZ3Jlc3MnIH07XHJcbiAgfVxyXG5cclxuICBnZXRBY2Nlc3NUb2tlbihkb21haW4sIHJlc291cmNlcykge1xyXG4gICAgbGV0IGFjY2Vzc1Rva2VuID0gdGhpcy5fYWNjZXNzVG9rZW5zW2RvbWFpbl07XHJcblxyXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgaWYgKFxyXG4gICAgICByZXNvdXJjZXMuZXZlcnkoKGkpID0+IHsgcmV0dXJuIGFjY2Vzc1Rva2VuLnJlc291cmNlcy5pbmRleE9mKGkpICE9IC0xOyB9KSkgeyByZXR1cm4gdGhpcy5fYWNjZXNzVG9rZW5zW2RvbWFpbl07IH0gZWxzZSB7IHJldHVybiBuZXcgRXJyb3IoJ1tJZGVudGl0aWVzLmdldEFjY2Vzc1Rva2VuXSBOb3QgZm91bmQgZm9yICcsIGRvbWFpbik7IH1cclxuXHJcbiAgfVxyXG5cclxuICB1cGRhdGVBc3NlcnRpb24oYXNzZXJ0aW9uKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBsZXQgdXNlclVybCA9IGFzc2VydGlvbi51c2VyUHJvZmlsZS51c2VyVXJsO1xyXG5cclxuICAgICAgaWYgKCFfdGhpcy5pZGVudGl0aWVzW3VzZXJVcmxdKSB7IHJldHVybiByZWplY3QoJ1tJZGVudGl0aWVzLnVwZGF0ZUFzc2VydGlvbl0gSWRlbnRpdHkgbm90IGZvdW5kIGZvciAnLCB1c2VyVXJsKTsgfSBlbHNlIHtcclxuICAgICAgICBfdGhpcy5pZGVudGl0aWVzW3VzZXJVcmxdID0gYXNzZXJ0aW9uO1xyXG4gICAgICAgIF90aGlzLl9zdG9yZSgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgYWRkSWRBc3NlcnRpb24oaWRlbnRpZmllciwgYXNzZXJ0aW9uLCBpZHAsIHNjb3BlKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBuZXdJZEFzc2VydGlvbiA9IG5ldyBJZEFzc2VydGlvbihhc3NlcnRpb24sIGlkcCwgc2NvcGUpO1xyXG5cclxuICAgIF90aGlzLmlkQXNzZXJ0aW9uTGlzdC5wdXNoKG5ld0lkQXNzZXJ0aW9uKTtcclxuICB9XHJcblxyXG4gIC8vVE9ETzogY29tcGxldGUgd2l0aCBtb3JlIHZlcmlmaWNhdGlvbnMuIFRvIGJlIG1vdmVkIHRvIElkZW50aXR5P1xyXG5cclxuICBfaXNWYWxpZChpZGVudGl0eSkge1xyXG4gICAgaWYgKCFpZGVudGl0eS5oYXNPd25Qcm9wZXJ0eSgnYXNzZXJ0aW9uJykpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzcGxpdGVkQXNzZXJ0aW9uID0gaWRlbnRpdHkuYXNzZXJ0aW9uLnNwbGl0KCcuJyk7XHJcbiAgICBsZXQgYXNzZXJ0aW9uUGFyc2VkO1xyXG5cclxuICAgIC8vdmVyaWZ5IGlmIHRoZSB0b2tlbiBjb250YWlucyB0aGUgMyBjb21wb25lbnRzLCBvciBqdXN0IHRoZSBhc3NlcnRpb25cclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChzcGxpdGVkQXNzZXJ0aW9uWzFdKSB7XHJcbiAgICAgICAgYXNzZXJ0aW9uUGFyc2VkID0gZGVjb2RlKHNwbGl0ZWRBc3NlcnRpb25bMV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGFzc2VydGlvblBhcnNlZCA9IGRlY29kZShpZGVudGl0eS5hc3NlcnRpb24pO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgfVxyXG5cclxuICBfaXNWYWxpZEFjY2Vzc1Rva2VuKGFjY2Vzc1Rva2VuKSB7XHJcblxyXG4gICAgaWYgKCFhY2Nlc3NUb2tlbi5oYXNPd25Qcm9wZXJ0eSgnYWNjZXNzVG9rZW4nKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFhY2Nlc3NUb2tlbi5oYXNPd25Qcm9wZXJ0eSgnZG9tYWluJykpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghKGFjY2Vzc1Rva2VuLmhhc093blByb3BlcnR5KCdyZXNvdXJjZXMnKSAmJiBBcnJheS5pc0FycmF5KGFjY2Vzc1Rva2VuLnJlc291cmNlcykpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaWYgKCEoYWNjZXNzVG9rZW4uaGFzT3duUHJvcGVydHkoJ2V4cGlyZXMnKSAmJiBOdW1iZXIuaXNJbnRlZ2VyKGFjY2Vzc1Rva2VuLmV4cGlyZXMpKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFhY2Nlc3NUb2tlbi5oYXNPd25Qcm9wZXJ0eSgnaW5wdXQnKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcblxyXG4gIH1cclxuXHJcbiAgLy9UT0RPOiBhZGQgZnVuY3Rpb24gdG8gb25seSBzZXQgb25lIG5ldyBpZGVudGl0eSB1c2luZyB0aGUgbmV3IGluZGV4ZWQgc3RvcmFnZSBtYW5hZ2VyXHJcblxyXG4gIF9zdG9yZSgpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IHN0b3JlID0gT2JqZWN0LmtleXModGhpcy5faWRlbnRpdGllcykubWFwKCh1c2VyVVJMKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIF90aGlzLl9zdG9yYWdlTWFuYWdlci5zZXQodXNlclVSTCwgMCwgdGhpcy5faWRlbnRpdGllc1t1c2VyVVJMXSwgJ2lkZW50aXRpZXMnKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBQcm9taXNlLmFsbChzdG9yZSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9KS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgIHJlamVjdCgnT24gX3NlbmRSZXBvcnRlclNlc3Npb25LZXkgZnJvbSBtZXRob2Qgc3RvcmVJZGVudGl0eSBlcnJvcjogJyArIGVycik7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuICBfc3RvcmVBY2Nlc3NUb2tlbnMoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICBsZXQgYWNjZXNzVG9rZW5zID0gZGVlcENsb25lKF90aGlzLl9hY2Nlc3NUb2tlbnMpO1xyXG5cclxuICAgICAgX3RoaXMuX3N0b3JhZ2VNYW5hZ2VyLnNldCgnYWNjZXNzVG9rZW5zJywgMCwgYWNjZXNzVG9rZW5zKS50aGVuKCgpID0+IHtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgcmVqZWN0KCdPbiBfc2VuZFJlcG9ydGVyU2Vzc2lvbktleSBmcm9tIG1ldGhvZCBzdG9yZUlkZW50aXR5IGVycm9yOiAnICsgZXJyKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLy8gbW92ZSB0byBJZGVudGl0eSBzZXJ2aWNlIGZyYW1ld29yaz9cclxuXHJcbmNsYXNzIElkQXNzZXJ0aW9uIHtcclxuXHJcbiAgY29uc3RydWN0b3IoYXNzZXJ0aW9uLCBpZHAsIHVzZXJQcm9maWxlKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIF90aGlzLl9hc3NlcnRpb24gPSBhc3NlcnRpb247XHJcbiAgICBfdGhpcy5faWRwID0gaWRwO1xyXG4gICAgX3RoaXMuX3VzZXJQcm9maWxlID0gdXNlclByb2ZpbGU7XHJcbiAgfVxyXG5cclxuICBnZXQgYXNzZXJ0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Fzc2VydGlvbjtcclxuICB9XHJcblxyXG4gIGdldCBpZHAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faWRwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHVzZXJQcm9maWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VzZXJQcm9maWxlO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmNsYXNzIElkVmFsaWRhdGlvbiB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGlkZW50aXR5LCBjb250ZW50cykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIF90aGlzLmlkZW50aXR5ID0gaWRlbnRpdHk7XHJcbiAgICBfdGhpcy5jb250ZW50cyA9IGNvbnRlbnRzO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVzKGlkZW50aXR5LCBjb250ZW50cykge1xyXG4gICAgLy9UT0RPIGltcGxlbWVudCB0aGUgbG9naWNcclxuXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBJZGVudGl0aWVzO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2lkZW50aXR5L0lkZW50aXRpZXMuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7Ozs7O0FBSkE7QUFDQTtBQUtBOzs7O0FBSUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQTZDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBOzs7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7OztBQUVBO0FBQ0E7QUFDQTtBQUVBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7QUFwU0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBRUE7QUFPQTtBQUNBO0FBRUE7OztBQVJBO0FBQ0E7QUFFQTtBQU9BO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7OztBQStQQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///206\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n\n/**\r\n* @author Ana Caldeira \r\n* @classdesc Class to combine the authorization decisions that result from rules evaluation.\r\n*/\nvar AllowOverrides = function () {\n function AllowOverrides() {\n (0, _classCallCheck3.default)(this, AllowOverrides);\n }\n\n (0, _createClass3.default)(AllowOverrides, [{\n key: 'combine',\n\n\n /**\r\n * Given an array of individual authorization decisions, prioritizes a positive one.\r\n * @param {boolean[]} decisions\r\n * @returns {boolean}\r\n */\n value: function combine(decisions) {\n if (decisions.indexOf(true) !== -1) {\n return true;\n } else {\n if (decisions.indexOf(false) !== -1) {\n return false;\n } else {\n return 'Not Applicable';\n }\n }\n }\n }]);\n return AllowOverrides;\n}();\n\nexports.default = AllowOverrides;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9BbGxvd092ZXJyaWRlcy5qcz80YzQ3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuXHJcbi8qKlxyXG4qIEBhdXRob3IgQW5hIENhbGRlaXJhIDxhbmEuY2FsZGVpcmFAdGVjbmljby51bGlzYm9hLnB0PlxyXG4qIEBjbGFzc2Rlc2MgQ2xhc3MgdG8gY29tYmluZSB0aGUgYXV0aG9yaXphdGlvbiBkZWNpc2lvbnMgdGhhdCByZXN1bHQgZnJvbSBydWxlcyBldmFsdWF0aW9uLlxyXG4qL1xyXG5jbGFzcyBBbGxvd092ZXJyaWRlcyB7XHJcblxyXG4gIC8qKlxyXG4gICogR2l2ZW4gYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBhdXRob3JpemF0aW9uIGRlY2lzaW9ucywgcHJpb3JpdGl6ZXMgYSBwb3NpdGl2ZSBvbmUuXHJcbiAgKiBAcGFyYW0gICAge2Jvb2xlYW5bXX0gICBkZWNpc2lvbnNcclxuICAqIEByZXR1cm5zICB7Ym9vbGVhbn1cclxuICAqL1xyXG4gIGNvbWJpbmUoZGVjaXNpb25zKSB7XHJcbiAgICBpZiAoZGVjaXNpb25zLmluZGV4T2YodHJ1ZSkgIT09IC0xKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGRlY2lzaW9ucy5pbmRleE9mKGZhbHNlKSAhPT0gLTEpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICdOb3QgQXBwbGljYWJsZSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBBbGxvd092ZXJyaWRlcztcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9BbGxvd092ZXJyaWRlcy5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTs7OztBQUlBOzs7Ozs7Ozs7QUFFQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///207\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n\n/**\r\n* @author Ana Caldeira \r\n* @classdesc Class to combine the authorization decisions that result from rules evaluation.\r\n*/\nvar BlockOverrides = function () {\n function BlockOverrides() {\n (0, _classCallCheck3.default)(this, BlockOverrides);\n }\n\n (0, _createClass3.default)(BlockOverrides, [{\n key: 'combine',\n\n\n /**\r\n * Given an array of individual authorisation decisions, prioritises a negative one.\r\n * @param {boolean[]} decisions\r\n * @returns {boolean}\r\n */\n value: function combine(decisions) {\n if (decisions.indexOf(false) !== -1) {\n return false;\n } else {\n if (decisions.indexOf(true) !== -1) {\n return true;\n } else {\n return 'Not Applicable';\n }\n }\n }\n }]);\n return BlockOverrides;\n}();\n\nexports.default = BlockOverrides;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9CbG9ja092ZXJyaWRlcy5qcz82MWM3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuXHJcbi8qKlxyXG4qIEBhdXRob3IgQW5hIENhbGRlaXJhIDxhbmEuY2FsZGVpcmFAdGVjbmljby51bGlzYm9hLnB0PlxyXG4qIEBjbGFzc2Rlc2MgQ2xhc3MgdG8gY29tYmluZSB0aGUgYXV0aG9yaXphdGlvbiBkZWNpc2lvbnMgdGhhdCByZXN1bHQgZnJvbSBydWxlcyBldmFsdWF0aW9uLlxyXG4qL1xyXG5jbGFzcyBCbG9ja092ZXJyaWRlcyB7XHJcblxyXG4gIC8qKlxyXG4gICogR2l2ZW4gYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBhdXRob3Jpc2F0aW9uIGRlY2lzaW9ucywgcHJpb3JpdGlzZXMgYSBuZWdhdGl2ZSBvbmUuXHJcbiAgKiBAcGFyYW0gICAge2Jvb2xlYW5bXX0gICBkZWNpc2lvbnNcclxuICAqIEByZXR1cm5zICB7Ym9vbGVhbn1cclxuICAqL1xyXG4gIGNvbWJpbmUoZGVjaXNpb25zKSB7XHJcbiAgICBpZiAoZGVjaXNpb25zLmluZGV4T2YoZmFsc2UpICE9PSAtMSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoZGVjaXNpb25zLmluZGV4T2YodHJ1ZSkgIT09IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICdOb3QgQXBwbGljYWJsZSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBCbG9ja092ZXJyaWRlcztcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9CbG9ja092ZXJyaWRlcy5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTs7OztBQUlBOzs7Ozs7Ozs7QUFFQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///208\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n\n/**\r\n* @author Ana Caldeira \r\n* @classdesc Class to combine the authorization decisions that result from rules evaluation.\r\n*/\nvar FirstApplicable = function () {\n function FirstApplicable() {\n (0, _classCallCheck3.default)(this, FirstApplicable);\n }\n\n (0, _createClass3.default)(FirstApplicable, [{\n key: 'combine',\n\n\n /**\r\n * Given an array of individual authorisation decisions, returns the first one different from 'Not Applicable', either positive or negative.\r\n * @param {boolean[]} decisions\r\n * @returns {boolean}\r\n */\n value: function combine(decisions) {\n for (var i in decisions) {\n if (decisions[i] !== 'Not Applicable') {\n return decisions[i];\n }\n }\n return 'Not Applicable';\n }\n }]);\n return FirstApplicable;\n}();\n\nexports.default = FirstApplicable;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9GaXJzdEFwcGxpY2FibGUuanM/MzNkZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxyXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxyXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXHJcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xyXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxyXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXHJcbipcclxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuKlxyXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbipcclxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKiovXHJcblxyXG4vKipcclxuKiBAYXV0aG9yIEFuYSBDYWxkZWlyYSA8YW5hLmNhbGRlaXJhQHRlY25pY28udWxpc2JvYS5wdD5cclxuKiBAY2xhc3NkZXNjIENsYXNzIHRvIGNvbWJpbmUgdGhlIGF1dGhvcml6YXRpb24gZGVjaXNpb25zIHRoYXQgcmVzdWx0IGZyb20gcnVsZXMgZXZhbHVhdGlvbi5cclxuKi9cclxuY2xhc3MgRmlyc3RBcHBsaWNhYmxlIHtcclxuXHJcbiAgLyoqXHJcbiAgKiBHaXZlbiBhbiBhcnJheSBvZiBpbmRpdmlkdWFsIGF1dGhvcmlzYXRpb24gZGVjaXNpb25zLCByZXR1cm5zIHRoZSBmaXJzdCBvbmUgZGlmZmVyZW50IGZyb20gJ05vdCBBcHBsaWNhYmxlJywgZWl0aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlLlxyXG4gICogQHBhcmFtICAgIHtib29sZWFuW119ICAgICBkZWNpc2lvbnNcclxuICAqIEByZXR1cm5zICB7Ym9vbGVhbn1cclxuICAqL1xyXG4gIGNvbWJpbmUoZGVjaXNpb25zKSB7XHJcbiAgICBmb3IgKGxldCBpIGluIGRlY2lzaW9ucykge1xyXG4gICAgICBpZiAoZGVjaXNpb25zW2ldICE9PSAnTm90IEFwcGxpY2FibGUnKSB7XHJcbiAgICAgICAgcmV0dXJuIGRlY2lzaW9uc1tpXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuICdOb3QgQXBwbGljYWJsZSc7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRmlyc3RBcHBsaWNhYmxlO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3BvbGljeS9jb21iaW5pbmdBbGdvcml0aG1zL0ZpcnN0QXBwbGljYWJsZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTs7OztBQUlBOzs7Ozs7Ozs7QUFFQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///209\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(500), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9hcnJheS9mcm9tLmpzPzczZjQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2FycmF5L2Zyb21cIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvYXJyYXkvZnJvbS5qc1xuLy8gbW9kdWxlIGlkID0gMjEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///210\n')},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(507), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvdmFsdWVzLmpzPzgxMTEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC92YWx1ZXNcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L3ZhbHVlcy5qc1xuLy8gbW9kdWxlIGlkID0gMjExXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///211\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('SynSubscription'); // Log System\n\nvar Subscription = function () {\n function Subscription(bus, owner, url, childrens, isReporter) {\n (0, _classCallCheck3.default)(this, Subscription);\n\n var _this = this;\n var childBaseURL = url + '/children/';\n var changeURL = url + '/changes';\n\n //process delete message\n _this._deleteListener = bus.addListener(changeURL, function (msg) {\n if (msg.type === 'delete') {\n log.log('Subscription-DELETE: ', msg);\n\n //FLOW-OUT: message sent to all subscribers\n var deleteMessageToHyperty = {\n type: 'delete', from: msg.from, to: owner,\n body: { identity: msg.body.identity, resource: url }\n };\n\n //send delete to hyperty\n bus.postMessage(deleteMessageToHyperty, function (reply) {\n log.log('Subscription-DELETE-REPLY: ', reply);\n if (reply.body.code === 200) {\n _this._releaseListeners();\n }\n });\n }\n });\n\n //add change publish address or forward\n if (isReporter) {\n _this._changeListener = bus.addPublish(changeURL);\n } else {\n _this._changeListener = bus.addForward(changeURL, owner);\n }\n\n _this._childrenListeners = [];\n log.log('[Subscription] - childID', childrens);\n childrens.forEach(function (child) {\n var childId = childBaseURL + child;\n\n log.log('[Subscription] - childID', childBaseURL, childId, child);\n\n //add children publish address\n var childrenForward = bus.addPublish(childId);\n _this._childrenListeners.push(childrenForward);\n\n //add self forward if an observer\n if (!isReporter) {\n var selfForward = bus.addForward(childId, owner);\n _this._childrenListeners.push(selfForward);\n }\n });\n }\n\n (0, _createClass3.default)(Subscription, [{\n key: '_releaseListeners',\n value: function _releaseListeners() {\n var _this = this;\n\n _this._deleteListener.remove();\n\n _this._changeListener.remove();\n\n _this._childrenListeners.forEach(function (forward) {\n forward.remove();\n });\n }\n }]);\n return Subscription;\n}();\n\nexports.default = Subscription;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zeW5jaGVyL1N1YnNjcmlwdGlvbi5qcz8yZTg1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIExvZyBTeXN0ZW1cclxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcclxubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1N5blN1YnNjcmlwdGlvbicpO1xyXG5cclxuY2xhc3MgU3Vic2NyaXB0aW9uIHtcclxuXHJcbiAgY29uc3RydWN0b3IoYnVzLCBvd25lciwgdXJsLCBjaGlsZHJlbnMsIGlzUmVwb3J0ZXIpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgY2hpbGRCYXNlVVJMID0gdXJsICsgJy9jaGlsZHJlbi8nO1xyXG4gICAgbGV0IGNoYW5nZVVSTCA9IHVybCArICcvY2hhbmdlcyc7XHJcblxyXG4gICAgLy9wcm9jZXNzIGRlbGV0ZSBtZXNzYWdlXHJcbiAgICBfdGhpcy5fZGVsZXRlTGlzdGVuZXIgPSBidXMuYWRkTGlzdGVuZXIoY2hhbmdlVVJMLCAobXNnKSA9PiB7XHJcbiAgICAgIGlmIChtc2cudHlwZSA9PT0gJ2RlbGV0ZScpIHtcclxuICAgICAgICBsb2cubG9nKCdTdWJzY3JpcHRpb24tREVMRVRFOiAnLCBtc2cpO1xyXG5cclxuICAgICAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHNlbnQgdG8gYWxsIHN1YnNjcmliZXJzXHJcbiAgICAgICAgbGV0IGRlbGV0ZU1lc3NhZ2VUb0h5cGVydHkgPSB7XHJcbiAgICAgICAgICB0eXBlOiAnZGVsZXRlJywgZnJvbTogbXNnLmZyb20sIHRvOiBvd25lcixcclxuICAgICAgICAgIGJvZHk6IHsgaWRlbnRpdHk6IG1zZy5ib2R5LmlkZW50aXR5LCByZXNvdXJjZTogdXJsIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvL3NlbmQgZGVsZXRlIHRvIGh5cGVydHlcclxuICAgICAgICBidXMucG9zdE1lc3NhZ2UoZGVsZXRlTWVzc2FnZVRvSHlwZXJ0eSwgKHJlcGx5KSA9PiB7XHJcbiAgICAgICAgICBsb2cubG9nKCdTdWJzY3JpcHRpb24tREVMRVRFLVJFUExZOiAnLCByZXBseSk7XHJcbiAgICAgICAgICBpZiAocmVwbHkuYm9keS5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgX3RoaXMuX3JlbGVhc2VMaXN0ZW5lcnMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy9hZGQgY2hhbmdlIHB1Ymxpc2ggYWRkcmVzcyBvciBmb3J3YXJkXHJcbiAgICBpZiAoaXNSZXBvcnRlcikge1xyXG4gICAgICBfdGhpcy5fY2hhbmdlTGlzdGVuZXIgPSBidXMuYWRkUHVibGlzaChjaGFuZ2VVUkwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgX3RoaXMuX2NoYW5nZUxpc3RlbmVyID0gYnVzLmFkZEZvcndhcmQoY2hhbmdlVVJMLCBvd25lcik7XHJcbiAgICB9XHJcblxyXG4gICAgX3RoaXMuX2NoaWxkcmVuTGlzdGVuZXJzID0gW107XHJcbiAgICBsb2cubG9nKCdbU3Vic2NyaXB0aW9uXSAtIGNoaWxkSUQnLCBjaGlsZHJlbnMpO1xyXG4gICAgY2hpbGRyZW5zLmZvckVhY2goKGNoaWxkKSA9PiB7XHJcbiAgICAgIGxldCBjaGlsZElkID0gY2hpbGRCYXNlVVJMICsgY2hpbGQ7XHJcblxyXG4gICAgICBsb2cubG9nKCdbU3Vic2NyaXB0aW9uXSAtIGNoaWxkSUQnLCBjaGlsZEJhc2VVUkwsIGNoaWxkSWQsIGNoaWxkKTtcclxuXHJcbiAgICAgIC8vYWRkIGNoaWxkcmVuIHB1Ymxpc2ggYWRkcmVzc1xyXG4gICAgICBsZXQgY2hpbGRyZW5Gb3J3YXJkID0gYnVzLmFkZFB1Ymxpc2goY2hpbGRJZCk7XHJcbiAgICAgIF90aGlzLl9jaGlsZHJlbkxpc3RlbmVycy5wdXNoKGNoaWxkcmVuRm9yd2FyZCk7XHJcblxyXG4gICAgICAvL2FkZCBzZWxmIGZvcndhcmQgaWYgYW4gb2JzZXJ2ZXJcclxuICAgICAgaWYgKCFpc1JlcG9ydGVyKSB7XHJcbiAgICAgICAgbGV0IHNlbGZGb3J3YXJkID0gYnVzLmFkZEZvcndhcmQoY2hpbGRJZCwgb3duZXIpO1xyXG4gICAgICAgIF90aGlzLl9jaGlsZHJlbkxpc3RlbmVycy5wdXNoKHNlbGZGb3J3YXJkKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBfcmVsZWFzZUxpc3RlbmVycygpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgX3RoaXMuX2RlbGV0ZUxpc3RlbmVyLnJlbW92ZSgpO1xyXG5cclxuICAgIF90aGlzLl9jaGFuZ2VMaXN0ZW5lci5yZW1vdmUoKTtcclxuXHJcbiAgICBfdGhpcy5fY2hpbGRyZW5MaXN0ZW5lcnMuZm9yRWFjaCgoZm9yd2FyZCkgPT4ge1xyXG4gICAgICBmb3J3YXJkLnJlbW92ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgU3Vic2NyaXB0aW9uO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3N5bmNoZXIvU3Vic2NyaXB0aW9uLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFEQTtBQUNBOzs7OztBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///212\n")},function(c,e,n){n(214),c.exports=n(416)},function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(global) {\n\n__webpack_require__(215);\n\n__webpack_require__(412);\n\n__webpack_require__(413);\n\nif (global._babelPolyfill) {\n throw new Error("only one instance of babel-polyfill is allowed");\n}\nglobal._babelPolyfill = true;\n\nvar DEFINE_PROPERTY = "defineProperty";\nfunction define(O, key, value) {\n O[key] || Object[DEFINE_PROPERTY](O, key, {\n writable: true,\n configurable: true,\n value: value\n });\n}\n\ndefine(String.prototype, "padLeft", "".padStart);\ndefine(String.prototype, "padRight", "".padEnd);\n\n"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach(function (key) {\n [][key] && define(Array, key, Function.call.bind([][key]));\n});\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(147)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXBvbHlmaWxsL2xpYi9pbmRleC5qcz84ZjU4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5yZXF1aXJlKFwiY29yZS1qcy9zaGltXCIpO1xuXG5yZXF1aXJlKFwicmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lXCIpO1xuXG5yZXF1aXJlKFwiY29yZS1qcy9mbi9yZWdleHAvZXNjYXBlXCIpO1xuXG5pZiAoZ2xvYmFsLl9iYWJlbFBvbHlmaWxsKSB7XG4gIHRocm93IG5ldyBFcnJvcihcIm9ubHkgb25lIGluc3RhbmNlIG9mIGJhYmVsLXBvbHlmaWxsIGlzIGFsbG93ZWRcIik7XG59XG5nbG9iYWwuX2JhYmVsUG9seWZpbGwgPSB0cnVlO1xuXG52YXIgREVGSU5FX1BST1BFUlRZID0gXCJkZWZpbmVQcm9wZXJ0eVwiO1xuZnVuY3Rpb24gZGVmaW5lKE8sIGtleSwgdmFsdWUpIHtcbiAgT1trZXldIHx8IE9iamVjdFtERUZJTkVfUFJPUEVSVFldKE8sIGtleSwge1xuICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfSk7XG59XG5cbmRlZmluZShTdHJpbmcucHJvdG90eXBlLCBcInBhZExlZnRcIiwgXCJcIi5wYWRTdGFydCk7XG5kZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgXCJwYWRSaWdodFwiLCBcIlwiLnBhZEVuZCk7XG5cblwicG9wLHJldmVyc2Usc2hpZnQsa2V5cyx2YWx1ZXMsZW50cmllcyxpbmRleE9mLGV2ZXJ5LHNvbWUsZm9yRWFjaCxtYXAsZmlsdGVyLGZpbmQsZmluZEluZGV4LGluY2x1ZGVzLGpvaW4sc2xpY2UsY29uY2F0LHB1c2gsc3BsaWNlLHVuc2hpZnQsc29ydCxsYXN0SW5kZXhPZixyZWR1Y2UscmVkdWNlUmlnaHQsY29weVdpdGhpbixmaWxsXCIuc3BsaXQoXCIsXCIpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBbXVtrZXldICYmIGRlZmluZShBcnJheSwga2V5LCBGdW5jdGlvbi5jYWxsLmJpbmQoW11ba2V5XSkpO1xufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcG9seWZpbGwvbGliL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///214\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(216);\n__webpack_require__(218);\n__webpack_require__(219);\n__webpack_require__(220);\n__webpack_require__(221);\n__webpack_require__(222);\n__webpack_require__(223);\n__webpack_require__(224);\n__webpack_require__(225);\n__webpack_require__(226);\n__webpack_require__(227);\n__webpack_require__(228);\n__webpack_require__(229);\n__webpack_require__(230);\n__webpack_require__(231);\n__webpack_require__(232);\n__webpack_require__(234);\n__webpack_require__(235);\n__webpack_require__(236);\n__webpack_require__(237);\n__webpack_require__(238);\n__webpack_require__(239);\n__webpack_require__(240);\n__webpack_require__(241);\n__webpack_require__(242);\n__webpack_require__(243);\n__webpack_require__(244);\n__webpack_require__(245);\n__webpack_require__(246);\n__webpack_require__(247);\n__webpack_require__(248);\n__webpack_require__(249);\n__webpack_require__(250);\n__webpack_require__(251);\n__webpack_require__(252);\n__webpack_require__(253);\n__webpack_require__(254);\n__webpack_require__(255);\n__webpack_require__(256);\n__webpack_require__(257);\n__webpack_require__(258);\n__webpack_require__(259);\n__webpack_require__(260);\n__webpack_require__(261);\n__webpack_require__(262);\n__webpack_require__(263);\n__webpack_require__(264);\n__webpack_require__(265);\n__webpack_require__(266);\n__webpack_require__(267);\n__webpack_require__(268);\n__webpack_require__(269);\n__webpack_require__(270);\n__webpack_require__(271);\n__webpack_require__(272);\n__webpack_require__(273);\n__webpack_require__(274);\n__webpack_require__(275);\n__webpack_require__(276);\n__webpack_require__(277);\n__webpack_require__(278);\n__webpack_require__(279);\n__webpack_require__(280);\n__webpack_require__(281);\n__webpack_require__(282);\n__webpack_require__(283);\n__webpack_require__(284);\n__webpack_require__(285);\n__webpack_require__(286);\n__webpack_require__(287);\n__webpack_require__(288);\n__webpack_require__(289);\n__webpack_require__(290);\n__webpack_require__(291);\n__webpack_require__(292);\n__webpack_require__(293);\n__webpack_require__(294);\n__webpack_require__(296);\n__webpack_require__(297);\n__webpack_require__(299);\n__webpack_require__(300);\n__webpack_require__(301);\n__webpack_require__(302);\n__webpack_require__(303);\n__webpack_require__(304);\n__webpack_require__(305);\n__webpack_require__(307);\n__webpack_require__(308);\n__webpack_require__(309);\n__webpack_require__(310);\n__webpack_require__(311);\n__webpack_require__(312);\n__webpack_require__(313);\n__webpack_require__(314);\n__webpack_require__(315);\n__webpack_require__(316);\n__webpack_require__(317);\n__webpack_require__(318);\n__webpack_require__(319);\n__webpack_require__(122);\n__webpack_require__(320);\n__webpack_require__(321);\n__webpack_require__(166);\n__webpack_require__(322);\n__webpack_require__(323);\n__webpack_require__(324);\n__webpack_require__(325);\n__webpack_require__(326);\n__webpack_require__(169);\n__webpack_require__(171);\n__webpack_require__(172);\n__webpack_require__(327);\n__webpack_require__(328);\n__webpack_require__(329);\n__webpack_require__(330);\n__webpack_require__(331);\n__webpack_require__(332);\n__webpack_require__(333);\n__webpack_require__(334);\n__webpack_require__(335);\n__webpack_require__(336);\n__webpack_require__(337);\n__webpack_require__(338);\n__webpack_require__(339);\n__webpack_require__(340);\n__webpack_require__(341);\n__webpack_require__(342);\n__webpack_require__(343);\n__webpack_require__(344);\n__webpack_require__(345);\n__webpack_require__(346);\n__webpack_require__(347);\n__webpack_require__(348);\n__webpack_require__(349);\n__webpack_require__(350);\n__webpack_require__(351);\n__webpack_require__(352);\n__webpack_require__(353);\n__webpack_require__(354);\n__webpack_require__(355);\n__webpack_require__(356);\n__webpack_require__(357);\n__webpack_require__(358);\n__webpack_require__(359);\n__webpack_require__(360);\n__webpack_require__(361);\n__webpack_require__(362);\n__webpack_require__(363);\n__webpack_require__(364);\n__webpack_require__(365);\n__webpack_require__(366);\n__webpack_require__(367);\n__webpack_require__(368);\n__webpack_require__(369);\n__webpack_require__(370);\n__webpack_require__(371);\n__webpack_require__(372);\n__webpack_require__(373);\n__webpack_require__(374);\n__webpack_require__(375);\n__webpack_require__(376);\n__webpack_require__(377);\n__webpack_require__(378);\n__webpack_require__(379);\n__webpack_require__(380);\n__webpack_require__(381);\n__webpack_require__(382);\n__webpack_require__(383);\n__webpack_require__(384);\n__webpack_require__(385);\n__webpack_require__(386);\n__webpack_require__(387);\n__webpack_require__(388);\n__webpack_require__(389);\n__webpack_require__(390);\n__webpack_require__(391);\n__webpack_require__(392);\n__webpack_require__(393);\n__webpack_require__(394);\n__webpack_require__(395);\n__webpack_require__(396);\n__webpack_require__(397);\n__webpack_require__(398);\n__webpack_require__(399);\n__webpack_require__(400);\n__webpack_require__(401);\n__webpack_require__(402);\n__webpack_require__(403);\n__webpack_require__(404);\n__webpack_require__(405);\n__webpack_require__(406);\n__webpack_require__(407);\n__webpack_require__(408);\n__webpack_require__(409);\n__webpack_require__(410);\n__webpack_require__(411);\nmodule.exports = __webpack_require__(30);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvc2hpbS5qcz9lMGNkIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3ltYm9sJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnRpZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LXByb3RvdHlwZS1vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZnJlZXplJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5zZWFsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5wcmV2ZW50LWV4dGVuc2lvbnMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmlzLWZyb3plbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuaXMtc2VhbGVkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5pcy1leHRlbnNpYmxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmlzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZnVuY3Rpb24uYmluZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5mdW5jdGlvbi5uYW1lJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmhhcy1pbnN0YW5jZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5wYXJzZS1pbnQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucGFyc2UtZmxvYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmNvbnN0cnVjdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci50by1maXhlZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIudG8tcHJlY2lzaW9uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5lcHNpbG9uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5pcy1maW5pdGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmlzLW5hbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIuaXMtc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5tYXgtc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5taW4tc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5wYXJzZS1mbG9hdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIucGFyc2UtaW50Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguYWNvc2gnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5hc2luaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmF0YW5oJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguY2JydCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmNsejMyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguY29zaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmV4cG0xJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguZnJvdW5kJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguaHlwb3QnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5pbXVsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGgubG9nMTAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5sb2cxcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmxvZzInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5zaWduJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguc2luaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLnRhbmgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC50cnVuYycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuZnJvbS1jb2RlLXBvaW50Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5yYXcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnRyaW0nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5jb2RlLXBvaW50LWF0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5lbmRzLXdpdGgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmluY2x1ZGVzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5yZXBlYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnN0YXJ0cy13aXRoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5hbmNob3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmJpZycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuYmxpbmsnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmJvbGQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmZpeGVkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5mb250Y29sb3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRzaXplJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5pdGFsaWNzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5saW5rJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5zbWFsbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuc3RyaWtlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5zdWInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnN1cCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5kYXRlLm5vdycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5kYXRlLnRvLWpzb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZGF0ZS50by1pc28tc3RyaW5nJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmRhdGUudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmRhdGUudG8tcHJpbWl0aXZlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmlzLWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZyb20nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkub2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuam9pbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5zbGljZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5zb3J0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZvci1lYWNoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5Lm1hcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5maWx0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuc29tZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5ldmVyeScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5yZWR1Y2UnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlLXJpZ2h0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmluZGV4LW9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5Lmxhc3QtaW5kZXgtb2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuY29weS13aXRoaW4nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuZmlsbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5maW5kJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZpbmQtaW5kZXgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuc3BlY2llcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAuY29uc3RydWN0b3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAuZmxhZ3MnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLm1hdGNoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC5yZXBsYWNlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC5zZWFyY2gnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLnNwbGl0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnByb21pc2UnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWFwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi53ZWFrLW1hcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi53ZWFrLXNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5hcnJheS1idWZmZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuZGF0YS12aWV3Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmludDgtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDgtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDgtY2xhbXBlZC1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5pbnQxNi1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC51aW50MTYtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuaW50MzItYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDMyLWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmZsb2F0MzItYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuZmxvYXQ2NC1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmFwcGx5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuY29uc3RydWN0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZGVsZXRlLXByb3BlcnR5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZW51bWVyYXRlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0LXByb3RvdHlwZS1vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmhhcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmlzLWV4dGVuc2libGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5vd24ta2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnByZXZlbnQtZXh0ZW5zaW9ucycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuYXJyYXkuaW5jbHVkZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuYXJyYXkuZmxhdC1tYXAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuYXJyYXkuZmxhdHRlbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcuYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3RyaW5nLnBhZC1zdGFydCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcucGFkLWVuZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcudHJpbS1sZWZ0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN0cmluZy50cmltLXJpZ2h0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN0cmluZy5tYXRjaC1hbGwnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC52YWx1ZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0LmVudHJpZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1nZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1zZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1nZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1zZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWFwLnRvLWpzb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc2V0LnRvLWpzb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWFwLm9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnNldC5vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy53ZWFrLW1hcC5vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy53ZWFrLXNldC5vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXAuZnJvbScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zZXQuZnJvbScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy53ZWFrLW1hcC5mcm9tJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LndlYWstc2V0LmZyb20nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuZ2xvYmFsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN5c3RlbS5nbG9iYWwnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuZXJyb3IuaXMtZXJyb3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5jbGFtcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmRlZy1wZXItcmFkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguZGVncmVlcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmZzY2FsZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmlhZGRoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguaXN1YmgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5pbXVsaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLnJhZC1wZXItZGVnJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGgucmFkaWFucycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLnNjYWxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGgudW11bGgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5zaWduYml0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmRlZmluZS1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmRlbGV0ZS1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1tZXRhZGF0YS1rZXlzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW93bi1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1vd24tbWV0YWRhdGEta2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1vd24tbWV0YWRhdGEnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucmVmbGVjdC5tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5hc2FwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9ic2VydmFibGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy93ZWIudGltZXJzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvd2ViLmltbWVkaWF0ZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9tb2R1bGVzL19jb3JlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL3NoaW0uanNcbi8vIG1vZHVsZSBpZCA9IDIxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///215\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(4);\nvar has = __webpack_require__(17);\nvar DESCRIPTORS = __webpack_require__(10);\nvar $export = __webpack_require__(0);\nvar redefine = __webpack_require__(19);\nvar META = __webpack_require__(42).KEY;\nvar $fails = __webpack_require__(5);\nvar shared = __webpack_require__(79);\nvar setToStringTag = __webpack_require__(61);\nvar uid = __webpack_require__(48);\nvar wks = __webpack_require__(8);\nvar wksExt = __webpack_require__(149);\nvar wksDefine = __webpack_require__(102);\nvar enumKeys = __webpack_require__(217);\nvar isArray = __webpack_require__(82);\nvar anObject = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\nvar toIObject = __webpack_require__(24);\nvar toPrimitive = __webpack_require__(31);\nvar createDesc = __webpack_require__(47);\nvar _create = __webpack_require__(52);\nvar gOPNExt = __webpack_require__(152);\nvar $GOPD = __webpack_require__(25);\nvar $DP = __webpack_require__(11);\nvar $keys = __webpack_require__(50);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(53).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(71).f = $propertyIsEnumerable;\n __webpack_require__(81).f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(49)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(18)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3ltYm9sLmpzPzAzNDkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gRUNNQVNjcmlwdCA2IHN5bWJvbHMgc2hpbVxudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIE1FVEEgPSByZXF1aXJlKCcuL19tZXRhJykuS0VZO1xudmFyICRmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIHdrcyA9IHJlcXVpcmUoJy4vX3drcycpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciB3a3NEZWZpbmUgPSByZXF1aXJlKCcuL193a3MtZGVmaW5lJyk7XG52YXIgZW51bUtleXMgPSByZXF1aXJlKCcuL19lbnVtLWtleXMnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBfY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIGdPUE5FeHQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbi1leHQnKTtcbnZhciAkR09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgJERQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUEQgPSAkR09QRC5mO1xudmFyIGRQID0gJERQLmY7XG52YXIgZ09QTiA9IGdPUE5FeHQuZjtcbnZhciAkU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciAkSlNPTiA9IGdsb2JhbC5KU09OO1xudmFyIF9zdHJpbmdpZnkgPSAkSlNPTiAmJiAkSlNPTi5zdHJpbmdpZnk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgSElEREVOID0gd2tzKCdfaGlkZGVuJyk7XG52YXIgVE9fUFJJTUlUSVZFID0gd2tzKCd0b1ByaW1pdGl2ZScpO1xudmFyIGlzRW51bSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIFN5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzeW1ib2wtcmVnaXN0cnknKTtcbnZhciBBbGxTeW1ib2xzID0gc2hhcmVkKCdzeW1ib2xzJyk7XG52YXIgT1BTeW1ib2xzID0gc2hhcmVkKCdvcC1zeW1ib2xzJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3RbUFJPVE9UWVBFXTtcbnZhciBVU0VfTkFUSVZFID0gdHlwZW9mICRTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcbnZhciBRT2JqZWN0ID0gZ2xvYmFsLlFPYmplY3Q7XG4vLyBEb24ndCB1c2Ugc2V0dGVycyBpbiBRdCBTY3JpcHQsIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xNzNcbnZhciBzZXR0ZXIgPSAhUU9iamVjdCB8fCAhUU9iamVjdFtQUk9UT1RZUEVdIHx8ICFRT2JqZWN0W1BST1RPVFlQRV0uZmluZENoaWxkO1xuXG4vLyBmYWxsYmFjayBmb3Igb2xkIEFuZHJvaWQsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD02ODdcbnZhciBzZXRTeW1ib2xEZXNjID0gREVTQ1JJUFRPUlMgJiYgJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIF9jcmVhdGUoZFAoe30sICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZFAodGhpcywgJ2EnLCB7IHZhbHVlOiA3IH0pLmE7IH1cbiAgfSkpLmEgIT0gNztcbn0pID8gZnVuY3Rpb24gKGl0LCBrZXksIEQpIHtcbiAgdmFyIHByb3RvRGVzYyA9IGdPUEQoT2JqZWN0UHJvdG8sIGtleSk7XG4gIGlmIChwcm90b0Rlc2MpIGRlbGV0ZSBPYmplY3RQcm90b1trZXldO1xuICBkUChpdCwga2V5LCBEKTtcbiAgaWYgKHByb3RvRGVzYyAmJiBpdCAhPT0gT2JqZWN0UHJvdG8pIGRQKE9iamVjdFByb3RvLCBrZXksIHByb3RvRGVzYyk7XG59IDogZFA7XG5cbnZhciB3cmFwID0gZnVuY3Rpb24gKHRhZykge1xuICB2YXIgc3ltID0gQWxsU3ltYm9sc1t0YWddID0gX2NyZWF0ZSgkU3ltYm9sW1BST1RPVFlQRV0pO1xuICBzeW0uX2sgPSB0YWc7XG4gIHJldHVybiBzeW07XG59O1xuXG52YXIgaXNTeW1ib2wgPSBVU0VfTkFUSVZFICYmIHR5cGVvZiAkU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCc7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCBpbnN0YW5jZW9mICRTeW1ib2w7XG59O1xuXG52YXIgJGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgRCkge1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvKSAkZGVmaW5lUHJvcGVydHkoT1BTeW1ib2xzLCBrZXksIEQpO1xuICBhbk9iamVjdChpdCk7XG4gIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEQpO1xuICBpZiAoaGFzKEFsbFN5bWJvbHMsIGtleSkpIHtcbiAgICBpZiAoIUQuZW51bWVyYWJsZSkge1xuICAgICAgaWYgKCFoYXMoaXQsIEhJRERFTikpIGRQKGl0LCBISURERU4sIGNyZWF0ZURlc2MoMSwge30pKTtcbiAgICAgIGl0W0hJRERFTl1ba2V5XSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSBpdFtISURERU5dW2tleV0gPSBmYWxzZTtcbiAgICAgIEQgPSBfY3JlYXRlKEQsIHsgZW51bWVyYWJsZTogY3JlYXRlRGVzYygwLCBmYWxzZSkgfSk7XG4gICAgfSByZXR1cm4gc2V0U3ltYm9sRGVzYyhpdCwga2V5LCBEKTtcbiAgfSByZXR1cm4gZFAoaXQsIGtleSwgRCk7XG59O1xudmFyICRkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhpdCwgUCkge1xuICBhbk9iamVjdChpdCk7XG4gIHZhciBrZXlzID0gZW51bUtleXMoUCA9IHRvSU9iamVjdChQKSk7XG4gIHZhciBpID0gMDtcbiAgdmFyIGwgPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGwgPiBpKSAkZGVmaW5lUHJvcGVydHkoaXQsIGtleSA9IGtleXNbaSsrXSwgUFtrZXldKTtcbiAgcmV0dXJuIGl0O1xufTtcbnZhciAkY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGl0LCBQKSB7XG4gIHJldHVybiBQID09PSB1bmRlZmluZWQgPyBfY3JlYXRlKGl0KSA6ICRkZWZpbmVQcm9wZXJ0aWVzKF9jcmVhdGUoaXQpLCBQKTtcbn07XG52YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoa2V5KSB7XG4gIHZhciBFID0gaXNFbnVtLmNhbGwodGhpcywga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSk7XG4gIGlmICh0aGlzID09PSBPYmplY3RQcm90byAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhaGFzKE9QU3ltYm9scywga2V5KSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gRSB8fCAhaGFzKHRoaXMsIGtleSkgfHwgIWhhcyhBbGxTeW1ib2xzLCBrZXkpIHx8IGhhcyh0aGlzLCBISURERU4pICYmIHRoaXNbSElEREVOXVtrZXldID8gRSA6IHRydWU7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICBpdCA9IHRvSU9iamVjdChpdCk7XG4gIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7XG4gIGlmIChpdCA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybjtcbiAgdmFyIEQgPSBnT1BEKGl0LCBrZXkpO1xuICBpZiAoRCAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pKSBELmVudW1lcmFibGUgPSB0cnVlO1xuICByZXR1cm4gRDtcbn07XG52YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHZhciBuYW1lcyA9IGdPUE4odG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmICghaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIGtleSAhPSBISURERU4gJiYga2V5ICE9IE1FVEEpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG52YXIgJGdldE93blByb3BlcnR5U3ltYm9scyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5U3ltYm9scyhpdCkge1xuICB2YXIgSVNfT1AgPSBpdCA9PT0gT2JqZWN0UHJvdG87XG4gIHZhciBuYW1lcyA9IGdPUE4oSVNfT1AgPyBPUFN5bWJvbHMgOiB0b0lPYmplY3QoaXQpKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgaSA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSB7XG4gICAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiAoSVNfT1AgPyBoYXMoT2JqZWN0UHJvdG8sIGtleSkgOiB0cnVlKSkgcmVzdWx0LnB1c2goQWxsU3ltYm9sc1trZXldKTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gMTkuNC4xLjEgU3ltYm9sKFtkZXNjcmlwdGlvbl0pXG5pZiAoIVVTRV9OQVRJVkUpIHtcbiAgJFN5bWJvbCA9IGZ1bmN0aW9uIFN5bWJvbCgpIHtcbiAgICBpZiAodGhpcyBpbnN0YW5jZW9mICRTeW1ib2wpIHRocm93IFR5cGVFcnJvcignU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIScpO1xuICAgIHZhciB0YWcgPSB1aWQoYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpO1xuICAgIHZhciAkc2V0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8pICRzZXQuY2FsbChPUFN5bWJvbHMsIHZhbHVlKTtcbiAgICAgIGlmIChoYXModGhpcywgSElEREVOKSAmJiBoYXModGhpc1tISURERU5dLCB0YWcpKSB0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuICAgICAgc2V0U3ltYm9sRGVzYyh0aGlzLCB0YWcsIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbiAgICB9O1xuICAgIGlmIChERVNDUklQVE9SUyAmJiBzZXR0ZXIpIHNldFN5bWJvbERlc2MoT2JqZWN0UHJvdG8sIHRhZywgeyBjb25maWd1cmFibGU6IHRydWUsIHNldDogJHNldCB9KTtcbiAgICByZXR1cm4gd3JhcCh0YWcpO1xuICB9O1xuICByZWRlZmluZSgkU3ltYm9sW1BST1RPVFlQRV0sICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9rO1xuICB9KTtcblxuICAkR09QRC5mID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgJERQLmYgPSAkZGVmaW5lUHJvcGVydHk7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZiA9IGdPUE5FeHQuZiA9ICRnZXRPd25Qcm9wZXJ0eU5hbWVzO1xuICByZXF1aXJlKCcuL19vYmplY3QtcGllJykuZiA9ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKS5mID0gJGdldE93blByb3BlcnR5U3ltYm9scztcblxuICBpZiAoREVTQ1JJUFRPUlMgJiYgIXJlcXVpcmUoJy4vX2xpYnJhcnknKSkge1xuICAgIHJlZGVmaW5lKE9iamVjdFByb3RvLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAkcHJvcGVydHlJc0VudW1lcmFibGUsIHRydWUpO1xuICB9XG5cbiAgd2tzRXh0LmYgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHJldHVybiB3cmFwKHdrcyhuYW1lKSk7XG4gIH07XG59XG5cbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIHsgU3ltYm9sOiAkU3ltYm9sIH0pO1xuXG5mb3IgKHZhciBlczZTeW1ib2xzID0gKFxuICAvLyAxOS40LjIuMiwgMTkuNC4yLjMsIDE5LjQuMi40LCAxOS40LjIuNiwgMTkuNC4yLjgsIDE5LjQuMi45LCAxOS40LjIuMTAsIDE5LjQuMi4xMSwgMTkuNC4yLjEyLCAxOS40LjIuMTMsIDE5LjQuMi4xNFxuICAnaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxlLGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLHNwZWNpZXMsc3BsaXQsdG9QcmltaXRpdmUsdG9TdHJpbmdUYWcsdW5zY29wYWJsZXMnXG4pLnNwbGl0KCcsJyksIGogPSAwOyBlczZTeW1ib2xzLmxlbmd0aCA+IGo7KXdrcyhlczZTeW1ib2xzW2orK10pO1xuXG5mb3IgKHZhciB3ZWxsS25vd25TeW1ib2xzID0gJGtleXMod2tzLnN0b3JlKSwgayA9IDA7IHdlbGxLbm93blN5bWJvbHMubGVuZ3RoID4gazspIHdrc0RlZmluZSh3ZWxsS25vd25TeW1ib2xzW2srK10pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnU3ltYm9sJywge1xuICAvLyAxOS40LjIuMSBTeW1ib2wuZm9yKGtleSlcbiAgJ2Zvcic6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gaGFzKFN5bWJvbFJlZ2lzdHJ5LCBrZXkgKz0gJycpXG4gICAgICA/IFN5bWJvbFJlZ2lzdHJ5W2tleV1cbiAgICAgIDogU3ltYm9sUmVnaXN0cnlba2V5XSA9ICRTeW1ib2woa2V5KTtcbiAgfSxcbiAgLy8gMTkuNC4yLjUgU3ltYm9sLmtleUZvcihzeW0pXG4gIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKHN5bSkge1xuICAgIGlmICghaXNTeW1ib2woc3ltKSkgdGhyb3cgVHlwZUVycm9yKHN5bSArICcgaXMgbm90IGEgc3ltYm9sIScpO1xuICAgIGZvciAodmFyIGtleSBpbiBTeW1ib2xSZWdpc3RyeSkgaWYgKFN5bWJvbFJlZ2lzdHJ5W2tleV0gPT09IHN5bSkgcmV0dXJuIGtleTtcbiAgfSxcbiAgdXNlU2V0dGVyOiBmdW5jdGlvbiAoKSB7IHNldHRlciA9IHRydWU7IH0sXG4gIHVzZVNpbXBsZTogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSBmYWxzZTsgfVxufSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdPYmplY3QnLCB7XG4gIC8vIDE5LjEuMi4yIE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbiAgY3JlYXRlOiAkY3JlYXRlLFxuICAvLyAxOS4xLjIuNCBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiAgZGVmaW5lUHJvcGVydHk6ICRkZWZpbmVQcm9wZXJ0eSxcbiAgLy8gMTkuMS4yLjMgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcylcbiAgZGVmaW5lUHJvcGVydGllczogJGRlZmluZVByb3BlcnRpZXMsXG4gIC8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuICAvLyAxOS4xLjIuNyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxuICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiAkZ2V0T3duUHJvcGVydHlOYW1lcyxcbiAgLy8gMTkuMS4yLjggT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhPKVxuICBnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHNcbn0pO1xuXG4vLyAyNC4zLjIgSlNPTi5zdHJpbmdpZnkodmFsdWUgWywgcmVwbGFjZXIgWywgc3BhY2VdXSlcbiRKU09OICYmICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKCFVU0VfTkFUSVZFIHx8ICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBTID0gJFN5bWJvbCgpO1xuICAvLyBNUyBFZGdlIGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyB7fVxuICAvLyBXZWJLaXQgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIG51bGxcbiAgLy8gVjggdGhyb3dzIG9uIGJveGVkIHN5bWJvbHNcbiAgcmV0dXJuIF9zdHJpbmdpZnkoW1NdKSAhPSAnW251bGxdJyB8fCBfc3RyaW5naWZ5KHsgYTogUyB9KSAhPSAne30nIHx8IF9zdHJpbmdpZnkoT2JqZWN0KFMpKSAhPSAne30nO1xufSkpLCAnSlNPTicsIHtcbiAgc3RyaW5naWZ5OiBmdW5jdGlvbiBzdHJpbmdpZnkoaXQpIHtcbiAgICB2YXIgYXJncyA9IFtpdF07XG4gICAgdmFyIGkgPSAxO1xuICAgIHZhciByZXBsYWNlciwgJHJlcGxhY2VyO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICAkcmVwbGFjZXIgPSByZXBsYWNlciA9IGFyZ3NbMV07XG4gICAgaWYgKCFpc09iamVjdChyZXBsYWNlcikgJiYgaXQgPT09IHVuZGVmaW5lZCB8fCBpc1N5bWJvbChpdCkpIHJldHVybjsgLy8gSUU4IHJldHVybnMgc3RyaW5nIG9uIHVuZGVmaW5lZFxuICAgIGlmICghaXNBcnJheShyZXBsYWNlcikpIHJlcGxhY2VyID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgJHJlcGxhY2VyID09ICdmdW5jdGlvbicpIHZhbHVlID0gJHJlcGxhY2VyLmNhbGwodGhpcywga2V5LCB2YWx1ZSk7XG4gICAgICBpZiAoIWlzU3ltYm9sKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gICAgYXJnc1sxXSA9IHJlcGxhY2VyO1xuICAgIHJldHVybiBfc3RyaW5naWZ5LmFwcGx5KCRKU09OLCBhcmdzKTtcbiAgfVxufSk7XG5cbi8vIDE5LjQuMy40IFN5bWJvbC5wcm90b3R5cGVbQEB0b1ByaW1pdGl2ZV0oaGludClcbiRTeW1ib2xbUFJPVE9UWVBFXVtUT19QUklNSVRJVkVdIHx8IHJlcXVpcmUoJy4vX2hpZGUnKSgkU3ltYm9sW1BST1RPVFlQRV0sIFRPX1BSSU1JVElWRSwgJFN5bWJvbFtQUk9UT1RZUEVdLnZhbHVlT2YpO1xuLy8gMTkuNC4zLjUgU3ltYm9sLnByb3RvdHlwZVtAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoJFN5bWJvbCwgJ1N5bWJvbCcpO1xuLy8gMjAuMi4xLjkgTWF0aFtAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoTWF0aCwgJ01hdGgnLCB0cnVlKTtcbi8vIDI0LjMuMyBKU09OW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZyhnbG9iYWwuSlNPTiwgJ0pTT04nLCB0cnVlKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSAyMTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///216\n")},function(module,exports,__webpack_require__){eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(50);\nvar gOPS = __webpack_require__(81);\nvar pIE = __webpack_require__(71);\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZW51bS1rZXlzLmpzPzBiZTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gYWxsIGVudW1lcmFibGUgb2JqZWN0IGtleXMsIGluY2x1ZGVzIHN5bWJvbHNcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgcmVzdWx0ID0gZ2V0S2V5cyhpdCk7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICBpZiAoZ2V0U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gZ2V0U3ltYm9scyhpdCk7XG4gICAgdmFyIGlzRW51bSA9IHBJRS5mO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChzeW1ib2xzLmxlbmd0aCA+IGkpIGlmIChpc0VudW0uY2FsbChpdCwga2V5ID0gc3ltYm9sc1tpKytdKSkgcmVzdWx0LnB1c2goa2V5KTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZW51bS1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///217\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(52) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZS5qcz84YmFmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBjcmVhdGU6IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///218\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(10), 'Object', { defineProperty: __webpack_require__(11).f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eS5qcz80MzMyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuNCAvIDE1LjIuMy42IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSwgJ09iamVjdCcsIHsgZGVmaW5lUHJvcGVydHk6IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDIxOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///219\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !__webpack_require__(10), 'Object', { defineProperties: __webpack_require__(151) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0aWVzLmpzPzFlMTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi4zIC8gMTUuMi4zLjcgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnRpZXM6IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0aWVzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///220\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(24);\nvar $getOwnPropertyDescriptor = __webpack_require__(25).f;\n\n__webpack_require__(34)('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcz8wYmVlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRvSU9iamVjdChpdCksIGtleSk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1xuLy8gbW9kdWxlIGlkID0gMjIxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///221\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(15);\nvar $getPrototypeOf = __webpack_require__(26);\n\n__webpack_require__(34)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YuanM/NWI4NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyICRnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRQcm90b3R5cGVPZicsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mKGl0KSB7XG4gICAgcmV0dXJuICRnZXRQcm90b3R5cGVPZih0b09iamVjdChpdCkpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSAyMjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///222\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(15);\nvar $keys = __webpack_require__(50);\n\n__webpack_require__(34)('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmtleXMuanM/YjQ5YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMTQgT2JqZWN0LmtleXMoTylcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdrZXlzJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZnVuY3Rpb24ga2V5cyhpdCkge1xuICAgIHJldHVybiAka2V5cyh0b09iamVjdChpdCkpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///223\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.7 Object.getOwnPropertyNames(O)\n__webpack_require__(34)('getOwnPropertyNames', function () {\n return __webpack_require__(152).f;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjI0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktbmFtZXMuanM/NzgyZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuNyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4tZXh0JykuZjtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qc1xuLy8gbW9kdWxlIGlkID0gMjI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///224\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.5 Object.freeze(O)\nvar isObject = __webpack_require__(6);\nvar meta = __webpack_require__(42).onFreeze;\n\n__webpack_require__(34)('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjI1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmZyZWV6ZS5qcz81NTM5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi41IE9iamVjdC5mcmVlemUoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG1ldGEgPSByZXF1aXJlKCcuL19tZXRhJykub25GcmVlemU7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnZnJlZXplJywgZnVuY3Rpb24gKCRmcmVlemUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZyZWV6ZShpdCkge1xuICAgIHJldHVybiAkZnJlZXplICYmIGlzT2JqZWN0KGl0KSA/ICRmcmVlemUobWV0YShpdCkpIDogaXQ7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmZyZWV6ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///225\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.17 Object.seal(O)\nvar isObject = __webpack_require__(6);\nvar meta = __webpack_require__(42).onFreeze;\n\n__webpack_require__(34)('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjI2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LnNlYWwuanM/NWJmMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMTcgT2JqZWN0LnNlYWwoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG1ldGEgPSByZXF1aXJlKCcuL19tZXRhJykub25GcmVlemU7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnc2VhbCcsIGZ1bmN0aW9uICgkc2VhbCkge1xuICByZXR1cm4gZnVuY3Rpb24gc2VhbChpdCkge1xuICAgIHJldHVybiAkc2VhbCAmJiBpc09iamVjdChpdCkgPyAkc2VhbChtZXRhKGl0KSkgOiBpdDtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3Quc2VhbC5qc1xuLy8gbW9kdWxlIGlkID0gMjI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///226\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = __webpack_require__(6);\nvar meta = __webpack_require__(42).onFreeze;\n\n__webpack_require__(34)('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjI3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LnByZXZlbnQtZXh0ZW5zaW9ucy5qcz82Mzk3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNSBPYmplY3QucHJldmVudEV4dGVuc2lvbnMoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG1ldGEgPSByZXF1aXJlKCcuL19tZXRhJykub25GcmVlemU7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgncHJldmVudEV4dGVuc2lvbnMnLCBmdW5jdGlvbiAoJHByZXZlbnRFeHRlbnNpb25zKSB7XG4gIHJldHVybiBmdW5jdGlvbiBwcmV2ZW50RXh0ZW5zaW9ucyhpdCkge1xuICAgIHJldHVybiAkcHJldmVudEV4dGVuc2lvbnMgJiYgaXNPYmplY3QoaXQpID8gJHByZXZlbnRFeHRlbnNpb25zKG1ldGEoaXQpKSA6IGl0O1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5wcmV2ZW50LWV4dGVuc2lvbnMuanNcbi8vIG1vZHVsZSBpZCA9IDIyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///227\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.12 Object.isFrozen(O)\nvar isObject = __webpack_require__(6);\n\n__webpack_require__(34)('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjI4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLWZyb3plbi5qcz81YTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xMiBPYmplY3QuaXNGcm96ZW4oTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2lzRnJvemVuJywgZnVuY3Rpb24gKCRpc0Zyb3plbikge1xuICByZXR1cm4gZnVuY3Rpb24gaXNGcm96ZW4oaXQpIHtcbiAgICByZXR1cm4gaXNPYmplY3QoaXQpID8gJGlzRnJvemVuID8gJGlzRnJvemVuKGl0KSA6IGZhbHNlIDogdHJ1ZTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMtZnJvemVuLmpzXG4vLyBtb2R1bGUgaWQgPSAyMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///228\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.13 Object.isSealed(O)\nvar isObject = __webpack_require__(6);\n\n__webpack_require__(34)('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjI5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLXNlYWxlZC5qcz9mYjI4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xMyBPYmplY3QuaXNTZWFsZWQoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2lzU2VhbGVkJywgZnVuY3Rpb24gKCRpc1NlYWxlZCkge1xuICByZXR1cm4gZnVuY3Rpb24gaXNTZWFsZWQoaXQpIHtcbiAgICByZXR1cm4gaXNPYmplY3QoaXQpID8gJGlzU2VhbGVkID8gJGlzU2VhbGVkKGl0KSA6IGZhbHNlIDogdHJ1ZTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMtc2VhbGVkLmpzXG4vLyBtb2R1bGUgaWQgPSAyMjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///229\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.11 Object.isExtensible(O)\nvar isObject = __webpack_require__(6);\n\n__webpack_require__(34)('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLWV4dGVuc2libGUuanM/ODBmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMTEgT2JqZWN0LmlzRXh0ZW5zaWJsZShPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnaXNFeHRlbnNpYmxlJywgZnVuY3Rpb24gKCRpc0V4dGVuc2libGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGlzRXh0ZW5zaWJsZShpdCkge1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNFeHRlbnNpYmxlID8gJGlzRXh0ZW5zaWJsZShpdCkgOiB0cnVlIDogZmFsc2U7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLWV4dGVuc2libGUuanNcbi8vIG1vZHVsZSBpZCA9IDIzMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///230\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(0);\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(153) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbi5qcz85ZjVkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMy4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiwgJ09iamVjdCcsIHsgYXNzaWduOiByZXF1aXJlKCcuL19vYmplY3QtYXNzaWduJykgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24uanNcbi8vIG1vZHVsZSBpZCA9IDIzMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///231\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.10 Object.is(value1, value2)\nvar $export = __webpack_require__(0);\n$export($export.S, 'Object', { is: __webpack_require__(233) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLmpzPzlkMWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4zLjEwIE9iamVjdC5pcyh2YWx1ZTEsIHZhbHVlMilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHsgaXM6IHJlcXVpcmUoJy4vX3NhbWUtdmFsdWUnKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///232\n")},function(module,exports){eval("// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2FtZS12YWx1ZS5qcz9lMDg2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMi45IFNhbWVWYWx1ZSh4LCB5KVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaXMgfHwgZnVuY3Rpb24gaXMoeCwgeSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIHJldHVybiB4ID09PSB5ID8geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHkgOiB4ICE9IHggJiYgeSAhPSB5O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2FtZS12YWx1ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///233\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(0);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(106).set });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanM/OGViMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjMuMTkgT2JqZWN0LnNldFByb3RvdHlwZU9mKE8sIHByb3RvKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBzZXRQcm90b3R5cGVPZjogcmVxdWlyZSgnLi9fc2V0LXByb3RvJykuc2V0IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gMjM0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///234\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 19.1.3.6 Object.prototype.toString()\nvar classof = __webpack_require__(72);\nvar test = {};\ntest[__webpack_require__(8)('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n __webpack_require__(19)(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZy5qcz84MTg2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgdGVzdCA9IHt9O1xudGVzdFtyZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKV0gPSAneic7XG5pZiAodGVzdCArICcnICE9ICdbb2JqZWN0IHpdJykge1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKE9iamVjdC5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAnW29iamVjdCAnICsgY2xhc3NvZih0aGlzKSArICddJztcbiAgfSwgdHJ1ZSk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcuanNcbi8vIG1vZHVsZSBpZCA9IDIzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///235\n")},function(module,exports,__webpack_require__){eval("// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = __webpack_require__(0);\n\n$export($export.P, 'Function', { bind: __webpack_require__(154) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24uYmluZC5qcz9kZDBhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjIuMy4yIC8gMTUuMy40LjUgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQodGhpc0FyZywgYXJncy4uLilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnRnVuY3Rpb24nLCB7IGJpbmQ6IHJlcXVpcmUoJy4vX2JpbmQnKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24uYmluZC5qc1xuLy8gbW9kdWxlIGlkID0gMjM2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///236\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(11).f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || __webpack_require__(10) && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24ubmFtZS5qcz8xMmU1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgRlByb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIG5hbWVSRSA9IC9eXFxzKmZ1bmN0aW9uIChbXiAoXSopLztcbnZhciBOQU1FID0gJ25hbWUnO1xuXG4vLyAxOS4yLjQuMiBuYW1lXG5OQU1FIGluIEZQcm90byB8fCByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmIGRQKEZQcm90bywgTkFNRSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKCcnICsgdGhpcykubWF0Y2gobmFtZVJFKVsxXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24ubmFtZS5qc1xuLy8gbW9kdWxlIGlkID0gMjM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///237\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar isObject = __webpack_require__(6);\nvar getPrototypeOf = __webpack_require__(26);\nvar HAS_INSTANCE = __webpack_require__(8)('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) __webpack_require__(11).f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24uaGFzLWluc3RhbmNlLmpzPzNkYjMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSEFTX0lOU1RBTkNFID0gcmVxdWlyZSgnLi9fd2tzJykoJ2hhc0luc3RhbmNlJyk7XG52YXIgRnVuY3Rpb25Qcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbi8vIDE5LjIuMy42IEZ1bmN0aW9uLnByb3RvdHlwZVtAQGhhc0luc3RhbmNlXShWKVxuaWYgKCEoSEFTX0lOU1RBTkNFIGluIEZ1bmN0aW9uUHJvdG8pKSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mKEZ1bmN0aW9uUHJvdG8sIEhBU19JTlNUQU5DRSwgeyB2YWx1ZTogZnVuY3Rpb24gKE8pIHtcbiAgaWYgKHR5cGVvZiB0aGlzICE9ICdmdW5jdGlvbicgfHwgIWlzT2JqZWN0KE8pKSByZXR1cm4gZmFsc2U7XG4gIGlmICghaXNPYmplY3QodGhpcy5wcm90b3R5cGUpKSByZXR1cm4gTyBpbnN0YW5jZW9mIHRoaXM7XG4gIC8vIGZvciBlbnZpcm9ubWVudCB3L28gbmF0aXZlIGBAQGhhc0luc3RhbmNlYCBsb2dpYyBlbm91Z2ggYGluc3RhbmNlb2ZgLCBidXQgYWRkIHRoaXM6XG4gIHdoaWxlIChPID0gZ2V0UHJvdG90eXBlT2YoTykpIGlmICh0aGlzLnByb3RvdHlwZSA9PT0gTykgcmV0dXJuIHRydWU7XG4gIHJldHVybiBmYWxzZTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmhhcy1pbnN0YW5jZS5qc1xuLy8gbW9kdWxlIGlkID0gMjM4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///238\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar $parseInt = __webpack_require__(156);\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucGFyc2UtaW50LmpzPzRiZTEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcGFyc2VJbnQgPSByZXF1aXJlKCcuL19wYXJzZS1pbnQnKTtcbi8vIDE4LjIuNSBwYXJzZUludChzdHJpbmcsIHJhZGl4KVxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LkYgKiAocGFyc2VJbnQgIT0gJHBhcnNlSW50KSwgeyBwYXJzZUludDogJHBhcnNlSW50IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5wYXJzZS1pbnQuanNcbi8vIG1vZHVsZSBpZCA9IDIzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///239\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar $parseFloat = __webpack_require__(157);\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucGFyc2UtZmxvYXQuanM/MTJmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRwYXJzZUZsb2F0ID0gcmVxdWlyZSgnLi9fcGFyc2UtZmxvYXQnKTtcbi8vIDE4LjIuNCBwYXJzZUZsb2F0KHN0cmluZylcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5GICogKHBhcnNlRmxvYXQgIT0gJHBhcnNlRmxvYXQpLCB7IHBhcnNlRmxvYXQ6ICRwYXJzZUZsb2F0IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5wYXJzZS1mbG9hdC5qc1xuLy8gbW9kdWxlIGlkID0gMjQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///240\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(4);\nvar has = __webpack_require__(17);\nvar cof = __webpack_require__(28);\nvar inheritIfRequired = __webpack_require__(108);\nvar toPrimitive = __webpack_require__(31);\nvar fails = __webpack_require__(5);\nvar gOPN = __webpack_require__(53).f;\nvar gOPD = __webpack_require__(25).f;\nvar dP = __webpack_require__(11).f;\nvar $trim = __webpack_require__(62).trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(__webpack_require__(52)(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = __webpack_require__(10) ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n __webpack_require__(19)(global, NUMBER, $Number);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmNvbnN0cnVjdG9yLmpzPzQwMWIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gcmVxdWlyZSgnLi9faW5oZXJpdC1pZi1yZXF1aXJlZCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmY7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgJHRyaW0gPSByZXF1aXJlKCcuL19zdHJpbmctdHJpbScpLnRyaW07XG52YXIgTlVNQkVSID0gJ051bWJlcic7XG52YXIgJE51bWJlciA9IGdsb2JhbFtOVU1CRVJdO1xudmFyIEJhc2UgPSAkTnVtYmVyO1xudmFyIHByb3RvID0gJE51bWJlci5wcm90b3R5cGU7XG4vLyBPcGVyYSB+MTIgaGFzIGJyb2tlbiBPYmplY3QjdG9TdHJpbmdcbnZhciBCUk9LRU5fQ09GID0gY29mKHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKShwcm90bykpID09IE5VTUJFUjtcbnZhciBUUklNID0gJ3RyaW0nIGluIFN0cmluZy5wcm90b3R5cGU7XG5cbi8vIDcuMS4zIFRvTnVtYmVyKGFyZ3VtZW50KVxudmFyIHRvTnVtYmVyID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBpdCA9IHRvUHJpbWl0aXZlKGFyZ3VtZW50LCBmYWxzZSk7XG4gIGlmICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgJiYgaXQubGVuZ3RoID4gMikge1xuICAgIGl0ID0gVFJJTSA/IGl0LnRyaW0oKSA6ICR0cmltKGl0LCAzKTtcbiAgICB2YXIgZmlyc3QgPSBpdC5jaGFyQ29kZUF0KDApO1xuICAgIHZhciB0aGlyZCwgcmFkaXgsIG1heENvZGU7XG4gICAgaWYgKGZpcnN0ID09PSA0MyB8fCBmaXJzdCA9PT0gNDUpIHtcbiAgICAgIHRoaXJkID0gaXQuY2hhckNvZGVBdCgyKTtcbiAgICAgIGlmICh0aGlyZCA9PT0gODggfHwgdGhpcmQgPT09IDEyMCkgcmV0dXJuIE5hTjsgLy8gTnVtYmVyKCcrMHgxJykgc2hvdWxkIGJlIE5hTiwgb2xkIFY4IGZpeFxuICAgIH0gZWxzZSBpZiAoZmlyc3QgPT09IDQ4KSB7XG4gICAgICBzd2l0Y2ggKGl0LmNoYXJDb2RlQXQoMSkpIHtcbiAgICAgICAgY2FzZSA2NjogY2FzZSA5ODogcmFkaXggPSAyOyBtYXhDb2RlID0gNDk7IGJyZWFrOyAvLyBmYXN0IGVxdWFsIC9eMGJbMDFdKyQvaVxuICAgICAgICBjYXNlIDc5OiBjYXNlIDExMTogcmFkaXggPSA4OyBtYXhDb2RlID0gNTU7IGJyZWFrOyAvLyBmYXN0IGVxdWFsIC9eMG9bMC03XSskL2lcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuICtpdDtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGRpZ2l0cyA9IGl0LnNsaWNlKDIpLCBpID0gMCwgbCA9IGRpZ2l0cy5sZW5ndGgsIGNvZGU7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY29kZSA9IGRpZ2l0cy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAvLyBwYXJzZUludCBwYXJzZXMgYSBzdHJpbmcgdG8gYSBmaXJzdCB1bmF2YWlsYWJsZSBzeW1ib2xcbiAgICAgICAgLy8gYnV0IFRvTnVtYmVyIHNob3VsZCByZXR1cm4gTmFOIGlmIGEgc3RyaW5nIGNvbnRhaW5zIHVuYXZhaWxhYmxlIHN5bWJvbHNcbiAgICAgICAgaWYgKGNvZGUgPCA0OCB8fCBjb2RlID4gbWF4Q29kZSkgcmV0dXJuIE5hTjtcbiAgICAgIH0gcmV0dXJuIHBhcnNlSW50KGRpZ2l0cywgcmFkaXgpO1xuICAgIH1cbiAgfSByZXR1cm4gK2l0O1xufTtcblxuaWYgKCEkTnVtYmVyKCcgMG8xJykgfHwgISROdW1iZXIoJzBiMScpIHx8ICROdW1iZXIoJysweDEnKSkge1xuICAkTnVtYmVyID0gZnVuY3Rpb24gTnVtYmVyKHZhbHVlKSB7XG4gICAgdmFyIGl0ID0gYXJndW1lbnRzLmxlbmd0aCA8IDEgPyAwIDogdmFsdWU7XG4gICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgIHJldHVybiB0aGF0IGluc3RhbmNlb2YgJE51bWJlclxuICAgICAgLy8gY2hlY2sgb24gMS4uY29uc3RydWN0b3IoZm9vKSBjYXNlXG4gICAgICAmJiAoQlJPS0VOX0NPRiA/IGZhaWxzKGZ1bmN0aW9uICgpIHsgcHJvdG8udmFsdWVPZi5jYWxsKHRoYXQpOyB9KSA6IGNvZih0aGF0KSAhPSBOVU1CRVIpXG4gICAgICAgID8gaW5oZXJpdElmUmVxdWlyZWQobmV3IEJhc2UodG9OdW1iZXIoaXQpKSwgdGhhdCwgJE51bWJlcikgOiB0b051bWJlcihpdCk7XG4gIH07XG4gIGZvciAodmFyIGtleXMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZ09QTihCYXNlKSA6IChcbiAgICAvLyBFUzM6XG4gICAgJ01BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLCcgK1xuICAgIC8vIEVTNiAoaW4gY2FzZSwgaWYgbW9kdWxlcyB3aXRoIEVTNiBOdW1iZXIgc3RhdGljcyByZXF1aXJlZCBiZWZvcmUpOlxuICAgICdFUFNJTE9OLGlzRmluaXRlLGlzSW50ZWdlcixpc05hTixpc1NhZmVJbnRlZ2VyLE1BWF9TQUZFX0lOVEVHRVIsJyArXG4gICAgJ01JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXInXG4gICkuc3BsaXQoJywnKSwgaiA9IDAsIGtleTsga2V5cy5sZW5ndGggPiBqOyBqKyspIHtcbiAgICBpZiAoaGFzKEJhc2UsIGtleSA9IGtleXNbal0pICYmICFoYXMoJE51bWJlciwga2V5KSkge1xuICAgICAgZFAoJE51bWJlciwga2V5LCBnT1BEKEJhc2UsIGtleSkpO1xuICAgIH1cbiAgfVxuICAkTnVtYmVyLnByb3RvdHlwZSA9IHByb3RvO1xuICBwcm90by5jb25zdHJ1Y3RvciA9ICROdW1iZXI7XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoZ2xvYmFsLCBOVU1CRVIsICROdW1iZXIpO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuY29uc3RydWN0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDI0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///241\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar toInteger = __webpack_require__(33);\nvar aNumberValue = __webpack_require__(158);\nvar repeat = __webpack_require__(109);\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !__webpack_require__(5)(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnRvLWZpeGVkLmpzPzQxNjIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgYU51bWJlclZhbHVlID0gcmVxdWlyZSgnLi9fYS1udW1iZXItdmFsdWUnKTtcbnZhciByZXBlYXQgPSByZXF1aXJlKCcuL19zdHJpbmctcmVwZWF0Jyk7XG52YXIgJHRvRml4ZWQgPSAxLjAudG9GaXhlZDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgZGF0YSA9IFswLCAwLCAwLCAwLCAwLCAwXTtcbnZhciBFUlJPUiA9ICdOdW1iZXIudG9GaXhlZDogaW5jb3JyZWN0IGludm9jYXRpb24hJztcbnZhciBaRVJPID0gJzAnO1xuXG52YXIgbXVsdGlwbHkgPSBmdW5jdGlvbiAobiwgYykge1xuICB2YXIgaSA9IC0xO1xuICB2YXIgYzIgPSBjO1xuICB3aGlsZSAoKytpIDwgNikge1xuICAgIGMyICs9IG4gKiBkYXRhW2ldO1xuICAgIGRhdGFbaV0gPSBjMiAlIDFlNztcbiAgICBjMiA9IGZsb29yKGMyIC8gMWU3KTtcbiAgfVxufTtcbnZhciBkaXZpZGUgPSBmdW5jdGlvbiAobikge1xuICB2YXIgaSA9IDY7XG4gIHZhciBjID0gMDtcbiAgd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgYyArPSBkYXRhW2ldO1xuICAgIGRhdGFbaV0gPSBmbG9vcihjIC8gbik7XG4gICAgYyA9IChjICUgbikgKiAxZTc7XG4gIH1cbn07XG52YXIgbnVtVG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpID0gNjtcbiAgdmFyIHMgPSAnJztcbiAgd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgaWYgKHMgIT09ICcnIHx8IGkgPT09IDAgfHwgZGF0YVtpXSAhPT0gMCkge1xuICAgICAgdmFyIHQgPSBTdHJpbmcoZGF0YVtpXSk7XG4gICAgICBzID0gcyA9PT0gJycgPyB0IDogcyArIHJlcGVhdC5jYWxsKFpFUk8sIDcgLSB0Lmxlbmd0aCkgKyB0O1xuICAgIH1cbiAgfSByZXR1cm4gcztcbn07XG52YXIgcG93ID0gZnVuY3Rpb24gKHgsIG4sIGFjYykge1xuICByZXR1cm4gbiA9PT0gMCA/IGFjYyA6IG4gJSAyID09PSAxID8gcG93KHgsIG4gLSAxLCBhY2MgKiB4KSA6IHBvdyh4ICogeCwgbiAvIDIsIGFjYyk7XG59O1xudmFyIGxvZyA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBuID0gMDtcbiAgdmFyIHgyID0geDtcbiAgd2hpbGUgKHgyID49IDQwOTYpIHtcbiAgICBuICs9IDEyO1xuICAgIHgyIC89IDQwOTY7XG4gIH1cbiAgd2hpbGUgKHgyID49IDIpIHtcbiAgICBuICs9IDE7XG4gICAgeDIgLz0gMjtcbiAgfSByZXR1cm4gbjtcbn07XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKCEhJHRvRml4ZWQgJiYgKFxuICAwLjAwMDA4LnRvRml4ZWQoMykgIT09ICcwLjAwMCcgfHxcbiAgMC45LnRvRml4ZWQoMCkgIT09ICcxJyB8fFxuICAxLjI1NS50b0ZpeGVkKDIpICE9PSAnMS4yNScgfHxcbiAgMTAwMDAwMDAwMDAwMDAwMDEyOC4wLnRvRml4ZWQoMCkgIT09ICcxMDAwMDAwMDAwMDAwMDAwMTI4J1xuKSB8fCAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIC8vIFY4IH4gQW5kcm9pZCA0LjMtXG4gICR0b0ZpeGVkLmNhbGwoe30pO1xufSkpLCAnTnVtYmVyJywge1xuICB0b0ZpeGVkOiBmdW5jdGlvbiB0b0ZpeGVkKGZyYWN0aW9uRGlnaXRzKSB7XG4gICAgdmFyIHggPSBhTnVtYmVyVmFsdWUodGhpcywgRVJST1IpO1xuICAgIHZhciBmID0gdG9JbnRlZ2VyKGZyYWN0aW9uRGlnaXRzKTtcbiAgICB2YXIgcyA9ICcnO1xuICAgIHZhciBtID0gWkVSTztcbiAgICB2YXIgZSwgeiwgaiwgaztcbiAgICBpZiAoZiA8IDAgfHwgZiA+IDIwKSB0aHJvdyBSYW5nZUVycm9yKEVSUk9SKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKHggIT0geCkgcmV0dXJuICdOYU4nO1xuICAgIGlmICh4IDw9IC0xZTIxIHx8IHggPj0gMWUyMSkgcmV0dXJuIFN0cmluZyh4KTtcbiAgICBpZiAoeCA8IDApIHtcbiAgICAgIHMgPSAnLSc7XG4gICAgICB4ID0gLXg7XG4gICAgfVxuICAgIGlmICh4ID4gMWUtMjEpIHtcbiAgICAgIGUgPSBsb2coeCAqIHBvdygyLCA2OSwgMSkpIC0gNjk7XG4gICAgICB6ID0gZSA8IDAgPyB4ICogcG93KDIsIC1lLCAxKSA6IHggLyBwb3coMiwgZSwgMSk7XG4gICAgICB6ICo9IDB4MTAwMDAwMDAwMDAwMDA7XG4gICAgICBlID0gNTIgLSBlO1xuICAgICAgaWYgKGUgPiAwKSB7XG4gICAgICAgIG11bHRpcGx5KDAsIHopO1xuICAgICAgICBqID0gZjtcbiAgICAgICAgd2hpbGUgKGogPj0gNykge1xuICAgICAgICAgIG11bHRpcGx5KDFlNywgMCk7XG4gICAgICAgICAgaiAtPSA3O1xuICAgICAgICB9XG4gICAgICAgIG11bHRpcGx5KHBvdygxMCwgaiwgMSksIDApO1xuICAgICAgICBqID0gZSAtIDE7XG4gICAgICAgIHdoaWxlIChqID49IDIzKSB7XG4gICAgICAgICAgZGl2aWRlKDEgPDwgMjMpO1xuICAgICAgICAgIGogLT0gMjM7XG4gICAgICAgIH1cbiAgICAgICAgZGl2aWRlKDEgPDwgaik7XG4gICAgICAgIG11bHRpcGx5KDEsIDEpO1xuICAgICAgICBkaXZpZGUoMik7XG4gICAgICAgIG0gPSBudW1Ub1N0cmluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbXVsdGlwbHkoMCwgeik7XG4gICAgICAgIG11bHRpcGx5KDEgPDwgLWUsIDApO1xuICAgICAgICBtID0gbnVtVG9TdHJpbmcoKSArIHJlcGVhdC5jYWxsKFpFUk8sIGYpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZiA+IDApIHtcbiAgICAgIGsgPSBtLmxlbmd0aDtcbiAgICAgIG0gPSBzICsgKGsgPD0gZiA/ICcwLicgKyByZXBlYXQuY2FsbChaRVJPLCBmIC0gaykgKyBtIDogbS5zbGljZSgwLCBrIC0gZikgKyAnLicgKyBtLnNsaWNlKGsgLSBmKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSBzICsgbTtcbiAgICB9IHJldHVybiBtO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnRvLWZpeGVkLmpzXG4vLyBtb2R1bGUgaWQgPSAyNDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///242\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $fails = __webpack_require__(5);\nvar aNumberValue = __webpack_require__(158);\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnRvLXByZWNpc2lvbi5qcz82NTEyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBhTnVtYmVyVmFsdWUgPSByZXF1aXJlKCcuL19hLW51bWJlci12YWx1ZScpO1xudmFyICR0b1ByZWNpc2lvbiA9IDEuMC50b1ByZWNpc2lvbjtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gSUU3LVxuICByZXR1cm4gJHRvUHJlY2lzaW9uLmNhbGwoMSwgdW5kZWZpbmVkKSAhPT0gJzEnO1xufSkgfHwgISRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIFY4IH4gQW5kcm9pZCA0LjMtXG4gICR0b1ByZWNpc2lvbi5jYWxsKHt9KTtcbn0pKSwgJ051bWJlcicsIHtcbiAgdG9QcmVjaXNpb246IGZ1bmN0aW9uIHRvUHJlY2lzaW9uKHByZWNpc2lvbikge1xuICAgIHZhciB0aGF0ID0gYU51bWJlclZhbHVlKHRoaXMsICdOdW1iZXIjdG9QcmVjaXNpb246IGluY29ycmVjdCBpbnZvY2F0aW9uIScpO1xuICAgIHJldHVybiBwcmVjaXNpb24gPT09IHVuZGVmaW5lZCA/ICR0b1ByZWNpc2lvbi5jYWxsKHRoYXQpIDogJHRvUHJlY2lzaW9uLmNhbGwodGhhdCwgcHJlY2lzaW9uKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci50by1wcmVjaXNpb24uanNcbi8vIG1vZHVsZSBpZCA9IDI0M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///243\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.1 Number.EPSILON\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmVwc2lsb24uanM/NGFkYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4xLjIuMSBOdW1iZXIuRVBTSUxPTlxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IEVQU0lMT046IE1hdGgucG93KDIsIC01MikgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5lcHNpbG9uLmpzXG4vLyBtb2R1bGUgaWQgPSAyNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///244\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.2 Number.isFinite(number)\nvar $export = __webpack_require__(0);\nvar _isFinite = __webpack_require__(4).isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLWZpbml0ZS5qcz9jYWU1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjEuMi4yIE51bWJlci5pc0Zpbml0ZShudW1iZXIpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIF9pc0Zpbml0ZSA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmlzRmluaXRlO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtcbiAgaXNGaW5pdGU6IGZ1bmN0aW9uIGlzRmluaXRlKGl0KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnbnVtYmVyJyAmJiBfaXNGaW5pdGUoaXQpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLWZpbml0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///245\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.3 Number.isInteger(number)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Number', { isInteger: __webpack_require__(159) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXIuanM/NWVkOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4xLjIuMyBOdW1iZXIuaXNJbnRlZ2VyKG51bWJlcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywgeyBpc0ludGVnZXI6IHJlcXVpcmUoJy4vX2lzLWludGVnZXInKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXIuanNcbi8vIG1vZHVsZSBpZCA9IDI0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///246\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.4 Number.isNaN(number)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLW5hbi5qcz8yYzZlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjEuMi40IE51bWJlci5pc05hTihudW1iZXIpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtcbiAgaXNOYU46IGZ1bmN0aW9uIGlzTmFOKG51bWJlcikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICByZXR1cm4gbnVtYmVyICE9IG51bWJlcjtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5pcy1uYW4uanNcbi8vIG1vZHVsZSBpZCA9IDI0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///247\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = __webpack_require__(0);\nvar isInteger = __webpack_require__(159);\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLXNhZmUtaW50ZWdlci5qcz8wMzU5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjEuMi41IE51bWJlci5pc1NhZmVJbnRlZ2VyKG51bWJlcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaXNJbnRlZ2VyID0gcmVxdWlyZSgnLi9faXMtaW50ZWdlcicpO1xudmFyIGFicyA9IE1hdGguYWJzO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtcbiAgaXNTYWZlSW50ZWdlcjogZnVuY3Rpb24gaXNTYWZlSW50ZWdlcihudW1iZXIpIHtcbiAgICByZXR1cm4gaXNJbnRlZ2VyKG51bWJlcikgJiYgYWJzKG51bWJlcikgPD0gMHgxZmZmZmZmZmZmZmZmZjtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5pcy1zYWZlLWludGVnZXIuanNcbi8vIG1vZHVsZSBpZCA9IDI0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///248\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLm1heC1zYWZlLWludGVnZXIuanM/NWEyMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4xLjIuNiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IE1BWF9TQUZFX0lOVEVHRVI6IDB4MWZmZmZmZmZmZmZmZmYgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5tYXgtc2FmZS1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAyNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///249\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLm1pbi1zYWZlLWludGVnZXIuanM/Njg5ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4xLjIuMTAgTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVJcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywgeyBNSU5fU0FGRV9JTlRFR0VSOiAtMHgxZmZmZmZmZmZmZmZmZiB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLm1pbi1zYWZlLWludGVnZXIuanNcbi8vIG1vZHVsZSBpZCA9IDI1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///250\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar $parseFloat = __webpack_require__(157);\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnBhcnNlLWZsb2F0LmpzPzZhNWIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcGFyc2VGbG9hdCA9IHJlcXVpcmUoJy4vX3BhcnNlLWZsb2F0Jyk7XG4vLyAyMC4xLjIuMTIgTnVtYmVyLnBhcnNlRmxvYXQoc3RyaW5nKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoTnVtYmVyLnBhcnNlRmxvYXQgIT0gJHBhcnNlRmxvYXQpLCAnTnVtYmVyJywgeyBwYXJzZUZsb2F0OiAkcGFyc2VGbG9hdCB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnBhcnNlLWZsb2F0LmpzXG4vLyBtb2R1bGUgaWQgPSAyNTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///251\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar $parseInt = __webpack_require__(156);\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnBhcnNlLWludC5qcz83NTQyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhcnNlSW50ID0gcmVxdWlyZSgnLi9fcGFyc2UtaW50Jyk7XG4vLyAyMC4xLjIuMTMgTnVtYmVyLnBhcnNlSW50KHN0cmluZywgcmFkaXgpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChOdW1iZXIucGFyc2VJbnQgIT0gJHBhcnNlSW50KSwgJ051bWJlcicsIHsgcGFyc2VJbnQ6ICRwYXJzZUludCB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnBhcnNlLWludC5qc1xuLy8gbW9kdWxlIGlkID0gMjUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///252\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.3 Math.acosh(x)\nvar $export = __webpack_require__(0);\nvar log1p = __webpack_require__(160);\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5hY29zaC5qcz9iZjY5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4zIE1hdGguYWNvc2goeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbG9nMXAgPSByZXF1aXJlKCcuL19tYXRoLWxvZzFwJyk7XG52YXIgc3FydCA9IE1hdGguc3FydDtcbnZhciAkYWNvc2ggPSBNYXRoLmFjb3NoO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoJGFjb3NoXG4gIC8vIFY4IGJ1ZzogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTM1MDlcbiAgJiYgTWF0aC5mbG9vcigkYWNvc2goTnVtYmVyLk1BWF9WQUxVRSkpID09IDcxMFxuICAvLyBUb3IgQnJvd3NlciBidWc6IE1hdGguYWNvc2goSW5maW5pdHkpIC0+IE5hTlxuICAmJiAkYWNvc2goSW5maW5pdHkpID09IEluZmluaXR5XG4pLCAnTWF0aCcsIHtcbiAgYWNvc2g6IGZ1bmN0aW9uIGFjb3NoKHgpIHtcbiAgICByZXR1cm4gKHggPSAreCkgPCAxID8gTmFOIDogeCA+IDk0OTA2MjY1LjYyNDI1MTU2XG4gICAgICA/IE1hdGgubG9nKHgpICsgTWF0aC5MTjJcbiAgICAgIDogbG9nMXAoeCAtIDEgKyBzcXJ0KHggLSAxKSAqIHNxcnQoeCArIDEpKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguYWNvc2guanNcbi8vIG1vZHVsZSBpZCA9IDI1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///253\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.5 Math.asinh(x)\nvar $export = __webpack_require__(0);\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5hc2luaC5qcz9lYzliIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi41IE1hdGguYXNpbmgoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGFzaW5oID0gTWF0aC5hc2luaDtcblxuZnVuY3Rpb24gYXNpbmgoeCkge1xuICByZXR1cm4gIWlzRmluaXRlKHggPSAreCkgfHwgeCA9PSAwID8geCA6IHggPCAwID8gLWFzaW5oKC14KSA6IE1hdGgubG9nKHggKyBNYXRoLnNxcnQoeCAqIHggKyAxKSk7XG59XG5cbi8vIFRvciBCcm93c2VyIGJ1ZzogTWF0aC5hc2luaCgwKSAtPiAtMFxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKCRhc2luaCAmJiAxIC8gJGFzaW5oKDApID4gMCksICdNYXRoJywgeyBhc2luaDogYXNpbmggfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguYXNpbmguanNcbi8vIG1vZHVsZSBpZCA9IDI1NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///254\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.7 Math.atanh(x)\nvar $export = __webpack_require__(0);\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5hdGFuaC5qcz85NzI4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi43IE1hdGguYXRhbmgoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGF0YW5oID0gTWF0aC5hdGFuaDtcblxuLy8gVG9yIEJyb3dzZXIgYnVnOiBNYXRoLmF0YW5oKC0wKSAtPiAwXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoJGF0YW5oICYmIDEgLyAkYXRhbmgoLTApIDwgMCksICdNYXRoJywge1xuICBhdGFuaDogZnVuY3Rpb24gYXRhbmgoeCkge1xuICAgIHJldHVybiAoeCA9ICt4KSA9PSAwID8geCA6IE1hdGgubG9nKCgxICsgeCkgLyAoMSAtIHgpKSAvIDI7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmF0YW5oLmpzXG4vLyBtb2R1bGUgaWQgPSAyNTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///255\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.9 Math.cbrt(x)\nvar $export = __webpack_require__(0);\nvar sign = __webpack_require__(110);\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5jYnJ0LmpzPzkwMTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjkgTWF0aC5jYnJ0KHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHNpZ24gPSByZXF1aXJlKCcuL19tYXRoLXNpZ24nKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBjYnJ0OiBmdW5jdGlvbiBjYnJ0KHgpIHtcbiAgICByZXR1cm4gc2lnbih4ID0gK3gpICogTWF0aC5wb3coTWF0aC5hYnMoeCksIDEgLyAzKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguY2JydC5qc1xuLy8gbW9kdWxlIGlkID0gMjU2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///256\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.11 Math.clz32(x)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5jbHozMi5qcz9jNGUzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4xMSBNYXRoLmNsejMyKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGNsejMyOiBmdW5jdGlvbiBjbHozMih4KSB7XG4gICAgcmV0dXJuICh4ID4+Pj0gMCkgPyAzMSAtIE1hdGguZmxvb3IoTWF0aC5sb2coeCArIDAuNSkgKiBNYXRoLkxPRzJFKSA6IDMyO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5jbHozMi5qc1xuLy8gbW9kdWxlIGlkID0gMjU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///257\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.12 Math.cosh(x)\nvar $export = __webpack_require__(0);\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5jb3NoLmpzPzJlNTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjEyIE1hdGguY29zaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBleHAgPSBNYXRoLmV4cDtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBjb3NoOiBmdW5jdGlvbiBjb3NoKHgpIHtcbiAgICByZXR1cm4gKGV4cCh4ID0gK3gpICsgZXhwKC14KSkgLyAyO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5jb3NoLmpzXG4vLyBtb2R1bGUgaWQgPSAyNThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///258\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.14 Math.expm1(x)\nvar $export = __webpack_require__(0);\nvar $expm1 = __webpack_require__(111);\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5leHBtMS5qcz9mNzEyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4xNCBNYXRoLmV4cG0xKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRleHBtMSA9IHJlcXVpcmUoJy4vX21hdGgtZXhwbTEnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoJGV4cG0xICE9IE1hdGguZXhwbTEpLCAnTWF0aCcsIHsgZXhwbTE6ICRleHBtMSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5leHBtMS5qc1xuLy8gbW9kdWxlIGlkID0gMjU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///259\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.16 Math.fround(x)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', { fround: __webpack_require__(161) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5mcm91bmQuanM/OWJhNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4yLjIuMTYgTWF0aC5mcm91bmQoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgZnJvdW5kOiByZXF1aXJlKCcuL19tYXRoLWZyb3VuZCcpIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmZyb3VuZC5qc1xuLy8gbW9kdWxlIGlkID0gMjYwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///260\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = __webpack_require__(0);\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5oeXBvdC5qcz9jMmJiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4xNyBNYXRoLmh5cG90KFt2YWx1ZTFbLCB2YWx1ZTJbLCDigKYgXV1dKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhYnMgPSBNYXRoLmFicztcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBoeXBvdDogZnVuY3Rpb24gaHlwb3QodmFsdWUxLCB2YWx1ZTIpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHZhciBzdW0gPSAwO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGxhcmcgPSAwO1xuICAgIHZhciBhcmcsIGRpdjtcbiAgICB3aGlsZSAoaSA8IGFMZW4pIHtcbiAgICAgIGFyZyA9IGFicyhhcmd1bWVudHNbaSsrXSk7XG4gICAgICBpZiAobGFyZyA8IGFyZykge1xuICAgICAgICBkaXYgPSBsYXJnIC8gYXJnO1xuICAgICAgICBzdW0gPSBzdW0gKiBkaXYgKiBkaXYgKyAxO1xuICAgICAgICBsYXJnID0gYXJnO1xuICAgICAgfSBlbHNlIGlmIChhcmcgPiAwKSB7XG4gICAgICAgIGRpdiA9IGFyZyAvIGxhcmc7XG4gICAgICAgIHN1bSArPSBkaXYgKiBkaXY7XG4gICAgICB9IGVsc2Ugc3VtICs9IGFyZztcbiAgICB9XG4gICAgcmV0dXJuIGxhcmcgPT09IEluZmluaXR5ID8gSW5maW5pdHkgOiBsYXJnICogTWF0aC5zcXJ0KHN1bSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmh5cG90LmpzXG4vLyBtb2R1bGUgaWQgPSAyNjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///261\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.18 Math.imul(x, y)\nvar $export = __webpack_require__(0);\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * __webpack_require__(5)(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5pbXVsLmpzPzJlYTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjE4IE1hdGguaW11bCh4LCB5KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkaW11bCA9IE1hdGguaW11bDtcblxuLy8gc29tZSBXZWJLaXQgdmVyc2lvbnMgZmFpbHMgd2l0aCBiaWcgbnVtYmVycywgc29tZSBoYXMgd3JvbmcgYXJpdHlcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAkaW11bCgweGZmZmZmZmZmLCA1KSAhPSAtNSB8fCAkaW11bC5sZW5ndGggIT0gMjtcbn0pLCAnTWF0aCcsIHtcbiAgaW11bDogZnVuY3Rpb24gaW11bCh4LCB5KSB7XG4gICAgdmFyIFVJTlQxNiA9IDB4ZmZmZjtcbiAgICB2YXIgeG4gPSAreDtcbiAgICB2YXIgeW4gPSAreTtcbiAgICB2YXIgeGwgPSBVSU5UMTYgJiB4bjtcbiAgICB2YXIgeWwgPSBVSU5UMTYgJiB5bjtcbiAgICByZXR1cm4gMCB8IHhsICogeWwgKyAoKFVJTlQxNiAmIHhuID4+PiAxNikgKiB5bCArIHhsICogKFVJTlQxNiAmIHluID4+PiAxNikgPDwgMTYgPj4+IDApO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5pbXVsLmpzXG4vLyBtb2R1bGUgaWQgPSAyNjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///262\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.21 Math.log10(x)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cxMC5qcz9kNjJhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4yMSBNYXRoLmxvZzEwKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGxvZzEwOiBmdW5jdGlvbiBsb2cxMCh4KSB7XG4gICAgcmV0dXJuIE1hdGgubG9nKHgpICogTWF0aC5MT0cxMEU7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmxvZzEwLmpzXG4vLyBtb2R1bGUgaWQgPSAyNjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///263\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.20 Math.log1p(x)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', { log1p: __webpack_require__(160) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cxcC5qcz9hNTYxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4yMCBNYXRoLmxvZzFwKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IGxvZzFwOiByZXF1aXJlKCcuL19tYXRoLWxvZzFwJykgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgubG9nMXAuanNcbi8vIG1vZHVsZSBpZCA9IDI2NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///264\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.22 Math.log2(x)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cyLmpzPzM3ODIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjIyIE1hdGgubG9nMih4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBsb2cyOiBmdW5jdGlvbiBsb2cyKHgpIHtcbiAgICByZXR1cm4gTWF0aC5sb2coeCkgLyBNYXRoLkxOMjtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgubG9nMi5qc1xuLy8gbW9kdWxlIGlkID0gMjY1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///265\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.28 Math.sign(x)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', { sign: __webpack_require__(110) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5zaWduLmpzPzFlNWYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjI4IE1hdGguc2lnbih4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywgeyBzaWduOiByZXF1aXJlKCcuL19tYXRoLXNpZ24nKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5zaWduLmpzXG4vLyBtb2R1bGUgaWQgPSAyNjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///266\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.30 Math.sinh(x)\nvar $export = __webpack_require__(0);\nvar expm1 = __webpack_require__(111);\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * __webpack_require__(5)(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5zaW5oLmpzPzMyMzEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjMwIE1hdGguc2luaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBleHBtMSA9IHJlcXVpcmUoJy4vX21hdGgtZXhwbTEnKTtcbnZhciBleHAgPSBNYXRoLmV4cDtcblxuLy8gVjggbmVhciBDaHJvbWl1bSAzOCBoYXMgYSBwcm9ibGVtIHdpdGggdmVyeSBzbWFsbCBudW1iZXJzXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gIU1hdGguc2luaCgtMmUtMTcpICE9IC0yZS0xNztcbn0pLCAnTWF0aCcsIHtcbiAgc2luaDogZnVuY3Rpb24gc2luaCh4KSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKHggPSAreCkgPCAxXG4gICAgICA/IChleHBtMSh4KSAtIGV4cG0xKC14KSkgLyAyXG4gICAgICA6IChleHAoeCAtIDEpIC0gZXhwKC14IC0gMSkpICogKE1hdGguRSAvIDIpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5zaW5oLmpzXG4vLyBtb2R1bGUgaWQgPSAyNjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///267\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.33 Math.tanh(x)\nvar $export = __webpack_require__(0);\nvar expm1 = __webpack_require__(111);\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC50YW5oLmpzPzQ5MTAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjMzIE1hdGgudGFuaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBleHBtMSA9IHJlcXVpcmUoJy4vX21hdGgtZXhwbTEnKTtcbnZhciBleHAgPSBNYXRoLmV4cDtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICB0YW5oOiBmdW5jdGlvbiB0YW5oKHgpIHtcbiAgICB2YXIgYSA9IGV4cG0xKHggPSAreCk7XG4gICAgdmFyIGIgPSBleHBtMSgteCk7XG4gICAgcmV0dXJuIGEgPT0gSW5maW5pdHkgPyAxIDogYiA9PSBJbmZpbml0eSA/IC0xIDogKGEgLSBiKSAvIChleHAoeCkgKyBleHAoLXgpKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgudGFuaC5qc1xuLy8gbW9kdWxlIGlkID0gMjY4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///268\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.34 Math.trunc(x)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC50cnVuYy5qcz8xZjQ5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4zNCBNYXRoLnRydW5jKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIHRydW5jOiBmdW5jdGlvbiB0cnVuYyhpdCkge1xuICAgIHJldHVybiAoaXQgPiAwID8gTWF0aC5mbG9vciA6IE1hdGguY2VpbCkoaXQpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC50cnVuYy5qc1xuLy8gbW9kdWxlIGlkID0gMjY5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///269\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar toAbsoluteIndex = __webpack_require__(51);\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZyb20tY29kZS1wb2ludC5qcz82ZWEzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciBmcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xudmFyICRmcm9tQ29kZVBvaW50ID0gU3RyaW5nLmZyb21Db2RlUG9pbnQ7XG5cbi8vIGxlbmd0aCBzaG91bGQgYmUgMSwgb2xkIEZGIHByb2JsZW1cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKCEhJGZyb21Db2RlUG9pbnQgJiYgJGZyb21Db2RlUG9pbnQubGVuZ3RoICE9IDEpLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjIuMiBTdHJpbmcuZnJvbUNvZGVQb2ludCguLi5jb2RlUG9pbnRzKVxuICBmcm9tQ29kZVBvaW50OiBmdW5jdGlvbiBmcm9tQ29kZVBvaW50KHgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBjb2RlO1xuICAgIHdoaWxlIChhTGVuID4gaSkge1xuICAgICAgY29kZSA9ICthcmd1bWVudHNbaSsrXTtcbiAgICAgIGlmICh0b0Fic29sdXRlSW5kZXgoY29kZSwgMHgxMGZmZmYpICE9PSBjb2RlKSB0aHJvdyBSYW5nZUVycm9yKGNvZGUgKyAnIGlzIG5vdCBhIHZhbGlkIGNvZGUgcG9pbnQnKTtcbiAgICAgIHJlcy5wdXNoKGNvZGUgPCAweDEwMDAwXG4gICAgICAgID8gZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICAgIDogZnJvbUNoYXJDb2RlKCgoY29kZSAtPSAweDEwMDAwKSA+PiAxMCkgKyAweGQ4MDAsIGNvZGUgJSAweDQwMCArIDB4ZGMwMClcbiAgICAgICk7XG4gICAgfSByZXR1cm4gcmVzLmpvaW4oJycpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZyb20tY29kZS1wb2ludC5qc1xuLy8gbW9kdWxlIGlkID0gMjcwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///270\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar toIObject = __webpack_require__(24);\nvar toLength = __webpack_require__(12);\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnJhdy5qcz8xNzdiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjIuNCBTdHJpbmcucmF3KGNhbGxTaXRlLCAuLi5zdWJzdGl0dXRpb25zKVxuICByYXc6IGZ1bmN0aW9uIHJhdyhjYWxsU2l0ZSkge1xuICAgIHZhciB0cGwgPSB0b0lPYmplY3QoY2FsbFNpdGUucmF3KTtcbiAgICB2YXIgbGVuID0gdG9MZW5ndGgodHBsLmxlbmd0aCk7XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKGxlbiA+IGkpIHtcbiAgICAgIHJlcy5wdXNoKFN0cmluZyh0cGxbaSsrXSkpO1xuICAgICAgaWYgKGkgPCBhTGVuKSByZXMucHVzaChTdHJpbmcoYXJndW1lbnRzW2ldKSk7XG4gICAgfSByZXR1cm4gcmVzLmpvaW4oJycpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnJhdy5qc1xuLy8gbW9kdWxlIGlkID0gMjcxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///271\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 21.1.3.25 String.prototype.trim()\n__webpack_require__(62)('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnRyaW0uanM/OWExOSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAyMS4xLjMuMjUgU3RyaW5nLnByb3RvdHlwZS50cmltKClcbnJlcXVpcmUoJy4vX3N0cmluZy10cmltJykoJ3RyaW0nLCBmdW5jdGlvbiAoJHRyaW0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyaW0oKSB7XG4gICAgcmV0dXJuICR0cmltKHRoaXMsIDMpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy50cmltLmpzXG4vLyBtb2R1bGUgaWQgPSAyNzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///272\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $at = __webpack_require__(112)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(113)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjczLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yLmpzP2Q0MGQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRhdCA9IHJlcXVpcmUoJy4vX3N0cmluZy1hdCcpKHRydWUpO1xuXG4vLyAyMS4xLjMuMjcgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKFN0cmluZywgJ1N0cmluZycsIGZ1bmN0aW9uIChpdGVyYXRlZCkge1xuICB0aGlzLl90ID0gU3RyaW5nKGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4vLyAyMS4xLjUuMi4xICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGluZGV4ID0gdGhpcy5faTtcbiAgdmFyIHBvaW50O1xuICBpZiAoaW5kZXggPj0gTy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSAkYXQoTywgaW5kZXgpO1xuICB0aGlzLl9pICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIHsgdmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZSB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gMjczXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///273\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $at = __webpack_require__(112)(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjc0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmNvZGUtcG9pbnQtYXQuanM/NDVhNyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRhdCA9IHJlcXVpcmUoJy4vX3N0cmluZy1hdCcpKGZhbHNlKTtcbiRleHBvcnQoJGV4cG9ydC5QLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjMuMyBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0KHBvcylcbiAgY29kZVBvaW50QXQ6IGZ1bmN0aW9uIGNvZGVQb2ludEF0KHBvcykge1xuICAgIHJldHVybiAkYXQodGhpcywgcG9zKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5jb2RlLXBvaW50LWF0LmpzXG4vLyBtb2R1bGUgaWQgPSAyNzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///274\n")},function(module,exports,__webpack_require__){"use strict";eval("// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n\nvar $export = __webpack_require__(0);\nvar toLength = __webpack_require__(12);\nvar context = __webpack_require__(115);\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(116)(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjc1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmVuZHMtd2l0aC5qcz82MzU0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIxLjEuMy42IFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGgoc2VhcmNoU3RyaW5nIFssIGVuZFBvc2l0aW9uXSlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjb250ZXh0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWNvbnRleHQnKTtcbnZhciBFTkRTX1dJVEggPSAnZW5kc1dpdGgnO1xudmFyICRlbmRzV2l0aCA9ICcnW0VORFNfV0lUSF07XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMtaXMtcmVnZXhwJykoRU5EU19XSVRIKSwgJ1N0cmluZycsIHtcbiAgZW5kc1dpdGg6IGZ1bmN0aW9uIGVuZHNXaXRoKHNlYXJjaFN0cmluZyAvKiAsIGVuZFBvc2l0aW9uID0gQGxlbmd0aCAqLykge1xuICAgIHZhciB0aGF0ID0gY29udGV4dCh0aGlzLCBzZWFyY2hTdHJpbmcsIEVORFNfV0lUSCk7XG4gICAgdmFyIGVuZFBvc2l0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIGxlbiA9IHRvTGVuZ3RoKHRoYXQubGVuZ3RoKTtcbiAgICB2YXIgZW5kID0gZW5kUG9zaXRpb24gPT09IHVuZGVmaW5lZCA/IGxlbiA6IE1hdGgubWluKHRvTGVuZ3RoKGVuZFBvc2l0aW9uKSwgbGVuKTtcbiAgICB2YXIgc2VhcmNoID0gU3RyaW5nKHNlYXJjaFN0cmluZyk7XG4gICAgcmV0dXJuICRlbmRzV2l0aFxuICAgICAgPyAkZW5kc1dpdGguY2FsbCh0aGF0LCBzZWFyY2gsIGVuZClcbiAgICAgIDogdGhhdC5zbGljZShlbmQgLSBzZWFyY2gubGVuZ3RoLCBlbmQpID09PSBzZWFyY2g7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuZW5kcy13aXRoLmpzXG4vLyBtb2R1bGUgaWQgPSAyNzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///275\n")},function(module,exports,__webpack_require__){"use strict";eval("// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(0);\nvar context = __webpack_require__(115);\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(116)(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjc2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmluY2x1ZGVzLmpzPzFhMWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjEuMS4zLjcgU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyhzZWFyY2hTdHJpbmcsIHBvc2l0aW9uID0gMClcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29udGV4dCA9IHJlcXVpcmUoJy4vX3N0cmluZy1jb250ZXh0Jyk7XG52YXIgSU5DTFVERVMgPSAnaW5jbHVkZXMnO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzLWlzLXJlZ2V4cCcpKElOQ0xVREVTKSwgJ1N0cmluZycsIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaFN0cmluZyAvKiAsIHBvc2l0aW9uID0gMCAqLykge1xuICAgIHJldHVybiAhIX5jb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgSU5DTFVERVMpXG4gICAgICAuaW5kZXhPZihzZWFyY2hTdHJpbmcsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5pbmNsdWRlcy5qc1xuLy8gbW9kdWxlIGlkID0gMjc2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///276\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: __webpack_require__(109)\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjc3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnJlcGVhdC5qcz9iNmE0Il0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjMuMTMgU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQoY291bnQpXG4gIHJlcGVhdDogcmVxdWlyZSgnLi9fc3RyaW5nLXJlcGVhdCcpXG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnJlcGVhdC5qc1xuLy8gbW9kdWxlIGlkID0gMjc3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///277\n")},function(module,exports,__webpack_require__){"use strict";eval("// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n\nvar $export = __webpack_require__(0);\nvar toLength = __webpack_require__(12);\nvar context = __webpack_require__(115);\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(116)(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjc4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0YXJ0cy13aXRoLmpzPzBhZjUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjEuMS4zLjE4IFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcgWywgcG9zaXRpb24gXSlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjb250ZXh0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWNvbnRleHQnKTtcbnZhciBTVEFSVFNfV0lUSCA9ICdzdGFydHNXaXRoJztcbnZhciAkc3RhcnRzV2l0aCA9ICcnW1NUQVJUU19XSVRIXTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscy1pcy1yZWdleHAnKShTVEFSVFNfV0lUSCksICdTdHJpbmcnLCB7XG4gIHN0YXJ0c1dpdGg6IGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nIC8qICwgcG9zaXRpb24gPSAwICovKSB7XG4gICAgdmFyIHRoYXQgPSBjb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgU1RBUlRTX1dJVEgpO1xuICAgIHZhciBpbmRleCA9IHRvTGVuZ3RoKE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCB0aGF0Lmxlbmd0aCkpO1xuICAgIHZhciBzZWFyY2ggPSBTdHJpbmcoc2VhcmNoU3RyaW5nKTtcbiAgICByZXR1cm4gJHN0YXJ0c1dpdGhcbiAgICAgID8gJHN0YXJ0c1dpdGguY2FsbCh0aGF0LCBzZWFyY2gsIGluZGV4KVxuICAgICAgOiB0aGF0LnNsaWNlKGluZGV4LCBpbmRleCArIHNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuc3RhcnRzLXdpdGguanNcbi8vIG1vZHVsZSBpZCA9IDI3OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///278\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.2 String.prototype.anchor(name)\n__webpack_require__(20)('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjc5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmFuY2hvci5qcz9mMGRhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjIgU3RyaW5nLnByb3RvdHlwZS5hbmNob3IobmFtZSlcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2FuY2hvcicsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBhbmNob3IobmFtZSkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdhJywgJ25hbWUnLCBuYW1lKTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuYW5jaG9yLmpzXG4vLyBtb2R1bGUgaWQgPSAyNzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///279\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.3 String.prototype.big()\n__webpack_require__(20)('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjgwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJpZy5qcz80NzhhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjMgU3RyaW5nLnByb3RvdHlwZS5iaWcoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnYmlnJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGJpZygpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYmlnJywgJycsICcnKTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuYmlnLmpzXG4vLyBtb2R1bGUgaWQgPSAyODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///280\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.4 String.prototype.blink()\n__webpack_require__(20)('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjgxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJsaW5rLmpzP2UxMTkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuNCBTdHJpbmcucHJvdG90eXBlLmJsaW5rKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2JsaW5rJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGJsaW5rKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdibGluaycsICcnLCAnJyk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJsaW5rLmpzXG4vLyBtb2R1bGUgaWQgPSAyODFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///281\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.5 String.prototype.bold()\n__webpack_require__(20)('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjgyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJvbGQuanM/ODhjZCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy41IFN0cmluZy5wcm90b3R5cGUuYm9sZCgpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdib2xkJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGJvbGQoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2InLCAnJywgJycpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5ib2xkLmpzXG4vLyBtb2R1bGUgaWQgPSAyODJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///282\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.6 String.prototype.fixed()\n__webpack_require__(20)('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjgzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZpeGVkLmpzPzI3ZTgiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuNiBTdHJpbmcucHJvdG90eXBlLmZpeGVkKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2ZpeGVkJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZpeGVkKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICd0dCcsICcnLCAnJyk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZpeGVkLmpzXG4vLyBtb2R1bGUgaWQgPSAyODNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///283\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.7 String.prototype.fontcolor(color)\n__webpack_require__(20)('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRjb2xvci5qcz9mMzZhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjcgU3RyaW5nLnByb3RvdHlwZS5mb250Y29sb3IoY29sb3IpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdmb250Y29sb3InLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gZm9udGNvbG9yKGNvbG9yKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2ZvbnQnLCAnY29sb3InLCBjb2xvcik7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRjb2xvci5qc1xuLy8gbW9kdWxlIGlkID0gMjg0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///284\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.8 String.prototype.fontsize(size)\n__webpack_require__(20)('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRzaXplLmpzPzVmZjEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuOCBTdHJpbmcucHJvdG90eXBlLmZvbnRzaXplKHNpemUpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdmb250c2l6ZScsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmb250c2l6ZShzaXplKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2ZvbnQnLCAnc2l6ZScsIHNpemUpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5mb250c2l6ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjg1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///285\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.9 String.prototype.italics()\n__webpack_require__(20)('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLml0YWxpY3MuanM/Nzk1MiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy45IFN0cmluZy5wcm90b3R5cGUuaXRhbGljcygpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdpdGFsaWNzJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGl0YWxpY3MoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2knLCAnJywgJycpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5pdGFsaWNzLmpzXG4vLyBtb2R1bGUgaWQgPSAyODZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///286\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.10 String.prototype.link(url)\n__webpack_require__(20)('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmxpbmsuanM/NTA5OCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy4xMCBTdHJpbmcucHJvdG90eXBlLmxpbmsodXJsKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnbGluaycsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBsaW5rKHVybCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdhJywgJ2hyZWYnLCB1cmwpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5saW5rLmpzXG4vLyBtb2R1bGUgaWQgPSAyODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///287\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.11 String.prototype.small()\n__webpack_require__(20)('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnNtYWxsLmpzPzQ5NGYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTEgU3RyaW5nLnByb3RvdHlwZS5zbWFsbCgpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdzbWFsbCcsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzbWFsbCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc21hbGwnLCAnJywgJycpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5zbWFsbC5qc1xuLy8gbW9kdWxlIGlkID0gMjg4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///288\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.12 String.prototype.strike()\n__webpack_require__(20)('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0cmlrZS5qcz9lNjJjIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjEyIFN0cmluZy5wcm90b3R5cGUuc3RyaWtlKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ3N0cmlrZScsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzdHJpa2UoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ3N0cmlrZScsICcnLCAnJyk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0cmlrZS5qc1xuLy8gbW9kdWxlIGlkID0gMjg5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///289\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.13 String.prototype.sub()\n__webpack_require__(20)('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1Yi5qcz8xMTZhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjEzIFN0cmluZy5wcm90b3R5cGUuc3ViKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ3N1YicsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzdWIoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ3N1YicsICcnLCAnJyk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1Yi5qc1xuLy8gbW9kdWxlIGlkID0gMjkwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///290\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.14 String.prototype.sup()\n__webpack_require__(20)('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1cC5qcz8yNzZhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjE0IFN0cmluZy5wcm90b3R5cGUuc3VwKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ3N1cCcsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzdXAoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ3N1cCcsICcnLCAnJyk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1cC5qc1xuLy8gbW9kdWxlIGlkID0gMjkxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///291\n")},function(module,exports,__webpack_require__){eval("// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS5ub3cuanM/NDFhMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4zLjMuMSAvIDE1LjkuNC40IERhdGUubm93KClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnRGF0ZScsIHsgbm93OiBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTsgfSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS5ub3cuanNcbi8vIG1vZHVsZSBpZCA9IDI5MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///292\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar toObject = __webpack_require__(15);\nvar toPrimitive = __webpack_require__(31);\n\n$export($export.P + $export.F * __webpack_require__(5)(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1qc29uLmpzP2YxZjgiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgRGF0ZShOYU4pLnRvSlNPTigpICE9PSBudWxsXG4gICAgfHwgRGF0ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoeyB0b0lTT1N0cmluZzogZnVuY3Rpb24gKCkgeyByZXR1cm4gMTsgfSB9KSAhPT0gMTtcbn0pLCAnRGF0ZScsIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIHRvSlNPTjogZnVuY3Rpb24gdG9KU09OKGtleSkge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIHB2ID0gdG9QcmltaXRpdmUoTyk7XG4gICAgcmV0dXJuIHR5cGVvZiBwdiA9PSAnbnVtYmVyJyAmJiAhaXNGaW5pdGUocHYpID8gbnVsbCA6IE8udG9JU09TdHJpbmcoKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmRhdGUudG8tanNvbi5qc1xuLy8gbW9kdWxlIGlkID0gMjkzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///293\n")},function(module,exports,__webpack_require__){eval("// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = __webpack_require__(0);\nvar toISOString = __webpack_require__(295);\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1pc28tc3RyaW5nLmpzPzUxYjUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMy40LjM2IC8gMTUuOS41LjQzIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JU09TdHJpbmcgPSByZXF1aXJlKCcuL19kYXRlLXRvLWlzby1zdHJpbmcnKTtcblxuLy8gUGhhbnRvbUpTIC8gb2xkIFdlYktpdCBoYXMgYSBicm9rZW4gaW1wbGVtZW50YXRpb25zXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyAhPT0gdG9JU09TdHJpbmcpLCAnRGF0ZScsIHtcbiAgdG9JU09TdHJpbmc6IHRvSVNPU3RyaW5nXG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1pc28tc3RyaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAyOTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///294\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = __webpack_require__(5);\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGF0ZS10by1pc28tc3RyaW5nLmpzPzYzYjQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gMjAuMy40LjM2IC8gMTUuOS41LjQzIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKClcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgZ2V0VGltZSA9IERhdGUucHJvdG90eXBlLmdldFRpbWU7XG52YXIgJHRvSVNPU3RyaW5nID0gRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc7XG5cbnZhciBseiA9IGZ1bmN0aW9uIChudW0pIHtcbiAgcmV0dXJuIG51bSA+IDkgPyBudW0gOiAnMCcgKyBudW07XG59O1xuXG4vLyBQaGFudG9tSlMgLyBvbGQgV2ViS2l0IGhhcyBhIGJyb2tlbiBpbXBsZW1lbnRhdGlvbnNcbm1vZHVsZS5leHBvcnRzID0gKGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICR0b0lTT1N0cmluZy5jYWxsKG5ldyBEYXRlKC01ZTEzIC0gMSkpICE9ICcwMzg1LTA3LTI1VDA3OjA2OjM5Ljk5OVonO1xufSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgJHRvSVNPU3RyaW5nLmNhbGwobmV3IERhdGUoTmFOKSk7XG59KSkgPyBmdW5jdGlvbiB0b0lTT1N0cmluZygpIHtcbiAgaWYgKCFpc0Zpbml0ZShnZXRUaW1lLmNhbGwodGhpcykpKSB0aHJvdyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgdmFyIGQgPSB0aGlzO1xuICB2YXIgeSA9IGQuZ2V0VVRDRnVsbFllYXIoKTtcbiAgdmFyIG0gPSBkLmdldFVUQ01pbGxpc2Vjb25kcygpO1xuICB2YXIgcyA9IHkgPCAwID8gJy0nIDogeSA+IDk5OTkgPyAnKycgOiAnJztcbiAgcmV0dXJuIHMgKyAoJzAwMDAwJyArIE1hdGguYWJzKHkpKS5zbGljZShzID8gLTYgOiAtNCkgK1xuICAgICctJyArIGx6KGQuZ2V0VVRDTW9udGgoKSArIDEpICsgJy0nICsgbHooZC5nZXRVVENEYXRlKCkpICtcbiAgICAnVCcgKyBseihkLmdldFVUQ0hvdXJzKCkpICsgJzonICsgbHooZC5nZXRVVENNaW51dGVzKCkpICtcbiAgICAnOicgKyBseihkLmdldFVUQ1NlY29uZHMoKSkgKyAnLicgKyAobSA+IDk5ID8gbSA6ICcwJyArIGx6KG0pKSArICdaJztcbn0gOiAkdG9JU09TdHJpbmc7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RhdGUtdG8taXNvLXN0cmluZy5qc1xuLy8gbW9kdWxlIGlkID0gMjk1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///295\n")},function(module,exports,__webpack_require__){eval("var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n __webpack_require__(19)(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1zdHJpbmcuanM/NDY0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgRGF0ZVByb3RvID0gRGF0ZS5wcm90b3R5cGU7XG52YXIgSU5WQUxJRF9EQVRFID0gJ0ludmFsaWQgRGF0ZSc7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciAkdG9TdHJpbmcgPSBEYXRlUHJvdG9bVE9fU1RSSU5HXTtcbnZhciBnZXRUaW1lID0gRGF0ZVByb3RvLmdldFRpbWU7XG5pZiAobmV3IERhdGUoTmFOKSArICcnICE9IElOVkFMSURfREFURSkge1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKERhdGVQcm90bywgVE9fU1RSSU5HLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICB2YXIgdmFsdWUgPSBnZXRUaW1lLmNhbGwodGhpcyk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyAkdG9TdHJpbmcuY2FsbCh0aGlzKSA6IElOVkFMSURfREFURTtcbiAgfSk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmRhdGUudG8tc3RyaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAyOTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///296\n")},function(module,exports,__webpack_require__){eval("var TO_PRIMITIVE = __webpack_require__(8)('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) __webpack_require__(18)(proto, TO_PRIMITIVE, __webpack_require__(298));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1wcmltaXRpdmUuanM/ZTEwZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgVE9fUFJJTUlUSVZFID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvUHJpbWl0aXZlJyk7XG52YXIgcHJvdG8gPSBEYXRlLnByb3RvdHlwZTtcblxuaWYgKCEoVE9fUFJJTUlUSVZFIGluIHByb3RvKSkgcmVxdWlyZSgnLi9faGlkZScpKHByb3RvLCBUT19QUklNSVRJVkUsIHJlcXVpcmUoJy4vX2RhdGUtdG8tcHJpbWl0aXZlJykpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5kYXRlLnRvLXByaW1pdGl2ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjk3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///297\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar anObject = __webpack_require__(3);\nvar toPrimitive = __webpack_require__(31);\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGF0ZS10by1wcmltaXRpdmUuanM/OGMxZCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIE5VTUJFUiA9ICdudW1iZXInO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChoaW50KSB7XG4gIGlmIChoaW50ICE9PSAnc3RyaW5nJyAmJiBoaW50ICE9PSBOVU1CRVIgJiYgaGludCAhPT0gJ2RlZmF1bHQnKSB0aHJvdyBUeXBlRXJyb3IoJ0luY29ycmVjdCBoaW50Jyk7XG4gIHJldHVybiB0b1ByaW1pdGl2ZShhbk9iamVjdCh0aGlzKSwgaGludCAhPSBOVU1CRVIpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGF0ZS10by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDI5OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///298\n")},function(module,exports,__webpack_require__){eval("// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Array', { isArray: __webpack_require__(82) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaXMtYXJyYXkuanM/MjBjNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMi4xLjIuMiAvIDE1LjQuMy4yIEFycmF5LmlzQXJyYXkoYXJnKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdBcnJheScsIHsgaXNBcnJheTogcmVxdWlyZSgnLi9faXMtYXJyYXknKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaXMtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDI5OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///299\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar ctx = __webpack_require__(27);\nvar $export = __webpack_require__(0);\nvar toObject = __webpack_require__(15);\nvar call = __webpack_require__(162);\nvar isArrayIter = __webpack_require__(117);\nvar toLength = __webpack_require__(12);\nvar createProperty = __webpack_require__(118);\nvar getIterFn = __webpack_require__(119);\n\n$export($export.S + $export.F * !__webpack_require__(84)(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZnJvbS5qcz82ZGUxIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2NyZWF0ZS1wcm9wZXJ0eScpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0JykoZnVuY3Rpb24gKGl0ZXIpIHsgQXJyYXkuZnJvbShpdGVyKTsgfSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdChhcnJheUxpa2UpO1xuICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBBcnJheTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIG1hcGZuID0gYUxlbiA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGl0ZXJGbiA9IGdldEl0ZXJGbihPKTtcbiAgICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmIChtYXBwaW5nKSBtYXBmbiA9IGN0eChtYXBmbiwgYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQsIDIpO1xuICAgIC8vIGlmIG9iamVjdCBpc24ndCBpdGVyYWJsZSBvciBpdCdzIGFycmF5IHdpdGggZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBzaW1wbGUgY2FzZVxuICAgIGlmIChpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSkge1xuICAgICAgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKE8pLCByZXN1bHQgPSBuZXcgQygpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IGNhbGwoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgICBmb3IgKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQubGVuZ3RoID0gaW5kZXg7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZyb20uanNcbi8vIG1vZHVsZSBpZCA9IDMwMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///300\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar createProperty = __webpack_require__(118);\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * __webpack_require__(5)(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkub2YuanM/YzRjYSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fY3JlYXRlLXByb3BlcnR5Jyk7XG5cbi8vIFdlYktpdCBBcnJheS5vZiBpc24ndCBnZW5lcmljXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGKCkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiAhKEFycmF5Lm9mLmNhbGwoRikgaW5zdGFuY2VvZiBGKTtcbn0pLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMi4zIEFycmF5Lm9mKCAuLi5pdGVtcylcbiAgb2Y6IGZ1bmN0aW9uIG9mKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgcmVzdWx0ID0gbmV3ICh0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nID8gdGhpcyA6IEFycmF5KShhTGVuKTtcbiAgICB3aGlsZSAoYUxlbiA+IGluZGV4KSBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHJlc3VsdC5sZW5ndGggPSBhTGVuO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5vZi5qc1xuLy8gbW9kdWxlIGlkID0gMzAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///301\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = __webpack_require__(0);\nvar toIObject = __webpack_require__(24);\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (__webpack_require__(70) != Object || !__webpack_require__(29)(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuam9pbi5qcz84ZjhkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUuam9pbihzZXBhcmF0b3IpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUpvaW4gPSBbXS5qb2luO1xuXG4vLyBmYWxsYmFjayBmb3Igbm90IGFycmF5LWxpa2Ugc3RyaW5nc1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAocmVxdWlyZSgnLi9faW9iamVjdCcpICE9IE9iamVjdCB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKGFycmF5Sm9pbikpLCAnQXJyYXknLCB7XG4gIGpvaW46IGZ1bmN0aW9uIGpvaW4oc2VwYXJhdG9yKSB7XG4gICAgcmV0dXJuIGFycmF5Sm9pbi5jYWxsKHRvSU9iamVjdCh0aGlzKSwgc2VwYXJhdG9yID09PSB1bmRlZmluZWQgPyAnLCcgOiBzZXBhcmF0b3IpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuam9pbi5qc1xuLy8gbW9kdWxlIGlkID0gMzAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///302\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar html = __webpack_require__(105);\nvar cof = __webpack_require__(28);\nvar toAbsoluteIndex = __webpack_require__(51);\nvar toLength = __webpack_require__(12);\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * __webpack_require__(5)(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc2xpY2UuanM/ZjM1NyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuL19odG1sJyk7XG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFycmF5U2xpY2UgPSBbXS5zbGljZTtcblxuLy8gZmFsbGJhY2sgZm9yIG5vdCBhcnJheS1saWtlIEVTMyBzdHJpbmdzIGFuZCBET00gb2JqZWN0c1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgaWYgKGh0bWwpIGFycmF5U2xpY2UuY2FsbChodG1sKTtcbn0pLCAnQXJyYXknLCB7XG4gIHNsaWNlOiBmdW5jdGlvbiBzbGljZShiZWdpbiwgZW5kKSB7XG4gICAgdmFyIGxlbiA9IHRvTGVuZ3RoKHRoaXMubGVuZ3RoKTtcbiAgICB2YXIga2xhc3MgPSBjb2YodGhpcyk7XG4gICAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiBlbmQ7XG4gICAgaWYgKGtsYXNzID09ICdBcnJheScpIHJldHVybiBhcnJheVNsaWNlLmNhbGwodGhpcywgYmVnaW4sIGVuZCk7XG4gICAgdmFyIHN0YXJ0ID0gdG9BYnNvbHV0ZUluZGV4KGJlZ2luLCBsZW4pO1xuICAgIHZhciB1cFRvID0gdG9BYnNvbHV0ZUluZGV4KGVuZCwgbGVuKTtcbiAgICB2YXIgc2l6ZSA9IHRvTGVuZ3RoKHVwVG8gLSBzdGFydCk7XG4gICAgdmFyIGNsb25lZCA9IG5ldyBBcnJheShzaXplKTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yICg7IGkgPCBzaXplOyBpKyspIGNsb25lZFtpXSA9IGtsYXNzID09ICdTdHJpbmcnXG4gICAgICA/IHRoaXMuY2hhckF0KHN0YXJ0ICsgaSlcbiAgICAgIDogdGhpc1tzdGFydCArIGldO1xuICAgIHJldHVybiBjbG9uZWQ7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5zbGljZS5qc1xuLy8gbW9kdWxlIGlkID0gMzAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///303\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar aFunction = __webpack_require__(16);\nvar toObject = __webpack_require__(15);\nvar fails = __webpack_require__(5);\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !__webpack_require__(29)($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29ydC5qcz9iODM2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyICRzb3J0ID0gW10uc29ydDtcbnZhciB0ZXN0ID0gWzEsIDIsIDNdO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIElFOC1cbiAgdGVzdC5zb3J0KHVuZGVmaW5lZCk7XG59KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBWOCBidWdcbiAgdGVzdC5zb3J0KG51bGwpO1xuICAvLyBPbGQgV2ViS2l0XG59KSB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKCRzb3J0KSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjI1IEFycmF5LnByb3RvdHlwZS5zb3J0KGNvbXBhcmVmbilcbiAgc29ydDogZnVuY3Rpb24gc29ydChjb21wYXJlZm4pIHtcbiAgICByZXR1cm4gY29tcGFyZWZuID09PSB1bmRlZmluZWRcbiAgICAgID8gJHNvcnQuY2FsbCh0b09iamVjdCh0aGlzKSlcbiAgICAgIDogJHNvcnQuY2FsbCh0b09iamVjdCh0aGlzKSwgYUZ1bmN0aW9uKGNvbXBhcmVmbikpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29ydC5qc1xuLy8gbW9kdWxlIGlkID0gMzA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///304\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $forEach = __webpack_require__(35)(0);\nvar STRICT = __webpack_require__(29)([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZm9yLWVhY2guanM/MDg0MyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRmb3JFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDApO1xudmFyIFNUUklDVCA9IHJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5mb3JFYWNoLCB0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhU1RSSUNULCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xMCAvIDE1LjQuNC4xOCBBcnJheS5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuIFssIHRoaXNBcmddKVxuICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRmb3JFYWNoKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5mb3ItZWFjaC5qc1xuLy8gbW9kdWxlIGlkID0gMzA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///305\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nvar isArray = __webpack_require__(82);\nvar SPECIES = __webpack_require__(8)('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktc3BlY2llcy1jb25zdHJ1Y3Rvci5qcz82ZThhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL19pcy1hcnJheScpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbCkge1xuICB2YXIgQztcbiAgaWYgKGlzQXJyYXkob3JpZ2luYWwpKSB7XG4gICAgQyA9IG9yaWdpbmFsLmNvbnN0cnVjdG9yO1xuICAgIC8vIGNyb3NzLXJlYWxtIGZhbGxiYWNrXG4gICAgaWYgKHR5cGVvZiBDID09ICdmdW5jdGlvbicgJiYgKEMgPT09IEFycmF5IHx8IGlzQXJyYXkoQy5wcm90b3R5cGUpKSkgQyA9IHVuZGVmaW5lZDtcbiAgICBpZiAoaXNPYmplY3QoQykpIHtcbiAgICAgIEMgPSBDW1NQRUNJRVNdO1xuICAgICAgaWYgKEMgPT09IG51bGwpIEMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IHJldHVybiBDID09PSB1bmRlZmluZWQgPyBBcnJheSA6IEM7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSAzMDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///306\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $map = __webpack_require__(35)(1);\n\n$export($export.P + $export.F * !__webpack_require__(29)([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkubWFwLmpzP2MzYTUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkbWFwID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDEpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10ubWFwLCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTUgLyAxNS40LjQuMTkgQXJyYXkucHJvdG90eXBlLm1hcChjYWxsYmFja2ZuIFssIHRoaXNBcmddKVxuICBtYXA6IGZ1bmN0aW9uIG1hcChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkbWFwKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5tYXAuanNcbi8vIG1vZHVsZSBpZCA9IDMwN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///307\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $filter = __webpack_require__(35)(2);\n\n$export($export.P + $export.F * !__webpack_require__(29)([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmlsdGVyLmpzPzdjZTciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDIpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10uZmlsdGVyLCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuNyAvIDE1LjQuNC4yMCBBcnJheS5wcm90b3R5cGUuZmlsdGVyKGNhbGxiYWNrZm4gWywgdGhpc0FyZ10pXG4gIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRmaWx0ZXIodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZpbHRlci5qc1xuLy8gbW9kdWxlIGlkID0gMzA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///308\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $some = __webpack_require__(35)(3);\n\n$export($export.P + $export.F * !__webpack_require__(29)([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29tZS5qcz9jMTU3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHNvbWUgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5zb21lLCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMjMgLyAxNS40LjQuMTcgQXJyYXkucHJvdG90eXBlLnNvbWUoY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgc29tZTogZnVuY3Rpb24gc29tZShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkc29tZSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29tZS5qc1xuLy8gbW9kdWxlIGlkID0gMzA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///309\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $every = __webpack_require__(35)(4);\n\n$export($export.P + $export.F * !__webpack_require__(29)([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZXZlcnkuanM/MzY0YSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRldmVyeSA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSg0KTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLmV2ZXJ5LCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuNSAvIDE1LjQuNC4xNiBBcnJheS5wcm90b3R5cGUuZXZlcnkoY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgZXZlcnk6IGZ1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRldmVyeSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZXZlcnkuanNcbi8vIG1vZHVsZSBpZCA9IDMxMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///310\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $reduce = __webpack_require__(163);\n\n$export($export.P + $export.F * !__webpack_require__(29)([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlLmpzP2MyNzQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXktcmVkdWNlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5yZWR1Y2UsIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xOCAvIDE1LjQuNC4yMSBBcnJheS5wcm90b3R5cGUucmVkdWNlKGNhbGxiYWNrZm4gWywgaW5pdGlhbFZhbHVlXSlcbiAgcmVkdWNlOiBmdW5jdGlvbiByZWR1Y2UoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykge1xuICAgIHJldHVybiAkcmVkdWNlKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3VtZW50c1sxXSwgZmFsc2UpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlLmpzXG4vLyBtb2R1bGUgaWQgPSAzMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///311\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $reduce = __webpack_require__(163);\n\n$export($export.P + $export.F * !__webpack_require__(29)([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlLXJpZ2h0LmpzPzk2NDQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXktcmVkdWNlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5yZWR1Y2VSaWdodCwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjE5IC8gMTUuNC40LjIyIEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodChjYWxsYmFja2ZuIFssIGluaXRpYWxWYWx1ZV0pXG4gIHJlZHVjZVJpZ2h0OiBmdW5jdGlvbiByZWR1Y2VSaWdodChjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gICAgcmV0dXJuICRyZWR1Y2UodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCwgYXJndW1lbnRzWzFdLCB0cnVlKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LnJlZHVjZS1yaWdodC5qc1xuLy8gbW9kdWxlIGlkID0gMzEyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///312\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $indexOf = __webpack_require__(80)(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(29)($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaW5kZXgtb2YuanM/ZjgyMyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRpbmRleE9mID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKShmYWxzZSk7XG52YXIgJG5hdGl2ZSA9IFtdLmluZGV4T2Y7XG52YXIgTkVHQVRJVkVfWkVSTyA9ICEhJG5hdGl2ZSAmJiAxIC8gWzFdLmluZGV4T2YoMSwgLTApIDwgMDtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoTkVHQVRJVkVfWkVSTyB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKCRuYXRpdmUpKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTEgLyAxNS40LjQuMTQgQXJyYXkucHJvdG90eXBlLmluZGV4T2Yoc2VhcmNoRWxlbWVudCBbLCBmcm9tSW5kZXhdKVxuICBpbmRleE9mOiBmdW5jdGlvbiBpbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggPSAwICovKSB7XG4gICAgcmV0dXJuIE5FR0FUSVZFX1pFUk9cbiAgICAgIC8vIGNvbnZlcnQgLTAgdG8gKzBcbiAgICAgID8gJG5hdGl2ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IDBcbiAgICAgIDogJGluZGV4T2YodGhpcywgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmluZGV4LW9mLmpzXG4vLyBtb2R1bGUgaWQgPSAzMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///313\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar toIObject = __webpack_require__(24);\nvar toInteger = __webpack_require__(33);\nvar toLength = __webpack_require__(12);\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(29)($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkubGFzdC1pbmRleC1vZi5qcz9hMDcyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyICRuYXRpdmUgPSBbXS5sYXN0SW5kZXhPZjtcbnZhciBORUdBVElWRV9aRVJPID0gISEkbmF0aXZlICYmIDEgLyBbMV0ubGFzdEluZGV4T2YoMSwgLTApIDwgMDtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoTkVHQVRJVkVfWkVSTyB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKCRuYXRpdmUpKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTQgLyAxNS40LjQuMTUgQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgWywgZnJvbUluZGV4XSlcbiAgbGFzdEluZGV4T2Y6IGZ1bmN0aW9uIGxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggPSBAWyotMV0gKi8pIHtcbiAgICAvLyBjb252ZXJ0IC0wIHRvICswXG4gICAgaWYgKE5FR0FUSVZFX1pFUk8pIHJldHVybiAkbmF0aXZlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgMDtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCh0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IGxlbmd0aCAtIDE7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSBpbmRleCA9IE1hdGgubWluKGluZGV4LCB0b0ludGVnZXIoYXJndW1lbnRzWzFdKSk7XG4gICAgaWYgKGluZGV4IDwgMCkgaW5kZXggPSBsZW5ndGggKyBpbmRleDtcbiAgICBmb3IgKDtpbmRleCA+PSAwOyBpbmRleC0tKSBpZiAoaW5kZXggaW4gTykgaWYgKE9baW5kZXhdID09PSBzZWFyY2hFbGVtZW50KSByZXR1cm4gaW5kZXggfHwgMDtcbiAgICByZXR1cm4gLTE7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5sYXN0LWluZGV4LW9mLmpzXG4vLyBtb2R1bGUgaWQgPSAzMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///314\n")},function(module,exports,__webpack_require__){eval("// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = __webpack_require__(0);\n\n$export($export.P, 'Array', { copyWithin: __webpack_require__(164) });\n\n__webpack_require__(43)('copyWithin');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuY29weS13aXRoaW4uanM/ZjZmNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMi4xLjMuMyBBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0LCBlbmQgPSB0aGlzLmxlbmd0aClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7IGNvcHlXaXRoaW46IHJlcXVpcmUoJy4vX2FycmF5LWNvcHktd2l0aGluJykgfSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdjb3B5V2l0aGluJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmNvcHktd2l0aGluLmpzXG4vLyBtb2R1bGUgaWQgPSAzMTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///315\n")},function(module,exports,__webpack_require__){eval("// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = __webpack_require__(0);\n\n$export($export.P, 'Array', { fill: __webpack_require__(121) });\n\n__webpack_require__(43)('fill');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmlsbC5qcz8zNjhlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIyLjEuMy42IEFycmF5LnByb3RvdHlwZS5maWxsKHZhbHVlLCBzdGFydCA9IDAsIGVuZCA9IHRoaXMubGVuZ3RoKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdBcnJheScsIHsgZmlsbDogcmVxdWlyZSgnLi9fYXJyYXktZmlsbCcpIH0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnZmlsbCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5maWxsLmpzXG4vLyBtb2R1bGUgaWQgPSAzMTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///316\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = __webpack_require__(0);\nvar $find = __webpack_require__(35)(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n__webpack_require__(43)(KEY);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC5qcz81YTk0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDIyLjEuMy44IEFycmF5LnByb3RvdHlwZS5maW5kKHByZWRpY2F0ZSwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGZpbmQgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoNSk7XG52YXIgS0VZID0gJ2ZpbmQnO1xudmFyIGZvcmNlZCA9IHRydWU7XG4vLyBTaG91bGRuJ3Qgc2tpcCBob2xlc1xuaWYgKEtFWSBpbiBbXSkgQXJyYXkoMSlbS0VZXShmdW5jdGlvbiAoKSB7IGZvcmNlZCA9IGZhbHNlOyB9KTtcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogZm9yY2VkLCAnQXJyYXknLCB7XG4gIGZpbmQ6IGZ1bmN0aW9uIGZpbmQoY2FsbGJhY2tmbiAvKiAsIHRoYXQgPSB1bmRlZmluZWQgKi8pIHtcbiAgICByZXR1cm4gJGZpbmQodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKEtFWSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZpbmQuanNcbi8vIG1vZHVsZSBpZCA9IDMxN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///317\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = __webpack_require__(0);\nvar $find = __webpack_require__(35)(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n__webpack_require__(43)(KEY);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC1pbmRleC5qcz81M2FhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDIyLjEuMy45IEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXgocHJlZGljYXRlLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZmluZCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSg2KTtcbnZhciBLRVkgPSAnZmluZEluZGV4JztcbnZhciBmb3JjZWQgPSB0cnVlO1xuLy8gU2hvdWxkbid0IHNraXAgaG9sZXNcbmlmIChLRVkgaW4gW10pIEFycmF5KDEpW0tFWV0oZnVuY3Rpb24gKCkgeyBmb3JjZWQgPSBmYWxzZTsgfSk7XG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIGZvcmNlZCwgJ0FycmF5Jywge1xuICBmaW5kSW5kZXg6IGZ1bmN0aW9uIGZpbmRJbmRleChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgIHJldHVybiAkZmluZCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xucmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJykoS0VZKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC1pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMzE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///318\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(54)('Array');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc3BlY2llcy5qcz80M2YwIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoJ0FycmF5Jyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LnNwZWNpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDMxOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///319\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar inheritIfRequired = __webpack_require__(108);\nvar dP = __webpack_require__(11).f;\nvar gOPN = __webpack_require__(53).f;\nvar isRegExp = __webpack_require__(83);\nvar $flags = __webpack_require__(85);\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (__webpack_require__(10) && (!CORRECT_NEW || __webpack_require__(5)(function () {\n re2[__webpack_require__(8)('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n __webpack_require__(19)(global, 'RegExp', $RegExp);\n}\n\n__webpack_require__(54)('RegExp');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLmNvbnN0cnVjdG9yLmpzPzk2NzYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gcmVxdWlyZSgnLi9faW5oZXJpdC1pZi1yZXF1aXJlZCcpO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG52YXIgJGZsYWdzID0gcmVxdWlyZSgnLi9fZmxhZ3MnKTtcbnZhciAkUmVnRXhwID0gZ2xvYmFsLlJlZ0V4cDtcbnZhciBCYXNlID0gJFJlZ0V4cDtcbnZhciBwcm90byA9ICRSZWdFeHAucHJvdG90eXBlO1xudmFyIHJlMSA9IC9hL2c7XG52YXIgcmUyID0gL2EvZztcbi8vIFwibmV3XCIgY3JlYXRlcyBhIG5ldyBvYmplY3QsIG9sZCB3ZWJraXQgYnVnZ3kgaGVyZVxudmFyIENPUlJFQ1RfTkVXID0gbmV3ICRSZWdFeHAocmUxKSAhPT0gcmUxO1xuXG5pZiAocmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAoIUNPUlJFQ1RfTkVXIHx8IHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZTJbcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyldID0gZmFsc2U7XG4gIC8vIFJlZ0V4cCBjb25zdHJ1Y3RvciBjYW4gYWx0ZXIgZmxhZ3MgYW5kIElzUmVnRXhwIHdvcmtzIGNvcnJlY3Qgd2l0aCBAQG1hdGNoXG4gIHJldHVybiAkUmVnRXhwKHJlMSkgIT0gcmUxIHx8ICRSZWdFeHAocmUyKSA9PSByZTIgfHwgJFJlZ0V4cChyZTEsICdpJykgIT0gJy9hL2knO1xufSkpKSB7XG4gICRSZWdFeHAgPSBmdW5jdGlvbiBSZWdFeHAocCwgZikge1xuICAgIHZhciB0aVJFID0gdGhpcyBpbnN0YW5jZW9mICRSZWdFeHA7XG4gICAgdmFyIHBpUkUgPSBpc1JlZ0V4cChwKTtcbiAgICB2YXIgZmlVID0gZiA9PT0gdW5kZWZpbmVkO1xuICAgIHJldHVybiAhdGlSRSAmJiBwaVJFICYmIHAuY29uc3RydWN0b3IgPT09ICRSZWdFeHAgJiYgZmlVID8gcFxuICAgICAgOiBpbmhlcml0SWZSZXF1aXJlZChDT1JSRUNUX05FV1xuICAgICAgICA/IG5ldyBCYXNlKHBpUkUgJiYgIWZpVSA/IHAuc291cmNlIDogcCwgZilcbiAgICAgICAgOiBCYXNlKChwaVJFID0gcCBpbnN0YW5jZW9mICRSZWdFeHApID8gcC5zb3VyY2UgOiBwLCBwaVJFICYmIGZpVSA/ICRmbGFncy5jYWxsKHApIDogZilcbiAgICAgICwgdGlSRSA/IHRoaXMgOiBwcm90bywgJFJlZ0V4cCk7XG4gIH07XG4gIHZhciBwcm94eSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICBrZXkgaW4gJFJlZ0V4cCB8fCBkUCgkUmVnRXhwLCBrZXksIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQmFzZVtrZXldOyB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAoaXQpIHsgQmFzZVtrZXldID0gaXQ7IH1cbiAgICB9KTtcbiAgfTtcbiAgZm9yICh2YXIga2V5cyA9IGdPUE4oQmFzZSksIGkgPSAwOyBrZXlzLmxlbmd0aCA+IGk7KSBwcm94eShrZXlzW2krK10pO1xuICBwcm90by5jb25zdHJ1Y3RvciA9ICRSZWdFeHA7XG4gICRSZWdFeHAucHJvdG90eXBlID0gcHJvdG87XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoZ2xvYmFsLCAnUmVnRXhwJywgJFJlZ0V4cCk7XG59XG5cbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoJ1JlZ0V4cCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuY29uc3RydWN0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDMyMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///320\n")},function(module,exports,__webpack_require__){"use strict";eval("\n__webpack_require__(166);\nvar anObject = __webpack_require__(3);\nvar $flags = __webpack_require__(85);\nvar DESCRIPTORS = __webpack_require__(10);\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n __webpack_require__(19)(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (__webpack_require__(5)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLnRvLXN0cmluZy5qcz8xNWE2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4vZXM2LnJlZ2V4cC5mbGFncycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgJGZsYWdzID0gcmVxdWlyZSgnLi9fZmxhZ3MnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciAkdG9TdHJpbmcgPSAvLi9bVE9fU1RSSU5HXTtcblxudmFyIGRlZmluZSA9IGZ1bmN0aW9uIChmbikge1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKFJlZ0V4cC5wcm90b3R5cGUsIFRPX1NUUklORywgZm4sIHRydWUpO1xufTtcblxuLy8gMjEuMi41LjE0IFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcoKVxuaWYgKHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkgeyByZXR1cm4gJHRvU3RyaW5nLmNhbGwoeyBzb3VyY2U6ICdhJywgZmxhZ3M6ICdiJyB9KSAhPSAnL2EvYic7IH0pKSB7XG4gIGRlZmluZShmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICB2YXIgUiA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHJldHVybiAnLycuY29uY2F0KFIuc291cmNlLCAnLycsXG4gICAgICAnZmxhZ3MnIGluIFIgPyBSLmZsYWdzIDogIURFU0NSSVBUT1JTICYmIFIgaW5zdGFuY2VvZiBSZWdFeHAgPyAkZmxhZ3MuY2FsbChSKSA6IHVuZGVmaW5lZCk7XG4gIH0pO1xuLy8gRkY0NC0gUmVnRXhwI3RvU3RyaW5nIGhhcyBhIHdyb25nIG5hbWVcbn0gZWxzZSBpZiAoJHRvU3RyaW5nLm5hbWUgIT0gVE9fU1RSSU5HKSB7XG4gIGRlZmluZShmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gJHRvU3RyaW5nLmNhbGwodGhpcyk7XG4gIH0pO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAudG8tc3RyaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAzMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///321\n")},function(module,exports,__webpack_require__){eval("// @@match logic\n__webpack_require__(86)('match', 1, function (defined, MATCH, $match) {\n // 21.1.3.11 String.prototype.match(regexp)\n return [function match(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n }, $match];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLm1hdGNoLmpzPzMxZjciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQEBtYXRjaCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdtYXRjaCcsIDEsIGZ1bmN0aW9uIChkZWZpbmVkLCBNQVRDSCwgJG1hdGNoKSB7XG4gIC8vIDIxLjEuMy4xMSBTdHJpbmcucHJvdG90eXBlLm1hdGNoKHJlZ2V4cClcbiAgcmV0dXJuIFtmdW5jdGlvbiBtYXRjaChyZWdleHApIHtcbiAgICAndXNlIHN0cmljdCc7XG4gICAgdmFyIE8gPSBkZWZpbmVkKHRoaXMpO1xuICAgIHZhciBmbiA9IHJlZ2V4cCA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByZWdleHBbTUFUQ0hdO1xuICAgIHJldHVybiBmbiAhPT0gdW5kZWZpbmVkID8gZm4uY2FsbChyZWdleHAsIE8pIDogbmV3IFJlZ0V4cChyZWdleHApW01BVENIXShTdHJpbmcoTykpO1xuICB9LCAkbWF0Y2hdO1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5tYXRjaC5qc1xuLy8gbW9kdWxlIGlkID0gMzIyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///322\n")},function(module,exports,__webpack_require__){eval("// @@replace logic\n__webpack_require__(86)('replace', 2, function (defined, REPLACE, $replace) {\n // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)\n return [function replace(searchValue, replaceValue) {\n 'use strict';\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n }, $replace];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLnJlcGxhY2UuanM/NTYzYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAQHJlcGxhY2UgbG9naWNcbnJlcXVpcmUoJy4vX2ZpeC1yZS13a3MnKSgncmVwbGFjZScsIDIsIGZ1bmN0aW9uIChkZWZpbmVkLCBSRVBMQUNFLCAkcmVwbGFjZSkge1xuICAvLyAyMS4xLjMuMTQgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpXG4gIHJldHVybiBbZnVuY3Rpb24gcmVwbGFjZShzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICB2YXIgZm4gPSBzZWFyY2hWYWx1ZSA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzZWFyY2hWYWx1ZVtSRVBMQUNFXTtcbiAgICByZXR1cm4gZm4gIT09IHVuZGVmaW5lZFxuICAgICAgPyBmbi5jYWxsKHNlYXJjaFZhbHVlLCBPLCByZXBsYWNlVmFsdWUpXG4gICAgICA6ICRyZXBsYWNlLmNhbGwoU3RyaW5nKE8pLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTtcbiAgfSwgJHJlcGxhY2VdO1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5yZXBsYWNlLmpzXG4vLyBtb2R1bGUgaWQgPSAzMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///323\n")},function(module,exports,__webpack_require__){eval("// @@search logic\n__webpack_require__(86)('search', 1, function (defined, SEARCH, $search) {\n // 21.1.3.15 String.prototype.search(regexp)\n return [function search(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n }, $search];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzI0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLnNlYXJjaC5qcz9hYjA0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEBAc2VhcmNoIGxvZ2ljXG5yZXF1aXJlKCcuL19maXgtcmUtd2tzJykoJ3NlYXJjaCcsIDEsIGZ1bmN0aW9uIChkZWZpbmVkLCBTRUFSQ0gsICRzZWFyY2gpIHtcbiAgLy8gMjEuMS4zLjE1IFN0cmluZy5wcm90b3R5cGUuc2VhcmNoKHJlZ2V4cClcbiAgcmV0dXJuIFtmdW5jdGlvbiBzZWFyY2gocmVnZXhwKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICB2YXIgZm4gPSByZWdleHAgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogcmVnZXhwW1NFQVJDSF07XG4gICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWQgPyBmbi5jYWxsKHJlZ2V4cCwgTykgOiBuZXcgUmVnRXhwKHJlZ2V4cClbU0VBUkNIXShTdHJpbmcoTykpO1xuICB9LCAkc2VhcmNoXTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuc2VhcmNoLmpzXG4vLyBtb2R1bGUgaWQgPSAzMjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///324\n")},function(module,exports,__webpack_require__){eval("// @@split logic\n__webpack_require__(86)('split', 2, function (defined, SPLIT, $split) {\n 'use strict';\n var isRegExp = __webpack_require__(83);\n var _split = $split;\n var $push = [].push;\n var $SPLIT = 'split';\n var LENGTH = 'length';\n var LAST_INDEX = 'lastIndex';\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n // based on es5-shim implementation, need to rework it\n $split = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return _split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var separator2, match, lastIndex, lastLength, i;\n // Doesn't need flags gy, but they don't hurt\n if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n while (match = separatorCopy.exec(string)) {\n // `separatorCopy.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0][LENGTH];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n // eslint-disable-next-line no-loop-func\n if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {\n for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;\n });\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n $split = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n };\n }\n // 21.1.3.17 String.prototype.split(separator, limit)\n return [function split(separator, limit) {\n var O = defined(this);\n var fn = separator == undefined ? undefined : separator[SPLIT];\n return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n }, $split];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzI1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLnNwbGl0LmpzPzk4OWMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQEBzcGxpdCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdzcGxpdCcsIDIsIGZ1bmN0aW9uIChkZWZpbmVkLCBTUExJVCwgJHNwbGl0KSB7XG4gICd1c2Ugc3RyaWN0JztcbiAgdmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG4gIHZhciBfc3BsaXQgPSAkc3BsaXQ7XG4gIHZhciAkcHVzaCA9IFtdLnB1c2g7XG4gIHZhciAkU1BMSVQgPSAnc3BsaXQnO1xuICB2YXIgTEVOR1RIID0gJ2xlbmd0aCc7XG4gIHZhciBMQVNUX0lOREVYID0gJ2xhc3RJbmRleCc7XG4gIGlmIChcbiAgICAnYWJiYydbJFNQTElUXSgvKGIpKi8pWzFdID09ICdjJyB8fFxuICAgICd0ZXN0J1skU1BMSVRdKC8oPzopLywgLTEpW0xFTkdUSF0gIT0gNCB8fFxuICAgICdhYidbJFNQTElUXSgvKD86YWIpKi8pW0xFTkdUSF0gIT0gMiB8fFxuICAgICcuJ1skU1BMSVRdKC8oLj8pKC4/KS8pW0xFTkdUSF0gIT0gNCB8fFxuICAgICcuJ1skU1BMSVRdKC8oKSgpLylbTEVOR1RIXSA+IDEgfHxcbiAgICAnJ1skU1BMSVRdKC8uPy8pW0xFTkdUSF1cbiAgKSB7XG4gICAgdmFyIE5QQ0cgPSAvKCk/Py8uZXhlYygnJylbMV0gPT09IHVuZGVmaW5lZDsgLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBcbiAgICAvLyBiYXNlZCBvbiBlczUtc2hpbSBpbXBsZW1lbnRhdGlvbiwgbmVlZCB0byByZXdvcmsgaXRcbiAgICAkc3BsaXQgPSBmdW5jdGlvbiAoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgdmFyIHN0cmluZyA9IFN0cmluZyh0aGlzKTtcbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCAmJiBsaW1pdCA9PT0gMCkgcmV0dXJuIFtdO1xuICAgICAgLy8gSWYgYHNlcGFyYXRvcmAgaXMgbm90IGEgcmVnZXgsIHVzZSBuYXRpdmUgc3BsaXRcbiAgICAgIGlmICghaXNSZWdFeHAoc2VwYXJhdG9yKSkgcmV0dXJuIF9zcGxpdC5jYWxsKHN0cmluZywgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICB2YXIgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyAnaScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyAnbScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci51bmljb2RlID8gJ3UnIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3Iuc3RpY2t5ID8gJ3knIDogJycpO1xuICAgICAgdmFyIGxhc3RMYXN0SW5kZXggPSAwO1xuICAgICAgdmFyIHNwbGl0TGltaXQgPSBsaW1pdCA9PT0gdW5kZWZpbmVkID8gNDI5NDk2NzI5NSA6IGxpbWl0ID4+PiAwO1xuICAgICAgLy8gTWFrZSBgZ2xvYmFsYCBhbmQgYXZvaWQgYGxhc3RJbmRleGAgaXNzdWVzIGJ5IHdvcmtpbmcgd2l0aCBhIGNvcHlcbiAgICAgIHZhciBzZXBhcmF0b3JDb3B5ID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArICdnJyk7XG4gICAgICB2YXIgc2VwYXJhdG9yMiwgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aCwgaTtcbiAgICAgIC8vIERvZXNuJ3QgbmVlZCBmbGFncyBneSwgYnV0IHRoZXkgZG9uJ3QgaHVydFxuICAgICAgaWYgKCFOUENHKSBzZXBhcmF0b3IyID0gbmV3IFJlZ0V4cCgnXicgKyBzZXBhcmF0b3JDb3B5LnNvdXJjZSArICckKD8hXFxcXHMpJywgZmxhZ3MpO1xuICAgICAgd2hpbGUgKG1hdGNoID0gc2VwYXJhdG9yQ29weS5leGVjKHN0cmluZykpIHtcbiAgICAgICAgLy8gYHNlcGFyYXRvckNvcHkubGFzdEluZGV4YCBpcyBub3QgcmVsaWFibGUgY3Jvc3MtYnJvd3NlclxuICAgICAgICBsYXN0SW5kZXggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdW0xFTkdUSF07XG4gICAgICAgIGlmIChsYXN0SW5kZXggPiBsYXN0TGFzdEluZGV4KSB7XG4gICAgICAgICAgb3V0cHV0LnB1c2goc3RyaW5nLnNsaWNlKGxhc3RMYXN0SW5kZXgsIG1hdGNoLmluZGV4KSk7XG4gICAgICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGAgZm9yIE5QQ0dcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbG9vcC1mdW5jXG4gICAgICAgICAgaWYgKCFOUENHICYmIG1hdGNoW0xFTkdUSF0gPiAxKSBtYXRjaFswXS5yZXBsYWNlKHNlcGFyYXRvcjIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBhcmd1bWVudHNbTEVOR1RIXSAtIDI7IGkrKykgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWZpbmVkKSBtYXRjaFtpXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAobWF0Y2hbTEVOR1RIXSA+IDEgJiYgbWF0Y2guaW5kZXggPCBzdHJpbmdbTEVOR1RIXSkgJHB1c2guYXBwbHkob3V0cHV0LCBtYXRjaC5zbGljZSgxKSk7XG4gICAgICAgICAgbGFzdExlbmd0aCA9IG1hdGNoWzBdW0xFTkdUSF07XG4gICAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgICBpZiAob3V0cHV0W0xFTkdUSF0gPj0gc3BsaXRMaW1pdCkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlcGFyYXRvckNvcHlbTEFTVF9JTkRFWF0gPT09IG1hdGNoLmluZGV4KSBzZXBhcmF0b3JDb3B5W0xBU1RfSU5ERVhdKys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICAgIGlmIChsYXN0TGFzdEluZGV4ID09PSBzdHJpbmdbTEVOR1RIXSkge1xuICAgICAgICBpZiAobGFzdExlbmd0aCB8fCAhc2VwYXJhdG9yQ29weS50ZXN0KCcnKSkgb3V0cHV0LnB1c2goJycpO1xuICAgICAgfSBlbHNlIG91dHB1dC5wdXNoKHN0cmluZy5zbGljZShsYXN0TGFzdEluZGV4KSk7XG4gICAgICByZXR1cm4gb3V0cHV0W0xFTkdUSF0gPiBzcGxpdExpbWl0ID8gb3V0cHV0LnNsaWNlKDAsIHNwbGl0TGltaXQpIDogb3V0cHV0O1xuICAgIH07XG4gIC8vIENoYWtyYSwgVjhcbiAgfSBlbHNlIGlmICgnMCdbJFNQTElUXSh1bmRlZmluZWQsIDApW0xFTkdUSF0pIHtcbiAgICAkc3BsaXQgPSBmdW5jdGlvbiAoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgcmV0dXJuIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkICYmIGxpbWl0ID09PSAwID8gW10gOiBfc3BsaXQuY2FsbCh0aGlzLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9O1xuICB9XG4gIC8vIDIxLjEuMy4xNyBTdHJpbmcucHJvdG90eXBlLnNwbGl0KHNlcGFyYXRvciwgbGltaXQpXG4gIHJldHVybiBbZnVuY3Rpb24gc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICB2YXIgZm4gPSBzZXBhcmF0b3IgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogc2VwYXJhdG9yW1NQTElUXTtcbiAgICByZXR1cm4gZm4gIT09IHVuZGVmaW5lZCA/IGZuLmNhbGwoc2VwYXJhdG9yLCBPLCBsaW1pdCkgOiAkc3BsaXQuY2FsbChTdHJpbmcoTyksIHNlcGFyYXRvciwgbGltaXQpO1xuICB9LCAkc3BsaXRdO1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5zcGxpdC5qc1xuLy8gbW9kdWxlIGlkID0gMzI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///325\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(49);\nvar global = __webpack_require__(4);\nvar ctx = __webpack_require__(27);\nvar classof = __webpack_require__(72);\nvar $export = __webpack_require__(0);\nvar isObject = __webpack_require__(6);\nvar aFunction = __webpack_require__(16);\nvar anInstance = __webpack_require__(55);\nvar forOf = __webpack_require__(56);\nvar speciesConstructor = __webpack_require__(87);\nvar task = __webpack_require__(123).set;\nvar microtask = __webpack_require__(124)();\nvar newPromiseCapabilityModule = __webpack_require__(125);\nvar perform = __webpack_require__(167);\nvar promiseResolve = __webpack_require__(168);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(8)('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value);\n if (domain) domain.exit();\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(57)($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(61)($Promise, PROMISE);\n__webpack_require__(54)(PROMISE);\nWrapper = __webpack_require__(30)[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(84)(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzI2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucHJvbWlzZS5qcz9jYmQ5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHRhc2sgPSByZXF1aXJlKCcuL190YXNrJykuc2V0O1xudmFyIG1pY3JvdGFzayA9IHJlcXVpcmUoJy4vX21pY3JvdGFzaycpKCk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4vX3BlcmZvcm0nKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xudmFyIFBST01JU0UgPSAnUHJvbWlzZSc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgJFByb21pc2UgPSBnbG9iYWxbUFJPTUlTRV07XG52YXIgaXNOb2RlID0gY2xhc3NvZihwcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG52YXIgZW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgSW50ZXJuYWwsIG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSwgT3duUHJvbWlzZUNhcGFiaWxpdHksIFdyYXBwZXI7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mO1xuXG52YXIgVVNFX05BVElWRSA9ICEhZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIC8vIGNvcnJlY3Qgc3ViY2xhc3Npbmcgd2l0aCBAQHNwZWNpZXMgc3VwcG9ydFxuICAgIHZhciBwcm9taXNlID0gJFByb21pc2UucmVzb2x2ZSgxKTtcbiAgICB2YXIgRmFrZVByb21pc2UgPSAocHJvbWlzZS5jb25zdHJ1Y3RvciA9IHt9KVtyZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpXSA9IGZ1bmN0aW9uIChleGVjKSB7XG4gICAgICBleGVjKGVtcHR5LCBlbXB0eSk7XG4gICAgfTtcbiAgICAvLyB1bmhhbmRsZWQgcmVqZWN0aW9ucyB0cmFja2luZyBzdXBwb3J0LCBOb2RlSlMgUHJvbWlzZSB3aXRob3V0IGl0IGZhaWxzIEBAc3BlY2llcyB0ZXN0XG4gICAgcmV0dXJuIChpc05vZGUgfHwgdHlwZW9mIFByb21pc2VSZWplY3Rpb25FdmVudCA9PSAnZnVuY3Rpb24nKSAmJiBwcm9taXNlLnRoZW4oZW1wdHkpIGluc3RhbmNlb2YgRmFrZVByb21pc2U7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufSgpO1xuXG4vLyBoZWxwZXJzXG52YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgdGhlbjtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiB0eXBlb2YgKHRoZW4gPSBpdC50aGVuKSA9PSAnZnVuY3Rpb24nID8gdGhlbiA6IGZhbHNlO1xufTtcbnZhciBub3RpZnkgPSBmdW5jdGlvbiAocHJvbWlzZSwgaXNSZWplY3QpIHtcbiAgaWYgKHByb21pc2UuX24pIHJldHVybjtcbiAgcHJvbWlzZS5fbiA9IHRydWU7XG4gIHZhciBjaGFpbiA9IHByb21pc2UuX2M7XG4gIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgb2sgPSBwcm9taXNlLl9zID09IDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBydW4gPSBmdW5jdGlvbiAocmVhY3Rpb24pIHtcbiAgICAgIHZhciBoYW5kbGVyID0gb2sgPyByZWFjdGlvbi5vayA6IHJlYWN0aW9uLmZhaWw7XG4gICAgICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gICAgICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICAgICAgdmFyIGRvbWFpbiA9IHJlYWN0aW9uLmRvbWFpbjtcbiAgICAgIHZhciByZXN1bHQsIHRoZW47XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoaGFuZGxlcikge1xuICAgICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgIGlmIChwcm9taXNlLl9oID09IDIpIG9uSGFuZGxlVW5oYW5kbGVkKHByb21pc2UpO1xuICAgICAgICAgICAgcHJvbWlzZS5faCA9IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoYW5kbGVyID09PSB0cnVlKSByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChkb21haW4pIGRvbWFpbi5lbnRlcigpO1xuICAgICAgICAgICAgcmVzdWx0ID0gaGFuZGxlcih2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoZG9tYWluKSBkb21haW4uZXhpdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzdWx0ID09PSByZWFjdGlvbi5wcm9taXNlKSB7XG4gICAgICAgICAgICByZWplY3QoVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhlbiA9IGlzVGhlbmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgdGhlbi5jYWxsKHJlc3VsdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9IGVsc2UgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9IGVsc2UgcmVqZWN0KHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgd2hpbGUgKGNoYWluLmxlbmd0aCA+IGkpIHJ1bihjaGFpbltpKytdKTsgLy8gdmFyaWFibGUgbGVuZ3RoIC0gY2FuJ3QgdXNlIGZvckVhY2hcbiAgICBwcm9taXNlLl9jID0gW107XG4gICAgcHJvbWlzZS5fbiA9IGZhbHNlO1xuICAgIGlmIChpc1JlamVjdCAmJiAhcHJvbWlzZS5faCkgb25VbmhhbmRsZWQocHJvbWlzZSk7XG4gIH0pO1xufTtcbnZhciBvblVuaGFuZGxlZCA9IGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdmFsdWUgPSBwcm9taXNlLl92O1xuICAgIHZhciB1bmhhbmRsZWQgPSBpc1VuaGFuZGxlZChwcm9taXNlKTtcbiAgICB2YXIgcmVzdWx0LCBoYW5kbGVyLCBjb25zb2xlO1xuICAgIGlmICh1bmhhbmRsZWQpIHtcbiAgICAgIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoaXNOb2RlKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbWl0KCd1bmhhbmRsZWRSZWplY3Rpb24nLCB2YWx1ZSwgcHJvbWlzZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaGFuZGxlciA9IGdsb2JhbC5vbnVuaGFuZGxlZHJlamVjdGlvbikge1xuICAgICAgICAgIGhhbmRsZXIoeyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHZhbHVlIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKChjb25zb2xlID0gZ2xvYmFsLmNvbnNvbGUpICYmIGNvbnNvbGUuZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24nLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gQnJvd3NlcnMgc2hvdWxkIG5vdCB0cmlnZ2VyIGByZWplY3Rpb25IYW5kbGVkYCBldmVudCBpZiBpdCB3YXMgaGFuZGxlZCBoZXJlLCBOb2RlSlMgLSBzaG91bGRcbiAgICAgIHByb21pc2UuX2ggPSBpc05vZGUgfHwgaXNVbmhhbmRsZWQocHJvbWlzZSkgPyAyIDogMTtcbiAgICB9IHByb21pc2UuX2EgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHVuaGFuZGxlZCAmJiByZXN1bHQuZSkgdGhyb3cgcmVzdWx0LnY7XG4gIH0pO1xufTtcbnZhciBpc1VuaGFuZGxlZCA9IGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gIHJldHVybiBwcm9taXNlLl9oICE9PSAxICYmIChwcm9taXNlLl9hIHx8IHByb21pc2UuX2MpLmxlbmd0aCA9PT0gMDtcbn07XG52YXIgb25IYW5kbGVVbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhhbmRsZXI7XG4gICAgaWYgKGlzTm9kZSkge1xuICAgICAgcHJvY2Vzcy5lbWl0KCdyZWplY3Rpb25IYW5kbGVkJywgcHJvbWlzZSk7XG4gICAgfSBlbHNlIGlmIChoYW5kbGVyID0gZ2xvYmFsLm9ucmVqZWN0aW9uaGFuZGxlZCkge1xuICAgICAgaGFuZGxlcih7IHByb21pc2U6IHByb21pc2UsIHJlYXNvbjogcHJvbWlzZS5fdiB9KTtcbiAgICB9XG4gIH0pO1xufTtcbnZhciAkcmVqZWN0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgaWYgKHByb21pc2UuX2QpIHJldHVybjtcbiAgcHJvbWlzZS5fZCA9IHRydWU7XG4gIHByb21pc2UgPSBwcm9taXNlLl93IHx8IHByb21pc2U7IC8vIHVud3JhcFxuICBwcm9taXNlLl92ID0gdmFsdWU7XG4gIHByb21pc2UuX3MgPSAyO1xuICBpZiAoIXByb21pc2UuX2EpIHByb21pc2UuX2EgPSBwcm9taXNlLl9jLnNsaWNlKCk7XG4gIG5vdGlmeShwcm9taXNlLCB0cnVlKTtcbn07XG52YXIgJHJlc29sdmUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIHByb21pc2UgPSB0aGlzO1xuICB2YXIgdGhlbjtcbiAgaWYgKHByb21pc2UuX2QpIHJldHVybjtcbiAgcHJvbWlzZS5fZCA9IHRydWU7XG4gIHByb21pc2UgPSBwcm9taXNlLl93IHx8IHByb21pc2U7IC8vIHVud3JhcFxuICB0cnkge1xuICAgIGlmIChwcm9taXNlID09PSB2YWx1ZSkgdGhyb3cgVHlwZUVycm9yKFwiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGZcIik7XG4gICAgaWYgKHRoZW4gPSBpc1RoZW5hYmxlKHZhbHVlKSkge1xuICAgICAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHdyYXBwZXIgPSB7IF93OiBwcm9taXNlLCBfZDogZmFsc2UgfTsgLy8gd3JhcFxuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoZW4uY2FsbCh2YWx1ZSwgY3R4KCRyZXNvbHZlLCB3cmFwcGVyLCAxKSwgY3R4KCRyZWplY3QsIHdyYXBwZXIsIDEpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICRyZWplY3QuY2FsbCh3cmFwcGVyLCBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb21pc2UuX3YgPSB2YWx1ZTtcbiAgICAgIHByb21pc2UuX3MgPSAxO1xuICAgICAgbm90aWZ5KHByb21pc2UsIGZhbHNlKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAkcmVqZWN0LmNhbGwoeyBfdzogcHJvbWlzZSwgX2Q6IGZhbHNlIH0sIGUpOyAvLyB3cmFwXG4gIH1cbn07XG5cbi8vIGNvbnN0cnVjdG9yIHBvbHlmaWxsXG5pZiAoIVVTRV9OQVRJVkUpIHtcbiAgLy8gMjUuNC4zLjEgUHJvbWlzZShleGVjdXRvcilcbiAgJFByb21pc2UgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKSB7XG4gICAgYW5JbnN0YW5jZSh0aGlzLCAkUHJvbWlzZSwgUFJPTUlTRSwgJ19oJyk7XG4gICAgYUZ1bmN0aW9uKGV4ZWN1dG9yKTtcbiAgICBJbnRlcm5hbC5jYWxsKHRoaXMpO1xuICAgIHRyeSB7XG4gICAgICBleGVjdXRvcihjdHgoJHJlc29sdmUsIHRoaXMsIDEpLCBjdHgoJHJlamVjdCwgdGhpcywgMSkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgJHJlamVjdC5jYWxsKHRoaXMsIGVycik7XG4gICAgfVxuICB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgSW50ZXJuYWwgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKSB7XG4gICAgdGhpcy5fYyA9IFtdOyAgICAgICAgICAgICAvLyA8LSBhd2FpdGluZyByZWFjdGlvbnNcbiAgICB0aGlzLl9hID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIGNoZWNrZWQgaW4gaXNVbmhhbmRsZWQgcmVhY3Rpb25zXG4gICAgdGhpcy5fcyA9IDA7ICAgICAgICAgICAgICAvLyA8LSBzdGF0ZVxuICAgIHRoaXMuX2QgPSBmYWxzZTsgICAgICAgICAgLy8gPC0gZG9uZVxuICAgIHRoaXMuX3YgPSB1bmRlZmluZWQ7ICAgICAgLy8gPC0gdmFsdWVcbiAgICB0aGlzLl9oID0gMDsgICAgICAgICAgICAgIC8vIDwtIHJlamVjdGlvbiBzdGF0ZSwgMCAtIGRlZmF1bHQsIDEgLSBoYW5kbGVkLCAyIC0gdW5oYW5kbGVkXG4gICAgdGhpcy5fbiA9IGZhbHNlOyAgICAgICAgICAvLyA8LSBub3RpZnlcbiAgfTtcbiAgSW50ZXJuYWwucHJvdG90eXBlID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJykoJFByb21pc2UucHJvdG90eXBlLCB7XG4gICAgLy8gMjUuNC41LjMgUHJvbWlzZS5wcm90b3R5cGUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClcbiAgICB0aGVuOiBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICB2YXIgcmVhY3Rpb24gPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgJFByb21pc2UpKTtcbiAgICAgIHJlYWN0aW9uLm9rID0gdHlwZW9mIG9uRnVsZmlsbGVkID09ICdmdW5jdGlvbicgPyBvbkZ1bGZpbGxlZCA6IHRydWU7XG4gICAgICByZWFjdGlvbi5mYWlsID0gdHlwZW9mIG9uUmVqZWN0ZWQgPT0gJ2Z1bmN0aW9uJyAmJiBvblJlamVjdGVkO1xuICAgICAgcmVhY3Rpb24uZG9tYWluID0gaXNOb2RlID8gcHJvY2Vzcy5kb21haW4gOiB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9jLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHRoaXMuX2EpIHRoaXMuX2EucHVzaChyZWFjdGlvbik7XG4gICAgICBpZiAodGhpcy5fcykgbm90aWZ5KHRoaXMsIGZhbHNlKTtcbiAgICAgIHJldHVybiByZWFjdGlvbi5wcm9taXNlO1xuICAgIH0sXG4gICAgLy8gMjUuNC41LjEgUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2gob25SZWplY3RlZClcbiAgICAnY2F0Y2gnOiBmdW5jdGlvbiAob25SZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuICAgIH1cbiAgfSk7XG4gIE93blByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gbmV3IEludGVybmFsKCk7XG4gICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgICB0aGlzLnJlc29sdmUgPSBjdHgoJHJlc29sdmUsIHByb21pc2UsIDEpO1xuICAgIHRoaXMucmVqZWN0ID0gY3R4KCRyZWplY3QsIHByb21pc2UsIDEpO1xuICB9O1xuICBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoQykge1xuICAgIHJldHVybiBDID09PSAkUHJvbWlzZSB8fCBDID09PSBXcmFwcGVyXG4gICAgICA/IG5ldyBPd25Qcm9taXNlQ2FwYWJpbGl0eShDKVxuICAgICAgOiBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gIH07XG59XG5cbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIHsgUHJvbWlzZTogJFByb21pc2UgfSk7XG5yZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpKCRQcm9taXNlLCBQUk9NSVNFKTtcbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoUFJPTUlTRSk7XG5XcmFwcGVyID0gcmVxdWlyZSgnLi9fY29yZScpW1BST01JU0VdO1xuXG4vLyBzdGF0aWNzXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC41IFByb21pc2UucmVqZWN0KHIpXG4gIHJlamVjdDogZnVuY3Rpb24gcmVqZWN0KHIpIHtcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHRoaXMpO1xuICAgIHZhciAkJHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgICQkcmVqZWN0KHIpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoTElCUkFSWSB8fCAhVVNFX05BVElWRSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjYgUHJvbWlzZS5yZXNvbHZlKHgpXG4gIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoeCkge1xuICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShMSUJSQVJZICYmIHRoaXMgPT09IFdyYXBwZXIgPyAkUHJvbWlzZSA6IHRoaXMsIHgpO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIShVU0VfTkFUSVZFICYmIHJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0JykoZnVuY3Rpb24gKGl0ZXIpIHtcbiAgJFByb21pc2UuYWxsKGl0ZXIpWydjYXRjaCddKGVtcHR5KTtcbn0pKSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuMSBQcm9taXNlLmFsbChpdGVyYWJsZSlcbiAgYWxsOiBmdW5jdGlvbiBhbGwoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIHZhciByZW1haW5pbmcgPSAxO1xuICAgICAgZm9yT2YoaXRlcmFibGUsIGZhbHNlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICB2YXIgJGluZGV4ID0gaW5kZXgrKztcbiAgICAgICAgdmFyIGFscmVhZHlDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgdmFsdWVzLnB1c2godW5kZWZpbmVkKTtcbiAgICAgICAgcmVtYWluaW5nKys7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWVzWyRpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgICAgIH0sIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmUpIHJlamVjdChyZXN1bHQudik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfSxcbiAgLy8gMjUuNC40LjQgUHJvbWlzZS5yYWNlKGl0ZXJhYmxlKVxuICByYWNlOiBmdW5jdGlvbiByYWNlKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oY2FwYWJpbGl0eS5yZXNvbHZlLCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lKSByZWplY3QocmVzdWx0LnYpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSAzMjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///326\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar weak = __webpack_require__(173);\nvar validate = __webpack_require__(64);\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\n__webpack_require__(88)(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzI3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYud2Vhay1zZXQuanM/NTdmMSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgd2VhayA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24td2VhaycpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIFdFQUtfU0VUID0gJ1dlYWtTZXQnO1xuXG4vLyAyMy40IFdlYWtTZXQgT2JqZWN0c1xucmVxdWlyZSgnLi9fY29sbGVjdGlvbicpKFdFQUtfU0VULCBmdW5jdGlvbiAoZ2V0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBXZWFrU2V0KCkgeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIHtcbiAgLy8gMjMuNC4zLjEgV2Vha1NldC5wcm90b3R5cGUuYWRkKHZhbHVlKVxuICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgIHJldHVybiB3ZWFrLmRlZih2YWxpZGF0ZSh0aGlzLCBXRUFLX1NFVCksIHZhbHVlLCB0cnVlKTtcbiAgfVxufSwgd2VhaywgZmFsc2UsIHRydWUpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi53ZWFrLXNldC5qc1xuLy8gbW9kdWxlIGlkID0gMzI3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///327\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $typed = __webpack_require__(89);\nvar buffer = __webpack_require__(126);\nvar anObject = __webpack_require__(3);\nvar toAbsoluteIndex = __webpack_require__(51);\nvar toLength = __webpack_require__(12);\nvar isObject = __webpack_require__(6);\nvar ArrayBuffer = __webpack_require__(4).ArrayBuffer;\nvar speciesConstructor = __webpack_require__(87);\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * __webpack_require__(5)(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var final = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < final) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\n__webpack_require__(54)(ARRAY_BUFFER);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzI4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuYXJyYXktYnVmZmVyLmpzP2Y2NjkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkdHlwZWQgPSByZXF1aXJlKCcuL190eXBlZCcpO1xudmFyIGJ1ZmZlciA9IHJlcXVpcmUoJy4vX3R5cGVkLWJ1ZmZlcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5BcnJheUJ1ZmZlcjtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgJEFycmF5QnVmZmVyID0gYnVmZmVyLkFycmF5QnVmZmVyO1xudmFyICREYXRhVmlldyA9IGJ1ZmZlci5EYXRhVmlldztcbnZhciAkaXNWaWV3ID0gJHR5cGVkLkFCViAmJiBBcnJheUJ1ZmZlci5pc1ZpZXc7XG52YXIgJHNsaWNlID0gJEFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZTtcbnZhciBWSUVXID0gJHR5cGVkLlZJRVc7XG52YXIgQVJSQVlfQlVGRkVSID0gJ0FycmF5QnVmZmVyJztcblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAoQXJyYXlCdWZmZXIgIT09ICRBcnJheUJ1ZmZlciksIHsgQXJyYXlCdWZmZXI6ICRBcnJheUJ1ZmZlciB9KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhJHR5cGVkLkNPTlNUUiwgQVJSQVlfQlVGRkVSLCB7XG4gIC8vIDI0LjEuMy4xIEFycmF5QnVmZmVyLmlzVmlldyhhcmcpXG4gIGlzVmlldzogZnVuY3Rpb24gaXNWaWV3KGl0KSB7XG4gICAgcmV0dXJuICRpc1ZpZXcgJiYgJGlzVmlldyhpdCkgfHwgaXNPYmplY3QoaXQpICYmIFZJRVcgaW4gaXQ7XG4gIH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuVSArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gIW5ldyAkQXJyYXlCdWZmZXIoMikuc2xpY2UoMSwgdW5kZWZpbmVkKS5ieXRlTGVuZ3RoO1xufSksIEFSUkFZX0JVRkZFUiwge1xuICAvLyAyNC4xLjQuMyBBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2Uoc3RhcnQsIGVuZClcbiAgc2xpY2U6IGZ1bmN0aW9uIHNsaWNlKHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoJHNsaWNlICE9PSB1bmRlZmluZWQgJiYgZW5kID09PSB1bmRlZmluZWQpIHJldHVybiAkc2xpY2UuY2FsbChhbk9iamVjdCh0aGlzKSwgc3RhcnQpOyAvLyBGRiBmaXhcbiAgICB2YXIgbGVuID0gYW5PYmplY3QodGhpcykuYnl0ZUxlbmd0aDtcbiAgICB2YXIgZmlyc3QgPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbik7XG4gICAgdmFyIGZpbmFsID0gdG9BYnNvbHV0ZUluZGV4KGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogZW5kLCBsZW4pO1xuICAgIHZhciByZXN1bHQgPSBuZXcgKHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCAkQXJyYXlCdWZmZXIpKSh0b0xlbmd0aChmaW5hbCAtIGZpcnN0KSk7XG4gICAgdmFyIHZpZXdTID0gbmV3ICREYXRhVmlldyh0aGlzKTtcbiAgICB2YXIgdmlld1QgPSBuZXcgJERhdGFWaWV3KHJlc3VsdCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoZmlyc3QgPCBmaW5hbCkge1xuICAgICAgdmlld1Quc2V0VWludDgoaW5kZXgrKywgdmlld1MuZ2V0VWludDgoZmlyc3QrKykpO1xuICAgIH0gcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoQVJSQVlfQlVGRkVSKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuYXJyYXktYnVmZmVyLmpzXG4vLyBtb2R1bGUgaWQgPSAzMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///328\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\n$export($export.G + $export.W + $export.F * !__webpack_require__(89).ABV, {\n DataView: __webpack_require__(126).DataView\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzI5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZGF0YS12aWV3LmpzP2Q2ZTIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3R5cGVkJykuQUJWLCB7XG4gIERhdGFWaWV3OiByZXF1aXJlKCcuL190eXBlZC1idWZmZXInKS5EYXRhVmlld1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLmRhdGEtdmlldy5qc1xuLy8gbW9kdWxlIGlkID0gMzI5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///329\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50OC1hcnJheS5qcz9lNzY1Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0ludDgnLCAxLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gSW50OEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50OC1hcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gMzMwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///330\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDgtYXJyYXkuanM/NGM1NSJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdVaW50OCcsIDEsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVaW50OEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDgtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDMzMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///331\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDgtY2xhbXBlZC1hcnJheS5qcz8zMzI4Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ1VpbnQ4JywgMSwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQ4Q2xhbXBlZEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59LCB0cnVlKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDgtY2xhbXBlZC1hcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gMzMyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///332\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50MTYtYXJyYXkuanM/YWFkNCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdJbnQxNicsIDIsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQxNkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50MTYtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDMzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///333\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzM0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDE2LWFycmF5LmpzPzRjNzkiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnVWludDE2JywgMiwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQxNkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDE2LWFycmF5LmpzXG4vLyBtb2R1bGUgaWQgPSAzMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///334\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzM1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50MzItYXJyYXkuanM/MmI0MiJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdJbnQzMicsIDQsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50MzItYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDMzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///335\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzM2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDMyLWFycmF5LmpzPzM1ZjYiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnVWludDMyJywgNCwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDMyLWFycmF5LmpzXG4vLyBtb2R1bGUgaWQgPSAzMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///336\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzM3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZmxvYXQzMi1hcnJheS5qcz83NTNjIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0Zsb2F0MzInLCA0LCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gRmxvYXQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZmxvYXQzMi1hcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gMzM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///337\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzM4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZmxvYXQ2NC1hcnJheS5qcz9mYWY1Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0Zsb2F0NjQnLCA4LCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gRmxvYXQ2NEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZmxvYXQ2NC1hcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gMzM4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///338\n")},function(module,exports,__webpack_require__){eval("// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = __webpack_require__(0);\nvar aFunction = __webpack_require__(16);\nvar anObject = __webpack_require__(3);\nvar rApply = (__webpack_require__(4).Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !__webpack_require__(5)(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzM5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5hcHBseS5qcz8wOTU0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDI2LjEuMSBSZWZsZWN0LmFwcGx5KHRhcmdldCwgdGhpc0FyZ3VtZW50LCBhcmd1bWVudHNMaXN0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciByQXBwbHkgPSAocmVxdWlyZSgnLi9fZ2xvYmFsJykuUmVmbGVjdCB8fCB7fSkuYXBwbHk7XG52YXIgZkFwcGx5ID0gRnVuY3Rpb24uYXBwbHk7XG4vLyBNUyBFZGdlIGFyZ3VtZW50c0xpc3QgYXJndW1lbnQgaXMgb3B0aW9uYWxcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByQXBwbHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbn0pLCAnUmVmbGVjdCcsIHtcbiAgYXBwbHk6IGZ1bmN0aW9uIGFwcGx5KHRhcmdldCwgdGhpc0FyZ3VtZW50LCBhcmd1bWVudHNMaXN0KSB7XG4gICAgdmFyIFQgPSBhRnVuY3Rpb24odGFyZ2V0KTtcbiAgICB2YXIgTCA9IGFuT2JqZWN0KGFyZ3VtZW50c0xpc3QpO1xuICAgIHJldHVybiByQXBwbHkgPyByQXBwbHkoVCwgdGhpc0FyZ3VtZW50LCBMKSA6IGZBcHBseS5jYWxsKFQsIHRoaXNBcmd1bWVudCwgTCk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmFwcGx5LmpzXG4vLyBtb2R1bGUgaWQgPSAzMzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///339\n")},function(module,exports,__webpack_require__){eval("// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = __webpack_require__(0);\nvar create = __webpack_require__(52);\nvar aFunction = __webpack_require__(16);\nvar anObject = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\nvar fails = __webpack_require__(5);\nvar bind = __webpack_require__(154);\nvar rConstruct = (__webpack_require__(4).Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5jb25zdHJ1Y3QuanM/YmU2NCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjIgUmVmbGVjdC5jb25zdHJ1Y3QodGFyZ2V0LCBhcmd1bWVudHNMaXN0IFssIG5ld1RhcmdldF0pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi9fYmluZCcpO1xudmFyIHJDb25zdHJ1Y3QgPSAocmVxdWlyZSgnLi9fZ2xvYmFsJykuUmVmbGVjdCB8fCB7fSkuY29uc3RydWN0O1xuXG4vLyBNUyBFZGdlIHN1cHBvcnRzIG9ubHkgMiBhcmd1bWVudHMgYW5kIGFyZ3VtZW50c0xpc3QgYXJndW1lbnQgaXMgb3B0aW9uYWxcbi8vIEZGIE5pZ2h0bHkgc2V0cyB0aGlyZCBhcmd1bWVudCBhcyBgbmV3LnRhcmdldGAsIGJ1dCBkb2VzIG5vdCBjcmVhdGUgYHRoaXNgIGZyb20gaXRcbnZhciBORVdfVEFSR0VUX0JVRyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRigpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gIShyQ29uc3RydWN0KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgW10sIEYpIGluc3RhbmNlb2YgRik7XG59KTtcbnZhciBBUkdTX0JVRyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJDb25zdHJ1Y3QoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChORVdfVEFSR0VUX0JVRyB8fCBBUkdTX0JVRyksICdSZWZsZWN0Jywge1xuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIGNvbnN0cnVjdChUYXJnZXQsIGFyZ3MgLyogLCBuZXdUYXJnZXQgKi8pIHtcbiAgICBhRnVuY3Rpb24oVGFyZ2V0KTtcbiAgICBhbk9iamVjdChhcmdzKTtcbiAgICB2YXIgbmV3VGFyZ2V0ID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyBUYXJnZXQgOiBhRnVuY3Rpb24oYXJndW1lbnRzWzJdKTtcbiAgICBpZiAoQVJHU19CVUcgJiYgIU5FV19UQVJHRVRfQlVHKSByZXR1cm4gckNvbnN0cnVjdChUYXJnZXQsIGFyZ3MsIG5ld1RhcmdldCk7XG4gICAgaWYgKFRhcmdldCA9PSBuZXdUYXJnZXQpIHtcbiAgICAgIC8vIHcvbyBhbHRlcmVkIG5ld1RhcmdldCwgb3B0aW1pemF0aW9uIGZvciAwLTQgYXJndW1lbnRzXG4gICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBUYXJnZXQoKTtcbiAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdKTtcbiAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgY2FzZSAzOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgICAgIH1cbiAgICAgIC8vIHcvbyBhbHRlcmVkIG5ld1RhcmdldCwgbG90IG9mIGFyZ3VtZW50cyBjYXNlXG4gICAgICB2YXIgJGFyZ3MgPSBbbnVsbF07XG4gICAgICAkYXJncy5wdXNoLmFwcGx5KCRhcmdzLCBhcmdzKTtcbiAgICAgIHJldHVybiBuZXcgKGJpbmQuYXBwbHkoVGFyZ2V0LCAkYXJncykpKCk7XG4gICAgfVxuICAgIC8vIHdpdGggYWx0ZXJlZCBuZXdUYXJnZXQsIG5vdCBzdXBwb3J0IGJ1aWx0LWluIGNvbnN0cnVjdG9yc1xuICAgIHZhciBwcm90byA9IG5ld1RhcmdldC5wcm90b3R5cGU7XG4gICAgdmFyIGluc3RhbmNlID0gY3JlYXRlKGlzT2JqZWN0KHByb3RvKSA/IHByb3RvIDogT2JqZWN0LnByb3RvdHlwZSk7XG4gICAgdmFyIHJlc3VsdCA9IEZ1bmN0aW9uLmFwcGx5LmNhbGwoVGFyZ2V0LCBpbnN0YW5jZSwgYXJncyk7XG4gICAgcmV0dXJuIGlzT2JqZWN0KHJlc3VsdCkgPyByZXN1bHQgOiBpbnN0YW5jZTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuY29uc3RydWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAzNDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///340\n")},function(module,exports,__webpack_require__){eval("// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = __webpack_require__(11);\nvar $export = __webpack_require__(0);\nvar anObject = __webpack_require__(3);\nvar toPrimitive = __webpack_require__(31);\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * __webpack_require__(5)(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5kZWZpbmUtcHJvcGVydHkuanM/ZTE5NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjMgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKVxudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcblxuLy8gTVMgRWRnZSBoYXMgYnJva2VuIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkgLSB0aHJvd2luZyBpbnN0ZWFkIG9mIHJldHVybmluZyBmYWxzZVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkoZFAuZih7fSwgMSwgeyB2YWx1ZTogMSB9KSwgMSwgeyB2YWx1ZTogMiB9KTtcbn0pLCAnUmVmbGVjdCcsIHtcbiAgZGVmaW5lUHJvcGVydHk6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpIHtcbiAgICBhbk9iamVjdCh0YXJnZXQpO1xuICAgIHByb3BlcnR5S2V5ID0gdG9QcmltaXRpdmUocHJvcGVydHlLZXksIHRydWUpO1xuICAgIGFuT2JqZWN0KGF0dHJpYnV0ZXMpO1xuICAgIHRyeSB7XG4gICAgICBkUC5mKHRhcmdldCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSAzNDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///341\n")},function(module,exports,__webpack_require__){eval("// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = __webpack_require__(0);\nvar gOPD = __webpack_require__(25).f;\nvar anObject = __webpack_require__(3);\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5kZWxldGUtcHJvcGVydHkuanM/Y2IxZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjQgUmVmbGVjdC5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBnT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgZGVsZXRlUHJvcGVydHk6IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICB2YXIgZGVzYyA9IGdPUEQoYW5PYmplY3QodGFyZ2V0KSwgcHJvcGVydHlLZXkpO1xuICAgIHJldHVybiBkZXNjICYmICFkZXNjLmNvbmZpZ3VyYWJsZSA/IGZhbHNlIDogZGVsZXRlIHRhcmdldFtwcm9wZXJ0eUtleV07XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmRlbGV0ZS1wcm9wZXJ0eS5qc1xuLy8gbW9kdWxlIGlkID0gMzQyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///342\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 26.1.5 Reflect.enumerate(target)\nvar $export = __webpack_require__(0);\nvar anObject = __webpack_require__(3);\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\n__webpack_require__(114)(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5lbnVtZXJhdGUuanM/NWZiNiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAyNi4xLjUgUmVmbGVjdC5lbnVtZXJhdGUodGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIEVudW1lcmF0ZSA9IGZ1bmN0aW9uIChpdGVyYXRlZCkge1xuICB0aGlzLl90ID0gYW5PYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB2YXIga2V5cyA9IHRoaXMuX2sgPSBbXTsgICAgICAvLyBrZXlzXG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIGl0ZXJhdGVkKSBrZXlzLnB1c2goa2V5KTtcbn07XG5yZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpKEVudW1lcmF0ZSwgJ09iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB2YXIga2V5cyA9IHRoYXQuX2s7XG4gIHZhciBrZXk7XG4gIGRvIHtcbiAgICBpZiAodGhhdC5faSA+PSBrZXlzLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9IHdoaWxlICghKChrZXkgPSBrZXlzW3RoYXQuX2krK10pIGluIHRoYXQuX3QpKTtcbiAgcmV0dXJuIHsgdmFsdWU6IGtleSwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGVudW1lcmF0ZTogZnVuY3Rpb24gZW51bWVyYXRlKHRhcmdldCkge1xuICAgIHJldHVybiBuZXcgRW51bWVyYXRlKHRhcmdldCk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmVudW1lcmF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMzQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///343\n")},function(module,exports,__webpack_require__){eval("// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = __webpack_require__(25);\nvar getPrototypeOf = __webpack_require__(26);\nvar has = __webpack_require__(17);\nvar $export = __webpack_require__(0);\nvar isObject = __webpack_require__(6);\nvar anObject = __webpack_require__(3);\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQ0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5nZXQuanM/NDhmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjYgUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wZXJ0eUtleSBbLCByZWNlaXZlcl0pXG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcblxuZnVuY3Rpb24gZ2V0KHRhcmdldCwgcHJvcGVydHlLZXkgLyogLCByZWNlaXZlciAqLykge1xuICB2YXIgcmVjZWl2ZXIgPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHRhcmdldCA6IGFyZ3VtZW50c1syXTtcbiAgdmFyIGRlc2MsIHByb3RvO1xuICBpZiAoYW5PYmplY3QodGFyZ2V0KSA9PT0gcmVjZWl2ZXIpIHJldHVybiB0YXJnZXRbcHJvcGVydHlLZXldO1xuICBpZiAoZGVzYyA9IGdPUEQuZih0YXJnZXQsIHByb3BlcnR5S2V5KSkgcmV0dXJuIGhhcyhkZXNjLCAndmFsdWUnKVxuICAgID8gZGVzYy52YWx1ZVxuICAgIDogZGVzYy5nZXQgIT09IHVuZGVmaW5lZFxuICAgICAgPyBkZXNjLmdldC5jYWxsKHJlY2VpdmVyKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIGlmIChpc09iamVjdChwcm90byA9IGdldFByb3RvdHlwZU9mKHRhcmdldCkpKSByZXR1cm4gZ2V0KHByb3RvLCBwcm9wZXJ0eUtleSwgcmVjZWl2ZXIpO1xufVxuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7IGdldDogZ2V0IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC5qc1xuLy8gbW9kdWxlIGlkID0gMzQ0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///344\n")},function(module,exports,__webpack_require__){eval("// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = __webpack_require__(25);\nvar $export = __webpack_require__(0);\nvar anObject = __webpack_require__(3);\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQ1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanM/MDM5ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjcgUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSlcbnZhciBnT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgcmV0dXJuIGdPUEQuZihhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1xuLy8gbW9kdWxlIGlkID0gMzQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///345\n")},function(module,exports,__webpack_require__){eval("// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = __webpack_require__(0);\nvar getProto = __webpack_require__(26);\nvar anObject = __webpack_require__(3);\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQ2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5nZXQtcHJvdG90eXBlLW9mLmpzPzNlZTQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjYuMS44IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBnZXRQcm90byA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGdldFByb3RvdHlwZU9mOiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZih0YXJnZXQpIHtcbiAgICByZXR1cm4gZ2V0UHJvdG8oYW5PYmplY3QodGFyZ2V0KSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDM0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///346\n")},function(module,exports,__webpack_require__){eval("// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQ3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5oYXMuanM/NzY2ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjkgUmVmbGVjdC5oYXModGFyZ2V0LCBwcm9wZXJ0eUtleSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgaGFzOiBmdW5jdGlvbiBoYXModGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgIHJldHVybiBwcm9wZXJ0eUtleSBpbiB0YXJnZXQ7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0Lmhhcy5qc1xuLy8gbW9kdWxlIGlkID0gMzQ3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///347\n")},function(module,exports,__webpack_require__){eval("// 26.1.10 Reflect.isExtensible(target)\nvar $export = __webpack_require__(0);\nvar anObject = __webpack_require__(3);\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQ4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5pcy1leHRlbnNpYmxlLmpzPzI0NmQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjYuMS4xMCBSZWZsZWN0LmlzRXh0ZW5zaWJsZSh0YXJnZXQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgJGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGU7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgaXNFeHRlbnNpYmxlOiBmdW5jdGlvbiBpc0V4dGVuc2libGUodGFyZ2V0KSB7XG4gICAgYW5PYmplY3QodGFyZ2V0KTtcbiAgICByZXR1cm4gJGlzRXh0ZW5zaWJsZSA/ICRpc0V4dGVuc2libGUodGFyZ2V0KSA6IHRydWU7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmlzLWV4dGVuc2libGUuanNcbi8vIG1vZHVsZSBpZCA9IDM0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///348\n")},function(module,exports,__webpack_require__){eval("// 26.1.11 Reflect.ownKeys(target)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Reflect', { ownKeys: __webpack_require__(175) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQ5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5vd24ta2V5cy5qcz80NzBlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDI2LjEuMTEgUmVmbGVjdC5vd25LZXlzKHRhcmdldClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHsgb3duS2V5czogcmVxdWlyZSgnLi9fb3duLWtleXMnKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5vd24ta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMzQ5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///349\n")},function(module,exports,__webpack_require__){eval("// 26.1.12 Reflect.preventExtensions(target)\nvar $export = __webpack_require__(0);\nvar anObject = __webpack_require__(3);\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5wcmV2ZW50LWV4dGVuc2lvbnMuanM/ZjY2MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjEyIFJlZmxlY3QucHJldmVudEV4dGVuc2lvbnModGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyICRwcmV2ZW50RXh0ZW5zaW9ucyA9IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucztcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBwcmV2ZW50RXh0ZW5zaW9uczogZnVuY3Rpb24gcHJldmVudEV4dGVuc2lvbnModGFyZ2V0KSB7XG4gICAgYW5PYmplY3QodGFyZ2V0KTtcbiAgICB0cnkge1xuICAgICAgaWYgKCRwcmV2ZW50RXh0ZW5zaW9ucykgJHByZXZlbnRFeHRlbnNpb25zKHRhcmdldCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5wcmV2ZW50LWV4dGVuc2lvbnMuanNcbi8vIG1vZHVsZSBpZCA9IDM1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///350\n")},function(module,exports,__webpack_require__){eval("// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = __webpack_require__(11);\nvar gOPD = __webpack_require__(25);\nvar getPrototypeOf = __webpack_require__(26);\nvar has = __webpack_require__(17);\nvar $export = __webpack_require__(0);\nvar createDesc = __webpack_require__(47);\nvar anObject = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5zZXQuanM/NmQ0NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjEzIFJlZmxlY3Quc2V0KHRhcmdldCwgcHJvcGVydHlLZXksIFYgWywgcmVjZWl2ZXJdKVxudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5mdW5jdGlvbiBzZXQodGFyZ2V0LCBwcm9wZXJ0eUtleSwgViAvKiAsIHJlY2VpdmVyICovKSB7XG4gIHZhciByZWNlaXZlciA9IGFyZ3VtZW50cy5sZW5ndGggPCA0ID8gdGFyZ2V0IDogYXJndW1lbnRzWzNdO1xuICB2YXIgb3duRGVzYyA9IGdPUEQuZihhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gIHZhciBleGlzdGluZ0Rlc2NyaXB0b3IsIHByb3RvO1xuICBpZiAoIW93bkRlc2MpIHtcbiAgICBpZiAoaXNPYmplY3QocHJvdG8gPSBnZXRQcm90b3R5cGVPZih0YXJnZXQpKSkge1xuICAgICAgcmV0dXJuIHNldChwcm90bywgcHJvcGVydHlLZXksIFYsIHJlY2VpdmVyKTtcbiAgICB9XG4gICAgb3duRGVzYyA9IGNyZWF0ZURlc2MoMCk7XG4gIH1cbiAgaWYgKGhhcyhvd25EZXNjLCAndmFsdWUnKSkge1xuICAgIGlmIChvd25EZXNjLndyaXRhYmxlID09PSBmYWxzZSB8fCAhaXNPYmplY3QocmVjZWl2ZXIpKSByZXR1cm4gZmFsc2U7XG4gICAgZXhpc3RpbmdEZXNjcmlwdG9yID0gZ09QRC5mKHJlY2VpdmVyLCBwcm9wZXJ0eUtleSkgfHwgY3JlYXRlRGVzYygwKTtcbiAgICBleGlzdGluZ0Rlc2NyaXB0b3IudmFsdWUgPSBWO1xuICAgIGRQLmYocmVjZWl2ZXIsIHByb3BlcnR5S2V5LCBleGlzdGluZ0Rlc2NyaXB0b3IpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBvd25EZXNjLnNldCA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiAob3duRGVzYy5zZXQuY2FsbChyZWNlaXZlciwgViksIHRydWUpO1xufVxuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7IHNldDogc2V0IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LnNldC5qc1xuLy8gbW9kdWxlIGlkID0gMzUxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///351\n")},function(module,exports,__webpack_require__){eval("// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = __webpack_require__(0);\nvar setProto = __webpack_require__(106);\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5zZXQtcHJvdG90eXBlLW9mLmpzPzk5M2EiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjYuMS4xNCBSZWZsZWN0LnNldFByb3RvdHlwZU9mKHRhcmdldCwgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHNldFByb3RvID0gcmVxdWlyZSgnLi9fc2V0LXByb3RvJyk7XG5cbmlmIChzZXRQcm90bykgJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBzZXRQcm90b3R5cGVPZjogZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YodGFyZ2V0LCBwcm90bykge1xuICAgIHNldFByb3RvLmNoZWNrKHRhcmdldCwgcHJvdG8pO1xuICAgIHRyeSB7XG4gICAgICBzZXRQcm90by5zZXQodGFyZ2V0LCBwcm90byk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5zZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSAzNTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///352\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(0);\nvar $includes = __webpack_require__(80)(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n__webpack_require__(43)('includes');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXJyYXkuaW5jbHVkZXMuanM/ODFiYyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9BcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKSh0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdBcnJheScsIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKGVsIC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHJldHVybiAkaW5jbHVkZXModGhpcywgZWwsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdpbmNsdWRlcycpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5hcnJheS5pbmNsdWRlcy5qc1xuLy8gbW9kdWxlIGlkID0gMzUzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///353\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = __webpack_require__(0);\nvar flattenIntoArray = __webpack_require__(176);\nvar toObject = __webpack_require__(15);\nvar toLength = __webpack_require__(12);\nvar aFunction = __webpack_require__(16);\nvar arraySpeciesCreate = __webpack_require__(120);\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\n__webpack_require__(43)('flatMap');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzU0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXJyYXkuZmxhdC1tYXAuanM/YTA1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLWZsYXRNYXAvI3NlYy1BcnJheS5wcm90b3R5cGUuZmxhdE1hcFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBmbGF0dGVuSW50b0FycmF5ID0gcmVxdWlyZSgnLi9fZmxhdHRlbi1pbnRvLWFycmF5Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0FycmF5Jywge1xuICBmbGF0TWFwOiBmdW5jdGlvbiBmbGF0TWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgc291cmNlTGVuLCBBO1xuICAgIGFGdW5jdGlvbihjYWxsYmFja2ZuKTtcbiAgICBzb3VyY2VMZW4gPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgQSA9IGFycmF5U3BlY2llc0NyZWF0ZShPLCAwKTtcbiAgICBmbGF0dGVuSW50b0FycmF5KEEsIE8sIE8sIHNvdXJjZUxlbiwgMCwgMSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdmbGF0TWFwJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFycmF5LmZsYXQtbWFwLmpzXG4vLyBtb2R1bGUgaWQgPSAzNTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///354\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatten\nvar $export = __webpack_require__(0);\nvar flattenIntoArray = __webpack_require__(176);\nvar toObject = __webpack_require__(15);\nvar toLength = __webpack_require__(12);\nvar toInteger = __webpack_require__(33);\nvar arraySpeciesCreate = __webpack_require__(120);\n\n$export($export.P, 'Array', {\n flatten: function flatten(/* depthArg = 1 */) {\n var depthArg = arguments[0];\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n\n__webpack_require__(43)('flatten');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzU1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXJyYXkuZmxhdHRlbi5qcz9iZmRkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtZmxhdE1hcC8jc2VjLUFycmF5LnByb3RvdHlwZS5mbGF0dGVuXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGZsYXR0ZW5JbnRvQXJyYXkgPSByZXF1aXJlKCcuL19mbGF0dGVuLWludG8tYXJyYXknKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4vX2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7XG4gIGZsYXR0ZW46IGZ1bmN0aW9uIGZsYXR0ZW4oLyogZGVwdGhBcmcgPSAxICovKSB7XG4gICAgdmFyIGRlcHRoQXJnID0gYXJndW1lbnRzWzBdO1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIHNvdXJjZUxlbiA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgQSA9IGFycmF5U3BlY2llc0NyZWF0ZShPLCAwKTtcbiAgICBmbGF0dGVuSW50b0FycmF5KEEsIE8sIE8sIHNvdXJjZUxlbiwgMCwgZGVwdGhBcmcgPT09IHVuZGVmaW5lZCA/IDEgOiB0b0ludGVnZXIoZGVwdGhBcmcpKTtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdmbGF0dGVuJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFycmF5LmZsYXR0ZW4uanNcbi8vIG1vZHVsZSBpZCA9IDM1NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///355\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/mathiasbynens/String.prototype.at\nvar $export = __webpack_require__(0);\nvar $at = __webpack_require__(112)(true);\n\n$export($export.P, 'String', {\n at: function at(pos) {\n return $at(this, pos);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzU2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLmF0LmpzP2ZiNmYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvU3RyaW5nLnByb3RvdHlwZS5hdFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIGF0OiBmdW5jdGlvbiBhdChwb3MpIHtcbiAgICByZXR1cm4gJGF0KHRoaXMsIHBvcyk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcuYXQuanNcbi8vIG1vZHVsZSBpZCA9IDM1NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///356\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = __webpack_require__(0);\nvar $pad = __webpack_require__(177);\nvar userAgent = __webpack_require__(127);\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzU3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnBhZC1zdGFydC5qcz9iMjY0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0cmluZy1wYWQtc3RhcnQtZW5kXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRwYWQgPSByZXF1aXJlKCcuL19zdHJpbmctcGFkJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMjgwXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIC9WZXJzaW9uXFwvMTBcXC5cXGQrKFxcLlxcZCspPyBTYWZhcmlcXC8vLnRlc3QodXNlckFnZW50KSwgJ1N0cmluZycsIHtcbiAgcGFkU3RhcnQ6IGZ1bmN0aW9uIHBhZFN0YXJ0KG1heExlbmd0aCAvKiAsIGZpbGxTdHJpbmcgPSAnICcgKi8pIHtcbiAgICByZXR1cm4gJHBhZCh0aGlzLCBtYXhMZW5ndGgsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCB0cnVlKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN0cmluZy5wYWQtc3RhcnQuanNcbi8vIG1vZHVsZSBpZCA9IDM1N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///357\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = __webpack_require__(0);\nvar $pad = __webpack_require__(177);\nvar userAgent = __webpack_require__(127);\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzU4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnBhZC1lbmQuanM/OWJjMSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zdHJpbmctcGFkLXN0YXJ0LWVuZFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcGFkID0gcmVxdWlyZSgnLi9fc3RyaW5nLXBhZCcpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4vX3VzZXItYWdlbnQnKTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzI4MFxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAvVmVyc2lvblxcLzEwXFwuXFxkKyhcXC5cXGQrKT8gU2FmYXJpXFwvLy50ZXN0KHVzZXJBZ2VudCksICdTdHJpbmcnLCB7XG4gIHBhZEVuZDogZnVuY3Rpb24gcGFkRW5kKG1heExlbmd0aCAvKiAsIGZpbGxTdHJpbmcgPSAnICcgKi8pIHtcbiAgICByZXR1cm4gJHBhZCh0aGlzLCBtYXhMZW5ndGgsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCBmYWxzZSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcucGFkLWVuZC5qc1xuLy8gbW9kdWxlIGlkID0gMzU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///358\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\n__webpack_require__(62)('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzU5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnRyaW0tbGVmdC5qcz9jNjdmIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zZWJtYXJrYmFnZS9lY21hc2NyaXB0LXN0cmluZy1sZWZ0LXJpZ2h0LXRyaW1cbnJlcXVpcmUoJy4vX3N0cmluZy10cmltJykoJ3RyaW1MZWZ0JywgZnVuY3Rpb24gKCR0cmltKSB7XG4gIHJldHVybiBmdW5jdGlvbiB0cmltTGVmdCgpIHtcbiAgICByZXR1cm4gJHRyaW0odGhpcywgMSk7XG4gIH07XG59LCAndHJpbVN0YXJ0Jyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN0cmluZy50cmltLWxlZnQuanNcbi8vIG1vZHVsZSBpZCA9IDM1OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///359\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\n__webpack_require__(62)('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnRyaW0tcmlnaHQuanM/MmQxMiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vc2VibWFya2JhZ2UvZWNtYXNjcmlwdC1zdHJpbmctbGVmdC1yaWdodC10cmltXG5yZXF1aXJlKCcuL19zdHJpbmctdHJpbScpKCd0cmltUmlnaHQnLCBmdW5jdGlvbiAoJHRyaW0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyaW1SaWdodCgpIHtcbiAgICByZXR1cm4gJHRyaW0odGhpcywgMik7XG4gIH07XG59LCAndHJpbUVuZCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcudHJpbS1yaWdodC5qc1xuLy8gbW9kdWxlIGlkID0gMzYwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///360\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://tc39.github.io/String.prototype.matchAll/\nvar $export = __webpack_require__(0);\nvar defined = __webpack_require__(32);\nvar toLength = __webpack_require__(12);\nvar isRegExp = __webpack_require__(83);\nvar getFlags = __webpack_require__(85);\nvar RegExpProto = RegExp.prototype;\n\nvar $RegExpStringIterator = function (regexp, string) {\n this._r = regexp;\n this._s = string;\n};\n\n__webpack_require__(114)($RegExpStringIterator, 'RegExp String', function next() {\n var match = this._r.exec(this._s);\n return { value: match, done: match === null };\n});\n\n$export($export.P, 'String', {\n matchAll: function matchAll(regexp) {\n defined(this);\n if (!isRegExp(regexp)) throw TypeError(regexp + ' is not a regexp!');\n var S = String(this);\n var flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp);\n var rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);\n rx.lastIndex = toLength(regexp.lastIndex);\n return new $RegExpStringIterator(rx, S);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLm1hdGNoLWFsbC5qcz9iMWNlIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vU3RyaW5nLnByb3RvdHlwZS5tYXRjaEFsbC9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG52YXIgZ2V0RmxhZ3MgPSByZXF1aXJlKCcuL19mbGFncycpO1xudmFyIFJlZ0V4cFByb3RvID0gUmVnRXhwLnByb3RvdHlwZTtcblxudmFyICRSZWdFeHBTdHJpbmdJdGVyYXRvciA9IGZ1bmN0aW9uIChyZWdleHAsIHN0cmluZykge1xuICB0aGlzLl9yID0gcmVnZXhwO1xuICB0aGlzLl9zID0gc3RyaW5nO1xufTtcblxucmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKSgkUmVnRXhwU3RyaW5nSXRlcmF0b3IsICdSZWdFeHAgU3RyaW5nJywgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIG1hdGNoID0gdGhpcy5fci5leGVjKHRoaXMuX3MpO1xuICByZXR1cm4geyB2YWx1ZTogbWF0Y2gsIGRvbmU6IG1hdGNoID09PSBudWxsIH07XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIG1hdGNoQWxsOiBmdW5jdGlvbiBtYXRjaEFsbChyZWdleHApIHtcbiAgICBkZWZpbmVkKHRoaXMpO1xuICAgIGlmICghaXNSZWdFeHAocmVnZXhwKSkgdGhyb3cgVHlwZUVycm9yKHJlZ2V4cCArICcgaXMgbm90IGEgcmVnZXhwIScpO1xuICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuICAgIHZhciBmbGFncyA9ICdmbGFncycgaW4gUmVnRXhwUHJvdG8gPyBTdHJpbmcocmVnZXhwLmZsYWdzKSA6IGdldEZsYWdzLmNhbGwocmVnZXhwKTtcbiAgICB2YXIgcnggPSBuZXcgUmVnRXhwKHJlZ2V4cC5zb3VyY2UsIH5mbGFncy5pbmRleE9mKCdnJykgPyBmbGFncyA6ICdnJyArIGZsYWdzKTtcbiAgICByeC5sYXN0SW5kZXggPSB0b0xlbmd0aChyZWdleHAubGFzdEluZGV4KTtcbiAgICByZXR1cm4gbmV3ICRSZWdFeHBTdHJpbmdJdGVyYXRvcihyeCwgUyk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcubWF0Y2gtYWxsLmpzXG4vLyBtb2R1bGUgaWQgPSAzNjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///361\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(102)('asyncIterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yLmpzP2Y1ODgiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdhc3luY0l0ZXJhdG9yJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gMzYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///362\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(102)('observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUuanM/YmVlZiJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuL193a3MtZGVmaW5lJykoJ29ic2VydmFibGUnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUuanNcbi8vIG1vZHVsZSBpZCA9IDM2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///363\n")},function(module,exports,__webpack_require__){eval("// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = __webpack_require__(0);\nvar ownKeys = __webpack_require__(175);\nvar toIObject = __webpack_require__(24);\nvar gOPD = __webpack_require__(25);\nvar createProperty = __webpack_require__(118);\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzY0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcnMuanM/Y2U2YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi9fb3duLWtleXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnM6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgICB2YXIgZ2V0RGVzYyA9IGdPUEQuZjtcbiAgICB2YXIga2V5cyA9IG93bktleXMoTyk7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIga2V5LCBkZXNjO1xuICAgIHdoaWxlIChrZXlzLmxlbmd0aCA+IGkpIHtcbiAgICAgIGRlc2MgPSBnZXREZXNjKE8sIGtleSA9IGtleXNbaSsrXSk7XG4gICAgICBpZiAoZGVzYyAhPT0gdW5kZWZpbmVkKSBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGtleSwgZGVzYyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gMzY0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///364\n")},function(module,exports,__webpack_require__){eval("// https://github.com/tc39/proposal-object-values-entries\nvar $export = __webpack_require__(0);\nvar $values = __webpack_require__(178)(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzY1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LnZhbHVlcy5qcz82MTU5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9iamVjdC12YWx1ZXMtZW50cmllc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkdmFsdWVzID0gcmVxdWlyZSgnLi9fb2JqZWN0LXRvLWFycmF5JykoZmFsc2UpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHtcbiAgdmFsdWVzOiBmdW5jdGlvbiB2YWx1ZXMoaXQpIHtcbiAgICByZXR1cm4gJHZhbHVlcyhpdCk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QudmFsdWVzLmpzXG4vLyBtb2R1bGUgaWQgPSAzNjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///365\n")},function(module,exports,__webpack_require__){eval("// https://github.com/tc39/proposal-object-values-entries\nvar $export = __webpack_require__(0);\nvar $entries = __webpack_require__(178)(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzY2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmVudHJpZXMuanM/MTRhNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1vYmplY3QtdmFsdWVzLWVudHJpZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGVudHJpZXMgPSByZXF1aXJlKCcuL19vYmplY3QtdG8tYXJyYXknKSh0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7XG4gIGVudHJpZXM6IGZ1bmN0aW9uIGVudHJpZXMoaXQpIHtcbiAgICByZXR1cm4gJGVudHJpZXMoaXQpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmVudHJpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDM2NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///366\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar toObject = __webpack_require__(15);\nvar aFunction = __webpack_require__(16);\nvar $defineProperty = __webpack_require__(11);\n\n// B.2.2.2 Object.prototype.__defineGetter__(P, getter)\n__webpack_require__(10) && $export($export.P + __webpack_require__(90), 'Object', {\n __defineGetter__: function __defineGetter__(P, getter) {\n $defineProperty.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzY3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1nZXR0ZXIuanM/YTE4YSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xuXG4vLyBCLjIuMi4yIE9iamVjdC5wcm90b3R5cGUuX19kZWZpbmVHZXR0ZXJfXyhQLCBnZXR0ZXIpXG5yZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICRleHBvcnQoJGV4cG9ydC5QICsgcmVxdWlyZSgnLi9fb2JqZWN0LWZvcmNlZC1wYW0nKSwgJ09iamVjdCcsIHtcbiAgX19kZWZpbmVHZXR0ZXJfXzogZnVuY3Rpb24gX19kZWZpbmVHZXR0ZXJfXyhQLCBnZXR0ZXIpIHtcbiAgICAkZGVmaW5lUHJvcGVydHkuZih0b09iamVjdCh0aGlzKSwgUCwgeyBnZXQ6IGFGdW5jdGlvbihnZXR0ZXIpLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZGVmaW5lLWdldHRlci5qc1xuLy8gbW9kdWxlIGlkID0gMzY3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///367\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar toObject = __webpack_require__(15);\nvar aFunction = __webpack_require__(16);\nvar $defineProperty = __webpack_require__(11);\n\n// B.2.2.3 Object.prototype.__defineSetter__(P, setter)\n__webpack_require__(10) && $export($export.P + __webpack_require__(90), 'Object', {\n __defineSetter__: function __defineSetter__(P, setter) {\n $defineProperty.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzY4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1zZXR0ZXIuanM/NzcxNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xuXG4vLyBCLjIuMi4zIE9iamVjdC5wcm90b3R5cGUuX19kZWZpbmVTZXR0ZXJfXyhQLCBzZXR0ZXIpXG5yZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICRleHBvcnQoJGV4cG9ydC5QICsgcmVxdWlyZSgnLi9fb2JqZWN0LWZvcmNlZC1wYW0nKSwgJ09iamVjdCcsIHtcbiAgX19kZWZpbmVTZXR0ZXJfXzogZnVuY3Rpb24gX19kZWZpbmVTZXR0ZXJfXyhQLCBzZXR0ZXIpIHtcbiAgICAkZGVmaW5lUHJvcGVydHkuZih0b09iamVjdCh0aGlzKSwgUCwgeyBzZXQ6IGFGdW5jdGlvbihzZXR0ZXIpLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZGVmaW5lLXNldHRlci5qc1xuLy8gbW9kdWxlIGlkID0gMzY4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///368\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar toObject = __webpack_require__(15);\nvar toPrimitive = __webpack_require__(31);\nvar getPrototypeOf = __webpack_require__(26);\nvar getOwnPropertyDescriptor = __webpack_require__(25).f;\n\n// B.2.2.4 Object.prototype.__lookupGetter__(P)\n__webpack_require__(10) && $export($export.P + __webpack_require__(90), 'Object', {\n __lookupGetter__: function __lookupGetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.get;\n } while (O = getPrototypeOf(O));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzY5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1nZXR0ZXIuanM/YzQyYSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmY7XG5cbi8vIEIuMi4yLjQgT2JqZWN0LnByb3RvdHlwZS5fX2xvb2t1cEdldHRlcl9fKFApXG5yZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICRleHBvcnQoJGV4cG9ydC5QICsgcmVxdWlyZSgnLi9fb2JqZWN0LWZvcmNlZC1wYW0nKSwgJ09iamVjdCcsIHtcbiAgX19sb29rdXBHZXR0ZXJfXzogZnVuY3Rpb24gX19sb29rdXBHZXR0ZXJfXyhQKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgSyA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICAgIHZhciBEO1xuICAgIGRvIHtcbiAgICAgIGlmIChEID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIEspKSByZXR1cm4gRC5nZXQ7XG4gICAgfSB3aGlsZSAoTyA9IGdldFByb3RvdHlwZU9mKE8pKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5sb29rdXAtZ2V0dGVyLmpzXG4vLyBtb2R1bGUgaWQgPSAzNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///369\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar toObject = __webpack_require__(15);\nvar toPrimitive = __webpack_require__(31);\nvar getPrototypeOf = __webpack_require__(26);\nvar getOwnPropertyDescriptor = __webpack_require__(25).f;\n\n// B.2.2.5 Object.prototype.__lookupSetter__(P)\n__webpack_require__(10) && $export($export.P + __webpack_require__(90), 'Object', {\n __lookupSetter__: function __lookupSetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.set;\n } while (O = getPrototypeOf(O));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1zZXR0ZXIuanM/MDI0NCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmY7XG5cbi8vIEIuMi4yLjUgT2JqZWN0LnByb3RvdHlwZS5fX2xvb2t1cFNldHRlcl9fKFApXG5yZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICRleHBvcnQoJGV4cG9ydC5QICsgcmVxdWlyZSgnLi9fb2JqZWN0LWZvcmNlZC1wYW0nKSwgJ09iamVjdCcsIHtcbiAgX19sb29rdXBTZXR0ZXJfXzogZnVuY3Rpb24gX19sb29rdXBTZXR0ZXJfXyhQKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgSyA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICAgIHZhciBEO1xuICAgIGRvIHtcbiAgICAgIGlmIChEID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIEspKSByZXR1cm4gRC5zZXQ7XG4gICAgfSB3aGlsZSAoTyA9IGdldFByb3RvdHlwZU9mKE8pKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5sb29rdXAtc2V0dGVyLmpzXG4vLyBtb2R1bGUgaWQgPSAzNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///370\n")},function(module,exports,__webpack_require__){eval("// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = __webpack_require__(0);\n\n$export($export.P + $export.R, 'Map', { toJSON: __webpack_require__(179)('Map') });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLnRvLWpzb24uanM/ODdiNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ01hcCcsIHsgdG9KU09OOiByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXRvLWpzb24nKSgnTWFwJykgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hcC50by1qc29uLmpzXG4vLyBtb2R1bGUgaWQgPSAzNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///371\n")},function(module,exports,__webpack_require__){eval("// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = __webpack_require__(0);\n\n$export($export.P + $export.R, 'Set', { toJSON: __webpack_require__(179)('Set') });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc2V0LnRvLWpzb24uanM/NmFiMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1NldCcsIHsgdG9KU09OOiByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXRvLWpzb24nKSgnU2V0JykgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnNldC50by1qc29uLmpzXG4vLyBtb2R1bGUgaWQgPSAzNzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///372\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\n__webpack_require__(91)('Map');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzczLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLm9mLmpzPzI0OWQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtbWFwLm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdNYXAnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLm9mLmpzXG4vLyBtb2R1bGUgaWQgPSAzNzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///373\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\n__webpack_require__(91)('Set');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzc0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc2V0Lm9mLmpzP2E5OTYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtc2V0Lm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdTZXQnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc2V0Lm9mLmpzXG4vLyBtb2R1bGUgaWQgPSAzNzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///374\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\n__webpack_require__(91)('WeakMap');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzc1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcud2Vhay1tYXAub2YuanM/MmRhZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy13ZWFrbWFwLm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdXZWFrTWFwJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LndlYWstbWFwLm9mLmpzXG4vLyBtb2R1bGUgaWQgPSAzNzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///375\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of\n__webpack_require__(91)('WeakSet');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzc2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcud2Vhay1zZXQub2YuanM/MDRlNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy13ZWFrc2V0Lm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdXZWFrU2V0Jyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LndlYWstc2V0Lm9mLmpzXG4vLyBtb2R1bGUgaWQgPSAzNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///376\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\n__webpack_require__(92)('Map');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzc3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLmZyb20uanM/ZTJiOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1tYXAuZnJvbVxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tZnJvbScpKCdNYXAnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLmZyb20uanNcbi8vIG1vZHVsZSBpZCA9IDM3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///377\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\n__webpack_require__(92)('Set');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzc4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc2V0LmZyb20uanM/NjIwOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1zZXQuZnJvbVxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tZnJvbScpKCdTZXQnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc2V0LmZyb20uanNcbi8vIG1vZHVsZSBpZCA9IDM3OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///378\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\n__webpack_require__(92)('WeakMap');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzc5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcud2Vhay1tYXAuZnJvbS5qcz9lOTdjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXdlYWttYXAuZnJvbVxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tZnJvbScpKCdXZWFrTWFwJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LndlYWstbWFwLmZyb20uanNcbi8vIG1vZHVsZSBpZCA9IDM3OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///379\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from\n__webpack_require__(92)('WeakSet');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzgwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcud2Vhay1zZXQuZnJvbS5qcz9hOWQxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXdlYWtzZXQuZnJvbVxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tZnJvbScpKCdXZWFrU2V0Jyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LndlYWstc2V0LmZyb20uanNcbi8vIG1vZHVsZSBpZCA9IDM4MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///380\n")},function(module,exports,__webpack_require__){eval("// https://github.com/tc39/proposal-global\nvar $export = __webpack_require__(0);\n\n$export($export.G, { global: __webpack_require__(4) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzgxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuZ2xvYmFsLmpzPzBkMDciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtZ2xvYmFsXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuRywgeyBnbG9iYWw6IHJlcXVpcmUoJy4vX2dsb2JhbCcpIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDM4MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///381\n")},function(module,exports,__webpack_require__){eval("// https://github.com/tc39/proposal-global\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'System', { global: __webpack_require__(4) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzgyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3lzdGVtLmdsb2JhbC5qcz84ZmYyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWdsb2JhbFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdTeXN0ZW0nLCB7IGdsb2JhbDogcmVxdWlyZSgnLi9fZ2xvYmFsJykgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN5c3RlbS5nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDM4MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///382\n")},function(module,exports,__webpack_require__){eval("// https://github.com/ljharb/proposal-is-error\nvar $export = __webpack_require__(0);\nvar cof = __webpack_require__(28);\n\n$export($export.S, 'Error', {\n isError: function isError(it) {\n return cof(it) === 'Error';\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzgzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuZXJyb3IuaXMtZXJyb3IuanM/NTNlNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vbGpoYXJiL3Byb3Bvc2FsLWlzLWVycm9yXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ0Vycm9yJywge1xuICBpc0Vycm9yOiBmdW5jdGlvbiBpc0Vycm9yKGl0KSB7XG4gICAgcmV0dXJuIGNvZihpdCkgPT09ICdFcnJvcic7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5lcnJvci5pcy1lcnJvci5qc1xuLy8gbW9kdWxlIGlkID0gMzgzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///383\n")},function(module,exports,__webpack_require__){eval("// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n clamp: function clamp(x, lower, upper) {\n return Math.min(upper, Math.max(lower, x));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzg0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5jbGFtcC5qcz81ZmEzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgY2xhbXA6IGZ1bmN0aW9uIGNsYW1wKHgsIGxvd2VyLCB1cHBlcikge1xuICAgIHJldHVybiBNYXRoLm1pbih1cHBlciwgTWF0aC5tYXgobG93ZXIsIHgpKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguY2xhbXAuanNcbi8vIG1vZHVsZSBpZCA9IDM4NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///384\n")},function(module,exports,__webpack_require__){eval("// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', { DEG_PER_RAD: Math.PI / 180 });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzg1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5kZWctcGVyLXJhZC5qcz81YjRhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgREVHX1BFUl9SQUQ6IE1hdGguUEkgLyAxODAgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguZGVnLXBlci1yYWQuanNcbi8vIG1vZHVsZSBpZCA9IDM4NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///385\n")},function(module,exports,__webpack_require__){eval("// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = __webpack_require__(0);\nvar RAD_PER_DEG = 180 / Math.PI;\n\n$export($export.S, 'Math', {\n degrees: function degrees(radians) {\n return radians * RAD_PER_DEG;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzg2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5kZWdyZWVzLmpzP2I1YTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBSQURfUEVSX0RFRyA9IDE4MCAvIE1hdGguUEk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgZGVncmVlczogZnVuY3Rpb24gZGVncmVlcyhyYWRpYW5zKSB7XG4gICAgcmV0dXJuIHJhZGlhbnMgKiBSQURfUEVSX0RFRztcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguZGVncmVlcy5qc1xuLy8gbW9kdWxlIGlkID0gMzg2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///386\n")},function(module,exports,__webpack_require__){eval("// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = __webpack_require__(0);\nvar scale = __webpack_require__(181);\nvar fround = __webpack_require__(161);\n\n$export($export.S, 'Math', {\n fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {\n return fround(scale(x, inLow, inHigh, outLow, outHigh));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzg3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5mc2NhbGUuanM/YmU3NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHNjYWxlID0gcmVxdWlyZSgnLi9fbWF0aC1zY2FsZScpO1xudmFyIGZyb3VuZCA9IHJlcXVpcmUoJy4vX21hdGgtZnJvdW5kJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgZnNjYWxlOiBmdW5jdGlvbiBmc2NhbGUoeCwgaW5Mb3csIGluSGlnaCwgb3V0TG93LCBvdXRIaWdoKSB7XG4gICAgcmV0dXJuIGZyb3VuZChzY2FsZSh4LCBpbkxvdywgaW5IaWdoLCBvdXRMb3csIG91dEhpZ2gpKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguZnNjYWxlLmpzXG4vLyBtb2R1bGUgaWQgPSAzODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///387\n")},function(module,exports,__webpack_require__){eval("// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n iaddh: function iaddh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzg4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5pYWRkaC5qcz80NzcyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGlhZGRoOiBmdW5jdGlvbiBpYWRkaCh4MCwgeDEsIHkwLCB5MSkge1xuICAgIHZhciAkeDAgPSB4MCA+Pj4gMDtcbiAgICB2YXIgJHgxID0geDEgPj4+IDA7XG4gICAgdmFyICR5MCA9IHkwID4+PiAwO1xuICAgIHJldHVybiAkeDEgKyAoeTEgPj4+IDApICsgKCgkeDAgJiAkeTAgfCAoJHgwIHwgJHkwKSAmIH4oJHgwICsgJHkwID4+PiAwKSkgPj4+IDMxKSB8IDA7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLmlhZGRoLmpzXG4vLyBtb2R1bGUgaWQgPSAzODhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///388\n")},function(module,exports,__webpack_require__){eval("// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n isubh: function isubh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzg5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5pc3ViaC5qcz9lYTIzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGlzdWJoOiBmdW5jdGlvbiBpc3ViaCh4MCwgeDEsIHkwLCB5MSkge1xuICAgIHZhciAkeDAgPSB4MCA+Pj4gMDtcbiAgICB2YXIgJHgxID0geDEgPj4+IDA7XG4gICAgdmFyICR5MCA9IHkwID4+PiAwO1xuICAgIHJldHVybiAkeDEgLSAoeTEgPj4+IDApIC0gKCh+JHgwICYgJHkwIHwgfigkeDAgXiAkeTApICYgJHgwIC0gJHkwID4+PiAwKSA+Pj4gMzEpIHwgMDtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguaXN1YmguanNcbi8vIG1vZHVsZSBpZCA9IDM4OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///389\n")},function(module,exports,__webpack_require__){eval("// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n imulh: function imulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >> 16;\n var v1 = $v >> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5pbXVsaC5qcz8wNzc1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGltdWxoOiBmdW5jdGlvbiBpbXVsaCh1LCB2KSB7XG4gICAgdmFyIFVJTlQxNiA9IDB4ZmZmZjtcbiAgICB2YXIgJHUgPSArdTtcbiAgICB2YXIgJHYgPSArdjtcbiAgICB2YXIgdTAgPSAkdSAmIFVJTlQxNjtcbiAgICB2YXIgdjAgPSAkdiAmIFVJTlQxNjtcbiAgICB2YXIgdTEgPSAkdSA+PiAxNjtcbiAgICB2YXIgdjEgPSAkdiA+PiAxNjtcbiAgICB2YXIgdCA9ICh1MSAqIHYwID4+PiAwKSArICh1MCAqIHYwID4+PiAxNik7XG4gICAgcmV0dXJuIHUxICogdjEgKyAodCA+PiAxNikgKyAoKHUwICogdjEgPj4+IDApICsgKHQgJiBVSU5UMTYpID4+IDE2KTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguaW11bGguanNcbi8vIG1vZHVsZSBpZCA9IDM5MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///390\n")},function(module,exports,__webpack_require__){eval("// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', { RAD_PER_DEG: 180 / Math.PI });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5yYWQtcGVyLWRlZy5qcz9kZWNmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgUkFEX1BFUl9ERUc6IDE4MCAvIE1hdGguUEkgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGgucmFkLXBlci1kZWcuanNcbi8vIG1vZHVsZSBpZCA9IDM5MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///391\n")},function(module,exports,__webpack_require__){eval("// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = __webpack_require__(0);\nvar DEG_PER_RAD = Math.PI / 180;\n\n$export($export.S, 'Math', {\n radians: function radians(degrees) {\n return degrees * DEG_PER_RAD;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5yYWRpYW5zLmpzPzE3NWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBERUdfUEVSX1JBRCA9IE1hdGguUEkgLyAxODA7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgcmFkaWFuczogZnVuY3Rpb24gcmFkaWFucyhkZWdyZWVzKSB7XG4gICAgcmV0dXJuIGRlZ3JlZXMgKiBERUdfUEVSX1JBRDtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGgucmFkaWFucy5qc1xuLy8gbW9kdWxlIGlkID0gMzkyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///392\n")},function(module,exports,__webpack_require__){eval("// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', { scale: __webpack_require__(181) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5zY2FsZS5qcz9iODQxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgc2NhbGU6IHJlcXVpcmUoJy4vX21hdGgtc2NhbGUnKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5zY2FsZS5qc1xuLy8gbW9kdWxlIGlkID0gMzkzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///393\n")},function(module,exports,__webpack_require__){eval("// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n umulh: function umulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >>> 16;\n var v1 = $v >>> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzk0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC51bXVsaC5qcz84YjRkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIHVtdWxoOiBmdW5jdGlvbiB1bXVsaCh1LCB2KSB7XG4gICAgdmFyIFVJTlQxNiA9IDB4ZmZmZjtcbiAgICB2YXIgJHUgPSArdTtcbiAgICB2YXIgJHYgPSArdjtcbiAgICB2YXIgdTAgPSAkdSAmIFVJTlQxNjtcbiAgICB2YXIgdjAgPSAkdiAmIFVJTlQxNjtcbiAgICB2YXIgdTEgPSAkdSA+Pj4gMTY7XG4gICAgdmFyIHYxID0gJHYgPj4+IDE2O1xuICAgIHZhciB0ID0gKHUxICogdjAgPj4+IDApICsgKHUwICogdjAgPj4+IDE2KTtcbiAgICByZXR1cm4gdTEgKiB2MSArICh0ID4+PiAxNikgKyAoKHUwICogdjEgPj4+IDApICsgKHQgJiBVSU5UMTYpID4+PiAxNik7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLnVtdWxoLmpzXG4vLyBtb2R1bGUgaWQgPSAzOTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///394\n")},function(module,exports,__webpack_require__){eval("// http://jfbastien.github.io/papers/Math.signbit.html\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', { signbit: function signbit(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzk1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5zaWduYml0LmpzPzFmYmMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cDovL2pmYmFzdGllbi5naXRodWIuaW8vcGFwZXJzL01hdGguc2lnbmJpdC5odG1sXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IHNpZ25iaXQ6IGZ1bmN0aW9uIHNpZ25iaXQoeCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIHJldHVybiAoeCA9ICt4KSAhPSB4ID8geCA6IHggPT0gMCA/IDEgLyB4ID09IEluZmluaXR5IDogeCA+IDA7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLnNpZ25iaXQuanNcbi8vIG1vZHVsZSBpZCA9IDM5NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///395\n")},function(module,exports,__webpack_require__){"use strict";eval("// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(0);\nvar core = __webpack_require__(30);\nvar global = __webpack_require__(4);\nvar speciesConstructor = __webpack_require__(87);\nvar promiseResolve = __webpack_require__(168);\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzk2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5LmpzP2Y4Y2IiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS1maW5hbGx5XG4ndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5SLCAnUHJvbWlzZScsIHsgJ2ZpbmFsbHknOiBmdW5jdGlvbiAob25GaW5hbGx5KSB7XG4gIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIGNvcmUuUHJvbWlzZSB8fCBnbG9iYWwuUHJvbWlzZSk7XG4gIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIG9uRmluYWxseSA9PSAnZnVuY3Rpb24nO1xuICByZXR1cm4gdGhpcy50aGVuKFxuICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHg7IH0pO1xuICAgIH0gOiBvbkZpbmFsbHksXG4gICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyB0aHJvdyBlOyB9KTtcbiAgICB9IDogb25GaW5hbGx5XG4gICk7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHkuanNcbi8vIG1vZHVsZSBpZCA9IDM5NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///396\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(0);\nvar newPromiseCapability = __webpack_require__(125);\nvar perform = __webpack_require__(167);\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzk3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucHJvbWlzZS50cnkuanM/NDFjNSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wcm9taXNlLXRyeVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi9fcGVyZm9ybScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1Byb21pc2UnLCB7ICd0cnknOiBmdW5jdGlvbiAoY2FsbGJhY2tmbikge1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gcGVyZm9ybShjYWxsYmFja2ZuKTtcbiAgKHJlc3VsdC5lID8gcHJvbWlzZUNhcGFiaWxpdHkucmVqZWN0IDogcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZSkocmVzdWx0LnYpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzXG4vLyBtb2R1bGUgaWQgPSAzOTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///397\n")},function(module,exports,__webpack_require__){eval("var metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzk4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5kZWZpbmUtbWV0YWRhdGEuanM/Yzg5ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xudmFyIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEgPSBtZXRhZGF0YS5zZXQ7XG5cbm1ldGFkYXRhLmV4cCh7IGRlZmluZU1ldGFkYXRhOiBmdW5jdGlvbiBkZWZpbmVNZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSwgdGFyZ2V0LCB0YXJnZXRLZXkpIHtcbiAgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSwgYW5PYmplY3QodGFyZ2V0KSwgdG9NZXRhS2V5KHRhcmdldEtleSkpO1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5kZWZpbmUtbWV0YWRhdGEuanNcbi8vIG1vZHVsZSBpZCA9IDM5OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///398\n")},function(module,exports,__webpack_require__){eval("var metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzk5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5kZWxldGUtbWV0YWRhdGEuanM/ZGVhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xudmFyIGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAgPSBtZXRhZGF0YS5tYXA7XG52YXIgc3RvcmUgPSBtZXRhZGF0YS5zdG9yZTtcblxubWV0YWRhdGEuZXhwKHsgZGVsZXRlTWV0YWRhdGE6IGZ1bmN0aW9uIGRlbGV0ZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgdmFyIHRhcmdldEtleSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1syXSk7XG4gIHZhciBtZXRhZGF0YU1hcCA9IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoYW5PYmplY3QodGFyZ2V0KSwgdGFyZ2V0S2V5LCBmYWxzZSk7XG4gIGlmIChtZXRhZGF0YU1hcCA9PT0gdW5kZWZpbmVkIHx8ICFtZXRhZGF0YU1hcFsnZGVsZXRlJ10obWV0YWRhdGFLZXkpKSByZXR1cm4gZmFsc2U7XG4gIGlmIChtZXRhZGF0YU1hcC5zaXplKSByZXR1cm4gdHJ1ZTtcbiAgdmFyIHRhcmdldE1ldGFkYXRhID0gc3RvcmUuZ2V0KHRhcmdldCk7XG4gIHRhcmdldE1ldGFkYXRhWydkZWxldGUnXSh0YXJnZXRLZXkpO1xuICByZXR1cm4gISF0YXJnZXRNZXRhZGF0YS5zaXplIHx8IHN0b3JlWydkZWxldGUnXSh0YXJnZXQpO1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5kZWxldGUtbWV0YWRhdGEuanNcbi8vIG1vZHVsZSBpZCA9IDM5OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///399\n")},function(module,exports,__webpack_require__){eval("var metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar getPrototypeOf = __webpack_require__(26);\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtbWV0YWRhdGEuanM/MzQ3NiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgb3JkaW5hcnlIYXNPd25NZXRhZGF0YSA9IG1ldGFkYXRhLmhhcztcbnZhciBvcmRpbmFyeUdldE93bk1ldGFkYXRhID0gbWV0YWRhdGEuZ2V0O1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcblxudmFyIG9yZGluYXJ5R2V0TWV0YWRhdGEgPSBmdW5jdGlvbiAoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgdmFyIGhhc093biA9IG9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICBpZiAoaGFzT3duKSByZXR1cm4gb3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gIHZhciBwYXJlbnQgPSBnZXRQcm90b3R5cGVPZihPKTtcbiAgcmV0dXJuIHBhcmVudCAhPT0gbnVsbCA/IG9yZGluYXJ5R2V0TWV0YWRhdGEoTWV0YWRhdGFLZXksIHBhcmVudCwgUCkgOiB1bmRlZmluZWQ7XG59O1xuXG5tZXRhZGF0YS5leHAoeyBnZXRNZXRhZGF0YTogZnVuY3Rpb24gZ2V0TWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICByZXR1cm4gb3JkaW5hcnlHZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgYW5PYmplY3QodGFyZ2V0KSwgYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKSk7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1tZXRhZGF0YS5qc1xuLy8gbW9kdWxlIGlkID0gNDAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///400\n")},function(module,exports,__webpack_require__){eval("var Set = __webpack_require__(171);\nvar from = __webpack_require__(180);\nvar metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar getPrototypeOf = __webpack_require__(26);\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtbWV0YWRhdGEta2V5cy5qcz9iZjc4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBTZXQgPSByZXF1aXJlKCcuL2VzNi5zZXQnKTtcbnZhciBmcm9tID0gcmVxdWlyZSgnLi9fYXJyYXktZnJvbS1pdGVyYWJsZScpO1xudmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzID0gbWV0YWRhdGEua2V5cztcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG5cbnZhciBvcmRpbmFyeU1ldGFkYXRhS2V5cyA9IGZ1bmN0aW9uIChPLCBQKSB7XG4gIHZhciBvS2V5cyA9IG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApO1xuICB2YXIgcGFyZW50ID0gZ2V0UHJvdG90eXBlT2YoTyk7XG4gIGlmIChwYXJlbnQgPT09IG51bGwpIHJldHVybiBvS2V5cztcbiAgdmFyIHBLZXlzID0gb3JkaW5hcnlNZXRhZGF0YUtleXMocGFyZW50LCBQKTtcbiAgcmV0dXJuIHBLZXlzLmxlbmd0aCA/IG9LZXlzLmxlbmd0aCA/IGZyb20obmV3IFNldChvS2V5cy5jb25jYXQocEtleXMpKSkgOiBwS2V5cyA6IG9LZXlzO1xufTtcblxubWV0YWRhdGEuZXhwKHsgZ2V0TWV0YWRhdGFLZXlzOiBmdW5jdGlvbiBnZXRNZXRhZGF0YUtleXModGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gIHJldHVybiBvcmRpbmFyeU1ldGFkYXRhS2V5cyhhbk9iamVjdCh0YXJnZXQpLCBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMV0pKTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW1ldGFkYXRhLWtleXMuanNcbi8vIG1vZHVsZSBpZCA9IDQwMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///401\n")},function(module,exports,__webpack_require__){eval("var metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtb3duLW1ldGFkYXRhLmpzP2NkOTEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIG9yZGluYXJ5R2V0T3duTWV0YWRhdGEgPSBtZXRhZGF0YS5nZXQ7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xuXG5tZXRhZGF0YS5leHAoeyBnZXRPd25NZXRhZGF0YTogZnVuY3Rpb24gZ2V0T3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICByZXR1cm4gb3JkaW5hcnlHZXRPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgYW5PYmplY3QodGFyZ2V0KVxuICAgICwgYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKSk7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1vd24tbWV0YWRhdGEuanNcbi8vIG1vZHVsZSBpZCA9IDQwMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///402\n")},function(module,exports,__webpack_require__){eval("var metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtb3duLW1ldGFkYXRhLWtleXMuanM/YmVjOCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgb3JkaW5hcnlPd25NZXRhZGF0YUtleXMgPSBtZXRhZGF0YS5rZXlzO1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcblxubWV0YWRhdGEuZXhwKHsgZ2V0T3duTWV0YWRhdGFLZXlzOiBmdW5jdGlvbiBnZXRPd25NZXRhZGF0YUtleXModGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gIHJldHVybiBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhhbk9iamVjdCh0YXJnZXQpLCBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMV0pKTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW93bi1tZXRhZGF0YS1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSA0MDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///403\n")},function(module,exports,__webpack_require__){eval("var metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar getPrototypeOf = __webpack_require__(26);\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5oYXMtbWV0YWRhdGEuanM/ZjE2NiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgb3JkaW5hcnlIYXNPd25NZXRhZGF0YSA9IG1ldGFkYXRhLmhhcztcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG5cbnZhciBvcmRpbmFyeUhhc01ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gIHZhciBoYXNPd24gPSBvcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgaWYgKGhhc093bikgcmV0dXJuIHRydWU7XG4gIHZhciBwYXJlbnQgPSBnZXRQcm90b3R5cGVPZihPKTtcbiAgcmV0dXJuIHBhcmVudCAhPT0gbnVsbCA/IG9yZGluYXJ5SGFzTWV0YWRhdGEoTWV0YWRhdGFLZXksIHBhcmVudCwgUCkgOiBmYWxzZTtcbn07XG5cbm1ldGFkYXRhLmV4cCh7IGhhc01ldGFkYXRhOiBmdW5jdGlvbiBoYXNNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gIHJldHVybiBvcmRpbmFyeUhhc01ldGFkYXRhKG1ldGFkYXRhS2V5LCBhbk9iamVjdCh0YXJnZXQpLCBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMl0pKTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuaGFzLW1ldGFkYXRhLmpzXG4vLyBtb2R1bGUgaWQgPSA0MDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///404\n")},function(module,exports,__webpack_require__){eval("var metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5oYXMtb3duLW1ldGFkYXRhLmpzP2M4ZWIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIG9yZGluYXJ5SGFzT3duTWV0YWRhdGEgPSBtZXRhZGF0YS5oYXM7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xuXG5tZXRhZGF0YS5leHAoeyBoYXNPd25NZXRhZGF0YTogZnVuY3Rpb24gaGFzT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICByZXR1cm4gb3JkaW5hcnlIYXNPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgYW5PYmplY3QodGFyZ2V0KVxuICAgICwgYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKSk7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1vd24tbWV0YWRhdGEuanNcbi8vIG1vZHVsZSBpZCA9IDQwNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///405\n")},function(module,exports,__webpack_require__){eval("var $metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar aFunction = __webpack_require__(16);\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\n );\n };\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5tZXRhZGF0YS5qcz8xMTlmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIHRvTWV0YUtleSA9ICRtZXRhZGF0YS5rZXk7XG52YXIgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSA9ICRtZXRhZGF0YS5zZXQ7XG5cbiRtZXRhZGF0YS5leHAoeyBtZXRhZGF0YTogZnVuY3Rpb24gbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGRlY29yYXRvcih0YXJnZXQsIHRhcmdldEtleSkge1xuICAgIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoXG4gICAgICBtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSxcbiAgICAgICh0YXJnZXRLZXkgIT09IHVuZGVmaW5lZCA/IGFuT2JqZWN0IDogYUZ1bmN0aW9uKSh0YXJnZXQpLFxuICAgICAgdG9NZXRhS2V5KHRhcmdldEtleSlcbiAgICApO1xuICB9O1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5tZXRhZGF0YS5qc1xuLy8gbW9kdWxlIGlkID0gNDA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///406\n")},function(module,exports,__webpack_require__){eval("// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask\nvar $export = __webpack_require__(0);\nvar microtask = __webpack_require__(124)();\nvar process = __webpack_require__(4).process;\nvar isNode = __webpack_require__(28)(process) == 'process';\n\n$export($export.G, {\n asap: function asap(fn) {\n var domain = isNode && process.domain;\n microtask(domain ? domain.bind(fn) : fn);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXNhcC5qcz82OGNkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yd2FsZHJvbi90YzM5LW5vdGVzL2Jsb2IvbWFzdGVyL2VzNi8yMDE0LTA5L3NlcHQtMjUubWQjNTEwLWdsb2JhbGFzYXAtZm9yLWVucXVldWluZy1hLW1pY3JvdGFza1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIHByb2Nlc3MgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5wcm9jZXNzO1xudmFyIGlzTm9kZSA9IHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxuJGV4cG9ydCgkZXhwb3J0LkcsIHtcbiAgYXNhcDogZnVuY3Rpb24gYXNhcChmbikge1xuICAgIHZhciBkb21haW4gPSBpc05vZGUgJiYgcHJvY2Vzcy5kb21haW47XG4gICAgbWljcm90YXNrKGRvbWFpbiA/IGRvbWFpbi5iaW5kKGZuKSA6IGZuKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFzYXAuanNcbi8vIG1vZHVsZSBpZCA9IDQwN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///407\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/zenparsing/es-observable\nvar $export = __webpack_require__(0);\nvar global = __webpack_require__(4);\nvar core = __webpack_require__(30);\nvar microtask = __webpack_require__(124)();\nvar OBSERVABLE = __webpack_require__(8)('observable');\nvar aFunction = __webpack_require__(16);\nvar anObject = __webpack_require__(3);\nvar anInstance = __webpack_require__(55);\nvar redefineAll = __webpack_require__(57);\nvar hide = __webpack_require__(18);\nvar forOf = __webpack_require__(56);\nvar RETURN = forOf.RETURN;\n\nvar getMethod = function (fn) {\n return fn == null ? undefined : aFunction(fn);\n};\n\nvar cleanupSubscription = function (subscription) {\n var cleanup = subscription._c;\n if (cleanup) {\n subscription._c = undefined;\n cleanup();\n }\n};\n\nvar subscriptionClosed = function (subscription) {\n return subscription._o === undefined;\n};\n\nvar closeSubscription = function (subscription) {\n if (!subscriptionClosed(subscription)) {\n subscription._o = undefined;\n cleanupSubscription(subscription);\n }\n};\n\nvar Subscription = function (observer, subscriber) {\n anObject(observer);\n this._c = undefined;\n this._o = observer;\n observer = new SubscriptionObserver(this);\n try {\n var cleanup = subscriber(observer);\n var subscription = cleanup;\n if (cleanup != null) {\n if (typeof cleanup.unsubscribe === 'function') cleanup = function () { subscription.unsubscribe(); };\n else aFunction(cleanup);\n this._c = cleanup;\n }\n } catch (e) {\n observer.error(e);\n return;\n } if (subscriptionClosed(this)) cleanupSubscription(this);\n};\n\nSubscription.prototype = redefineAll({}, {\n unsubscribe: function unsubscribe() { closeSubscription(this); }\n});\n\nvar SubscriptionObserver = function (subscription) {\n this._s = subscription;\n};\n\nSubscriptionObserver.prototype = redefineAll({}, {\n next: function next(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n try {\n var m = getMethod(observer.next);\n if (m) return m.call(observer, value);\n } catch (e) {\n try {\n closeSubscription(subscription);\n } finally {\n throw e;\n }\n }\n }\n },\n error: function error(value) {\n var subscription = this._s;\n if (subscriptionClosed(subscription)) throw value;\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.error);\n if (!m) throw value;\n value = m.call(observer, value);\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n },\n complete: function complete(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.complete);\n value = m ? m.call(observer, value) : undefined;\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n }\n }\n});\n\nvar $Observable = function Observable(subscriber) {\n anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);\n};\n\nredefineAll($Observable.prototype, {\n subscribe: function subscribe(observer) {\n return new Subscription(observer, this._f);\n },\n forEach: function forEach(fn) {\n var that = this;\n return new (core.Promise || global.Promise)(function (resolve, reject) {\n aFunction(fn);\n var subscription = that.subscribe({\n next: function (value) {\n try {\n return fn(value);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n});\n\nredefineAll($Observable, {\n from: function from(x) {\n var C = typeof this === 'function' ? this : $Observable;\n var method = getMethod(anObject(x)[OBSERVABLE]);\n if (method) {\n var observable = anObject(method.call(x));\n return observable.constructor === C ? observable : new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n return new C(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n try {\n if (forOf(x, false, function (it) {\n observer.next(it);\n if (done) return RETURN;\n }) === RETURN) return;\n } catch (e) {\n if (done) throw e;\n observer.error(e);\n return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n },\n of: function of() {\n for (var i = 0, l = arguments.length, items = new Array(l); i < l;) items[i] = arguments[i++];\n return new (typeof this === 'function' ? this : $Observable)(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n for (var j = 0; j < items.length; ++j) {\n observer.next(items[j]);\n if (done) return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n }\n});\n\nhide($Observable.prototype, OBSERVABLE, function () { return this; });\n\n$export($export.G, { Observable: $Observable });\n\n__webpack_require__(54)('Observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JzZXJ2YWJsZS5qcz85ZTFkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZW5wYXJzaW5nL2VzLW9ic2VydmFibGVcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIE9CU0VSVkFCTEUgPSByZXF1aXJlKCcuL193a3MnKSgnb2JzZXJ2YWJsZScpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIFJFVFVSTiA9IGZvck9mLlJFVFVSTjtcblxudmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gZm4gPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGFGdW5jdGlvbihmbik7XG59O1xuXG52YXIgY2xlYW51cFN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uIChzdWJzY3JpcHRpb24pIHtcbiAgdmFyIGNsZWFudXAgPSBzdWJzY3JpcHRpb24uX2M7XG4gIGlmIChjbGVhbnVwKSB7XG4gICAgc3Vic2NyaXB0aW9uLl9jID0gdW5kZWZpbmVkO1xuICAgIGNsZWFudXAoKTtcbiAgfVxufTtcblxudmFyIHN1YnNjcmlwdGlvbkNsb3NlZCA9IGZ1bmN0aW9uIChzdWJzY3JpcHRpb24pIHtcbiAgcmV0dXJuIHN1YnNjcmlwdGlvbi5fbyA9PT0gdW5kZWZpbmVkO1xufTtcblxudmFyIGNsb3NlU3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gKHN1YnNjcmlwdGlvbikge1xuICBpZiAoIXN1YnNjcmlwdGlvbkNsb3NlZChzdWJzY3JpcHRpb24pKSB7XG4gICAgc3Vic2NyaXB0aW9uLl9vID0gdW5kZWZpbmVkO1xuICAgIGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgfVxufTtcblxudmFyIFN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uIChvYnNlcnZlciwgc3Vic2NyaWJlcikge1xuICBhbk9iamVjdChvYnNlcnZlcik7XG4gIHRoaXMuX2MgPSB1bmRlZmluZWQ7XG4gIHRoaXMuX28gPSBvYnNlcnZlcjtcbiAgb2JzZXJ2ZXIgPSBuZXcgU3Vic2NyaXB0aW9uT2JzZXJ2ZXIodGhpcyk7XG4gIHRyeSB7XG4gICAgdmFyIGNsZWFudXAgPSBzdWJzY3JpYmVyKG9ic2VydmVyKTtcbiAgICB2YXIgc3Vic2NyaXB0aW9uID0gY2xlYW51cDtcbiAgICBpZiAoY2xlYW51cCAhPSBudWxsKSB7XG4gICAgICBpZiAodHlwZW9mIGNsZWFudXAudW5zdWJzY3JpYmUgPT09ICdmdW5jdGlvbicpIGNsZWFudXAgPSBmdW5jdGlvbiAoKSB7IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpOyB9O1xuICAgICAgZWxzZSBhRnVuY3Rpb24oY2xlYW51cCk7XG4gICAgICB0aGlzLl9jID0gY2xlYW51cDtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBvYnNlcnZlci5lcnJvcihlKTtcbiAgICByZXR1cm47XG4gIH0gaWYgKHN1YnNjcmlwdGlvbkNsb3NlZCh0aGlzKSkgY2xlYW51cFN1YnNjcmlwdGlvbih0aGlzKTtcbn07XG5cblN1YnNjcmlwdGlvbi5wcm90b3R5cGUgPSByZWRlZmluZUFsbCh7fSwge1xuICB1bnN1YnNjcmliZTogZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7IGNsb3NlU3Vic2NyaXB0aW9uKHRoaXMpOyB9XG59KTtcblxudmFyIFN1YnNjcmlwdGlvbk9ic2VydmVyID0gZnVuY3Rpb24gKHN1YnNjcmlwdGlvbikge1xuICB0aGlzLl9zID0gc3Vic2NyaXB0aW9uO1xufTtcblxuU3Vic2NyaXB0aW9uT2JzZXJ2ZXIucHJvdG90eXBlID0gcmVkZWZpbmVBbGwoe30sIHtcbiAgbmV4dDogZnVuY3Rpb24gbmV4dCh2YWx1ZSkge1xuICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGlzLl9zO1xuICAgIGlmICghc3Vic2NyaXB0aW9uQ2xvc2VkKHN1YnNjcmlwdGlvbikpIHtcbiAgICAgIHZhciBvYnNlcnZlciA9IHN1YnNjcmlwdGlvbi5fbztcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBtID0gZ2V0TWV0aG9kKG9ic2VydmVyLm5leHQpO1xuICAgICAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvYnNlcnZlciwgdmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNsb3NlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZXJyb3I6IGZ1bmN0aW9uIGVycm9yKHZhbHVlKSB7XG4gICAgdmFyIHN1YnNjcmlwdGlvbiA9IHRoaXMuX3M7XG4gICAgaWYgKHN1YnNjcmlwdGlvbkNsb3NlZChzdWJzY3JpcHRpb24pKSB0aHJvdyB2YWx1ZTtcbiAgICB2YXIgb2JzZXJ2ZXIgPSBzdWJzY3JpcHRpb24uX287XG4gICAgc3Vic2NyaXB0aW9uLl9vID0gdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICB2YXIgbSA9IGdldE1ldGhvZChvYnNlcnZlci5lcnJvcik7XG4gICAgICBpZiAoIW0pIHRocm93IHZhbHVlO1xuICAgICAgdmFsdWUgPSBtLmNhbGwob2JzZXJ2ZXIsIHZhbHVlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gY2xlYW51cFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcbiAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHZhbHVlKSB7XG4gICAgdmFyIHN1YnNjcmlwdGlvbiA9IHRoaXMuX3M7XG4gICAgaWYgKCFzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uKSkge1xuICAgICAgdmFyIG9ic2VydmVyID0gc3Vic2NyaXB0aW9uLl9vO1xuICAgICAgc3Vic2NyaXB0aW9uLl9vID0gdW5kZWZpbmVkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIG0gPSBnZXRNZXRob2Qob2JzZXJ2ZXIuY29tcGxldGUpO1xuICAgICAgICB2YWx1ZSA9IG0gPyBtLmNhbGwob2JzZXJ2ZXIsIHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfSBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG59KTtcblxudmFyICRPYnNlcnZhYmxlID0gZnVuY3Rpb24gT2JzZXJ2YWJsZShzdWJzY3JpYmVyKSB7XG4gIGFuSW5zdGFuY2UodGhpcywgJE9ic2VydmFibGUsICdPYnNlcnZhYmxlJywgJ19mJykuX2YgPSBhRnVuY3Rpb24oc3Vic2NyaWJlcik7XG59O1xuXG5yZWRlZmluZUFsbCgkT2JzZXJ2YWJsZS5wcm90b3R5cGUsIHtcbiAgc3Vic2NyaWJlOiBmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHtcbiAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvbihvYnNlcnZlciwgdGhpcy5fZik7XG4gIH0sXG4gIGZvckVhY2g6IGZ1bmN0aW9uIGZvckVhY2goZm4pIHtcbiAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyAoY29yZS5Qcm9taXNlIHx8IGdsb2JhbC5Qcm9taXNlKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBhRnVuY3Rpb24oZm4pO1xuICAgICAgdmFyIHN1YnNjcmlwdGlvbiA9IHRoYXQuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBmbih2YWx1ZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogcmVqZWN0LFxuICAgICAgICBjb21wbGV0ZTogcmVzb2x2ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn0pO1xuXG5yZWRlZmluZUFsbCgkT2JzZXJ2YWJsZSwge1xuICBmcm9tOiBmdW5jdGlvbiBmcm9tKHgpIHtcbiAgICB2YXIgQyA9IHR5cGVvZiB0aGlzID09PSAnZnVuY3Rpb24nID8gdGhpcyA6ICRPYnNlcnZhYmxlO1xuICAgIHZhciBtZXRob2QgPSBnZXRNZXRob2QoYW5PYmplY3QoeClbT0JTRVJWQUJMRV0pO1xuICAgIGlmIChtZXRob2QpIHtcbiAgICAgIHZhciBvYnNlcnZhYmxlID0gYW5PYmplY3QobWV0aG9kLmNhbGwoeCkpO1xuICAgICAgcmV0dXJuIG9ic2VydmFibGUuY29uc3RydWN0b3IgPT09IEMgPyBvYnNlcnZhYmxlIDogbmV3IEMoZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlLnN1YnNjcmliZShvYnNlcnZlcik7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgdmFyIGRvbmUgPSBmYWxzZTtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghZG9uZSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoZm9yT2YoeCwgZmFsc2UsIGZ1bmN0aW9uIChpdCkge1xuICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGl0KTtcbiAgICAgICAgICAgICAgaWYgKGRvbmUpIHJldHVybiBSRVRVUk47XG4gICAgICAgICAgICB9KSA9PT0gUkVUVVJOKSByZXR1cm47XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGRvbmUpIHRocm93IGU7XG4gICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9IG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgZG9uZSA9IHRydWU7IH07XG4gICAgfSk7XG4gIH0sXG4gIG9mOiBmdW5jdGlvbiBvZigpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGgsIGl0ZW1zID0gbmV3IEFycmF5KGwpOyBpIDwgbDspIGl0ZW1zW2ldID0gYXJndW1lbnRzW2krK107XG4gICAgcmV0dXJuIG5ldyAodHlwZW9mIHRoaXMgPT09ICdmdW5jdGlvbicgPyB0aGlzIDogJE9ic2VydmFibGUpKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgdmFyIGRvbmUgPSBmYWxzZTtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghZG9uZSkge1xuICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaXRlbXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQoaXRlbXNbal0pO1xuICAgICAgICAgICAgaWYgKGRvbmUpIHJldHVybjtcbiAgICAgICAgICB9IG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgZG9uZSA9IHRydWU7IH07XG4gICAgfSk7XG4gIH1cbn0pO1xuXG5oaWRlKCRPYnNlcnZhYmxlLnByb3RvdHlwZSwgT0JTRVJWQUJMRSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbiRleHBvcnQoJGV4cG9ydC5HLCB7IE9ic2VydmFibGU6ICRPYnNlcnZhYmxlIH0pO1xuXG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKCdPYnNlcnZhYmxlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9ic2VydmFibGUuanNcbi8vIG1vZHVsZSBpZCA9IDQwOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///408\n")},function(module,exports,__webpack_require__){eval("// ie9- setTimeout & setInterval additional parameters fix\nvar global = __webpack_require__(4);\nvar $export = __webpack_require__(0);\nvar userAgent = __webpack_require__(127);\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudGltZXJzLmpzP2JmYzUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaWU5LSBzZXRUaW1lb3V0ICYgc2V0SW50ZXJ2YWwgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZpeFxudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuL191c2VyLWFnZW50Jyk7XG52YXIgc2xpY2UgPSBbXS5zbGljZTtcbnZhciBNU0lFID0gL01TSUUgLlxcLi8udGVzdCh1c2VyQWdlbnQpOyAvLyA8LSBkaXJ0eSBpZTktIGNoZWNrXG52YXIgd3JhcCA9IGZ1bmN0aW9uIChzZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChmbiwgdGltZSAvKiAsIC4uLmFyZ3MgKi8pIHtcbiAgICB2YXIgYm91bmRBcmdzID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XG4gICAgdmFyIGFyZ3MgPSBib3VuZEFyZ3MgPyBzbGljZS5jYWxsKGFyZ3VtZW50cywgMikgOiBmYWxzZTtcbiAgICByZXR1cm4gc2V0KGJvdW5kQXJncyA/IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgICAgKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nID8gZm4gOiBGdW5jdGlvbihmbikpLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gOiBmbiwgdGltZSk7XG4gIH07XG59O1xuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LkIgKyAkZXhwb3J0LkYgKiBNU0lFLCB7XG4gIHNldFRpbWVvdXQ6IHdyYXAoZ2xvYmFsLnNldFRpbWVvdXQpLFxuICBzZXRJbnRlcnZhbDogd3JhcChnbG9iYWwuc2V0SW50ZXJ2YWwpXG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudGltZXJzLmpzXG4vLyBtb2R1bGUgaWQgPSA0MDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///409\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar $task = __webpack_require__(123);\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuaW1tZWRpYXRlLmpzPzc2MjciXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKTtcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5CLCB7XG4gIHNldEltbWVkaWF0ZTogJHRhc2suc2V0LFxuICBjbGVhckltbWVkaWF0ZTogJHRhc2suY2xlYXJcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5pbW1lZGlhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDQxMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///410\n")},function(module,exports,__webpack_require__){eval("var $iterators = __webpack_require__(122);\nvar getKeys = __webpack_require__(50);\nvar redefine = __webpack_require__(19);\nvar global = __webpack_require__(4);\nvar hide = __webpack_require__(18);\nvar Iterators = __webpack_require__(63);\nvar wks = __webpack_require__(8);\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzPzdmMWQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRpdGVyYXRvcnMgPSByZXF1aXJlKCcuL2VzNi5hcnJheS5pdGVyYXRvcicpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIHdrcyA9IHJlcXVpcmUoJy4vX3drcycpO1xudmFyIElURVJBVE9SID0gd2tzKCdpdGVyYXRvcicpO1xudmFyIFRPX1NUUklOR19UQUcgPSB3a3MoJ3RvU3RyaW5nVGFnJyk7XG52YXIgQXJyYXlWYWx1ZXMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbnZhciBET01JdGVyYWJsZXMgPSB7XG4gIENTU1J1bGVMaXN0OiB0cnVlLCAvLyBUT0RPOiBOb3Qgc3BlYyBjb21wbGlhbnQsIHNob3VsZCBiZSBmYWxzZS5cbiAgQ1NTU3R5bGVEZWNsYXJhdGlvbjogZmFsc2UsXG4gIENTU1ZhbHVlTGlzdDogZmFsc2UsXG4gIENsaWVudFJlY3RMaXN0OiBmYWxzZSxcbiAgRE9NUmVjdExpc3Q6IGZhbHNlLFxuICBET01TdHJpbmdMaXN0OiBmYWxzZSxcbiAgRE9NVG9rZW5MaXN0OiB0cnVlLFxuICBEYXRhVHJhbnNmZXJJdGVtTGlzdDogZmFsc2UsXG4gIEZpbGVMaXN0OiBmYWxzZSxcbiAgSFRNTEFsbENvbGxlY3Rpb246IGZhbHNlLFxuICBIVE1MQ29sbGVjdGlvbjogZmFsc2UsXG4gIEhUTUxGb3JtRWxlbWVudDogZmFsc2UsXG4gIEhUTUxTZWxlY3RFbGVtZW50OiBmYWxzZSxcbiAgTWVkaWFMaXN0OiB0cnVlLCAvLyBUT0RPOiBOb3Qgc3BlYyBjb21wbGlhbnQsIHNob3VsZCBiZSBmYWxzZS5cbiAgTWltZVR5cGVBcnJheTogZmFsc2UsXG4gIE5hbWVkTm9kZU1hcDogZmFsc2UsXG4gIE5vZGVMaXN0OiB0cnVlLFxuICBQYWludFJlcXVlc3RMaXN0OiBmYWxzZSxcbiAgUGx1Z2luOiBmYWxzZSxcbiAgUGx1Z2luQXJyYXk6IGZhbHNlLFxuICBTVkdMZW5ndGhMaXN0OiBmYWxzZSxcbiAgU1ZHTnVtYmVyTGlzdDogZmFsc2UsXG4gIFNWR1BhdGhTZWdMaXN0OiBmYWxzZSxcbiAgU1ZHUG9pbnRMaXN0OiBmYWxzZSxcbiAgU1ZHU3RyaW5nTGlzdDogZmFsc2UsXG4gIFNWR1RyYW5zZm9ybUxpc3Q6IGZhbHNlLFxuICBTb3VyY2VCdWZmZXJMaXN0OiBmYWxzZSxcbiAgU3R5bGVTaGVldExpc3Q6IHRydWUsIC8vIFRPRE86IE5vdCBzcGVjIGNvbXBsaWFudCwgc2hvdWxkIGJlIGZhbHNlLlxuICBUZXh0VHJhY2tDdWVMaXN0OiBmYWxzZSxcbiAgVGV4dFRyYWNrTGlzdDogZmFsc2UsXG4gIFRvdWNoTGlzdDogZmFsc2Vcbn07XG5cbmZvciAodmFyIGNvbGxlY3Rpb25zID0gZ2V0S2V5cyhET01JdGVyYWJsZXMpLCBpID0gMDsgaSA8IGNvbGxlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gIHZhciBOQU1FID0gY29sbGVjdGlvbnNbaV07XG4gIHZhciBleHBsaWNpdCA9IERPTUl0ZXJhYmxlc1tOQU1FXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIHZhciBrZXk7XG4gIGlmIChwcm90bykge1xuICAgIGlmICghcHJvdG9bSVRFUkFUT1JdKSBoaWRlKHByb3RvLCBJVEVSQVRPUiwgQXJyYXlWYWx1ZXMpO1xuICAgIGlmICghcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICAgIEl0ZXJhdG9yc1tOQU1FXSA9IEFycmF5VmFsdWVzO1xuICAgIGlmIChleHBsaWNpdCkgZm9yIChrZXkgaW4gJGl0ZXJhdG9ycykgaWYgKCFwcm90b1trZXldKSByZWRlZmluZShwcm90bywga2V5LCAkaXRlcmF0b3JzW2tleV0sIHRydWUpO1xuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qc1xuLy8gbW9kdWxlIGlkID0gNDExXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///411\n")},function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(global) {/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n "use strict";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === "function" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || "@@iterator";\n var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";\n var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";\n\n var inModule = typeof module === "object";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we\'re in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don\'t bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we\'re in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there\'s no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don\'t have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: "normal", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: "throw", arg: err };\n }\n }\n\n var GenStateSuspendedStart = "suspendedStart";\n var GenStateSuspendedYield = "suspendedYield";\n var GenStateExecuting = "executing";\n var GenStateCompleted = "completed";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don\'t natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = "GeneratorFunction";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n ["next", "throw", "return"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === "function" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === "GeneratorFunction"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = "GeneratorFunction";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, "__await")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === "throw") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === "object" &&\n hasOwn.call(value, "__await")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke("next", value, resolve, reject);\n }, function(err) {\n invoke("throw", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n if (typeof global.process === "object" && global.process.domain) {\n invoke = global.process.domain.bind(invoke);\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error("Generator is already running");\n }\n\n if (state === GenStateCompleted) {\n if (method === "throw") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === "next") {\n // Setting context._sent for legacy support of Babel\'s\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === "throw") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === "return") {\n context.abrupt("return", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === "normal") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === "throw") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = "throw";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === "throw") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = "return";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === "throw") {\n // If maybeInvokeDelegate(context) changed context.method from\n // "return" to "throw", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = "throw";\n context.arg = new TypeError(\n "The iterator does not provide a \'throw\' method");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === "throw") {\n context.method = "throw";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = "throw";\n context.arg = new TypeError("iterator result is not an object");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was "throw" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was "next", forget context.arg since it has been\n // "consumed" by the delegate iterator. If context.method was\n // "return", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== "return") {\n context.method = "next";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = "Generator";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers\' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn\'t happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return "[object Generator]";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = "normal";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: "root" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === "function") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel\'s\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = "next";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === "t" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === "throw") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = "throw";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = "next";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === "root") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle("end");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, "catchLoc");\n var hasFinally = hasOwn.call(entry, "finallyLoc");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error("try statement without catch or finally");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, "finallyLoc") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === "break" ||\n type === "continue") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = "next";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === "throw") {\n throw record.arg;\n }\n\n if (record.type === "break" ||\n record.type === "continue") {\n this.next = record.arg;\n } else if (record.type === "return") {\n this.rval = this.arg = record.arg;\n this.method = "return";\n this.next = "end";\n } else if (record.type === "normal" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n "catch": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === "throw") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error("illegal catch attempt");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === "next") {\n // Deliberately forget the last sent value so that we don\'t\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === "object" ? global :\n typeof window === "object" ? window :\n typeof self === "object" ? self : this\n);\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(147)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXBvbHlmaWxsL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanM/Y2U0NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBodHRwczovL3Jhdy5naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL21hc3Rlci9MSUNFTlNFIGZpbGUuIEFuXG4gKiBhZGRpdGlvbmFsIGdyYW50IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW5cbiAqIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4hKGZ1bmN0aW9uKGdsb2JhbCkge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICB2YXIgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiO1xuICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuXG4gIHZhciBpbk1vZHVsZSA9IHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCI7XG4gIHZhciBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZTtcbiAgaWYgKHJ1bnRpbWUpIHtcbiAgICBpZiAoaW5Nb2R1bGUpIHtcbiAgICAgIC8vIElmIHJlZ2VuZXJhdG9yUnVudGltZSBpcyBkZWZpbmVkIGdsb2JhbGx5IGFuZCB3ZSdyZSBpbiBhIG1vZHVsZSxcbiAgICAgIC8vIG1ha2UgdGhlIGV4cG9ydHMgb2JqZWN0IGlkZW50aWNhbCB0byByZWdlbmVyYXRvclJ1bnRpbWUuXG4gICAgICBtb2R1bGUuZXhwb3J0cyA9IHJ1bnRpbWU7XG4gICAgfVxuICAgIC8vIERvbid0IGJvdGhlciBldmFsdWF0aW5nIHRoZSByZXN0IG9mIHRoaXMgZmlsZSBpZiB0aGUgcnVudGltZSB3YXNcbiAgICAvLyBhbHJlYWR5IGRlZmluZWQgZ2xvYmFsbHkuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRGVmaW5lIHRoZSBydW50aW1lIGdsb2JhbGx5IChhcyBleHBlY3RlZCBieSBnZW5lcmF0ZWQgY29kZSkgYXMgZWl0aGVyXG4gIC8vIG1vZHVsZS5leHBvcnRzIChpZiB3ZSdyZSBpbiBhIG1vZHVsZSkgb3IgYSBuZXcsIGVtcHR5IG9iamVjdC5cbiAgcnVudGltZSA9IGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWUgPSBpbk1vZHVsZSA/IG1vZHVsZS5leHBvcnRzIDoge307XG5cbiAgZnVuY3Rpb24gd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIC8vIElmIG91dGVyRm4gcHJvdmlkZWQgYW5kIG91dGVyRm4ucHJvdG90eXBlIGlzIGEgR2VuZXJhdG9yLCB0aGVuIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yLlxuICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yO1xuICAgIHZhciBnZW5lcmF0b3IgPSBPYmplY3QuY3JlYXRlKHByb3RvR2VuZXJhdG9yLnByb3RvdHlwZSk7XG4gICAgdmFyIGNvbnRleHQgPSBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSk7XG5cbiAgICAvLyBUaGUgLl9pbnZva2UgbWV0aG9kIHVuaWZpZXMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzLlxuICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH1cbiAgcnVudGltZS53cmFwID0gd3JhcDtcblxuICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG4gIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtlIGEgY2xvc3VyZSB0byBiZVxuICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcbiAgLy8gdG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1bWluZ1xuICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcbiAgLy8gb25seSBhZGRpdGlvbmFsIGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaFxuICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInRocm93XCIsIGFyZzogZXJyIH07XG4gICAgfVxuICB9XG5cbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG4gIC8vIFJldHVybmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBpbm5lckZuIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXNcbiAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG4gIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZFxuICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG5cbiAgLy8gVGhpcyBpcyBhIHBvbHlmaWxsIGZvciAlSXRlcmF0b3JQcm90b3R5cGUlIGZvciBlbnZpcm9ubWVudHMgdGhhdFxuICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LlxuICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgSXRlcmF0b3JQcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbiAgdmFyIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG8gJiYgZ2V0UHJvdG8oZ2V0UHJvdG8odmFsdWVzKFtdKSkpO1xuICBpZiAoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgJiZcbiAgICAgIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPcCAmJlxuICAgICAgaGFzT3duLmNhbGwoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUsIGl0ZXJhdG9yU3ltYm9sKSkge1xuICAgIC8vIFRoaXMgZW52aXJvbm1lbnQgaGFzIGEgbmF0aXZlICVJdGVyYXRvclByb3RvdHlwZSU7IHVzZSBpdCBpbnN0ZWFkXG4gICAgLy8gb2YgdGhlIHBvbHlmaWxsLlxuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gTmF0aXZlSXRlcmF0b3JQcm90b3R5cGU7XG4gIH1cblxuICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPVxuICAgIEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbjtcbiAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVbdG9TdHJpbmdUYWdTeW1ib2xdID1cbiAgICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBwcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICB2YXIgY3RvciA9IHR5cGVvZiBnZW5GdW4gPT09IFwiZnVuY3Rpb25cIiAmJiBnZW5GdW4uY29uc3RydWN0b3I7XG4gICAgcmV0dXJuIGN0b3JcbiAgICAgID8gY3RvciA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHxcbiAgICAgICAgLy8gRm9yIHRoZSBuYXRpdmUgR2VuZXJhdG9yRnVuY3Rpb24gY29uc3RydWN0b3IsIHRoZSBiZXN0IHdlIGNhblxuICAgICAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuXG4gICAgICAgIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgPT09IFwiR2VuZXJhdG9yRnVuY3Rpb25cIlxuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuICBydW50aW1lLm1hcmsgPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdlbkZ1bi5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgICAgIGlmICghKHRvU3RyaW5nVGFnU3ltYm9sIGluIGdlbkZ1bikpIHtcbiAgICAgICAgZ2VuRnVuW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcbiAgICAgIH1cbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgcnVudGltZS5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChnZW5lcmF0b3JbbWV0aG9kXSwgZ2VuZXJhdG9yLCBhcmcpO1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlY29yZC5hcmc7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGludm9rZShcIm5leHRcIiwgdmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJ0aHJvd1wiLCBlcnIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uIElmIHRoZSBQcm9taXNlIGlzIHJlamVjdGVkLCBob3dldmVyLCB0aGVcbiAgICAgICAgICAvLyByZXN1bHQgZm9yIHRoaXMgaXRlcmF0aW9uIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZVxuICAgICAgICAgIC8vIHJlYXNvbi4gTm90ZSB0aGF0IHJlamVjdGlvbnMgb2YgeWllbGRlZCBQcm9taXNlcyBhcmUgbm90XG4gICAgICAgICAgLy8gdGhyb3duIGJhY2sgaW50byB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhcyBpcyB0aGUgY2FzZVxuICAgICAgICAgIC8vIHdoZW4gYW4gYXdhaXRlZCBQcm9taXNlIGlzIHJlamVjdGVkLiBUaGlzIGRpZmZlcmVuY2UgaW5cbiAgICAgICAgICAvLyBiZWhhdmlvciBiZXR3ZWVuIHlpZWxkIGFuZCBhd2FpdCBpcyBpbXBvcnRhbnQsIGJlY2F1c2UgaXRcbiAgICAgICAgICAvLyBhbGxvd3MgdGhlIGNvbnN1bWVyIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggdGhlIHlpZWxkZWRcbiAgICAgICAgICAvLyByZWplY3Rpb24gKHN3YWxsb3cgaXQgYW5kIGNvbnRpbnVlLCBtYW51YWxseSAudGhyb3cgaXQgYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGdlbmVyYXRvciwgYWJhbmRvbiBpdGVyYXRpb24sIHdoYXRldmVyKS4gV2l0aFxuICAgICAgICAgIC8vIGF3YWl0LCBieSBjb250cmFzdCwgdGhlcmUgaXMgbm8gb3Bwb3J0dW5pdHkgdG8gZXhhbWluZSB0aGVcbiAgICAgICAgICAvLyByZWplY3Rpb24gcmVhc29uIG91dHNpZGUgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiwgc28gdGhlXG4gICAgICAgICAgLy8gb25seSBvcHRpb24gaXMgdG8gdGhyb3cgaXQgZnJvbSB0aGUgYXdhaXQgZXhwcmVzc2lvbiwgYW5kXG4gICAgICAgICAgLy8gbGV0IHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gaGFuZGxlIHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGdsb2JhbC5wcm9jZXNzID09PSBcIm9iamVjdFwiICYmIGdsb2JhbC5wcm9jZXNzLmRvbWFpbikge1xuICAgICAgaW52b2tlID0gZ2xvYmFsLnByb2Nlc3MuZG9tYWluLmJpbmQoaW52b2tlKTtcbiAgICB9XG5cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuXG4gICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICBydW50aW1lLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yO1xuXG4gIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2ZcbiAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICBydW50aW1lLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdClcbiAgICApO1xuXG4gICAgcmV0dXJuIHJ1bnRpbWUuaXNHZW5lcmF0b3JGdW5jdGlvbihvdXRlckZuKVxuICAgICAgPyBpdGVyIC8vIElmIG91dGVyRm4gaXMgYSBnZW5lcmF0b3IsIHJldHVybiB0aGUgZnVsbCBpdGVyYXRvci5cbiAgICAgIDogaXRlci5uZXh0KCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyByZXN1bHQudmFsdWUgOiBpdGVyLm5leHQoKTtcbiAgICAgICAgfSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KSB7XG4gICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDtcblxuICAgIHJldHVybiBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcpIHtcbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVFeGVjdXRpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUNvbXBsZXRlZCkge1xuICAgICAgICBpZiAobWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICB0aHJvdyBhcmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZSBmb3JnaXZpbmcsIHBlciAyNS4zLjMuMy4zIG9mIHRoZSBzcGVjOlxuICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lXG4gICAgICAgIHJldHVybiBkb25lUmVzdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQubWV0aG9kID0gbWV0aG9kO1xuICAgICAgY29udGV4dC5hcmcgPSBhcmc7XG5cbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IGNvbnRleHQuZGVsZWdhdGU7XG4gICAgICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgICAgIHZhciBkZWxlZ2F0ZVJlc3VsdCA9IG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0ID09PSBDb250aW51ZVNlbnRpbmVsKSBjb250aW51ZTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZVJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgICAgLy8gU2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICBjb250ZXh0LnNlbnQgPSBjb250ZXh0Ll9zZW50ID0gY29udGV4dC5hcmc7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgICAgdGhyb3cgY29udGV4dC5hcmc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZyk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICAgIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGNvbnRleHQuYXJnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlID0gR2VuU3RhdGVFeGVjdXRpbmc7XG5cbiAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIpIHtcbiAgICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gaW5uZXJGbiwgd2UgbGVhdmUgc3RhdGUgPT09XG4gICAgICAgICAgLy8gR2VuU3RhdGVFeGVjdXRpbmcgYW5kIGxvb3AgYmFjayBmb3IgYW5vdGhlciBpbnZvY2F0aW9uLlxuICAgICAgICAgIHN0YXRlID0gY29udGV4dC5kb25lXG4gICAgICAgICAgICA/IEdlblN0YXRlQ29tcGxldGVkXG4gICAgICAgICAgICA6IEdlblN0YXRlU3VzcGVuZGVkWWllbGQ7XG5cbiAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGludWVTZW50aW5lbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiByZWNvcmQuYXJnLFxuICAgICAgICAgICAgZG9uZTogY29udGV4dC5kb25lXG4gICAgICAgICAgfTtcblxuICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBleGNlcHRpb24gYnkgbG9vcGluZyBiYWNrIGFyb3VuZCB0byB0aGVcbiAgICAgICAgICAvLyBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKSBjYWxsIGFib3ZlLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvLyBDYWxsIGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXShjb250ZXh0LmFyZykgYW5kIGhhbmRsZSB0aGVcbiAgLy8gcmVzdWx0LCBlaXRoZXIgYnkgcmV0dXJuaW5nIGEgeyB2YWx1ZSwgZG9uZSB9IHJlc3VsdCBmcm9tIHRoZVxuICAvLyBkZWxlZ2F0ZSBpdGVyYXRvciwgb3IgYnkgbW9kaWZ5aW5nIGNvbnRleHQubWV0aG9kIGFuZCBjb250ZXh0LmFyZyxcbiAgLy8gc2V0dGluZyBjb250ZXh0LmRlbGVnYXRlIHRvIG51bGwsIGFuZCByZXR1cm5pbmcgdGhlIENvbnRpbnVlU2VudGluZWwuXG4gIGZ1bmN0aW9uIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdO1xuICAgIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gQSAudGhyb3cgb3IgLnJldHVybiB3aGVuIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgbm8gLnRocm93XG4gICAgICAvLyBtZXRob2QgYWx3YXlzIHRlcm1pbmF0ZXMgdGhlIHlpZWxkKiBsb29wLlxuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIGlmIChkZWxlZ2F0ZS5pdGVyYXRvci5yZXR1cm4pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgICAgLy8gXCJyZXR1cm5cIiB0byBcInRocm93XCIsIGxldCB0aGF0IG92ZXJyaWRlIHRoZSBUeXBlRXJyb3IgYmVsb3cuXG4gICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBHcFt0b1N0cmluZ1RhZ1N5bWJvbF0gPSBcIkdlbmVyYXRvclwiO1xuXG4gIC8vIEEgR2VuZXJhdG9yIHNob3VsZCBhbHdheXMgcmV0dXJuIGl0c2VsZiBhcyB0aGUgaXRlcmF0b3Igb2JqZWN0IHdoZW4gdGhlXG4gIC8vIEBAaXRlcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkIG9uIGl0LiBTb21lIGJyb3dzZXJzJyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlXG4gIC8vIGl0ZXJhdG9yIHByb3RvdHlwZSBjaGFpbiBpbmNvcnJlY3RseSBpbXBsZW1lbnQgdGhpcywgY2F1c2luZyB0aGUgR2VuZXJhdG9yXG4gIC8vIG9iamVjdCB0byBub3QgYmUgcmV0dXJuZWQgZnJvbSB0aGlzIGNhbGwuIFRoaXMgZW5zdXJlcyB0aGF0IGRvZXNuJ3QgaGFwcGVuLlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2lzc3Vlcy8yNzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgR3BbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgR3AudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IEdlbmVyYXRvcl1cIjtcbiAgfTtcblxuICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkobG9jcykge1xuICAgIHZhciBlbnRyeSA9IHsgdHJ5TG9jOiBsb2NzWzBdIH07XG5cbiAgICBpZiAoMSBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV07XG4gICAgfVxuXG4gICAgaWYgKDIgaW4gbG9jcykge1xuICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07XG4gICAgICBlbnRyeS5hZnRlckxvYyA9IGxvY3NbM107XG4gICAgfVxuXG4gICAgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzZXRUcnlFbnRyeShlbnRyeSkge1xuICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uIHx8IHt9O1xuICAgIHJlY29yZC50eXBlID0gXCJub3JtYWxcIjtcbiAgICBkZWxldGUgcmVjb3JkLmFyZztcbiAgICBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuICB9XG5cbiAgZnVuY3Rpb24gQ29udGV4dCh0cnlMb2NzTGlzdCkge1xuICAgIC8vIFRoZSByb290IGVudHJ5IG9iamVjdCAoZWZmZWN0aXZlbHkgYSB0cnkgc3RhdGVtZW50IHdpdGhvdXQgYSBjYXRjaFxuICAgIC8vIG9yIGEgZmluYWxseSBibG9jaykgZ2l2ZXMgdXMgYSBwbGFjZSB0byBzdG9yZSB2YWx1ZXMgdGhyb3duIGZyb21cbiAgICAvLyBsb2NhdGlvbnMgd2hlcmUgdGhlcmUgaXMgbm8gZW5jbG9zaW5nIHRyeSBzdGF0ZW1lbnQuXG4gICAgdGhpcy50cnlFbnRyaWVzID0gW3sgdHJ5TG9jOiBcInJvb3RcIiB9XTtcbiAgICB0cnlMb2NzTGlzdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyk7XG4gICAgdGhpcy5yZXNldCh0cnVlKTtcbiAgfVxuXG4gIHJ1bnRpbWUua2V5cyA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgfVxuICAgIGtleXMucmV2ZXJzZSgpO1xuXG4gICAgLy8gUmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuIG9iamVjdCB3aXRoIGEgbmV4dCBtZXRob2QsIHdlIGtlZXBcbiAgICAvLyB0aGluZ3Mgc2ltcGxlIGFuZCByZXR1cm4gdGhlIG5leHQgZnVuY3Rpb24gaXRzZWxmLlxuICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgd2hpbGUgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkge1xuICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG4gICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVG8gYXZvaWQgY3JlYXRpbmcgYW4gYWRkaXRpb25hbCBvYmplY3QsIHdlIGp1c3QgaGFuZyB0aGUgLnZhbHVlXG4gICAgICAvLyBhbmQgLmRvbmUgcHJvcGVydGllcyBvZmYgdGhlIG5leHQgZnVuY3Rpb24gb2JqZWN0IGl0c2VsZi4gVGhpc1xuICAgICAgLy8gYWxzbyBlbnN1cmVzIHRoYXQgdGhlIG1pbmlmaWVyIHdpbGwgbm90IGFub255bWl6ZSB0aGUgZnVuY3Rpb24uXG4gICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHtcbiAgICBpZiAoaXRlcmFibGUpIHtcbiAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcbiAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBpdGVyYWJsZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc05hTihpdGVyYWJsZS5sZW5ndGgpKSB7XG4gICAgICAgIHZhciBpID0gLTEsIG5leHQgPSBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHtcbiAgICAgICAgICAgICAgbmV4dC52YWx1ZSA9IGl0ZXJhYmxlW2ldO1xuICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV4dC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5leHQubmV4dCA9IG5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHdpdGggbm8gdmFsdWVzLlxuICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcbiAgfVxuICBydW50aW1lLnZhbHVlcyA9IHZhbHVlcztcblxuICBmdW5jdGlvbiBkb25lUmVzdWx0KCkge1xuICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgfVxuXG4gIENvbnRleHQucHJvdG90eXBlID0ge1xuICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LFxuXG4gICAgcmVzZXQ6IGZ1bmN0aW9uKHNraXBUZW1wUmVzZXQpIHtcbiAgICAgIHRoaXMucHJldiA9IDA7XG4gICAgICB0aGlzLm5leHQgPSAwO1xuICAgICAgLy8gUmVzZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICB0aGlzLmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KTtcblxuICAgICAgaWYgKCFza2lwVGVtcFJlc2V0KSB7XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6XG4gICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApID09PSBcInRcIiAmJlxuICAgICAgICAgICAgICBoYXNPd24uY2FsbCh0aGlzLCBuYW1lKSAmJlxuICAgICAgICAgICAgICAhaXNOYU4oK25hbWUuc2xpY2UoMSkpKSB7XG4gICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRyeUVudHJpZXNbMF07XG4gICAgICB2YXIgcm9vdFJlY29yZCA9IHJvb3RFbnRyeS5jb21wbGV0aW9uO1xuICAgICAgaWYgKHJvb3RSZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJvb3RSZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5ydmFsO1xuICAgIH0sXG5cbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7XG4gICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRleHQgPSB0aGlzO1xuICAgICAgZnVuY3Rpb24gaGFuZGxlKGxvYywgY2F1Z2h0KSB7XG4gICAgICAgIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiO1xuICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uO1xuICAgICAgICBjb250ZXh0Lm5leHQgPSBsb2M7XG5cbiAgICAgICAgaWYgKGNhdWdodCkge1xuICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG4gICAgICAgICAgLy8gdGhlbiBsZXQgdGhhdCBjYXRjaCBibG9jayBoYW5kbGUgdGhlIGV4Y2VwdGlvbiBub3JtYWxseS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICEhIGNhdWdodDtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IFwicm9vdFwiKSB7XG4gICAgICAgICAgLy8gRXhjZXB0aW9uIHRocm93biBvdXRzaWRlIG9mIGFueSB0cnkgYmxvY2sgdGhhdCBjb3VsZCBoYW5kbGVcbiAgICAgICAgICAvLyBpdCwgc28gc2V0IHRoZSBjb21wbGV0aW9uIHZhbHVlIG9mIHRoZSBlbnRpcmUgZnVuY3Rpb24gdG9cbiAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpO1xuICAgICAgICAgIHZhciBoYXNGaW5hbGx5ID0gaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKTtcblxuICAgICAgICAgIGlmIChoYXNDYXRjaCAmJiBoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYWJydXB0OiBmdW5jdGlvbih0eXBlLCBhcmcpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKSAmJlxuICAgICAgICAgICAgdGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmluYWxseUVudHJ5ICYmXG4gICAgICAgICAgKHR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgICB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmXG4gICAgICAgICAgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiZcbiAgICAgICAgICBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgLy8gSWdub3JlIHRoZSBmaW5hbGx5IGVudHJ5IGlmIGNvbnRyb2wgaXMgbm90IGp1bXBpbmcgdG8gYVxuICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suXG4gICAgICAgIGZpbmFsbHlFbnRyeSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6IHt9O1xuICAgICAgcmVjb3JkLnR5cGUgPSB0eXBlO1xuICAgICAgcmVjb3JkLmFyZyA9IGFyZztcblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSkge1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcbiAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG4gICAgfSxcblxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbihyZWNvcmQsIGFmdGVyTG9jKSB7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgIHJlY29yZC50eXBlID09PSBcImNvbnRpbnVlXCIpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZztcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgdGhpcy5ydmFsID0gdGhpcy5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgIHRoaXMubmV4dCA9IFwiZW5kXCI7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiICYmIGFmdGVyTG9jKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IGFmdGVyTG9jO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9LFxuXG4gICAgZmluaXNoOiBmdW5jdGlvbihmaW5hbGx5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LmZpbmFsbHlMb2MgPT09IGZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlKGVudHJ5LmNvbXBsZXRpb24sIGVudHJ5LmFmdGVyTG9jKTtcbiAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBcImNhdGNoXCI6IGZ1bmN0aW9uKHRyeUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IHRyeUxvYykge1xuICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICB2YXIgdGhyb3duID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhyb3duO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBjb250ZXh0LmNhdGNoIG1ldGhvZCBtdXN0IG9ubHkgYmUgY2FsbGVkIHdpdGggYSBsb2NhdGlvblxuICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgIH0sXG5cbiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbihpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykge1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHtcbiAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG4gICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsXG4gICAgICAgIG5leHRMb2M6IG5leHRMb2NcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgLy8gRGVsaWJlcmF0ZWx5IGZvcmdldCB0aGUgbGFzdCBzZW50IHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3RcbiAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuICAgICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICB9O1xufSkoXG4gIC8vIEFtb25nIHRoZSB2YXJpb3VzIHRyaWNrcyBmb3Igb2J0YWluaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWxcbiAgLy8gb2JqZWN0LCB0aGlzIHNlZW1zIHRvIGJlIHRoZSBtb3N0IHJlbGlhYmxlIHRlY2huaXF1ZSB0aGF0IGRvZXMgbm90XG4gIC8vIHVzZSBpbmRpcmVjdCBldmFsICh3aGljaCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSkuXG4gIHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOlxuICB0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiID8gd2luZG93IDpcbiAgdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDogdGhpc1xuKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXBvbHlmaWxsL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanNcbi8vIG1vZHVsZSBpZCA9IDQxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///412\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(414);\nmodule.exports = __webpack_require__(30).RegExp.escape;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZm4vcmVnZXhwL2VzY2FwZS5qcz81YjA5Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvY29yZS5yZWdleHAuZXNjYXBlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5SZWdFeHAuZXNjYXBlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9mbi9yZWdleHAvZXNjYXBlLmpzXG4vLyBtb2R1bGUgaWQgPSA0MTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///413\n")},function(module,exports,__webpack_require__){eval("// https://github.com/benjamingr/RexExp.escape\nvar $export = __webpack_require__(0);\nvar $re = __webpack_require__(415)(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n$export($export.S, 'RegExp', { escape: function escape(it) { return $re(it); } });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9jb3JlLnJlZ2V4cC5lc2NhcGUuanM/YWY2MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYmVuamFtaW5nci9SZXhFeHAuZXNjYXBlXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRyZSA9IHJlcXVpcmUoJy4vX3JlcGxhY2VyJykoL1tcXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVnRXhwJywgeyBlc2NhcGU6IGZ1bmN0aW9uIGVzY2FwZShpdCkgeyByZXR1cm4gJHJlKGl0KTsgfSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9jb3JlLnJlZ2V4cC5lc2NhcGUuanNcbi8vIG1vZHVsZSBpZCA9IDQxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///414\n")},function(module,exports){eval("module.exports = function (regExp, replace) {\n var replacer = replace === Object(replace) ? function (part) {\n return replace[part];\n } : replace;\n return function (it) {\n return String(it).replace(regExp, replacer);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcmVwbGFjZXIuanM/OWVhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChyZWdFeHAsIHJlcGxhY2UpIHtcbiAgdmFyIHJlcGxhY2VyID0gcmVwbGFjZSA9PT0gT2JqZWN0KHJlcGxhY2UpID8gZnVuY3Rpb24gKHBhcnQpIHtcbiAgICByZXR1cm4gcmVwbGFjZVtwYXJ0XTtcbiAgfSA6IHJlcGxhY2U7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gU3RyaW5nKGl0KS5yZXBsYWNlKHJlZ0V4cCwgcmVwbGFjZXIpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcmVwbGFjZXIuanNcbi8vIG1vZHVsZSBpZCA9IDQxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///415\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _assign = __webpack_require__(97);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _logLevels = __webpack_require__(201);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _Registry = __webpack_require__(440);\n\nvar _Registry2 = _interopRequireDefault(_Registry);\n\nvar _IdentityModule = __webpack_require__(470);\n\nvar _IdentityModule2 = _interopRequireDefault(_IdentityModule);\n\nvar _IdentityManager = __webpack_require__(476);\n\nvar _IdentityManager2 = _interopRequireDefault(_IdentityManager);\n\nvar _PEP = __webpack_require__(477);\n\nvar _PEP2 = _interopRequireDefault(_PEP);\n\nvar _MessageBus = __webpack_require__(488);\n\nvar _MessageBus2 = _interopRequireDefault(_MessageBus);\n\nvar _utils = __webpack_require__(14);\n\nvar _AddressAllocation = __webpack_require__(99);\n\nvar _AddressAllocation2 = _interopRequireDefault(_AddressAllocation);\n\nvar _CryptoManager = __webpack_require__(100);\n\nvar _CryptoManager2 = _interopRequireDefault(_CryptoManager);\n\nvar _Loader = __webpack_require__(492);\n\nvar _Loader2 = _interopRequireDefault(_Loader);\n\nvar _Storage = __webpack_require__(493);\n\nvar _Descriptors = __webpack_require__(494);\n\nvar _Descriptors2 = _interopRequireDefault(_Descriptors);\n\nvar _runtimeConfiguration = __webpack_require__(144);\n\nvar _MsgBusHandlers = __webpack_require__(495);\n\nvar _MsgBusHandlers2 = _interopRequireDefault(_MsgBusHandlers);\n\nvar _runtimeUtils = __webpack_require__(143);\n\nvar _GraphConnector = __webpack_require__(496);\n\nvar _GraphConnector2 = _interopRequireDefault(_GraphConnector);\n\nvar _CoreDiscovery = __webpack_require__(498);\n\nvar _CoreDiscovery2 = _interopRequireDefault(_CoreDiscovery);\n\nvar _DataObjectsStorage = __webpack_require__(499);\n\nvar _DataObjectsStorage2 = _interopRequireDefault(_DataObjectsStorage);\n\nvar _HypertyResourcesStorage = __webpack_require__(503);\n\nvar _HypertyResourcesStorage2 = _interopRequireDefault(_HypertyResourcesStorage);\n\nvar _SyncherManager = __webpack_require__(506);\n\nvar _SyncherManager2 = _interopRequireDefault(_SyncherManager);\n\nvar _SubscriptionManager = __webpack_require__(517);\n\nvar _SubscriptionManager2 = _interopRequireDefault(_SubscriptionManager);\n\nvar _RuntimeCoreCtx = __webpack_require__(519);\n\nvar _RuntimeCoreCtx2 = _interopRequireDefault(_RuntimeCoreCtx);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n\n// import 'babel-polyfill';\n\nvar log = logger.getLogger('RuntimeUA');\n\n//Main dependecies\n\n\n// Log System\n\n/**\r\n * Runtime User Agent Interface will process all the dependecies of the core runtime;\r\n * @author Vitor Silva [vitor-t-silva@telecom.pt]\r\n * @version 0.4.0\r\n *\r\n * @property {runtimeFactory} runtimeFactory - Specific implementation for all environments;\r\n * @property {RuntimeCatalogue} runtimeCatalogue - Catalogue of components can be installed;\r\n * @property {runtimeURL} runtimeURL - This identify the core runtime, should be unique;\r\n * @property {IdentityModule} identityModule - Identity Module;\r\n * @property {PEP} policyEngine - Policy Engine Module;\r\n * @property {Registry} registry - Registry Module;\r\n * @property {MessageBus} messageBus - Message Bus is used like a router to redirect the messages from one component to other(s)\r\n * @property {GraphConnector} graphConnector - Graph Connector handling GUID and contacts\r\n * @property {CoreDiscovery} coreDiscovery - Discovery for discovery hyperties/dataObjects\r\n */\nvar RuntimeUA = function () {\n\n /**\r\n * Create a new instance of Runtime User Agent\r\n * @param {descriptor} runtimeDescriptor - pass all the hyperty runtime descriptor\r\n * @param {runtimeFactory} runtimeFactory - Specific implementation for the environment where the core runtime will run;\r\n * @param {domain} domainURL - specify the domain base for the runtime;\r\n */\n function RuntimeUA(runtimeDescriptor, runtimeFactory, domain) {\n (0, _classCallCheck3.default)(this, RuntimeUA);\n\n if (!runtimeDescriptor) throw new Error('The runtime descriptor is a needed parameter');\n if (!runtimeFactory) throw new Error('The sandbox factory is a needed parameter');\n if (!domain) throw new Error('You need the domain of runtime');\n\n // Configuration object with information related with servers\n this.runtimeConfiguration = (0, _assign2.default)({ domain: domain }, _runtimeConfiguration.runtimeConfiguration);\n this.runtimeFactory = runtimeFactory;\n\n this.log = log;\n this.logLevels = _logLevels.log;\n\n if (runtimeDescriptor.p2pHandlerStub && typeof runtimeDescriptor.p2pHandlerStub === 'string' && runtimeDescriptor.p2pHandlerStub.includes('://')) {\n this.p2p = true;\n } else {\n this.p2p = false;\n }\n\n _runtimeUtils.runtimeUtils.runtimeDescriptor = runtimeDescriptor;\n this.runtimeUtils = _runtimeUtils.runtimeUtils;\n\n this.storages = {};\n\n if (typeof runtimeFactory.createRuntimeCatalogue === 'function') {\n this.runtimeCatalogue = runtimeFactory.createRuntimeCatalogue();\n } else {\n throw new Error('Check your Runtime Factory because it needs the Runtime Catalogue implementation');\n }\n\n if (typeof runtimeFactory.persistenceManager === 'function') {\n this.persistenceManager = runtimeFactory.persistenceManager();\n } else {\n throw new Error('Check your Runtime Factory because it needs the Persistence Manager implementation');\n }\n\n if (typeof runtimeFactory.storageManager === 'function') {\n\n this.storages = (0, _Storage.storage)(runtimeFactory);\n } else {\n throw new Error('Check your Runtime Factory because it needs the Storage Manager implementation');\n }\n\n if (typeof runtimeFactory.runtimeCapabilities === 'function') {\n this.runtimeCapabilities = runtimeFactory.runtimeCapabilities(this.storages.capabilities);\n } else {\n log.info('Check your RuntimeFactory because it needs the Runtime Capabilities implementation');\n }\n }\n\n /**\r\n * Intialize the installation of runtime\r\n *\r\n * @access public\r\n * @return {Promise} this is Promise and if the installation process happened without any problems returns true otherwise the error.\r\n *\r\n * @memberOf RuntimeUA\r\n */\n\n\n (0, _createClass3.default)(RuntimeUA, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this2.domain = _this2.runtimeConfiguration.domain;\n\n try {\n var getCapabilities = _this2.runtimeCapabilities.getRuntimeCapabilities();\n var getRuntimeURL = _this2.storages.runtime.get('runtime:URL');\n var getStoredDataObjects = _this2.storages.syncherManager.get('syncherManager:ObjectURLs');\n var getHypertyStorageObjects = _this2.storages.hypertyResources.get();\n var getP2PHandlerURL = _this2.storages.runtime.get('p2pHandler:URL');\n\n _promise2.default.all([getRuntimeURL, getCapabilities, getStoredDataObjects, getHypertyStorageObjects, getP2PHandlerURL]).then(function (results) {\n\n _this2.runtimeURL = results[0] ? results[0].runtimeURL : results[0];\n if (!_this2.runtimeURL) {\n _this2.runtimeURL = 'runtime://' + _this2.domain + '/' + (0, _utils.generateGUID)();\n _this2.storages.runtime.set('runtime:URL', 1, { runtimeURL: _this2.runtimeURL });\n }\n\n _this2.capabilities = results[1];\n (0, _assign2.default)(_runtimeUtils.runtimeUtils.runtimeCapabilities.constraints, results[1]);\n\n _this2._dataObjectsStorage = new _DataObjectsStorage2.default(_this2.storages.syncherManager, results[2] || {});\n\n _this2._hypertyResources = results[3] || {};\n\n _this2.p2pHandlerURL = results[4] ? results[4].p2pHandlerURL : results[4];\n if (!_this2.p2pHandlerURL) {\n _this2.p2pHandlerURL = _this2.runtimeURL + '/p2phandler/' + (0, _utils.generateGUID)();\n log.info('[RuntimeUA - init] P2PHandlerURL: ', _this2.p2pHandlerURL);\n\n _this2.storages.runtime.set('p2pHandler:URL', 1, { p2pHandlerURL: _this2.p2pHandlerURL });\n }\n\n return _this2._loadComponents();\n }).then(function (status) {\n\n _this2._hypertyResourcesStorage = new _HypertyResourcesStorage2.default(_this2.runtimeURL, _this2.messageBus, _this2.storages.hypertyResources, _this2._hypertyResources);\n\n if (_this2.p2p) {\n log.info('[RuntimeUA - init] load p2pHandler: ', status);\n return _this2._loadP2PHandler();\n } else {\n log.info('[RuntimeUA - init] P2P not supported');\n return 'P2P Not Supported';\n }\n }).then(function (result) {\n log.info('[runtime ua - init] - status: ', result);\n resolve(true);\n }, function (reason) {\n log.error('ERROR: ', reason);\n resolve(true);\n });\n } catch (e) {\n reject(e);\n }\n });\n }\n }, {\n key: '_loadP2PHandler',\n value: function _loadP2PHandler() {\n var _this3 = this;\n\n return new _promise2.default(function (resolve) {\n\n var runtimeDescriptor = _runtimeUtils.runtimeUtils.runtimeDescriptor;\n var p2pStubHandler = runtimeDescriptor.p2pHandlerStub;\n\n var p2pConfig = {\n isHandlerStub: true,\n runtimeURL: _this3.runtimeURL\n };\n\n log.log('[RuntimeUA loadP2PHandler] P2PStubHandler: ', p2pStubHandler);\n\n _this3.loader.loadStub(p2pStubHandler, p2pConfig).then(function (result) {\n\n var runtimeUAURL = _this3.runtimeURL + '/ua';\n var msg = {\n type: 'subscribe',\n from: runtimeUAURL,\n to: 'domain://msg-node.' + _this3.domain + '/sm',\n body: {\n subscribe: [result.url],\n source: _this3.runtimeURL\n }\n };\n\n _this3.messageBus.addListener(runtimeUAURL, function (msg) {\n log.log('[runtime ua - listener] - receive msg: ', msg);\n });\n\n _this3.messageBus.postMessage(msg, function (reply) {\n log.log('[runtime ua - postMessage] - reply: ', reply);\n });\n\n log.info('[runtime ua - p2p installation] - success: ', result);\n resolve(true);\n }).catch(function (reason) {\n log.info('[runtime ua - p2p installation] - fail: ', reason);\n resolve(false);\n });\n });\n }\n\n /**\r\n *\r\n * @access private\r\n * @return {Promise} this is Promise and returns true if all components are loaded with success or an error if someone fails.\r\n *\r\n * @memberOf RuntimeUA\r\n */\n\n }, {\n key: '_loadComponents',\n value: function _loadComponents() {\n var _this4 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n try {\n\n // Prepare the on instance to handle with the fallbacks and runtimeCatalogue;\n _this4.descriptorInstance = new _Descriptors2.default(_this4.runtimeURL, _this4.runtimeCatalogue, _this4.runtimeConfiguration);\n\n // Prepare the loader to load the hyperties, protostubs and idpproxy;\n _this4.loader = new _Loader2.default(_this4.runtimeURL, _this4.runtimeConfiguration, _this4.descriptorInstance);\n\n // Instantiate the identity Module\n _this4.identityModule = new _IdentityModule2.default(_this4.runtimeURL, _this4.runtimeCapabilities, _this4.storages.identity, _this4._dataObjectsStorage, _CryptoManager2.default, _this4.runtimeCatalogue);\n\n // Use the sandbox factory to create an AppSandbox;\n // In the future can be decided by policyEngine if we need\n // create a AppSandbox or not;\n var appSandbox = _this4.runtimeFactory.createAppSandbox();\n\n // Instantiate the Registry Module\n _this4.registry = new _Registry2.default(_this4.runtimeURL, appSandbox, _this4.identityModule, _this4.runtimeCatalogue, _this4.runtimeCapabilities, _this4.storages.registry, _this4.p2pHandlerURL);\n\n // Set the loader to load Hyperties, Stubs and IdpProxies\n _this4.registry.loader = _this4.loader;\n\n // Instantiate the Message Bus\n _this4.messageBus = new _MessageBus2.default(_this4.registry);\n\n // Prepare the address allocation instance;\n _this4.addressAllocation = new _AddressAllocation2.default(_this4.runtimeURL, _this4.messageBus, _this4.registry);\n\n // Instantiate the Policy Engine\n _this4.policyEngine = new _PEP2.default(new _RuntimeCoreCtx2.default(_this4.runtimeURL, _this4.identityModule, _this4.registry, _this4.storages.policy, _this4.runtimeCapabilities));\n\n // Instantiate Discovery\n _this4.coreDiscovery = new _CoreDiscovery2.default(_this4.runtimeURL, _this4.messageBus, _this4.graphConnector, _this4.runtimeFactory, _this4.registry);\n\n // Instantiate the IdentityManager\n _this4.identityManager = new _IdentityManager2.default(_this4.identityModule);\n\n // initialise the CryptoManager\n _CryptoManager2.default.init(_this4.runtimeURL, _this4.runtimeCapabilities, _this4.storages.cryptoManager, _this4._dataObjectsStorage, _this4.registry, _this4.coreDiscovery, _this4.identityModule, _this4.runtimeFactory);\n\n // Instantiate the Graph Connector\n _this4.graphConnector = true ? new _GraphConnector2.default(_this4.runtimeURL, _this4.messageBus, _this4.storageManager) : null;\n\n _this4.handlers = new _MsgBusHandlers2.default(_this4.policyEngine, _this4.identityManager, _CryptoManager2.default);\n\n _this4.messageBus.pipelineOut.handlers = [_this4.handlers.idmHandler, _this4.handlers.pepOutHandler, _this4.handlers.encryptHandler];\n _this4.messageBus.pipelineIn.handlers = [_this4.handlers.decryptHandler, _this4.handlers.pepInHandler];\n\n // Add to App Sandbox the listener;\n appSandbox.addListener('*', function (msg) {\n _this4.messageBus.postMessage(msg);\n });\n\n _CryptoManager2.default.messageBus = _this4.messageBus;\n\n // Register messageBus on Registry\n _this4.registry.messageBus = _this4.messageBus;\n\n // Policy Engine\n _this4.policyEngine.messageBus = _this4.messageBus;\n\n // Register messageBus on IDM\n _this4.identityModule.messageBus = _this4.messageBus;\n\n // Register registry on IdentityModule\n _this4.identityModule.registry = _this4.registry;\n\n // Register coreDiscovery on IdentityModule\n _this4.identityModule.coreDiscovery = _this4.coreDiscovery;\n\n // Use sandbox factory to use specific methods\n // and set the message bus to the factory\n _this4.runtimeFactory.messageBus = _this4.messageBus;\n\n // Instanciate the SyncherManager;\n _this4.syncherManager = new _SyncherManager2.default(_this4.runtimeURL, _this4.messageBus, _this4.registry, _this4.runtimeCatalogue, _this4.storages.syncherManager, null, _this4._dataObjectsStorage, _this4.identityModule);\n\n // Set into loader the needed components;\n _this4.loader.runtimeURL = _this4.runtimeURL;\n _this4.loader.messageBus = _this4.messageBus;\n _this4.loader.registry = _this4.registry;\n _this4.loader.runtimeCatalogue = _this4.runtimeCatalogue;\n _this4.loader.runtimeFactory = _this4.runtimeFactory;\n\n //Instantiate Discovery Lib for notification testing\n // this.discovery = new Discovery(\"hyperty://localhost/test\", this.runtimeURL, this.messageBus);\n // this.loadStub(\"localhost\");\n // setTimeout(() => {\n // this.discovery.discoverHypertiesDO(\"user://google.com/openidtest20@gmail.com\")\n // .then(hyperties => {\n // hyperties.forEach(hyperty =>{\n // hyperty.onLive(() => log.log(`Notification from ${hyperty.data.hypertyID} changed to live`));\n // hyperty.onDisconnected(() => log.log(`Notification from ${hyperty.data.hypertyID} changed to disconnected`));\n // });\n // });\n // }, 2000);\n\n // Instanciate the SubscriptionManager;\n _this4.subscriptionManager = new _SubscriptionManager2.default(_this4.runtimeURL, _this4.messageBus, _this4.storages.subscriptions);\n\n // this.subscriptionManager.init().then(()=>{\n // resolve(true);\n // });\n\n var prepareComponents = [];\n prepareComponents.push(_this4.subscriptionManager.init());\n prepareComponents.push(_this4.identityModule.init());\n prepareComponents.push(_CryptoManager2.default.loadSessionKeys());\n\n _promise2.default.all(prepareComponents).then(function (result) {\n if (result.length === 3) {\n resolve(true);\n } else {\n reject('[RuntimeUA._loadComponents] Error ] ', result);\n }\n }).catch(function (reason) {\n throw Error(reason);\n });\n } catch (e) {\n reject(e);\n }\n });\n }\n\n /**\r\n * Deploy Hyperty from Catalogue URL\r\n *\r\n * @see https://github.com/reTHINK-project/specs/tree/master/datamodel/core/address\r\n *\r\n * @param {URL.HypertyCatalogueURL} hypertyCatalogueURL - The Catalogue URL used to identify descriptors in the Catalogue.\r\n * @param {boolean|URL.HypertyURL} [reuseURL=false] reuseURL - reuseURL is used to reuse the hypertyURL previously registred, by default the reuse is disabled;\r\n * @param {URL} appURL - the app url address; // TODO: improve this description;\r\n * @returns {Promise} this is Promise and returns true if all components are loaded with success or an error if someone fails.\r\n *\r\n * @memberOf RuntimeUA\r\n */\n\n }, {\n key: 'loadHyperty',\n value: function loadHyperty(hypertyCatalogueURL) {\n var reuseURL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var appURL = arguments[2];\n\n\n if (!hypertyCatalogueURL) throw new Error('Hyperty descriptor url parameter is needed');\n return this.loader.loadHyperty(hypertyCatalogueURL, reuseURL, appURL);\n }\n\n /**\r\n * Deploy Stub from Catalogue URL or domain url\r\n * @param {URL.URL} domain domain\r\n */\n\n }, {\n key: 'loadStub',\n value: function loadStub(protocolstubCatalogueURL) {\n\n if (!protocolstubCatalogueURL) throw new Error('ProtoStub descriptor url parameter is needed');\n return this.loader.loadStub(protocolstubCatalogueURL);\n }\n\n /**\r\n * Deploy idpProxy from Catalogue URL or domain url\r\n * @param {URL.URL} domain domain\r\n */\n\n }, {\n key: 'loadIdpProxy',\n value: function loadIdpProxy(ipdProxyCatalogueURL) {\n log.log('ipdProxyCatalogueURL', ipdProxyCatalogueURL);\n\n if (!ipdProxyCatalogueURL) throw new Error('The IDP Proxy URL is a needed parameter, could be a DOMAIN or a URL');\n return this.loader.loadIdpProxy(ipdProxyCatalogueURL);\n }\n\n /**\r\n * Used to close all the runtime; Unregister all hyperties;\r\n * @return {Promise} result of the close method, with true or false to the operation success;\r\n */\n\n }, {\n key: 'close',\n value: function close(logOut) {\n console.log('Runtime core logout: ', logOut);\n var _this = this;\n if (logOut === true) {\n this.identityManager.reset();\n }\n\n log.info('Unregister all hyperties');\n return new _promise2.default(function (resolve, reject) {\n\n _this.registry.unregisterAllHyperties().then(function (result) {\n log.info('All the hyperties are unregisted with Success:', result);\n resolve(true);\n }).catch(function (reason) {\n log.error('Failed to unregister the hyperties', reason);\n reject(false);\n });\n });\n }\n }]);\n return RuntimeUA;\n}();\n\nexports.default = RuntimeUA;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ydW50aW1lL1J1bnRpbWVVQS5qcz9iZmFlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuXHJcbi8vIGltcG9ydCAnYmFiZWwtcG9seWZpbGwnO1xyXG5cclxuaW1wb3J0IHsgbG9nIGFzIGxvZ0xldmVscyB9IGZyb20gJy4uL2xvZ0xldmVscyc7XHJcblxyXG4vLyBMb2cgU3lzdGVtXHJcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XHJcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdSdW50aW1lVUEnKTtcclxuXHJcbi8vTWFpbiBkZXBlbmRlY2llc1xyXG5pbXBvcnQgUmVnaXN0cnkgZnJvbSAnLi4vcmVnaXN0cnkvUmVnaXN0cnknO1xyXG5pbXBvcnQgSWRlbnRpdHlNb2R1bGUgZnJvbSAnLi4vaWRlbnRpdHkvSWRlbnRpdHlNb2R1bGUnO1xyXG5pbXBvcnQgSWRlbnRpdHlNYW5hZ2VyIGZyb20gJy4uL2lkZW50aXR5L0lkZW50aXR5TWFuYWdlcic7XHJcbmltcG9ydCBQRVAgZnJvbSAnLi4vcG9saWN5L1BFUCc7XHJcbmltcG9ydCBNZXNzYWdlQnVzIGZyb20gJy4uL2J1cy9NZXNzYWdlQnVzJztcclxuaW1wb3J0IHsgZ2VuZXJhdGVHVUlEIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xyXG5pbXBvcnQgQWRkcmVzc0FsbG9jYXRpb24gZnJvbSAnLi4vYWxsb2NhdGlvbi9BZGRyZXNzQWxsb2NhdGlvbic7XHJcbmltcG9ydCBjcnlwdG9NYW5hZ2VyIGZyb20gJy4uL2NyeXB0b01hbmFnZXIvQ3J5cHRvTWFuYWdlcic7XHJcblxyXG5pbXBvcnQgTG9hZGVyIGZyb20gJy4vTG9hZGVyJztcclxuaW1wb3J0IHsgc3RvcmFnZSB9IGZyb20gJy4vU3RvcmFnZSc7XHJcbmltcG9ydCBEZXNjcmlwdG9ycyBmcm9tICcuL0Rlc2NyaXB0b3JzJztcclxuXHJcbmltcG9ydCB7IHJ1bnRpbWVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9ydW50aW1lQ29uZmlndXJhdGlvbic7XHJcbmltcG9ydCBNc2dCdXNIYW5kbGVycyBmcm9tICcuL01zZ0J1c0hhbmRsZXJzJztcclxuaW1wb3J0IHsgcnVudGltZVV0aWxzIH0gZnJvbSAnLi9ydW50aW1lVXRpbHMnO1xyXG5cclxuaW1wb3J0IEdyYXBoQ29ubmVjdG9yIGZyb20gJy4uL2dyYXBoY29ubmVjdG9yL0dyYXBoQ29ubmVjdG9yJztcclxuXHJcbmltcG9ydCBDb3JlRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9Db3JlRGlzY292ZXJ5JztcclxuXHJcbmltcG9ydCBEYXRhT2JqZWN0c1N0b3JhZ2UgZnJvbSAnLi4vc3RvcmUtb2JqZWN0cy9EYXRhT2JqZWN0c1N0b3JhZ2UnO1xyXG5pbXBvcnQgSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2UgZnJvbSAnLi4vaHlwZXJ0eS1yZXNvdXJjZXMtc3RvcmFnZS9IeXBlcnR5UmVzb3VyY2VzU3RvcmFnZSc7XHJcbmltcG9ydCBTeW5jaGVyTWFuYWdlciBmcm9tICcuLi9zeW5jaGVyL1N5bmNoZXJNYW5hZ2VyJztcclxuaW1wb3J0IFN1YnNjcmlwdGlvbk1hbmFnZXIgZnJvbSAnLi4vc3Vic2NyaXB0aW9uTWFuYWdlci9TdWJzY3JpcHRpb25NYW5hZ2VyJztcclxuaW1wb3J0IFJ1bnRpbWVDb3JlQ3R4IGZyb20gJy4uL3BvbGljeS9jb250ZXh0L1J1bnRpbWVDb3JlQ3R4JztcclxuXHJcbi8qKlxyXG4gKiBSdW50aW1lIFVzZXIgQWdlbnQgSW50ZXJmYWNlIHdpbGwgcHJvY2VzcyBhbGwgdGhlIGRlcGVuZGVjaWVzIG9mIHRoZSBjb3JlIHJ1bnRpbWU7XHJcbiAqIEBhdXRob3IgVml0b3IgU2lsdmEgW3ZpdG9yLXQtc2lsdmFAdGVsZWNvbS5wdF1cclxuICogQHZlcnNpb24gMC40LjBcclxuICpcclxuICogQHByb3BlcnR5IHtydW50aW1lRmFjdG9yeX0gcnVudGltZUZhY3RvcnkgLSBTcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIGVudmlyb25tZW50cztcclxuICogQHByb3BlcnR5IHtSdW50aW1lQ2F0YWxvZ3VlfSBydW50aW1lQ2F0YWxvZ3VlIC0gQ2F0YWxvZ3VlIG9mIGNvbXBvbmVudHMgY2FuIGJlIGluc3RhbGxlZDtcclxuICogQHByb3BlcnR5IHtydW50aW1lVVJMfSBydW50aW1lVVJMIC0gVGhpcyBpZGVudGlmeSB0aGUgY29yZSBydW50aW1lLCBzaG91bGQgYmUgdW5pcXVlO1xyXG4gKiBAcHJvcGVydHkge0lkZW50aXR5TW9kdWxlfSBpZGVudGl0eU1vZHVsZSAtIElkZW50aXR5IE1vZHVsZTtcclxuICogQHByb3BlcnR5IHtQRVB9IHBvbGljeUVuZ2luZSAtIFBvbGljeSBFbmdpbmUgTW9kdWxlO1xyXG4gKiBAcHJvcGVydHkge1JlZ2lzdHJ5fSByZWdpc3RyeSAtIFJlZ2lzdHJ5IE1vZHVsZTtcclxuICogQHByb3BlcnR5IHtNZXNzYWdlQnVzfSBtZXNzYWdlQnVzIC0gTWVzc2FnZSBCdXMgaXMgdXNlZCBsaWtlIGEgcm91dGVyIHRvIHJlZGlyZWN0IHRoZSBtZXNzYWdlcyBmcm9tIG9uZSBjb21wb25lbnQgdG8gb3RoZXIocylcclxuICogQHByb3BlcnR5IHtHcmFwaENvbm5lY3Rvcn0gZ3JhcGhDb25uZWN0b3IgLSBHcmFwaCBDb25uZWN0b3IgaGFuZGxpbmcgR1VJRCBhbmQgY29udGFjdHNcclxuICogQHByb3BlcnR5IHtDb3JlRGlzY292ZXJ5fSBjb3JlRGlzY292ZXJ5IC0gRGlzY292ZXJ5IGZvciBkaXNjb3ZlcnkgaHlwZXJ0aWVzL2RhdGFPYmplY3RzXHJcbiAqL1xyXG5jbGFzcyBSdW50aW1lVUEge1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUnVudGltZSBVc2VyIEFnZW50XHJcbiAgICogQHBhcmFtIHtkZXNjcmlwdG9yfSBydW50aW1lRGVzY3JpcHRvciAtIHBhc3MgYWxsIHRoZSBoeXBlcnR5IHJ1bnRpbWUgZGVzY3JpcHRvclxyXG4gICAqIEBwYXJhbSB7cnVudGltZUZhY3Rvcnl9IHJ1bnRpbWVGYWN0b3J5IC0gU3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCB3aGVyZSB0aGUgY29yZSBydW50aW1lIHdpbGwgcnVuO1xyXG4gICAqIEBwYXJhbSB7ZG9tYWlufSBkb21haW5VUkwgLSBzcGVjaWZ5IHRoZSBkb21haW4gYmFzZSBmb3IgdGhlIHJ1bnRpbWU7XHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocnVudGltZURlc2NyaXB0b3IsIHJ1bnRpbWVGYWN0b3J5LCBkb21haW4pIHtcclxuICAgIGlmICghcnVudGltZURlc2NyaXB0b3IpIHRocm93IG5ldyBFcnJvcignVGhlIHJ1bnRpbWUgZGVzY3JpcHRvciBpcyBhIG5lZWRlZCBwYXJhbWV0ZXInKTtcclxuICAgIGlmICghcnVudGltZUZhY3RvcnkpIHRocm93IG5ldyBFcnJvcignVGhlIHNhbmRib3ggZmFjdG9yeSBpcyBhIG5lZWRlZCBwYXJhbWV0ZXInKTtcclxuICAgIGlmICghZG9tYWluKSB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBuZWVkIHRoZSBkb21haW4gb2YgcnVudGltZScpO1xyXG5cclxuICAgIC8vIENvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggaW5mb3JtYXRpb24gcmVsYXRlZCB3aXRoIHNlcnZlcnNcclxuICAgIHRoaXMucnVudGltZUNvbmZpZ3VyYXRpb24gPSBPYmplY3QuYXNzaWduKHtkb21haW46IGRvbWFpbn0sIHJ1bnRpbWVDb25maWd1cmF0aW9uKTtcclxuICAgIHRoaXMucnVudGltZUZhY3RvcnkgPSBydW50aW1lRmFjdG9yeTtcclxuXHJcbiAgICB0aGlzLmxvZyA9IGxvZztcclxuICAgIHRoaXMubG9nTGV2ZWxzID0gbG9nTGV2ZWxzO1xyXG5cclxuICAgIGlmIChydW50aW1lRGVzY3JpcHRvci5wMnBIYW5kbGVyU3R1YiAmJiB0eXBlb2YgcnVudGltZURlc2NyaXB0b3IucDJwSGFuZGxlclN0dWIgID09PSAnc3RyaW5nJyAmJiBydW50aW1lRGVzY3JpcHRvci5wMnBIYW5kbGVyU3R1Yi5pbmNsdWRlcygnOi8vJykpIHtcclxuICAgICAgdGhpcy5wMnAgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wMnAgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBydW50aW1lVXRpbHMucnVudGltZURlc2NyaXB0b3IgPSBydW50aW1lRGVzY3JpcHRvcjtcclxuICAgIHRoaXMucnVudGltZVV0aWxzID0gcnVudGltZVV0aWxzO1xyXG5cclxuICAgIHRoaXMuc3RvcmFnZXMgPSB7fTtcclxuXHJcbiAgICBpZiAodHlwZW9mIHJ1bnRpbWVGYWN0b3J5LmNyZWF0ZVJ1bnRpbWVDYXRhbG9ndWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgdGhpcy5ydW50aW1lQ2F0YWxvZ3VlID0gcnVudGltZUZhY3RvcnkuY3JlYXRlUnVudGltZUNhdGFsb2d1ZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaGVjayB5b3VyIFJ1bnRpbWUgRmFjdG9yeSBiZWNhdXNlIGl0IG5lZWRzIHRoZSBSdW50aW1lIENhdGFsb2d1ZSBpbXBsZW1lbnRhdGlvbicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgcnVudGltZUZhY3RvcnkucGVyc2lzdGVuY2VNYW5hZ2VyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHRoaXMucGVyc2lzdGVuY2VNYW5hZ2VyID0gcnVudGltZUZhY3RvcnkucGVyc2lzdGVuY2VNYW5hZ2VyKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoZWNrIHlvdXIgUnVudGltZSBGYWN0b3J5IGJlY2F1c2UgaXQgbmVlZHMgdGhlIFBlcnNpc3RlbmNlIE1hbmFnZXIgaW1wbGVtZW50YXRpb24nKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIHJ1bnRpbWVGYWN0b3J5LnN0b3JhZ2VNYW5hZ2VyID09PSAnZnVuY3Rpb24nKSB7XHJcblxyXG4gICAgICB0aGlzLnN0b3JhZ2VzID0gc3RvcmFnZShydW50aW1lRmFjdG9yeSk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaGVjayB5b3VyIFJ1bnRpbWUgRmFjdG9yeSBiZWNhdXNlIGl0IG5lZWRzIHRoZSBTdG9yYWdlIE1hbmFnZXIgaW1wbGVtZW50YXRpb24nKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIHJ1bnRpbWVGYWN0b3J5LnJ1bnRpbWVDYXBhYmlsaXRpZXMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgdGhpcy5ydW50aW1lQ2FwYWJpbGl0aWVzID0gcnVudGltZUZhY3RvcnkucnVudGltZUNhcGFiaWxpdGllcyh0aGlzLnN0b3JhZ2VzLmNhcGFiaWxpdGllcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsb2cuaW5mbygnQ2hlY2sgeW91ciBSdW50aW1lRmFjdG9yeSBiZWNhdXNlIGl0IG5lZWRzIHRoZSBSdW50aW1lIENhcGFiaWxpdGllcyBpbXBsZW1lbnRhdGlvbicpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEludGlhbGl6ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIHJ1bnRpbWVcclxuICAgKlxyXG4gICAqIEBhY2Nlc3MgcHVibGljXHJcbiAgICogQHJldHVybiB7UHJvbWlzZTxCb29sZWFuLCBFcnJvcj59IHRoaXMgaXMgUHJvbWlzZSBhbmQgaWYgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzIGhhcHBlbmVkIHdpdGhvdXQgYW55IHByb2JsZW1zIHJldHVybnMgdHJ1ZSBvdGhlcndpc2UgdGhlIGVycm9yLlxyXG4gICAqXHJcbiAgICogQG1lbWJlck9mIFJ1bnRpbWVVQVxyXG4gICAqL1xyXG4gIGluaXQoKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5kb21haW4gPSB0aGlzLnJ1bnRpbWVDb25maWd1cmF0aW9uLmRvbWFpbjtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbGV0IGdldENhcGFiaWxpdGllcyA9IHRoaXMucnVudGltZUNhcGFiaWxpdGllcy5nZXRSdW50aW1lQ2FwYWJpbGl0aWVzKCk7XHJcbiAgICAgICAgbGV0IGdldFJ1bnRpbWVVUkwgPSB0aGlzLnN0b3JhZ2VzLnJ1bnRpbWUuZ2V0KCdydW50aW1lOlVSTCcpO1xyXG4gICAgICAgIGxldCBnZXRTdG9yZWREYXRhT2JqZWN0cyA9IHRoaXMuc3RvcmFnZXMuc3luY2hlck1hbmFnZXIuZ2V0KCdzeW5jaGVyTWFuYWdlcjpPYmplY3RVUkxzJyk7XHJcbiAgICAgICAgbGV0IGdldEh5cGVydHlTdG9yYWdlT2JqZWN0cyA9IHRoaXMuc3RvcmFnZXMuaHlwZXJ0eVJlc291cmNlcy5nZXQoKTtcclxuICAgICAgICBsZXQgZ2V0UDJQSGFuZGxlclVSTCA9IHRoaXMuc3RvcmFnZXMucnVudGltZS5nZXQoJ3AycEhhbmRsZXI6VVJMJyk7XHJcblxyXG4gICAgICAgIFByb21pc2UuYWxsKFtnZXRSdW50aW1lVVJMLCBnZXRDYXBhYmlsaXRpZXMsIGdldFN0b3JlZERhdGFPYmplY3RzLCBnZXRIeXBlcnR5U3RvcmFnZU9iamVjdHMsIGdldFAyUEhhbmRsZXJVUkxdKS50aGVuKChyZXN1bHRzKSA9PiB7XHJcblxyXG4gICAgICAgICAgdGhpcy5ydW50aW1lVVJMID0gcmVzdWx0c1swXSA/IHJlc3VsdHNbMF0ucnVudGltZVVSTCA6IHJlc3VsdHNbMF07XHJcbiAgICAgICAgICBpZiAoIXRoaXMucnVudGltZVVSTCkge1xyXG4gICAgICAgICAgICB0aGlzLnJ1bnRpbWVVUkwgPSAncnVudGltZTovLycgKyB0aGlzLmRvbWFpbiArICcvJyArIGdlbmVyYXRlR1VJRCgpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VzLnJ1bnRpbWUuc2V0KCdydW50aW1lOlVSTCcsIDEsIHtydW50aW1lVVJMOiB0aGlzLnJ1bnRpbWVVUkx9KTtcclxuICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgdGhpcy5jYXBhYmlsaXRpZXMgPSByZXN1bHRzWzFdO1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihydW50aW1lVXRpbHMucnVudGltZUNhcGFiaWxpdGllcy5jb25zdHJhaW50cywgcmVzdWx0c1sxXSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5fZGF0YU9iamVjdHNTdG9yYWdlID0gbmV3IERhdGFPYmplY3RzU3RvcmFnZSh0aGlzLnN0b3JhZ2VzLnN5bmNoZXJNYW5hZ2VyLCByZXN1bHRzWzJdIHx8IHt9KTtcclxuXHJcbiAgICAgICAgICB0aGlzLl9oeXBlcnR5UmVzb3VyY2VzID0gcmVzdWx0c1szXSB8fCB7fTtcclxuXHJcbiAgICAgICAgICB0aGlzLnAycEhhbmRsZXJVUkwgPSByZXN1bHRzWzRdID8gcmVzdWx0c1s0XS5wMnBIYW5kbGVyVVJMIDogcmVzdWx0c1s0XTtcclxuICAgICAgICAgIGlmICghdGhpcy5wMnBIYW5kbGVyVVJMKSB7XHJcbiAgICAgICAgICAgIHRoaXMucDJwSGFuZGxlclVSTCA9IHRoaXMucnVudGltZVVSTCArICcvcDJwaGFuZGxlci8nICsgZ2VuZXJhdGVHVUlEKCk7XHJcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZVVBIC0gaW5pdF0gUDJQSGFuZGxlclVSTDogJywgdGhpcy5wMnBIYW5kbGVyVVJMKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZXMucnVudGltZS5zZXQoJ3AycEhhbmRsZXI6VVJMJywgMSwge3AycEhhbmRsZXJVUkw6IHRoaXMucDJwSGFuZGxlclVSTH0pO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkQ29tcG9uZW50cygpO1xyXG5cclxuICAgICAgICB9KS50aGVuKChzdGF0dXMpID0+IHtcclxuXHJcbiAgICAgICAgICB0aGlzLl9oeXBlcnR5UmVzb3VyY2VzU3RvcmFnZSA9IG5ldyBIeXBlcnR5UmVzb3VyY2VzU3RvcmFnZSh0aGlzLnJ1bnRpbWVVUkwsIHRoaXMubWVzc2FnZUJ1cywgdGhpcy5zdG9yYWdlcy5oeXBlcnR5UmVzb3VyY2VzLCB0aGlzLl9oeXBlcnR5UmVzb3VyY2VzKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5wMnApIHtcclxuICAgICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lVUEgLSBpbml0XSBsb2FkIHAycEhhbmRsZXI6ICcsIHN0YXR1cyk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkUDJQSGFuZGxlcigpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lVUEgLSBpbml0XSBQMlAgbm90IHN1cHBvcnRlZCcpO1xyXG4gICAgICAgICAgICByZXR1cm4gKCdQMlAgTm90IFN1cHBvcnRlZCcpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGxvZy5pbmZvKCdbcnVudGltZSB1YSAtIGluaXRdIC0gc3RhdHVzOiAnLCByZXN1bHQpO1xyXG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICB9LCAocmVhc29uKSA9PiB7XHJcbiAgICAgICAgICBsb2cuZXJyb3IoJ0VSUk9SOiAnLCByZWFzb24pO1xyXG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICByZWplY3QoZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBfbG9hZFAyUEhhbmRsZXIoKSB7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcblxyXG4gICAgICBsZXQgcnVudGltZURlc2NyaXB0b3IgPSBydW50aW1lVXRpbHMucnVudGltZURlc2NyaXB0b3I7XHJcbiAgICAgIGxldCBwMnBTdHViSGFuZGxlciA9IHJ1bnRpbWVEZXNjcmlwdG9yLnAycEhhbmRsZXJTdHViO1xyXG5cclxuICAgICAgbGV0IHAycENvbmZpZyA9IHtcclxuICAgICAgICBpc0hhbmRsZXJTdHViOiB0cnVlLFxyXG4gICAgICAgIHJ1bnRpbWVVUkw6IHRoaXMucnVudGltZVVSTFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgbG9nLmxvZygnW1J1bnRpbWVVQSBsb2FkUDJQSGFuZGxlcl0gUDJQU3R1YkhhbmRsZXI6ICcsIHAycFN0dWJIYW5kbGVyKTtcclxuXHJcbiAgICAgIHRoaXMubG9hZGVyLmxvYWRTdHViKHAycFN0dWJIYW5kbGVyLCBwMnBDb25maWcpLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgICBsZXQgcnVudGltZVVBVVJMID0gdGhpcy5ydW50aW1lVVJMICsgJy91YSc7XHJcbiAgICAgICAgbGV0IG1zZyA9IHtcclxuICAgICAgICAgIHR5cGU6ICdzdWJzY3JpYmUnLFxyXG4gICAgICAgICAgZnJvbTogcnVudGltZVVBVVJMLFxyXG4gICAgICAgICAgdG86ICdkb21haW46Ly9tc2ctbm9kZS4nICsgdGhpcy5kb21haW4gKyAnL3NtJyxcclxuICAgICAgICAgIGJvZHk6IHtcclxuICAgICAgICAgICAgc3Vic2NyaWJlOiBbcmVzdWx0LnVybF0sXHJcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcy5ydW50aW1lVVJMXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5tZXNzYWdlQnVzLmFkZExpc3RlbmVyKHJ1bnRpbWVVQVVSTCwgKG1zZykgPT4ge1xyXG4gICAgICAgICAgbG9nLmxvZygnW3J1bnRpbWUgdWEgLSBsaXN0ZW5lcl0gLSByZWNlaXZlIG1zZzogJywgbXNnKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1zZywgKHJlcGx5KSA9PiB7XHJcbiAgICAgICAgICBsb2cubG9nKCdbcnVudGltZSB1YSAtIHBvc3RNZXNzYWdlXSAtIHJlcGx5OiAnLCByZXBseSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxvZy5pbmZvKCdbcnVudGltZSB1YSAtIHAycCBpbnN0YWxsYXRpb25dIC0gc3VjY2VzczogJywgcmVzdWx0KTtcclxuICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICB9KS5jYXRjaCgocmVhc29uKSA9PiB7XHJcbiAgICAgICAgbG9nLmluZm8oJ1tydW50aW1lIHVhIC0gcDJwIGluc3RhbGxhdGlvbl0gLSBmYWlsOiAnLCByZWFzb24pO1xyXG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxyXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Qm9vbGVhbiwgRXJyb3I+fSB0aGlzIGlzIFByb21pc2UgYW5kIHJldHVybnMgdHJ1ZSBpZiBhbGwgY29tcG9uZW50cyBhcmUgbG9hZGVkIHdpdGggc3VjY2VzcyBvciBhbiBlcnJvciBpZiBzb21lb25lIGZhaWxzLlxyXG4gICAqXHJcbiAgICogQG1lbWJlck9mIFJ1bnRpbWVVQVxyXG4gICAqL1xyXG4gIF9sb2FkQ29tcG9uZW50cygpIHtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgdHJ5IHtcclxuXHJcbiAgICAgICAgLy8gUHJlcGFyZSB0aGUgb24gaW5zdGFuY2UgdG8gaGFuZGxlIHdpdGggdGhlIGZhbGxiYWNrcyBhbmQgcnVudGltZUNhdGFsb2d1ZTtcclxuICAgICAgICB0aGlzLmRlc2NyaXB0b3JJbnN0YW5jZSA9IG5ldyBEZXNjcmlwdG9ycyh0aGlzLnJ1bnRpbWVVUkwsIHRoaXMucnVudGltZUNhdGFsb2d1ZSwgdGhpcy5ydW50aW1lQ29uZmlndXJhdGlvbik7XHJcblxyXG4gICAgICAgIC8vIFByZXBhcmUgdGhlIGxvYWRlciB0byBsb2FkIHRoZSBoeXBlcnRpZXMsIHByb3Rvc3R1YnMgYW5kIGlkcHByb3h5O1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gbmV3IExvYWRlcih0aGlzLnJ1bnRpbWVVUkwsIHRoaXMucnVudGltZUNvbmZpZ3VyYXRpb24sIHRoaXMuZGVzY3JpcHRvckluc3RhbmNlKTtcclxuXHJcbiAgICAgICAgLy8gSW5zdGFudGlhdGUgdGhlIGlkZW50aXR5IE1vZHVsZVxyXG4gICAgICAgIHRoaXMuaWRlbnRpdHlNb2R1bGUgPSBuZXcgSWRlbnRpdHlNb2R1bGUodGhpcy5ydW50aW1lVVJMLCB0aGlzLnJ1bnRpbWVDYXBhYmlsaXRpZXMsIHRoaXMuc3RvcmFnZXMuaWRlbnRpdHksIHRoaXMuX2RhdGFPYmplY3RzU3RvcmFnZSwgY3J5cHRvTWFuYWdlciwgdGhpcy5ydW50aW1lQ2F0YWxvZ3VlKTtcclxuXHJcbiAgICAgICAgLy8gVXNlIHRoZSBzYW5kYm94IGZhY3RvcnkgdG8gY3JlYXRlIGFuIEFwcFNhbmRib3g7XHJcbiAgICAgICAgLy8gSW4gdGhlIGZ1dHVyZSBjYW4gYmUgZGVjaWRlZCBieSBwb2xpY3lFbmdpbmUgaWYgd2UgbmVlZFxyXG4gICAgICAgIC8vIGNyZWF0ZSBhIEFwcFNhbmRib3ggb3Igbm90O1xyXG4gICAgICAgIGxldCBhcHBTYW5kYm94ID0gdGhpcy5ydW50aW1lRmFjdG9yeS5jcmVhdGVBcHBTYW5kYm94KCk7XHJcblxyXG4gICAgICAgIC8vIEluc3RhbnRpYXRlIHRoZSBSZWdpc3RyeSBNb2R1bGVcclxuICAgICAgICB0aGlzLnJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KHRoaXMucnVudGltZVVSTCwgYXBwU2FuZGJveCwgdGhpcy5pZGVudGl0eU1vZHVsZSwgdGhpcy5ydW50aW1lQ2F0YWxvZ3VlLCB0aGlzLnJ1bnRpbWVDYXBhYmlsaXRpZXMsIHRoaXMuc3RvcmFnZXMucmVnaXN0cnksIHRoaXMucDJwSGFuZGxlclVSTCk7XHJcblxyXG4gICAgICAgIC8vIFNldCB0aGUgbG9hZGVyIHRvIGxvYWQgSHlwZXJ0aWVzLCBTdHVicyBhbmQgSWRwUHJveGllc1xyXG4gICAgICAgIHRoaXMucmVnaXN0cnkubG9hZGVyID0gdGhpcy5sb2FkZXI7XHJcblxyXG4gICAgICAgIC8vIEluc3RhbnRpYXRlIHRoZSBNZXNzYWdlIEJ1c1xyXG4gICAgICAgIHRoaXMubWVzc2FnZUJ1cyA9IG5ldyBNZXNzYWdlQnVzKHRoaXMucmVnaXN0cnkpO1xyXG5cclxuICAgICAgICAvLyBQcmVwYXJlIHRoZSBhZGRyZXNzIGFsbG9jYXRpb24gaW5zdGFuY2U7XHJcbiAgICAgICAgdGhpcy5hZGRyZXNzQWxsb2NhdGlvbiA9IG5ldyBBZGRyZXNzQWxsb2NhdGlvbih0aGlzLnJ1bnRpbWVVUkwsIHRoaXMubWVzc2FnZUJ1cywgdGhpcy5yZWdpc3RyeSk7XHJcblxyXG4gICAgICAgIC8vIEluc3RhbnRpYXRlIHRoZSBQb2xpY3kgRW5naW5lXHJcbiAgICAgICAgdGhpcy5wb2xpY3lFbmdpbmUgPSBuZXcgUEVQKG5ldyBSdW50aW1lQ29yZUN0eCh0aGlzLnJ1bnRpbWVVUkwsIHRoaXMuaWRlbnRpdHlNb2R1bGUsIHRoaXMucmVnaXN0cnksIHRoaXMuc3RvcmFnZXMucG9saWN5LCB0aGlzLnJ1bnRpbWVDYXBhYmlsaXRpZXMpKTtcclxuXHJcbiAgICAgICAgLy8gSW5zdGFudGlhdGUgRGlzY292ZXJ5XHJcbiAgICAgICAgdGhpcy5jb3JlRGlzY292ZXJ5ID0gbmV3IENvcmVEaXNjb3ZlcnkodGhpcy5ydW50aW1lVVJMLCB0aGlzLm1lc3NhZ2VCdXMsIHRoaXMuZ3JhcGhDb25uZWN0b3IsIHRoaXMucnVudGltZUZhY3RvcnksIHRoaXMucmVnaXN0cnkpO1xyXG5cclxuICAgICAgICAvLyBJbnN0YW50aWF0ZSB0aGUgSWRlbnRpdHlNYW5hZ2VyXHJcbiAgICAgICAgdGhpcy5pZGVudGl0eU1hbmFnZXIgPSBuZXcgSWRlbnRpdHlNYW5hZ2VyKHRoaXMuaWRlbnRpdHlNb2R1bGUpO1xyXG5cclxuICAgICAgICAvLyBpbml0aWFsaXNlIHRoZSBDcnlwdG9NYW5hZ2VyXHJcbiAgICAgICAgY3J5cHRvTWFuYWdlci5pbml0KHRoaXMucnVudGltZVVSTCwgdGhpcy5ydW50aW1lQ2FwYWJpbGl0aWVzLCB0aGlzLnN0b3JhZ2VzLmNyeXB0b01hbmFnZXIsIHRoaXMuX2RhdGFPYmplY3RzU3RvcmFnZSwgdGhpcy5yZWdpc3RyeSwgdGhpcy5jb3JlRGlzY292ZXJ5LCB0aGlzLmlkZW50aXR5TW9kdWxlLCB0aGlzLnJ1bnRpbWVGYWN0b3J5KTtcclxuXHJcbiAgICAgICAgLy8gSW5zdGFudGlhdGUgdGhlIEdyYXBoIENvbm5lY3RvclxyXG4gICAgICAgIHRoaXMuZ3JhcGhDb25uZWN0b3IgPSBwcm9jZXNzLmVudi5NT0RFICE9PSAnbGlnaHQnID8gbmV3IEdyYXBoQ29ubmVjdG9yKHRoaXMucnVudGltZVVSTCwgdGhpcy5tZXNzYWdlQnVzLCB0aGlzLnN0b3JhZ2VNYW5hZ2VyKSA6IG51bGw7XHJcblxyXG4gICAgICAgIHRoaXMuaGFuZGxlcnMgPSBuZXcgTXNnQnVzSGFuZGxlcnModGhpcy5wb2xpY3lFbmdpbmUsIHRoaXMuaWRlbnRpdHlNYW5hZ2VyLCBjcnlwdG9NYW5hZ2VyKTtcclxuXHJcbiAgICAgICAgdGhpcy5tZXNzYWdlQnVzLnBpcGVsaW5lT3V0LmhhbmRsZXJzID0gW3RoaXMuaGFuZGxlcnMuaWRtSGFuZGxlciwgdGhpcy5oYW5kbGVycy5wZXBPdXRIYW5kbGVyLCB0aGlzLmhhbmRsZXJzLmVuY3J5cHRIYW5kbGVyXTtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VCdXMucGlwZWxpbmVJbi5oYW5kbGVycyA9IFt0aGlzLmhhbmRsZXJzLmRlY3J5cHRIYW5kbGVyLCB0aGlzLmhhbmRsZXJzLnBlcEluSGFuZGxlcl07XHJcblxyXG4gICAgICAgIC8vIEFkZCB0byBBcHAgU2FuZGJveCB0aGUgbGlzdGVuZXI7XHJcbiAgICAgICAgYXBwU2FuZGJveC5hZGRMaXN0ZW5lcignKicsIChtc2cpID0+IHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtc2cpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjcnlwdG9NYW5hZ2VyLm1lc3NhZ2VCdXMgPSB0aGlzLm1lc3NhZ2VCdXM7XHJcblxyXG4gICAgICAgIC8vIFJlZ2lzdGVyIG1lc3NhZ2VCdXMgb24gUmVnaXN0cnlcclxuICAgICAgICB0aGlzLnJlZ2lzdHJ5Lm1lc3NhZ2VCdXMgPSB0aGlzLm1lc3NhZ2VCdXM7XHJcblxyXG4gICAgICAgIC8vIFBvbGljeSBFbmdpbmVcclxuICAgICAgICB0aGlzLnBvbGljeUVuZ2luZS5tZXNzYWdlQnVzID0gdGhpcy5tZXNzYWdlQnVzO1xyXG5cclxuICAgICAgICAvLyBSZWdpc3RlciBtZXNzYWdlQnVzIG9uIElETVxyXG4gICAgICAgIHRoaXMuaWRlbnRpdHlNb2R1bGUubWVzc2FnZUJ1cyA9IHRoaXMubWVzc2FnZUJ1cztcclxuXHJcbiAgICAgICAgLy8gUmVnaXN0ZXIgcmVnaXN0cnkgb24gSWRlbnRpdHlNb2R1bGVcclxuICAgICAgICB0aGlzLmlkZW50aXR5TW9kdWxlLnJlZ2lzdHJ5ID0gdGhpcy5yZWdpc3RyeTtcclxuXHJcbiAgICAgICAgLy8gUmVnaXN0ZXIgY29yZURpc2NvdmVyeSBvbiBJZGVudGl0eU1vZHVsZVxyXG4gICAgICAgIHRoaXMuaWRlbnRpdHlNb2R1bGUuY29yZURpc2NvdmVyeSA9IHRoaXMuY29yZURpc2NvdmVyeTtcclxuXHJcbiAgICAgICAgLy8gVXNlIHNhbmRib3ggZmFjdG9yeSB0byB1c2Ugc3BlY2lmaWMgbWV0aG9kc1xyXG4gICAgICAgIC8vIGFuZCBzZXQgdGhlIG1lc3NhZ2UgYnVzIHRvIHRoZSBmYWN0b3J5XHJcbiAgICAgICAgdGhpcy5ydW50aW1lRmFjdG9yeS5tZXNzYWdlQnVzID0gdGhpcy5tZXNzYWdlQnVzO1xyXG5cclxuICAgICAgICAvLyBJbnN0YW5jaWF0ZSB0aGUgU3luY2hlck1hbmFnZXI7XHJcbiAgICAgICAgdGhpcy5zeW5jaGVyTWFuYWdlciA9IG5ldyBTeW5jaGVyTWFuYWdlcih0aGlzLnJ1bnRpbWVVUkwsIHRoaXMubWVzc2FnZUJ1cywgdGhpcy5yZWdpc3RyeSwgdGhpcy5ydW50aW1lQ2F0YWxvZ3VlLCB0aGlzLnN0b3JhZ2VzLnN5bmNoZXJNYW5hZ2VyLCBudWxsLCB0aGlzLl9kYXRhT2JqZWN0c1N0b3JhZ2UsIHRoaXMuaWRlbnRpdHlNb2R1bGUpO1xyXG5cclxuXHJcbiAgICAgICAgLy8gU2V0IGludG8gbG9hZGVyIHRoZSBuZWVkZWQgY29tcG9uZW50cztcclxuICAgICAgICB0aGlzLmxvYWRlci5ydW50aW1lVVJMID0gdGhpcy5ydW50aW1lVVJMO1xyXG4gICAgICAgIHRoaXMubG9hZGVyLm1lc3NhZ2VCdXMgPSB0aGlzLm1lc3NhZ2VCdXM7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIucmVnaXN0cnkgPSB0aGlzLnJlZ2lzdHJ5O1xyXG4gICAgICAgIHRoaXMubG9hZGVyLnJ1bnRpbWVDYXRhbG9ndWUgPSB0aGlzLnJ1bnRpbWVDYXRhbG9ndWU7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIucnVudGltZUZhY3RvcnkgPSB0aGlzLnJ1bnRpbWVGYWN0b3J5O1xyXG5cclxuICAgICAgICAvL0luc3RhbnRpYXRlIERpc2NvdmVyeSBMaWIgZm9yIG5vdGlmaWNhdGlvbiB0ZXN0aW5nXHJcbiAgICAgICAgLy8gdGhpcy5kaXNjb3ZlcnkgPSBuZXcgRGlzY292ZXJ5KFwiaHlwZXJ0eTovL2xvY2FsaG9zdC90ZXN0XCIsIHRoaXMucnVudGltZVVSTCwgdGhpcy5tZXNzYWdlQnVzKTtcclxuICAgICAgICAvLyB0aGlzLmxvYWRTdHViKFwibG9jYWxob3N0XCIpO1xyXG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIC8vICAgdGhpcy5kaXNjb3ZlcnkuZGlzY292ZXJIeXBlcnRpZXNETyhcInVzZXI6Ly9nb29nbGUuY29tL29wZW5pZHRlc3QyMEBnbWFpbC5jb21cIilcclxuICAgICAgICAvLyAgIC50aGVuKGh5cGVydGllcyA9PiB7XHJcbiAgICAgICAgLy8gICAgIGh5cGVydGllcy5mb3JFYWNoKGh5cGVydHkgPT57XHJcbiAgICAgICAgLy8gICAgICAgaHlwZXJ0eS5vbkxpdmUoKCkgPT4gbG9nLmxvZyhgTm90aWZpY2F0aW9uIGZyb20gJHtoeXBlcnR5LmRhdGEuaHlwZXJ0eUlEfSBjaGFuZ2VkIHRvIGxpdmVgKSk7XHJcbiAgICAgICAgLy8gICAgICAgaHlwZXJ0eS5vbkRpc2Nvbm5lY3RlZCgoKSA9PiBsb2cubG9nKGBOb3RpZmljYXRpb24gZnJvbSAke2h5cGVydHkuZGF0YS5oeXBlcnR5SUR9IGNoYW5nZWQgdG8gZGlzY29ubmVjdGVkYCkpO1xyXG4gICAgICAgIC8vICAgICB9KTtcclxuICAgICAgICAvLyAgIH0pO1xyXG4gICAgICAgIC8vIH0sIDIwMDApO1xyXG5cclxuICAgICAgICAvLyBJbnN0YW5jaWF0ZSB0aGUgU3Vic2NyaXB0aW9uTWFuYWdlcjtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbk1hbmFnZXIgPSBuZXcgU3Vic2NyaXB0aW9uTWFuYWdlcih0aGlzLnJ1bnRpbWVVUkwsIHRoaXMubWVzc2FnZUJ1cywgdGhpcy5zdG9yYWdlcy5zdWJzY3JpcHRpb25zKTtcclxuXHJcbiAgICAgICAgLy8gdGhpcy5zdWJzY3JpcHRpb25NYW5hZ2VyLmluaXQoKS50aGVuKCgpPT57XHJcbiAgICAgICAgLy8gICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgIC8vIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBwcmVwYXJlQ29tcG9uZW50cyA9IFtdO1xyXG4gICAgICAgIHByZXBhcmVDb21wb25lbnRzLnB1c2godGhpcy5zdWJzY3JpcHRpb25NYW5hZ2VyLmluaXQoKSk7XHJcbiAgICAgICAgcHJlcGFyZUNvbXBvbmVudHMucHVzaCh0aGlzLmlkZW50aXR5TW9kdWxlLmluaXQoKSk7XHJcbiAgICAgICAgcHJlcGFyZUNvbXBvbmVudHMucHVzaChjcnlwdG9NYW5hZ2VyLmxvYWRTZXNzaW9uS2V5cygpKTtcclxuXHJcbiAgICAgICAgUHJvbWlzZS5hbGwocHJlcGFyZUNvbXBvbmVudHMpLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDMpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlamVjdCgnW1J1bnRpbWVVQS5fbG9hZENvbXBvbmVudHNdIEVycm9yIF0gJywgcmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KS5jYXRjaCgocmVhc29uKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBFcnJvcihyZWFzb24pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIHJlamVjdChlKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlcGxveSBIeXBlcnR5IGZyb20gQ2F0YWxvZ3VlIFVSTFxyXG4gICAqXHJcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L3NwZWNzL3RyZWUvbWFzdGVyL2RhdGFtb2RlbC9jb3JlL2FkZHJlc3NcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7VVJMLkh5cGVydHlDYXRhbG9ndWVVUkx9IGh5cGVydHlDYXRhbG9ndWVVUkwgLSBUaGUgQ2F0YWxvZ3VlIFVSTCB1c2VkIHRvIGlkZW50aWZ5IGRlc2NyaXB0b3JzIGluIHRoZSBDYXRhbG9ndWUuXHJcbiAgICogQHBhcmFtIHtib29sZWFufFVSTC5IeXBlcnR5VVJMfSBbcmV1c2VVUkw9ZmFsc2VdIHJldXNlVVJMIC0gcmV1c2VVUkwgaXMgdXNlZCB0byByZXVzZSB0aGUgaHlwZXJ0eVVSTCBwcmV2aW91c2x5IHJlZ2lzdHJlZCwgYnkgZGVmYXVsdCB0aGUgcmV1c2UgaXMgZGlzYWJsZWQ7XHJcbiAgICogQHBhcmFtIHtVUkx9IGFwcFVSTCAtIHRoZSBhcHAgdXJsIGFkZHJlc3M7IC8vIFRPRE86IGltcHJvdmUgdGhpcyBkZXNjcmlwdGlvbjtcclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxCb29sZWFuLCBFcnJvcj59IHRoaXMgaXMgUHJvbWlzZSBhbmQgcmV0dXJucyB0cnVlIGlmIGFsbCBjb21wb25lbnRzIGFyZSBsb2FkZWQgd2l0aCBzdWNjZXNzIG9yIGFuIGVycm9yIGlmIHNvbWVvbmUgZmFpbHMuXHJcbiAgICpcclxuICAgKiBAbWVtYmVyT2YgUnVudGltZVVBXHJcbiAgICovXHJcbiAgbG9hZEh5cGVydHkoaHlwZXJ0eUNhdGFsb2d1ZVVSTCwgcmV1c2VVUkwgPSBmYWxzZSwgYXBwVVJMKSB7XHJcblxyXG4gICAgaWYgKCFoeXBlcnR5Q2F0YWxvZ3VlVVJMKSB0aHJvdyBuZXcgRXJyb3IoJ0h5cGVydHkgZGVzY3JpcHRvciB1cmwgcGFyYW1ldGVyIGlzIG5lZWRlZCcpO1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZGVyLmxvYWRIeXBlcnR5KGh5cGVydHlDYXRhbG9ndWVVUkwsIHJldXNlVVJMLCBhcHBVUkwpO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogRGVwbG95IFN0dWIgZnJvbSBDYXRhbG9ndWUgVVJMIG9yIGRvbWFpbiB1cmxcclxuICAqIEBwYXJhbSAge1VSTC5VUkx9ICAgICBkb21haW4gICAgICAgICAgZG9tYWluXHJcbiAgKi9cclxuICBsb2FkU3R1Yihwcm90b2NvbHN0dWJDYXRhbG9ndWVVUkwpIHtcclxuXHJcbiAgICBpZiAoIXByb3RvY29sc3R1YkNhdGFsb2d1ZVVSTCkgdGhyb3cgbmV3IEVycm9yKCdQcm90b1N0dWIgZGVzY3JpcHRvciB1cmwgcGFyYW1ldGVyIGlzIG5lZWRlZCcpO1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZGVyLmxvYWRTdHViKHByb3RvY29sc3R1YkNhdGFsb2d1ZVVSTCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBEZXBsb3kgaWRwUHJveHkgZnJvbSBDYXRhbG9ndWUgVVJMIG9yIGRvbWFpbiB1cmxcclxuICAqIEBwYXJhbSAge1VSTC5VUkx9ICAgICBkb21haW4gICAgICAgICAgZG9tYWluXHJcbiAgKi9cclxuICBsb2FkSWRwUHJveHkoaXBkUHJveHlDYXRhbG9ndWVVUkwpIHtcclxuICAgIGxvZy5sb2coJ2lwZFByb3h5Q2F0YWxvZ3VlVVJMJywgaXBkUHJveHlDYXRhbG9ndWVVUkwpO1xyXG5cclxuICAgIGlmICghaXBkUHJveHlDYXRhbG9ndWVVUkwpIHRocm93IG5ldyBFcnJvcignVGhlIElEUCBQcm94eSBVUkwgaXMgYSBuZWVkZWQgcGFyYW1ldGVyLCBjb3VsZCBiZSBhIERPTUFJTiBvciBhIFVSTCcpO1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZGVyLmxvYWRJZHBQcm94eShpcGRQcm94eUNhdGFsb2d1ZVVSTCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIGNsb3NlIGFsbCB0aGUgcnVudGltZTsgVW5yZWdpc3RlciBhbGwgaHlwZXJ0aWVzO1xyXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Qm9vbGVhbj59IHJlc3VsdCBvZiB0aGUgY2xvc2UgbWV0aG9kLCB3aXRoIHRydWUgb3IgZmFsc2UgdG8gdGhlIG9wZXJhdGlvbiBzdWNjZXNzO1xyXG4gICAqL1xyXG4gIGNsb3NlKGxvZ091dCkge1xyXG4gICAgY29uc29sZS5sb2coJ1J1bnRpbWUgY29yZSBsb2dvdXQ6ICcsIGxvZ091dCk7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKGxvZ091dCA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmlkZW50aXR5TWFuYWdlci5yZXNldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvZy5pbmZvKCdVbnJlZ2lzdGVyIGFsbCBoeXBlcnRpZXMnKTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIF90aGlzLnJlZ2lzdHJ5LnVucmVnaXN0ZXJBbGxIeXBlcnRpZXMoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xyXG4gICAgICAgIGxvZy5pbmZvKCdBbGwgdGhlIGh5cGVydGllcyBhcmUgdW5yZWdpc3RlZCB3aXRoIFN1Y2Nlc3M6JywgcmVzdWx0KTtcclxuICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihyZWFzb24pIHtcclxuICAgICAgICBsb2cuZXJyb3IoJ0ZhaWxlZCB0byB1bnJlZ2lzdGVyIHRoZSBoeXBlcnRpZXMnLCByZWFzb24pO1xyXG4gICAgICAgIHJlamVjdChmYWxzZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBSdW50aW1lVUE7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcnVudGltZS9SdW50aW1lVUEuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkE7QUFDQTtBQUVBO0FBQ0E7QUFEQTtBQUNBO0FBR0E7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7QUFDQTtBQUNBO0FBQUE7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7QUExREE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFDQTtBQStCQTs7Ozs7Ozs7Ozs7Ozs7O0FBZUE7QUFDQTtBQUNBOzs7Ozs7QUFNQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FBUUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFKQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQVlBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7Ozs7O0FBSUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///416\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(182);\n__webpack_require__(128);\n__webpack_require__(190);\n__webpack_require__(426);\n__webpack_require__(433);\n__webpack_require__(434);\nmodule.exports = __webpack_require__(13).Promise;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDE3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlLmpzPzUzOTgiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnByb21pc2UnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczcucHJvbWlzZS50cnknKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9fY29yZScpLlByb21pc2U7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vcHJvbWlzZS5qc1xuLy8gbW9kdWxlIGlkID0gNDE3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///417\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(129);\nvar defined = __webpack_require__(130);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDE4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zdHJpbmctYXQuanM/ODdhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG4vLyB0cnVlICAtPiBTdHJpbmcjYXRcbi8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgcG9zKSB7XG4gICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG4gICAgdmFyIGkgPSB0b0ludGVnZXIocG9zKTtcbiAgICB2YXIgbCA9IHMubGVuZ3RoO1xuICAgIHZhciBhLCBiO1xuICAgIGlmIChpIDwgMCB8fCBpID49IGwpIHJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG4gICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qc1xuLy8gbW9kdWxlIGlkID0gNDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///418\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar create = __webpack_require__(133);\nvar descriptor = __webpack_require__(73);\nvar setToStringTag = __webpack_require__(96);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(58)(IteratorPrototype, __webpack_require__(23)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDE5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qcz9mNzg1Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2hpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA0MTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///419\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(40);\nvar anObject = __webpack_require__(41);\nvar getKeys = __webpack_require__(67);\n\nmodule.exports = __webpack_require__(44) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHBzLmpzP2FhMmEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXlzID0gZ2V0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBQO1xuICB3aGlsZSAobGVuZ3RoID4gaSkgZFAuZihPLCBQID0ga2V5c1tpKytdLCBQcm9wZXJ0aWVzW1BdKTtcbiAgcmV0dXJuIE87XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanNcbi8vIG1vZHVsZSBpZCA9IDQyMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///420\n")},function(module,exports,__webpack_require__){eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(45);\nvar toLength = __webpack_require__(134);\nvar toAbsoluteIndex = __webpack_require__(422);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qcz9iYzU3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzXG4vLyBtb2R1bGUgaWQgPSA0MjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///421\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(129);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcz83ZTQwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA0MjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///422\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar addToUnscopables = __webpack_require__(424);\nvar step = __webpack_require__(425);\nvar Iterators = __webpack_require__(74);\nvar toIObject = __webpack_require__(45);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(183)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qcz9jNDY5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJyk7XG52YXIgc3RlcCA9IHJlcXVpcmUoJy4vX2l0ZXItc3RlcCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcblxuLy8gMjIuMS4zLjQgQXJyYXkucHJvdG90eXBlLmVudHJpZXMoKVxuLy8gMjIuMS4zLjEzIEFycmF5LnByb3RvdHlwZS5rZXlzKClcbi8vIDIyLjEuMy4yOSBBcnJheS5wcm90b3R5cGUudmFsdWVzKClcbi8vIDIyLjEuMy4zMCBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgdGhpcy5fdCA9IHRvSU9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgLy8ga2luZFxuLy8gMjIuMS41LjIuMSAlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGtpbmQgPSB0aGlzLl9rO1xuICB2YXIgaW5kZXggPSB0aGlzLl9pKys7XG4gIGlmICghTyB8fCBpbmRleCA+PSBPLmxlbmd0aCkge1xuICAgIHRoaXMuX3QgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHN0ZXAoMSk7XG4gIH1cbiAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4gc3RlcCgwLCBpbmRleCk7XG4gIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7XG4gIHJldHVybiBzdGVwKDAsIFtpbmRleCwgT1tpbmRleF1dKTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuYWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuYWRkVG9VbnNjb3BhYmxlcygndmFsdWVzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDQyM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///423\n")},function(module,exports){eval("module.exports = function () { /* empty */ };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDI0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanM/ZTI2NyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanNcbi8vIG1vZHVsZSBpZCA9IDQyNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///424\n")},function(module,exports){eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDI1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLXN0ZXAuanM/MTA2NiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChkb25lLCB2YWx1ZSkge1xuICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6ICEhZG9uZSB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLXN0ZXAuanNcbi8vIG1vZHVsZSBpZCA9IDQyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///425\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(93);\nvar global = __webpack_require__(22);\nvar ctx = __webpack_require__(65);\nvar classof = __webpack_require__(191);\nvar $export = __webpack_require__(21);\nvar isObject = __webpack_require__(36);\nvar aFunction = __webpack_require__(94);\nvar anInstance = __webpack_require__(427);\nvar forOf = __webpack_require__(428);\nvar speciesConstructor = __webpack_require__(195);\nvar task = __webpack_require__(196).set;\nvar microtask = __webpack_require__(430)();\nvar newPromiseCapabilityModule = __webpack_require__(138);\nvar perform = __webpack_require__(197);\nvar promiseResolve = __webpack_require__(198);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(23)('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value);\n if (domain) domain.exit();\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(431)($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(96)($Promise, PROMISE);\n__webpack_require__(432)(PROMISE);\nWrapper = __webpack_require__(13)[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(199)(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDI2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5wcm9taXNlLmpzPzA5N2MiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKS5zZXQ7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi9fbWljcm90YXNrJykoKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi9fcGVyZm9ybScpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG52YXIgUFJPTUlTRSA9ICdQcm9taXNlJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciAkUHJvbWlzZSA9IGdsb2JhbFtQUk9NSVNFXTtcbnZhciBpc05vZGUgPSBjbGFzc29mKHByb2Nlc3MpID09ICdwcm9jZXNzJztcbnZhciBlbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBJbnRlcm5hbCwgbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5LCBPd25Qcm9taXNlQ2FwYWJpbGl0eSwgV3JhcHBlcjtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmY7XG5cbnZhciBVU0VfTkFUSVZFID0gISFmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgLy8gY29ycmVjdCBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gICAgdmFyIHByb21pc2UgPSAkUHJvbWlzZS5yZXNvbHZlKDEpO1xuICAgIHZhciBGYWtlUHJvbWlzZSA9IChwcm9taXNlLmNvbnN0cnVjdG9yID0ge30pW3JlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyldID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgICAgIGV4ZWMoZW1wdHksIGVtcHR5KTtcbiAgICB9O1xuICAgIC8vIHVuaGFuZGxlZCByZWplY3Rpb25zIHRyYWNraW5nIHN1cHBvcnQsIE5vZGVKUyBQcm9taXNlIHdpdGhvdXQgaXQgZmFpbHMgQEBzcGVjaWVzIHRlc3RcbiAgICByZXR1cm4gKGlzTm9kZSB8fCB0eXBlb2YgUHJvbWlzZVJlamVjdGlvbkV2ZW50ID09ICdmdW5jdGlvbicpICYmIHByb21pc2UudGhlbihlbXB0eSkgaW5zdGFuY2VvZiBGYWtlUHJvbWlzZTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG59KCk7XG5cbi8vIGhlbHBlcnNcbnZhciBpc1RoZW5hYmxlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciB0aGVuO1xuICByZXR1cm4gaXNPYmplY3QoaXQpICYmIHR5cGVvZiAodGhlbiA9IGl0LnRoZW4pID09ICdmdW5jdGlvbicgPyB0aGVuIDogZmFsc2U7XG59O1xudmFyIG5vdGlmeSA9IGZ1bmN0aW9uIChwcm9taXNlLCBpc1JlamVjdCkge1xuICBpZiAocHJvbWlzZS5fbikgcmV0dXJuO1xuICBwcm9taXNlLl9uID0gdHJ1ZTtcbiAgdmFyIGNoYWluID0gcHJvbWlzZS5fYztcbiAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdmFsdWUgPSBwcm9taXNlLl92O1xuICAgIHZhciBvayA9IHByb21pc2UuX3MgPT0gMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIHJ1biA9IGZ1bmN0aW9uIChyZWFjdGlvbikge1xuICAgICAgdmFyIGhhbmRsZXIgPSBvayA/IHJlYWN0aW9uLm9rIDogcmVhY3Rpb24uZmFpbDtcbiAgICAgIHZhciByZXNvbHZlID0gcmVhY3Rpb24ucmVzb2x2ZTtcbiAgICAgIHZhciByZWplY3QgPSByZWFjdGlvbi5yZWplY3Q7XG4gICAgICB2YXIgZG9tYWluID0gcmVhY3Rpb24uZG9tYWluO1xuICAgICAgdmFyIHJlc3VsdCwgdGhlbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgaWYgKHByb21pc2UuX2ggPT0gMikgb25IYW5kbGVVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgICAgICAgICBwcm9taXNlLl9oID0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhbmRsZXIgPT09IHRydWUpIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVyKHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChkb21haW4pIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHJlYWN0aW9uLnByb21pc2UpIHtcbiAgICAgICAgICAgIHJlamVjdChUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aGVuLmNhbGwocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoID4gaSkgcnVuKGNoYWluW2krK10pOyAvLyB2YXJpYWJsZSBsZW5ndGggLSBjYW4ndCB1c2UgZm9yRWFjaFxuICAgIHByb21pc2UuX2MgPSBbXTtcbiAgICBwcm9taXNlLl9uID0gZmFsc2U7XG4gICAgaWYgKGlzUmVqZWN0ICYmICFwcm9taXNlLl9oKSBvblVuaGFuZGxlZChwcm9taXNlKTtcbiAgfSk7XG59O1xudmFyIG9uVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIHVuaGFuZGxlZCA9IGlzVW5oYW5kbGVkKHByb21pc2UpO1xuICAgIHZhciByZXN1bHQsIGhhbmRsZXIsIGNvbnNvbGU7XG4gICAgaWYgKHVuaGFuZGxlZCkge1xuICAgICAgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChpc05vZGUpIHtcbiAgICAgICAgICBwcm9jZXNzLmVtaXQoJ3VuaGFuZGxlZFJlamVjdGlvbicsIHZhbHVlLCBwcm9taXNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChoYW5kbGVyID0gZ2xvYmFsLm9udW5oYW5kbGVkcmVqZWN0aW9uKSB7XG4gICAgICAgICAgaGFuZGxlcih7IHByb21pc2U6IHByb21pc2UsIHJlYXNvbjogdmFsdWUgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoKGNvbnNvbGUgPSBnbG9iYWwuY29uc29sZSkgJiYgY29uc29sZS5lcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBCcm93c2VycyBzaG91bGQgbm90IHRyaWdnZXIgYHJlamVjdGlvbkhhbmRsZWRgIGV2ZW50IGlmIGl0IHdhcyBoYW5kbGVkIGhlcmUsIE5vZGVKUyAtIHNob3VsZFxuICAgICAgcHJvbWlzZS5faCA9IGlzTm9kZSB8fCBpc1VuaGFuZGxlZChwcm9taXNlKSA/IDIgOiAxO1xuICAgIH0gcHJvbWlzZS5fYSA9IHVuZGVmaW5lZDtcbiAgICBpZiAodW5oYW5kbGVkICYmIHJlc3VsdC5lKSB0aHJvdyByZXN1bHQudjtcbiAgfSk7XG59O1xudmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgcmV0dXJuIHByb21pc2UuX2ggIT09IDEgJiYgKHByb21pc2UuX2EgfHwgcHJvbWlzZS5fYykubGVuZ3RoID09PSAwO1xufTtcbnZhciBvbkhhbmRsZVVuaGFuZGxlZCA9IGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaGFuZGxlcjtcbiAgICBpZiAoaXNOb2RlKSB7XG4gICAgICBwcm9jZXNzLmVtaXQoJ3JlamVjdGlvbkhhbmRsZWQnLCBwcm9taXNlKTtcbiAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub25yZWplY3Rpb25oYW5kbGVkKSB7XG4gICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiBwcm9taXNlLl92IH0pO1xuICAgIH1cbiAgfSk7XG59O1xudmFyICRyZWplY3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIHByb21pc2UgPSB0aGlzO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHByb21pc2UuX3YgPSB2YWx1ZTtcbiAgcHJvbWlzZS5fcyA9IDI7XG4gIGlmICghcHJvbWlzZS5fYSkgcHJvbWlzZS5fYSA9IHByb21pc2UuX2Muc2xpY2UoKTtcbiAgbm90aWZ5KHByb21pc2UsIHRydWUpO1xufTtcbnZhciAkcmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIHZhciB0aGVuO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHRyeSB7XG4gICAgaWYgKHByb21pc2UgPT09IHZhbHVlKSB0aHJvdyBUeXBlRXJyb3IoXCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZlwiKTtcbiAgICBpZiAodGhlbiA9IGlzVGhlbmFibGUodmFsdWUpKSB7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd3JhcHBlciA9IHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9OyAvLyB3cmFwXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhlbi5jYWxsKHZhbHVlLCBjdHgoJHJlc29sdmUsIHdyYXBwZXIsIDEpLCBjdHgoJHJlamVjdCwgd3JhcHBlciwgMSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgJHJlamVjdC5jYWxsKHdyYXBwZXIsIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICAgICAgcHJvbWlzZS5fcyA9IDE7XG4gICAgICBub3RpZnkocHJvbWlzZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgICRyZWplY3QuY2FsbCh7IF93OiBwcm9taXNlLCBfZDogZmFsc2UgfSwgZSk7IC8vIHdyYXBcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmICghVVNFX05BVElWRSkge1xuICAvLyAyNS40LjMuMSBQcm9taXNlKGV4ZWN1dG9yKVxuICAkUHJvbWlzZSA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsICRQcm9taXNlLCBQUk9NSVNFLCAnX2gnKTtcbiAgICBhRnVuY3Rpb24oZXhlY3V0b3IpO1xuICAgIEludGVybmFsLmNhbGwodGhpcyk7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yKGN0eCgkcmVzb2x2ZSwgdGhpcywgMSksIGN0eCgkcmVqZWN0LCB0aGlzLCAxKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAkcmVqZWN0LmNhbGwodGhpcywgZXJyKTtcbiAgICB9XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBJbnRlcm5hbCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICB0aGlzLl9jID0gW107ICAgICAgICAgICAgIC8vIDwtIGF3YWl0aW5nIHJlYWN0aW9uc1xuICAgIHRoaXMuX2EgPSB1bmRlZmluZWQ7ICAgICAgLy8gPC0gY2hlY2tlZCBpbiBpc1VuaGFuZGxlZCByZWFjdGlvbnNcbiAgICB0aGlzLl9zID0gMDsgICAgICAgICAgICAgIC8vIDwtIHN0YXRlXG4gICAgdGhpcy5fZCA9IGZhbHNlOyAgICAgICAgICAvLyA8LSBkb25lXG4gICAgdGhpcy5fdiA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSB2YWx1ZVxuICAgIHRoaXMuX2ggPSAwOyAgICAgICAgICAgICAgLy8gPC0gcmVqZWN0aW9uIHN0YXRlLCAwIC0gZGVmYXVsdCwgMSAtIGhhbmRsZWQsIDIgLSB1bmhhbmRsZWRcbiAgICB0aGlzLl9uID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIG5vdGlmeVxuICB9O1xuICBJbnRlcm5hbC5wcm90b3R5cGUgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKSgkUHJvbWlzZS5wcm90b3R5cGUsIHtcbiAgICAvLyAyNS40LjUuMyBQcm9taXNlLnByb3RvdHlwZS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKVxuICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgIHZhciByZWFjdGlvbiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCAkUHJvbWlzZSkpO1xuICAgICAgcmVhY3Rpb24ub2sgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogdHJ1ZTtcbiAgICAgIHJlYWN0aW9uLmZhaWwgPSB0eXBlb2Ygb25SZWplY3RlZCA9PSAnZnVuY3Rpb24nICYmIG9uUmVqZWN0ZWQ7XG4gICAgICByZWFjdGlvbi5kb21haW4gPSBpc05vZGUgPyBwcm9jZXNzLmRvbWFpbiA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2MucHVzaChyZWFjdGlvbik7XG4gICAgICBpZiAodGhpcy5fYSkgdGhpcy5fYS5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9zKSBub3RpZnkodGhpcywgZmFsc2UpO1xuICAgICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gICAgfSxcbiAgICAvLyAyNS40LjUuMSBQcm9taXNlLnByb3RvdHlwZS5jYXRjaChvblJlamVjdGVkKVxuICAgICdjYXRjaCc6IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gICAgfVxuICB9KTtcbiAgT3duUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBuZXcgSW50ZXJuYWwoKTtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGN0eCgkcmVzb2x2ZSwgcHJvbWlzZSwgMSk7XG4gICAgdGhpcy5yZWplY3QgPSBjdHgoJHJlamVjdCwgcHJvbWlzZSwgMSk7XG4gIH07XG4gIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gICAgcmV0dXJuIEMgPT09ICRQcm9taXNlIHx8IEMgPT09IFdyYXBwZXJcbiAgICAgID8gbmV3IE93blByb21pc2VDYXBhYmlsaXR5KEMpXG4gICAgICA6IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBQcm9taXNlOiAkUHJvbWlzZSB9KTtcbnJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJykoJFByb21pc2UsIFBST01JU0UpO1xucmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKShQUk9NSVNFKTtcbldyYXBwZXIgPSByZXF1aXJlKCcuL19jb3JlJylbUFJPTUlTRV07XG5cbi8vIHN0YXRpY3NcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjUgUHJvbWlzZS5yZWplY3QocilcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocikge1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkodGhpcyk7XG4gICAgdmFyICQkcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgJCRyZWplY3Qocik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChMSUJSQVJZIHx8ICFVU0VfTkFUSVZFKSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNiBQcm9taXNlLnJlc29sdmUoeClcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKExJQlJBUlkgJiYgdGhpcyA9PT0gV3JhcHBlciA/ICRQcm9taXNlIDogdGhpcywgeCk7XG4gIH1cbn0pO1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKFVTRV9OQVRJVkUgJiYgcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbiAoaXRlcikge1xuICAkUHJvbWlzZS5hbGwoaXRlcilbJ2NhdGNoJ10oZW1wdHkpO1xufSkpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC4xIFByb21pc2UuYWxsKGl0ZXJhYmxlKVxuICBhbGw6IGZ1bmN0aW9uIGFsbChpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciAkaW5kZXggPSBpbmRleCsrO1xuICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbJGluZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9LFxuICAvLyAyNS40LjQuNCBQcm9taXNlLnJhY2UoaXRlcmFibGUpXG4gIHJhY2U6IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgZm9yT2YoaXRlcmFibGUsIGZhbHNlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihjYXBhYmlsaXR5LnJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmUpIHJlamVjdChyZXN1bHQudik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYucHJvbWlzZS5qc1xuLy8gbW9kdWxlIGlkID0gNDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///426\n")},function(module,exports){eval("module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDI3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1pbnN0YW5jZS5qcz9kOGFjIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSwgZm9yYmlkZGVuRmllbGQpIHtcbiAgaWYgKCEoaXQgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikgfHwgKGZvcmJpZGRlbkZpZWxkICE9PSB1bmRlZmluZWQgJiYgZm9yYmlkZGVuRmllbGQgaW4gaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKG5hbWUgKyAnOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzXG4vLyBtb2R1bGUgaWQgPSA0Mjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///427\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(65);\nvar call = __webpack_require__(192);\nvar isArrayIter = __webpack_require__(193);\nvar anObject = __webpack_require__(41);\nvar toLength = __webpack_require__(134);\nvar getIterFn = __webpack_require__(194);\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDI4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mb3Itb2YuanM/MzU2YiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4vX2l0ZXItY2FsbCcpO1xudmFyIGlzQXJyYXlJdGVyID0gcmVxdWlyZSgnLi9faXMtYXJyYXktaXRlcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBnZXRJdGVyRm4gPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIEJSRUFLID0ge307XG52YXIgUkVUVVJOID0ge307XG52YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCBlbnRyaWVzLCBmbiwgdGhhdCwgSVRFUkFUT1IpIHtcbiAgdmFyIGl0ZXJGbiA9IElURVJBVE9SID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcmFibGU7IH0gOiBnZXRJdGVyRm4oaXRlcmFibGUpO1xuICB2YXIgZiA9IGN0eChmbiwgdGhhdCwgZW50cmllcyA/IDIgOiAxKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCwgc3RlcCwgaXRlcmF0b3IsIHJlc3VsdDtcbiAgaWYgKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ZXJhYmxlICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvclxuICBpZiAoaXNBcnJheUl0ZXIoaXRlckZuKSkgZm9yIChsZW5ndGggPSB0b0xlbmd0aChpdGVyYWJsZS5sZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgIHJlc3VsdCA9IGVudHJpZXMgPyBmKGFuT2JqZWN0KHN0ZXAgPSBpdGVyYWJsZVtpbmRleF0pWzBdLCBzdGVwWzFdKSA6IGYoaXRlcmFibGVbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIGZvciAoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChpdGVyYWJsZSk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTspIHtcbiAgICByZXN1bHQgPSBjYWxsKGl0ZXJhdG9yLCBmLCBzdGVwLnZhbHVlLCBlbnRyaWVzKTtcbiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcbmV4cG9ydHMuQlJFQUsgPSBCUkVBSztcbmV4cG9ydHMuUkVUVVJOID0gUkVUVVJOO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qc1xuLy8gbW9kdWxlIGlkID0gNDI4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///428\n")},function(module,exports){eval("// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDI5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pbnZva2UuanM/OTI3YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYXN0IGFwcGx5LCBodHRwOi8vanNwZXJmLmxua2l0LmNvbS9mYXN0LWFwcGx5LzVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCBhcmdzLCB0aGF0KSB7XG4gIHZhciB1biA9IHRoYXQgPT09IHVuZGVmaW5lZDtcbiAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIHVuID8gZm4oKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0KTtcbiAgICBjYXNlIDE6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICBjYXNlIDQ6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuICB9IHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmdzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW52b2tlLmpzXG4vLyBtb2R1bGUgaWQgPSA0Mjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///429\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(22);\nvar macrotask = __webpack_require__(196).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(75)(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n var promise = Promise.resolve();\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19taWNyb3Rhc2suanM/ZjM2MyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbWFjcm90YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBPYnNlcnZlciA9IGdsb2JhbC5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBQcm9taXNlID0gZ2xvYmFsLlByb21pc2U7XG52YXIgaXNOb2RlID0gcmVxdWlyZSgnLi9fY29mJykocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhlYWQsIGxhc3QsIG5vdGlmeTtcblxuICB2YXIgZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBhcmVudCwgZm47XG4gICAgaWYgKGlzTm9kZSAmJiAocGFyZW50ID0gcHJvY2Vzcy5kb21haW4pKSBwYXJlbnQuZXhpdCgpO1xuICAgIHdoaWxlIChoZWFkKSB7XG4gICAgICBmbiA9IGhlYWQuZm47XG4gICAgICBoZWFkID0gaGVhZC5uZXh0O1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm4oKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGhlYWQpIG5vdGlmeSgpO1xuICAgICAgICBlbHNlIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgIGlmIChwYXJlbnQpIHBhcmVudC5lbnRlcigpO1xuICB9O1xuXG4gIC8vIE5vZGUuanNcbiAgaWYgKGlzTm9kZSkge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlciwgZXhjZXB0IGlPUyBTYWZhcmkgLSBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMzM5XG4gIH0gZWxzZSBpZiAoT2JzZXJ2ZXIgJiYgIShnbG9iYWwubmF2aWdhdG9yICYmIGdsb2JhbC5uYXZpZ2F0b3Iuc3RhbmRhbG9uZSkpIHtcbiAgICB2YXIgdG9nZ2xlID0gdHJ1ZTtcbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBuZXcgT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vZGUuZGF0YSA9IHRvZ2dsZSA9ICF0b2dnbGU7XG4gICAgfTtcbiAgLy8gZW52aXJvbm1lbnRzIHdpdGggbWF5YmUgbm9uLWNvbXBsZXRlbHkgY29ycmVjdCwgYnV0IGV4aXN0ZW50IFByb21pc2VcbiAgfSBlbHNlIGlmIChQcm9taXNlICYmIFByb21pc2UucmVzb2x2ZSkge1xuICAgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvbWlzZS50aGVuKGZsdXNoKTtcbiAgICB9O1xuICAvLyBmb3Igb3RoZXIgZW52aXJvbm1lbnRzIC0gbWFjcm90YXNrIGJhc2VkIG9uOlxuICAvLyAtIHNldEltbWVkaWF0ZVxuICAvLyAtIE1lc3NhZ2VDaGFubmVsXG4gIC8vIC0gd2luZG93LnBvc3RNZXNzYWdcbiAgLy8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcbiAgLy8gLSBzZXRUaW1lb3V0XG4gIH0gZWxzZSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gc3RyYW5nZSBJRSArIHdlYnBhY2sgZGV2IHNlcnZlciBidWcgLSB1c2UgLmNhbGwoZ2xvYmFsKVxuICAgICAgbWFjcm90YXNrLmNhbGwoZ2xvYmFsLCBmbHVzaCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoZm4pIHtcbiAgICB2YXIgdGFzayA9IHsgZm46IGZuLCBuZXh0OiB1bmRlZmluZWQgfTtcbiAgICBpZiAobGFzdCkgbGFzdC5uZXh0ID0gdGFzaztcbiAgICBpZiAoIWhlYWQpIHtcbiAgICAgIGhlYWQgPSB0YXNrO1xuICAgICAgbm90aWZ5KCk7XG4gICAgfSBsYXN0ID0gdGFzaztcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWljcm90YXNrLmpzXG4vLyBtb2R1bGUgaWQgPSA0MzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///430\n")},function(module,exports,__webpack_require__){eval("var hide = __webpack_require__(58);\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS1hbGwuanM/YzQ3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc3JjLCBzYWZlKSB7XG4gIGZvciAodmFyIGtleSBpbiBzcmMpIHtcbiAgICBpZiAoc2FmZSAmJiB0YXJnZXRba2V5XSkgdGFyZ2V0W2tleV0gPSBzcmNba2V5XTtcbiAgICBlbHNlIGhpZGUodGFyZ2V0LCBrZXksIHNyY1trZXldKTtcbiAgfSByZXR1cm4gdGFyZ2V0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS1hbGwuanNcbi8vIG1vZHVsZSBpZCA9IDQzMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///431\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(22);\nvar core = __webpack_require__(13);\nvar dP = __webpack_require__(40);\nvar DESCRIPTORS = __webpack_require__(44);\nvar SPECIES = __webpack_require__(23)('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtc3BlY2llcy5qcz82ZDFhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgdmFyIEMgPSB0eXBlb2YgY29yZVtLRVldID09ICdmdW5jdGlvbicgPyBjb3JlW0tFWV0gOiBnbG9iYWxbS0VZXTtcbiAgaWYgKERFU0NSSVBUT1JTICYmIEMgJiYgIUNbU1BFQ0lFU10pIGRQLmYoQywgU1BFQ0lFUywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH1cbiAgfSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1zcGVjaWVzLmpzXG4vLyBtb2R1bGUgaWQgPSA0MzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///432\n")},function(module,exports,__webpack_require__){"use strict";eval("// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(21);\nvar core = __webpack_require__(13);\nvar global = __webpack_require__(22);\nvar speciesConstructor = __webpack_require__(195);\nvar promiseResolve = __webpack_require__(198);\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHkuanM/MTJhMCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wcm9taXNlLWZpbmFsbHlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuL19wcm9taXNlLXJlc29sdmUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdQcm9taXNlJywgeyAnZmluYWxseSc6IGZ1bmN0aW9uIChvbkZpbmFsbHkpIHtcbiAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgY29yZS5Qcm9taXNlIHx8IGdsb2JhbC5Qcm9taXNlKTtcbiAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2Ygb25GaW5hbGx5ID09ICdmdW5jdGlvbic7XG4gIHJldHVybiB0aGlzLnRoZW4oXG4gICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4geDsgfSk7XG4gICAgfSA6IG9uRmluYWxseSxcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHRocm93IGU7IH0pO1xuICAgIH0gOiBvbkZpbmFsbHlcbiAgKTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5LmpzXG4vLyBtb2R1bGUgaWQgPSA0MzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///433\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(21);\nvar newPromiseCapability = __webpack_require__(138);\nvar perform = __webpack_require__(197);\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDM0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeS5qcz84Y2E1Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtdHJ5XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUHJvbWlzZScsIHsgJ3RyeSc6IGZ1bmN0aW9uIChjYWxsYmFja2ZuKSB7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYodGhpcyk7XG4gIHZhciByZXN1bHQgPSBwZXJmb3JtKGNhbGxiYWNrZm4pO1xuICAocmVzdWx0LmUgPyBwcm9taXNlQ2FwYWJpbGl0eS5yZWplY3QgOiBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlKShyZXN1bHQudik7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeS5qc1xuLy8gbW9kdWxlIGlkID0gNDM0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///434\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(436);\nmodule.exports = __webpack_require__(13).Object.assign;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDM1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvYXNzaWduLmpzPzU3N2IiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmFzc2lnbjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvYXNzaWduLmpzXG4vLyBtb2R1bGUgaWQgPSA0MzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///435\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(21);\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(437) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDM2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuYXNzaWduLmpzPzQ3OGMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4zLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GLCAnT2JqZWN0JywgeyBhc3NpZ246IHJlcXVpcmUoJy4vX29iamVjdC1hc3NpZ24nKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuYXNzaWduLmpzXG4vLyBtb2R1bGUgaWQgPSA0MzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///436\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(67);\nvar gOPS = __webpack_require__(139);\nvar pIE = __webpack_require__(77);\nvar toObject = __webpack_require__(76);\nvar IObject = __webpack_require__(187);\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(66)(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDM3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtYXNzaWduLmpzPzRlOGQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gMTkuMS4yLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSwgLi4uKVxudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgJGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbi8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxubW9kdWxlLmV4cG9ydHMgPSAhJGFzc2lnbiB8fCByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgdmFyIEEgPSB7fTtcbiAgdmFyIEIgPSB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHZhciBTID0gU3ltYm9sKCk7XG4gIHZhciBLID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0JztcbiAgQVtTXSA9IDc7XG4gIEsuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGspIHsgQltrXSA9IGs7IH0pO1xuICByZXR1cm4gJGFzc2lnbih7fSwgQSlbU10gIT0gNyB8fCBPYmplY3Qua2V5cygkYXNzaWduKHt9LCBCKSkuam9pbignJykgIT0gSztcbn0pID8gZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgdmFyIFQgPSB0b09iamVjdCh0YXJnZXQpO1xuICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDE7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICB2YXIgaXNFbnVtID0gcElFLmY7XG4gIHdoaWxlIChhTGVuID4gaW5kZXgpIHtcbiAgICB2YXIgUyA9IElPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKTtcbiAgICB2YXIga2V5cyA9IGdldFN5bWJvbHMgPyBnZXRLZXlzKFMpLmNvbmNhdChnZXRTeW1ib2xzKFMpKSA6IGdldEtleXMoUyk7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciBqID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChsZW5ndGggPiBqKSBpZiAoaXNFbnVtLmNhbGwoUywga2V5ID0ga2V5c1tqKytdKSkgVFtrZXldID0gU1trZXldO1xuICB9IHJldHVybiBUO1xufSA6ICRhc3NpZ247XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWFzc2lnbi5qc1xuLy8gbW9kdWxlIGlkID0gNDM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///437\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(439);\nvar $Object = __webpack_require__(13).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDM4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzP2Y1YjAiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKSB7XG4gIHJldHVybiAkT2JqZWN0LmRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA0Mzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///438\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(21);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(44), 'Object', { defineProperty: __webpack_require__(40).f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDM5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzPzk4MjkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi40IC8gMTUuMi4zLjYgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZiB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA0Mzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///439\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof2 = __webpack_require__(78);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _runtimeUtils = __webpack_require__(143);\n\nvar _Sandbox = __webpack_require__(454);\n\nvar _AddressAllocation = __webpack_require__(99);\n\nvar _AddressAllocation2 = _interopRequireDefault(_AddressAllocation);\n\nvar _HypertyInstance = __webpack_require__(466);\n\nvar _HypertyInstance2 = _interopRequireDefault(_HypertyInstance);\n\nvar _P2PConnectionResolve = __webpack_require__(468);\n\nvar _P2PConnectionResolve2 = _interopRequireDefault(_P2PConnectionResolve);\n\nvar _utils = __webpack_require__(14);\n\n__webpack_require__(469);\n\nvar _Utils = __webpack_require__(205);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('Registry'); /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\n// Log System\n\n\n// import DiscoveryServiceFramework from './DiscoveryServiceFramework';\n\nvar STATUS = { CREATED: 'created', LIVE: 'live', DEPLOYING: 'deploying', DEPLOYED: 'deployed', PROGRESS: 'in-progress', DISCONNECTED: 'disconnected', FAILED: 'deployment-failed', DEAD: 'dead' };\n\n/*import IdentityManager from './IdentityManager';\r\nimport Discovery from './Discovery';*/\n\n/**\r\n* Runtime Registry Interface\r\n*/\n\nvar Registry = function () {\n\n /**\r\n * To initialise the Runtime Registry with the RuntimeURL that will be the basis to derive the internal runtime addresses when allocating addresses to internal runtime component. In addition, the Registry domain back-end to be used to remotely register Runtime components, is also passed as input parameter.\r\n * @param {MessageBus} msgbus msgbus\r\n * @param {HypertyRuntimeURL} runtimeURL runtimeURL\r\n * @param {AppSandbox} appSandbox appSandbox\r\n * @param {runtimeCatalogue} runtimeCatalogue runtimeCatalogue\r\n * @param {DomainURL} remoteRegistry remoteRegistry\r\n * @param {storageManager} storageManager\r\n */\n function Registry(runtimeURL, appSandbox, identityModule, runtimeCatalogue, runtimeCapabilities, storageManager, p2pHandlerURL, remoteRegistry) {\n (0, _classCallCheck3.default)(this, Registry);\n\n\n // how some functions receive the parameters for example:\n // new Registry('hyperty-runtime://sp1/123', appSandbox, idModule, remoteRegistry);\n // registry.registerStub(sandbox, 'sp1');\n // registry.registerHyperty(sandBox, 'hyperty-runtime://sp1/123');\n // registry.resolve('hyperty-runtime://sp1/123');\n\n if (!runtimeURL) throw new Error('runtimeURL is missing.');\n if (!storageManager) throw new Error('storageManager is missing.');\n\n /*if (!remoteRegistry) throw new Error('remoteRegistry is missing');*/\n\n var _this = this;\n\n _this.registryURL = runtimeURL + '/registry/';\n _this.appSandbox = appSandbox;\n _this.runtimeURL = runtimeURL;\n _this.p2pHandlerURL = p2pHandlerURL;\n _this.runtimeCatalogue = runtimeCatalogue;\n _this.remoteRegistry = remoteRegistry;\n _this.idModule = identityModule;\n _this.storageManager = storageManager;\n _this.runtimeCapabilities = runtimeCapabilities;\n _this.identifier = (0, _utils.generateGUID)();\n _this.registrationRetries = 5; // number of attempts to register Hyperties and DataObjects when errors occurs\n\n // the expires in 3600, represents 1 hour\n //the expires is in seconds, unit of measure received by the domain registry\n _this.expiresTime = 3600;\n\n _this.hypertiesListToRemove = {};\n _this.hypertiesList = [];\n _this.remoteHypertyList = [];\n _this.remoteDataObjectList = [];\n _this.idpLegacyProxyList = {};\n\n _this.watchingYou = new _Utils.WatchingYou();\n _this.p2pHandlerStub = {};\n _this.p2pRequesterStub = _this.watchingYou.watch('p2pRequesterStub', {}, true);\n _this.p2pConnectionList = _this.watchingYou.watch('p2pConnectionList', {}, true);\n _this.p2pHandlerAssociation = {};\n\n _this.protostubsList = _this.watchingYou.watch('protostubsList', {}, true);\n _this.idpProxyList = _this.watchingYou.watch('idpProxyList', {}, true);\n _this.dataObjectList = {};\n _this.subscribedDataObjectList = {};\n _this.sandboxesList = { sandbox: {}, appSandbox: {} };\n _this.pepList = {};\n _this.registries = {};\n\n _this._domain = (0, _utils.divideURL)(_this.registryURL).domain;\n _this.sandboxesList.appSandbox[runtimeURL] = appSandbox;\n var p2pConnectionResolve = new _P2PConnectionResolve2.default(_this);\n\n _this._p2pConnectionResolve = p2pConnectionResolve;\n }\n\n (0, _createClass3.default)(Registry, [{\n key: '_getIdentityAssociated',\n value: function _getIdentityAssociated(type, hypertyURL) {\n var _this = this;\n\n for (var hyperty in _this.hypertiesList) {\n var value = _this.hypertiesList[hyperty];\n\n if (value._hypertyURL === hypertyURL) {\n switch (type) {\n case 'username':\n return value._user.username;\n case 'cn':\n return value._user.cn;\n case 'locale':\n return value._user.locale;\n case 'avatar':\n return value._user.avatar;\n case 'userURL':\n return value._user.userURL;\n case '.':\n return value._user;\n default:\n return '';\n }\n }\n }\n return '';\n }\n\n /**\r\n * This function is used to return the sandbox instance where the Application is executing. It is assumed there is just one App per Runtime instance.\r\n */\n\n }, {\n key: 'getAppSandbox',\n value: function getAppSandbox() {\n var _this = this;\n return _this.appSandbox;\n }\n\n /**\r\n * This function returns the user associated to the hyperty URL\r\n * @param {String} hypertyURL hyperty URL\r\n * @return {String} userURL user URL\r\n */\n\n }, {\n key: 'getHypertyOwner',\n value: function getHypertyOwner(hypertyURL) {\n\n var _this = this;\n var userURL = void 0;\n\n for (var index in _this.hypertiesList) {\n var hyperty = _this.hypertiesList[index];\n\n if (hyperty.hypertyURL === hypertyURL) {\n return hyperty.user.userURL;\n }\n }\n return userURL;\n }\n\n /**\r\n * This function returns the user associated to the hyperty URL\r\n * @param {String} dataObjectURL dataObjectURL URL\r\n * @return {String} userURL user URL\r\n */\n\n }, {\n key: 'getDataObjectReporter',\n value: function getDataObjectReporter(dataObjectURL) {\n\n var _this = this;\n var DOurl = (0, _utils.removePathFromURL)(dataObjectURL);\n for (var index in _this.dataObjectList) {\n var dataObject = _this.dataObjectList[index];\n\n if (dataObject.url === DOurl) {\n return dataObject.reporter;\n }\n }\n return null;\n }\n\n /**\r\n * returns the hyperty Name from a given url. This url could be from a dataObject or hyperty\r\n * @param {String} url hyperty or dataObject URL\r\n * @return {String} hypertyName hyperty Name\r\n */\n\n }, {\n key: 'getHypertyName',\n value: function getHypertyName(url) {\n var _this = this;\n\n var isHypertyURL = (0, _utils.divideURL)(url).type === 'hyperty';\n\n //value to be returned in the end\n var hypertyName = void 0;\n\n //if is not an hyperty, check if is a dataObject and obtain his reporter\n var hypertyURL = isHypertyURL ? url : _this.getReporterURLSynchonous(url);\n\n for (var index in _this.hypertiesList) {\n var hyperty = _this.hypertiesList[index];\n if (hyperty.hypertyURL === hypertyURL) {\n hypertyName = hyperty.objectName;\n break;\n }\n }\n return hypertyName;\n }\n\n /**\r\n * function to return the reporterURL associated with the dataobject URL\r\n * @param {String} dataObjectURL dataObjectURL\r\n * @return {String} reporterURL reporterURL\r\n */\n\n }, {\n key: 'getReporterURL',\n value: function getReporterURL(dataObjectURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var dataObject = _this.dataObjectList[dataObjectURL];\n\n if (dataObject) {\n resolve(dataObject.reporter);\n } else {\n reject('No reporter was found');\n }\n });\n }\n\n /**\r\n * function to return the reporterURL associated with the dataobject URL. no promise returned\r\n * @param {String} dataObjectURL dataObjectURL\r\n * @return {String} reporterURL reporterURL\r\n */\n\n }, {\n key: 'getReporterURLSynchonous',\n value: function getReporterURLSynchonous(dataObjectURL) {\n var _this = this;\n\n var dataObject = _this.dataObjectList[dataObjectURL];\n\n return dataObject ? dataObject.reporter : undefined;\n }\n\n /**\r\n * returns the hyperty URL that subscribed the dataObject\r\n * @param {String} url url format\r\n * @return {String} Hyperty URL subscribed to the URL\r\n */\n\n }, {\n key: 'getDataObjectSubscriberHyperty',\n value: function getDataObjectSubscriberHyperty(url) {\n var _this = this;\n\n return _this.subscribedDataObjectList[url];\n }\n\n /**\r\n * register a desired dataObject to subscribe\r\n * @param {String} dataObjectURL dataObject URL\r\n */\n\n }, {\n key: 'registerSubscribedDataObject',\n value: function registerSubscribedDataObject(dataObjectURL, hypertyURL) {\n var _this = this;\n if (_this.subscribedDataObjectList[dataObjectURL] === undefined) {\n _this.subscribedDataObjectList[dataObjectURL] = hypertyURL;\n }\n }\n\n /**\r\n * Function to return the list of pre authorised users received in the creation of a data object\r\n * @param {String} dataObjectURL dataObjectURL\r\n * @return {Array} preAuth List of pre authorised users\r\n */\n\n }, {\n key: 'getPreAuthSubscribers',\n value: function getPreAuthSubscribers(dataObjectURL) {\n var _this = this;\n var dataObject = _this.dataObjectList[dataObjectURL];\n var preAuth = [];\n\n if (dataObject) {\n preAuth = dataObject.authorise;\n }\n return preAuth;\n }\n\n /**\r\n * send requests to unregister all hyperties registered in domain registry\r\n * @return {Promise} return a promise if the result of unregistration all hyperties\r\n */\n\n }, {\n key: 'unregisterAllHyperties',\n value: function unregisterAllHyperties() {\n var _this = this;\n\n var unregisterResults = [];\n\n return new _promise2.default(function (resolve, reject) {\n\n for (var index in _this.hypertiesList) {\n var hyperty = _this.hypertiesList[index];\n var result = _this.unregisterHypertyInstance(hyperty.hypertyURL);\n unregisterResults.push(result);\n }\n\n _promise2.default.all(unregisterResults).then(function () {\n\n resolve('successfully unregistered all hyperties');\n }, function (error) {\n reject(error);\n });\n });\n }\n\n /**\r\n * function to unregister an hypertyInstance in the Domain Registry\r\n * @param {String} hypertyInstance HypertyInsntance url\r\n *\r\n */\n\n }, {\n key: 'unregisterHypertyInstance',\n value: function unregisterHypertyInstance(hypertyInstance) {\n //TODO working but the user\n var _this = this;\n\n var closeMsg = { type: 'execute', from: _this.registryURL,\n to: hypertyInstance,\n body: { method: 'close' } };\n\n // Send message to hyperty to close\n _this._messageBus.postMessage(closeMsg, function (reply) {\n log.log('[Registry.unregisterHypertyInstance] Close Reply', reply);\n\n var message = { type: 'update', from: _this.registryURL,\n to: 'domain://registry.' + _this._domain,\n body: { resource: '/hyperty/' + hypertyInstance, value: 'disconnected', attribute: 'status' } };\n\n _this._messageBus.postMessage(message, function (reply) {\n log.log('[Registry] unregister hyperty Reply', reply);\n });\n });\n }\n\n /**\r\n * function to unregister an hypertyInstance in the Domain Registry\r\n * @param {String} hypertyInstance HypertyInsntance url\r\n *\r\n */\n\n }, {\n key: 'unregisterDataObject',\n value: function unregisterDataObject(url) {\n var _this = this;\n\n var message = { type: 'update', from: _this.registryURL,\n to: 'domain://registry.' + _this._domain,\n body: {\n resource: url,\n value: {\n status: 'disconnected'\n }\n } };\n\n _this._messageBus.postMessage(message, function (reply) {\n log.log('[Registry] unregister dataObject Reply', reply);\n });\n }\n\n /**\r\n * function to delete an dataObjectInstance in the Domain Registry\r\n * @param {String} name DataObjectName\r\n */\n\n }, {\n key: 'deleteDataObjectInstance',\n value: function deleteDataObjectInstance(name) {\n var _this = this;\n\n var message = { type: 'delete', from: _this.registryURL,\n to: 'domain://registry.' + _this._domain,\n body: { value: { name: name } } };\n\n _this._messageBus.postMessage(message, function (reply) {\n log.log('[Registry] unregister dataObject Reply', reply);\n });\n }\n\n /**\r\n * Function to update an Hyperty\r\n */\n\n }, {\n key: 'updateHypertyInstance',\n value: function updateHypertyInstance(resource, value) {\n var _this = this;\n\n var message = { type: 'UPDATE', from: _this.registryURL,\n to: 'domain://registry.' + _this._domain,\n body: { resource: resource, value: value } };\n\n _this._messageBus.post.postMessage(message, function (reply) {\n // log.log('[Registry] Updated hyperty reply', reply);\n });\n }\n\n /**\r\n * register a new subscriber in the dataObject registered\r\n * @param {String} dataObjectURL dataObject URL\r\n * @param {String} subscriberURL subscriber URL\r\n */\n\n }, {\n key: 'registerSubscriber',\n value: function registerSubscriber(dataObjectURL, subscriberURL) {\n var _this = this;\n var dataObject = _this.dataObjectList[dataObjectURL];\n\n if (dataObject) {\n\n if (!dataObject.subscribers) dataObject.subscribers = [];\n\n dataObject.subscribers.push(subscriberURL);\n _this.dataObjectList[dataObjectURL] = dataObject;\n }\n }\n\n /**\r\n * get the subscribers registered within a dataObject\r\n * @param {String} dataObjectURL dataObject URL\r\n * @param {Array} Substribers List\r\n */\n\n }, {\n key: 'getDataObjectSubscribers',\n value: function getDataObjectSubscribers(dataObjectURL) {\n var _this = this;\n var dataObject = _this.dataObjectList[dataObjectURL];\n\n if (dataObject) {\n return dataObject.subscribers;\n } else {\n throw 'No dataObject was found';\n }\n }\n\n /**\r\n * To register a new Data Object in the runtime which returns the dataObjectURL allocated to the new Data Object.\r\n * @param {String} identifier identifier\r\n * @param {String} dataObjectschema dataObjectschema\r\n * @param {String} dataObjectUrl dataObjectUrl\r\n * @param {String} dataObjectReporter dataObjectReporter\r\n * @param {Array} resources dataObject resources\r\n * @param {Array} authorise list of pre authorised authorised IDs\r\n */\n //registerDataObject(identifier, dataObjectschema, dataObjectUrl, dataObjectReporter, resources, addressURL, authorise) {\n\n }, {\n key: 'registerDataObject',\n value: function registerDataObject(objectRegistration) {\n var _this = this;\n\n var registration = (0, _utils.deepClone)(objectRegistration);\n\n return new _promise2.default(function (resolve, reject) {\n\n var dataScheme = [];\n var filteredDataScheme = registration.url.split(':');\n dataScheme.push(filteredDataScheme[0]);\n\n _this.storageManager.get('registry:DataObjectURLs').then(function (urlsList) {\n\n if (!urlsList) {\n urlsList = {};\n }\n\n //update the list with the new elements\n urlsList[objectRegistration.name + objectRegistration.schema + objectRegistration.resources + objectRegistration.reporter] = objectRegistration.url;\n\n var p2pHandler = void 0;\n var p2pRequester = void 0;\n\n if ((0, _keys2.default)(_this.p2pHandlerStub).length !== 0) {\n p2pHandler = _this.p2pHandlerStub[_this.runtimeURL].url;\n p2pRequester = _runtimeUtils.runtimeUtils.runtimeDescriptor.p2pRequesterStub;\n }\n\n registration.startingTime = registration.created;\n\n delete registration.authorise;\n delete registration.created;\n delete registration.mutual;\n delete registration.resume;\n\n if (!registration.expires) registration.expires = _this.expiresTime;\n\n registration.dataSchemes = dataScheme;\n\n if (p2pHandler) {\n registration.p2pHandler = p2pHandler;\n registration.p2pRequester = p2pRequester;\n }\n\n if (_this.isInterworkingProtoStub(registration.reporter)) {\n registration.interworking = true;\n }\n\n registration.status = 'live';\n\n var message = void 0;\n\n if (!objectRegistration.resume) {\n\n log.log('[Registry.registerDataObject] registering new data object URL', registration);\n\n message = { type: 'create', from: _this.registryURL, to: 'domain://registry.' + _this.registryDomain, body: { value: registration, policy: 'policy' } };\n } else {\n\n log.log('[Registry.registerDataObject] registering previously registered data object URL', registration);\n\n message = {\n type: 'update',\n to: 'domain://registry.' + _this.registryDomain,\n from: _this.registryURL,\n body: { resource: registration.url, value: { status: 'live' } }\n };\n }\n\n _this.dataObjectList[registration.url] = objectRegistration;\n\n // step to obtain the list of all URL registered to updated with the new one.\n _this.storageManager.set('registry:DataObjectURLs', 0, urlsList).then(function () {\n\n try {\n _this._messageBus.postMessageWithRetries(message, _this._registrationRetries, function (reply) {\n // log.log('[Registry.registerDataObject] ===> registerDataObject Reply: ', reply);\n if (reply.body.code === 200) {\n resolve(registration);\n } else {\n reject('error on register DataObject');\n }\n });\n } catch (e) {\n log.error(e);\n reject(e);\n }\n\n //timer to keep the registration alive\n // the time is defined by a little less than half of the expires time defined\n var keepAliveTimer = setInterval(function () {\n\n var message = {\n type: 'update',\n from: _this.registryURL,\n to: 'domain://registry.' + _this.registryDomain,\n body: { resource: registration.url, value: { status: 'live' }, method: 'refresh' }\n };\n\n _this._messageBus.postMessage(message, function (reply) {\n // log.log('[Registry.registerDataObject] KeepAlive Reply: ', reply);\n });\n }, registration.expires / 1.1 / 2 * 1000);\n }).catch(function (reason) {\n log.error('[Registry registerHyperty] Error: ', reason);\n reject(reason);\n });\n });\n });\n }\n }, {\n key: '_getResourcesAndSchemes',\n value: function _getResourcesAndSchemes(descriptor) {\n var _this = this;\n\n return new _promise2.default(function (resolve) {\n\n var resources = void 0;\n\n // check if the hyperty resources is a vector or a string\n // TODO delete later when catalogue is fixed\n if (typeof descriptor.hypertyType === 'string') {\n resources = [];\n resources.push(descriptor.hypertyType);\n } else {\n resources = descriptor.hypertyType;\n }\n\n var objName = descriptor.objectName;\n\n var descriptorDataSchema = descriptor.dataObjects;\n var dataSchemasArray = [];\n\n //this will create a array with a Promise in each position\n for (var index in descriptorDataSchema) {\n dataSchemasArray.push(_this.runtimeCatalogue.getDataSchemaDescriptor(descriptorDataSchema[index]));\n }\n\n // as soon as the previous array is completed, this will wait for the resolve of all promises in the array\n _promise2.default.all(dataSchemasArray).then(function (dataSchemas) {\n\n var filteredDataSchemas = [];\n for (var _index in dataSchemas) {\n var dataSchema = dataSchemas[_index];\n filteredDataSchemas.push(dataSchema.sourcePackage.sourceCode.properties.scheme.constant);\n }\n\n // log.log('[Registry] Hyperty Schemas', filteredDataSchemas);\n // log.log('[Registry] Hyperty resources', resources);\n\n resolve({ resources: resources, dataSchema: filteredDataSchemas, name: objName });\n });\n });\n }\n\n /**\r\n * method that returns previously registered Hyperty or DataObjects URLS, for given characteristics\r\n * @param {JSON} info object or hyperty charateristics info\r\n * @return {addressURL} addressURL return the URL if there is any previousy registered URL, return undefined otherwise\r\n */\n\n }, {\n key: 'checkRegisteredURLs',\n value: function checkRegisteredURLs(info, reuseURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve) {\n\n var objectType = info.reporter ? 'registry:DataObjectURLs' : 'registry:HypertyURLs';\n\n if (typeof reuseURL === 'string') {\n objectType = reuseURL && (0, _utils.divideURL)(reuseURL).type !== 'hyperty' ? 'registry:DataObjectURLs' : 'registry:HypertyURLs';\n }\n //debugger;\n _this.storageManager.get(objectType).then(function (urlsList) {\n\n if (!urlsList) {\n urlsList = {};\n }\n\n if (typeof reuseURL === 'string') {\n log.info('[Registry - checkRegisteredURLs] - look for ' + reuseURL + ' on ', urlsList);\n\n var searchResult = (0, _keys2.default)(urlsList).map(function (key) {\n var indexOf = urlsList[key].indexOf(reuseURL);\n return urlsList[key][indexOf];\n });\n\n log.info('[Registry - checkRegisteredURLs] - found ' + searchResult.length + ' results on ', searchResult);\n if (searchResult.length === 1) {\n return resolve(searchResult);\n } else {\n return resolve(undefined);\n }\n }\n\n if (objectType === 'registry:HypertyURLs') {\n _this._getResourcesAndSchemes(info).then(function (value) {\n if (urlsList[value.resources + value.dataSchema + value.name]) {\n // log.log('[Registry] reusage of hyperty URL');\n return resolve(urlsList[value.resources + value.dataSchema + value.name]);\n } else {\n // log.log('[Registry] no hyperty URL was previously registered ');\n return resolve(undefined);\n }\n });\n } else {\n\n var characteristics = info.name + info.schema + info.resources + info.reporter;\n\n if (urlsList[characteristics]) {\n // log.log('[Registry] reusage of dataObject URL');\n if (typeof urlsList[characteristics] === 'string') {\n var arrayToResolve = [];\n arrayToResolve.push(urlsList[characteristics]);\n return resolve(arrayToResolve);\n } else {\n return resolve(urlsList[characteristics]);\n }\n } else {\n // log.log('[Registry] no dataObject URL was previously registered');\n return resolve(undefined);\n }\n }\n });\n });\n }\n\n /**\r\n * To register a new Hyperty in the runtime which returns the HypertyURL allocated to the new Hyperty.\r\n * @param {Sandbox} sandbox sandbox\r\n * @param {HypertyCatalogueURL} HypertyCatalogueURL descriptor\r\n * @param {object} IdpConstraint - constraints to be used when selecting the identity to be associated with the Hyperty including origin, idp, and idHint.\r\n * @return {HypertyURL} HypertyURL\r\n */\n\n }, {\n key: 'registerHyperty',\n value: function registerHyperty(sandbox, descriptorURL, descriptor, addressURL, IdpConstraint) {\n var _this = this;\n\n var hypertyCapabilities = void 0;\n\n return new _promise2.default(function (resolve, reject) {\n\n //assuming descriptor come in this format, the service-provider-domain url is retrieved by a split instruction\n //hyperty-catalogue:///\n var domainUrl = (0, _utils.divideURL)(descriptorURL).domain;\n\n if (domainUrl.includes('catalogue')) {\n domainUrl = domainUrl.replace('catalogue.', '');\n }\n\n _this.idModule.getIdentityAssertion(IdpConstraint).then(function (result) {\n\n var userProfile = result.userProfile;\n\n // log.log('[Registry registerHyperty] userProfile', userProfile);\n var emailURL = userProfile.userURL;\n\n if (_this._messageBus === undefined) {\n reject('[Registry registerHyperty] MessageBus is undefined');\n } else {\n //call check if the protostub exist: to be removed\n /* _this.resolve(domainUrl).then(function(a) {\r\n // log.log('[Registry registerHyperty] stub to domain registry- ', a);*/\n\n _this.storageManager.get('registry:HypertyURLs').then(function (urlsList) {\n\n // log.log('[Registry registerHyperty] storageManager] - ', urlsList);\n\n _this._getResourcesAndSchemes(descriptor).then(function (value) {\n\n hypertyCapabilities = value;\n\n if (!urlsList) {\n urlsList = {};\n }\n\n urlsList[hypertyCapabilities.resources + hypertyCapabilities.dataSchema + hypertyCapabilities.name] = addressURL.address;\n _this.storageManager.set('registry:HypertyURLs', 0, urlsList).then(function () {\n\n _this.registryDomain = domainUrl;\n\n //check whether the received sanbox e ApplicationSandbox or a normal sandbox\n if (sandbox.type === 'app') {\n _this.sandboxesList.appSandbox[addressURL.address[0]] = sandbox;\n } else if (sandbox.type === 'normal') {\n _this.sandboxesList.sandbox[addressURL.address[0]] = sandbox;\n } else {\n reject('Wrong SandboxType');\n }\n\n var p2pHandler = void 0;\n var p2pRequester = void 0;\n\n if ((0, _keys2.default)(_this.p2pHandlerStub).length !== 0) {\n p2pHandler = _this.p2pHandlerStub[_this.runtimeURL].url;\n p2pRequester = _runtimeUtils.runtimeUtils.runtimeDescriptor.p2pRequesterStub;\n }\n\n var runtime = _this.runtimeURL;\n var status = 'live';\n\n var hyperty = new _HypertyInstance2.default(_this.identifier, _this.registryURL, descriptorURL, descriptor, addressURL.address[0], userProfile, 'guid', _this.runtimeURL, 'ctx', p2pHandler, p2pRequester, hypertyCapabilities.dataSchema, hypertyCapabilities.resources);\n\n _this.hypertiesList.push(hyperty);\n\n //message to register the new hyperty, within the domain registry\n var messageValue = void 0;\n var message = void 0;\n var registrationExpires = _this.expiresTime;\n\n // set a different expires value if configured in the Hyperty descriptor\n\n if (descriptor.configuration && descriptor.configuration.expires) registrationExpires = descriptor.configuration.expires;\n\n if (addressURL.newAddress) {\n // log.log('[Registry registerHyperty] registering new Hyperty URL', addressURL.address[0]);\n\n messageValue = {\n user: emailURL,\n descriptor: descriptorURL,\n url: addressURL.address[0],\n expires: registrationExpires,\n resources: hypertyCapabilities.resources,\n dataSchemes: hypertyCapabilities.dataSchema,\n runtime: runtime,\n status: status\n };\n\n // set a different expires if defined in the hyperty configuration\n\n if (p2pHandler) {\n messageValue.p2pHandler = p2pHandler;\n messageValue.p2pRequester = p2pRequester;\n }\n\n // log.log('[Registry registerHyperty] registering new Hyperty at domain registry ', messageValue);\n\n message = { type: 'create', from: _this.registryURL, to: 'domain://registry.' + _this.registryDomain, body: { value: messageValue, policy: 'policy' } };\n } else {\n // log.log('[Registry registerHyperty] registering previously registered Hyperty URL', addressURL.address[0]);\n\n message = {\n type: 'update',\n to: 'domain://registry.' + _this.registryDomain,\n from: _this.registryURL,\n body: { resource: addressURL.address[0], value: { status: 'live', user: emailURL } }\n };\n\n if (p2pHandler) {\n message.body.value.p2pHandler = p2pHandler;\n message.body.value.p2pRequester = p2pRequester;\n }\n }\n\n // log.log('[Registry registerHyperty] Hyperty registration at domain registry - ', message);\n\n try {\n _this._messageBus.postMessageWithRetries(message, _this.registrationRetries, function (reply) {\n // log.log('[Registry registerHyperty] Hyperty registration response: ', reply);\n\n if (reply.body.code === 200) {\n var _result = { url: addressURL.address[0] };\n if (p2pHandler) {\n _result.p2pHandler = p2pHandler;\n _result.p2pRequester = p2pRequester;\n }\n\n resolve(_result);\n } else if (reply.body.code === 404) {\n // log.log('[Registry registerHyperty] The update was not possible. Registering new Hyperty at domain registry');\n\n messageValue = {\n user: emailURL,\n descriptor: descriptorURL,\n url: addressURL.address[0],\n expires: registrationExpires,\n resources: hypertyCapabilities.resources,\n dataSchemes: hypertyCapabilities.dataSchema,\n runtime: runtime,\n status: status\n };\n\n if (p2pHandler) {\n messageValue.p2pHandler = p2pHandler;\n messageValue.p2pRequester = p2pRequester;\n }\n\n message = { type: 'create', from: _this.registryURL, to: 'domain://registry.' + _this.registryDomain, body: { value: messageValue, policy: 'policy' } };\n\n try {\n _this._messageBus.postMessageWithRetries(message, _this.registrationRetries, function (reply) {\n // log.log('[Registry registerHyperty] Hyperty registration update response: ', reply);\n\n if (reply.body.code === 200) {\n var _result2 = { url: addressURL.address[0] };\n if (p2pHandler) {\n _result2.p2pHandler = p2pHandler;\n _result2.p2pRequester = p2pRequester;\n }\n\n resolve(_result2);\n } else {\n throw new Error('Failed to register an Hyperty: ' + reply);\n }\n });\n } catch (e) {\n log.error(e);\n reject(e);\n }\n } else {\n throw new Error('Failed to register an Hyperty: ', reply);\n }\n });\n } catch (e) {\n log.error(e);\n reject(e);\n }\n\n //timer to keep the registration alive\n // the time is defined by a little less than half of the expires time defined\n var keepAliveTimer = setInterval(function () {\n\n var message = {\n type: 'update',\n from: _this.registryURL,\n to: 'domain://registry.' + _this.registryDomain,\n body: { resource: addressURL.address[0], value: { status: 'live' }, method: 'refresh' } };\n\n _this._messageBus.postMessage(message, function (reply) {\n // log.log('[Registry registerHyperty] KeepAlive Reply: ', reply);\n });\n }, registrationExpires / 1.1 / 2 * 1000);\n }).catch(function (reason) {\n // log.log('[Registry registerHyperty] Error: ', reason);\n reject(reason);\n });\n });\n });\n }\n }, function (err) {\n reject('[Registry registerHyperty] ', err);\n });\n });\n }\n\n /**\r\n * To unregister a previously registered Hyperty\r\n * @param {HypertyURL} HypertyURL url url\r\n */\n\n }, {\n key: 'unregisterHyperty',\n value: function unregisterHyperty(url) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var found = false;\n var index = 0;\n\n for (index = 0; index < _this.hypertiesList.length; index++) {\n var hyperty = _this.hypertiesList[index];\n if (hyperty !== undefined) {\n if (hyperty.hypertyURL === url) {\n found = true;\n break;\n }\n }\n }\n\n if (found === false) {\n reject('Hyperty not found');\n } else {\n delete _this.hypertiesList[index];\n resolve('Hyperty successfully deleted');\n }\n });\n }\n\n /**\r\n * To discover protocol stubs available in the runtime for a certain domain. If available, it returns the runtime url for the protocol stub that connects to the requested domain. Required by the runtime BUS to route messages to remote servers or peers (do we need something similar for Hyperties?).\r\n * @param {DomainURL} DomainURL url\r\n * @return {RuntimeURL} RuntimeURL\r\n */\n\n }, {\n key: 'discoverProtostub',\n value: function discoverProtostub(url) {\n if (!url) throw new Error('Parameter url needed');\n var _this = this;\n\n var dividedURL = (0, _utils.divideURL)(url);\n var domainURL = dividedURL.domain;\n\n if (_this.protostubsList.hasOwnProperty(domainURL) && _this.protostubsList[domainURL].status === STATUS.LIVE) {\n return _this.protostubsList[domainURL];\n } else {\n\n _this.protostubsList[domainURL] = {\n status: STATUS.DEPLOYING\n };\n\n throw new Error('[Registry - discoverProtoStub ] Message Node Protostub Not Found. Creating one');\n }\n }\n\n /**\r\n * To discover protocol stubs available in the runtime for a certain remote runtime URL. If available, it returns the runtime url for the protocol stub that connects to the requested domain.\r\n * Required by the runtime BUS to route messages to remote servers or peers (do we need something similar for Hyperties?).\r\n * @param {RuntimeURL} RuntimeURL url\r\n * @return {p2pRequester} RuntimeURL\r\n */\n\n }, {\n key: 'discoverP2PStub',\n value: function discoverP2PStub(runtimeURL) {\n var _this = this;\n\n if (runtimeURL) {\n\n if (_this.p2pRequesterStub.hasOwnProperty(runtimeURL) && _this.p2pRequesterStub[runtimeURL].status === STATUS.LIVE) {\n return _this.p2pRequesterStub[runtimeURL];\n } else {\n _this.p2pRequesterStub[runtimeURL] = {\n status: STATUS.CREATED\n };\n\n throw new Error('[Registry - discoverP2PStub ] P2P Requester Stub Not Found. Creating one');\n }\n } else {\n\n if (_this.p2pHandlerStub.hasOwnProperty(_this.runtimeURL)) {\n return _this.p2pHandlerStub[_this.runtimeURL];\n } else {\n _this.p2pHandlerStub[_this.runtimeURL] = {\n status: STATUS.CREATED\n };\n\n throw new Error('[Registry - discoverP2PStub ] P2P Handler Stub Not Found.');\n }\n }\n }\n\n /**\r\n * To register a new Protocol Stub in the runtime including as input parameters the function to postMessage, the DomainURL that is connected with the stub, which returns the RuntimeURL allocated to the new ProtocolStub.\r\n * @param {Sandbox} Sandbox\r\n * @param {stubID} Domain or hyperty runtime to register the stub\r\n * @param {descriptorURL} Catalogue URL of the Protostub descriptor\r\n * @param {descriptor} Protostub descriptor\r\n * @return {RuntimeProtoStubURL}\r\n */\n\n }, {\n key: 'registerStub',\n value: function registerStub(sandbox, stubID, p2pConfig, descriptorURL, descriptor) {\n var _this = this;\n\n var _stubDescriptor = descriptor;\n\n return new _promise2.default(function (resolve, reject) {\n\n var runtimeProtoStubURL = void 0;\n\n //check if messageBus is registered in registry or not\n if (_this._messageBus === undefined) {\n reject('MessageBus not found on registerStub');\n }\n\n log.info('[Registry - registerStub] - stubID ', stubID);\n\n /* if (!stubID.indexOf('msg-node.')) {\r\n stubID = stubID.substring(stubID.indexOf('.') + 1);\r\n }*/\n\n var P2PRequesterStub = void 0;\n\n if (p2pConfig) {\n\n if (p2pConfig.hasOwnProperty('isHandlerStub') && p2pConfig.isHandlerStub) {\n runtimeProtoStubURL = _this.p2pHandlerURL;\n\n _this.p2pHandlerStub[stubID] = {\n url: runtimeProtoStubURL,\n status: STATUS.CREATED\n };\n\n _this.p2pHandlerAssociation[_this.runtimeURL] = [];\n\n _this.sandboxesList.sandbox[runtimeProtoStubURL] = sandbox;\n log.info('[Registry - registerStub - P2PHandlerStub] - ', stubID, ' - ', runtimeProtoStubURL);\n resolve(_this.p2pHandlerStub[stubID]);\n } else {\n P2PRequesterStub = p2pConfig.p2pRequesterStub;\n runtimeProtoStubURL = 'runtime://' + (0, _utils.divideURL)(p2pConfig.remoteRuntimeURL).domain + '/p2prequester/' + (0, _utils.generateGUID)();\n log.info('[Registry - registerStub - P2PRequesterStub] - ', P2PRequesterStub, ' - ', runtimeProtoStubURL);\n\n // to be clarified what is this p2pHandlerAssociation\n _this.p2pHandlerAssociation[_this.runtimeURL].push(runtimeProtoStubURL);\n _this.p2pRequesterStub[stubID] = {\n url: runtimeProtoStubURL,\n status: STATUS.CREATED\n };\n\n _this.sandboxesList.sandbox[runtimeProtoStubURL] = sandbox;\n\n //Setup P2P Requester path into MN\n\n var msg = {\n type: 'subscribe',\n from: _this.registryURL,\n to: 'domain://msg-node.' + _this._domain + '/sm',\n body: {\n subscribe: [runtimeProtoStubURL],\n source: _this.registryURL\n }\n };\n\n _this._messageBus.postMessage(msg, function (reply) {\n // log.log('[Registry - register Stub] p2pRequester path setup: ', reply);\n });\n\n resolve(_this.p2pRequesterStub[stubID]);\n }\n } else {\n console.log('[Registry - registerStub - Normal Stub] descriptor', descriptor);\n\n if (!(typeof descriptor === 'undefined' ? 'undefined' : (0, _typeof3.default)(descriptor)) === 'string' && descriptor.hasOwnProperty('_interworking') && descriptor._interworking) {\n runtimeProtoStubURL = 'runtime://' + stubID + '/protostub/' + 'scheme1';\n } else {\n runtimeProtoStubURL = 'runtime://' + stubID + '/protostub/' + (0, _utils.generateGUID)();\n }\n\n log.info('[Registry - registerStub - Normal Stub] - ', stubID);\n\n // TODO: Optimize this\n _this.protostubsList[stubID] = {\n url: runtimeProtoStubURL,\n status: STATUS.DEPLOYING\n };\n\n if (descriptorURL) {\n _this.protostubsList[stubID].descriptorURL = descriptorURL;\n }\n\n if (_stubDescriptor && _stubDescriptor.interworking) {\n _this.protostubsList[stubID].interworking = _stubDescriptor.interworking;\n }\n\n _this.sandboxesList.sandbox[runtimeProtoStubURL] = sandbox;\n\n resolve(_this.protostubsList[stubID]);\n }\n\n // resolve(runtimeProtoStubURL);\n\n _this._messageBus.addListener(runtimeProtoStubURL + '/status', function (msg) {\n _this._onProtostubStatusEvent(msg);\n });\n });\n }\n\n /**\r\n * To Process status events fired by protostubs\r\n * @param {Message} message Event Message\r\n */\n\n }, {\n key: '_onProtostubStatusEvent',\n value: function _onProtostubStatusEvent(msg) {\n\n var _this = this;\n\n // log.log('[Registry onProtostubStatusEvent]: ', msg);\n\n var runtimeProtoStubURL = msg.from;\n\n if (!msg.to.includes('/status')) {\n log.error('[Registry onProtostubStatusEvent] Not Status Event: ', msg);\n return;\n }\n\n // process status events from message node protostubs\n\n if (runtimeProtoStubURL.includes('/protostub/')) {\n\n // TODO: uncomment below when protostubs are updated with new status value \"live\"\n (0, _keys2.default)(_this.protostubsList).filter(function (key) {\n return _this.protostubsList[key].url === runtimeProtoStubURL;\n }).map(function (key) {\n _this.protostubsList[key].status = msg.body.value;\n\n // log.log('[Registry - onProtostubStatusEvent] - Protostub status: ', _this.protostubsList[key]);\n });\n } else {\n // process status events from p2p connections\n\n if (msg.body.resource) {\n var remoteRuntimeURL = msg.body.resource;\n\n if (_this.p2pConnectionList[remoteRuntimeURL]) {\n _this.p2pConnectionList[remoteRuntimeURL].status = msg.body.value;\n _this.p2pConnectionList[remoteRuntimeURL].url = runtimeProtoStubURL;\n } else {\n\n var p2pConnection = {\n status: msg.body.value,\n url: runtimeProtoStubURL\n };\n\n _this.p2pConnectionList[remoteRuntimeURL] = p2pConnection;\n }\n\n // log.log('[Registry - onProtostubStatusEvent] - P2PConnection status: ', _this.p2pConnectionList[remoteRuntimeURL]);\n\n // Update P2P Requester protostub if it is coming from there\n if (runtimeProtoStubURL.includes('/p2prequester/')) {\n _this.p2pRequesterStub[remoteRuntimeURL].status = msg.body.value;\n\n // log.log('[Registry - onProtostubStatusEvent] - P2P Requester status: ', _this.p2pRequesterStub[remoteRuntimeURL]);\n } else {\n // if from P2PHandler with status disconencted, lets remove from p2pConnectionList\n if (msg.body.value === 'disconnected') delete _this.p2pConnectionList[remoteRuntimeURL];\n }\n } else {\n if (runtimeProtoStubURL.includes('/p2prequester/')) {\n // It is an event from P2P Requester without mandatory \"resource\" field\n log.error('[Registry onProtostubStatusEvent] resource missing: ', msg);\n return;\n } else {\n // It is an event from P2P Handler\n _this.p2pHandlerStub[_this.runtimeURL].status = msg.body.value;\n\n // log.log('[Registry - onProtostubStatusEvent] - P2PHandler Stub status: ', _this.p2pHandlerStub[_this.runtimeURL]);\n }\n }\n }\n }\n\n /**\r\n * To unregister a previously registered protocol stub\r\n * @param {HypertyRuntimeURL} HypertyRuntimeURL hypertyRuntimeURL\r\n */\n\n }, {\n key: 'unregisterStub',\n value: function unregisterStub(hypertyRuntimeURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n if (_this.protostubsList.hasOwnProperty(hypertyRuntimeURL)) {\n delete _this.protostubsList[hypertyRuntimeURL];\n resolve('ProtostubURL removed');\n } else {\n reject('Error on unregisterStub: Hyperty not found');\n }\n });\n }\n\n /**\r\n * To register a new Identity Provider proxy in the runtime including as input parameters the function to postMessage, the DomainURL that is connected with the stub, which returns the RuntimeURL allocated to the new ProtocolStub.\r\n * @param {Sandbox} Sandbox\r\n * @param {DomainURL} DomainURL service provider domain\r\n * @return {RuntimeIdpProxyURL}\r\n */\n\n }, {\n key: 'registerIdpProxy',\n value: function registerIdpProxy(sandbox, domainURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var idpProxyStubURL = void 0;\n\n //check if messageBus is registered in registry or not\n if (_this._messageBus === undefined) {\n reject('MessageBus not found on registerStub');\n }\n\n idpProxyStubURL = 'domain-idp://' + domainURL + '/stub/' + (0, _utils.generateGUID)();\n\n // TODO: Optimize this\n _this.idpProxyList[domainURL] = {\n url: idpProxyStubURL,\n status: STATUS.DEPLOYING\n };\n\n _this.sandboxesList.sandbox[idpProxyStubURL] = sandbox;\n\n // sandbox.addListener('*', function(msg) {\n // _this._messageBus.postMessage(msg);\n // });\n\n resolve(idpProxyStubURL);\n\n _this._messageBus.addListener(idpProxyStubURL + '/status', function (msg) {\n _this._onIdpProxyStatusEvent(msg);\n });\n });\n }\n\n /**\r\n * To Process status events fired by Idp Proxies\r\n * @param {Message} message Event Message\r\n */\n\n }, {\n key: '_onIdpProxyStatusEvent',\n value: function _onIdpProxyStatusEvent(msg) {\n\n var _this = this;\n\n // log.log('[Registry onIdpProxyStatusEvent]: ', msg);\n\n var idpProxyURL = msg.from;\n\n if (!msg.to.includes('/status')) {\n log.error('[Registry onIdpProxyStatusEvent] Not Status Event: ', msg);\n return;\n }\n\n (0, _keys2.default)(_this.idpProxyList).filter(function (key) {\n return _this.idpProxyList[key].url === idpProxyURL;\n }).map(function (key) {\n _this.idpProxyList[key].status = msg.body.value;\n\n // log.log('[Registry - onIdpProxyStatusEvent] - Idp Proxy status: ', _this.idpProxyList[key]);\n });\n }\n\n /**\r\n * To discover idpProxy stubs available in the runtime for a certain domain. If available, it returns the runtime url for the idpProxy stub that connects to the requested domain. Required by the runtime BUS to route messages to remote servers or peers\r\n * @param {DomainURL} DomainURL url\r\n * @return {RuntimeURL} RuntimeURL idpProxyUrl\r\n */\n\n }, {\n key: 'discoverIdpProxy',\n value: function discoverIdpProxy(url) {\n if (!url) throw new Error('Parameter url needed');\n var _this = this;\n\n var dividedURL = (0, _utils.divideURL)(url);\n var domainURL = dividedURL.domain;\n\n if (_this.idpProxyList.hasOwnProperty(domainURL) && _this.idpProxyList[domainURL].status === STATUS.LIVE) {\n return _this.idpProxyList[domainURL];\n } else {\n\n _this.idpProxyList[domainURL] = {\n status: STATUS.PROGRESS\n };\n\n throw new Error('[Registry - discoverIdpProxy ] Idp Proxy Not Found. Creating one');\n }\n }\n\n /**\r\n * To register a new Policy Enforcer in the runtime including as input parameters the function to postMessage, the HypertyURL associated with the PEP, which returns the RuntimeURL allocated to the new Policy Enforcer component.\r\n * @param {Message.Message} postMessage postMessage\r\n * @param {HypertyURL} HypertyURL hyperty\r\n * @return {HypertyRuntimeURL} HypertyRuntimeURL\r\n */\n\n }, {\n key: 'registerPEP',\n value: function registerPEP(postMessage, hyperty) {\n var _this = this;\n\n return new _promise2.default(function (resolve) {\n //TODO check what parameter in the postMessage the pep is.\n _this.pepList[hyperty] = postMessage;\n resolve('PEP registered with success');\n });\n }\n\n /**\r\n * To unregister a previously registered protocol stub\r\n * @param {HypertyRuntimeURL} HypertyRuntimeURL HypertyRuntimeURL\r\n */\n\n }, {\n key: 'unregisterPEP',\n value: function unregisterPEP(HypertyRuntimeURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var result = _this.pepList[HypertyRuntimeURL];\n\n if (result === undefined) {\n reject('Pep Not found.');\n } else {\n resolve('PEP successfully removed.');\n }\n });\n }\n\n /**\r\n * To discover sandboxes available in the runtime for a certain domain and a certain set of capabilities. Required by the runtime UA to avoid more than one sandbox for the same domain.\r\n * @param {DomainURL} DomainURL url\r\n * @return {RuntimeSandbox} RuntimeSandbox\r\n */\n\n }, {\n key: 'getSandbox',\n value: function getSandbox(url, constraints) {\n if (!url) throw new Error('Parameter url needed');\n\n // log.log('[Registry getSandbox] getSandbox for: ', url, ' and capabilities: ', constraints);\n\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n\n var request = void 0;\n\n //first try to find the url in the appSandbox list\n request = _this.sandboxesList.appSandbox[url];\n\n //if no appSandbox was found, try to search in the normal sandboxes list\n if (!request) {\n request = _this.sandboxesList.sandbox[url];\n\n if (!request) {\n\n var domain = void 0;\n\n if (url.includes('://')) {\n domain = (0, _utils.divideURL)(url).domain;\n } else {\n domain = url;\n }\n\n // search in the sandboxes list for a entry containing the domain given\n for (var sandbox in _this.sandboxesList.sandbox) {\n //todo: uncomment sandbox constraints match condition with runtime sharing\n if (sandbox.includes(domain) && _this.sandboxesList.sandbox[sandbox].matches(constraints)) {\n var _ret = function () {\n var current = _this.sandboxesList.sandbox[sandbox];\n var match = (0, _keys2.default)(constraints).filter(function (constraint) {\n return constraint === 'browser' && current.type === _Sandbox.SandboxType.NORMAL || constraint === 'windowSanbox' && current.type === _Sandbox.SandboxType.WINDOW;\n }).length > 0 ? true : false;\n\n if (match) {\n request = current;\n }\n return 'break';\n }();\n\n if (_ret === 'break') break;\n }\n }\n }\n }\n\n if (!request) {\n reject('no sandbox found for: ' + url);\n } else {\n resolve(request);\n }\n });\n }\n }, {\n key: 'resolveNormalStub',\n value: function resolveNormalStub(url) {\n // log.log('resolveNormalStub ' + url);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n //split the url to find the domainURL. deals with the url for example as:\n //\"hyperty-runtime://sp1/protostub/123\",\n var dividedURL = (0, _utils.divideURL)(url);\n var domainUrl = dividedURL.domain;\n var type = dividedURL.type;\n\n if (url.includes(_this.runtimeURL)) {\n log.error('[Registry - resolve] URL to be resolved should have listeners ', url);\n reject('[Registry - resolve] URL to be resolved should have listeners ', url);\n }\n\n // resolve the domain protostub in case of a message to global registry\n if (url.includes('global://registry')) {\n domainUrl = _this._domain;\n } else {\n if (!domainUrl.indexOf('msg-node.') || !domainUrl.indexOf('registry.')) {\n domainUrl = domainUrl.substring(domainUrl.indexOf('.') + 1);\n }\n }\n\n _this.isLegacy(url).then(function (isLegacy) {\n\n // if legacy it should resolve for .\n if (isLegacy && type !== 'domain-idp') {\n domainUrl = type + '.' + (0, _utils.getUserIdentityDomain)(url);\n }\n\n log.info('[Registry.resolve] domainUrl:', domainUrl);\n\n var registredComponent = void 0;\n\n if (type === 'domain-idp') {\n registredComponent = _this.idpProxyList.hasOwnProperty(domainUrl) ? _this.idpProxyList[domainUrl] : false;\n } else {\n registredComponent = _this.protostubsList.hasOwnProperty(domainUrl) ? _this.protostubsList[domainUrl] : false;\n }\n\n log.info('[Registry.resolve] registred:', registredComponent);\n\n // TODO since the protostubs have other states this should be revised, because the status could change from DEPLOYED to LIVE\n // TODO and this validation will trigger a new load of IDPProxy or Protostub;\n if (registredComponent && registredComponent.hasOwnProperty('status') && (registredComponent.status === STATUS.DEPLOYED || registredComponent.status === STATUS.CREATED || registredComponent.status === STATUS.LIVE || registredComponent.status === STATUS.DISCONNECTED)) {\n log.info('[Registry.resolve] Resolved: ', registredComponent.url, registredComponent.status);\n resolve(registredComponent.url);\n } else {\n //todo: use switch-case to support other types of stubs\n if (type === 'domain-idp') {\n\n // The IdP Proxy does not exist, let's prepare its deployment by watching its status\n\n _this.watchingYou.observe('idpProxyList', function (change) {\n\n // log.log('[Registry - resolveNormalStub] idpProxyList changed ' + _this.idpProxyList);\n\n var keypath = change.keypath;\n\n if (keypath.includes('status')) keypath = keypath.replace('.status', '');\n\n if (keypath === domainUrl && change.name === 'status' && change.newValue === STATUS.CREATED) {\n // log.log('[Registry - resolveNormalStub] idpProxyList is live ' + _this.idpProxyList[domainUrl]);\n resolve(_this.idpProxyList[domainUrl].url);\n }\n });\n\n if (!registredComponent) {\n // this process will load the idp proxy, because is not yet registered;\n log.info('[Registry.resolveNormalStub] deploy new IDPProxy: ', domainUrl);\n _this.loader.loadIdpProxy(domainUrl).then(function () {\n\n log.info('[Registry.resolveNormalStub] IdP Proxy deployed: ', _this.idpProxyList[domainUrl]);\n }).catch(function (reason) {\n log.error('[Registry.resolve] Error resolving Load IDPProxy: ', reason);\n _this.idpProxyList[domainUrl].status = 'deployment-failed';\n reject(reason);\n });\n }\n } else {\n\n // The protoStub does not exist, let's prepare its deployment by watching its status\n\n _this.watchingYou.observe('protostubsList', function (change) {\n\n // log.log('[Registry - resolveNormalStub] protostubsList changed ' + _this.protostubsList);\n\n var keypath = change.keypath;\n\n if (keypath.includes('status')) keypath = keypath.replace('.status', '');\n\n if (keypath === domainUrl && change.name === 'status' && change.newValue === STATUS.CREATED) {\n // log.log('[Registry - resolve] protostub is live ' + _this.protostubsList[domainUrl]);\n resolve(_this.protostubsList[domainUrl].url);\n }\n });\n\n if (!registredComponent) {\n // lets deploy the protostub\n log.info('[Registry.resolve] trigger new ProtocolStub: ', domainUrl);\n _this.loader.loadStub(domainUrl).then(function () {\n\n // log.log('[Registry - resolveNormalStub] Stub deployed: ', _this.protostubsList[domainUrl]);\n }).catch(function (reason) {\n log.error('[Registry.resolveNormalStub] Error resolving Load ProtocolStub: ', reason);\n reject(reason);\n });\n }\n }\n }\n }).catch(function (reason) {\n log.error('[Registry.resolve] Error resolving islegacy: ', reason);\n reject(reason);\n });\n });\n }\n\n /**\r\n * To verify if source is valid and to resolve target runtime url address if needed (eg protostub runtime url in case the message is to be dispatched to a remote endpoint).\r\n * @param {URL.URL} url url\r\n * @return {Promise} Promise \r\n */\n\n }, {\n key: 'resolve',\n value: function resolve(msg) {\n log.info('[Registry - Resolve] - ', msg);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var url = msg.to ? msg.to : msg;\n\n var p2p = msg.body && msg.body.p2p ? msg.body.p2p : false;\n\n // log.log('P2P: ', p2p, url);\n // log.log('P2P - p2pHandlerStub: ', !_this.p2pHandlerStub[_this.runtimeURL], _this.p2pHandlerStub, _this.runtimeURL);\n // log.log('P2P - isBackendServiceURL: ', isBackendServiceURL(url), isBackendServiceURL, url);\n // log.log('P2P - includes runtimeURL: ', url.includes(_this.runtimeURL));\n // log.log('P2P - includes p2phandler: ', url.includes('/p2phandler/'));\n // log.log('P2P - includes p2prequester: ', url.includes('/p2prequester/'));\n\n // Skip p2p procedure when not supported by the Runtime or for backend services\n\n if (!_this.p2pHandlerStub[_this.runtimeURL] || (0, _utils.isBackendServiceURL)(url) || url.includes(_this.runtimeURL) || url.includes('/p2phandler/') || url.includes('/p2prequester/')) {\n\n log.info('[Registry - resolve] - Resolve normal stub: ', _this.p2pHandlerStub, _this.runtimeURL, (0, _utils.isBackendServiceURL)(url), p2p, url);\n _this.resolveNormalStub(url).then(function (returnURL) {\n resolve(returnURL);\n });\n } else {\n\n log.info('[Registry - resolve] - checkP2P: ', p2p, url, _this._p2pConnectionResolve);\n _this._p2pConnectionResolve.checkP2P(msg).then(function (registeredP2P) {\n\n // log.log('[Registry - resolve] found registered P2P: ', registeredP2P);\n\n var p2pConnection = _this.p2pConnectionList[registeredP2P.runtime];\n\n if (!p2pConnection) {\n p2pConnection = registeredP2P;\n _this.p2pConnectionList[registeredP2P.runtime] = p2pConnection;\n }\n\n switch (p2pConnection.status) {\n case STATUS.LIVE:\n msg.body.peer = registeredP2P.runtime;\n resolve(p2pConnection.url, msg);\n break;\n case STATUS.CREATED: // p2p connection setup is ongoing, use MN Stub\n case STATUS.PROGRESS:\n _this.resolveNormalStub(url).then(function (returnURL) {\n resolve(returnURL);\n });\n break;\n case STATUS.DISCONNECTED:\n // p2p connection stub was disconnected, let's ask to connect again\n log.info('[Registry - Resolve] - p2pConnection is disconnected lets try to reconnect');\n _this._p2pConnectionResolve.reconnectP2PRequester(p2pConnection).then(function (returnURL) {\n // log.log('[Registry - Resolve] - was reconnected with p2pRequesterStubt: ', returnURL);\n resolve(returnURL);\n }, function (reason) {\n log.info('[Registry - Resolve] - Reason: ', reason);\n\n _this.resolveNormalStub(url).then(function (returnURL) {\n resolve(returnURL);\n });\n });\n break;\n default:\n\n log.info('[Registry - resolve] - P2P: ', p2p);\n if (!p2p) {\n // no p2p connection exists and the message sender does not ask one. Lets use the MN Stub\n _this.resolveNormalStub(url).then(function (returnURL) {\n resolve(returnURL);\n });\n } else {\n _this._setupP2PRequester(registeredP2P).then(function (returnURL) {\n // no p2p connection exists but the message sender is asking one. Lets try to setup one\n resolve(returnURL);\n }, function (reason) {\n log.info('[Registry - Resolve] - Reason: ', reason);\n\n _this.resolveNormalStub(url).then(function (returnURL) {\n resolve(returnURL);\n });\n });\n }\n break;\n }\n }, function (reason) {\n log.info('[Registry - Resolve] - Reason: ', reason);\n\n _this.resolveNormalStub(url).then(function (returnURL) {\n resolve(returnURL);\n });\n });\n }\n });\n }\n }, {\n key: '_setupP2PRequester',\n value: function _setupP2PRequester(input) {\n var _this = this;\n\n log.log('[Registry._setupP2PConnection] loadStub with p2pRequester: ', input);\n\n return new _promise2.default(function (resolve, reject) {\n\n var remoteRuntime = input.runtime;\n\n var p2pConfig = { remoteRuntimeURL: remoteRuntime, p2pHandler: input.p2pHandler, p2pRequesterStub: true };\n\n // lets prepare the p2pRequesterSTub deployment by setting an observer to its status changes\n\n _this.watchingYou.observe('p2pRequesterStub', function (change) {\n\n log.log('[Registry._setupP2PConnection] p2pRequesterStubs changed ' + _this.p2pRequesterStub);\n\n if (change.keypath.split('.')[0] === remoteRuntime && change.name === 'status' && change.newValue === STATUS.LIVE) {\n log.log('[Registry._setupP2PConnection] p2pRequester is live ' + _this.p2pRequesterStub[remoteRuntime]);\n resolve(_this.p2pRequesterStub[remoteRuntime].url);\n }\n });\n\n // stub load\n _this.loader.loadStub(input.p2pRequester, p2pConfig).then(function () {\n\n log.log('[Registry._setupP2PConnection] p2pRequester deployed: ', _this.p2pRequesterStub[remoteRuntime]);\n }).catch(function (error) {\n reject(error);\n });\n });\n }\n\n /**\r\n * To verify if url is for a legacy service.\r\n * @param {URL.URL} url url\r\n * @return {boolean}\r\n */\n\n }, {\n key: 'isLegacy',\n value: function isLegacy(url) {\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n if (url === _this._domain) {\n return resolve(false);\n }\n\n log.log('[Registry] [Registry.Registry.isLegacy] ', url);\n\n // TODO: to be defined in the runtime configuration\n var nonLegacy = ['hyperty-runtime', 'domain', 'global', 'hyperty'];\n\n var urlDivided = (0, _utils.divideURL)(url);\n\n if (nonLegacy.indexOf(urlDivided.type) !== -1 || urlDivided.domain === _this._domain) {\n return resolve(false);\n }\n\n // process User URLs\n if (url.split('@').length > 1) {\n var domain = urlDivided.domain;\n\n // log.log('[Registry] [Registry.Registry.isLegacy] domain: ', domain);\n if (_this.idpLegacyProxyList.hasOwnProperty(domain)) {\n\n var result = _this.idpLegacyProxyList[domain];\n\n if (result.interworking) {\n return resolve(result.interworking);\n } else {\n return resolve(false);\n }\n }\n\n _this._loader.descriptors.getIdpProxyDescriptor(domain).then(function (result) {\n\n // log.log('[Registry] [Registry.Registry.isLegacy] Legacy stub descriptor: ', result);\n\n if (result.interworking) {\n _this.idpLegacyProxyList[domain] = result;\n resolve(result.interworking);\n } else {\n resolve(false);\n }\n }).catch(function (reason) {\n log.warn('problem loading idp proxy descriptor for domain:', domain, ' because ', reason);\n reject(reason);\n });\n } else {\n // process protostub URLs\n resolve(_this.isInterworkingProtoStub(url));\n }\n });\n }\n\n /**\r\n * To verify if URL is locally registered or not.\r\n * @param {URL.URL} url url\r\n * @return {boolean}\r\n */\n\n }, {\n key: 'isLocal',\n value: function isLocal(url) {\n\n var runtimeScheme = ['hyperty-runtime', 'runtime'];\n var hypertyScheme = ['hyperty'];\n var urlScheme = url.split('://')[0];\n\n // Process Runtime Core URLs.\n // Messages originated from protostubs should also not include the runtimeURL in its URL.\n\n if (runtimeScheme.indexOf(urlScheme) !== -1) {\n return url.includes(this.runtimeURL);\n }\n\n // Process Hyperty URLs\n // Todo: hypertiesList should be an object not an array\n\n if (hypertyScheme.indexOf(urlScheme) !== -1) {\n\n for (var index in this.hypertiesList) {\n var hyperty = this.hypertiesList[index];\n if (hyperty.hypertyURL === url) {\n return true;\n }\n }\n\n return false;\n }\n\n // Process Data Object URLs\n\n if (url.includes('/subscription')) {\n url = url.substring(0, url.indexOf('/subscription'));\n }\n\n var dataObject = this.dataObjectList[url];\n\n if (dataObject) {\n if (dataObject.interworking) {\n return !dataObject.interworking;\n }\n return true;\n }\n\n return false;\n }\n\n /**\r\n * To verify if protostub is to interwork with a legacy domain.\r\n * @param {URL.URL} runtimeProtostubURL The runtime URL of the Protostub\r\n * @return {boolean}\r\n */\n\n }, {\n key: 'isInterworkingProtoStub',\n value: function isInterworkingProtoStub(runtimeProtostubURL) {\n\n var _this = this;\n\n if (typeof runtimeProtostubURL === 'boolean') {\n return false;\n }\n\n if (!runtimeProtostubURL.includes('/protostub/')) {\n return false;\n }\n\n var filtered = (0, _keys2.default)(_this.protostubsList).filter(function (key) {\n return _this.protostubsList[key].url === runtimeProtostubURL;\n }).map(function (key) {\n\n if (_this.protostubsList[key].hasOwnProperty('interworking')) {\n return _this.protostubsList[key].interworking;\n } else {\n return false;\n }\n })[0];\n\n return filtered;\n }\n }, {\n key: 'loader',\n set: function set(loader) {\n var _this = this;\n _this._loader = loader;\n },\n get: function get() {\n var _this = this;\n return _this._loader;\n }\n\n /**\r\n * return the messageBus in this Registry\r\n * @param {MessageBus} messageBus\r\n */\n\n }, {\n key: 'messageBus',\n get: function get() {\n var _this = this;\n return _this._messageBus;\n }\n\n /**\r\n * Set the messageBus in this Registry\r\n * @param {MessageBus} messageBus\r\n */\n ,\n set: function set(messageBus) {\n var _this = this;\n _this._messageBus = messageBus;\n\n _this._messageBus.addListener(_this.registryURL, function (msg) {\n\n // log.log('[Registry listener] ', msg);\n\n var isHyperty = (0, _utils.isHypertyURL)(msg.from);\n var hasCriteria = msg.body.hasOwnProperty('criteria');\n var isURLResource = void 0;\n var isUserResource = void 0;\n var isHypertyResource = void 0;\n\n if (msg.body.hasOwnProperty('resource') && msg.body.resource !== '.') {\n isURLResource = (0, _utils.isURL)(msg.body.resource);\n isUserResource = (0, _utils.isUserURL)(msg.body.resource);\n isHypertyResource = (0, _utils.isHypertyURL)(msg.body.resource);\n }\n var isDelete = msg.type === 'delete';\n var hasName = void 0;\n var hasUser = void 0;\n\n if (msg.body.hasOwnProperty('value')) {\n hasName = msg.body.value.hasOwnProperty('name');\n hasUser = msg.body.value.hasOwnProperty('user');\n }\n\n if (msg.type === 'response') {\n log.error('[Register listener] skipping ', msg);\n return;\n }\n\n // msg sent by identity manager library\n var userUrl = _this._getIdentityAssociated(msg.body.resource, msg.body.criteria);\n\n var reply = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: { resource: userUrl } };\n reply.body.code = userUrl ? 200 : 404;\n\n _this._messageBus.postMessage(reply);\n });\n\n // Install AddressAllocation\n var addressAllocation = _AddressAllocation2.default.instance;\n _this.addressAllocation = addressAllocation;\n\n // log.log('[Registry - AddressAllocation] - ', addressAllocation);\n }\n }]);\n return Registry;\n}();\n\nexports.default = Registry;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9yZWdpc3RyeS9SZWdpc3RyeS5qcz82MTZlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuXHJcbi8vIExvZyBTeXN0ZW1cclxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcclxubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1JlZ2lzdHJ5Jyk7XHJcblxyXG5pbXBvcnQgeyBydW50aW1lVXRpbHMgfSBmcm9tICcuLi9ydW50aW1lL3J1bnRpbWVVdGlscyc7XHJcbmltcG9ydCB7IFNhbmRib3hUeXBlfSBmcm9tICcuLi9zYW5kYm94L1NhbmRib3gnO1xyXG5cclxuaW1wb3J0IEFkZHJlc3NBbGxvY2F0aW9uIGZyb20gJy4uL2FsbG9jYXRpb24vQWRkcmVzc0FsbG9jYXRpb24nO1xyXG5pbXBvcnQgSHlwZXJ0eUluc3RhbmNlIGZyb20gJy4vSHlwZXJ0eUluc3RhbmNlJztcclxuaW1wb3J0IFAyUENvbm5lY3Rpb25SZXNvbHZlIGZyb20gJy4vUDJQQ29ubmVjdGlvblJlc29sdmUnO1xyXG5cclxuaW1wb3J0IHsgZGl2aWRlVVJMLCBpc0h5cGVydHlVUkwsIGlzVVJMLCBpc1VzZXJVUkwsIGdlbmVyYXRlR1VJRCwgZ2V0VXNlcklkZW50aXR5RG9tYWluLCBpc0JhY2tlbmRTZXJ2aWNlVVJMLCBkZWVwQ2xvbmUsIHJlbW92ZVBhdGhGcm9tVVJMIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMuanMnO1xyXG5cclxuaW1wb3J0ICdwcm94eS1vYnNlcnZlJztcclxuaW1wb3J0IHsgV2F0Y2hpbmdZb3UgfSBmcm9tICdzZXJ2aWNlLWZyYW1ld29yay9kaXN0L1V0aWxzJztcclxuXHJcbi8vIGltcG9ydCBEaXNjb3ZlcnlTZXJ2aWNlRnJhbWV3b3JrIGZyb20gJy4vRGlzY292ZXJ5U2VydmljZUZyYW1ld29yayc7XHJcblxyXG5jb25zdCBTVEFUVVMgPSB7IENSRUFURUQ6ICdjcmVhdGVkJywgTElWRTogJ2xpdmUnLCBERVBMT1lJTkc6ICdkZXBsb3lpbmcnLCBERVBMT1lFRDogJ2RlcGxveWVkJywgUFJPR1JFU1M6ICdpbi1wcm9ncmVzcycsIERJU0NPTk5FQ1RFRDogJ2Rpc2Nvbm5lY3RlZCcsIEZBSUxFRDogJ2RlcGxveW1lbnQtZmFpbGVkJywgREVBRDogJ2RlYWQnIH07XHJcblxyXG4vKmltcG9ydCBJZGVudGl0eU1hbmFnZXIgZnJvbSAnLi9JZGVudGl0eU1hbmFnZXInO1xyXG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4vRGlzY292ZXJ5JzsqL1xyXG5cclxuLyoqXHJcbiogUnVudGltZSBSZWdpc3RyeSBJbnRlcmZhY2VcclxuKi9cclxuY2xhc3MgUmVnaXN0cnkge1xyXG5cclxuICAvKipcclxuICAqIFRvIGluaXRpYWxpc2UgdGhlIFJ1bnRpbWUgUmVnaXN0cnkgd2l0aCB0aGUgUnVudGltZVVSTCB0aGF0IHdpbGwgYmUgdGhlIGJhc2lzIHRvIGRlcml2ZSB0aGUgaW50ZXJuYWwgcnVudGltZSBhZGRyZXNzZXMgd2hlbiBhbGxvY2F0aW5nIGFkZHJlc3NlcyB0byBpbnRlcm5hbCBydW50aW1lIGNvbXBvbmVudC4gSW4gYWRkaXRpb24sIHRoZSBSZWdpc3RyeSBkb21haW4gYmFjay1lbmQgdG8gYmUgdXNlZCB0byByZW1vdGVseSByZWdpc3RlciBSdW50aW1lIGNvbXBvbmVudHMsIGlzIGFsc28gcGFzc2VkIGFzIGlucHV0IHBhcmFtZXRlci5cclxuICAqIEBwYXJhbSAge01lc3NhZ2VCdXN9ICAgICAgICAgIG1zZ2J1cyAgICAgICAgICAgICAgICBtc2didXNcclxuICAqIEBwYXJhbSAge0h5cGVydHlSdW50aW1lVVJMfSAgIHJ1bnRpbWVVUkwgICAgICAgICAgICBydW50aW1lVVJMXHJcbiAgKiBAcGFyYW0gIHtBcHBTYW5kYm94fSAgICAgICAgICBhcHBTYW5kYm94ICAgICAgICAgICAgYXBwU2FuZGJveFxyXG4gICogQHBhcmFtICB7cnVudGltZUNhdGFsb2d1ZX0gICAgcnVudGltZUNhdGFsb2d1ZSAgICAgIHJ1bnRpbWVDYXRhbG9ndWVcclxuICAqIEBwYXJhbSAge0RvbWFpblVSTH0gICAgICAgICAgIHJlbW90ZVJlZ2lzdHJ5ICAgICAgICByZW1vdGVSZWdpc3RyeVxyXG4gICogQHBhcmFtICB7c3RvcmFnZU1hbmFnZXJ9ICAgICAgc3RvcmFnZU1hbmFnZXJcclxuICAqL1xyXG4gIGNvbnN0cnVjdG9yKHJ1bnRpbWVVUkwsIGFwcFNhbmRib3gsIGlkZW50aXR5TW9kdWxlLCBydW50aW1lQ2F0YWxvZ3VlLCBydW50aW1lQ2FwYWJpbGl0aWVzLCBzdG9yYWdlTWFuYWdlciwgcDJwSGFuZGxlclVSTCwgcmVtb3RlUmVnaXN0cnkpIHtcclxuXHJcbiAgICAvLyBob3cgc29tZSBmdW5jdGlvbnMgcmVjZWl2ZSB0aGUgcGFyYW1ldGVycyBmb3IgZXhhbXBsZTpcclxuICAgIC8vIG5ldyBSZWdpc3RyeSgnaHlwZXJ0eS1ydW50aW1lOi8vc3AxLzEyMycsIGFwcFNhbmRib3gsIGlkTW9kdWxlLCByZW1vdGVSZWdpc3RyeSk7XHJcbiAgICAvLyByZWdpc3RyeS5yZWdpc3RlclN0dWIoc2FuZGJveCwgJ3NwMScpO1xyXG4gICAgLy8gcmVnaXN0cnkucmVnaXN0ZXJIeXBlcnR5KHNhbmRCb3gsICdoeXBlcnR5LXJ1bnRpbWU6Ly9zcDEvMTIzJyk7XHJcbiAgICAvLyByZWdpc3RyeS5yZXNvbHZlKCdoeXBlcnR5LXJ1bnRpbWU6Ly9zcDEvMTIzJyk7XHJcblxyXG4gICAgaWYgKCFydW50aW1lVVJMKSB0aHJvdyBuZXcgRXJyb3IoJ3J1bnRpbWVVUkwgaXMgbWlzc2luZy4nKTtcclxuICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHRocm93IG5ldyBFcnJvcignc3RvcmFnZU1hbmFnZXIgaXMgbWlzc2luZy4nKTtcclxuXHJcbiAgICAvKmlmICghcmVtb3RlUmVnaXN0cnkpIHRocm93IG5ldyBFcnJvcigncmVtb3RlUmVnaXN0cnkgaXMgbWlzc2luZycpOyovXHJcblxyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBfdGhpcy5yZWdpc3RyeVVSTCA9IHJ1bnRpbWVVUkwgKyAnL3JlZ2lzdHJ5Lyc7XHJcbiAgICBfdGhpcy5hcHBTYW5kYm94ID0gYXBwU2FuZGJveDtcclxuICAgIF90aGlzLnJ1bnRpbWVVUkwgPSBydW50aW1lVVJMO1xyXG4gICAgX3RoaXMucDJwSGFuZGxlclVSTCA9IHAycEhhbmRsZXJVUkw7XHJcbiAgICBfdGhpcy5ydW50aW1lQ2F0YWxvZ3VlID0gcnVudGltZUNhdGFsb2d1ZTtcclxuICAgIF90aGlzLnJlbW90ZVJlZ2lzdHJ5ID0gcmVtb3RlUmVnaXN0cnk7XHJcbiAgICBfdGhpcy5pZE1vZHVsZSA9IGlkZW50aXR5TW9kdWxlO1xyXG4gICAgX3RoaXMuc3RvcmFnZU1hbmFnZXIgPSBzdG9yYWdlTWFuYWdlcjtcclxuICAgIF90aGlzLnJ1bnRpbWVDYXBhYmlsaXRpZXMgPSBydW50aW1lQ2FwYWJpbGl0aWVzO1xyXG4gICAgX3RoaXMuaWRlbnRpZmllciA9IGdlbmVyYXRlR1VJRCgpO1xyXG4gICAgX3RoaXMucmVnaXN0cmF0aW9uUmV0cmllcyA9IDU7Ly8gbnVtYmVyIG9mIGF0dGVtcHRzIHRvIHJlZ2lzdGVyIEh5cGVydGllcyBhbmQgRGF0YU9iamVjdHMgd2hlbiBlcnJvcnMgb2NjdXJzXHJcblxyXG4gICAgLy8gdGhlIGV4cGlyZXMgaW4gMzYwMCwgcmVwcmVzZW50cyAxIGhvdXJcclxuICAgIC8vdGhlIGV4cGlyZXMgaXMgaW4gc2Vjb25kcywgdW5pdCBvZiBtZWFzdXJlIHJlY2VpdmVkIGJ5IHRoZSBkb21haW4gcmVnaXN0cnlcclxuICAgIF90aGlzLmV4cGlyZXNUaW1lID0gMzYwMDtcclxuXHJcbiAgICBfdGhpcy5oeXBlcnRpZXNMaXN0VG9SZW1vdmUgPSB7fTtcclxuICAgIF90aGlzLmh5cGVydGllc0xpc3QgPSBbXTtcclxuICAgIF90aGlzLnJlbW90ZUh5cGVydHlMaXN0ID0gW107XHJcbiAgICBfdGhpcy5yZW1vdGVEYXRhT2JqZWN0TGlzdCA9IFtdO1xyXG4gICAgX3RoaXMuaWRwTGVnYWN5UHJveHlMaXN0ID0ge307XHJcblxyXG4gICAgX3RoaXMud2F0Y2hpbmdZb3UgPSBuZXcgV2F0Y2hpbmdZb3UoKTtcclxuICAgIF90aGlzLnAycEhhbmRsZXJTdHViID0ge307XHJcbiAgICBfdGhpcy5wMnBSZXF1ZXN0ZXJTdHViID0gX3RoaXMud2F0Y2hpbmdZb3Uud2F0Y2goJ3AycFJlcXVlc3RlclN0dWInLCB7fSwgdHJ1ZSk7XHJcbiAgICBfdGhpcy5wMnBDb25uZWN0aW9uTGlzdCA9IF90aGlzLndhdGNoaW5nWW91LndhdGNoKCdwMnBDb25uZWN0aW9uTGlzdCcsIHt9LCB0cnVlKTtcclxuICAgIF90aGlzLnAycEhhbmRsZXJBc3NvY2lhdGlvbiA9IHt9O1xyXG5cclxuICAgIF90aGlzLnByb3Rvc3R1YnNMaXN0ID0gX3RoaXMud2F0Y2hpbmdZb3Uud2F0Y2goJ3Byb3Rvc3R1YnNMaXN0Jywge30sIHRydWUpO1xyXG4gICAgX3RoaXMuaWRwUHJveHlMaXN0ID0gX3RoaXMud2F0Y2hpbmdZb3Uud2F0Y2goJ2lkcFByb3h5TGlzdCcsIHt9LCB0cnVlKTtcclxuICAgIF90aGlzLmRhdGFPYmplY3RMaXN0ID0ge307XHJcbiAgICBfdGhpcy5zdWJzY3JpYmVkRGF0YU9iamVjdExpc3QgPSB7fTtcclxuICAgIF90aGlzLnNhbmRib3hlc0xpc3QgPSB7c2FuZGJveDoge30sIGFwcFNhbmRib3g6IHt9IH07XHJcbiAgICBfdGhpcy5wZXBMaXN0ID0ge307XHJcbiAgICBfdGhpcy5yZWdpc3RyaWVzID0ge307XHJcblxyXG4gICAgX3RoaXMuX2RvbWFpbiA9IGRpdmlkZVVSTChfdGhpcy5yZWdpc3RyeVVSTCkuZG9tYWluO1xyXG4gICAgX3RoaXMuc2FuZGJveGVzTGlzdC5hcHBTYW5kYm94W3J1bnRpbWVVUkxdID0gYXBwU2FuZGJveDtcclxuICAgIGxldCBwMnBDb25uZWN0aW9uUmVzb2x2ZSA9IG5ldyBQMlBDb25uZWN0aW9uUmVzb2x2ZShfdGhpcyk7XHJcblxyXG4gICAgX3RoaXMuX3AycENvbm5lY3Rpb25SZXNvbHZlID0gcDJwQ29ubmVjdGlvblJlc29sdmU7XHJcbiAgfVxyXG5cclxuICBzZXQgbG9hZGVyKGxvYWRlcikge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIF90aGlzLl9sb2FkZXIgPSBsb2FkZXI7XHJcbiAgfVxyXG5cclxuICBnZXQgbG9hZGVyKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBfdGhpcy5fbG9hZGVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiByZXR1cm4gdGhlIG1lc3NhZ2VCdXMgaW4gdGhpcyBSZWdpc3RyeVxyXG4gICogQHBhcmFtIHtNZXNzYWdlQnVzfSAgICAgICAgICAgbWVzc2FnZUJ1c1xyXG4gICovXHJcbiAgZ2V0IG1lc3NhZ2VCdXMoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIF90aGlzLl9tZXNzYWdlQnVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBTZXQgdGhlIG1lc3NhZ2VCdXMgaW4gdGhpcyBSZWdpc3RyeVxyXG4gICogQHBhcmFtIHtNZXNzYWdlQnVzfSAgICAgICAgICAgbWVzc2FnZUJ1c1xyXG4gICovXHJcbiAgc2V0IG1lc3NhZ2VCdXMobWVzc2FnZUJ1cykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIF90aGlzLl9tZXNzYWdlQnVzID0gbWVzc2FnZUJ1cztcclxuXHJcbiAgICBfdGhpcy5fbWVzc2FnZUJ1cy5hZGRMaXN0ZW5lcihfdGhpcy5yZWdpc3RyeVVSTCwgZnVuY3Rpb24obXNnKSB7XHJcblxyXG4gICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgbGlzdGVuZXJdICcsIG1zZyk7XHJcblxyXG4gICAgICBsZXQgaXNIeXBlcnR5ID0gaXNIeXBlcnR5VVJMKG1zZy5mcm9tKTtcclxuICAgICAgbGV0IGhhc0NyaXRlcmlhID0gbXNnLmJvZHkuaGFzT3duUHJvcGVydHkoJ2NyaXRlcmlhJyk7XHJcbiAgICAgIGxldCBpc1VSTFJlc291cmNlO1xyXG4gICAgICBsZXQgaXNVc2VyUmVzb3VyY2U7XHJcbiAgICAgIGxldCBpc0h5cGVydHlSZXNvdXJjZTtcclxuXHJcbiAgICAgIGlmIChtc2cuYm9keS5oYXNPd25Qcm9wZXJ0eSgncmVzb3VyY2UnKSAmJiBtc2cuYm9keS5yZXNvdXJjZSAhPT0gJy4nKSB7XHJcbiAgICAgICAgaXNVUkxSZXNvdXJjZSA9IGlzVVJMKG1zZy5ib2R5LnJlc291cmNlKTtcclxuICAgICAgICBpc1VzZXJSZXNvdXJjZSA9IGlzVXNlclVSTChtc2cuYm9keS5yZXNvdXJjZSk7XHJcbiAgICAgICAgaXNIeXBlcnR5UmVzb3VyY2UgPSBpc0h5cGVydHlVUkwobXNnLmJvZHkucmVzb3VyY2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBpc0RlbGV0ZSA9IG1zZy50eXBlID09PSAnZGVsZXRlJztcclxuICAgICAgbGV0IGhhc05hbWU7XHJcbiAgICAgIGxldCBoYXNVc2VyO1xyXG5cclxuICAgICAgaWYgKG1zZy5ib2R5Lmhhc093blByb3BlcnR5KCd2YWx1ZScpKSB7XHJcbiAgICAgICAgaGFzTmFtZSA9IG1zZy5ib2R5LnZhbHVlLmhhc093blByb3BlcnR5KCduYW1lJyk7XHJcbiAgICAgICAgaGFzVXNlciA9IG1zZy5ib2R5LnZhbHVlLmhhc093blByb3BlcnR5KCd1c2VyJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChtc2cudHlwZSA9PT0gJ3Jlc3BvbnNlJykge1xyXG4gICAgICAgIGxvZy5lcnJvcignW1JlZ2lzdGVyIGxpc3RlbmVyXSBza2lwcGluZyAnLCBtc2cpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gbXNnIHNlbnQgYnkgaWRlbnRpdHkgbWFuYWdlciBsaWJyYXJ5XHJcbiAgICAgIGxldCB1c2VyVXJsID0gX3RoaXMuX2dldElkZW50aXR5QXNzb2NpYXRlZChtc2cuYm9keS5yZXNvdXJjZSwgbXNnLmJvZHkuY3JpdGVyaWEpO1xyXG5cclxuICAgICAgbGV0IHJlcGx5ID0ge2lkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIHRvOiBtc2cuZnJvbSwgZnJvbTogbXNnLnRvLCBib2R5OiB7cmVzb3VyY2U6IHVzZXJVcmx9fTtcclxuICAgICAgcmVwbHkuYm9keS5jb2RlID0gKHVzZXJVcmwpID8gMjAwIDogNDA0O1xyXG5cclxuICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UocmVwbHkpO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEluc3RhbGwgQWRkcmVzc0FsbG9jYXRpb25cclxuICAgIGxldCBhZGRyZXNzQWxsb2NhdGlvbiA9IEFkZHJlc3NBbGxvY2F0aW9uLmluc3RhbmNlO1xyXG4gICAgX3RoaXMuYWRkcmVzc0FsbG9jYXRpb24gPSBhZGRyZXNzQWxsb2NhdGlvbjtcclxuXHJcbiAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgLSBBZGRyZXNzQWxsb2NhdGlvbl0gLSAnLCBhZGRyZXNzQWxsb2NhdGlvbik7XHJcbiAgfVxyXG5cclxuXHJcbiAgX2dldElkZW50aXR5QXNzb2NpYXRlZCh0eXBlLCBoeXBlcnR5VVJMKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGZvciAobGV0IGh5cGVydHkgaW4gX3RoaXMuaHlwZXJ0aWVzTGlzdCkge1xyXG4gICAgICBsZXQgdmFsdWUgPSBfdGhpcy5oeXBlcnRpZXNMaXN0W2h5cGVydHldO1xyXG5cclxuICAgICAgaWYgKHZhbHVlLl9oeXBlcnR5VVJMID09PSBoeXBlcnR5VVJMKSB7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICBjYXNlICd1c2VybmFtZSc6XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5fdXNlci51c2VybmFtZTtcclxuICAgICAgICAgIGNhc2UgJ2NuJzpcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLl91c2VyLmNuO1xyXG4gICAgICAgICAgY2FzZSAnbG9jYWxlJzpcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLl91c2VyLmxvY2FsZTtcclxuICAgICAgICAgIGNhc2UgJ2F2YXRhcic6XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5fdXNlci5hdmF0YXI7XHJcbiAgICAgICAgICBjYXNlICd1c2VyVVJMJzpcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLl91c2VyLnVzZXJVUkw7XHJcbiAgICAgICAgICBjYXNlICcuJzpcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLl91c2VyO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmV0dXJuIHRoZSBzYW5kYm94IGluc3RhbmNlIHdoZXJlIHRoZSBBcHBsaWNhdGlvbiBpcyBleGVjdXRpbmcuIEl0IGlzIGFzc3VtZWQgdGhlcmUgaXMganVzdCBvbmUgQXBwIHBlciBSdW50aW1lIGluc3RhbmNlLlxyXG4gICovXHJcbiAgZ2V0QXBwU2FuZGJveCgpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gX3RoaXMuYXBwU2FuZGJveDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB1c2VyIGFzc29jaWF0ZWQgdG8gdGhlIGh5cGVydHkgVVJMXHJcbiAgKiBAcGFyYW0gICAge1N0cmluZ30gICAgaHlwZXJ0eVVSTCAgICAgIGh5cGVydHkgVVJMXHJcbiAgKiBAcmV0dXJuICAge1N0cmluZ30gICAgdXNlclVSTCAgICAgICAgIHVzZXIgVVJMXHJcbiAgKi9cclxuICBnZXRIeXBlcnR5T3duZXIoaHlwZXJ0eVVSTCkge1xyXG5cclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgdXNlclVSTDtcclxuXHJcbiAgICBmb3IgKGxldCBpbmRleCBpbiBfdGhpcy5oeXBlcnRpZXNMaXN0KSB7XHJcbiAgICAgIGxldCBoeXBlcnR5ID0gX3RoaXMuaHlwZXJ0aWVzTGlzdFtpbmRleF07XHJcblxyXG4gICAgICBpZiAoaHlwZXJ0eS5oeXBlcnR5VVJMID09PSBoeXBlcnR5VVJMKSB7XHJcbiAgICAgICAgcmV0dXJuIGh5cGVydHkudXNlci51c2VyVVJMO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXNlclVSTDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB1c2VyIGFzc29jaWF0ZWQgdG8gdGhlIGh5cGVydHkgVVJMXHJcbiAgKiBAcGFyYW0gICAge1N0cmluZ30gICAgZGF0YU9iamVjdFVSTCAgICAgIGRhdGFPYmplY3RVUkwgVVJMXHJcbiAgKiBAcmV0dXJuICAge1N0cmluZ30gICAgdXNlclVSTCAgICAgICAgIHVzZXIgVVJMXHJcbiAgKi9cclxuICBnZXREYXRhT2JqZWN0UmVwb3J0ZXIoZGF0YU9iamVjdFVSTCkge1xyXG5cclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgRE91cmwgPSByZW1vdmVQYXRoRnJvbVVSTChkYXRhT2JqZWN0VVJMKTtcclxuICAgIGZvciAobGV0IGluZGV4IGluIF90aGlzLmRhdGFPYmplY3RMaXN0KSB7XHJcbiAgICAgIGxldCBkYXRhT2JqZWN0ID0gX3RoaXMuZGF0YU9iamVjdExpc3RbaW5kZXhdO1xyXG5cclxuICAgICAgaWYgKGRhdGFPYmplY3QudXJsID09PSBET3VybCkge1xyXG4gICAgICAgIHJldHVybiBkYXRhT2JqZWN0LnJlcG9ydGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogcmV0dXJucyB0aGUgaHlwZXJ0eSBOYW1lIGZyb20gYSBnaXZlbiB1cmwuIFRoaXMgdXJsIGNvdWxkIGJlIGZyb20gYSBkYXRhT2JqZWN0IG9yIGh5cGVydHlcclxuICAqIEBwYXJhbSAgICB7U3RyaW5nfSAgICB1cmwgICAgICBoeXBlcnR5IG9yIGRhdGFPYmplY3QgVVJMXHJcbiAgKiBAcmV0dXJuICAge1N0cmluZ30gICAgaHlwZXJ0eU5hbWUgICAgIGh5cGVydHkgTmFtZVxyXG4gICovXHJcbiAgZ2V0SHlwZXJ0eU5hbWUodXJsKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBpc0h5cGVydHlVUkwgPSBkaXZpZGVVUkwodXJsKS50eXBlID09PSAnaHlwZXJ0eSc7XHJcblxyXG4gICAgLy92YWx1ZSB0byBiZSByZXR1cm5lZCBpbiB0aGUgZW5kXHJcbiAgICBsZXQgaHlwZXJ0eU5hbWU7XHJcblxyXG4gICAgLy9pZiBpcyBub3QgYW4gaHlwZXJ0eSwgY2hlY2sgaWYgaXMgYSBkYXRhT2JqZWN0IGFuZCBvYnRhaW4gaGlzIHJlcG9ydGVyXHJcbiAgICBsZXQgaHlwZXJ0eVVSTCA9IGlzSHlwZXJ0eVVSTCA/IHVybCA6IF90aGlzLmdldFJlcG9ydGVyVVJMU3luY2hvbm91cyh1cmwpO1xyXG5cclxuICAgIGZvciAobGV0IGluZGV4IGluIF90aGlzLmh5cGVydGllc0xpc3QpIHtcclxuICAgICAgbGV0IGh5cGVydHkgPSBfdGhpcy5oeXBlcnRpZXNMaXN0W2luZGV4XTtcclxuICAgICAgaWYgKGh5cGVydHkuaHlwZXJ0eVVSTCA9PT0gaHlwZXJ0eVVSTCkge1xyXG4gICAgICAgIGh5cGVydHlOYW1lID0gaHlwZXJ0eS5vYmplY3ROYW1lO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaHlwZXJ0eU5hbWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgcmVwb3J0ZXJVUkwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkYXRhb2JqZWN0IFVSTFxyXG4gICogQHBhcmFtICAgIHtTdHJpbmd9ICAgICBkYXRhT2JqZWN0VVJMICAgIGRhdGFPYmplY3RVUkxcclxuICAqIEByZXR1cm4gICB7U3RyaW5nfSAgICAgcmVwb3J0ZXJVUkwgICAgICByZXBvcnRlclVSTFxyXG4gICovXHJcbiAgZ2V0UmVwb3J0ZXJVUkwoZGF0YU9iamVjdFVSTCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XHJcblxyXG4gICAgICBsZXQgZGF0YU9iamVjdCA9IF90aGlzLmRhdGFPYmplY3RMaXN0W2RhdGFPYmplY3RVUkxdO1xyXG5cclxuICAgICAgaWYgKGRhdGFPYmplY3QpIHtcclxuICAgICAgICByZXNvbHZlKGRhdGFPYmplY3QucmVwb3J0ZXIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlamVjdCgnTm8gcmVwb3J0ZXIgd2FzIGZvdW5kJyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBmdW5jdGlvbiB0byByZXR1cm4gdGhlIHJlcG9ydGVyVVJMIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGF0YW9iamVjdCBVUkwuIG5vIHByb21pc2UgcmV0dXJuZWRcclxuICAqIEBwYXJhbSAgICB7U3RyaW5nfSAgICAgZGF0YU9iamVjdFVSTCAgICBkYXRhT2JqZWN0VVJMXHJcbiAgKiBAcmV0dXJuICAge1N0cmluZ30gICAgIHJlcG9ydGVyVVJMICAgICAgcmVwb3J0ZXJVUkxcclxuICAqL1xyXG4gIGdldFJlcG9ydGVyVVJMU3luY2hvbm91cyhkYXRhT2JqZWN0VVJMKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBkYXRhT2JqZWN0ID0gX3RoaXMuZGF0YU9iamVjdExpc3RbZGF0YU9iamVjdFVSTF07XHJcblxyXG4gICAgcmV0dXJuIChkYXRhT2JqZWN0KSA/IGRhdGFPYmplY3QucmVwb3J0ZXIgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIHJldHVybnMgdGhlIGh5cGVydHkgVVJMIHRoYXQgc3Vic2NyaWJlZCB0aGUgZGF0YU9iamVjdFxyXG4gICogQHBhcmFtICAgIHtTdHJpbmd9ICAgICB1cmwgICAgICAgICAgICB1cmwgZm9ybWF0XHJcbiAgKiBAcmV0dXJuICAge1N0cmluZ30gICAgSHlwZXJ0eSBVUkwgc3Vic2NyaWJlZCB0byB0aGUgVVJMXHJcbiAgKi9cclxuICBnZXREYXRhT2JqZWN0U3Vic2NyaWJlckh5cGVydHkodXJsKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBfdGhpcy5zdWJzY3JpYmVkRGF0YU9iamVjdExpc3RbdXJsXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogcmVnaXN0ZXIgYSBkZXNpcmVkIGRhdGFPYmplY3QgdG8gc3Vic2NyaWJlXHJcbiAgKiBAcGFyYW0gICAge1N0cmluZ30gICAgZGF0YU9iamVjdFVSTCAgICAgIGRhdGFPYmplY3QgVVJMXHJcbiAgKi9cclxuICByZWdpc3RlclN1YnNjcmliZWREYXRhT2JqZWN0KGRhdGFPYmplY3RVUkwsIGh5cGVydHlVUkwpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBpZiAoX3RoaXMuc3Vic2NyaWJlZERhdGFPYmplY3RMaXN0W2RhdGFPYmplY3RVUkxdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgX3RoaXMuc3Vic2NyaWJlZERhdGFPYmplY3RMaXN0W2RhdGFPYmplY3RVUkxdID0gaHlwZXJ0eVVSTDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogRnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBsaXN0IG9mIHByZSBhdXRob3Jpc2VkIHVzZXJzIHJlY2VpdmVkIGluIHRoZSBjcmVhdGlvbiBvZiBhIGRhdGEgb2JqZWN0XHJcbiAgKiBAcGFyYW0gICAge1N0cmluZ30gICAgICAgICAgICBkYXRhT2JqZWN0VVJMICAgIGRhdGFPYmplY3RVUkxcclxuICAqIEByZXR1cm4gICB7QXJyYXk8U3RyaW5nPn0gICAgIHByZUF1dGggICAgICAgICBMaXN0IG9mIHByZSBhdXRob3Jpc2VkIHVzZXJzXHJcbiAgKi9cclxuICBnZXRQcmVBdXRoU3Vic2NyaWJlcnMoZGF0YU9iamVjdFVSTCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBkYXRhT2JqZWN0ID0gX3RoaXMuZGF0YU9iamVjdExpc3RbZGF0YU9iamVjdFVSTF07XHJcbiAgICBsZXQgcHJlQXV0aCA9IFtdO1xyXG5cclxuICAgIGlmIChkYXRhT2JqZWN0KSB7XHJcbiAgICAgIHByZUF1dGggPSBkYXRhT2JqZWN0LmF1dGhvcmlzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBwcmVBdXRoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBzZW5kIHJlcXVlc3RzIHRvIHVucmVnaXN0ZXIgYWxsIGh5cGVydGllcyByZWdpc3RlcmVkIGluIGRvbWFpbiByZWdpc3RyeVxyXG4gICogQHJldHVybiAgIHtQcm9taXNlfSAgICAgcmV0dXJuIGEgcHJvbWlzZSBpZiB0aGUgcmVzdWx0IG9mIHVucmVnaXN0cmF0aW9uIGFsbCBoeXBlcnRpZXNcclxuICAqL1xyXG4gIHVucmVnaXN0ZXJBbGxIeXBlcnRpZXMoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCB1bnJlZ2lzdGVyUmVzdWx0cyA9IFtdO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIGZvciAobGV0IGluZGV4IGluIF90aGlzLmh5cGVydGllc0xpc3QpIHtcclxuICAgICAgICBsZXQgaHlwZXJ0eSA9IF90aGlzLmh5cGVydGllc0xpc3RbaW5kZXhdO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBfdGhpcy51bnJlZ2lzdGVySHlwZXJ0eUluc3RhbmNlKGh5cGVydHkuaHlwZXJ0eVVSTCk7XHJcbiAgICAgICAgdW5yZWdpc3RlclJlc3VsdHMucHVzaChyZXN1bHQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBQcm9taXNlLmFsbCh1bnJlZ2lzdGVyUmVzdWx0cykudGhlbigoKSA9PiB7XHJcblxyXG4gICAgICAgIHJlc29sdmUoJ3N1Y2Nlc3NmdWxseSB1bnJlZ2lzdGVyZWQgYWxsIGh5cGVydGllcycpO1xyXG4gICAgICB9LCBlcnJvciA9PiB7IHJlamVjdChlcnJvcik7IH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqICBmdW5jdGlvbiB0byB1bnJlZ2lzdGVyIGFuIGh5cGVydHlJbnN0YW5jZSBpbiB0aGUgRG9tYWluIFJlZ2lzdHJ5XHJcbiAgKiAgQHBhcmFtICAge1N0cmluZ30gICAgICBoeXBlcnR5SW5zdGFuY2UgICBIeXBlcnR5SW5zbnRhbmNlIHVybFxyXG4gICpcclxuICAqL1xyXG4gIHVucmVnaXN0ZXJIeXBlcnR5SW5zdGFuY2UoaHlwZXJ0eUluc3RhbmNlKSB7XHJcbiAgICAvL1RPRE8gd29ya2luZyBidXQgdGhlIHVzZXJcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IGNsb3NlTXNnID0geyB0eXBlOiAnZXhlY3V0ZScsIGZyb206IF90aGlzLnJlZ2lzdHJ5VVJMLFxyXG4gICAgICB0bzogaHlwZXJ0eUluc3RhbmNlLFxyXG4gICAgICBib2R5OiB7IG1ldGhvZDogJ2Nsb3NlJyB9fTtcclxuXHJcbiAgICAvLyBTZW5kIG1lc3NhZ2UgdG8gaHlwZXJ0eSB0byBjbG9zZVxyXG4gICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UoY2xvc2VNc2csIChyZXBseSkgPT4ge1xyXG4gICAgICBsb2cubG9nKCdbUmVnaXN0cnkudW5yZWdpc3Rlckh5cGVydHlJbnN0YW5jZV0gQ2xvc2UgUmVwbHknLCByZXBseSk7XHJcblxyXG4gICAgICBsZXQgbWVzc2FnZSA9IHsgdHlwZTogJ3VwZGF0ZScsIGZyb206IF90aGlzLnJlZ2lzdHJ5VVJMLFxyXG4gICAgICAgIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIF90aGlzLl9kb21haW4sXHJcbiAgICAgICAgYm9keTogeyByZXNvdXJjZTogJy9oeXBlcnR5LycgKyBoeXBlcnR5SW5zdGFuY2UsIHZhbHVlOiAnZGlzY29ubmVjdGVkJywgYXR0cmlidXRlOiAnc3RhdHVzJyB9fTtcclxuXHJcbiAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1lc3NhZ2UsIChyZXBseSkgPT4ge1xyXG4gICAgICAgIGxvZy5sb2coJ1tSZWdpc3RyeV0gdW5yZWdpc3RlciBoeXBlcnR5IFJlcGx5JywgcmVwbHkpO1xyXG5cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogIGZ1bmN0aW9uIHRvIHVucmVnaXN0ZXIgYW4gaHlwZXJ0eUluc3RhbmNlIGluIHRoZSBEb21haW4gUmVnaXN0cnlcclxuICAqICBAcGFyYW0gICB7U3RyaW5nfSAgICAgIGh5cGVydHlJbnN0YW5jZSAgIEh5cGVydHlJbnNudGFuY2UgdXJsXHJcbiAgKlxyXG4gICovXHJcbiAgdW5yZWdpc3RlckRhdGFPYmplY3QodXJsKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBtZXNzYWdlID0geyB0eXBlOiAndXBkYXRlJywgZnJvbTogX3RoaXMucmVnaXN0cnlVUkwsXHJcbiAgICAgIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIF90aGlzLl9kb21haW4sXHJcbiAgICAgIGJvZHk6IHtcclxuICAgICAgICByZXNvdXJjZTogdXJsLFxyXG4gICAgICAgIHZhbHVlOiB7XHJcbiAgICAgICAgICBzdGF0dXM6ICdkaXNjb25uZWN0ZWQnXHJcbiAgICAgICAgfVxyXG4gICAgICB9fTtcclxuXHJcbiAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVwbHkpID0+IHtcclxuICAgICAgbG9nLmxvZygnW1JlZ2lzdHJ5XSB1bnJlZ2lzdGVyIGRhdGFPYmplY3QgUmVwbHknLCByZXBseSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogIGZ1bmN0aW9uIHRvIGRlbGV0ZSBhbiBkYXRhT2JqZWN0SW5zdGFuY2UgaW4gdGhlIERvbWFpbiBSZWdpc3RyeVxyXG4gICogIEBwYXJhbSAgIHtTdHJpbmd9ICAgIG5hbWUgICAgICBEYXRhT2JqZWN0TmFtZVxyXG4gICovXHJcbiAgZGVsZXRlRGF0YU9iamVjdEluc3RhbmNlKG5hbWUpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IG1lc3NhZ2UgPSB7IHR5cGU6ICdkZWxldGUnLCBmcm9tOiBfdGhpcy5yZWdpc3RyeVVSTCxcclxuICAgICAgdG86ICdkb21haW46Ly9yZWdpc3RyeS4nICsgX3RoaXMuX2RvbWFpbixcclxuICAgICAgYm9keTogeyB2YWx1ZToge25hbWU6IG5hbWV9fX07XHJcblxyXG4gICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobWVzc2FnZSwgKHJlcGx5KSA9PiB7XHJcbiAgICAgIGxvZy5sb2coJ1tSZWdpc3RyeV0gdW5yZWdpc3RlciBkYXRhT2JqZWN0IFJlcGx5JywgcmVwbHkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEZ1bmN0aW9uIHRvIHVwZGF0ZSBhbiBIeXBlcnR5XHJcbiAgKi9cclxuICB1cGRhdGVIeXBlcnR5SW5zdGFuY2UocmVzb3VyY2UsIHZhbHVlKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBtZXNzYWdlID0geyB0eXBlOiAnVVBEQVRFJywgZnJvbTogX3RoaXMucmVnaXN0cnlVUkwsXHJcbiAgICAgIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIF90aGlzLl9kb21haW4sXHJcbiAgICAgIGJvZHk6IHsgcmVzb3VyY2U6IHJlc291cmNlLCB2YWx1ZTogdmFsdWV9fTtcclxuXHJcbiAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0LnBvc3RNZXNzYWdlKG1lc3NhZ2UsIChyZXBseSkgPT4ge1xyXG4gICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnldIFVwZGF0ZWQgaHlwZXJ0eSByZXBseScsIHJlcGx5KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiByZWdpc3RlciBhIG5ldyBzdWJzY3JpYmVyIGluIHRoZSBkYXRhT2JqZWN0IHJlZ2lzdGVyZWRcclxuICAqIEBwYXJhbSAge1N0cmluZ30gICBkYXRhT2JqZWN0VVJMICAgIGRhdGFPYmplY3QgVVJMXHJcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgc3Vic2NyaWJlclVSTCAgICBzdWJzY3JpYmVyIFVSTFxyXG4gICovXHJcbiAgcmVnaXN0ZXJTdWJzY3JpYmVyKGRhdGFPYmplY3RVUkwsIHN1YnNjcmliZXJVUkwpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgZGF0YU9iamVjdCA9IF90aGlzLmRhdGFPYmplY3RMaXN0W2RhdGFPYmplY3RVUkxdO1xyXG5cclxuICAgIGlmIChkYXRhT2JqZWN0KSB7XHJcblxyXG4gICAgICBpZiAoIWRhdGFPYmplY3Quc3Vic2NyaWJlcnMpIGRhdGFPYmplY3Quc3Vic2NyaWJlcnMgPSBbXTtcclxuXHJcbiAgICAgIGRhdGFPYmplY3Quc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVyVVJMKTtcclxuICAgICAgX3RoaXMuZGF0YU9iamVjdExpc3RbZGF0YU9iamVjdFVSTF0gPSBkYXRhT2JqZWN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBnZXQgdGhlIHN1YnNjcmliZXJzIHJlZ2lzdGVyZWQgd2l0aGluIGEgZGF0YU9iamVjdFxyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICBkYXRhT2JqZWN0VVJMICAgIGRhdGFPYmplY3QgVVJMXHJcbiAgKiBAcGFyYW0gIHtBcnJheTxTdHJpbmc+fSAgIFN1YnN0cmliZXJzIExpc3RcclxuICAqL1xyXG4gIGdldERhdGFPYmplY3RTdWJzY3JpYmVycyhkYXRhT2JqZWN0VVJMKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IGRhdGFPYmplY3QgPSBfdGhpcy5kYXRhT2JqZWN0TGlzdFtkYXRhT2JqZWN0VVJMXTtcclxuXHJcbiAgICBpZiAoZGF0YU9iamVjdCkge1xyXG4gICAgICByZXR1cm4gZGF0YU9iamVjdC5zdWJzY3JpYmVycztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93ICdObyBkYXRhT2JqZWN0IHdhcyBmb3VuZCc7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBUbyByZWdpc3RlciBhIG5ldyBEYXRhIE9iamVjdCBpbiB0aGUgcnVudGltZSB3aGljaCByZXR1cm5zIHRoZSBkYXRhT2JqZWN0VVJMIGFsbG9jYXRlZCB0byB0aGUgbmV3IERhdGEgT2JqZWN0LlxyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgIGlkZW50aWZpZXIgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyXHJcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgZGF0YU9iamVjdHNjaGVtYSAgICAgICAgICAgIGRhdGFPYmplY3RzY2hlbWFcclxuICAqIEBwYXJhbSAge1N0cmluZ30gICAgICBkYXRhT2JqZWN0VXJsICAgICAgICAgICAgICAgZGF0YU9iamVjdFVybFxyXG4gICogQHBhcmFtIHtTdHJpbmd9ICAgICAgZGF0YU9iamVjdFJlcG9ydGVyICAgICAgICAgICBkYXRhT2JqZWN0UmVwb3J0ZXJcclxuICAqIEBwYXJhbSAge0FycmF5fSAgICAgcmVzb3VyY2VzICAgICAgICAgICAgICAgICAgICAgZGF0YU9iamVjdCByZXNvdXJjZXNcclxuICAqIEBwYXJhbSAge0FycmF5fSAgICAgYXV0aG9yaXNlICAgICAgICAgICAgICAgICAgICAgbGlzdCBvZiBwcmUgYXV0aG9yaXNlZCBhdXRob3Jpc2VkIElEc1xyXG4gICovXHJcbiAgLy9yZWdpc3RlckRhdGFPYmplY3QoaWRlbnRpZmllciwgZGF0YU9iamVjdHNjaGVtYSwgZGF0YU9iamVjdFVybCwgZGF0YU9iamVjdFJlcG9ydGVyLCByZXNvdXJjZXMsIGFkZHJlc3NVUkwsIGF1dGhvcmlzZSkge1xyXG4gIHJlZ2lzdGVyRGF0YU9iamVjdChvYmplY3RSZWdpc3RyYXRpb24pIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IHJlZ2lzdHJhdGlvbiA9IGRlZXBDbG9uZShvYmplY3RSZWdpc3RyYXRpb24pO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIGxldCBkYXRhU2NoZW1lID0gW107XHJcbiAgICAgIGxldCBmaWx0ZXJlZERhdGFTY2hlbWUgPSByZWdpc3RyYXRpb24udXJsLnNwbGl0KCc6Jyk7XHJcbiAgICAgIGRhdGFTY2hlbWUucHVzaChmaWx0ZXJlZERhdGFTY2hlbWVbMF0pO1xyXG5cclxuICAgICAgX3RoaXMuc3RvcmFnZU1hbmFnZXIuZ2V0KCdyZWdpc3RyeTpEYXRhT2JqZWN0VVJMcycpLnRoZW4oKHVybHNMaXN0KSA9PiB7XHJcblxyXG4gICAgICAgIGlmICghdXJsc0xpc3QpIHtcclxuICAgICAgICAgIHVybHNMaXN0ID0ge307XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL3VwZGF0ZSB0aGUgbGlzdCB3aXRoIHRoZSBuZXcgZWxlbWVudHNcclxuICAgICAgICB1cmxzTGlzdFtvYmplY3RSZWdpc3RyYXRpb24ubmFtZSArIG9iamVjdFJlZ2lzdHJhdGlvbi5zY2hlbWEgKyBvYmplY3RSZWdpc3RyYXRpb24ucmVzb3VyY2VzICsgb2JqZWN0UmVnaXN0cmF0aW9uLnJlcG9ydGVyXSA9IG9iamVjdFJlZ2lzdHJhdGlvbi51cmw7XHJcblxyXG4gICAgICAgIGxldCBwMnBIYW5kbGVyO1xyXG4gICAgICAgIGxldCBwMnBSZXF1ZXN0ZXI7XHJcblxyXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhfdGhpcy5wMnBIYW5kbGVyU3R1YikubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgICBwMnBIYW5kbGVyID0gX3RoaXMucDJwSGFuZGxlclN0dWJbX3RoaXMucnVudGltZVVSTF0udXJsO1xyXG4gICAgICAgICAgcDJwUmVxdWVzdGVyID0gcnVudGltZVV0aWxzLnJ1bnRpbWVEZXNjcmlwdG9yLnAycFJlcXVlc3RlclN0dWI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWdpc3RyYXRpb24uc3RhcnRpbmdUaW1lID0gcmVnaXN0cmF0aW9uLmNyZWF0ZWQ7XHJcblxyXG4gICAgICAgIGRlbGV0ZSByZWdpc3RyYXRpb24uYXV0aG9yaXNlO1xyXG4gICAgICAgIGRlbGV0ZSByZWdpc3RyYXRpb24uY3JlYXRlZDtcclxuICAgICAgICBkZWxldGUgcmVnaXN0cmF0aW9uLm11dHVhbDtcclxuICAgICAgICBkZWxldGUgcmVnaXN0cmF0aW9uLnJlc3VtZTtcclxuXHJcbiAgICAgICAgaWYgKCFyZWdpc3RyYXRpb24uZXhwaXJlcykgcmVnaXN0cmF0aW9uLmV4cGlyZXMgPSBfdGhpcy5leHBpcmVzVGltZTtcclxuXHJcbiAgICAgICAgcmVnaXN0cmF0aW9uLmRhdGFTY2hlbWVzID0gZGF0YVNjaGVtZTtcclxuXHJcbiAgICAgICAgaWYgKHAycEhhbmRsZXIpIHtcclxuICAgICAgICAgIHJlZ2lzdHJhdGlvbi5wMnBIYW5kbGVyID0gcDJwSGFuZGxlcjtcclxuICAgICAgICAgIHJlZ2lzdHJhdGlvbi5wMnBSZXF1ZXN0ZXIgPSBwMnBSZXF1ZXN0ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoX3RoaXMuaXNJbnRlcndvcmtpbmdQcm90b1N0dWIocmVnaXN0cmF0aW9uLnJlcG9ydGVyKSkge1xyXG4gICAgICAgICAgcmVnaXN0cmF0aW9uLmludGVyd29ya2luZyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWdpc3RyYXRpb24uc3RhdHVzID0gJ2xpdmUnO1xyXG5cclxuICAgICAgICBsZXQgbWVzc2FnZTtcclxuXHJcbiAgICAgICAgaWYgKCFvYmplY3RSZWdpc3RyYXRpb24ucmVzdW1lKSB7XHJcblxyXG4gICAgICAgICAgbG9nLmxvZygnW1JlZ2lzdHJ5LnJlZ2lzdGVyRGF0YU9iamVjdF0gcmVnaXN0ZXJpbmcgbmV3IGRhdGEgb2JqZWN0IFVSTCcsIHJlZ2lzdHJhdGlvbik7XHJcblxyXG4gICAgICAgICAgbWVzc2FnZSA9IHt0eXBlOiAnY3JlYXRlJywgZnJvbTogX3RoaXMucmVnaXN0cnlVUkwsIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIF90aGlzLnJlZ2lzdHJ5RG9tYWluLCBib2R5OiB7dmFsdWU6IHJlZ2lzdHJhdGlvbiwgcG9saWN5OiAncG9saWN5J319O1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIGxvZy5sb2coJ1tSZWdpc3RyeS5yZWdpc3RlckRhdGFPYmplY3RdIHJlZ2lzdGVyaW5nIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBkYXRhIG9iamVjdCBVUkwnLCByZWdpc3RyYXRpb24pO1xyXG5cclxuICAgICAgICAgIG1lc3NhZ2UgPSB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd1cGRhdGUnLFxyXG4gICAgICAgICAgICB0bzogJ2RvbWFpbjovL3JlZ2lzdHJ5LicgKyBfdGhpcy5yZWdpc3RyeURvbWFpbixcclxuICAgICAgICAgICAgZnJvbTogX3RoaXMucmVnaXN0cnlVUkwsXHJcbiAgICAgICAgICAgIGJvZHk6IHtyZXNvdXJjZTogcmVnaXN0cmF0aW9uLnVybCwgdmFsdWU6IHtzdGF0dXM6ICdsaXZlJ30gfVxyXG4gICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBfdGhpcy5kYXRhT2JqZWN0TGlzdFtyZWdpc3RyYXRpb24udXJsXSA9IG9iamVjdFJlZ2lzdHJhdGlvbjtcclxuXHJcbiAgICAgICAgLy8gc3RlcCB0byBvYnRhaW4gdGhlIGxpc3Qgb2YgYWxsIFVSTCByZWdpc3RlcmVkIHRvIHVwZGF0ZWQgd2l0aCB0aGUgbmV3IG9uZS5cclxuICAgICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5zZXQoJ3JlZ2lzdHJ5OkRhdGFPYmplY3RVUkxzJywgMCwgdXJsc0xpc3QpLnRoZW4oKCkgPT4ge1xyXG5cclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlV2l0aFJldHJpZXMobWVzc2FnZSwgX3RoaXMuX3JlZ2lzdHJhdGlvblJldHJpZXMsIChyZXBseSkgPT4ge1xyXG4gICAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeS5yZWdpc3RlckRhdGFPYmplY3RdID09PT4gcmVnaXN0ZXJEYXRhT2JqZWN0IFJlcGx5OiAnLCByZXBseSk7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlZ2lzdHJhdGlvbik7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdCgnZXJyb3Igb24gcmVnaXN0ZXIgRGF0YU9iamVjdCcpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGxvZy5lcnJvcihlKTtcclxuICAgICAgICAgICAgcmVqZWN0KGUpO1xyXG4gICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAvL3RpbWVyIHRvIGtlZXAgdGhlIHJlZ2lzdHJhdGlvbiBhbGl2ZVxyXG4gICAgICAgICAgLy8gdGhlIHRpbWUgaXMgZGVmaW5lZCBieSBhIGxpdHRsZSBsZXNzIHRoYW4gaGFsZiBvZiB0aGUgZXhwaXJlcyB0aW1lIGRlZmluZWRcclxuICAgICAgICAgIGxldCBrZWVwQWxpdmVUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkge1xyXG5cclxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ3VwZGF0ZScsXHJcbiAgICAgICAgICAgICAgZnJvbTogX3RoaXMucmVnaXN0cnlVUkwsXHJcbiAgICAgICAgICAgICAgdG86ICdkb21haW46Ly9yZWdpc3RyeS4nICsgX3RoaXMucmVnaXN0cnlEb21haW4sXHJcbiAgICAgICAgICAgICAgYm9keTogeyByZXNvdXJjZTogcmVnaXN0cmF0aW9uLnVybCwgdmFsdWU6IHtzdGF0dXM6ICdsaXZlJ30sIG1ldGhvZDogJ3JlZnJlc2gnIH1cclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1lc3NhZ2UsIChyZXBseSkgPT4ge1xyXG4gICAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeS5yZWdpc3RlckRhdGFPYmplY3RdIEtlZXBBbGl2ZSBSZXBseTogJywgcmVwbHkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0sICgoKHJlZ2lzdHJhdGlvbi5leHBpcmVzIC8gMS4xKSAvIDIpICogMTAwMCkpO1xyXG5cclxuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihyZWFzb24pIHtcclxuICAgICAgICAgIGxvZy5lcnJvcignW1JlZ2lzdHJ5IHJlZ2lzdGVySHlwZXJ0eV0gRXJyb3I6ICcsIHJlYXNvbik7XHJcbiAgICAgICAgICByZWplY3QocmVhc29uKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIF9nZXRSZXNvdXJjZXNBbmRTY2hlbWVzKGRlc2NyaXB0b3IpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKT0+IHtcclxuXHJcbiAgICAgIGxldCByZXNvdXJjZXM7XHJcblxyXG4gICAgICAvLyBjaGVjayBpZiB0aGUgaHlwZXJ0eSByZXNvdXJjZXMgaXMgYSB2ZWN0b3Igb3IgYSBzdHJpbmdcclxuICAgICAgLy8gVE9ETyBkZWxldGUgbGF0ZXIgd2hlbiBjYXRhbG9ndWUgaXMgZml4ZWRcclxuICAgICAgaWYgKHR5cGVvZiAoZGVzY3JpcHRvci5oeXBlcnR5VHlwZSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmVzb3VyY2VzID0gW107XHJcbiAgICAgICAgcmVzb3VyY2VzLnB1c2goZGVzY3JpcHRvci5oeXBlcnR5VHlwZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzb3VyY2VzID0gZGVzY3JpcHRvci5oeXBlcnR5VHlwZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IG9iak5hbWUgPSBkZXNjcmlwdG9yLm9iamVjdE5hbWU7XHJcblxyXG4gICAgICBsZXQgZGVzY3JpcHRvckRhdGFTY2hlbWEgPSBkZXNjcmlwdG9yLmRhdGFPYmplY3RzO1xyXG4gICAgICBsZXQgZGF0YVNjaGVtYXNBcnJheSA9IFtdO1xyXG5cclxuICAgICAgLy90aGlzIHdpbGwgY3JlYXRlIGEgYXJyYXkgd2l0aCBhIFByb21pc2UgaW4gZWFjaCBwb3NpdGlvblxyXG4gICAgICBmb3IgKGxldCBpbmRleCBpbiBkZXNjcmlwdG9yRGF0YVNjaGVtYSkge1xyXG4gICAgICAgIGRhdGFTY2hlbWFzQXJyYXkucHVzaChfdGhpcy5ydW50aW1lQ2F0YWxvZ3VlLmdldERhdGFTY2hlbWFEZXNjcmlwdG9yKGRlc2NyaXB0b3JEYXRhU2NoZW1hW2luZGV4XSkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBhcyBzb29uIGFzIHRoZSBwcmV2aW91cyBhcnJheSBpcyBjb21wbGV0ZWQsIHRoaXMgd2lsbCB3YWl0IGZvciB0aGUgcmVzb2x2ZSBvZiBhbGwgcHJvbWlzZXMgaW4gdGhlIGFycmF5XHJcbiAgICAgIFByb21pc2UuYWxsKGRhdGFTY2hlbWFzQXJyYXkpLnRoZW4oZnVuY3Rpb24oZGF0YVNjaGVtYXMpIHtcclxuXHJcbiAgICAgICAgbGV0IGZpbHRlcmVkRGF0YVNjaGVtYXMgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpbmRleCBpbiBkYXRhU2NoZW1hcykge1xyXG4gICAgICAgICAgbGV0IGRhdGFTY2hlbWEgPSBkYXRhU2NoZW1hc1tpbmRleF07XHJcbiAgICAgICAgICBmaWx0ZXJlZERhdGFTY2hlbWFzLnB1c2goZGF0YVNjaGVtYS5zb3VyY2VQYWNrYWdlLnNvdXJjZUNvZGUucHJvcGVydGllcy5zY2hlbWUuY29uc3RhbnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5XSBIeXBlcnR5IFNjaGVtYXMnLCBmaWx0ZXJlZERhdGFTY2hlbWFzKTtcclxuICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnldIEh5cGVydHkgcmVzb3VyY2VzJywgcmVzb3VyY2VzKTtcclxuXHJcbiAgICAgICAgcmVzb2x2ZSh7cmVzb3VyY2VzOiByZXNvdXJjZXMsIGRhdGFTY2hlbWE6IGZpbHRlcmVkRGF0YVNjaGVtYXMsIG5hbWU6IG9iak5hbWV9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogbWV0aG9kIHRoYXQgcmV0dXJucyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgSHlwZXJ0eSBvciBEYXRhT2JqZWN0cyBVUkxTLCBmb3IgZ2l2ZW4gY2hhcmFjdGVyaXN0aWNzXHJcbiAgKiBAcGFyYW0gIHtKU09OfSAgICAgICAgaW5mbyAgICAgICAgICAgb2JqZWN0IG9yIGh5cGVydHkgY2hhcmF0ZXJpc3RpY3MgaW5mb1xyXG4gICogQHJldHVybiB7YWRkcmVzc1VSTH0gIGFkZHJlc3NVUkwgICAgIHJldHVybiB0aGUgVVJMIGlmIHRoZXJlIGlzIGFueSBwcmV2aW91c3kgcmVnaXN0ZXJlZCBVUkwsIHJldHVybiB1bmRlZmluZWQgb3RoZXJ3aXNlXHJcbiAgKi9cclxuICBjaGVja1JlZ2lzdGVyZWRVUkxzKGluZm8sIHJldXNlVVJMKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG5cclxuICAgICAgbGV0IG9iamVjdFR5cGUgPSAoaW5mby5yZXBvcnRlcikgPyAncmVnaXN0cnk6RGF0YU9iamVjdFVSTHMnIDogJ3JlZ2lzdHJ5Okh5cGVydHlVUkxzJztcclxuXHJcbiAgICAgIGlmICh0eXBlb2YocmV1c2VVUkwpID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIG9iamVjdFR5cGUgPSByZXVzZVVSTCAmJiBkaXZpZGVVUkwocmV1c2VVUkwpLnR5cGUgIT09ICdoeXBlcnR5JyA/ICdyZWdpc3RyeTpEYXRhT2JqZWN0VVJMcycgOiAncmVnaXN0cnk6SHlwZXJ0eVVSTHMnO1xyXG4gICAgICB9XHJcbiAgICAgIC8vZGVidWdnZXI7XHJcbiAgICAgIF90aGlzLnN0b3JhZ2VNYW5hZ2VyLmdldChvYmplY3RUeXBlKS50aGVuKCh1cmxzTGlzdCkgPT4ge1xyXG5cclxuICAgICAgICBpZiAoIXVybHNMaXN0KSB7XHJcbiAgICAgICAgICB1cmxzTGlzdCA9IHt9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZihyZXVzZVVSTCkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5IC0gY2hlY2tSZWdpc3RlcmVkVVJMc10gLSBsb29rIGZvciAnICsgcmV1c2VVUkwgKyAnIG9uICcsIHVybHNMaXN0KTtcclxuXHJcbiAgICAgICAgICBsZXQgc2VhcmNoUmVzdWx0ID0gT2JqZWN0LmtleXModXJsc0xpc3QpLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleE9mID0gdXJsc0xpc3Rba2V5XS5pbmRleE9mKHJldXNlVVJMKTtcclxuICAgICAgICAgICAgcmV0dXJuIHVybHNMaXN0W2tleV1baW5kZXhPZl07XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5IC0gY2hlY2tSZWdpc3RlcmVkVVJMc10gLSBmb3VuZCAnICsgc2VhcmNoUmVzdWx0Lmxlbmd0aCArICcgcmVzdWx0cyBvbiAnLCBzZWFyY2hSZXN1bHQpO1xyXG4gICAgICAgICAgaWYgKHNlYXJjaFJlc3VsdC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoc2VhcmNoUmVzdWx0KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob2JqZWN0VHlwZSA9PT0gJ3JlZ2lzdHJ5Okh5cGVydHlVUkxzJykge1xyXG4gICAgICAgICAgX3RoaXMuX2dldFJlc291cmNlc0FuZFNjaGVtZXMoaW5mbykudGhlbigodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHVybHNMaXN0W3ZhbHVlLnJlc291cmNlcyArIHZhbHVlLmRhdGFTY2hlbWEgKyB2YWx1ZS5uYW1lXSkge1xyXG4gICAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeV0gcmV1c2FnZSBvZiBoeXBlcnR5IFVSTCcpO1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHVybHNMaXN0W3ZhbHVlLnJlc291cmNlcyArIHZhbHVlLmRhdGFTY2hlbWEgKyB2YWx1ZS5uYW1lXSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5XSBubyBoeXBlcnR5IFVSTCB3YXMgcHJldmlvdXNseSByZWdpc3RlcmVkICcpO1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgbGV0IGNoYXJhY3RlcmlzdGljcyA9IGluZm8ubmFtZSArIGluZm8uc2NoZW1hICsgaW5mby5yZXNvdXJjZXMgKyBpbmZvLnJlcG9ydGVyO1xyXG5cclxuICAgICAgICAgIGlmICh1cmxzTGlzdFtjaGFyYWN0ZXJpc3RpY3NdKSB7XHJcbiAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeV0gcmV1c2FnZSBvZiBkYXRhT2JqZWN0IFVSTCcpO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mKHVybHNMaXN0W2NoYXJhY3RlcmlzdGljc10pID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgIGxldCBhcnJheVRvUmVzb2x2ZSA9IFtdO1xyXG4gICAgICAgICAgICAgIGFycmF5VG9SZXNvbHZlLnB1c2godXJsc0xpc3RbY2hhcmFjdGVyaXN0aWNzXSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoYXJyYXlUb1Jlc29sdmUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHVybHNMaXN0W2NoYXJhY3RlcmlzdGljc10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnldIG5vIGRhdGFPYmplY3QgVVJMIHdhcyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQnKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodW5kZWZpbmVkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAqIFRvIHJlZ2lzdGVyIGEgbmV3IEh5cGVydHkgaW4gdGhlIHJ1bnRpbWUgd2hpY2ggcmV0dXJucyB0aGUgSHlwZXJ0eVVSTCBhbGxvY2F0ZWQgdG8gdGhlIG5ldyBIeXBlcnR5LlxyXG4gICogQHBhcmFtICB7U2FuZGJveH0gICAgICAgICAgICAgc2FuZGJveCAgICAgICAgICAgICAgIHNhbmRib3hcclxuICAqIEBwYXJhbSAge0h5cGVydHlDYXRhbG9ndWVVUkx9IEh5cGVydHlDYXRhbG9ndWVVUkwgICBkZXNjcmlwdG9yXHJcbiAgKiBAcGFyYW0ge29iamVjdH0gSWRwQ29uc3RyYWludCAtIGNvbnN0cmFpbnRzIHRvIGJlIHVzZWQgd2hlbiBzZWxlY3RpbmcgdGhlIGlkZW50aXR5IHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgSHlwZXJ0eSBpbmNsdWRpbmcgb3JpZ2luLCBpZHAsIGFuZCBpZEhpbnQuXHJcbiAgKiBAcmV0dXJuIHtIeXBlcnR5VVJMfSAgICAgICAgICBIeXBlcnR5VVJMXHJcbiAgKi9cclxuICByZWdpc3Rlckh5cGVydHkoc2FuZGJveCwgZGVzY3JpcHRvclVSTCwgZGVzY3JpcHRvciwgYWRkcmVzc1VSTCwgSWRwQ29uc3RyYWludCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBsZXQgaHlwZXJ0eUNhcGFiaWxpdGllcztcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XHJcblxyXG4gICAgICAvL2Fzc3VtaW5nIGRlc2NyaXB0b3IgY29tZSBpbiB0aGlzIGZvcm1hdCwgdGhlIHNlcnZpY2UtcHJvdmlkZXItZG9tYWluIHVybCBpcyByZXRyaWV2ZWQgYnkgYSBzcGxpdCBpbnN0cnVjdGlvblxyXG4gICAgICAvL2h5cGVydHktY2F0YWxvZ3VlOi8vPHNlcnZpY2UtcHJvdmlkZXItZG9tYWluPi88Y2F0YWxvZ3VlLW9iamVjdC1pZGVudGlmaWVyPlxyXG4gICAgICBsZXQgZG9tYWluVXJsID0gZGl2aWRlVVJMKGRlc2NyaXB0b3JVUkwpLmRvbWFpbjtcclxuXHJcbiAgICAgIGlmIChkb21haW5VcmwuaW5jbHVkZXMoJ2NhdGFsb2d1ZScpKSB7XHJcbiAgICAgICAgZG9tYWluVXJsID0gZG9tYWluVXJsLnJlcGxhY2UoJ2NhdGFsb2d1ZS4nLCAnJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIF90aGlzLmlkTW9kdWxlLmdldElkZW50aXR5QXNzZXJ0aW9uKElkcENvbnN0cmFpbnQpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XHJcblxyXG4gICAgICAgIGxldCB1c2VyUHJvZmlsZSA9IHJlc3VsdC51c2VyUHJvZmlsZTtcclxuXHJcbiAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IHJlZ2lzdGVySHlwZXJ0eV0gdXNlclByb2ZpbGUnLCB1c2VyUHJvZmlsZSk7XHJcbiAgICAgICAgbGV0IGVtYWlsVVJMID0gdXNlclByb2ZpbGUudXNlclVSTDtcclxuXHJcbiAgICAgICAgaWYgKF90aGlzLl9tZXNzYWdlQnVzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHJlamVjdCgnW1JlZ2lzdHJ5IHJlZ2lzdGVySHlwZXJ0eV0gTWVzc2FnZUJ1cyBpcyB1bmRlZmluZWQnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy9jYWxsIGNoZWNrIGlmIHRoZSBwcm90b3N0dWIgZXhpc3Q6IHRvIGJlIHJlbW92ZWRcclxuICAgICAgICAgIC8qICBfdGhpcy5yZXNvbHZlKGRvbWFpblVybCkudGhlbihmdW5jdGlvbihhKSB7XHJcbiAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSByZWdpc3Rlckh5cGVydHldIHN0dWIgdG8gZG9tYWluIHJlZ2lzdHJ5LSAnLCBhKTsqL1xyXG5cclxuICAgICAgICAgIF90aGlzLnN0b3JhZ2VNYW5hZ2VyLmdldCgncmVnaXN0cnk6SHlwZXJ0eVVSTHMnKS50aGVuKCh1cmxzTGlzdCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IHJlZ2lzdGVySHlwZXJ0eV0gc3RvcmFnZU1hbmFnZXJdIC0gJywgdXJsc0xpc3QpO1xyXG5cclxuICAgICAgICAgICAgX3RoaXMuX2dldFJlc291cmNlc0FuZFNjaGVtZXMoZGVzY3JpcHRvcikudGhlbigodmFsdWUpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgaHlwZXJ0eUNhcGFiaWxpdGllcyA9IHZhbHVlO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoIXVybHNMaXN0KSB7XHJcbiAgICAgICAgICAgICAgICB1cmxzTGlzdCA9IHt9O1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdXJsc0xpc3RbaHlwZXJ0eUNhcGFiaWxpdGllcy5yZXNvdXJjZXMgKyBoeXBlcnR5Q2FwYWJpbGl0aWVzLmRhdGFTY2hlbWEgKyBoeXBlcnR5Q2FwYWJpbGl0aWVzLm5hbWVdID0gYWRkcmVzc1VSTC5hZGRyZXNzO1xyXG4gICAgICAgICAgICAgIF90aGlzLnN0b3JhZ2VNYW5hZ2VyLnNldCgncmVnaXN0cnk6SHlwZXJ0eVVSTHMnLCAwLCB1cmxzTGlzdCkudGhlbigoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgX3RoaXMucmVnaXN0cnlEb21haW4gPSBkb21haW5Vcmw7XHJcblxyXG4gICAgICAgICAgICAgICAgLy9jaGVjayB3aGV0aGVyIHRoZSByZWNlaXZlZCBzYW5ib3ggZSBBcHBsaWNhdGlvblNhbmRib3ggb3IgYSBub3JtYWwgc2FuZGJveFxyXG4gICAgICAgICAgICAgICAgaWYgKHNhbmRib3gudHlwZSA9PT0gJ2FwcCcpIHtcclxuICAgICAgICAgICAgICAgICAgX3RoaXMuc2FuZGJveGVzTGlzdC5hcHBTYW5kYm94W2FkZHJlc3NVUkwuYWRkcmVzc1swXV0gPSBzYW5kYm94O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzYW5kYm94LnR5cGUgPT09ICdub3JtYWwnKSB7XHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLnNhbmRib3hlc0xpc3Quc2FuZGJveFthZGRyZXNzVVJMLmFkZHJlc3NbMF1dID0gc2FuZGJveDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlamVjdCgnV3JvbmcgU2FuZGJveFR5cGUnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgcDJwSGFuZGxlcjtcclxuICAgICAgICAgICAgICAgIGxldCBwMnBSZXF1ZXN0ZXI7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKF90aGlzLnAycEhhbmRsZXJTdHViKS5sZW5ndGggIT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgcDJwSGFuZGxlciA9IF90aGlzLnAycEhhbmRsZXJTdHViW190aGlzLnJ1bnRpbWVVUkxdLnVybDtcclxuICAgICAgICAgICAgICAgICAgcDJwUmVxdWVzdGVyID0gcnVudGltZVV0aWxzLnJ1bnRpbWVEZXNjcmlwdG9yLnAycFJlcXVlc3RlclN0dWI7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHJ1bnRpbWUgPSBfdGhpcy5ydW50aW1lVVJMO1xyXG4gICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9ICdsaXZlJztcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgaHlwZXJ0eSA9IG5ldyBIeXBlcnR5SW5zdGFuY2UoX3RoaXMuaWRlbnRpZmllciwgX3RoaXMucmVnaXN0cnlVUkwsIGRlc2NyaXB0b3JVUkwsIGRlc2NyaXB0b3IsIGFkZHJlc3NVUkwuYWRkcmVzc1swXSwgdXNlclByb2ZpbGUsICdndWlkJywgX3RoaXMucnVudGltZVVSTCwgJ2N0eCcsIHAycEhhbmRsZXIsIHAycFJlcXVlc3RlciwgaHlwZXJ0eUNhcGFiaWxpdGllcy5kYXRhU2NoZW1hLCBoeXBlcnR5Q2FwYWJpbGl0aWVzLnJlc291cmNlcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgX3RoaXMuaHlwZXJ0aWVzTGlzdC5wdXNoKGh5cGVydHkpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vbWVzc2FnZSB0byByZWdpc3RlciB0aGUgbmV3IGh5cGVydHksIHdpdGhpbiB0aGUgZG9tYWluIHJlZ2lzdHJ5XHJcbiAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZVZhbHVlO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVnaXN0cmF0aW9uRXhwaXJlcyA9IF90aGlzLmV4cGlyZXNUaW1lO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIHNldCBhIGRpZmZlcmVudCBleHBpcmVzIHZhbHVlIGlmIGNvbmZpZ3VyZWQgaW4gdGhlIEh5cGVydHkgZGVzY3JpcHRvclxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYXRpb24gJiYgZGVzY3JpcHRvci5jb25maWd1cmF0aW9uLmV4cGlyZXMpIHJlZ2lzdHJhdGlvbkV4cGlyZXMgPSBkZXNjcmlwdG9yLmNvbmZpZ3VyYXRpb24uZXhwaXJlcztcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoYWRkcmVzc1VSTC5uZXdBZGRyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSByZWdpc3Rlckh5cGVydHldIHJlZ2lzdGVyaW5nIG5ldyBIeXBlcnR5IFVSTCcsIGFkZHJlc3NVUkwuYWRkcmVzc1swXSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlVmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdXNlcjogZW1haWxVUkwsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvcjogZGVzY3JpcHRvclVSTCxcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3NVUkwuYWRkcmVzc1swXSxcclxuICAgICAgICAgICAgICAgICAgICBleHBpcmVzOiByZWdpc3RyYXRpb25FeHBpcmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlczogaHlwZXJ0eUNhcGFiaWxpdGllcy5yZXNvdXJjZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNjaGVtZXM6IGh5cGVydHlDYXBhYmlsaXRpZXMuZGF0YVNjaGVtYSxcclxuICAgICAgICAgICAgICAgICAgICBydW50aW1lOiBydW50aW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBzZXQgYSBkaWZmZXJlbnQgZXhwaXJlcyBpZiBkZWZpbmVkIGluIHRoZSBoeXBlcnR5IGNvbmZpZ3VyYXRpb25cclxuXHJcbiAgICAgICAgICAgICAgICAgIGlmIChwMnBIYW5kbGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVZhbHVlLnAycEhhbmRsZXIgPSBwMnBIYW5kbGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VWYWx1ZS5wMnBSZXF1ZXN0ZXIgPSBwMnBSZXF1ZXN0ZXI7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSByZWdpc3Rlckh5cGVydHldIHJlZ2lzdGVyaW5nIG5ldyBIeXBlcnR5IGF0IGRvbWFpbiByZWdpc3RyeSAnLCBtZXNzYWdlVmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHt0eXBlOiAnY3JlYXRlJywgZnJvbTogX3RoaXMucmVnaXN0cnlVUkwsIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIF90aGlzLnJlZ2lzdHJ5RG9tYWluLCBib2R5OiB7dmFsdWU6IG1lc3NhZ2VWYWx1ZSwgcG9saWN5OiAncG9saWN5J319O1xyXG5cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSByZWdpc3Rlckh5cGVydHldIHJlZ2lzdGVyaW5nIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBIeXBlcnR5IFVSTCcsIGFkZHJlc3NVUkwuYWRkcmVzc1swXSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd1cGRhdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIF90aGlzLnJlZ2lzdHJ5RG9tYWluLFxyXG4gICAgICAgICAgICAgICAgICAgIGZyb206IF90aGlzLnJlZ2lzdHJ5VVJMLFxyXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IHtyZXNvdXJjZTogYWRkcmVzc1VSTC5hZGRyZXNzWzBdLCB2YWx1ZTogeyBzdGF0dXM6ICdsaXZlJywgdXNlcjogZW1haWxVUkwgfX1cclxuICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGlmIChwMnBIYW5kbGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5ib2R5LnZhbHVlLnAycEhhbmRsZXIgPSBwMnBIYW5kbGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuYm9keS52YWx1ZS5wMnBSZXF1ZXN0ZXIgPSBwMnBSZXF1ZXN0ZXI7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgcmVnaXN0ZXJIeXBlcnR5XSBIeXBlcnR5IHJlZ2lzdHJhdGlvbiBhdCBkb21haW4gcmVnaXN0cnkgIC0gJywgbWVzc2FnZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2VXaXRoUmV0cmllcyhtZXNzYWdlLCBfdGhpcy5yZWdpc3RyYXRpb25SZXRyaWVzLCAocmVwbHkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgcmVnaXN0ZXJIeXBlcnR5XSBIeXBlcnR5IHJlZ2lzdHJhdGlvbiByZXNwb25zZTogJywgcmVwbHkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVwbHkuYm9keS5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7IHVybDogYWRkcmVzc1VSTC5hZGRyZXNzWzBdfTtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChwMnBIYW5kbGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wMnBIYW5kbGVyID0gcDJwSGFuZGxlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnAycFJlcXVlc3RlciA9IHAycFJlcXVlc3RlcjtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXBseS5ib2R5LmNvZGUgPT09IDQwNCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IHJlZ2lzdGVySHlwZXJ0eV0gVGhlIHVwZGF0ZSB3YXMgbm90IHBvc3NpYmxlLiBSZWdpc3RlcmluZyBuZXcgSHlwZXJ0eSBhdCBkb21haW4gcmVnaXN0cnknKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI6IGVtYWlsVVJMLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yVVJMLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3NVUkwuYWRkcmVzc1swXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlczogcmVnaXN0cmF0aW9uRXhwaXJlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBoeXBlcnR5Q2FwYWJpbGl0aWVzLnJlc291cmNlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNjaGVtZXM6IGh5cGVydHlDYXBhYmlsaXRpZXMuZGF0YVNjaGVtYSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZTogcnVudGltZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXNcclxuICAgICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHAycEhhbmRsZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVZhbHVlLnAycEhhbmRsZXIgPSBwMnBIYW5kbGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVmFsdWUucDJwUmVxdWVzdGVyID0gcDJwUmVxdWVzdGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSB7dHlwZTogJ2NyZWF0ZScsIGZyb206IF90aGlzLnJlZ2lzdHJ5VVJMLCB0bzogJ2RvbWFpbjovL3JlZ2lzdHJ5LicgKyBfdGhpcy5yZWdpc3RyeURvbWFpbiwgYm9keToge3ZhbHVlOiBtZXNzYWdlVmFsdWUsIHBvbGljeTogJ3BvbGljeSd9fTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZVdpdGhSZXRyaWVzKG1lc3NhZ2UsIF90aGlzLnJlZ2lzdHJhdGlvblJldHJpZXMsIChyZXBseSkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IHJlZ2lzdGVySHlwZXJ0eV0gSHlwZXJ0eSByZWdpc3RyYXRpb24gdXBkYXRlIHJlc3BvbnNlOiAnLCByZXBseSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXBseS5ib2R5LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHsgdXJsOiBhZGRyZXNzVVJMLmFkZHJlc3NbMF19O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAycEhhbmRsZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnAycEhhbmRsZXIgPSBwMnBIYW5kbGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucDJwUmVxdWVzdGVyID0gcDJwUmVxdWVzdGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHJlZ2lzdGVyIGFuIEh5cGVydHk6ICcgKyByZXBseSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5lcnJvcihlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byByZWdpc3RlciBhbiBIeXBlcnR5OiAnLCByZXBseSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICBsb2cuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvL3RpbWVyIHRvIGtlZXAgdGhlIHJlZ2lzdHJhdGlvbiBhbGl2ZVxyXG4gICAgICAgICAgICAgICAgLy8gdGhlIHRpbWUgaXMgZGVmaW5lZCBieSBhIGxpdHRsZSBsZXNzIHRoYW4gaGFsZiBvZiB0aGUgZXhwaXJlcyB0aW1lIGRlZmluZWRcclxuICAgICAgICAgICAgICAgIGxldCBrZWVwQWxpdmVUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3VwZGF0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogX3RoaXMucmVnaXN0cnlVUkwsXHJcbiAgICAgICAgICAgICAgICAgICAgdG86ICdkb21haW46Ly9yZWdpc3RyeS4nICsgX3RoaXMucmVnaXN0cnlEb21haW4sXHJcbiAgICAgICAgICAgICAgICAgICAgYm9keTogeyByZXNvdXJjZTogYWRkcmVzc1VSTC5hZGRyZXNzWzBdLCB2YWx1ZToge3N0YXR1czogJ2xpdmUnfSwgbWV0aG9kOiAncmVmcmVzaCcgfX07XHJcblxyXG4gICAgICAgICAgICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVwbHkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgcmVnaXN0ZXJIeXBlcnR5XSBLZWVwQWxpdmUgUmVwbHk6ICcsIHJlcGx5KTtcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LCAoKChyZWdpc3RyYXRpb25FeHBpcmVzIC8gMS4xKSAvIDIpICogMTAwMCkpO1xyXG5cclxuICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihyZWFzb24pIHtcclxuICAgICAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSByZWdpc3Rlckh5cGVydHldIEVycm9yOiAnLCByZWFzb24pO1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KHJlYXNvbik7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICByZWplY3QoJ1tSZWdpc3RyeSByZWdpc3Rlckh5cGVydHldICcsIGVycik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFRvIHVucmVnaXN0ZXIgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgSHlwZXJ0eVxyXG4gICogQHBhcmFtICB7SHlwZXJ0eVVSTH0gICAgICAgICAgSHlwZXJ0eVVSTCB1cmwgICAgICAgIHVybFxyXG4gICovXHJcbiAgdW5yZWdpc3Rlckh5cGVydHkodXJsKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xyXG4gICAgICBsZXQgaW5kZXggPSAwO1xyXG5cclxuICAgICAgZm9yXHQoaW5kZXggPSAwOyBpbmRleCA8IF90aGlzLmh5cGVydGllc0xpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgbGV0IGh5cGVydHkgPSBfdGhpcy5oeXBlcnRpZXNMaXN0W2luZGV4XTtcclxuICAgICAgICBpZiAoaHlwZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBpZiAoaHlwZXJ0eS5oeXBlcnR5VVJMID09PSB1cmwpIHtcclxuICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChmb3VuZCA9PT0gZmFsc2UpIHtcclxuICAgICAgICByZWplY3QoJ0h5cGVydHkgbm90IGZvdW5kJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGVsZXRlIF90aGlzLmh5cGVydGllc0xpc3RbaW5kZXhdO1xyXG4gICAgICAgIHJlc29sdmUoJ0h5cGVydHkgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBUbyBkaXNjb3ZlciBwcm90b2NvbCBzdHVicyBhdmFpbGFibGUgaW4gdGhlIHJ1bnRpbWUgZm9yIGEgY2VydGFpbiBkb21haW4uIElmIGF2YWlsYWJsZSwgaXQgcmV0dXJucyB0aGUgcnVudGltZSB1cmwgZm9yIHRoZSBwcm90b2NvbCBzdHViIHRoYXQgY29ubmVjdHMgdG8gdGhlIHJlcXVlc3RlZCBkb21haW4uIFJlcXVpcmVkIGJ5IHRoZSBydW50aW1lIEJVUyB0byByb3V0ZSBtZXNzYWdlcyB0byByZW1vdGUgc2VydmVycyBvciBwZWVycyAoZG8gd2UgbmVlZCBzb21ldGhpbmcgc2ltaWxhciBmb3IgSHlwZXJ0aWVzPykuXHJcbiAgKiBAcGFyYW0gIHtEb21haW5VUkx9ICAgICAgICAgICBEb21haW5VUkwgICAgICAgICAgICB1cmxcclxuICAqIEByZXR1cm4ge1J1bnRpbWVVUkx9ICAgICAgICAgICBSdW50aW1lVVJMXHJcbiAgKi9cclxuICBkaXNjb3ZlclByb3Rvc3R1Yih1cmwpIHtcclxuICAgIGlmICghdXJsKSB0aHJvdyBuZXcgRXJyb3IoJ1BhcmFtZXRlciB1cmwgbmVlZGVkJyk7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBkaXZpZGVkVVJMID0gZGl2aWRlVVJMKHVybCk7XHJcbiAgICBsZXQgZG9tYWluVVJMID0gZGl2aWRlZFVSTC5kb21haW47XHJcblxyXG4gICAgaWYgKF90aGlzLnByb3Rvc3R1YnNMaXN0Lmhhc093blByb3BlcnR5KGRvbWFpblVSTCkgJiYgX3RoaXMucHJvdG9zdHVic0xpc3RbZG9tYWluVVJMXS5zdGF0dXMgPT09IFNUQVRVUy5MSVZFKSB7XHJcbiAgICAgIHJldHVybiAoX3RoaXMucHJvdG9zdHVic0xpc3RbZG9tYWluVVJMXSk7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgX3RoaXMucHJvdG9zdHVic0xpc3RbZG9tYWluVVJMXSA9IHtcclxuICAgICAgICBzdGF0dXM6IFNUQVRVUy5ERVBMT1lJTkdcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignW1JlZ2lzdHJ5IC0gZGlzY292ZXJQcm90b1N0dWIgXSBNZXNzYWdlIE5vZGUgUHJvdG9zdHViIE5vdCBGb3VuZC4gQ3JlYXRpbmcgb25lJyk7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogVG8gZGlzY292ZXIgcHJvdG9jb2wgc3R1YnMgYXZhaWxhYmxlIGluIHRoZSBydW50aW1lIGZvciBhIGNlcnRhaW4gcmVtb3RlIHJ1bnRpbWUgVVJMLiBJZiBhdmFpbGFibGUsIGl0IHJldHVybnMgdGhlIHJ1bnRpbWUgdXJsIGZvciB0aGUgcHJvdG9jb2wgc3R1YiB0aGF0IGNvbm5lY3RzIHRvIHRoZSByZXF1ZXN0ZWQgZG9tYWluLlxyXG4gICogUmVxdWlyZWQgYnkgdGhlIHJ1bnRpbWUgQlVTIHRvIHJvdXRlIG1lc3NhZ2VzIHRvIHJlbW90ZSBzZXJ2ZXJzIG9yIHBlZXJzIChkbyB3ZSBuZWVkIHNvbWV0aGluZyBzaW1pbGFyIGZvciBIeXBlcnRpZXM/KS5cclxuICAqIEBwYXJhbSAge1J1bnRpbWVVUkx9ICAgICAgICAgICBSdW50aW1lVVJMICAgICAgICAgICAgdXJsXHJcbiAgKiBAcmV0dXJuIHtwMnBSZXF1ZXN0ZXJ9ICAgICAgICAgICBSdW50aW1lVVJMXHJcbiAgKi9cclxuICBkaXNjb3ZlclAyUFN0dWIocnVudGltZVVSTCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBpZiAocnVudGltZVVSTCkge1xyXG5cclxuICAgICAgaWYgKF90aGlzLnAycFJlcXVlc3RlclN0dWIuaGFzT3duUHJvcGVydHkocnVudGltZVVSTCkgJiYgX3RoaXMucDJwUmVxdWVzdGVyU3R1YltydW50aW1lVVJMXS5zdGF0dXMgPT09IFNUQVRVUy5MSVZFKSB7XHJcbiAgICAgICAgcmV0dXJuIChfdGhpcy5wMnBSZXF1ZXN0ZXJTdHViW3J1bnRpbWVVUkxdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBfdGhpcy5wMnBSZXF1ZXN0ZXJTdHViW3J1bnRpbWVVUkxdID0ge1xyXG4gICAgICAgICAgc3RhdHVzOiBTVEFUVVMuQ1JFQVRFRFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignW1JlZ2lzdHJ5IC0gZGlzY292ZXJQMlBTdHViIF0gUDJQIFJlcXVlc3RlciBTdHViIE5vdCBGb3VuZC4gQ3JlYXRpbmcgb25lJyk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgaWYgKF90aGlzLnAycEhhbmRsZXJTdHViLmhhc093blByb3BlcnR5KF90aGlzLnJ1bnRpbWVVUkwpKSB7XHJcbiAgICAgICAgcmV0dXJuIChfdGhpcy5wMnBIYW5kbGVyU3R1YltfdGhpcy5ydW50aW1lVVJMXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgX3RoaXMucDJwSGFuZGxlclN0dWJbX3RoaXMucnVudGltZVVSTF0gPSB7XHJcbiAgICAgICAgICBzdGF0dXM6IFNUQVRVUy5DUkVBVEVEXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdbUmVnaXN0cnkgLSBkaXNjb3ZlclAyUFN0dWIgXSBQMlAgSGFuZGxlciBTdHViIE5vdCBGb3VuZC4nKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUbyByZWdpc3RlciBhIG5ldyBQcm90b2NvbCBTdHViIGluIHRoZSBydW50aW1lIGluY2x1ZGluZyBhcyBpbnB1dCBwYXJhbWV0ZXJzIHRoZSBmdW5jdGlvbiB0byBwb3N0TWVzc2FnZSwgdGhlIERvbWFpblVSTCB0aGF0IGlzIGNvbm5lY3RlZCB3aXRoIHRoZSBzdHViLCB3aGljaCByZXR1cm5zIHRoZSBSdW50aW1lVVJMIGFsbG9jYXRlZCB0byB0aGUgbmV3IFByb3RvY29sU3R1Yi5cclxuICAgKiBAcGFyYW0gIHtTYW5kYm94fSAgICAgICBTYW5kYm94XHJcbiAgICogQHBhcmFtICB7c3R1YklEfSAgICAgICAgRG9tYWluIG9yIGh5cGVydHkgcnVudGltZSB0byByZWdpc3RlciB0aGUgc3R1YlxyXG4gICAqIEBwYXJhbSAge2Rlc2NyaXB0b3JVUkx9ICAgICBDYXRhbG9ndWUgVVJMIG9mIHRoZSBQcm90b3N0dWIgZGVzY3JpcHRvclxyXG4gICAqIEBwYXJhbSAge2Rlc2NyaXB0b3J9ICAgICBQcm90b3N0dWIgZGVzY3JpcHRvclxyXG4gICAqIEByZXR1cm4ge1J1bnRpbWVQcm90b1N0dWJVUkx9XHJcbiAgICovXHJcbiAgcmVnaXN0ZXJTdHViKHNhbmRib3gsIHN0dWJJRCwgcDJwQ29uZmlnLCBkZXNjcmlwdG9yVVJMLCBkZXNjcmlwdG9yKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBfc3R1YkRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIGxldCBydW50aW1lUHJvdG9TdHViVVJMO1xyXG5cclxuICAgICAgLy9jaGVjayBpZiBtZXNzYWdlQnVzIGlzIHJlZ2lzdGVyZWQgaW4gcmVnaXN0cnkgb3Igbm90XHJcbiAgICAgIGlmIChfdGhpcy5fbWVzc2FnZUJ1cyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmVqZWN0KCdNZXNzYWdlQnVzIG5vdCBmb3VuZCBvbiByZWdpc3RlclN0dWInKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbG9nLmluZm8oJ1tSZWdpc3RyeSAtIHJlZ2lzdGVyU3R1Yl0gLSBzdHViSUQgJywgc3R1YklEKTtcclxuXHJcbiAgICAgIC8qIGlmICghc3R1YklELmluZGV4T2YoJ21zZy1ub2RlLicpKSB7XHJcbiAgICAgICAgc3R1YklEID0gc3R1YklELnN1YnN0cmluZyhzdHViSUQuaW5kZXhPZignLicpICsgMSk7XHJcbiAgICAgIH0qL1xyXG5cclxuICAgICAgbGV0IFAyUFJlcXVlc3RlclN0dWI7XHJcblxyXG4gICAgICBpZiAocDJwQ29uZmlnKSB7XHJcblxyXG4gICAgICAgIGlmIChwMnBDb25maWcuaGFzT3duUHJvcGVydHkoJ2lzSGFuZGxlclN0dWInKSAmJiBwMnBDb25maWcuaXNIYW5kbGVyU3R1Yikge1xyXG4gICAgICAgICAgcnVudGltZVByb3RvU3R1YlVSTCA9IF90aGlzLnAycEhhbmRsZXJVUkw7XHJcblxyXG4gICAgICAgICAgX3RoaXMucDJwSGFuZGxlclN0dWJbc3R1YklEXSA9IHtcclxuICAgICAgICAgICAgdXJsOiBydW50aW1lUHJvdG9TdHViVVJMLFxyXG4gICAgICAgICAgICBzdGF0dXM6IFNUQVRVUy5DUkVBVEVEXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIF90aGlzLnAycEhhbmRsZXJBc3NvY2lhdGlvbltfdGhpcy5ydW50aW1lVVJMXSA9IFtdO1xyXG5cclxuICAgICAgICAgIF90aGlzLnNhbmRib3hlc0xpc3Quc2FuZGJveFtydW50aW1lUHJvdG9TdHViVVJMXSA9IHNhbmRib3g7XHJcbiAgICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5IC0gcmVnaXN0ZXJTdHViIC0gUDJQSGFuZGxlclN0dWJdIC0gJywgc3R1YklELCAnIC0gJywgcnVudGltZVByb3RvU3R1YlVSTCk7XHJcbiAgICAgICAgICByZXNvbHZlKF90aGlzLnAycEhhbmRsZXJTdHViW3N0dWJJRF0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBQMlBSZXF1ZXN0ZXJTdHViID0gcDJwQ29uZmlnLnAycFJlcXVlc3RlclN0dWI7XHJcbiAgICAgICAgICBydW50aW1lUHJvdG9TdHViVVJMID0gJ3J1bnRpbWU6Ly8nICsgZGl2aWRlVVJMKHAycENvbmZpZy5yZW1vdGVSdW50aW1lVVJMKS5kb21haW4gKyAnL3AycHJlcXVlc3Rlci8nICsgZ2VuZXJhdGVHVUlEKCk7XHJcbiAgICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5IC0gcmVnaXN0ZXJTdHViIC0gUDJQUmVxdWVzdGVyU3R1Yl0gLSAnLCBQMlBSZXF1ZXN0ZXJTdHViLCAnIC0gJywgcnVudGltZVByb3RvU3R1YlVSTCk7XHJcblxyXG4gICAgICAgICAgLy8gdG8gYmUgY2xhcmlmaWVkIHdoYXQgaXMgdGhpcyBwMnBIYW5kbGVyQXNzb2NpYXRpb25cclxuICAgICAgICAgIF90aGlzLnAycEhhbmRsZXJBc3NvY2lhdGlvbltfdGhpcy5ydW50aW1lVVJMXS5wdXNoKHJ1bnRpbWVQcm90b1N0dWJVUkwpO1xyXG4gICAgICAgICAgX3RoaXMucDJwUmVxdWVzdGVyU3R1YltzdHViSURdID0ge1xyXG4gICAgICAgICAgICB1cmw6IHJ1bnRpbWVQcm90b1N0dWJVUkwsXHJcbiAgICAgICAgICAgIHN0YXR1czogU1RBVFVTLkNSRUFURURcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgX3RoaXMuc2FuZGJveGVzTGlzdC5zYW5kYm94W3J1bnRpbWVQcm90b1N0dWJVUkxdID0gc2FuZGJveDtcclxuXHJcbiAgICAgICAgICAvL1NldHVwIFAyUCBSZXF1ZXN0ZXIgcGF0aCBpbnRvIE1OXHJcblxyXG4gICAgICAgICAgbGV0IG1zZyA9IHtcclxuICAgICAgICAgICAgdHlwZTogJ3N1YnNjcmliZScsXHJcbiAgICAgICAgICAgIGZyb206IF90aGlzLnJlZ2lzdHJ5VVJMLFxyXG4gICAgICAgICAgICB0bzogJ2RvbWFpbjovL21zZy1ub2RlLicgKyBfdGhpcy5fZG9tYWluICsgJy9zbScsXHJcbiAgICAgICAgICAgIGJvZHk6IHtcclxuICAgICAgICAgICAgICBzdWJzY3JpYmU6IFtydW50aW1lUHJvdG9TdHViVVJMXSxcclxuICAgICAgICAgICAgICBzb3VyY2U6IF90aGlzLnJlZ2lzdHJ5VVJMXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobXNnLCAocmVwbHkpID0+IHtcclxuICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IC0gcmVnaXN0ZXIgU3R1Yl0gcDJwUmVxdWVzdGVyIHBhdGggc2V0dXA6ICcsIHJlcGx5KTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHJlc29sdmUoX3RoaXMucDJwUmVxdWVzdGVyU3R1YltzdHViSURdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1tSZWdpc3RyeSAtIHJlZ2lzdGVyU3R1YiAtIE5vcm1hbCBTdHViXSBkZXNjcmlwdG9yJywgZGVzY3JpcHRvcik7XHJcblxyXG4gICAgICAgIGlmICggIXR5cGVvZihkZXNjcmlwdG9yKSA9PT0gJ3N0cmluZycgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgnX2ludGVyd29ya2luZycpICYmIGRlc2NyaXB0b3IuX2ludGVyd29ya2luZykge1xyXG4gICAgICAgICAgcnVudGltZVByb3RvU3R1YlVSTCA9ICdydW50aW1lOi8vJyArIHN0dWJJRCArICcvcHJvdG9zdHViLycgKyAnc2NoZW1lMSc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJ1bnRpbWVQcm90b1N0dWJVUkwgPSAncnVudGltZTovLycgKyBzdHViSUQgKyAnL3Byb3Rvc3R1Yi8nICsgZ2VuZXJhdGVHVUlEKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5IC0gcmVnaXN0ZXJTdHViIC0gTm9ybWFsIFN0dWJdIC0gJywgc3R1YklEKTtcclxuXHJcbiAgICAgICAgLy8gVE9ETzogT3B0aW1pemUgdGhpc1xyXG4gICAgICAgIF90aGlzLnByb3Rvc3R1YnNMaXN0W3N0dWJJRF0gPSB7XHJcbiAgICAgICAgICB1cmw6IHJ1bnRpbWVQcm90b1N0dWJVUkwsXHJcbiAgICAgICAgICBzdGF0dXM6IFNUQVRVUy5ERVBMT1lJTkdcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAoZGVzY3JpcHRvclVSTCkge1xyXG4gICAgICAgICAgX3RoaXMucHJvdG9zdHVic0xpc3Rbc3R1YklEXS5kZXNjcmlwdG9yVVJMID0gZGVzY3JpcHRvclVSTDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChfc3R1YkRlc2NyaXB0b3IgJiYgKF9zdHViRGVzY3JpcHRvci5pbnRlcndvcmtpbmcpKSB7XHJcbiAgICAgICAgICBfdGhpcy5wcm90b3N0dWJzTGlzdFtzdHViSURdLmludGVyd29ya2luZyA9IF9zdHViRGVzY3JpcHRvci5pbnRlcndvcmtpbmc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBfdGhpcy5zYW5kYm94ZXNMaXN0LnNhbmRib3hbcnVudGltZVByb3RvU3R1YlVSTF0gPSBzYW5kYm94O1xyXG5cclxuICAgICAgICByZXNvbHZlKF90aGlzLnByb3Rvc3R1YnNMaXN0W3N0dWJJRF0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyByZXNvbHZlKHJ1bnRpbWVQcm90b1N0dWJVUkwpO1xyXG5cclxuICAgICAgX3RoaXMuX21lc3NhZ2VCdXMuYWRkTGlzdGVuZXIocnVudGltZVByb3RvU3R1YlVSTCArICcvc3RhdHVzJywgKG1zZykgPT4ge1xyXG4gICAgICAgIF90aGlzLl9vblByb3Rvc3R1YlN0YXR1c0V2ZW50KG1zZyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogVG8gUHJvY2VzcyBzdGF0dXMgZXZlbnRzIGZpcmVkIGJ5IHByb3Rvc3R1YnNcclxuICAqIEBwYXJhbSAge01lc3NhZ2V9ICAgbWVzc2FnZSAgICAgRXZlbnQgTWVzc2FnZVxyXG4gICovXHJcblxyXG4gIF9vblByb3Rvc3R1YlN0YXR1c0V2ZW50KG1zZykge1xyXG5cclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IG9uUHJvdG9zdHViU3RhdHVzRXZlbnRdOiAnLCBtc2cpO1xyXG5cclxuICAgIGxldCBydW50aW1lUHJvdG9TdHViVVJMID0gbXNnLmZyb207XHJcblxyXG4gICAgaWYgKCFtc2cudG8uaW5jbHVkZXMoJy9zdGF0dXMnKSkge1xyXG4gICAgICBsb2cuZXJyb3IoJ1tSZWdpc3RyeSBvblByb3Rvc3R1YlN0YXR1c0V2ZW50XSBOb3QgU3RhdHVzIEV2ZW50OiAnLCBtc2cpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcHJvY2VzcyBzdGF0dXMgZXZlbnRzIGZyb20gbWVzc2FnZSBub2RlIHByb3Rvc3R1YnNcclxuXHJcbiAgICBpZiAocnVudGltZVByb3RvU3R1YlVSTC5pbmNsdWRlcygnL3Byb3Rvc3R1Yi8nKSkge1xyXG5cclxuICAgIC8vIFRPRE86IHVuY29tbWVudCBiZWxvdyB3aGVuIHByb3Rvc3R1YnMgYXJlIHVwZGF0ZWQgd2l0aCBuZXcgc3RhdHVzIHZhbHVlIFwibGl2ZVwiXHJcbiAgICAgIE9iamVjdC5rZXlzKF90aGlzLnByb3Rvc3R1YnNMaXN0KS5maWx0ZXIoKGtleSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBfdGhpcy5wcm90b3N0dWJzTGlzdFtrZXldLnVybCA9PT0gcnVudGltZVByb3RvU3R1YlVSTDtcclxuICAgICAgfSkubWFwKChrZXkpID0+IHtcclxuICAgICAgICBfdGhpcy5wcm90b3N0dWJzTGlzdFtrZXldLnN0YXR1cyA9IG1zZy5ib2R5LnZhbHVlO1xyXG5cclxuICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgLSBvblByb3Rvc3R1YlN0YXR1c0V2ZW50XSAtIFByb3Rvc3R1YiBzdGF0dXM6ICcsIF90aGlzLnByb3Rvc3R1YnNMaXN0W2tleV0pO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7IC8vIHByb2Nlc3Mgc3RhdHVzIGV2ZW50cyBmcm9tIHAycCBjb25uZWN0aW9uc1xyXG5cclxuICAgICAgaWYgKG1zZy5ib2R5LnJlc291cmNlKSB7XHJcbiAgICAgICAgbGV0IHJlbW90ZVJ1bnRpbWVVUkwgPSBtc2cuYm9keS5yZXNvdXJjZTtcclxuXHJcbiAgICAgICAgaWYgKF90aGlzLnAycENvbm5lY3Rpb25MaXN0W3JlbW90ZVJ1bnRpbWVVUkxdKSB7XHJcbiAgICAgICAgICBfdGhpcy5wMnBDb25uZWN0aW9uTGlzdFtyZW1vdGVSdW50aW1lVVJMXS5zdGF0dXMgPSAgbXNnLmJvZHkudmFsdWU7XHJcbiAgICAgICAgICBfdGhpcy5wMnBDb25uZWN0aW9uTGlzdFtyZW1vdGVSdW50aW1lVVJMXS51cmwgPSAgcnVudGltZVByb3RvU3R1YlVSTDtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIGxldCAgcDJwQ29ubmVjdGlvbiA9IHtcclxuICAgICAgICAgICAgc3RhdHVzOiBtc2cuYm9keS52YWx1ZSxcclxuICAgICAgICAgICAgdXJsOiBydW50aW1lUHJvdG9TdHViVVJMXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIF90aGlzLnAycENvbm5lY3Rpb25MaXN0W3JlbW90ZVJ1bnRpbWVVUkxdID0gIHAycENvbm5lY3Rpb247XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgLSBvblByb3Rvc3R1YlN0YXR1c0V2ZW50XSAtIFAyUENvbm5lY3Rpb24gc3RhdHVzOiAnLCBfdGhpcy5wMnBDb25uZWN0aW9uTGlzdFtyZW1vdGVSdW50aW1lVVJMXSk7XHJcblxyXG4gICAgICAgIC8vIFVwZGF0ZSBQMlAgUmVxdWVzdGVyIHByb3Rvc3R1YiBpZiBpdCBpcyBjb21pbmcgZnJvbSB0aGVyZVxyXG4gICAgICAgIGlmIChydW50aW1lUHJvdG9TdHViVVJMLmluY2x1ZGVzKCcvcDJwcmVxdWVzdGVyLycpKSB7XHJcbiAgICAgICAgICBfdGhpcy5wMnBSZXF1ZXN0ZXJTdHViW3JlbW90ZVJ1bnRpbWVVUkxdLnN0YXR1cyA9IG1zZy5ib2R5LnZhbHVlO1xyXG5cclxuICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSAtIG9uUHJvdG9zdHViU3RhdHVzRXZlbnRdIC0gUDJQIFJlcXVlc3RlciBzdGF0dXM6ICcsIF90aGlzLnAycFJlcXVlc3RlclN0dWJbcmVtb3RlUnVudGltZVVSTF0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBpZiBmcm9tIFAyUEhhbmRsZXIgd2l0aCBzdGF0dXMgZGlzY29uZW5jdGVkLCBsZXRzIHJlbW92ZSBmcm9tIHAycENvbm5lY3Rpb25MaXN0XHJcbiAgICAgICAgICBpZiAobXNnLmJvZHkudmFsdWUgPT09ICdkaXNjb25uZWN0ZWQnKSBkZWxldGUgX3RoaXMucDJwQ29ubmVjdGlvbkxpc3RbcmVtb3RlUnVudGltZVVSTF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAocnVudGltZVByb3RvU3R1YlVSTC5pbmNsdWRlcygnL3AycHJlcXVlc3Rlci8nKSkge1xyXG4gICAgICAgICAgLy8gSXQgaXMgYW4gZXZlbnQgZnJvbSBQMlAgUmVxdWVzdGVyIHdpdGhvdXQgbWFuZGF0b3J5IFwicmVzb3VyY2VcIiBmaWVsZFxyXG4gICAgICAgICAgbG9nLmVycm9yKCdbUmVnaXN0cnkgb25Qcm90b3N0dWJTdGF0dXNFdmVudF0gcmVzb3VyY2UgbWlzc2luZzogJywgbXNnKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gSXQgaXMgYW4gZXZlbnQgZnJvbSBQMlAgSGFuZGxlclxyXG4gICAgICAgICAgX3RoaXMucDJwSGFuZGxlclN0dWJbX3RoaXMucnVudGltZVVSTF0uc3RhdHVzID0gbXNnLmJvZHkudmFsdWU7XHJcblxyXG4gICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IC0gb25Qcm90b3N0dWJTdGF0dXNFdmVudF0gLSBQMlBIYW5kbGVyIFN0dWIgc3RhdHVzOiAnLCBfdGhpcy5wMnBIYW5kbGVyU3R1YltfdGhpcy5ydW50aW1lVVJMXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogVG8gdW5yZWdpc3RlciBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBwcm90b2NvbCBzdHViXHJcbiAgKiBAcGFyYW0gIHtIeXBlcnR5UnVudGltZVVSTH0gICBIeXBlcnR5UnVudGltZVVSTCAgICAgaHlwZXJ0eVJ1bnRpbWVVUkxcclxuICAqL1xyXG4gIHVucmVnaXN0ZXJTdHViKGh5cGVydHlSdW50aW1lVVJMKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIGlmIChfdGhpcy5wcm90b3N0dWJzTGlzdC5oYXNPd25Qcm9wZXJ0eShoeXBlcnR5UnVudGltZVVSTCkpIHtcclxuICAgICAgICBkZWxldGUgX3RoaXMucHJvdG9zdHVic0xpc3RbaHlwZXJ0eVJ1bnRpbWVVUkxdO1xyXG4gICAgICAgIHJlc29sdmUoJ1Byb3Rvc3R1YlVSTCByZW1vdmVkJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVqZWN0KCdFcnJvciBvbiB1bnJlZ2lzdGVyU3R1YjogSHlwZXJ0eSBub3QgZm91bmQnKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUbyByZWdpc3RlciBhIG5ldyBJZGVudGl0eSBQcm92aWRlciBwcm94eSBpbiB0aGUgcnVudGltZSBpbmNsdWRpbmcgYXMgaW5wdXQgcGFyYW1ldGVycyB0aGUgZnVuY3Rpb24gdG8gcG9zdE1lc3NhZ2UsIHRoZSBEb21haW5VUkwgdGhhdCBpcyBjb25uZWN0ZWQgd2l0aCB0aGUgc3R1Yiwgd2hpY2ggcmV0dXJucyB0aGUgUnVudGltZVVSTCBhbGxvY2F0ZWQgdG8gdGhlIG5ldyBQcm90b2NvbFN0dWIuXHJcbiAgICogQHBhcmFtIHtTYW5kYm94fSAgICAgICAgU2FuZGJveFxyXG4gICAqIEBwYXJhbSAge0RvbWFpblVSTH0gICAgIERvbWFpblVSTCBzZXJ2aWNlIHByb3ZpZGVyIGRvbWFpblxyXG4gICAqIEByZXR1cm4ge1J1bnRpbWVJZHBQcm94eVVSTH1cclxuICAgKi9cclxuICByZWdpc3RlcklkcFByb3h5KHNhbmRib3gsIGRvbWFpblVSTCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XHJcblxyXG4gICAgICBsZXQgaWRwUHJveHlTdHViVVJMO1xyXG5cclxuICAgICAgLy9jaGVjayBpZiBtZXNzYWdlQnVzIGlzIHJlZ2lzdGVyZWQgaW4gcmVnaXN0cnkgb3Igbm90XHJcbiAgICAgIGlmIChfdGhpcy5fbWVzc2FnZUJ1cyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmVqZWN0KCdNZXNzYWdlQnVzIG5vdCBmb3VuZCBvbiByZWdpc3RlclN0dWInKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWRwUHJveHlTdHViVVJMID0gJ2RvbWFpbi1pZHA6Ly8nICsgZG9tYWluVVJMICsgJy9zdHViLycgKyBnZW5lcmF0ZUdVSUQoKTtcclxuXHJcbiAgICAgIC8vIFRPRE86IE9wdGltaXplIHRoaXNcclxuICAgICAgX3RoaXMuaWRwUHJveHlMaXN0W2RvbWFpblVSTF0gPSB7XHJcbiAgICAgICAgdXJsOiBpZHBQcm94eVN0dWJVUkwsXHJcbiAgICAgICAgc3RhdHVzOiBTVEFUVVMuREVQTE9ZSU5HXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBfdGhpcy5zYW5kYm94ZXNMaXN0LnNhbmRib3hbaWRwUHJveHlTdHViVVJMXSA9IHNhbmRib3g7XHJcblxyXG4gICAgICAvLyBzYW5kYm94LmFkZExpc3RlbmVyKCcqJywgZnVuY3Rpb24obXNnKSB7XHJcbiAgICAgIC8vICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobXNnKTtcclxuICAgICAgLy8gfSk7XHJcblxyXG4gICAgICByZXNvbHZlKGlkcFByb3h5U3R1YlVSTCk7XHJcblxyXG4gICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5hZGRMaXN0ZW5lcihpZHBQcm94eVN0dWJVUkwgKyAnL3N0YXR1cycsIChtc2cpID0+IHtcclxuICAgICAgICBfdGhpcy5fb25JZHBQcm94eVN0YXR1c0V2ZW50KG1zZyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFRvIFByb2Nlc3Mgc3RhdHVzIGV2ZW50cyBmaXJlZCBieSBJZHAgUHJveGllc1xyXG4gICogQHBhcmFtICB7TWVzc2FnZX0gICBtZXNzYWdlICAgICBFdmVudCBNZXNzYWdlXHJcbiAgKi9cclxuXHJcbiAgX29uSWRwUHJveHlTdGF0dXNFdmVudChtc2cpIHtcclxuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSBvbklkcFByb3h5U3RhdHVzRXZlbnRdOiAnLCBtc2cpO1xyXG5cclxuICAgIGxldCBpZHBQcm94eVVSTCA9IG1zZy5mcm9tO1xyXG5cclxuICAgIGlmICghbXNnLnRvLmluY2x1ZGVzKCcvc3RhdHVzJykpIHtcclxuICAgICAgbG9nLmVycm9yKCdbUmVnaXN0cnkgb25JZHBQcm94eVN0YXR1c0V2ZW50XSBOb3QgU3RhdHVzIEV2ZW50OiAnLCBtc2cpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgT2JqZWN0LmtleXMoX3RoaXMuaWRwUHJveHlMaXN0KS5maWx0ZXIoKGtleSkgPT4ge1xyXG4gICAgICByZXR1cm4gX3RoaXMuaWRwUHJveHlMaXN0W2tleV0udXJsID09PSBpZHBQcm94eVVSTDtcclxuICAgIH0pLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgIF90aGlzLmlkcFByb3h5TGlzdFtrZXldLnN0YXR1cyA9IG1zZy5ib2R5LnZhbHVlO1xyXG5cclxuICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IC0gb25JZHBQcm94eVN0YXR1c0V2ZW50XSAtIElkcCBQcm94eSBzdGF0dXM6ICcsIF90aGlzLmlkcFByb3h5TGlzdFtrZXldKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogVG8gZGlzY292ZXIgaWRwUHJveHkgc3R1YnMgYXZhaWxhYmxlIGluIHRoZSBydW50aW1lIGZvciBhIGNlcnRhaW4gZG9tYWluLiBJZiBhdmFpbGFibGUsIGl0IHJldHVybnMgdGhlIHJ1bnRpbWUgdXJsIGZvciB0aGUgaWRwUHJveHkgc3R1YiB0aGF0IGNvbm5lY3RzIHRvIHRoZSByZXF1ZXN0ZWQgZG9tYWluLiBSZXF1aXJlZCBieSB0aGUgcnVudGltZSBCVVMgdG8gcm91dGUgbWVzc2FnZXMgdG8gcmVtb3RlIHNlcnZlcnMgb3IgcGVlcnNcclxuICAqIEBwYXJhbSAge0RvbWFpblVSTH0gICAgICAgICAgIERvbWFpblVSTCAgICAgICAgICAgIHVybFxyXG4gICogQHJldHVybiB7UnVudGltZVVSTH0gICAgICAgICAgIFJ1bnRpbWVVUkwgICAgICAgICBpZHBQcm94eVVybFxyXG4gICovXHJcbiAgZGlzY292ZXJJZHBQcm94eSh1cmwpIHtcclxuICAgIGlmICghdXJsKSB0aHJvdyBuZXcgRXJyb3IoJ1BhcmFtZXRlciB1cmwgbmVlZGVkJyk7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBkaXZpZGVkVVJMID0gZGl2aWRlVVJMKHVybCk7XHJcbiAgICBsZXQgZG9tYWluVVJMID0gZGl2aWRlZFVSTC5kb21haW47XHJcblxyXG4gICAgaWYgKF90aGlzLmlkcFByb3h5TGlzdC5oYXNPd25Qcm9wZXJ0eShkb21haW5VUkwpICYmIF90aGlzLmlkcFByb3h5TGlzdFtkb21haW5VUkxdLnN0YXR1cyA9PT0gU1RBVFVTLkxJVkUpIHtcclxuICAgICAgcmV0dXJuIChfdGhpcy5pZHBQcm94eUxpc3RbZG9tYWluVVJMXSk7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgX3RoaXMuaWRwUHJveHlMaXN0W2RvbWFpblVSTF0gPSB7XHJcbiAgICAgICAgc3RhdHVzOiBTVEFUVVMuUFJPR1JFU1NcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignW1JlZ2lzdHJ5IC0gZGlzY292ZXJJZHBQcm94eSBdIElkcCBQcm94eSBOb3QgRm91bmQuIENyZWF0aW5nIG9uZScpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFRvIHJlZ2lzdGVyIGEgbmV3IFBvbGljeSBFbmZvcmNlciBpbiB0aGUgcnVudGltZSBpbmNsdWRpbmcgYXMgaW5wdXQgcGFyYW1ldGVycyB0aGUgZnVuY3Rpb24gdG8gcG9zdE1lc3NhZ2UsIHRoZSBIeXBlcnR5VVJMIGFzc29jaWF0ZWQgd2l0aCB0aGUgUEVQLCB3aGljaCByZXR1cm5zIHRoZSBSdW50aW1lVVJMIGFsbG9jYXRlZCB0byB0aGUgbmV3IFBvbGljeSBFbmZvcmNlciBjb21wb25lbnQuXHJcbiAgKiBAcGFyYW0gIHtNZXNzYWdlLk1lc3NhZ2V9IHBvc3RNZXNzYWdlIHBvc3RNZXNzYWdlXHJcbiAgKiBAcGFyYW0gIHtIeXBlcnR5VVJMfSAgICAgICAgICBIeXBlcnR5VVJMICAgICAgICAgICAgaHlwZXJ0eVxyXG4gICogQHJldHVybiB7SHlwZXJ0eVJ1bnRpbWVVUkx9ICAgSHlwZXJ0eVJ1bnRpbWVVUkxcclxuICAqL1xyXG4gIHJlZ2lzdGVyUEVQKHBvc3RNZXNzYWdlLCBoeXBlcnR5KSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XHJcbiAgICAgIC8vVE9ETyBjaGVjayB3aGF0IHBhcmFtZXRlciBpbiB0aGUgcG9zdE1lc3NhZ2UgdGhlIHBlcCBpcy5cclxuICAgICAgX3RoaXMucGVwTGlzdFtoeXBlcnR5XSA9IHBvc3RNZXNzYWdlO1xyXG4gICAgICByZXNvbHZlKCdQRVAgcmVnaXN0ZXJlZCB3aXRoIHN1Y2Nlc3MnKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogVG8gdW5yZWdpc3RlciBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBwcm90b2NvbCBzdHViXHJcbiAgKiBAcGFyYW0gIHtIeXBlcnR5UnVudGltZVVSTH0gICBIeXBlcnR5UnVudGltZVVSTCAgICAgSHlwZXJ0eVJ1bnRpbWVVUkxcclxuICAqL1xyXG4gIHVucmVnaXN0ZXJQRVAoSHlwZXJ0eVJ1bnRpbWVVUkwpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG5cclxuICAgICAgbGV0IHJlc3VsdCA9IF90aGlzLnBlcExpc3RbSHlwZXJ0eVJ1bnRpbWVVUkxdO1xyXG5cclxuICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmVqZWN0KCdQZXAgTm90IGZvdW5kLicpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUoJ1BFUCBzdWNjZXNzZnVsbHkgcmVtb3ZlZC4nKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBUbyBkaXNjb3ZlciBzYW5kYm94ZXMgYXZhaWxhYmxlIGluIHRoZSBydW50aW1lIGZvciBhIGNlcnRhaW4gZG9tYWluIGFuZCBhIGNlcnRhaW4gc2V0IG9mIGNhcGFiaWxpdGllcy4gUmVxdWlyZWQgYnkgdGhlIHJ1bnRpbWUgVUEgdG8gYXZvaWQgbW9yZSB0aGFuIG9uZSBzYW5kYm94IGZvciB0aGUgc2FtZSBkb21haW4uXHJcbiAgKiBAcGFyYW0gIHtEb21haW5VUkx9IERvbWFpblVSTCB1cmxcclxuICAqIEByZXR1cm4ge1J1bnRpbWVTYW5kYm94fSAgICAgICAgICAgUnVudGltZVNhbmRib3hcclxuICAqL1xyXG4gIGdldFNhbmRib3godXJsLCBjb25zdHJhaW50cykge1xyXG4gICAgaWYgKCF1cmwpIHRocm93IG5ldyBFcnJvcignUGFyYW1ldGVyIHVybCBuZWVkZWQnKTtcclxuXHJcbiAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgZ2V0U2FuZGJveF0gZ2V0U2FuZGJveCBmb3I6ICcsIHVybCwgJyBhbmQgY2FwYWJpbGl0aWVzOiAnLCBjb25zdHJhaW50cyk7XHJcblxyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIGxldCByZXF1ZXN0O1xyXG5cclxuICAgICAgLy9maXJzdCB0cnkgdG8gZmluZCB0aGUgdXJsIGluIHRoZSBhcHBTYW5kYm94IGxpc3RcclxuICAgICAgcmVxdWVzdCA9IF90aGlzLnNhbmRib3hlc0xpc3QuYXBwU2FuZGJveFt1cmxdO1xyXG5cclxuICAgICAgLy9pZiBubyBhcHBTYW5kYm94IHdhcyBmb3VuZCwgdHJ5IHRvIHNlYXJjaCBpbiB0aGUgbm9ybWFsIHNhbmRib3hlcyBsaXN0XHJcbiAgICAgIGlmICghcmVxdWVzdCkge1xyXG4gICAgICAgIHJlcXVlc3QgPSBfdGhpcy5zYW5kYm94ZXNMaXN0LnNhbmRib3hbdXJsXTtcclxuXHJcbiAgICAgICAgaWYgKCFyZXF1ZXN0KSB7XHJcblxyXG4gICAgICAgICAgbGV0IGRvbWFpbjtcclxuXHJcbiAgICAgICAgICBpZiAodXJsLmluY2x1ZGVzKCc6Ly8nKSkge1xyXG4gICAgICAgICAgICBkb21haW4gPSBkaXZpZGVVUkwodXJsKS5kb21haW47XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkb21haW4gPSB1cmw7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gc2VhcmNoIGluIHRoZSBzYW5kYm94ZXMgbGlzdCBmb3IgYSBlbnRyeSBjb250YWluaW5nIHRoZSBkb21haW4gZ2l2ZW5cclxuICAgICAgICAgIGZvciAobGV0IHNhbmRib3ggaW4gX3RoaXMuc2FuZGJveGVzTGlzdC5zYW5kYm94KSB7XHJcbiAgICAgICAgICAgIC8vdG9kbzogdW5jb21tZW50IHNhbmRib3ggY29uc3RyYWludHMgbWF0Y2ggY29uZGl0aW9uIHdpdGggcnVudGltZSBzaGFyaW5nXHJcbiAgICAgICAgICAgIGlmIChzYW5kYm94LmluY2x1ZGVzKGRvbWFpbikgJiYgX3RoaXMuc2FuZGJveGVzTGlzdC5zYW5kYm94W3NhbmRib3hdLm1hdGNoZXMoY29uc3RyYWludHMpKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IF90aGlzLnNhbmRib3hlc0xpc3Quc2FuZGJveFtzYW5kYm94XTtcclxuICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IE9iamVjdC5rZXlzKGNvbnN0cmFpbnRzKS5maWx0ZXIoY29uc3RyYWludCA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKGNvbnN0cmFpbnQgPT09ICdicm93c2VyJyAmJiBjdXJyZW50LnR5cGUgPT09IFNhbmRib3hUeXBlLk5PUk1BTCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgIChjb25zdHJhaW50ID09PSAnd2luZG93U2FuYm94JyAmJiBjdXJyZW50LnR5cGUgPT09IFNhbmRib3hUeXBlLldJTkRPVyk7XHJcblxyXG4gICAgICAgICAgICAgIH0pLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChtYXRjaCkgeyByZXF1ZXN0ID0gY3VycmVudDsgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXJlcXVlc3QpIHtcclxuICAgICAgICByZWplY3QoJ25vIHNhbmRib3ggZm91bmQgZm9yOiAnICsgdXJsKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKHJlcXVlc3QpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZXNvbHZlTm9ybWFsU3R1Yih1cmwpIHtcclxuICAgIC8vIGxvZy5sb2coJ3Jlc29sdmVOb3JtYWxTdHViICcgKyB1cmwpO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgLy9zcGxpdCB0aGUgdXJsIHRvIGZpbmQgdGhlIGRvbWFpblVSTC4gZGVhbHMgd2l0aCB0aGUgdXJsIGZvciBleGFtcGxlIGFzOlxyXG4gICAgICAvL1wiaHlwZXJ0eS1ydW50aW1lOi8vc3AxL3Byb3Rvc3R1Yi8xMjNcIixcclxuICAgICAgbGV0IGRpdmlkZWRVUkwgPSBkaXZpZGVVUkwodXJsKTtcclxuICAgICAgbGV0IGRvbWFpblVybCA9IGRpdmlkZWRVUkwuZG9tYWluO1xyXG4gICAgICBsZXQgdHlwZSA9IGRpdmlkZWRVUkwudHlwZTtcclxuXHJcbiAgICAgIGlmICh1cmwuaW5jbHVkZXMoX3RoaXMucnVudGltZVVSTCkpIHtcclxuICAgICAgICBsb2cuZXJyb3IoJ1tSZWdpc3RyeSAtIHJlc29sdmVdIFVSTCB0byBiZSByZXNvbHZlZCBzaG91bGQgaGF2ZSBsaXN0ZW5lcnMgJywgdXJsKTtcclxuICAgICAgICByZWplY3QoJ1tSZWdpc3RyeSAtIHJlc29sdmVdIFVSTCB0byBiZSByZXNvbHZlZCBzaG91bGQgaGF2ZSBsaXN0ZW5lcnMgJywgdXJsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gcmVzb2x2ZSB0aGUgZG9tYWluIHByb3Rvc3R1YiBpbiBjYXNlIG9mIGEgbWVzc2FnZSB0byBnbG9iYWwgcmVnaXN0cnlcclxuICAgICAgaWYgKHVybC5pbmNsdWRlcygnZ2xvYmFsOi8vcmVnaXN0cnknKSkge1xyXG4gICAgICAgIGRvbWFpblVybCA9IF90aGlzLl9kb21haW47XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCFkb21haW5VcmwuaW5kZXhPZignbXNnLW5vZGUuJykgfHwgIWRvbWFpblVybC5pbmRleE9mKCdyZWdpc3RyeS4nKSkge1xyXG4gICAgICAgICAgZG9tYWluVXJsID0gZG9tYWluVXJsLnN1YnN0cmluZyhkb21haW5VcmwuaW5kZXhPZignLicpICsgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBfdGhpcy5pc0xlZ2FjeSh1cmwpLnRoZW4oKGlzTGVnYWN5KSA9PiB7XHJcblxyXG4gICAgICAgIC8vIGlmIGxlZ2FjeSBpdCBzaG91bGQgcmVzb2x2ZSBmb3IgPHByb3RvY29sPi48ZG9tYWluPlxyXG4gICAgICAgIGlmIChpc0xlZ2FjeSAmJiB0eXBlICE9PSAnZG9tYWluLWlkcCcpIHtcclxuICAgICAgICAgIGRvbWFpblVybCA9IHR5cGUgKyAnLicgKyBnZXRVc2VySWRlbnRpdHlEb21haW4odXJsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxvZy5pbmZvKCdbUmVnaXN0cnkucmVzb2x2ZV0gZG9tYWluVXJsOicsIGRvbWFpblVybCk7XHJcblxyXG4gICAgICAgIGxldCByZWdpc3RyZWRDb21wb25lbnQ7XHJcblxyXG4gICAgICAgIGlmICh0eXBlID09PSAnZG9tYWluLWlkcCcpIHtcclxuICAgICAgICAgIHJlZ2lzdHJlZENvbXBvbmVudCAgPSBfdGhpcy5pZHBQcm94eUxpc3QuaGFzT3duUHJvcGVydHkoZG9tYWluVXJsKSA/IF90aGlzLmlkcFByb3h5TGlzdFtkb21haW5VcmxdIDogZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlZ2lzdHJlZENvbXBvbmVudCAgPSBfdGhpcy5wcm90b3N0dWJzTGlzdC5oYXNPd25Qcm9wZXJ0eShkb21haW5VcmwpID8gX3RoaXMucHJvdG9zdHVic0xpc3RbZG9tYWluVXJsXSA6IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbG9nLmluZm8oJ1tSZWdpc3RyeS5yZXNvbHZlXSByZWdpc3RyZWQ6JywgcmVnaXN0cmVkQ29tcG9uZW50KTtcclxuXHJcbiAgICAgICAgLy8gVE9ETyBzaW5jZSB0aGUgcHJvdG9zdHVicyBoYXZlIG90aGVyIHN0YXRlcyB0aGlzIHNob3VsZCBiZSByZXZpc2VkLCBiZWNhdXNlIHRoZSBzdGF0dXMgY291bGQgY2hhbmdlIGZyb20gREVQTE9ZRUQgdG8gTElWRVxyXG4gICAgICAgIC8vIFRPRE8gYW5kIHRoaXMgdmFsaWRhdGlvbiB3aWxsIHRyaWdnZXIgYSBuZXcgbG9hZCBvZiBJRFBQcm94eSBvciBQcm90b3N0dWI7XHJcbiAgICAgICAgaWYgKHJlZ2lzdHJlZENvbXBvbmVudCAmJiByZWdpc3RyZWRDb21wb25lbnQuaGFzT3duUHJvcGVydHkoJ3N0YXR1cycpICYmXHJcbiAgICAgICAgIChyZWdpc3RyZWRDb21wb25lbnQuc3RhdHVzID09PSBTVEFUVVMuREVQTE9ZRUQgfHwgcmVnaXN0cmVkQ29tcG9uZW50LnN0YXR1cyA9PT0gU1RBVFVTLkNSRUFURUQgfHxcclxuICAgICAgICAgIHJlZ2lzdHJlZENvbXBvbmVudC5zdGF0dXMgPT09IFNUQVRVUy5MSVZFIHx8IHJlZ2lzdHJlZENvbXBvbmVudC5zdGF0dXMgPT09IFNUQVRVUy5ESVNDT05ORUNURUQpKSB7XHJcbiAgICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5LnJlc29sdmVdIFJlc29sdmVkOiAnLCByZWdpc3RyZWRDb21wb25lbnQudXJsLCByZWdpc3RyZWRDb21wb25lbnQuc3RhdHVzKTtcclxuICAgICAgICAgIHJlc29sdmUocmVnaXN0cmVkQ29tcG9uZW50LnVybCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vdG9kbzogdXNlIHN3aXRjaC1jYXNlIHRvIHN1cHBvcnQgb3RoZXIgdHlwZXMgb2Ygc3R1YnNcclxuICAgICAgICAgIGlmICh0eXBlID09PSAnZG9tYWluLWlkcCcpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIFRoZSBJZFAgUHJveHkgZG9lcyBub3QgZXhpc3QsIGxldCdzIHByZXBhcmUgaXRzIGRlcGxveW1lbnQgYnkgd2F0Y2hpbmcgaXRzIHN0YXR1c1xyXG5cclxuICAgICAgICAgICAgX3RoaXMud2F0Y2hpbmdZb3Uub2JzZXJ2ZSgnaWRwUHJveHlMaXN0JywgKGNoYW5nZSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgLSByZXNvbHZlTm9ybWFsU3R1Yl0gaWRwUHJveHlMaXN0IGNoYW5nZWQgJyArIF90aGlzLmlkcFByb3h5TGlzdCk7XHJcblxyXG4gICAgICAgICAgICAgIGxldCBrZXlwYXRoID0gY2hhbmdlLmtleXBhdGg7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChrZXlwYXRoLmluY2x1ZGVzKCdzdGF0dXMnKSlcclxuICAgICAgICAgICAgICAgIGtleXBhdGggPSBrZXlwYXRoLnJlcGxhY2UoJy5zdGF0dXMnLCAnJyk7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChrZXlwYXRoID09PSBkb21haW5VcmwgJiYgY2hhbmdlLm5hbWUgPT09ICdzdGF0dXMnICYmIGNoYW5nZS5uZXdWYWx1ZSA9PT0gU1RBVFVTLkNSRUFURUQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSAtIHJlc29sdmVOb3JtYWxTdHViXSBpZHBQcm94eUxpc3QgaXMgbGl2ZSAnICsgX3RoaXMuaWRwUHJveHlMaXN0W2RvbWFpblVybF0pO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShfdGhpcy5pZHBQcm94eUxpc3RbZG9tYWluVXJsXS51cmwpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXJlZ2lzdHJlZENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMgcHJvY2VzcyB3aWxsIGxvYWQgdGhlIGlkcCBwcm94eSwgYmVjYXVzZSBpcyBub3QgeWV0IHJlZ2lzdGVyZWQ7XHJcbiAgICAgICAgICAgICAgbG9nLmluZm8oJ1tSZWdpc3RyeS5yZXNvbHZlTm9ybWFsU3R1Yl0gZGVwbG95IG5ldyBJRFBQcm94eTogJywgZG9tYWluVXJsKTtcclxuICAgICAgICAgICAgICBfdGhpcy5sb2FkZXIubG9hZElkcFByb3h5KGRvbWFpblVybCkudGhlbigoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgbG9nLmluZm8oJ1tSZWdpc3RyeS5yZXNvbHZlTm9ybWFsU3R1Yl0gSWRQIFByb3h5IGRlcGxveWVkOiAnLCBfdGhpcy5pZHBQcm94eUxpc3RbZG9tYWluVXJsXSk7XHJcblxyXG4gICAgICAgICAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcclxuICAgICAgICAgICAgICAgIGxvZy5lcnJvcignW1JlZ2lzdHJ5LnJlc29sdmVdIEVycm9yIHJlc29sdmluZyBMb2FkIElEUFByb3h5OiAnLCByZWFzb24pO1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaWRwUHJveHlMaXN0W2RvbWFpblVybF0uc3RhdHVzID0gJ2RlcGxveW1lbnQtZmFpbGVkJztcclxuICAgICAgICAgICAgICAgIHJlamVjdChyZWFzb24pO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAvLyBUaGUgcHJvdG9TdHViIGRvZXMgbm90IGV4aXN0LCBsZXQncyBwcmVwYXJlIGl0cyBkZXBsb3ltZW50IGJ5IHdhdGNoaW5nIGl0cyBzdGF0dXNcclxuXHJcbiAgICAgICAgICAgIF90aGlzLndhdGNoaW5nWW91Lm9ic2VydmUoJ3Byb3Rvc3R1YnNMaXN0JywgKGNoYW5nZSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgLSByZXNvbHZlTm9ybWFsU3R1Yl0gcHJvdG9zdHVic0xpc3QgY2hhbmdlZCAnICsgX3RoaXMucHJvdG9zdHVic0xpc3QpO1xyXG5cclxuICAgICAgICAgICAgICBsZXQga2V5cGF0aCA9IGNoYW5nZS5rZXlwYXRoO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoa2V5cGF0aC5pbmNsdWRlcygnc3RhdHVzJykpXHJcbiAgICAgICAgICAgICAgICBrZXlwYXRoID0ga2V5cGF0aC5yZXBsYWNlKCcuc3RhdHVzJywgJycpO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoa2V5cGF0aCA9PT0gZG9tYWluVXJsICYmIGNoYW5nZS5uYW1lID09PSAnc3RhdHVzJyAmJiBjaGFuZ2UubmV3VmFsdWUgPT09IFNUQVRVUy5DUkVBVEVEKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgLSByZXNvbHZlXSBwcm90b3N0dWIgaXMgbGl2ZSAnICsgX3RoaXMucHJvdG9zdHVic0xpc3RbZG9tYWluVXJsXSk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKF90aGlzLnByb3Rvc3R1YnNMaXN0W2RvbWFpblVybF0udXJsKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFyZWdpc3RyZWRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAvLyBsZXRzIGRlcGxveSB0aGUgcHJvdG9zdHViXHJcbiAgICAgICAgICAgICAgbG9nLmluZm8oJ1tSZWdpc3RyeS5yZXNvbHZlXSB0cmlnZ2VyIG5ldyBQcm90b2NvbFN0dWI6ICcsIGRvbWFpblVybCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMubG9hZGVyLmxvYWRTdHViKGRvbWFpblVybCkudGhlbigoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IC0gcmVzb2x2ZU5vcm1hbFN0dWJdIFN0dWIgZGVwbG95ZWQ6ICcsIF90aGlzLnByb3Rvc3R1YnNMaXN0W2RvbWFpblVybF0pO1xyXG4gICAgICAgICAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcclxuICAgICAgICAgICAgICAgIGxvZy5lcnJvcignW1JlZ2lzdHJ5LnJlc29sdmVOb3JtYWxTdHViXSBFcnJvciByZXNvbHZpbmcgTG9hZCBQcm90b2NvbFN0dWI6ICcsIHJlYXNvbik7XHJcbiAgICAgICAgICAgICAgICByZWplY3QocmVhc29uKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xyXG4gICAgICAgIGxvZy5lcnJvcignW1JlZ2lzdHJ5LnJlc29sdmVdIEVycm9yIHJlc29sdmluZyBpc2xlZ2FjeTogJywgcmVhc29uKTtcclxuICAgICAgICByZWplY3QocmVhc29uKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBUbyB2ZXJpZnkgaWYgc291cmNlIGlzIHZhbGlkIGFuZCB0byByZXNvbHZlIHRhcmdldCBydW50aW1lIHVybCBhZGRyZXNzIGlmIG5lZWRlZCAoZWcgcHJvdG9zdHViIHJ1bnRpbWUgdXJsIGluIGNhc2UgdGhlIG1lc3NhZ2UgaXMgdG8gYmUgZGlzcGF0Y2hlZCB0byBhIHJlbW90ZSBlbmRwb2ludCkuXHJcbiAgKiBAcGFyYW0gIHtVUkwuVVJMfSAgdXJsICAgICAgIHVybFxyXG4gICogQHJldHVybiB7UHJvbWlzZTxVUkwuVVJMPn0gICAgICAgICAgICAgICAgIFByb21pc2UgPFVSTC5VUkw+XHJcbiAgKi9cclxuICByZXNvbHZlKG1zZykge1xyXG4gICAgbG9nLmluZm8oJ1tSZWdpc3RyeSAtIFJlc29sdmVdIC0gICcsIG1zZyk7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICBsZXQgdXJsID0gbXNnLnRvID8gbXNnLnRvIDogbXNnO1xyXG5cclxuICAgICAgbGV0IHAycCA9IChtc2cuYm9keSAmJiBtc2cuYm9keS5wMnApID8gbXNnLmJvZHkucDJwIDogZmFsc2U7XHJcblxyXG4gICAgICAvLyBsb2cubG9nKCdQMlA6ICcsIHAycCwgdXJsKTtcclxuICAgICAgLy8gbG9nLmxvZygnUDJQIC0gcDJwSGFuZGxlclN0dWI6ICcsICFfdGhpcy5wMnBIYW5kbGVyU3R1YltfdGhpcy5ydW50aW1lVVJMXSwgX3RoaXMucDJwSGFuZGxlclN0dWIsIF90aGlzLnJ1bnRpbWVVUkwpO1xyXG4gICAgICAvLyBsb2cubG9nKCdQMlAgLSBpc0JhY2tlbmRTZXJ2aWNlVVJMOiAnLCBpc0JhY2tlbmRTZXJ2aWNlVVJMKHVybCksIGlzQmFja2VuZFNlcnZpY2VVUkwsIHVybCk7XHJcbiAgICAgIC8vIGxvZy5sb2coJ1AyUCAtIGluY2x1ZGVzIHJ1bnRpbWVVUkw6ICcsIHVybC5pbmNsdWRlcyhfdGhpcy5ydW50aW1lVVJMKSk7XHJcbiAgICAgIC8vIGxvZy5sb2coJ1AyUCAtIGluY2x1ZGVzIHAycGhhbmRsZXI6ICcsIHVybC5pbmNsdWRlcygnL3AycGhhbmRsZXIvJykpO1xyXG4gICAgICAvLyBsb2cubG9nKCdQMlAgLSBpbmNsdWRlcyBwMnByZXF1ZXN0ZXI6ICcsIHVybC5pbmNsdWRlcygnL3AycHJlcXVlc3Rlci8nKSk7XHJcblxyXG4gICAgICAvLyBTa2lwIHAycCBwcm9jZWR1cmUgd2hlbiBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBSdW50aW1lIG9yIGZvciBiYWNrZW5kIHNlcnZpY2VzXHJcblxyXG4gICAgICBpZiAoIV90aGlzLnAycEhhbmRsZXJTdHViW190aGlzLnJ1bnRpbWVVUkxdIHx8IGlzQmFja2VuZFNlcnZpY2VVUkwodXJsKSB8fCB1cmwuaW5jbHVkZXMoX3RoaXMucnVudGltZVVSTCkgfHwgdXJsLmluY2x1ZGVzKCcvcDJwaGFuZGxlci8nKSB8fCB1cmwuaW5jbHVkZXMoJy9wMnByZXF1ZXN0ZXIvJykpIHtcclxuXHJcbiAgICAgICAgbG9nLmluZm8oJ1tSZWdpc3RyeSAtIHJlc29sdmVdIC0gUmVzb2x2ZSBub3JtYWwgc3R1YjogJywgX3RoaXMucDJwSGFuZGxlclN0dWIsIF90aGlzLnJ1bnRpbWVVUkwsIGlzQmFja2VuZFNlcnZpY2VVUkwodXJsKSwgcDJwLCB1cmwpO1xyXG4gICAgICAgIF90aGlzLnJlc29sdmVOb3JtYWxTdHViKHVybCkudGhlbigocmV0dXJuVVJMKSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKHJldHVyblVSTCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5IC0gcmVzb2x2ZV0gLSBjaGVja1AyUDogJywgcDJwLCB1cmwsIF90aGlzLl9wMnBDb25uZWN0aW9uUmVzb2x2ZSk7XHJcbiAgICAgICAgX3RoaXMuX3AycENvbm5lY3Rpb25SZXNvbHZlLmNoZWNrUDJQKG1zZykudGhlbigocmVnaXN0ZXJlZFAyUCkgPT4ge1xyXG5cclxuICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSAtIHJlc29sdmVdIGZvdW5kIHJlZ2lzdGVyZWQgUDJQOiAnLCByZWdpc3RlcmVkUDJQKTtcclxuXHJcbiAgICAgICAgICBsZXQgcDJwQ29ubmVjdGlvbiA9IF90aGlzLnAycENvbm5lY3Rpb25MaXN0W3JlZ2lzdGVyZWRQMlAucnVudGltZV07XHJcblxyXG4gICAgICAgICAgaWYgKCFwMnBDb25uZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHAycENvbm5lY3Rpb24gPSByZWdpc3RlcmVkUDJQO1xyXG4gICAgICAgICAgICBfdGhpcy5wMnBDb25uZWN0aW9uTGlzdFtyZWdpc3RlcmVkUDJQLnJ1bnRpbWVdID0gcDJwQ29ubmVjdGlvbjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBzd2l0Y2ggKHAycENvbm5lY3Rpb24uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIGNhc2UgU1RBVFVTLkxJVkU6XHJcbiAgICAgICAgICAgICAgbXNnLmJvZHkucGVlciA9IHJlZ2lzdGVyZWRQMlAucnVudGltZTtcclxuICAgICAgICAgICAgICByZXNvbHZlKHAycENvbm5lY3Rpb24udXJsLCBtc2cpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFNUQVRVUy5DUkVBVEVEOiAvLyBwMnAgY29ubmVjdGlvbiBzZXR1cCBpcyBvbmdvaW5nLCB1c2UgTU4gU3R1YlxyXG4gICAgICAgICAgICBjYXNlIFNUQVRVUy5QUk9HUkVTUzpcclxuICAgICAgICAgICAgICBfdGhpcy5yZXNvbHZlTm9ybWFsU3R1Yih1cmwpLnRoZW4oKHJldHVyblVSTCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXR1cm5VUkwpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFNUQVRVUy5ESVNDT05ORUNURUQ6IC8vIHAycCBjb25uZWN0aW9uIHN0dWIgd2FzIGRpc2Nvbm5lY3RlZCwgbGV0J3MgYXNrIHRvIGNvbm5lY3QgYWdhaW5cclxuICAgICAgICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5IC0gUmVzb2x2ZV0gLSBwMnBDb25uZWN0aW9uIGlzIGRpc2Nvbm5lY3RlZCBsZXRzIHRyeSB0byByZWNvbm5lY3QnKTtcclxuICAgICAgICAgICAgICBfdGhpcy5fcDJwQ29ubmVjdGlvblJlc29sdmUucmVjb25uZWN0UDJQUmVxdWVzdGVyKHAycENvbm5lY3Rpb24pLnRoZW4oKHJldHVyblVSTCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IC0gUmVzb2x2ZV0gLSB3YXMgcmVjb25uZWN0ZWQgd2l0aCBwMnBSZXF1ZXN0ZXJTdHVidDogJywgcmV0dXJuVVJMKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocmV0dXJuVVJMKTtcclxuICAgICAgICAgICAgICB9LCAocmVhc29uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5IC0gUmVzb2x2ZV0gLSBSZWFzb246ICcsIHJlYXNvbik7XHJcblxyXG4gICAgICAgICAgICAgICAgX3RoaXMucmVzb2x2ZU5vcm1hbFN0dWIodXJsKS50aGVuKChyZXR1cm5VUkwpID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXR1cm5VUkwpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcblxyXG4gICAgICAgICAgICAgIGxvZy5pbmZvKCdbUmVnaXN0cnkgLSByZXNvbHZlXSAtIFAyUDogJywgcDJwKTtcclxuICAgICAgICAgICAgICBpZiAoIXAycCkgeyAvLyBubyBwMnAgY29ubmVjdGlvbiBleGlzdHMgYW5kIHRoZSBtZXNzYWdlIHNlbmRlciBkb2VzIG5vdCBhc2sgb25lLiBMZXRzIHVzZSB0aGUgTU4gU3R1YlxyXG4gICAgICAgICAgICAgICAgX3RoaXMucmVzb2x2ZU5vcm1hbFN0dWIodXJsKS50aGVuKChyZXR1cm5VUkwpID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXR1cm5VUkwpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5fc2V0dXBQMlBSZXF1ZXN0ZXIocmVnaXN0ZXJlZFAyUCkudGhlbigocmV0dXJuVVJMKSA9PiB7IC8vIG5vIHAycCBjb25uZWN0aW9uIGV4aXN0cyBidXQgdGhlIG1lc3NhZ2Ugc2VuZGVyIGlzIGFza2luZyBvbmUuIExldHMgdHJ5IHRvIHNldHVwIG9uZVxyXG4gICAgICAgICAgICAgICAgICByZXNvbHZlKHJldHVyblVSTCk7XHJcbiAgICAgICAgICAgICAgICB9LCAocmVhc29uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCdbUmVnaXN0cnkgLSBSZXNvbHZlXSAtIFJlYXNvbjogJywgcmVhc29uKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLnJlc29sdmVOb3JtYWxTdHViKHVybCkudGhlbigocmV0dXJuVVJMKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXR1cm5VUkwpO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCAocmVhc29uKSA9PiB7XHJcbiAgICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5IC0gUmVzb2x2ZV0gLSBSZWFzb246ICcsIHJlYXNvbik7XHJcblxyXG4gICAgICAgICAgX3RoaXMucmVzb2x2ZU5vcm1hbFN0dWIodXJsKS50aGVuKChyZXR1cm5VUkwpID0+IHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXR1cm5VUkwpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIF9zZXR1cFAyUFJlcXVlc3RlcihpbnB1dCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBsb2cubG9nKCdbUmVnaXN0cnkuX3NldHVwUDJQQ29ubmVjdGlvbl0gbG9hZFN0dWIgd2l0aCBwMnBSZXF1ZXN0ZXI6ICcsIGlucHV0KTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgbGV0IHJlbW90ZVJ1bnRpbWUgPSBpbnB1dC5ydW50aW1lO1xyXG5cclxuICAgICAgbGV0IHAycENvbmZpZyA9IHsgcmVtb3RlUnVudGltZVVSTDogcmVtb3RlUnVudGltZSwgcDJwSGFuZGxlcjogaW5wdXQucDJwSGFuZGxlciwgcDJwUmVxdWVzdGVyU3R1YjogdHJ1ZSB9O1xyXG5cclxuICAgICAgLy8gbGV0cyBwcmVwYXJlIHRoZSBwMnBSZXF1ZXN0ZXJTVHViIGRlcGxveW1lbnQgYnkgc2V0dGluZyBhbiBvYnNlcnZlciB0byBpdHMgc3RhdHVzIGNoYW5nZXNcclxuXHJcbiAgICAgIF90aGlzLndhdGNoaW5nWW91Lm9ic2VydmUoJ3AycFJlcXVlc3RlclN0dWInLCAoY2hhbmdlKSA9PiB7XHJcblxyXG4gICAgICAgIGxvZy5sb2coJ1tSZWdpc3RyeS5fc2V0dXBQMlBDb25uZWN0aW9uXSBwMnBSZXF1ZXN0ZXJTdHVicyBjaGFuZ2VkICcgKyBfdGhpcy5wMnBSZXF1ZXN0ZXJTdHViKTtcclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZS5rZXlwYXRoLnNwbGl0KCcuJylbMF0gPT09IHJlbW90ZVJ1bnRpbWUgJiYgY2hhbmdlLm5hbWUgPT09ICdzdGF0dXMnICYmIGNoYW5nZS5uZXdWYWx1ZSA9PT0gU1RBVFVTLkxJVkUpIHtcclxuICAgICAgICAgIGxvZy5sb2coJ1tSZWdpc3RyeS5fc2V0dXBQMlBDb25uZWN0aW9uXSBwMnBSZXF1ZXN0ZXIgaXMgbGl2ZSAnICsgX3RoaXMucDJwUmVxdWVzdGVyU3R1YltyZW1vdGVSdW50aW1lXSk7XHJcbiAgICAgICAgICByZXNvbHZlKF90aGlzLnAycFJlcXVlc3RlclN0dWJbcmVtb3RlUnVudGltZV0udXJsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gIHN0dWIgbG9hZFxyXG4gICAgICBfdGhpcy5sb2FkZXIubG9hZFN0dWIoaW5wdXQucDJwUmVxdWVzdGVyLCBwMnBDb25maWcpLnRoZW4oKCkgPT4ge1xyXG5cclxuICAgICAgICBsb2cubG9nKCdbUmVnaXN0cnkuX3NldHVwUDJQQ29ubmVjdGlvbl0gcDJwUmVxdWVzdGVyIGRlcGxveWVkOiAnLCBfdGhpcy5wMnBSZXF1ZXN0ZXJTdHViW3JlbW90ZVJ1bnRpbWVdKTtcclxuXHJcblxyXG4gICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBUbyB2ZXJpZnkgaWYgdXJsIGlzIGZvciBhIGxlZ2FjeSBzZXJ2aWNlLlxyXG4gICogQHBhcmFtICB7VVJMLlVSTH0gIHVybCAgICAgIHVybFxyXG4gICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAqL1xyXG4gIGlzTGVnYWN5KHVybCkge1xyXG5cclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHJcbiAgICAgIGlmICh1cmwgPT09IF90aGlzLl9kb21haW4pIHtcclxuICAgICAgICByZXR1cm4gcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxvZy5sb2coJ1tSZWdpc3RyeV0gW1JlZ2lzdHJ5LlJlZ2lzdHJ5LmlzTGVnYWN5XSAnLCB1cmwpO1xyXG5cclxuICAgICAgLy8gVE9ETzogdG8gYmUgZGVmaW5lZCBpbiB0aGUgcnVudGltZSBjb25maWd1cmF0aW9uXHJcbiAgICAgIGxldCBub25MZWdhY3kgPSBbJ2h5cGVydHktcnVudGltZScsICdkb21haW4nLCAnZ2xvYmFsJywgJ2h5cGVydHknXTtcclxuXHJcbiAgICAgIGxldCB1cmxEaXZpZGVkID0gZGl2aWRlVVJMKHVybCk7XHJcblxyXG4gICAgICBpZiAobm9uTGVnYWN5LmluZGV4T2YodXJsRGl2aWRlZC50eXBlKSAhPT0gLTEgfHwgdXJsRGl2aWRlZC5kb21haW4gPT09IF90aGlzLl9kb21haW4pIHtcclxuICAgICAgICByZXR1cm4gcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHByb2Nlc3MgVXNlciBVUkxzXHJcbiAgICAgIGlmICh1cmwuc3BsaXQoJ0AnKS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgbGV0IGRvbWFpbiA9IHVybERpdmlkZWQuZG9tYWluO1xyXG5cclxuICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnldIFtSZWdpc3RyeS5SZWdpc3RyeS5pc0xlZ2FjeV0gZG9tYWluOiAnLCBkb21haW4pO1xyXG4gICAgICAgIGlmIChfdGhpcy5pZHBMZWdhY3lQcm94eUxpc3QuaGFzT3duUHJvcGVydHkoZG9tYWluKSkge1xyXG5cclxuICAgICAgICAgIGxldCByZXN1bHQgPSBfdGhpcy5pZHBMZWdhY3lQcm94eUxpc3RbZG9tYWluXTtcclxuXHJcbiAgICAgICAgICBpZiAocmVzdWx0LmludGVyd29ya2luZykge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXN1bHQuaW50ZXJ3b3JraW5nKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIF90aGlzLl9sb2FkZXIuZGVzY3JpcHRvcnMuZ2V0SWRwUHJveHlEZXNjcmlwdG9yKGRvbWFpbikudGhlbigocmVzdWx0KSA9PiB7XHJcblxyXG4gICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5XSBbUmVnaXN0cnkuUmVnaXN0cnkuaXNMZWdhY3ldIExlZ2FjeSBzdHViIGRlc2NyaXB0b3I6ICcsIHJlc3VsdCk7XHJcblxyXG4gICAgICAgICAgaWYgKHJlc3VsdC5pbnRlcndvcmtpbmcpIHtcclxuICAgICAgICAgICAgX3RoaXMuaWRwTGVnYWN5UHJveHlMaXN0W2RvbWFpbl0gPSByZXN1bHQ7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0LmludGVyd29ya2luZyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xyXG4gICAgICAgICAgbG9nLndhcm4oJ3Byb2JsZW0gbG9hZGluZyBpZHAgcHJveHkgZGVzY3JpcHRvciBmb3IgZG9tYWluOicsIGRvbWFpbiwgJyBiZWNhdXNlICcsIHJlYXNvbik7XHJcbiAgICAgICAgICByZWplY3QocmVhc29uKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHsgLy8gcHJvY2VzcyBwcm90b3N0dWIgVVJMc1xyXG4gICAgICAgIHJlc29sdmUoX3RoaXMuaXNJbnRlcndvcmtpbmdQcm90b1N0dWIodXJsKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBUbyB2ZXJpZnkgaWYgVVJMIGlzIGxvY2FsbHkgcmVnaXN0ZXJlZCBvciBub3QuXHJcbiAgKiBAcGFyYW0gIHtVUkwuVVJMfSAgdXJsICAgICAgdXJsXHJcbiAgKiBAcmV0dXJuIHtib29sZWFufVxyXG4gICovXHJcblxyXG4gIGlzTG9jYWwodXJsKSB7XHJcblxyXG4gICAgbGV0IHJ1bnRpbWVTY2hlbWUgPSBbJ2h5cGVydHktcnVudGltZScsICdydW50aW1lJ107XHJcbiAgICBsZXQgaHlwZXJ0eVNjaGVtZSA9IFsnaHlwZXJ0eSddO1xyXG4gICAgbGV0IHVybFNjaGVtZSA9IHVybC5zcGxpdCgnOi8vJylbMF07XHJcblxyXG4gICAgLy8gUHJvY2VzcyBSdW50aW1lIENvcmUgVVJMcy5cclxuICAgIC8vIE1lc3NhZ2VzIG9yaWdpbmF0ZWQgZnJvbSBwcm90b3N0dWJzIHNob3VsZCBhbHNvIG5vdCBpbmNsdWRlIHRoZSBydW50aW1lVVJMIGluIGl0cyBVUkwuXHJcblxyXG4gICAgaWYgKHJ1bnRpbWVTY2hlbWUuaW5kZXhPZih1cmxTY2hlbWUpICE9PSAtMSkge1xyXG4gICAgICByZXR1cm4gdXJsLmluY2x1ZGVzKHRoaXMucnVudGltZVVSTCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUHJvY2VzcyBIeXBlcnR5IFVSTHNcclxuICAgIC8vIFRvZG86IGh5cGVydGllc0xpc3Qgc2hvdWxkIGJlIGFuIG9iamVjdCBub3QgYW4gYXJyYXlcclxuXHJcbiAgICBpZiAoaHlwZXJ0eVNjaGVtZS5pbmRleE9mKHVybFNjaGVtZSkgIT09IC0xKSB7XHJcblxyXG4gICAgICBmb3IgKGxldCBpbmRleCBpbiB0aGlzLmh5cGVydGllc0xpc3QpIHtcclxuICAgICAgICBsZXQgaHlwZXJ0eSA9IHRoaXMuaHlwZXJ0aWVzTGlzdFtpbmRleF07XHJcbiAgICAgICAgaWYgKGh5cGVydHkuaHlwZXJ0eVVSTCA9PT0gdXJsKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBQcm9jZXNzIERhdGEgT2JqZWN0IFVSTHNcclxuXHJcbiAgICBpZiAodXJsLmluY2x1ZGVzKCcvc3Vic2NyaXB0aW9uJykpIHtcclxuICAgICAgdXJsID0gdXJsLnN1YnN0cmluZygwLCB1cmwuaW5kZXhPZignL3N1YnNjcmlwdGlvbicpKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZGF0YU9iamVjdCA9IHRoaXMuZGF0YU9iamVjdExpc3RbdXJsXTtcclxuXHJcbiAgICBpZiAoZGF0YU9iamVjdCkge1xyXG4gICAgICBpZiAoZGF0YU9iamVjdC5pbnRlcndvcmtpbmcpIHtcclxuICAgICAgICByZXR1cm4gIWRhdGFPYmplY3QuaW50ZXJ3b3JraW5nO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogVG8gdmVyaWZ5IGlmIHByb3Rvc3R1YiBpcyB0byBpbnRlcndvcmsgd2l0aCBhIGxlZ2FjeSBkb21haW4uXHJcbiAgKiBAcGFyYW0gIHtVUkwuVVJMfSAgcnVudGltZVByb3Rvc3R1YlVSTCAgICAgIFRoZSBydW50aW1lIFVSTCBvZiB0aGUgUHJvdG9zdHViXHJcbiAgKiBAcmV0dXJuIHtib29sZWFufVxyXG4gICovXHJcblxyXG4gIGlzSW50ZXJ3b3JraW5nUHJvdG9TdHViKHJ1bnRpbWVQcm90b3N0dWJVUkwpIHtcclxuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGlmICh0eXBlb2YgcnVudGltZVByb3Rvc3R1YlVSTCA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIShydW50aW1lUHJvdG9zdHViVVJMLmluY2x1ZGVzKCcvcHJvdG9zdHViLycpKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGZpbHRlcmVkID0gT2JqZWN0LmtleXMoX3RoaXMucHJvdG9zdHVic0xpc3QpLmZpbHRlcigoa2V5KSA9PiB7XHJcbiAgICAgIHJldHVybiBfdGhpcy5wcm90b3N0dWJzTGlzdFtrZXldLnVybCA9PT0gcnVudGltZVByb3Rvc3R1YlVSTDtcclxuICAgIH0pLm1hcCgoa2V5KSA9PiB7XHJcblxyXG4gICAgICBpZiAoX3RoaXMucHJvdG9zdHVic0xpc3Rba2V5XS5oYXNPd25Qcm9wZXJ0eSgnaW50ZXJ3b3JraW5nJykpIHtcclxuICAgICAgICByZXR1cm4gX3RoaXMucHJvdG9zdHVic0xpc3Rba2V5XS5pbnRlcndvcmtpbmc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KVswXTtcclxuXHJcbiAgICByZXR1cm4gZmlsdGVyZWQ7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyeTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9yZWdpc3RyeS9SZWdpc3RyeS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkE7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7QUFiQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFGQTtBQUNBO0FBQ0E7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7OztBQUdBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBU0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUEyRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFkQTtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFGQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFTQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBQ0E7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBQ0E7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUdBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFKQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBR0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFUQTtBQUNBO0FBREE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBM0NBO0FBNkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQWp1REE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQTZwREE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///440\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(442), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9zeW1ib2wvaXRlcmF0b3IuanM/NjczOCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vc3ltYm9sL2l0ZXJhdG9yXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNDQxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///441\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(128);\n__webpack_require__(190);\nmodule.exports = __webpack_require__(140).f('iterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3IuanM/ZmU3ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL193a3MtZXh0JykuZignaXRlcmF0b3InKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDQ0MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///442\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(444), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9zeW1ib2wuanM/ZTUwNSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vc3ltYm9sXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC5qc1xuLy8gbW9kdWxlIGlkID0gNDQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///443\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(445);\n__webpack_require__(182);\n__webpack_require__(450);\n__webpack_require__(451);\nmodule.exports = __webpack_require__(13).Symbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQ0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaW5kZXguanM/MDcwNyJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5zeW1ib2wnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLlN5bWJvbDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDQ0NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///444\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(22);\nvar has = __webpack_require__(59);\nvar DESCRIPTORS = __webpack_require__(44);\nvar $export = __webpack_require__(21);\nvar redefine = __webpack_require__(185);\nvar META = __webpack_require__(446).KEY;\nvar $fails = __webpack_require__(66);\nvar shared = __webpack_require__(136);\nvar setToStringTag = __webpack_require__(96);\nvar uid = __webpack_require__(95);\nvar wks = __webpack_require__(23);\nvar wksExt = __webpack_require__(140);\nvar wksDefine = __webpack_require__(141);\nvar enumKeys = __webpack_require__(447);\nvar isArray = __webpack_require__(448);\nvar anObject = __webpack_require__(41);\nvar isObject = __webpack_require__(36);\nvar toIObject = __webpack_require__(45);\nvar toPrimitive = __webpack_require__(132);\nvar createDesc = __webpack_require__(73);\nvar _create = __webpack_require__(133);\nvar gOPNExt = __webpack_require__(449);\nvar $GOPD = __webpack_require__(142);\nvar $DP = __webpack_require__(40);\nvar $keys = __webpack_require__(67);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(202).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(77).f = $propertyIsEnumerable;\n __webpack_require__(139).f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(93)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(58)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQ1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zeW1ib2wuanM/N2Q2NyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBFQ01BU2NyaXB0IDYgc3ltYm9scyBzaGltXG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgTUVUQSA9IHJlcXVpcmUoJy4vX21ldGEnKS5LRVk7XG52YXIgJGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgd2tzID0gcmVxdWlyZSgnLi9fd2tzJyk7XG52YXIgd2tzRXh0ID0gcmVxdWlyZSgnLi9fd2tzLWV4dCcpO1xudmFyIHdrc0RlZmluZSA9IHJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKTtcbnZhciBlbnVtS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0ta2V5cycpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL19pcy1hcnJheScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIF9jcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZ09QTkV4dCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuLWV4dCcpO1xudmFyICRHT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbnZhciAkRFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QRCA9ICRHT1BELmY7XG52YXIgZFAgPSAkRFAuZjtcbnZhciBnT1BOID0gZ09QTkV4dC5mO1xudmFyICRTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyICRKU09OID0gZ2xvYmFsLkpTT047XG52YXIgX3N0cmluZ2lmeSA9ICRKU09OICYmICRKU09OLnN0cmluZ2lmeTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBISURERU4gPSB3a3MoJ19oaWRkZW4nKTtcbnZhciBUT19QUklNSVRJVkUgPSB3a3MoJ3RvUHJpbWl0aXZlJyk7XG52YXIgaXNFbnVtID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgU3ltYm9sUmVnaXN0cnkgPSBzaGFyZWQoJ3N5bWJvbC1yZWdpc3RyeScpO1xudmFyIEFsbFN5bWJvbHMgPSBzaGFyZWQoJ3N5bWJvbHMnKTtcbnZhciBPUFN5bWJvbHMgPSBzaGFyZWQoJ29wLXN5bWJvbHMnKTtcbnZhciBPYmplY3RQcm90byA9IE9iamVjdFtQUk9UT1RZUEVdO1xudmFyIFVTRV9OQVRJVkUgPSB0eXBlb2YgJFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xudmFyIFFPYmplY3QgPSBnbG9iYWwuUU9iamVjdDtcbi8vIERvbid0IHVzZSBzZXR0ZXJzIGluIFF0IFNjcmlwdCwgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzE3M1xudmFyIHNldHRlciA9ICFRT2JqZWN0IHx8ICFRT2JqZWN0W1BST1RPVFlQRV0gfHwgIVFPYmplY3RbUFJPVE9UWVBFXS5maW5kQ2hpbGQ7XG5cbi8vIGZhbGxiYWNrIGZvciBvbGQgQW5kcm9pZCwgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTY4N1xudmFyIHNldFN5bWJvbERlc2MgPSBERVNDUklQVE9SUyAmJiAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gX2NyZWF0ZShkUCh7fSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBkUCh0aGlzLCAnYScsIHsgdmFsdWU6IDcgfSkuYTsgfVxuICB9KSkuYSAhPSA3O1xufSkgPyBmdW5jdGlvbiAoaXQsIGtleSwgRCkge1xuICB2YXIgcHJvdG9EZXNjID0gZ09QRChPYmplY3RQcm90bywga2V5KTtcbiAgaWYgKHByb3RvRGVzYykgZGVsZXRlIE9iamVjdFByb3RvW2tleV07XG4gIGRQKGl0LCBrZXksIEQpO1xuICBpZiAocHJvdG9EZXNjICYmIGl0ICE9PSBPYmplY3RQcm90bykgZFAoT2JqZWN0UHJvdG8sIGtleSwgcHJvdG9EZXNjKTtcbn0gOiBkUDtcblxudmFyIHdyYXAgPSBmdW5jdGlvbiAodGFnKSB7XG4gIHZhciBzeW0gPSBBbGxTeW1ib2xzW3RhZ10gPSBfY3JlYXRlKCRTeW1ib2xbUFJPVE9UWVBFXSk7XG4gIHN5bS5fayA9IHRhZztcbiAgcmV0dXJuIHN5bTtcbn07XG5cbnZhciBpc1N5bWJvbCA9IFVTRV9OQVRJVkUgJiYgdHlwZW9mICRTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCcgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0IGluc3RhbmNlb2YgJFN5bWJvbDtcbn07XG5cbnZhciAkZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBEKSB7XG4gIGlmIChpdCA9PT0gT2JqZWN0UHJvdG8pICRkZWZpbmVQcm9wZXJ0eShPUFN5bWJvbHMsIGtleSwgRCk7XG4gIGFuT2JqZWN0KGl0KTtcbiAga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKTtcbiAgYW5PYmplY3QoRCk7XG4gIGlmIChoYXMoQWxsU3ltYm9scywga2V5KSkge1xuICAgIGlmICghRC5lbnVtZXJhYmxlKSB7XG4gICAgICBpZiAoIWhhcyhpdCwgSElEREVOKSkgZFAoaXQsIEhJRERFTiwgY3JlYXRlRGVzYygxLCB7fSkpO1xuICAgICAgaXRbSElEREVOXVtrZXldID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pIGl0W0hJRERFTl1ba2V5XSA9IGZhbHNlO1xuICAgICAgRCA9IF9jcmVhdGUoRCwgeyBlbnVtZXJhYmxlOiBjcmVhdGVEZXNjKDAsIGZhbHNlKSB9KTtcbiAgICB9IHJldHVybiBzZXRTeW1ib2xEZXNjKGl0LCBrZXksIEQpO1xuICB9IHJldHVybiBkUChpdCwga2V5LCBEKTtcbn07XG52YXIgJGRlZmluZVByb3BlcnRpZXMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGl0LCBQKSB7XG4gIGFuT2JqZWN0KGl0KTtcbiAgdmFyIGtleXMgPSBlbnVtS2V5cyhQID0gdG9JT2JqZWN0KFApKTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbCA9IGtleXMubGVuZ3RoO1xuICB2YXIga2V5O1xuICB3aGlsZSAobCA+IGkpICRkZWZpbmVQcm9wZXJ0eShpdCwga2V5ID0ga2V5c1tpKytdLCBQW2tleV0pO1xuICByZXR1cm4gaXQ7XG59O1xudmFyICRjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaXQsIFApIHtcbiAgcmV0dXJuIFAgPT09IHVuZGVmaW5lZCA/IF9jcmVhdGUoaXQpIDogJGRlZmluZVByb3BlcnRpZXMoX2NyZWF0ZShpdCksIFApO1xufTtcbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShrZXkpIHtcbiAgdmFyIEUgPSBpc0VudW0uY2FsbCh0aGlzLCBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpKTtcbiAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBFIHx8ICFoYXModGhpcywga2V5KSB8fCAhaGFzKEFsbFN5bWJvbHMsIGtleSkgfHwgaGFzKHRoaXMsIEhJRERFTikgJiYgdGhpc1tISURERU5dW2tleV0gPyBFIDogdHJ1ZTtcbn07XG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KSB7XG4gIGl0ID0gdG9JT2JqZWN0KGl0KTtcbiAga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKTtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90byAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhaGFzKE9QU3ltYm9scywga2V5KSkgcmV0dXJuO1xuICB2YXIgRCA9IGdPUEQoaXQsIGtleSk7XG4gIGlmIChEICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICEoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkpIEQuZW51bWVyYWJsZSA9IHRydWU7XG4gIHJldHVybiBEO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlOYW1lcyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHtcbiAgdmFyIG5hbWVzID0gZ09QTih0b0lPYmplY3QoaXQpKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgaSA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSB7XG4gICAgaWYgKCFoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYga2V5ICE9IEhJRERFTiAmJiBrZXkgIT0gTUVUQSkgcmVzdWx0LnB1c2goa2V5KTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSB7XG4gIHZhciBJU19PUCA9IGl0ID09PSBPYmplY3RQcm90bztcbiAgdmFyIG5hbWVzID0gZ09QTihJU19PUCA/IE9QU3ltYm9scyA6IHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIChJU19PUCA/IGhhcyhPYmplY3RQcm90bywga2V5KSA6IHRydWUpKSByZXN1bHQucHVzaChBbGxTeW1ib2xzW2tleV0pO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyAxOS40LjEuMSBTeW1ib2woW2Rlc2NyaXB0aW9uXSlcbmlmICghVVNFX05BVElWRSkge1xuICAkU3ltYm9sID0gZnVuY3Rpb24gU3ltYm9sKCkge1xuICAgIGlmICh0aGlzIGluc3RhbmNlb2YgJFN5bWJvbCkgdGhyb3cgVHlwZUVycm9yKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IhJyk7XG4gICAgdmFyIHRhZyA9IHVpZChhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7XG4gICAgdmFyICRzZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzID09PSBPYmplY3RQcm90bykgJHNldC5jYWxsKE9QU3ltYm9scywgdmFsdWUpO1xuICAgICAgaWYgKGhhcyh0aGlzLCBISURERU4pICYmIGhhcyh0aGlzW0hJRERFTl0sIHRhZykpIHRoaXNbSElEREVOXVt0YWddID0gZmFsc2U7XG4gICAgICBzZXRTeW1ib2xEZXNjKHRoaXMsIHRhZywgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xuICAgIH07XG4gICAgaWYgKERFU0NSSVBUT1JTICYmIHNldHRlcikgc2V0U3ltYm9sRGVzYyhPYmplY3RQcm90bywgdGFnLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgc2V0OiAkc2V0IH0pO1xuICAgIHJldHVybiB3cmFwKHRhZyk7XG4gIH07XG4gIHJlZGVmaW5lKCRTeW1ib2xbUFJPVE9UWVBFXSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2s7XG4gIH0pO1xuXG4gICRHT1BELmYgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAkRFAuZiA9ICRkZWZpbmVQcm9wZXJ0eTtcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mID0gZ09QTkV4dC5mID0gJGdldE93blByb3BlcnR5TmFtZXM7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1waWUnKS5mID0gJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuICByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpLmYgPSAkZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4gIGlmIChERVNDUklQVE9SUyAmJiAhcmVxdWlyZSgnLi9fbGlicmFyeScpKSB7XG4gICAgcmVkZWZpbmUoT2JqZWN0UHJvdG8sICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICRwcm9wZXJ0eUlzRW51bWVyYWJsZSwgdHJ1ZSk7XG4gIH1cblxuICB3a3NFeHQuZiA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIHdyYXAod2tzKG5hbWUpKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBTeW1ib2w6ICRTeW1ib2wgfSk7XG5cbmZvciAodmFyIGVzNlN5bWJvbHMgPSAoXG4gIC8vIDE5LjQuMi4yLCAxOS40LjIuMywgMTkuNC4yLjQsIDE5LjQuMi42LCAxOS40LjIuOCwgMTkuNC4yLjksIDE5LjQuMi4xMCwgMTkuNC4yLjExLCAxOS40LjIuMTIsIDE5LjQuMi4xMywgMTkuNC4yLjE0XG4gICdoYXNJbnN0YW5jZSxpc0NvbmNhdFNwcmVhZGFibGUsaXRlcmF0b3IsbWF0Y2gscmVwbGFjZSxzZWFyY2gsc3BlY2llcyxzcGxpdCx0b1ByaW1pdGl2ZSx0b1N0cmluZ1RhZyx1bnNjb3BhYmxlcydcbikuc3BsaXQoJywnKSwgaiA9IDA7IGVzNlN5bWJvbHMubGVuZ3RoID4gajspd2tzKGVzNlN5bWJvbHNbaisrXSk7XG5cbmZvciAodmFyIHdlbGxLbm93blN5bWJvbHMgPSAka2V5cyh3a3Muc3RvcmUpLCBrID0gMDsgd2VsbEtub3duU3ltYm9scy5sZW5ndGggPiBrOykgd2tzRGVmaW5lKHdlbGxLbm93blN5bWJvbHNbaysrXSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdTeW1ib2wnLCB7XG4gIC8vIDE5LjQuMi4xIFN5bWJvbC5mb3Ioa2V5KVxuICAnZm9yJzogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBoYXMoU3ltYm9sUmVnaXN0cnksIGtleSArPSAnJylcbiAgICAgID8gU3ltYm9sUmVnaXN0cnlba2V5XVxuICAgICAgOiBTeW1ib2xSZWdpc3RyeVtrZXldID0gJFN5bWJvbChrZXkpO1xuICB9LFxuICAvLyAxOS40LjIuNSBTeW1ib2wua2V5Rm9yKHN5bSlcbiAga2V5Rm9yOiBmdW5jdGlvbiBrZXlGb3Ioc3ltKSB7XG4gICAgaWYgKCFpc1N5bWJvbChzeW0pKSB0aHJvdyBUeXBlRXJyb3Ioc3ltICsgJyBpcyBub3QgYSBzeW1ib2whJyk7XG4gICAgZm9yICh2YXIga2V5IGluIFN5bWJvbFJlZ2lzdHJ5KSBpZiAoU3ltYm9sUmVnaXN0cnlba2V5XSA9PT0gc3ltKSByZXR1cm4ga2V5O1xuICB9LFxuICB1c2VTZXR0ZXI6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gdHJ1ZTsgfSxcbiAgdXNlU2ltcGxlOiBmdW5jdGlvbiAoKSB7IHNldHRlciA9IGZhbHNlOyB9XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ09iamVjdCcsIHtcbiAgLy8gMTkuMS4yLjIgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuICBjcmVhdGU6ICRjcmVhdGUsXG4gIC8vIDE5LjEuMi40IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuICBkZWZpbmVQcm9wZXJ0eTogJGRlZmluZVByb3BlcnR5LFxuICAvLyAxOS4xLjIuMyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKVxuICBkZWZpbmVQcm9wZXJ0aWVzOiAkZGVmaW5lUHJvcGVydGllcyxcbiAgLy8gMTkuMS4yLjYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKVxuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG4gIC8vIDE5LjEuMi43IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG4gIGdldE93blByb3BlcnR5TmFtZXM6ICRnZXRPd25Qcm9wZXJ0eU5hbWVzLFxuICAvLyAxOS4xLjIuOCBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKE8pXG4gIGdldE93blByb3BlcnR5U3ltYm9sczogJGdldE93blByb3BlcnR5U3ltYm9sc1xufSk7XG5cbi8vIDI0LjMuMiBKU09OLnN0cmluZ2lmeSh2YWx1ZSBbLCByZXBsYWNlciBbLCBzcGFjZV1dKVxuJEpTT04gJiYgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoIVVTRV9OQVRJVkUgfHwgJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIFMgPSAkU3ltYm9sKCk7XG4gIC8vIE1TIEVkZ2UgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIHt9XG4gIC8vIFdlYktpdCBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMgbnVsbFxuICAvLyBWOCB0aHJvd3Mgb24gYm94ZWQgc3ltYm9sc1xuICByZXR1cm4gX3N0cmluZ2lmeShbU10pICE9ICdbbnVsbF0nIHx8IF9zdHJpbmdpZnkoeyBhOiBTIH0pICE9ICd7fScgfHwgX3N0cmluZ2lmeShPYmplY3QoUykpICE9ICd7fSc7XG59KSksICdKU09OJywge1xuICBzdHJpbmdpZnk6IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCkge1xuICAgIHZhciBhcmdzID0gW2l0XTtcbiAgICB2YXIgaSA9IDE7XG4gICAgdmFyIHJlcGxhY2VyLCAkcmVwbGFjZXI7XG4gICAgd2hpbGUgKGFyZ3VtZW50cy5sZW5ndGggPiBpKSBhcmdzLnB1c2goYXJndW1lbnRzW2krK10pO1xuICAgICRyZXBsYWNlciA9IHJlcGxhY2VyID0gYXJnc1sxXTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlcGxhY2VyKSAmJiBpdCA9PT0gdW5kZWZpbmVkIHx8IGlzU3ltYm9sKGl0KSkgcmV0dXJuOyAvLyBJRTggcmV0dXJucyBzdHJpbmcgb24gdW5kZWZpbmVkXG4gICAgaWYgKCFpc0FycmF5KHJlcGxhY2VyKSkgcmVwbGFjZXIgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiAkcmVwbGFjZXIgPT0gJ2Z1bmN0aW9uJykgdmFsdWUgPSAkcmVwbGFjZXIuY2FsbCh0aGlzLCBrZXksIHZhbHVlKTtcbiAgICAgIGlmICghaXNTeW1ib2wodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICBhcmdzWzFdID0gcmVwbGFjZXI7XG4gICAgcmV0dXJuIF9zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3MpO1xuICB9XG59KTtcblxuLy8gMTkuNC4zLjQgU3ltYm9sLnByb3RvdHlwZVtAQHRvUHJpbWl0aXZlXShoaW50KVxuJFN5bWJvbFtQUk9UT1RZUEVdW1RPX1BSSU1JVElWRV0gfHwgcmVxdWlyZSgnLi9faGlkZScpKCRTeW1ib2xbUFJPVE9UWVBFXSwgVE9fUFJJTUlUSVZFLCAkU3ltYm9sW1BST1RPVFlQRV0udmFsdWVPZik7XG4vLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZygkU3ltYm9sLCAnU3ltYm9sJyk7XG4vLyAyMC4yLjEuOSBNYXRoW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZyhNYXRoLCAnTWF0aCcsIHRydWUpO1xuLy8gMjQuMy4zIEpTT05bQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qc1xuLy8gbW9kdWxlIGlkID0gNDQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///445\n")},function(module,exports,__webpack_require__){eval("var META = __webpack_require__(95)('meta');\nvar isObject = __webpack_require__(36);\nvar has = __webpack_require__(59);\nvar setDesc = __webpack_require__(40).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(66)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQ2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19tZXRhLmpzP2QzYTMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIE1FVEEgPSByZXF1aXJlKCcuL191aWQnKSgnbWV0YScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgc2V0RGVzYyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaWQgPSAwO1xudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgRlJFRVpFID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpO1xufSk7XG52YXIgc2V0TWV0YSA9IGZ1bmN0aW9uIChpdCkge1xuICBzZXREZXNjKGl0LCBNRVRBLCB7IHZhbHVlOiB7XG4gICAgaTogJ08nICsgKytpZCwgLy8gb2JqZWN0IElEXG4gICAgdzoge30gICAgICAgICAgLy8gd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSB9KTtcbn07XG52YXIgZmFzdEtleSA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7XG4gIC8vIHJldHVybiBwcmltaXRpdmUgd2l0aCBwcmVmaXhcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG4gIGlmICghaGFzKGl0LCBNRVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gJ0YnO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiAnRSc7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIG9iamVjdCBJRFxuICB9IHJldHVybiBpdFtNRVRBXS5pO1xufTtcbnZhciBnZXRXZWFrID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiB0cnVlO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiBmYWxzZTtcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gaGFzaCB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IHJldHVybiBpdFtNRVRBXS53O1xufTtcbi8vIGFkZCBtZXRhZGF0YSBvbiBmcmVlemUtZmFtaWx5IG1ldGhvZHMgY2FsbGluZ1xudmFyIG9uRnJlZXplID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChGUkVFWkUgJiYgbWV0YS5ORUVEICYmIGlzRXh0ZW5zaWJsZShpdCkgJiYgIWhhcyhpdCwgTUVUQSkpIHNldE1ldGEoaXQpO1xuICByZXR1cm4gaXQ7XG59O1xudmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgS0VZOiBNRVRBLFxuICBORUVEOiBmYWxzZSxcbiAgZmFzdEtleTogZmFzdEtleSxcbiAgZ2V0V2VhazogZ2V0V2VhayxcbiAgb25GcmVlemU6IG9uRnJlZXplXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanNcbi8vIG1vZHVsZSBpZCA9IDQ0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///446\n")},function(module,exports,__webpack_require__){eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(67);\nvar gOPS = __webpack_require__(139);\nvar pIE = __webpack_require__(77);\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQ3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWtleXMuanM/NWRjZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhbGwgZW51bWVyYWJsZSBvYmplY3Qga2V5cywgaW5jbHVkZXMgc3ltYm9sc1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciByZXN1bHQgPSBnZXRLZXlzKGl0KTtcbiAgdmFyIGdldFN5bWJvbHMgPSBnT1BTLmY7XG4gIGlmIChnZXRTeW1ib2xzKSB7XG4gICAgdmFyIHN5bWJvbHMgPSBnZXRTeW1ib2xzKGl0KTtcbiAgICB2YXIgaXNFbnVtID0gcElFLmY7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKHN5bWJvbHMubGVuZ3RoID4gaSkgaWYgKGlzRW51bS5jYWxsKGl0LCBrZXkgPSBzeW1ib2xzW2krK10pKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0ta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gNDQ3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///447\n")},function(module,exports,__webpack_require__){eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(75);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQ4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1hcnJheS5qcz9lZDQzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMi4yIElzQXJyYXkoYXJndW1lbnQpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIGNvZihhcmcpID09ICdBcnJheSc7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LmpzXG4vLyBtb2R1bGUgaWQgPSA0NDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///448\n")},function(module,exports,__webpack_require__){eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(45);\nvar gOPN = __webpack_require__(202).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQ5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi1leHQuanM/NDZiNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3IgSUUxMSBidWdneSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB3aXRoIGlmcmFtZSBhbmQgd2luZG93XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmY7XG52YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxudmFyIHdpbmRvd05hbWVzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcbiAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpIDogW107XG5cbnZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uIChpdCkge1xuICB0cnkge1xuICAgIHJldHVybiBnT1BOKGl0KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB3aW5kb3dOYW1lcy5zbGljZSgpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICByZXR1cm4gd2luZG93TmFtZXMgJiYgdG9TdHJpbmcuY2FsbChpdCkgPT0gJ1tvYmplY3QgV2luZG93XScgPyBnZXRXaW5kb3dOYW1lcyhpdCkgOiBnT1BOKHRvSU9iamVjdChpdCkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi1leHQuanNcbi8vIG1vZHVsZSBpZCA9IDQ0OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///449\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(141)('asyncIterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wuYXN5bmMtaXRlcmF0b3IuanM/Mzk4OSJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuL193a3MtZGVmaW5lJykoJ2FzeW5jSXRlcmF0b3InKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wuYXN5bmMtaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDQ1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///450\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(141)('observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZS5qcz80MTY3Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnb2JzZXJ2YWJsZScpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSA0NTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///451\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(453);\nmodule.exports = __webpack_require__(13).Object.keys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qcz84YzU2Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Qua2V5cztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gNDUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///452\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(76);\nvar $keys = __webpack_require__(67);\n\n__webpack_require__(98)('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qcz8wOWRjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2tleXMnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBrZXlzKGl0KSB7XG4gICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gNDUzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///453\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SandboxType = undefined;\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _getPrototypeOf = __webpack_require__(60);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(68);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(69);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SandboxRegistry = __webpack_require__(463);\n\nvar _SandboxRegistry2 = _interopRequireDefault(_SandboxRegistry);\n\nvar _MiniBus2 = __webpack_require__(464);\n\nvar _MiniBus3 = _interopRequireDefault(_MiniBus2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\nvar SandboxType = exports.SandboxType = { APP: 'app', NORMAL: 'normal', WINDOW: 'window' };\n\n/**\r\n * @author micaelpedrosa@gmail.com\r\n * Base class to implement external sandbox component\r\n */\n\nvar Sandbox = function (_MiniBus) {\n (0, _inherits3.default)(Sandbox, _MiniBus);\n\n function Sandbox(capabilities) {\n (0, _classCallCheck3.default)(this, Sandbox);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (Sandbox.__proto__ || (0, _getPrototypeOf2.default)(Sandbox)).call(this));\n\n var _this = _this2;\n\n if (capabilities) {\n _this.capabilities = capabilities;\n }\n\n return _this2;\n }\n\n /**\r\n * Deploy an instance of the component into the sandbox.\r\n * @param {string} componentSourceCode Component source code (Hyperty, ProtoStub, etc)\r\n * @param {URL} componentURL Hyperty, ProtoStub, or any other component address.\r\n * @param {Config} configuration Config parameters of the component\r\n * @return {Promise} return deployed if successful, or any other string with an error\r\n */\n\n\n (0, _createClass3.default)(Sandbox, [{\n key: 'deployComponent',\n value: function deployComponent(componentSourceCode, componentURL, configuration) {\n\n var _this = this;\n\n // let messageFactory = _this.messageFactory;\n\n return new _promise2.default(function (resolve, reject) {\n //FLOW-OUT: deploy message for the internal SandboxRegistry -> _onDeploy\n var deployMessage = {\n type: 'create', from: _SandboxRegistry2.default.ExternalDeployAddress, to: _SandboxRegistry2.default.InternalDeployAddress,\n body: { url: componentURL, sourceCode: componentSourceCode, config: configuration }\n };\n\n //send message into the sandbox internals and wait for reply\n _this.postMessage(deployMessage, function (reply) {\n if (reply.body.code === 200) {\n //is this response complaint with the spec?\n resolve('deployed');\n } else {\n reject(reply.body.desc);\n }\n });\n });\n }\n\n /**\r\n * Remove the instance of a previously deployed component.\r\n * @param {URL} componentURL Hyperty, ProtoStub, or any other component address.\r\n * @return {Promise} return undeployed if successful, or any other string with an error\r\n */\n\n }, {\n key: 'removeComponent',\n value: function removeComponent(componentURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n //FLOW-OUT: un-deploy message for the internal SandboxRegistry -> _onRemove\n var removeMessage = {\n type: 'delete', from: _SandboxRegistry2.default.ExternalDeployAddress, to: _SandboxRegistry2.default.InternalDeployAddress,\n body: { url: componentURL }\n };\n\n //send message into the sandbox internals and wait for reply\n _this.postMessage(removeMessage, function (reply) {\n if (reply.body.code === 200) {\n //is this response complaint with the spec?\n resolve('undeployed');\n } else {\n reject(reply.body.desc);\n }\n });\n });\n }\n\n /**\r\n * Matches Sandbox capabilities against provided capabilities. Used to check if sandbox provides all required capabilities\r\n * @param {RuntimeCapabilities} constraints set of RuntimeCapabilities to match with.\r\n * @return {boolean} return true if constraints are matched false otherwise\r\n */\n\n }, {\n key: 'matches',\n value: function matches(constraints) {\n var _this = this;\n\n var filtered = (0, _keys2.default)(constraints).filter(function (key) {\n return !(_this.capabilities[key] && _this.capabilities[key] === constraints[key]);\n });\n\n if (filtered.length === 0) {\n return true;\n } else {\n return !constraints[filtered];\n }\n }\n }]);\n return Sandbox;\n}(_MiniBus3.default);\n\nexports.default = Sandbox;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDU0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zYW5kYm94L1NhbmRib3guanM/MGEzMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxyXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxyXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXHJcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xyXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxyXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXHJcbipcclxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuKlxyXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbipcclxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKiovXHJcbmltcG9ydCBTYW5kYm94UmVnaXN0cnkgZnJvbSAnLi4vc2FuZGJveC9TYW5kYm94UmVnaXN0cnknO1xyXG5pbXBvcnQgTWluaUJ1cyBmcm9tICcuLi9idXMvTWluaUJ1cyc7XHJcblxyXG5leHBvcnQgbGV0IFNhbmRib3hUeXBlID0ge0FQUDogJ2FwcCcsIE5PUk1BTDogJ25vcm1hbCcsIFdJTkRPVzogJ3dpbmRvdyd9O1xyXG5cclxuLyoqXHJcbiAqIEBhdXRob3IgbWljYWVscGVkcm9zYUBnbWFpbC5jb21cclxuICogQmFzZSBjbGFzcyB0byBpbXBsZW1lbnQgZXh0ZXJuYWwgc2FuZGJveCBjb21wb25lbnRcclxuICovXHJcbmNsYXNzIFNhbmRib3ggZXh0ZW5kcyBNaW5pQnVzIHtcclxuXHJcbiAgY29uc3RydWN0b3IoY2FwYWJpbGl0aWVzKSB7XHJcblxyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGlmIChjYXBhYmlsaXRpZXMpICAgICAgeyBfdGhpcy5jYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXRpZXM7IH1cclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXBsb3kgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudCBpbnRvIHRoZSBzYW5kYm94LlxyXG4gICAqIEBwYXJhbSAge3N0cmluZ30gY29tcG9uZW50U291cmNlQ29kZSBDb21wb25lbnQgc291cmNlIGNvZGUgKEh5cGVydHksIFByb3RvU3R1YiwgZXRjKVxyXG4gICAqIEBwYXJhbSAge1VSTH0gY29tcG9uZW50VVJMIEh5cGVydHksIFByb3RvU3R1Yiwgb3IgYW55IG90aGVyIGNvbXBvbmVudCBhZGRyZXNzLlxyXG4gICAqIEBwYXJhbSAge0NvbmZpZ30gY29uZmlndXJhdGlvbiBDb25maWcgcGFyYW1ldGVycyBvZiB0aGUgY29tcG9uZW50XHJcbiAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSByZXR1cm4gZGVwbG95ZWQgaWYgc3VjY2Vzc2Z1bCwgb3IgYW55IG90aGVyIHN0cmluZyB3aXRoIGFuIGVycm9yXHJcbiAgICovXHJcbiAgZGVwbG95Q29tcG9uZW50KGNvbXBvbmVudFNvdXJjZUNvZGUsIGNvbXBvbmVudFVSTCwgY29uZmlndXJhdGlvbikge1xyXG5cclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgLy8gbGV0IG1lc3NhZ2VGYWN0b3J5ID0gX3RoaXMubWVzc2FnZUZhY3Rvcnk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgLy9GTE9XLU9VVDogZGVwbG95IG1lc3NhZ2UgZm9yIHRoZSBpbnRlcm5hbCBTYW5kYm94UmVnaXN0cnkgLT4gX29uRGVwbG95XHJcbiAgICAgIGxldCBkZXBsb3lNZXNzYWdlID0ge1xyXG4gICAgICAgIHR5cGU6ICdjcmVhdGUnLCBmcm9tOiBTYW5kYm94UmVnaXN0cnkuRXh0ZXJuYWxEZXBsb3lBZGRyZXNzLCB0bzogU2FuZGJveFJlZ2lzdHJ5LkludGVybmFsRGVwbG95QWRkcmVzcyxcclxuICAgICAgICBib2R5OiB7IHVybDogY29tcG9uZW50VVJMLCBzb3VyY2VDb2RlOiBjb21wb25lbnRTb3VyY2VDb2RlLCBjb25maWc6IGNvbmZpZ3VyYXRpb24gfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy9zZW5kIG1lc3NhZ2UgaW50byB0aGUgc2FuZGJveCBpbnRlcm5hbHMgYW5kIHdhaXQgZm9yIHJlcGx5XHJcbiAgICAgIF90aGlzLnBvc3RNZXNzYWdlKGRlcGxveU1lc3NhZ2UsIChyZXBseSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXBseS5ib2R5LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgLy9pcyB0aGlzIHJlc3BvbnNlIGNvbXBsYWludCB3aXRoIHRoZSBzcGVjP1xyXG4gICAgICAgICAgcmVzb2x2ZSgnZGVwbG95ZWQnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVqZWN0KHJlcGx5LmJvZHkuZGVzYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIHRoZSBpbnN0YW5jZSBvZiBhIHByZXZpb3VzbHkgZGVwbG95ZWQgY29tcG9uZW50LlxyXG4gICAqIEBwYXJhbSAge1VSTH0gY29tcG9uZW50VVJMIEh5cGVydHksIFByb3RvU3R1Yiwgb3IgYW55IG90aGVyIGNvbXBvbmVudCBhZGRyZXNzLlxyXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gcmV0dXJuIHVuZGVwbG95ZWQgaWYgc3VjY2Vzc2Z1bCwgb3IgYW55IG90aGVyIHN0cmluZyB3aXRoIGFuIGVycm9yXHJcbiAgICovXHJcbiAgcmVtb3ZlQ29tcG9uZW50KGNvbXBvbmVudFVSTCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAvL0ZMT1ctT1VUOiB1bi1kZXBsb3kgbWVzc2FnZSBmb3IgdGhlIGludGVybmFsIFNhbmRib3hSZWdpc3RyeSAtPiBfb25SZW1vdmVcclxuICAgICAgbGV0IHJlbW92ZU1lc3NhZ2UgPSB7XHJcbiAgICAgICAgdHlwZTogJ2RlbGV0ZScsIGZyb206IFNhbmRib3hSZWdpc3RyeS5FeHRlcm5hbERlcGxveUFkZHJlc3MsIHRvOiBTYW5kYm94UmVnaXN0cnkuSW50ZXJuYWxEZXBsb3lBZGRyZXNzLFxyXG4gICAgICAgIGJvZHk6IHsgdXJsOiBjb21wb25lbnRVUkwgfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy9zZW5kIG1lc3NhZ2UgaW50byB0aGUgc2FuZGJveCBpbnRlcm5hbHMgYW5kIHdhaXQgZm9yIHJlcGx5XHJcbiAgICAgIF90aGlzLnBvc3RNZXNzYWdlKHJlbW92ZU1lc3NhZ2UsIChyZXBseSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXBseS5ib2R5LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgLy9pcyB0aGlzIHJlc3BvbnNlIGNvbXBsYWludCB3aXRoIHRoZSBzcGVjP1xyXG4gICAgICAgICAgcmVzb2x2ZSgndW5kZXBsb3llZCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWplY3QocmVwbHkuYm9keS5kZXNjKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIE1hdGNoZXMgU2FuZGJveCBjYXBhYmlsaXRpZXMgYWdhaW5zdCBwcm92aWRlZCBjYXBhYmlsaXRpZXMuIFVzZWQgdG8gY2hlY2sgaWYgc2FuZGJveCBwcm92aWRlcyBhbGwgcmVxdWlyZWQgY2FwYWJpbGl0aWVzXHJcbiAgKiBAcGFyYW0gIHtSdW50aW1lQ2FwYWJpbGl0aWVzfSBjb25zdHJhaW50cyBzZXQgb2YgUnVudGltZUNhcGFiaWxpdGllcyB0byBtYXRjaCB3aXRoLlxyXG4gICogQHJldHVybiB7Ym9vbGVhbn0gcmV0dXJuIHRydWUgaWYgY29uc3RyYWludHMgYXJlIG1hdGNoZWQgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAgICovXHJcblxyXG4gIG1hdGNoZXMoY29uc3RyYWludHMpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IGZpbHRlcmVkID0gT2JqZWN0LmtleXMoY29uc3RyYWludHMpLmZpbHRlcigoa2V5KSA9PiB7XHJcbiAgICAgIHJldHVybiAhKF90aGlzLmNhcGFiaWxpdGllc1trZXldICYmIF90aGlzLmNhcGFiaWxpdGllc1trZXldID09PSBjb25zdHJhaW50c1trZXldKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChmaWx0ZXJlZC5sZW5ndGggPT09IDApICAgICAgeyByZXR1cm4gdHJ1ZTsgfSAgICBlbHNlICAgICAgeyByZXR1cm4gIShjb25zdHJhaW50c1tmaWx0ZXJlZF0pOyB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgU2FuZGJveDtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9zYW5kYm94L1NhbmRib3guanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7O0FBeEJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJBO0FBQ0E7QUFDQTs7Ozs7QUFJQTs7O0FBRUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQVBBO0FBUUE7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7QUFJQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///454\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(456);\nmodule.exports = __webpack_require__(13).Object.getPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDU1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qcz83ZDJlIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2dldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDQ1NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///455\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(76);\nvar $getPrototypeOf = __webpack_require__(189);\n\n__webpack_require__(98)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDU2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LXByb3RvdHlwZS1vZi5qcz8yYTFlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi45IE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2dldFByb3RvdHlwZU9mJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2YoaXQpIHtcbiAgICByZXR1cm4gJGdldFByb3RvdHlwZU9mKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gNDU2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///456\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(458), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDU3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz85MjIwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gNDU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///457\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(459);\nmodule.exports = __webpack_require__(13).Object.setPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDU4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz84YmYwIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Quc2V0UHJvdG90eXBlT2Y7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L3NldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDQ1OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///458\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(21);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(460).set });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDU5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcz83YjE4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMy4xOSBPYmplY3Quc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IHNldFByb3RvdHlwZU9mOiByZXF1aXJlKCcuL19zZXQtcHJvdG8nKS5zZXQgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDQ1OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///459\n")},function(module,exports,__webpack_require__){eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(36);\nvar anObject = __webpack_require__(41);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(65)(Function.call, __webpack_require__(142).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtcHJvdG8uanM/NjVhNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXByb3RvLmpzXG4vLyBtb2R1bGUgaWQgPSA0NjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///460\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(462);\nvar $Object = __webpack_require__(13).Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlLmpzP2EwY2UiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGUoUCwgRCkge1xuICByZXR1cm4gJE9iamVjdC5jcmVhdGUoUCwgRCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDQ2MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///461\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(21);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(133) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlLmpzP2IwNWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IGNyZWF0ZTogcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDQ2MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///462\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n/**\r\n * @author micaelpedrosa@gmail.com\r\n * Base class to implement internal deploy manager of components.\r\n */\n\n/**\r\n * @author micaelpedrosa@gmail.com\r\n * Internal component registry of all sandboxes.\r\n * Process internal request's for component deploy.\r\n */\nvar SandboxRegistry = function () {\n /* private\r\n _components: \r\n */\n\n function SandboxRegistry(bus) {\n (0, _classCallCheck3.default)(this, SandboxRegistry);\n\n var _this = this;\n\n _this._bus = bus;\n _this._components = {};\n\n bus.addListener(SandboxRegistry.InternalDeployAddress, function (msg) {\n //console.log('SandboxRegistry-RCV: ', msg);\n // let responseMsg = {\n // id: msg.id, type: 'response', from: SandboxRegistry.InternalDeployAddress, to: SandboxRegistry.ExternalDeployAddress\n // };\n\n switch (msg.type) {\n case 'create':\n _this._onDeploy(msg);break;\n case 'delete':\n _this._onRemove(msg);break;\n }\n });\n }\n\n (0, _createClass3.default)(SandboxRegistry, [{\n key: '_responseMsg',\n value: function _responseMsg(msg, code, value) {\n\n var _this = this;\n\n // let messageFactory = _this.messageFactory;\n\n //FLOW-OUT: generic response message to external Sandbox (deploy and un-deploy responses)\n var responseMsg = {\n id: msg.id, type: 'response', from: SandboxRegistry.InternalDeployAddress, to: SandboxRegistry.ExternalDeployAddress\n };\n\n // Chanege the origin message, because the response;\n // msg.from = SandboxRegistry.InternalDeployAddress;\n // msg.to = SandboxRegistry.ExternalDeployAddress;\n\n var body = {};\n if (code) body.code = code;\n if (value) body.desc = value;\n\n responseMsg.body = body;\n\n // return messageFactory.createResponse(msg, code, value);\n return responseMsg;\n }\n\n //FLOW-IN: message from the runtime core Sandbox -> deployComponent\n\n }, {\n key: '_onDeploy',\n value: function _onDeploy(msg) {\n var _this = this;\n var config = msg.body.config;\n var componentURL = msg.body.url;\n var sourceCode = msg.body.sourceCode;\n var responseCode = void 0;\n var responseDesc = void 0;\n\n if (!_this._components.hasOwnProperty(componentURL)) {\n try {\n _this._components[componentURL] = _this._create(componentURL, sourceCode, config);\n responseCode = 200;\n } catch (error) {\n responseCode = 500;\n responseDesc = error;\n }\n } else {\n responseCode = 500;\n responseDesc = 'Instance ' + componentURL + ' already exist!';\n }\n\n var responseMsg = _this._responseMsg(msg, responseCode, responseDesc);\n _this._bus.postMessage(responseMsg);\n }\n\n //FLOW-IN: message from the runtime core Sandbox -> removeComponent\n\n }, {\n key: '_onRemove',\n value: function _onRemove(msg) {\n var _this = this;\n var componentURL = msg.body.url;\n var responseCode = void 0;\n var responseDesc = void 0;\n\n if (_this._components.hasOwnProperty(componentURL)) {\n //remove component from the pool and all listeners\n delete _this._components[componentURL];\n _this._bus.removeAllListenersOf(componentURL);\n responseCode = 200;\n } else {\n responseCode = 500;\n responseDesc = 'Instance ' + componentURL + ' doesn\\'t exist!';\n }\n\n var responseMsg = _this._responseMsg(msg, responseCode, responseDesc);\n\n _this._bus.postMessage(responseMsg);\n }\n\n /**\r\n * This method should be implemented by the internal sandbox code.\r\n * @param {ComponentURL} url URL used for the instance\r\n * @param {string} sourceCode Code of the component\r\n * @param {Config} config Configuration parameters\r\n * @return {Object} Returns instance of the component or throw an error \"throw 'error message'\"\r\n */\n\n }, {\n key: '_create',\n value: function _create(url, sourceCode, config) {\n //implementation specific\n /* example code:\r\n eval(sourceCode);\r\n return activate(url, _this._bus, config);\r\n */\n }\n }, {\n key: 'components',\n get: function get() {\n return this._components;\n }\n }]);\n return SandboxRegistry;\n}();\n\nSandboxRegistry.ExternalDeployAddress = 'hyperty-runtime://sandbox/external';\nSandboxRegistry.InternalDeployAddress = 'hyperty-runtime://sandbox/internal';\n\nexports.default = SandboxRegistry;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zYW5kYm94L1NhbmRib3hSZWdpc3RyeS5qcz9lZTFjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuLyoqXHJcbiAqIEBhdXRob3IgbWljYWVscGVkcm9zYUBnbWFpbC5jb21cclxuICogQmFzZSBjbGFzcyB0byBpbXBsZW1lbnQgaW50ZXJuYWwgZGVwbG95IG1hbmFnZXIgb2YgY29tcG9uZW50cy5cclxuICovXHJcblxyXG4vKipcclxuICogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxyXG4gKiBJbnRlcm5hbCBjb21wb25lbnQgcmVnaXN0cnkgb2YgYWxsIHNhbmRib3hlcy5cclxuICogUHJvY2VzcyBpbnRlcm5hbCByZXF1ZXN0J3MgZm9yIGNvbXBvbmVudCBkZXBsb3kuXHJcbiAqL1xyXG5jbGFzcyBTYW5kYm94UmVnaXN0cnkge1xyXG4gIC8qIHByaXZhdGVcclxuICBfY29tcG9uZW50czogPHVybDogaW5zdGFuY2U+XHJcbiAgKi9cclxuXHJcbiAgY29uc3RydWN0b3IoYnVzKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIF90aGlzLl9idXMgPSBidXM7XHJcbiAgICBfdGhpcy5fY29tcG9uZW50cyA9IHt9O1xyXG5cclxuICAgIGJ1cy5hZGRMaXN0ZW5lcihTYW5kYm94UmVnaXN0cnkuSW50ZXJuYWxEZXBsb3lBZGRyZXNzLCAobXNnKSA9PiB7XHJcbiAgICAgIC8vY29uc29sZS5sb2coJ1NhbmRib3hSZWdpc3RyeS1SQ1Y6ICcsIG1zZyk7XHJcbiAgICAgIC8vIGxldCByZXNwb25zZU1zZyA9IHtcclxuICAgICAgLy8gICBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCBmcm9tOiBTYW5kYm94UmVnaXN0cnkuSW50ZXJuYWxEZXBsb3lBZGRyZXNzLCB0bzogU2FuZGJveFJlZ2lzdHJ5LkV4dGVybmFsRGVwbG95QWRkcmVzc1xyXG4gICAgICAvLyB9O1xyXG5cclxuICAgICAgc3dpdGNoIChtc2cudHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2NyZWF0ZSc6IF90aGlzLl9vbkRlcGxveShtc2cpOyBicmVhaztcclxuICAgICAgICBjYXNlICdkZWxldGUnOiBfdGhpcy5fb25SZW1vdmUobXNnKTsgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbXBvbmVudHMoKSB7IHJldHVybiB0aGlzLl9jb21wb25lbnRzOyB9XHJcblxyXG4gIF9yZXNwb25zZU1zZyhtc2csIGNvZGUsIHZhbHVlKSB7XHJcblxyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICAvLyBsZXQgbWVzc2FnZUZhY3RvcnkgPSBfdGhpcy5tZXNzYWdlRmFjdG9yeTtcclxuXHJcbiAgICAvL0ZMT1ctT1VUOiBnZW5lcmljIHJlc3BvbnNlIG1lc3NhZ2UgdG8gZXh0ZXJuYWwgU2FuZGJveCAoZGVwbG95IGFuZCB1bi1kZXBsb3kgcmVzcG9uc2VzKVxyXG4gICAgbGV0IHJlc3BvbnNlTXNnID0ge1xyXG4gICAgICBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCBmcm9tOiBTYW5kYm94UmVnaXN0cnkuSW50ZXJuYWxEZXBsb3lBZGRyZXNzLCB0bzogU2FuZGJveFJlZ2lzdHJ5LkV4dGVybmFsRGVwbG95QWRkcmVzc1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBDaGFuZWdlIHRoZSBvcmlnaW4gbWVzc2FnZSwgYmVjYXVzZSB0aGUgcmVzcG9uc2U7XHJcbiAgICAvLyBtc2cuZnJvbSA9IFNhbmRib3hSZWdpc3RyeS5JbnRlcm5hbERlcGxveUFkZHJlc3M7XHJcbiAgICAvLyBtc2cudG8gPSBTYW5kYm94UmVnaXN0cnkuRXh0ZXJuYWxEZXBsb3lBZGRyZXNzO1xyXG5cclxuICAgIGxldCBib2R5ID0ge307XHJcbiAgICBpZiAoY29kZSkgYm9keS5jb2RlID0gY29kZTtcclxuICAgIGlmICh2YWx1ZSkgYm9keS5kZXNjID0gdmFsdWU7XHJcblxyXG4gICAgcmVzcG9uc2VNc2cuYm9keSA9IGJvZHk7XHJcblxyXG4gICAgLy8gcmV0dXJuIG1lc3NhZ2VGYWN0b3J5LmNyZWF0ZVJlc3BvbnNlKG1zZywgY29kZSwgdmFsdWUpO1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlTXNnO1xyXG4gIH1cclxuXHJcbiAgLy9GTE9XLUlOOiBtZXNzYWdlIGZyb20gdGhlIHJ1bnRpbWUgY29yZSBTYW5kYm94IC0+IGRlcGxveUNvbXBvbmVudFxyXG4gIF9vbkRlcGxveShtc2cpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgY29uZmlnID0gbXNnLmJvZHkuY29uZmlnO1xyXG4gICAgbGV0IGNvbXBvbmVudFVSTCA9IG1zZy5ib2R5LnVybDtcclxuICAgIGxldCBzb3VyY2VDb2RlID0gbXNnLmJvZHkuc291cmNlQ29kZTtcclxuICAgIGxldCByZXNwb25zZUNvZGU7XHJcbiAgICBsZXQgcmVzcG9uc2VEZXNjO1xyXG5cclxuICAgIGlmICghX3RoaXMuX2NvbXBvbmVudHMuaGFzT3duUHJvcGVydHkoY29tcG9uZW50VVJMKSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIF90aGlzLl9jb21wb25lbnRzW2NvbXBvbmVudFVSTF0gPSBfdGhpcy5fY3JlYXRlKGNvbXBvbmVudFVSTCwgc291cmNlQ29kZSwgY29uZmlnKTtcclxuICAgICAgICByZXNwb25zZUNvZGUgPSAyMDA7XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgcmVzcG9uc2VDb2RlID0gNTAwO1xyXG4gICAgICAgIHJlc3BvbnNlRGVzYyA9IGVycm9yO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNwb25zZUNvZGUgPSA1MDA7XHJcbiAgICAgIHJlc3BvbnNlRGVzYyA9ICdJbnN0YW5jZSAnICsgY29tcG9uZW50VVJMICsgJyBhbHJlYWR5IGV4aXN0ISc7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHJlc3BvbnNlTXNnID0gX3RoaXMuX3Jlc3BvbnNlTXNnKG1zZywgcmVzcG9uc2VDb2RlLCByZXNwb25zZURlc2MpO1xyXG4gICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShyZXNwb25zZU1zZyk7XHJcbiAgfVxyXG5cclxuICAvL0ZMT1ctSU46IG1lc3NhZ2UgZnJvbSB0aGUgcnVudGltZSBjb3JlIFNhbmRib3ggLT4gcmVtb3ZlQ29tcG9uZW50XHJcbiAgX29uUmVtb3ZlKG1zZykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBjb21wb25lbnRVUkwgPSBtc2cuYm9keS51cmw7XHJcbiAgICBsZXQgcmVzcG9uc2VDb2RlO1xyXG4gICAgbGV0IHJlc3BvbnNlRGVzYztcclxuXHJcbiAgICBpZiAoX3RoaXMuX2NvbXBvbmVudHMuaGFzT3duUHJvcGVydHkoY29tcG9uZW50VVJMKSkge1xyXG4gICAgICAvL3JlbW92ZSBjb21wb25lbnQgZnJvbSB0aGUgcG9vbCBhbmQgYWxsIGxpc3RlbmVyc1xyXG4gICAgICBkZWxldGUgX3RoaXMuX2NvbXBvbmVudHNbY29tcG9uZW50VVJMXTtcclxuICAgICAgX3RoaXMuX2J1cy5yZW1vdmVBbGxMaXN0ZW5lcnNPZihjb21wb25lbnRVUkwpO1xyXG4gICAgICByZXNwb25zZUNvZGUgPSAyMDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNwb25zZUNvZGUgPSA1MDA7XHJcbiAgICAgIHJlc3BvbnNlRGVzYyA9ICdJbnN0YW5jZSAnICsgY29tcG9uZW50VVJMICsgJyBkb2VzblxcJ3QgZXhpc3QhJztcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcmVzcG9uc2VNc2cgPSBfdGhpcy5fcmVzcG9uc2VNc2cobXNnLCByZXNwb25zZUNvZGUsIHJlc3BvbnNlRGVzYyk7XHJcblxyXG4gICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShyZXNwb25zZU1zZyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgdGhlIGludGVybmFsIHNhbmRib3ggY29kZS5cclxuICAgKiBAcGFyYW0gIHtDb21wb25lbnRVUkx9IHVybCBVUkwgdXNlZCBmb3IgdGhlIGluc3RhbmNlXHJcbiAgICogQHBhcmFtICB7c3RyaW5nfSBzb3VyY2VDb2RlIENvZGUgb2YgdGhlIGNvbXBvbmVudFxyXG4gICAqIEBwYXJhbSAge0NvbmZpZ30gY29uZmlnIENvbmZpZ3VyYXRpb24gcGFyYW1ldGVyc1xyXG4gICAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBpbnN0YW5jZSBvZiB0aGUgY29tcG9uZW50IG9yIHRocm93IGFuIGVycm9yIFwidGhyb3cgJ2Vycm9yIG1lc3NhZ2UnXCJcclxuICAgKi9cclxuICBfY3JlYXRlKHVybCwgc291cmNlQ29kZSwgY29uZmlnKSB7XHJcbiAgICAvL2ltcGxlbWVudGF0aW9uIHNwZWNpZmljXHJcbiAgICAvKiBleGFtcGxlIGNvZGU6XHJcbiAgICAgIGV2YWwoc291cmNlQ29kZSk7XHJcbiAgICAgIHJldHVybiBhY3RpdmF0ZSh1cmwsIF90aGlzLl9idXMsIGNvbmZpZyk7XHJcbiAgICAqL1xyXG4gIH1cclxufVxyXG5cclxuU2FuZGJveFJlZ2lzdHJ5LkV4dGVybmFsRGVwbG95QWRkcmVzcyA9ICdoeXBlcnR5LXJ1bnRpbWU6Ly9zYW5kYm94L2V4dGVybmFsJztcclxuU2FuZGJveFJlZ2lzdHJ5LkludGVybmFsRGVwbG95QWRkcmVzcyA9ICdoeXBlcnR5LXJ1bnRpbWU6Ly9zYW5kYm94L2ludGVybmFsJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFNhbmRib3hSZWdpc3RyeTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9zYW5kYm94L1NhbmRib3hSZWdpc3RyeS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBOzs7OztBQUtBOzs7OztBQUtBO0FBQ0E7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUZBO0FBSUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7Ozs7QUFJQTs7O0FBeEZBO0FBQUE7QUFBQTs7Ozs7QUEyRkE7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///463\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(60);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(68);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(69);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Bus2 = __webpack_require__(204);\n\nvar _Bus3 = _interopRequireDefault(_Bus2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* @author micaelpedrosa@gmail.com\r\n* Message BUS Interface is an extension of the Bus\r\n* It is used mainly in the internal sandbox routing.\r\n*/\nvar MiniBus = function (_Bus) {\n (0, _inherits3.default)(MiniBus, _Bus);\n\n function MiniBus() {\n (0, _classCallCheck3.default)(this, MiniBus);\n return (0, _possibleConstructorReturn3.default)(this, (MiniBus.__proto__ || (0, _getPrototypeOf2.default)(MiniBus)).call(this));\n }\n\n /**\r\n * Post a message for routing. Message is routed directly to the external routing _onPostMessage.\r\n * @param {Message} inMsg JSON with mandatory Message structure {id, type, from, to}\r\n * @param {Callback} responseCallback Optional callback if a response is expected from the request. A response will be always sent, even if it is a \"Timeout\".\r\n * @return {number} the Message id\r\n */\n\n\n (0, _createClass3.default)(MiniBus, [{\n key: 'postMessage',\n value: function postMessage(inMsg, responseCallback, timeout) {\n var _this = this;\n\n _this._genId(inMsg);\n _this._responseCallback(inMsg, responseCallback, timeout);\n\n //always send to external (to core MessageBus)\n _this._onPostMessage(inMsg);\n\n return inMsg.id;\n }\n\n //internal method used when a message is received by an external routing system\n\n }, {\n key: '_onMessage',\n value: function _onMessage(msg) {\n var _this = this;\n\n if (!_this._onResponse(msg)) {\n var itemList = _this._subscriptions[msg.to];\n if (itemList) {\n _this._publishOn(itemList, msg);\n if (!msg.to.startsWith('hyperty')) {\n _this._publishOnDefault(msg);\n }\n } else {\n _this._publishOnDefault(msg);\n }\n }\n }\n }]);\n return MiniBus;\n}(_Bus3.default); /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\n\nexports.default = MiniBus;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDY0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvTWluaUJ1cy5qcz9lNTIwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuaW1wb3J0IEJ1cyBmcm9tICcuL0J1cyc7XHJcblxyXG4vKipcclxuKiBAYXV0aG9yIG1pY2FlbHBlZHJvc2FAZ21haWwuY29tXHJcbiogTWVzc2FnZSBCVVMgSW50ZXJmYWNlIGlzIGFuIGV4dGVuc2lvbiBvZiB0aGUgQnVzXHJcbiogSXQgaXMgdXNlZCBtYWlubHkgaW4gdGhlIGludGVybmFsIHNhbmRib3ggcm91dGluZy5cclxuKi9cclxuY2xhc3MgTWluaUJ1cyBleHRlbmRzIEJ1cyB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvc3QgYSBtZXNzYWdlIGZvciByb3V0aW5nLiBNZXNzYWdlIGlzIHJvdXRlZCBkaXJlY3RseSB0byB0aGUgZXh0ZXJuYWwgcm91dGluZyBfb25Qb3N0TWVzc2FnZS5cclxuICAgKiBAcGFyYW0gIHtNZXNzYWdlfSBpbk1zZyAgICAgICAgICAgIEpTT04gd2l0aCBtYW5kYXRvcnkgTWVzc2FnZSBzdHJ1Y3R1cmUge2lkLCB0eXBlLCBmcm9tLCB0b31cclxuICAgKiBAcGFyYW0gIHtDYWxsYmFja30gcmVzcG9uc2VDYWxsYmFjayBPcHRpb25hbCBjYWxsYmFjayBpZiBhIHJlc3BvbnNlIGlzIGV4cGVjdGVkIGZyb20gdGhlIHJlcXVlc3QuIEEgcmVzcG9uc2Ugd2lsbCBiZSBhbHdheXMgc2VudCwgZXZlbiBpZiBpdCBpcyBhIFwiVGltZW91dFwiLlxyXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgICAgICAgICAgICB0aGUgTWVzc2FnZSBpZFxyXG4gICAqL1xyXG4gIHBvc3RNZXNzYWdlKGluTXNnLCByZXNwb25zZUNhbGxiYWNrLCB0aW1lb3V0KSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIF90aGlzLl9nZW5JZChpbk1zZyk7XHJcbiAgICBfdGhpcy5fcmVzcG9uc2VDYWxsYmFjayhpbk1zZywgcmVzcG9uc2VDYWxsYmFjaywgdGltZW91dCk7XHJcblxyXG4gICAgLy9hbHdheXMgc2VuZCB0byBleHRlcm5hbCAodG8gY29yZSBNZXNzYWdlQnVzKVxyXG4gICAgX3RoaXMuX29uUG9zdE1lc3NhZ2UoaW5Nc2cpO1xyXG5cclxuICAgIHJldHVybiBpbk1zZy5pZDtcclxuICB9XHJcblxyXG4gIC8vaW50ZXJuYWwgbWV0aG9kIHVzZWQgd2hlbiBhIG1lc3NhZ2UgaXMgcmVjZWl2ZWQgYnkgYW4gZXh0ZXJuYWwgcm91dGluZyBzeXN0ZW1cclxuICBfb25NZXNzYWdlKG1zZykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBpZiAoIV90aGlzLl9vblJlc3BvbnNlKG1zZykpIHtcclxuICAgICAgbGV0IGl0ZW1MaXN0ID0gX3RoaXMuX3N1YnNjcmlwdGlvbnNbbXNnLnRvXTtcclxuICAgICAgaWYgKGl0ZW1MaXN0KSB7XHJcbiAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKTtcclxuICAgICAgICBpZiAoIW1zZy50by5zdGFydHNXaXRoKCdoeXBlcnR5JykpIHtcclxuICAgICAgICAgIF90aGlzLl9wdWJsaXNoT25EZWZhdWx0KG1zZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIF90aGlzLl9wdWJsaXNoT25EZWZhdWx0KG1zZyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNaW5pQnVzO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2J1cy9NaW5pQnVzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTtBQUNBOzs7OztBQUNBOzs7OztBQUtBOzs7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQXBFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0VBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///464\n")},function(module,exports,__webpack_require__){eval("var core = __webpack_require__(13);\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDY1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9qc29uL3N0cmluZ2lmeS5qcz9hYTQyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpO1xudmFyICRKU09OID0gY29yZS5KU09OIHx8IChjb3JlLkpTT04gPSB7IHN0cmluZ2lmeTogSlNPTi5zdHJpbmdpZnkgfSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHJldHVybiAkSlNPTi5zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3VtZW50cyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5LmpzXG4vLyBtb2R1bGUgaWQgPSA0NjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///465\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(60);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(68);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(69);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _RegistryDataModel2 = __webpack_require__(467);\n\nvar _RegistryDataModel3 = _interopRequireDefault(_RegistryDataModel2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* @author: Gil Dias (gil.dias@tecnico.ulisboa.pt)\r\n* HypertyInstance Data Model used to model instances of Hyperties running in devices and servers.\r\n*/\nvar HypertyInstance = function (_RegistryDataModel) {\n (0, _inherits3.default)(HypertyInstance, _RegistryDataModel);\n\n function HypertyInstance(id, url, descriptorURL, descriptor, hypertyURL, user, guid, runtime, context, p2pHandler, p2pRequester, dataSchemes, resources, startingTime, lastModified) {\n (0, _classCallCheck3.default)(this, HypertyInstance);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (HypertyInstance.__proto__ || (0, _getPrototypeOf2.default)(HypertyInstance)).call(this, id, url, descriptorURL, p2pRequester, startingTime, lastModified));\n\n var _this = _this2;\n _this._descriptor = descriptor;\n _this._hypertyURL = hypertyURL;\n _this._user = user;\n _this._guid = guid;\n _this._runtime = runtime;\n _this._context = context;\n _this._p2pHandler = p2pHandler;\n _this._dataSchemes = dataSchemes;\n _this._resources = resources;\n return _this2;\n }\n\n (0, _createClass3.default)(HypertyInstance, [{\n key: 'user',\n set: function set(identity) {\n var _this = this;\n _this.user = identity;\n },\n get: function get() {\n var _this = this;\n return _this._user;\n }\n }, {\n key: 'hypertyURL',\n get: function get() {\n var _this = this;\n return _this._hypertyURL;\n }\n }, {\n key: 'descriptor',\n get: function get() {\n var _this = this;\n return _this._descriptor;\n }\n }, {\n key: 'objectName',\n get: function get() {\n var _this = this;\n return _this._descriptor._objectName;\n }\n }, {\n key: 'p2pHandler',\n get: function get() {\n var _this = this;\n return _this._p2pHandler;\n }\n }, {\n key: 'dataSchemes',\n get: function get() {\n var _this = this;\n return _this._dataSchemes;\n }\n }, {\n key: 'resources',\n get: function get() {\n var _this = this;\n return _this._resources;\n }\n }, {\n key: 'runtimeURL',\n get: function get() {\n var _this = this;\n return _this._runtime;\n }\n }]);\n return HypertyInstance;\n}(_RegistryDataModel3.default); /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\n\nexports.default = HypertyInstance;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDY2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9yZWdpc3RyeS9IeXBlcnR5SW5zdGFuY2UuanM/Zjg1OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxyXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxyXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXHJcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xyXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxyXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXHJcbipcclxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuKlxyXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbipcclxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKiovXHJcbmltcG9ydCBSZWdpc3RyeURhdGFNb2RlbCBmcm9tICcuL1JlZ2lzdHJ5RGF0YU1vZGVsJztcclxuXHJcbi8qKlxyXG4qICAgQGF1dGhvcjogR2lsIERpYXMgKGdpbC5kaWFzQHRlY25pY28udWxpc2JvYS5wdClcclxuKiAgIEh5cGVydHlJbnN0YW5jZSBEYXRhIE1vZGVsIHVzZWQgdG8gbW9kZWwgaW5zdGFuY2VzIG9mIEh5cGVydGllcyBydW5uaW5nIGluIGRldmljZXMgYW5kIHNlcnZlcnMuXHJcbiovXHJcbmNsYXNzIEh5cGVydHlJbnN0YW5jZSBleHRlbmRzIFJlZ2lzdHJ5RGF0YU1vZGVsIHtcclxuXHJcbiAgY29uc3RydWN0b3IoaWQsIHVybCwgZGVzY3JpcHRvclVSTCwgZGVzY3JpcHRvciwgaHlwZXJ0eVVSTCwgdXNlciwgZ3VpZCwgcnVudGltZSwgY29udGV4dCwgcDJwSGFuZGxlciwgcDJwUmVxdWVzdGVyLCBkYXRhU2NoZW1lcywgcmVzb3VyY2VzLCBzdGFydGluZ1RpbWUsIGxhc3RNb2RpZmllZCkge1xyXG4gICAgc3VwZXIoaWQsIHVybCwgZGVzY3JpcHRvclVSTCwgcDJwUmVxdWVzdGVyLCBzdGFydGluZ1RpbWUsIGxhc3RNb2RpZmllZCk7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgX3RoaXMuX2Rlc2NyaXB0b3IgPSBkZXNjcmlwdG9yO1xyXG4gICAgX3RoaXMuX2h5cGVydHlVUkwgPSBoeXBlcnR5VVJMO1xyXG4gICAgX3RoaXMuX3VzZXIgPSB1c2VyO1xyXG4gICAgX3RoaXMuX2d1aWQgPSBndWlkO1xyXG4gICAgX3RoaXMuX3J1bnRpbWUgPSBydW50aW1lO1xyXG4gICAgX3RoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xyXG4gICAgX3RoaXMuX3AycEhhbmRsZXIgPSBwMnBIYW5kbGVyO1xyXG4gICAgX3RoaXMuX2RhdGFTY2hlbWVzID0gZGF0YVNjaGVtZXM7XHJcbiAgICBfdGhpcy5fcmVzb3VyY2VzID0gcmVzb3VyY2VzO1xyXG4gIH1cclxuXHJcbiAgc2V0IHVzZXIoaWRlbnRpdHkpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBfdGhpcy51c2VyID0gaWRlbnRpdHk7XHJcbiAgfVxyXG5cclxuICBnZXQgdXNlcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gX3RoaXMuX3VzZXI7XHJcbiAgfVxyXG5cclxuICBnZXQgaHlwZXJ0eVVSTCgpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gX3RoaXMuX2h5cGVydHlVUkw7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVzY3JpcHRvcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gX3RoaXMuX2Rlc2NyaXB0b3I7XHJcbiAgfVxyXG5cclxuICBnZXQgb2JqZWN0TmFtZSgpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gX3RoaXMuX2Rlc2NyaXB0b3IuX29iamVjdE5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgcDJwSGFuZGxlcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gX3RoaXMuX3AycEhhbmRsZXI7XHJcbiAgfVxyXG5cclxuICBnZXQgZGF0YVNjaGVtZXMoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIF90aGlzLl9kYXRhU2NoZW1lcztcclxuICB9XHJcblxyXG4gIGdldCByZXNvdXJjZXMoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIF90aGlzLl9yZXNvdXJjZXM7XHJcbiAgfVxyXG5cclxuICBnZXQgcnVudGltZVVSTCgpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gX3RoaXMuX3J1bnRpbWU7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBIeXBlcnR5SW5zdGFuY2U7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcmVnaXN0cnkvSHlwZXJ0eUluc3RhbmNlLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTtBQUNBOzs7OztBQUNBOzs7O0FBSUE7OztBQUVBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVhBO0FBWUE7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQXZGQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEZBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///466\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the "License");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an "AS IS" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n/**\r\n* @author: Gil Dias (gil.dias@tecnico.ulisboa.pt)\r\n* Registry Data Model includes all Objects to be handled by the Registry functionality including\r\n*/\nvar RegistryDataModel = function () {\n function RegistryDataModel(id, url, descriptorURL, p2pRequester, startingTime, lastModified, status, stubs, stubsConfiguration) {\n (0, _classCallCheck3.default)(this, RegistryDataModel);\n\n var _this = this;\n\n _this._id = id;\n _this._url = url;\n _this._descriptorURL = descriptorURL;\n _this._startingTime = startingTime;\n _this._lastModified = lastModified;\n _this._status = status;\n _this._stubs = stubs;\n _this._stubsConfiguration = stubsConfiguration;\n _this._p2pRequester = p2pRequester;\n }\n\n (0, _createClass3.default)(RegistryDataModel, [{\n key: "id",\n get: function get() {\n var _this = this;\n return _this._id;\n }\n }, {\n key: "url",\n get: function get() {\n var _this = this;\n return _this._url;\n }\n }, {\n key: "descriptor",\n get: function get() {\n var _this = this;\n return _this._descriptorURL;\n }\n }, {\n key: "p2pRequester",\n get: function get() {\n var _this = this;\n return _this._p2pRequester;\n }\n }, {\n key: "lastModified",\n get: function get() {\n var _this = this;\n return _this._lastModified;\n }\n }]);\n return RegistryDataModel;\n}();\n\nexports.default = RegistryDataModel;\nmodule.exports = exports["default"];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDY3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9yZWdpc3RyeS9SZWdpc3RyeURhdGFNb2RlbC5qcz83YTJmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuLyoqXHJcbiogICBAYXV0aG9yOiBHaWwgRGlhcyAoZ2lsLmRpYXNAdGVjbmljby51bGlzYm9hLnB0KVxyXG4qICAgUmVnaXN0cnkgRGF0YSBNb2RlbCBpbmNsdWRlcyBhbGwgT2JqZWN0cyB0byBiZSBoYW5kbGVkIGJ5IHRoZSBSZWdpc3RyeSBmdW5jdGlvbmFsaXR5IGluY2x1ZGluZ1xyXG4qL1xyXG5jbGFzcyBSZWdpc3RyeURhdGFNb2RlbCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGlkLCB1cmwsIGRlc2NyaXB0b3JVUkwsIHAycFJlcXVlc3Rlciwgc3RhcnRpbmdUaW1lLCBsYXN0TW9kaWZpZWQsIHN0YXR1cywgc3R1YnMsIHN0dWJzQ29uZmlndXJhdGlvbikge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBfdGhpcy5faWQgPSBpZDtcclxuICAgIF90aGlzLl91cmwgPSB1cmw7XHJcbiAgICBfdGhpcy5fZGVzY3JpcHRvclVSTCA9IGRlc2NyaXB0b3JVUkw7XHJcbiAgICBfdGhpcy5fc3RhcnRpbmdUaW1lID0gc3RhcnRpbmdUaW1lO1xyXG4gICAgX3RoaXMuX2xhc3RNb2RpZmllZCA9IGxhc3RNb2RpZmllZDtcclxuICAgIF90aGlzLl9zdGF0dXMgPSBzdGF0dXM7XHJcbiAgICBfdGhpcy5fc3R1YnMgPSBzdHVicztcclxuICAgIF90aGlzLl9zdHVic0NvbmZpZ3VyYXRpb24gPSBzdHVic0NvbmZpZ3VyYXRpb247XHJcbiAgICBfdGhpcy5fcDJwUmVxdWVzdGVyID0gcDJwUmVxdWVzdGVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlkKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBfdGhpcy5faWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgdXJsKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBfdGhpcy5fdXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlc2NyaXB0b3IoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIF90aGlzLl9kZXNjcmlwdG9yVVJMO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHAycFJlcXVlc3RlcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gX3RoaXMuX3AycFJlcXVlc3RlcjtcclxuICB9XHJcblxyXG4gIGdldCBsYXN0TW9kaWZpZWQoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIF90aGlzLl9sYXN0TW9kaWZpZWQ7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cnlEYXRhTW9kZWw7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcmVnaXN0cnkvUmVnaXN0cnlEYXRhTW9kZWwuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTs7OztBQUlBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///467\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('P2PConnectionResolve');\n\n/**\r\n* To process address resolution for p2p connections\r\n*/\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n\n// Log System\n\nvar P2PConnectionResolve = function () {\n function P2PConnectionResolve(registry) {\n (0, _classCallCheck3.default)(this, P2PConnectionResolve);\n\n var _this = this;\n _this._registry = registry;\n _this._remoteP2PEntities = {}; // All remote entities and associated runtime url that are reachable with existing p2p connections\n }\n\n /**\r\n * Verifies if remote Entity can be reached with a P2P Connection.\r\n * @param {URL.URL} info object URL\r\n * @return {HypertyDataObjectInstance} addressURL return the Data Object instance registered URL, return undefined otherwise\r\n */\n\n (0, _createClass3.default)(P2PConnectionResolve, [{\n key: 'checkP2P',\n value: function checkP2P(msg) {\n\n if (!msg.hasOwnProperty('to')) {\n // throw Error('The p2p verification was failed');\n return _promise2.default.reject('The p2p verification was failed');\n }\n\n var scheme = msg.to.split('://')[0];\n\n var comp = msg.to.split('://')[1].split('/')[2];\n\n var url = void 0;\n\n if (comp) url = msg.to.substring(0, msg.to.indexOf('/' + comp));else url = msg.to;\n\n var p2p = {};\n\n if (msg.body && msg.body.p2p) p2p.p2p = msg.body.p2p;\n\n if (msg.body && msg.body.p2pHandler && msg.body.p2pRequester) {\n p2p.p2pHandler = msg.body.p2pHandler;\n p2p.p2pRequester = msg.body.p2pRequester;\n p2p.runtime = msg.body.p2pHandler.split('/p2phandler/')[0];\n }\n\n switch (scheme) {\n case 'runtime':\n return this.checkP2PRuntime(url, p2p);\n break;\n default:\n return this.checkP2PEntity(url, p2p);\n break;\n\n }\n }\n\n /**\r\n * Verifies if remote Entity (Hyperty or Data Object) can be reached with a P2P Connection.\r\n * @param {string} url Remote Entity URL to be checked\r\n * @param {object} p2p p2p information to be used including ´runtime´ with remote Runtime URL, 'p2pHandler' remote P2P Handler Stub URL and p2pRequester with Catalogue URL of P2P Requester to be used\r\n * @return {promise} registeredEntity if p2p connection is possible it returns p2p information to be used in the connection, otherwise the promise is rejected\r\n */\n\n }, {\n key: 'checkP2PEntity',\n value: function checkP2PEntity(url, p2p) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n var remoteEntity = _this._remoteP2PEntities[url];\n\n if (remoteEntity) resolve(remoteEntity);else if (p2p.runtime) resolve(p2p); // use provided p2p if available in the message body\n else if (p2p.p2p) {\n // otherwise look on Domain Registry\n\n log.log('[Registry - checkP2PEntity] - search in Domain Registry: ', url);\n\n var message = {\n type: 'read',\n from: _this._registry.registryURL,\n to: 'domain://registry.' + _this._registry._domain,\n body: {\n resource: url\n }\n };\n\n _this._registry._messageBus.postMessage(message, function (reply) {\n log.log('[Registry - checkP2PEntity] Domain Registry reply', reply);\n if ('value' in reply.body) {\n\n //todo: store retrieved entity\n var resolvedEntity = reply.body.value;\n\n if (resolvedEntity.hasOwnProperty('p2pHandler')) {\n resolve(resolvedEntity);\n } else {\n reject('[Registry checkP2PEntity] Hyperty found does not support P2P', reply.body.value);\n }\n } else {\n reject('[Registry checkP2PEntity] Hyperty with P2PHandler not found', reply.body.code);\n }\n });\n } else reject('[Registry checkP2PEntity] No P2P Connection available for ', url);\n });\n }\n\n /**\r\n * Verifies if remote Runtime can be reached with a P2P Connection.\r\n * @param {URL.URL} runtimeURL Runtime URL\r\n * @return {Object} p2pConnection return the P2PConnection instance registered URL, return undefined otherwise\r\n */\n\n }, {\n key: 'checkP2PRuntime',\n value: function checkP2PRuntime(runtimeURL, p2p) {\n var _this = this;\n\n var registeredRuntime = {};\n\n // look on locally stored p2p connections\n return new _promise2.default(function (resolve, reject) {\n if (_this._registry.p2pConnectionList[runtimeURL]) {\n resolve({ runtime: runtimeURL });\n } else if (p2p.runtime) {\n registeredRuntime = p2p;\n resolve(registeredRuntime);\n } else reject('[Registry.P2PConnectionResolve.checkP2PRuntime] No P2P Connection found to ', runtimeURL);\n });\n }\n\n /**\r\n * Verifies if remote Hyperty can be reached with a P2P Connection.\r\n * @param {JSON} info object or entity charateristics info\r\n * @return {addressURL} addressURL return the URL if there is any previousy registered URL, return undefined otherwise\r\n */\n\n }, {\n key: 'checkP2PHyperty',\n value: function checkP2PHyperty(hypertyURL, p2p) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n var hyperty = void 0;\n\n // look on locally stored hyperties\n\n for (var i in _this._registry.remoteHypertyList) {\n hyperty = _this._registry.remoteHypertyList[i];\n\n log.log('[Registry - checkP2PHyperty] - for each Hyperty: ', hyperty);\n\n // todo: change to \"hyperty.url\" to be aligned with hyperty instance data model spec\n\n if (hyperty.hypertyID === hypertyURL) {\n\n if (hyperty.hasOwnProperty('p2pHandler')) {\n resolve(hyperty);\n } else {\n reject('[Registry checkP2PHyperty] Hyperty found does not support P2P', hyperty);\n }\n return;\n }\n }\n\n if (!hyperty && p2p.runtime) resolve(p2p); // use provided p2p if available in the message body\n else if (!hyperty && p2p.p2p) {\n // otherwise look on Domain Registry\n\n log.log('[Registry - checkP2PHyperty] - search in Domain Registry: ', hyperty);\n\n var message = {\n type: 'read',\n from: _this._registry.registryURL,\n to: 'domain://registry.' + _this._registry._domain,\n body: {\n resource: hypertyURL\n }\n };\n\n _this._registry._messageBus.postMessage(message, function (reply) {\n log.log('[Registry - checkP2PHyperty] Domain Registry reply', reply);\n if ('value' in reply.body) {\n\n //todo: store retrieved hyperty\n var resolvedHyperty = reply.body.value;\n\n _this._registry.remoteHypertyList.push(resolvedHyperty);\n\n if (resolvedHyperty.hasOwnProperty('p2pHandler')) {\n resolve(resolvedHyperty);\n } else {\n reject('[Registry checkP2PHyperty] Hyperty found does not support P2P', reply.body.value);\n }\n } else {\n reject('[Registry checkP2PHyperty] Hyperty with P2PHandler not found', reply.body.code);\n }\n });\n } else reject('[Registry checkP2PHyperty] No P2P Connection available for ', hypertyURL);\n });\n }\n\n /**\r\n * Verifies if remote Data Object can be reached with a P2P Connection.\r\n * @param {URL.URL} DataObjectURL object URL\r\n * @return {HypertyDataObjectInstance} addressURL return the Data Object instance registered URL, return undefined otherwise\r\n */\n\n }, {\n key: 'checkP2PDataObject',\n value: function checkP2PDataObject(url, p2p) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n // look on locally stored Remote Data Objects\n\n var dataobject = _this._registry.remoteDataObjectList.filter(function (i) {\n return _this._registry.remoteDataObjectList[i].url === url;\n });\n\n if (dataobject.length !== 0 && dataobject[0].p2pRequester) {\n resolve(dataobject[0]);\n } else if (dataobject.length !== 0) {\n reject('[Registry checkP2PDataObject] Data Object found does not support P2P', dataobject[0]);\n } else if (dataobject.length === 0 && p2p.runtime) resolve(p2p); // use provided p2p info if available in the message body\n else if (dataobject.length && p2p.p2p) {\n // otherwise look on Domain Registry\n\n // look on Domain Registry\n\n var message = {\n type: 'read',\n from: _this._registry.registryURL,\n to: 'domain://registry.' + _this._registry._domain,\n body: {\n resource: url\n }\n };\n\n _this._registry._messageBus.postMessage(message, function (reply) {\n log.log('discover data object per url reply', reply);\n if ('value' in reply.body) {\n\n //todo: store retrieved hyperty\n var resolvedDataObject = reply.body.value;\n\n _this._registry.remoteDataObjectList.push(resolvedDataObject);\n\n if (resolvedDataObject.p2pRequester) {\n resolve(resolvedDataObject);\n } else {\n reject('[Registry checkP2PDataObject] Data Object found does not support P2P', reply.body.value);\n }\n } else {\n reject('[Registry checkP2PDataObject] not found', reply.body.code);\n }\n });\n } else reject('[Registry checkP2PDataObject] no P2P Connection found');\n });\n }\n }, {\n key: 'addRemoteP2PEntity',\n value: function addRemoteP2PEntity(url, runtime) {\n this._remoteP2PEntities[url] = runtime;\n }\n }, {\n key: 'removeRemoteP2PEntity',\n value: function removeRemoteP2PEntity(url) {\n delete this._remoteP2PEntities[url];\n }\n }, {\n key: 'reconnectP2PRequester',\n value: function reconnectP2PRequester(p2pRequester) {\n var _this = this;\n\n log.log('[P2PConenctionResolve.reconnectP2PRequester] lets try to reconnect P2P Requester Stub: ', p2pRequester);\n\n return new _promise2.default(function (resolve, reject) {\n\n var remoteRuntime = p2pRequester.runtime;\n\n var message = {\n type: 'execute',\n from: _this._registry.registryURL,\n to: p2pRequester.url,\n body: {\n method: 'connect',\n params: [p2pRequester.p2pHandler]\n }\n };\n\n // lets prepare the p2pRequesterSTub reconnect by setting an observer to its status changes\n\n _this._registry.watchingYou.observe('p2pRequesterStub', function (change) {\n\n log.log('[P2PConenctionResolve.reconnectP2PRequester] p2pRequesterStubs changed ' + _this._registry.p2pRequesterStub);\n\n if (change.keypath.split('.')[0] === remoteRuntime && change.name === 'status') {\n switch (change.newValue) {\n case 'live':\n log.log('[P2PConenctionResolve.reconnectP2PRequester] p2pRequester is live ' + _this._registry.p2pRequesterStub[remoteRuntime]);\n resolve(_this._registry.p2pRequesterStub[remoteRuntime].url);\n break;\n case 'failed':\n log.log('[P2PConenctionResolve.reconnectP2PRequester] p2pRequester reconnect failed ' + _this._registry.p2pRequesterStub[remoteRuntime]);\n reject('P2P Requester reconnect failed');\n break;\n default:\n }\n }\n });\n\n // stub load\n _this._registry._messageBus.postMessage(message, function (reply) {\n log.log('[P2PConenctionResolve.reconnectP2PRequester] reconnect request reply', reply);\n });\n });\n }\n }]);\n return P2PConnectionResolve;\n}();\n\nexports.default = P2PConnectionResolve;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDY4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9yZWdpc3RyeS9QMlBDb25uZWN0aW9uUmVzb2x2ZS5qcz9iNTVkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuXHJcbi8vIExvZyBTeXN0ZW1cclxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcclxubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1AyUENvbm5lY3Rpb25SZXNvbHZlJyk7XHJcblxyXG4vKipcclxuKiAgIFRvIHByb2Nlc3MgYWRkcmVzcyByZXNvbHV0aW9uIGZvciBwMnAgY29ubmVjdGlvbnNcclxuKi9cclxuY2xhc3MgUDJQQ29ubmVjdGlvblJlc29sdmUgIHtcclxuXHJcbiAgY29uc3RydWN0b3IocmVnaXN0cnkpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBfdGhpcy5fcmVnaXN0cnkgPSByZWdpc3RyeTtcclxuICAgIF90aGlzLl9yZW1vdGVQMlBFbnRpdGllcyA9IHt9OyAvLyBBbGwgcmVtb3RlIGVudGl0aWVzIGFuZCBhc3NvY2lhdGVkIHJ1bnRpbWUgdXJsIHRoYXQgYXJlIHJlYWNoYWJsZSB3aXRoIGV4aXN0aW5nIHAycCBjb25uZWN0aW9uc1xyXG5cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAqIFZlcmlmaWVzIGlmIHJlbW90ZSBFbnRpdHkgY2FuIGJlIHJlYWNoZWQgd2l0aCBhIFAyUCBDb25uZWN0aW9uLlxyXG4gICogQHBhcmFtICB7VVJMLlVSTH0gICAgICAgIGluZm8gICAgICAgICAgIG9iamVjdCBVUkxcclxuICAqIEByZXR1cm4ge0h5cGVydHlEYXRhT2JqZWN0SW5zdGFuY2V9ICBhZGRyZXNzVVJMICAgICByZXR1cm4gdGhlIERhdGEgT2JqZWN0IGluc3RhbmNlIHJlZ2lzdGVyZWQgVVJMLCByZXR1cm4gdW5kZWZpbmVkIG90aGVyd2lzZVxyXG4gICovXHJcblxyXG4gIGNoZWNrUDJQKG1zZykge1xyXG5cclxuICAgIGlmICghbXNnLmhhc093blByb3BlcnR5KCd0bycpKSB7XHJcbiAgICAgIC8vIHRocm93IEVycm9yKCdUaGUgcDJwIHZlcmlmaWNhdGlvbiB3YXMgZmFpbGVkJyk7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgnVGhlIHAycCB2ZXJpZmljYXRpb24gd2FzIGZhaWxlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzY2hlbWUgPSBtc2cudG8uc3BsaXQoJzovLycpWzBdO1xyXG5cclxuICAgIGxldCBjb21wID0gbXNnLnRvLnNwbGl0KCc6Ly8nKVsxXS5zcGxpdCgnLycpWzJdO1xyXG5cclxuICAgIGxldCB1cmw7XHJcblxyXG4gICAgaWYgKGNvbXApIHVybCA9IG1zZy50by5zdWJzdHJpbmcoMCwgbXNnLnRvLmluZGV4T2YoJy8nICsgY29tcCkpO1xyXG4gICAgZWxzZSB1cmwgPSBtc2cudG87XHJcblxyXG4gICAgbGV0IHAycCA9IHt9O1xyXG5cclxuICAgIGlmIChtc2cuYm9keSAmJiBtc2cuYm9keS5wMnApIHAycC5wMnAgPSBtc2cuYm9keS5wMnA7XHJcblxyXG4gICAgaWYgKG1zZy5ib2R5ICYmIG1zZy5ib2R5LnAycEhhbmRsZXIgJiYgbXNnLmJvZHkucDJwUmVxdWVzdGVyKSB7XHJcbiAgICAgIHAycC5wMnBIYW5kbGVyID0gbXNnLmJvZHkucDJwSGFuZGxlcjtcclxuICAgICAgcDJwLnAycFJlcXVlc3RlciA9IG1zZy5ib2R5LnAycFJlcXVlc3RlcjtcclxuICAgICAgcDJwLnJ1bnRpbWUgPSBtc2cuYm9keS5wMnBIYW5kbGVyLnNwbGl0KCcvcDJwaGFuZGxlci8nKVswXTtcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHNjaGVtZSkge1xyXG4gICAgICBjYXNlICdydW50aW1lJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1AyUFJ1bnRpbWUodXJsLCBwMnApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrUDJQRW50aXR5KHVybCwgcDJwKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFZlcmlmaWVzIGlmIHJlbW90ZSBFbnRpdHkgKEh5cGVydHkgb3IgRGF0YSBPYmplY3QpIGNhbiBiZSByZWFjaGVkIHdpdGggYSBQMlAgQ29ubmVjdGlvbi5cclxuICAqIEBwYXJhbSAge3N0cmluZ30gICAgICAgIHVybCAgICAgICAgICAgUmVtb3RlIEVudGl0eSBVUkwgdG8gYmUgY2hlY2tlZFxyXG4gICogQHBhcmFtICB7b2JqZWN0fSAgICAgICAgcDJwICAgICAgICAgICBwMnAgaW5mb3JtYXRpb24gdG8gYmUgdXNlZCBpbmNsdWRpbmcgwrRydW50aW1lwrQgd2l0aCByZW1vdGUgUnVudGltZSBVUkwsICdwMnBIYW5kbGVyJyByZW1vdGUgUDJQIEhhbmRsZXIgU3R1YiBVUkwgYW5kIHAycFJlcXVlc3RlciB3aXRoIENhdGFsb2d1ZSBVUkwgb2YgUDJQIFJlcXVlc3RlciB0byBiZSB1c2VkXHJcbiAgKiBAcmV0dXJuIHtwcm9taXNlfSByZWdpc3RlcmVkRW50aXR5ICAgICBpZiBwMnAgY29ubmVjdGlvbiBpcyBwb3NzaWJsZSBpdCByZXR1cm5zIHAycCBpbmZvcm1hdGlvbiB0byBiZSB1c2VkIGluIHRoZSBjb25uZWN0aW9uLCBvdGhlcndpc2UgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWRcclxuICAqL1xyXG5cclxuICBjaGVja1AyUEVudGl0eSh1cmwsIHAycCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBsZXQgcmVtb3RlRW50aXR5ID0gX3RoaXMuX3JlbW90ZVAyUEVudGl0aWVzW3VybF07XHJcblxyXG4gICAgICBpZiAocmVtb3RlRW50aXR5KSByZXNvbHZlKHJlbW90ZUVudGl0eSk7XHJcbiAgICAgIGVsc2UgaWYgKHAycC5ydW50aW1lKSByZXNvbHZlKHAycCk7IC8vIHVzZSBwcm92aWRlZCBwMnAgaWYgYXZhaWxhYmxlIGluIHRoZSBtZXNzYWdlIGJvZHlcclxuICAgICAgZWxzZSBpZiAocDJwLnAycCkgeyAvLyBvdGhlcndpc2UgbG9vayBvbiBEb21haW4gUmVnaXN0cnlcclxuXHJcbiAgICAgICAgbG9nLmxvZygnW1JlZ2lzdHJ5IC0gY2hlY2tQMlBFbnRpdHldIC0gc2VhcmNoIGluIERvbWFpbiBSZWdpc3RyeTogJywgdXJsKTtcclxuXHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSB7XHJcbiAgICAgICAgICB0eXBlOiAncmVhZCcsXHJcbiAgICAgICAgICBmcm9tOiBfdGhpcy5fcmVnaXN0cnkucmVnaXN0cnlVUkwsXHJcbiAgICAgICAgICB0bzogJ2RvbWFpbjovL3JlZ2lzdHJ5LicgKyBfdGhpcy5fcmVnaXN0cnkuX2RvbWFpbixcclxuICAgICAgICAgIGJvZHk6IHtcclxuICAgICAgICAgICAgcmVzb3VyY2U6IHVybFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIF90aGlzLl9yZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVwbHkpID0+IHtcclxuICAgICAgICAgIGxvZy5sb2coJ1tSZWdpc3RyeSAtIGNoZWNrUDJQRW50aXR5XSBEb21haW4gUmVnaXN0cnkgcmVwbHknLCByZXBseSk7XHJcbiAgICAgICAgICBpZiAoJ3ZhbHVlJyBpbiByZXBseS5ib2R5KSB7XHJcblxyXG4gICAgICAgICAgICAvL3RvZG86IHN0b3JlIHJldHJpZXZlZCBlbnRpdHlcclxuICAgICAgICAgICAgbGV0IHJlc29sdmVkRW50aXR5ID0gcmVwbHkuYm9keS52YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZXNvbHZlZEVudGl0eS5oYXNPd25Qcm9wZXJ0eSgncDJwSGFuZGxlcicpKSB7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZShyZXNvbHZlZEVudGl0eSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVqZWN0KCdbUmVnaXN0cnkgY2hlY2tQMlBFbnRpdHldIEh5cGVydHkgZm91bmQgZG9lcyBub3Qgc3VwcG9ydCBQMlAnLCByZXBseS5ib2R5LnZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlamVjdCgnW1JlZ2lzdHJ5IGNoZWNrUDJQRW50aXR5XSBIeXBlcnR5IHdpdGggUDJQSGFuZGxlciBub3QgZm91bmQnLCByZXBseS5ib2R5LmNvZGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgcmVqZWN0KCdbUmVnaXN0cnkgY2hlY2tQMlBFbnRpdHldIE5vIFAyUCBDb25uZWN0aW9uIGF2YWlsYWJsZSBmb3IgJywgdXJsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBWZXJpZmllcyBpZiByZW1vdGUgUnVudGltZSBjYW4gYmUgcmVhY2hlZCB3aXRoIGEgUDJQIENvbm5lY3Rpb24uXHJcbiAgKiBAcGFyYW0gIHtVUkwuVVJMfSAgICAgICAgcnVudGltZVVSTCAgICAgICAgICAgUnVudGltZSBVUkxcclxuICAqIEByZXR1cm4ge09iamVjdH0gIHAycENvbm5lY3Rpb24gICAgcmV0dXJuIHRoZSBQMlBDb25uZWN0aW9uIGluc3RhbmNlIHJlZ2lzdGVyZWQgVVJMLCByZXR1cm4gdW5kZWZpbmVkIG90aGVyd2lzZVxyXG4gICovXHJcblxyXG4gIGNoZWNrUDJQUnVudGltZShydW50aW1lVVJMLCBwMnApIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IHJlZ2lzdGVyZWRSdW50aW1lID0ge307XHJcblxyXG4gICAgLy8gbG9vayBvbiBsb2NhbGx5IHN0b3JlZCBwMnAgY29ubmVjdGlvbnNcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmIChfdGhpcy5fcmVnaXN0cnkucDJwQ29ubmVjdGlvbkxpc3RbcnVudGltZVVSTF0pIHtcclxuICAgICAgICByZXNvbHZlKHtydW50aW1lOiBydW50aW1lVVJMfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoIHAycC5ydW50aW1lKSB7XHJcbiAgICAgICAgcmVnaXN0ZXJlZFJ1bnRpbWUgPSBwMnA7XHJcbiAgICAgICAgcmVzb2x2ZShyZWdpc3RlcmVkUnVudGltZSk7XHJcbiAgICAgIH0gZWxzZSByZWplY3QoJ1tSZWdpc3RyeS5QMlBDb25uZWN0aW9uUmVzb2x2ZS5jaGVja1AyUFJ1bnRpbWVdIE5vIFAyUCBDb25uZWN0aW9uIGZvdW5kIHRvICcsIHJ1bnRpbWVVUkwpO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogVmVyaWZpZXMgaWYgcmVtb3RlIEh5cGVydHkgY2FuIGJlIHJlYWNoZWQgd2l0aCBhIFAyUCBDb25uZWN0aW9uLlxyXG4gICogQHBhcmFtICB7SlNPTn0gICAgICAgIGluZm8gICAgICAgICAgIG9iamVjdCBvciBlbnRpdHkgY2hhcmF0ZXJpc3RpY3MgaW5mb1xyXG4gICogQHJldHVybiB7YWRkcmVzc1VSTH0gIGFkZHJlc3NVUkwgICAgIHJldHVybiB0aGUgVVJMIGlmIHRoZXJlIGlzIGFueSBwcmV2aW91c3kgcmVnaXN0ZXJlZCBVUkwsIHJldHVybiB1bmRlZmluZWQgb3RoZXJ3aXNlXHJcbiAgKi9cclxuXHJcbiAgY2hlY2tQMlBIeXBlcnR5KGh5cGVydHlVUkwsIHAycCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBsZXQgaHlwZXJ0eTtcclxuXHJcblxyXG4gICAgICAvLyBsb29rIG9uIGxvY2FsbHkgc3RvcmVkIGh5cGVydGllc1xyXG5cclxuICAgICAgZm9yIChsZXQgaSBpbiBfdGhpcy5fcmVnaXN0cnkucmVtb3RlSHlwZXJ0eUxpc3QpIHtcclxuICAgICAgICBoeXBlcnR5ID0gX3RoaXMuX3JlZ2lzdHJ5LnJlbW90ZUh5cGVydHlMaXN0W2ldO1xyXG5cclxuICAgICAgICBsb2cubG9nKCdbUmVnaXN0cnkgLSBjaGVja1AyUEh5cGVydHldIC0gZm9yIGVhY2ggSHlwZXJ0eTogJywgaHlwZXJ0eSk7XHJcblxyXG4gICAgICAgIC8vIHRvZG86IGNoYW5nZSB0byBcImh5cGVydHkudXJsXCIgdG8gYmUgYWxpZ25lZCB3aXRoIGh5cGVydHkgaW5zdGFuY2UgZGF0YSBtb2RlbCBzcGVjXHJcblxyXG4gICAgICAgIGlmIChoeXBlcnR5Lmh5cGVydHlJRCA9PT0gaHlwZXJ0eVVSTCkge1xyXG5cclxuICAgICAgICAgIGlmIChoeXBlcnR5Lmhhc093blByb3BlcnR5KCdwMnBIYW5kbGVyJykpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShoeXBlcnR5KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlamVjdCgnW1JlZ2lzdHJ5IGNoZWNrUDJQSHlwZXJ0eV0gSHlwZXJ0eSBmb3VuZCBkb2VzIG5vdCBzdXBwb3J0IFAyUCcsIGh5cGVydHkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFoeXBlcnR5ICYmIHAycC5ydW50aW1lKSByZXNvbHZlKHAycCk7IC8vIHVzZSBwcm92aWRlZCBwMnAgaWYgYXZhaWxhYmxlIGluIHRoZSBtZXNzYWdlIGJvZHlcclxuICAgICAgZWxzZSBpZiAoIWh5cGVydHkgJiYgcDJwLnAycCkgeyAvLyBvdGhlcndpc2UgbG9vayBvbiBEb21haW4gUmVnaXN0cnlcclxuXHJcbiAgICAgICAgbG9nLmxvZygnW1JlZ2lzdHJ5IC0gY2hlY2tQMlBIeXBlcnR5XSAtIHNlYXJjaCBpbiBEb21haW4gUmVnaXN0cnk6ICcsIGh5cGVydHkpO1xyXG5cclxuICAgICAgICBsZXQgbWVzc2FnZSA9IHtcclxuICAgICAgICAgIHR5cGU6ICdyZWFkJyxcclxuICAgICAgICAgIGZyb206IF90aGlzLl9yZWdpc3RyeS5yZWdpc3RyeVVSTCxcclxuICAgICAgICAgIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIF90aGlzLl9yZWdpc3RyeS5fZG9tYWluLFxyXG4gICAgICAgICAgYm9keToge1xyXG4gICAgICAgICAgICByZXNvdXJjZTogaHlwZXJ0eVVSTFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIF90aGlzLl9yZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVwbHkpID0+IHtcclxuICAgICAgICAgIGxvZy5sb2coJ1tSZWdpc3RyeSAtIGNoZWNrUDJQSHlwZXJ0eV0gRG9tYWluIFJlZ2lzdHJ5IHJlcGx5JywgcmVwbHkpO1xyXG4gICAgICAgICAgaWYgKCd2YWx1ZScgaW4gcmVwbHkuYm9keSkge1xyXG5cclxuICAgICAgICAgICAgLy90b2RvOiBzdG9yZSByZXRyaWV2ZWQgaHlwZXJ0eVxyXG4gICAgICAgICAgICBsZXQgcmVzb2x2ZWRIeXBlcnR5ID0gcmVwbHkuYm9keS52YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIF90aGlzLl9yZWdpc3RyeS5yZW1vdGVIeXBlcnR5TGlzdC5wdXNoKHJlc29sdmVkSHlwZXJ0eSk7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVzb2x2ZWRIeXBlcnR5Lmhhc093blByb3BlcnR5KCdwMnBIYW5kbGVyJykpIHtcclxuICAgICAgICAgICAgICByZXNvbHZlKHJlc29sdmVkSHlwZXJ0eSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVqZWN0KCdbUmVnaXN0cnkgY2hlY2tQMlBIeXBlcnR5XSBIeXBlcnR5IGZvdW5kIGRvZXMgbm90IHN1cHBvcnQgUDJQJywgcmVwbHkuYm9keS52YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZWplY3QoJ1tSZWdpc3RyeSBjaGVja1AyUEh5cGVydHldIEh5cGVydHkgd2l0aCBQMlBIYW5kbGVyIG5vdCBmb3VuZCcsIHJlcGx5LmJvZHkuY29kZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSByZWplY3QoJ1tSZWdpc3RyeSBjaGVja1AyUEh5cGVydHldIE5vIFAyUCBDb25uZWN0aW9uIGF2YWlsYWJsZSBmb3IgJywgaHlwZXJ0eVVSTCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogVmVyaWZpZXMgaWYgcmVtb3RlIERhdGEgT2JqZWN0IGNhbiBiZSByZWFjaGVkIHdpdGggYSBQMlAgQ29ubmVjdGlvbi5cclxuICAqIEBwYXJhbSAge1VSTC5VUkx9ICAgICAgICBEYXRhT2JqZWN0VVJMICAgICAgICAgICBvYmplY3QgVVJMXHJcbiAgKiBAcmV0dXJuIHtIeXBlcnR5RGF0YU9iamVjdEluc3RhbmNlfSAgYWRkcmVzc1VSTCAgICAgcmV0dXJuIHRoZSBEYXRhIE9iamVjdCBpbnN0YW5jZSByZWdpc3RlcmVkIFVSTCwgcmV0dXJuIHVuZGVmaW5lZCBvdGhlcndpc2VcclxuICAqL1xyXG5cclxuICBjaGVja1AyUERhdGFPYmplY3QodXJsLCBwMnApIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHJcbiAgICAgIC8vIGxvb2sgb24gbG9jYWxseSBzdG9yZWQgUmVtb3RlIERhdGEgT2JqZWN0c1xyXG5cclxuICAgICAgbGV0IGRhdGFvYmplY3QgPSBfdGhpcy5fcmVnaXN0cnkucmVtb3RlRGF0YU9iamVjdExpc3QuZmlsdGVyKChpKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIChfdGhpcy5fcmVnaXN0cnkucmVtb3RlRGF0YU9iamVjdExpc3RbaV0udXJsID09PSB1cmwpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChkYXRhb2JqZWN0Lmxlbmd0aCAhPT0gMCAmJiBkYXRhb2JqZWN0WzBdLnAycFJlcXVlc3Rlcikge1xyXG4gICAgICAgIHJlc29sdmUoZGF0YW9iamVjdFswXSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZGF0YW9iamVjdC5sZW5ndGggIT09IDApIHtcclxuICAgICAgICByZWplY3QoJ1tSZWdpc3RyeSBjaGVja1AyUERhdGFPYmplY3RdIERhdGEgT2JqZWN0IGZvdW5kIGRvZXMgbm90IHN1cHBvcnQgUDJQJywgZGF0YW9iamVjdFswXSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZGF0YW9iamVjdC5sZW5ndGggPT09IDAgJiYgcDJwLnJ1bnRpbWUpIHJlc29sdmUocDJwKTsgLy8gdXNlIHByb3ZpZGVkIHAycCBpbmZvIGlmIGF2YWlsYWJsZSBpbiB0aGUgbWVzc2FnZSBib2R5XHJcbiAgICAgIGVsc2UgaWYgKGRhdGFvYmplY3QubGVuZ3RoICYmIHAycC5wMnApIHsgLy8gb3RoZXJ3aXNlIGxvb2sgb24gRG9tYWluIFJlZ2lzdHJ5XHJcblxyXG4gICAgICAvLyBsb29rIG9uIERvbWFpbiBSZWdpc3RyeVxyXG5cclxuICAgICAgICBsZXQgbWVzc2FnZSA9IHtcclxuICAgICAgICAgIHR5cGU6ICdyZWFkJyxcclxuICAgICAgICAgIGZyb206IF90aGlzLl9yZWdpc3RyeS5yZWdpc3RyeVVSTCxcclxuICAgICAgICAgIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIF90aGlzLl9yZWdpc3RyeS5fZG9tYWluLFxyXG4gICAgICAgICAgYm9keToge1xyXG4gICAgICAgICAgICByZXNvdXJjZTogdXJsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgX3RoaXMuX3JlZ2lzdHJ5Ll9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1lc3NhZ2UsIChyZXBseSkgPT4ge1xyXG4gICAgICAgICAgbG9nLmxvZygnZGlzY292ZXIgZGF0YSBvYmplY3QgcGVyIHVybCByZXBseScsIHJlcGx5KTtcclxuICAgICAgICAgIGlmICgndmFsdWUnIGluIHJlcGx5LmJvZHkpIHtcclxuXHJcbiAgICAgICAgICAgIC8vdG9kbzogc3RvcmUgcmV0cmlldmVkIGh5cGVydHlcclxuICAgICAgICAgICAgbGV0IHJlc29sdmVkRGF0YU9iamVjdCA9IHJlcGx5LmJvZHkudmFsdWU7XHJcblxyXG4gICAgICAgICAgICBfdGhpcy5fcmVnaXN0cnkucmVtb3RlRGF0YU9iamVjdExpc3QucHVzaChyZXNvbHZlZERhdGFPYmplY3QpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlc29sdmVkRGF0YU9iamVjdC5wMnBSZXF1ZXN0ZXIpIHtcclxuICAgICAgICAgICAgICByZXNvbHZlKHJlc29sdmVkRGF0YU9iamVjdCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVqZWN0KCdbUmVnaXN0cnkgY2hlY2tQMlBEYXRhT2JqZWN0XSBEYXRhIE9iamVjdCBmb3VuZCBkb2VzIG5vdCBzdXBwb3J0IFAyUCcsIHJlcGx5LmJvZHkudmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVqZWN0KCdbUmVnaXN0cnkgY2hlY2tQMlBEYXRhT2JqZWN0XSBub3QgZm91bmQnLCByZXBseS5ib2R5LmNvZGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgcmVqZWN0KCdbUmVnaXN0cnkgY2hlY2tQMlBEYXRhT2JqZWN0XSBubyBQMlAgQ29ubmVjdGlvbiBmb3VuZCcpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRSZW1vdGVQMlBFbnRpdHkodXJsLCBydW50aW1lKSB7XHJcbiAgICB0aGlzLl9yZW1vdGVQMlBFbnRpdGllc1t1cmxdID0gcnVudGltZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVJlbW90ZVAyUEVudGl0eSh1cmwpIHtcclxuICAgIGRlbGV0ZSB0aGlzLl9yZW1vdGVQMlBFbnRpdGllc1t1cmxdO1xyXG4gIH1cclxuXHJcbiAgcmVjb25uZWN0UDJQUmVxdWVzdGVyKHAycFJlcXVlc3Rlcikge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBsb2cubG9nKCdbUDJQQ29uZW5jdGlvblJlc29sdmUucmVjb25uZWN0UDJQUmVxdWVzdGVyXSBsZXRzIHRyeSB0byByZWNvbm5lY3QgUDJQIFJlcXVlc3RlciBTdHViOiAnLCBwMnBSZXF1ZXN0ZXIpO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICBsZXQgcmVtb3RlUnVudGltZSA9IHAycFJlcXVlc3Rlci5ydW50aW1lO1xyXG5cclxuICAgICAgbGV0IG1lc3NhZ2UgPSB7XHJcbiAgICAgICAgdHlwZTogJ2V4ZWN1dGUnLFxyXG4gICAgICAgIGZyb206IF90aGlzLl9yZWdpc3RyeS5yZWdpc3RyeVVSTCxcclxuICAgICAgICB0bzogcDJwUmVxdWVzdGVyLnVybCxcclxuICAgICAgICBib2R5OiB7XHJcbiAgICAgICAgICBtZXRob2Q6ICdjb25uZWN0JyxcclxuICAgICAgICAgIHBhcmFtczogW3AycFJlcXVlc3Rlci5wMnBIYW5kbGVyXVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vIGxldHMgcHJlcGFyZSB0aGUgcDJwUmVxdWVzdGVyU1R1YiByZWNvbm5lY3QgYnkgc2V0dGluZyBhbiBvYnNlcnZlciB0byBpdHMgc3RhdHVzIGNoYW5nZXNcclxuXHJcbiAgICAgIF90aGlzLl9yZWdpc3RyeS53YXRjaGluZ1lvdS5vYnNlcnZlKCdwMnBSZXF1ZXN0ZXJTdHViJywgKGNoYW5nZSkgPT4ge1xyXG5cclxuICAgICAgICBsb2cubG9nKCdbUDJQQ29uZW5jdGlvblJlc29sdmUucmVjb25uZWN0UDJQUmVxdWVzdGVyXSBwMnBSZXF1ZXN0ZXJTdHVicyBjaGFuZ2VkICcgKyBfdGhpcy5fcmVnaXN0cnkucDJwUmVxdWVzdGVyU3R1Yik7XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2Uua2V5cGF0aC5zcGxpdCgnLicpWzBdID09PSByZW1vdGVSdW50aW1lICYmIGNoYW5nZS5uYW1lID09PSAnc3RhdHVzJykge1xyXG4gICAgICAgICAgc3dpdGNoIChjaGFuZ2UubmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgY2FzZSAnbGl2ZSc6XHJcbiAgICAgICAgICAgICAgbG9nLmxvZygnW1AyUENvbmVuY3Rpb25SZXNvbHZlLnJlY29ubmVjdFAyUFJlcXVlc3Rlcl0gcDJwUmVxdWVzdGVyIGlzIGxpdmUgJyArIF90aGlzLl9yZWdpc3RyeS5wMnBSZXF1ZXN0ZXJTdHViW3JlbW90ZVJ1bnRpbWVdKTtcclxuICAgICAgICAgICAgICByZXNvbHZlKF90aGlzLl9yZWdpc3RyeS5wMnBSZXF1ZXN0ZXJTdHViW3JlbW90ZVJ1bnRpbWVdLnVybCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2ZhaWxlZCc6XHJcbiAgICAgICAgICAgICAgbG9nLmxvZygnW1AyUENvbmVuY3Rpb25SZXNvbHZlLnJlY29ubmVjdFAyUFJlcXVlc3Rlcl0gcDJwUmVxdWVzdGVyIHJlY29ubmVjdCBmYWlsZWQgJyArIF90aGlzLl9yZWdpc3RyeS5wMnBSZXF1ZXN0ZXJTdHViW3JlbW90ZVJ1bnRpbWVdKTtcclxuICAgICAgICAgICAgICByZWplY3QoJ1AyUCBSZXF1ZXN0ZXIgcmVjb25uZWN0IGZhaWxlZCcpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyAgc3R1YiBsb2FkXHJcbiAgICAgIF90aGlzLl9yZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVwbHkpID0+IHtcclxuICAgICAgICBsb2cubG9nKCdbUDJQQ29uZW5jdGlvblJlc29sdmUucmVjb25uZWN0UDJQUmVxdWVzdGVyXSByZWNvbm5lY3QgcmVxdWVzdCByZXBseScsIHJlcGx5KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBQMlBDb25uZWN0aW9uUmVzb2x2ZTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9yZWdpc3RyeS9QMlBDb25uZWN0aW9uUmVzb2x2ZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBO0FBQ0E7QUFEQTtBQUNBOzs7OztBQUFBO0FBQ0E7QUFDQTs7O0FBM0JBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTtBQUNBO0FBTUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFTQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFKQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///468\n")},function(module,exports){eval('// proxy-observe v0.0.18\r\n// Copyright (c) 2015, 2016 Simon Y. Blackwell, AnyWhichWay\r\n// MIT License - http://opensource.org/licenses/mit-license.php\r\n(function() {\r\n\t"use strict";\r\n\t// Creates and returns a Proxy wrapping a target so that all changes can be trapped and forwarded to\r\n\t// a callback. The callback takes an array of changes just like the traditional original Chrome Object.observe\r\n\t// {object:,name:,type:add|update|delete|reconfigure|preventExtensions|setPrototype,oldValue:}\r\n\t// The acceptlist can be add|update|delete|reconfigure|preventExtensions|setPrototype.\r\n\t// v 0.0.10 to support pausing and restarting observation two additional constructor arguments are available to Object.observe:\r\n\t// pausable - create the Observer so it can be paused\r\n\t// pause - create observer in paused state\r\n\t// if pausable is true then an additional method deliver(ignorePrevious) is available to start delivery\r\n\t// to pause delivery set a property called pause on the function deliver to true\r\n\t// pausable is optional to reduce the chance of shadowing a property or method on any existing code called deliver\r\n\tif(!Object.observe && typeof(Proxy)==="function") {\r\n\t\tfunction Observer(target,callback,acceptlist,pausable,pause,delay) {\r\n\t \tvar me = this, proxy;\r\n\t \tfunction deliver(ignorePrevious,delay) {\r\n\t \t\tdeliver.delay = delay;\r\n\t \t\tif(!deliver.pause) {\r\n\t \t\tif(me.changeset.length>0) {\r\n\t \t\t\tif(!ignorePrevious) {\r\n\t\t \t \t\tvar changes = me.changeset.filter(function(change) { return !acceptlist || acceptlist.indexOf(change.type)>=0; });\r\n\t\t \t\t\tif(changes.length>0) {\r\n\t\t \t\t\t\tcallback(changes);\r\n\t\t \t\t\t}\r\n\t \t\t\t}\r\n\t \t\t\tme.changeset = [];\r\n\t \t\t}\r\n\t \t\t}\r\n\t \t}\r\n\t \tdeliver.pause = pause;\r\n\t \tdeliver.delay = delay;\r\n\t\t me.get = function(target, property) {\r\n\t\t \tif(property==="__observer__") {\r\n\t\t \t\treturn me;\r\n\t\t \t}\r\n\t\t \tif(property==="unobserve") {\r\n\t\t \t\treturn function() {\r\n\t\t \t\t\tObject.unobserve(target);\r\n\t\t \t\t\treturn target;\r\n\t\t \t\t};\r\n\t\t \t}\r\n\t\t \tif(property==="deliver") {\r\n\t\t \t\treturn deliver;\r\n\t\t \t}\r\n\t\t \treturn target[property];\r\n\t\t }\r\n\t \tme.target = target;\r\n\t \tme.changeset = [];\r\n\t \tif(!me.target.__observerCallbacks__) {\r\n\t \t\t// __observerCallbacks__ is used as an index to get at the proxy which is the observer, so we can unobserve\r\n\t \t\tObject.defineProperty(target,"__observerCallbacks__",{enumerable:false,configurable:true,writable:false,value:[]});\r\n\t \t\tObject.defineProperty(target,"__observers__",{enumerable:false,configurable:true,writable:false,value:[]});\r\n\t \t}\r\n\t \tme.target.__observerCallbacks__.push(callback);\r\n\t \tme.target.__observers__.push(this);\r\n\t \tproxy = new Proxy(target,me);\r\n\t \tdeliver(false,delay);\r\n\t \treturn proxy;\r\n\t }\r\n\t\tObserver.prototype.deliver = function() {\r\n\t\t\treturn this.get(null,"deliver");\r\n\t\t}\r\n\t Observer.prototype.set = function(target, property, value) { // , receiver\r\n\t \tvar oldvalue = target[property];\r\n\t \tvar type = (oldvalue===undefined ? "add" : "update");\r\n\t \ttarget[property] = value;\r\n\t \tif(target.__observers__.indexOf(this)>=0 && (!this.acceptlist || this.acceptlist.indexOf(type)>=0)) {\r\n\t \tvar change = {object:target,name:property,type:type},\r\n\t \t\tstart = this.changeset.length === 0,\r\n\t \t\tdeliver = this.deliver();\r\n\t \tif(type==="update") {\r\n\t \t\tchange.oldValue = oldvalue;\r\n\t \t}\r\n\t \tthis.changeset.push(change);\r\n\t \tif(start) {\r\n\t \t\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\r\n\t \t}\r\n\t \t}\r\n\t \treturn true;\r\n\t };\r\n\t Observer.prototype.deleteProperty = function(target, property) {\r\n\t \tvar oldvalue = target[property];\r\n\t \t//if(typeof(oldvalue)!=="undefined") {\r\n\t\t \tdelete target[property];\r\n\t\t \tif(target.__observers__.indexOf(this)>=0 && !this.acceptlist || this.acceptlist.indexOf("delete")>=0) {\r\n\t\t \tvar change = {object:target,name:property,type:"delete",oldValue:oldvalue},\r\n\t\t \t\tstart = this.changeset.length === 0,\r\n\t\t \t\tdeliver = this.deliver();\r\n\t\t \tthis.changeset.push(change);\r\n\t\t \tif(start) {\r\n\t\t \t\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\r\n\t\t \t}\r\n\t\t \t}\r\n\t \t//}\r\n\t \treturn true;\r\n\t };\r\n\t Observer.prototype.defineProperty = function(target, property, descriptor) {\r\n\t \tObject.defineProperty(target, property, descriptor);\r\n\t \tif(target.__observers__.indexOf(this)>=0 && !this.acceptlist || this.acceptlist.indexOf("reconfigure")>=0) {\r\n\t \tvar change = {object:target,name:property,type:"reconfigure"},\r\n \t\t\tstart = this.changeset.length === 0,\r\n \t\t\tdeliver = this.deliver();\r\n\t \tthis.changeset.push(change);\r\n\t \tif(start) {\r\n\t \t\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\r\n\t \t}\r\n\t \t}\r\n\t \treturn true;\r\n\t };\r\n\t Observer.prototype.setPrototypeOf = function(target, prototype) {\r\n\t \tvar oldvalue = Object.getPrototypeOf(target);\r\n\t \tObject.setPrototypeOf(target, prototype);\r\n\t \tif(target.__observers__.indexOf(this)>=0 && !this.acceptlist || this.acceptlist.indexOf("setPrototype")>=0) {\r\n\t \tvar change = {object:target,name:"__proto__",type:"setPrototype",oldValue:oldvalue},\r\n \t\t\t\tstart = this.changeset.length === 0,\r\n \t\t\t\tdeliver = this.deliver();\r\n\t \tthis.changeset.push(change);\r\n\t \tif(start) {\r\n\t \t\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\r\n\t \t}\r\n\t \t}\r\n\t \treturn true;\r\n\t };\r\n\t Observer.prototype.preventExtensions = function(target) {\r\n\t Object.preventExtensions(target);\r\n\t \tif(target.__observers__.indexOf(this)>=0 && !this.acceptlist || this.acceptlist.indexOf("preventExtensions")>=0) {\r\n\t \tvar change = {object:target,type:"preventExtensions"},\r\n\t\t\t\t\tstart = this.changeset.length === 0,\r\n\t\t\t\t\tdeliver = this.deliver();\r\n\t \tthis.changeset.push(change);\r\n\t \tif(start) {\r\n\t \t\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\r\n\t \t}\r\n\t \t}\r\n\t \treturn true;\r\n\t };\r\n\t Object.observe = function(object,callback,acceptlist,pausable,pause,delay) {\r\n\t \treturn new Observer(object,callback,acceptlist,pausable,pause,delay);\r\n\t };\r\n\t Object.unobserve = function(object,callback) {\r\n\t \tif(object.__observerCallbacks__) {\r\n\t \t\tif(!callback) {\r\n\t \t\t\tobject.__observerCallbacks__.splice(0,object.__observerCallbacks__.length);\r\n\t \t\t\tobject.__observers__.splice(0,object.__observers__.length);\r\n\t \t\t\treturn;\r\n\t \t\t}\r\n\t \t\tobject.__observerCallbacks__.forEach(function(observercallback,i) {\r\n\t \t\t\tif(callback===observercallback) {\r\n\t \t\t\t\tobject.__observerCallbacks__.splice(i,1);\r\n\t \t\t\t\tdelete object.__observers__[i].callback;\r\n\t \t\t\t\tobject.__observers__.splice(i,1);\r\n\t \t\t\t}\r\n\t \t\t});\r\n\t \t}\r\n\t };\r\n\t Array.observe = function(object,callback,acceptlist,pausable,pause,delay) {\r\n\t \tif(!(object instanceof Array) && !Array.isArray(object)) {\r\n\t \t\tthrow new TypeError("First argument to Array.observer is not an Array");\r\n\t \t}\r\n \tacceptlist = acceptlist || ["add", "update", "delete", "splice"];\r\n\t \tvar arrayproxy = new Proxy(object,{get: function(target,property) {\r\n\t \t\tif(property==="unobserve") {\r\n\t\t \t\treturn function(callback) {\r\n\t\t \t\t\tif(callback) {\r\n\t\t \t\t\t\treturn Object.unobserve(target,callback);\r\n\t\t \t\t\t}\r\n\t\t \t\t\treturn target.unobserve();\r\n\t\t \t\t};\r\n\t\t \t}\r\n\t \t\tif(property==="splice") {\r\n\t \t\t\treturn function(start,end) {\r\n\t \t\t\t\tif(typeof(start)!=="number" || typeof(end)!=="number") {\r\n\t \t\t\t\t\tthrow new TypeError("First two arguments to Array splice are not number, number");\r\n\t \t\t\t\t}\r\n\t \t \t\tvar removed = this.slice(start,start+end),\r\n\t \t \t\t\taddedCount = (arguments.length > 1 ? arguments.length-2 : 0),\r\n\t \t \t\t\tchange = {object:object,type:"splice",index:start,removed:removed,addedCount:addedCount};\r\n\t \t \t\ttarget.splice.apply(target,arguments);\r\n\t \t \t\tif(acceptlist.indexOf("splice")>=0) {\r\n\t \t \t\t\tvar start = proxy.__observer__.changeset.length === 0,\r\n\t \t \t\t\tdeliver = proxy.__observer__.deliver();\r\n\t \t \t\t\tproxy.__observer__.changeset.push(change);\r\n\t \t \t\t\tif(start) {\r\n\t \t\t \t\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\r\n\t \t\t \t}\r\n\t \t \t\t}\r\n\t \t \t}\r\n\t \t\t}\r\n\t \t\tif(property==="push") {\r\n\t \t\t\t return function(item) {\r\n\t \t\t \treturn this.splice(this.length,0,item);\r\n\t \t\t }\r\n\t \t\t}\r\n\t \t\tif(property==="pop") {\r\n\t \t\t\t return function() {\r\n\t \t\t \treturn this.splice(this.length-1,1);\r\n\t \t\t }\r\n\t \t\t}\r\n\t \t\tif(property==="unshift") {\r\n\t \t\t\t return function(item) {\r\n \t\t \t\treturn this.splice(0,0,item);\r\n \t\t \t}\r\n\t \t\t}\r\n\t \t\tif(property==="shift") {\r\n\t \t\t\treturn function() {\r\n\t \t \t\treturn this.splice(0,1);\r\n\t \t \t}\r\n\t \t\t}\r\n\t \t\treturn target[property];\r\n\t \t}});\r\n\t \tvar proxy = Object.observe(arrayproxy,function(changeset) { \r\n\t \t\tvar changes = changeset.filter(function(change) { return change.name!=="length" && change.name!=="add" && (!acceptlist || acceptlist.indexOf(change.type)>=0); });\r\n\t \t\tif(changes.length>0) {\r\n\t \t\t\tcallback(changes);\r\n\t \t\t}\r\n\t \t},acceptlist,pausable,pause,delay);\r\n\t \treturn proxy;\r\n\t };\r\n\t Array.unobserve = function(object,callback) {\r\n\t\t return object.unobserve(callback);\r\n\t }\r\n\t}\r\n\tObject.deepObserve = function(object,callback,parts) {\r\n\r\n\t\tparts = (parts ? parts : []);\r\n\r\n\t\tvar toTypeName = function(obj) {\r\n\t\t\treturn ({}).toString.call(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase()\r\n\t\t}\r\n\r\n\t\tfunction reobserve(value, parts) {\r\n\t\t\tvar keys = Object.keys(value);\r\n\t\t\tkeys.forEach(function(key) {\r\n\t\t\t\tif((toTypeName(value[key]) === \'object\' || toTypeName(value[key]) === \'array\') && !value[key].hasOwnProperty(\'__observers__\')) {\r\n\t\t\t\t\tvar newparts = parts.slice(0);\r\n\t\t\t\t\tnewparts.push(key);\r\n\t\t\t\t\tvalue[key] = Object.deepObserve(value[key],callback,newparts);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treobserve(object, parts);\r\n\r\n\t\tvar observed = Object.observe(object,function(changeset) {\r\n\t\t\tvar changes = [];\r\n\t\t\tfunction recurse(name,rootObject,oldObject,newObject,path) {\r\n\t\t\t\tif(newObject instanceof Object) {\r\n\t\t\t\t\tvar newkeys = Object.keys(newObject);\r\n\t\t\t\t\tnewkeys.forEach(function(key) {\r\n\t\t\t\t\t\tif(!oldObject || (oldObject[key]!==newObject[key])) {\r\n\t\t\t\t\t\t\tvar oldvalue = (oldObject && oldObject[key]!==undefined ? oldObject[key] : undefined),\r\n\t\t\t\t\t\t\t\tchange = (oldvalue===undefined ? "add" : "update"),\r\n\t\t\t\t\t\t\t\tkeypath = path + "." + key;\r\n\r\n\t\t\t\t\t\t\tchanges.push({name:name,object:rootObject,type:change,oldValue:oldvalue,newValue:newObject[key],keypath:keypath});\r\n\t\t\t\t\t\t\trecurse(name,rootObject,oldvalue,newObject[key],keypath);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if(oldObject instanceof Object) {\r\n\t\t\t\t\tvar oldkeys = Object.keys(oldObject);\r\n\t\t\t\t\toldkeys.forEach(function(key) {\r\n\t\t\t\t\t\tvar change = (newObject===null ? "update" : "delete"),\r\n\t\t\t\t\t\t\tkeypath = path + "." + key;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\tchanges.push({name:name,object:rootObject,type:change,oldValue:oldObject[key],newValue:newObject,keypath:keypath});\r\n\t\t\t\t\t\trecurse(name,rootObject,oldObject[key],undefined,keypath);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tchangeset.forEach(function(change) {\r\n\t\t\t\tvar keypath = (parts.length>0 ? parts.join(".") + "." : "") + change.name;\r\n\r\n\t\t\t\tif (change.type === "update" || change.type === "add") { \r\n\t\t\t\t\treobserve(change.object, parts);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tchanges.push({name:change.name,object:change.object,type:change.type,oldValue:change.oldValue,newValue:change.object[change.name],keypath:keypath});\r\n\t\t\t\trecurse(change.name,change.object,change.oldValue,change.object[change.name],keypath);\r\n\t\t\t});\r\n\t\t\tcallback(changes);\r\n\t\t});\r\n\t\treturn observed;\r\n\t};\r\n})();\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDY5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3h5LW9ic2VydmUvaW5kZXguanM/MTIwYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAgICAgcHJveHktb2JzZXJ2ZSB2MC4wLjE4XHJcbi8vICAgICBDb3B5cmlnaHQgKGMpIDIwMTUsIDIwMTYgU2ltb24gWS4gQmxhY2t3ZWxsLCBBbnlXaGljaFdheVxyXG4vLyAgICAgTUlUIExpY2Vuc2UgLSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXHJcbihmdW5jdGlvbigpIHtcclxuXHRcInVzZSBzdHJpY3RcIjtcclxuXHQvLyBDcmVhdGVzIGFuZCByZXR1cm5zIGEgUHJveHkgd3JhcHBpbmcgYSB0YXJnZXQgc28gdGhhdCBhbGwgY2hhbmdlcyBjYW4gYmUgdHJhcHBlZCBhbmQgZm9yd2FyZGVkIHRvXHJcblx0Ly8gYSBjYWxsYmFjay4gVGhlIGNhbGxiYWNrIHRha2VzIGFuIGFycmF5IG9mIGNoYW5nZXMganVzdCBsaWtlIHRoZSB0cmFkaXRpb25hbCBvcmlnaW5hbCBDaHJvbWUgT2JqZWN0Lm9ic2VydmVcclxuXHQvLyB7b2JqZWN0OjxvYmplY3QgY2hhbmdlZD4sbmFtZTo8ZmllbGQgY2hhbmdlZD4sdHlwZTphZGR8dXBkYXRlfGRlbGV0ZXxyZWNvbmZpZ3VyZXxwcmV2ZW50RXh0ZW5zaW9uc3xzZXRQcm90b3R5cGUsb2xkVmFsdWU6PG9sZCB2YWx1ZSBpZiB1cGRhdGUgfCBkZWxldGU+fVxyXG5cdC8vIFRoZSBhY2NlcHRsaXN0IGNhbiBiZSBhZGR8dXBkYXRlfGRlbGV0ZXxyZWNvbmZpZ3VyZXxwcmV2ZW50RXh0ZW5zaW9uc3xzZXRQcm90b3R5cGUuXHJcblx0Ly8gdiAwLjAuMTAgdG8gc3VwcG9ydCBwYXVzaW5nIGFuZCByZXN0YXJ0aW5nIG9ic2VydmF0aW9uIHR3byBhZGRpdGlvbmFsIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBhcmUgYXZhaWxhYmxlIHRvIE9iamVjdC5vYnNlcnZlOlxyXG5cdC8vIHBhdXNhYmxlIC0gY3JlYXRlIHRoZSBPYnNlcnZlciBzbyBpdCBjYW4gYmUgcGF1c2VkXHJcblx0Ly8gcGF1c2UgLSBjcmVhdGUgb2JzZXJ2ZXIgaW4gcGF1c2VkIHN0YXRlXHJcblx0Ly8gaWYgcGF1c2FibGUgaXMgdHJ1ZSB0aGVuIGFuIGFkZGl0aW9uYWwgbWV0aG9kIGRlbGl2ZXIoaWdub3JlUHJldmlvdXMpIGlzIGF2YWlsYWJsZSB0byBzdGFydCBkZWxpdmVyeVxyXG5cdC8vIHRvIHBhdXNlIGRlbGl2ZXJ5IHNldCBhIHByb3BlcnR5IGNhbGxlZCBwYXVzZSBvbiB0aGUgZnVuY3Rpb24gZGVsaXZlciB0byB0cnVlXHJcblx0Ly8gcGF1c2FibGUgaXMgb3B0aW9uYWwgdG8gcmVkdWNlIHRoZSBjaGFuY2Ugb2Ygc2hhZG93aW5nIGEgcHJvcGVydHkgb3IgbWV0aG9kIG9uIGFueSBleGlzdGluZyBjb2RlIGNhbGxlZCBkZWxpdmVyXHJcblx0aWYoIU9iamVjdC5vYnNlcnZlICYmIHR5cGVvZihQcm94eSk9PT1cImZ1bmN0aW9uXCIpIHtcclxuXHRcdGZ1bmN0aW9uIE9ic2VydmVyKHRhcmdldCxjYWxsYmFjayxhY2NlcHRsaXN0LHBhdXNhYmxlLHBhdXNlLGRlbGF5KSB7XHJcblx0ICAgIFx0dmFyIG1lID0gdGhpcywgcHJveHk7XHJcblx0ICAgIFx0ZnVuY3Rpb24gZGVsaXZlcihpZ25vcmVQcmV2aW91cyxkZWxheSkge1xyXG5cdCAgICBcdFx0ZGVsaXZlci5kZWxheSA9IGRlbGF5O1xyXG5cdCAgICBcdFx0aWYoIWRlbGl2ZXIucGF1c2UpIHtcclxuXHQgICAgICAgIFx0XHRpZihtZS5jaGFuZ2VzZXQubGVuZ3RoPjApIHtcclxuXHQgICAgICAgIFx0XHRcdGlmKCFpZ25vcmVQcmV2aW91cykge1xyXG5cdFx0ICAgIFx0ICAgIFx0XHR2YXIgY2hhbmdlcyA9IG1lLmNoYW5nZXNldC5maWx0ZXIoZnVuY3Rpb24oY2hhbmdlKSB7IHJldHVybiAhYWNjZXB0bGlzdCB8fCBhY2NlcHRsaXN0LmluZGV4T2YoY2hhbmdlLnR5cGUpPj0wOyB9KTtcclxuXHRcdCAgICAgICAgXHRcdFx0aWYoY2hhbmdlcy5sZW5ndGg+MCkge1xyXG5cdFx0ICAgICAgICBcdFx0XHRcdGNhbGxiYWNrKGNoYW5nZXMpO1xyXG5cdFx0ICAgICAgICBcdFx0XHR9XHJcblx0ICAgICAgICBcdFx0XHR9XHJcblx0ICAgICAgICBcdFx0XHRtZS5jaGFuZ2VzZXQgPSBbXTtcclxuXHQgICAgICAgIFx0XHR9XHJcblx0ICAgIFx0XHR9XHJcblx0ICAgIFx0fVxyXG5cdCAgICBcdGRlbGl2ZXIucGF1c2UgPSBwYXVzZTtcclxuXHQgICAgXHRkZWxpdmVyLmRlbGF5ID0gZGVsYXk7XHJcblx0XHQgICAgbWUuZ2V0ID0gZnVuY3Rpb24odGFyZ2V0LCBwcm9wZXJ0eSkge1xyXG5cdFx0ICAgIFx0aWYocHJvcGVydHk9PT1cIl9fb2JzZXJ2ZXJfX1wiKSB7XHJcblx0XHQgICAgXHRcdHJldHVybiBtZTtcclxuXHRcdCAgICBcdH1cclxuXHRcdCAgICBcdGlmKHByb3BlcnR5PT09XCJ1bm9ic2VydmVcIikge1xyXG5cdFx0ICAgIFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XHJcblx0XHQgICAgXHRcdFx0T2JqZWN0LnVub2JzZXJ2ZSh0YXJnZXQpO1xyXG5cdFx0ICAgIFx0XHRcdHJldHVybiB0YXJnZXQ7XHJcblx0XHQgICAgXHRcdH07XHJcblx0XHQgICAgXHR9XHJcblx0XHQgICAgXHRpZihwcm9wZXJ0eT09PVwiZGVsaXZlclwiKSB7XHJcblx0XHQgICAgXHRcdHJldHVybiBkZWxpdmVyO1xyXG5cdFx0ICAgIFx0fVxyXG5cdFx0ICAgIFx0cmV0dXJuIHRhcmdldFtwcm9wZXJ0eV07XHJcblx0XHQgICAgfVxyXG5cdCAgICBcdG1lLnRhcmdldCA9IHRhcmdldDtcclxuXHQgICAgXHRtZS5jaGFuZ2VzZXQgPSBbXTtcclxuXHQgICAgXHRpZighbWUudGFyZ2V0Ll9fb2JzZXJ2ZXJDYWxsYmFja3NfXykge1xyXG5cdCAgICBcdFx0Ly8gX19vYnNlcnZlckNhbGxiYWNrc19fIGlzIHVzZWQgYXMgYW4gaW5kZXggdG8gZ2V0IGF0IHRoZSBwcm94eSB3aGljaCBpcyB0aGUgb2JzZXJ2ZXIsIHNvIHdlIGNhbiB1bm9ic2VydmVcclxuXHQgICAgXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsXCJfX29ic2VydmVyQ2FsbGJhY2tzX19cIix7ZW51bWVyYWJsZTpmYWxzZSxjb25maWd1cmFibGU6dHJ1ZSx3cml0YWJsZTpmYWxzZSx2YWx1ZTpbXX0pO1xyXG5cdCAgICBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCxcIl9fb2JzZXJ2ZXJzX19cIix7ZW51bWVyYWJsZTpmYWxzZSxjb25maWd1cmFibGU6dHJ1ZSx3cml0YWJsZTpmYWxzZSx2YWx1ZTpbXX0pO1xyXG5cdCAgICBcdH1cclxuXHQgICAgXHRtZS50YXJnZXQuX19vYnNlcnZlckNhbGxiYWNrc19fLnB1c2goY2FsbGJhY2spO1xyXG5cdCAgICBcdG1lLnRhcmdldC5fX29ic2VydmVyc19fLnB1c2godGhpcyk7XHJcblx0ICAgIFx0cHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LG1lKTtcclxuXHQgICAgXHRkZWxpdmVyKGZhbHNlLGRlbGF5KTtcclxuXHQgICAgXHRyZXR1cm4gcHJveHk7XHJcblx0ICAgIH1cclxuXHRcdE9ic2VydmVyLnByb3RvdHlwZS5kZWxpdmVyID0gZnVuY3Rpb24oKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmdldChudWxsLFwiZGVsaXZlclwiKTtcclxuXHRcdH1cclxuXHQgICAgT2JzZXJ2ZXIucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKHRhcmdldCwgcHJvcGVydHksIHZhbHVlKSB7IC8vICwgcmVjZWl2ZXJcclxuXHQgICAgXHR2YXIgb2xkdmFsdWUgPSB0YXJnZXRbcHJvcGVydHldO1xyXG5cdCAgICBcdHZhciB0eXBlID0gKG9sZHZhbHVlPT09dW5kZWZpbmVkID8gXCJhZGRcIiA6IFwidXBkYXRlXCIpO1xyXG5cdCAgICBcdHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcclxuXHQgICAgXHRpZih0YXJnZXQuX19vYnNlcnZlcnNfXy5pbmRleE9mKHRoaXMpPj0wICYmICghdGhpcy5hY2NlcHRsaXN0IHx8IHRoaXMuYWNjZXB0bGlzdC5pbmRleE9mKHR5cGUpPj0wKSkge1xyXG5cdCAgICAgICAgXHR2YXIgY2hhbmdlID0ge29iamVjdDp0YXJnZXQsbmFtZTpwcm9wZXJ0eSx0eXBlOnR5cGV9LFxyXG5cdCAgICAgICAgXHRcdHN0YXJ0ID0gdGhpcy5jaGFuZ2VzZXQubGVuZ3RoID09PSAwLFxyXG5cdCAgICAgICAgXHRcdGRlbGl2ZXIgPSB0aGlzLmRlbGl2ZXIoKTtcclxuXHQgICAgICAgIFx0aWYodHlwZT09PVwidXBkYXRlXCIpIHtcclxuXHQgICAgICAgIFx0XHRjaGFuZ2Uub2xkVmFsdWUgPSBvbGR2YWx1ZTtcclxuXHQgICAgICAgIFx0fVxyXG5cdCAgICAgICAgXHR0aGlzLmNoYW5nZXNldC5wdXNoKGNoYW5nZSk7XHJcblx0ICAgICAgICBcdGlmKHN0YXJ0KSB7XHJcblx0ICAgICAgICBcdFx0ZGVsaXZlcihmYWxzZSwodHlwZW9mKGRlbGl2ZXIuZGVsYXkpPT09XCJudW1iZXJcIiA/IGRlbGl2ZXIuZGVsYXkgOiAxMCkpO1xyXG5cdCAgICAgICAgXHR9XHJcblx0ICAgIFx0fVxyXG5cdCAgICBcdHJldHVybiB0cnVlO1xyXG5cdCAgICB9O1xyXG5cdCAgICBPYnNlcnZlci5wcm90b3R5cGUuZGVsZXRlUHJvcGVydHkgPSBmdW5jdGlvbih0YXJnZXQsIHByb3BlcnR5KSB7XHJcblx0ICAgIFx0dmFyIG9sZHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcclxuXHQgICAgXHQvL2lmKHR5cGVvZihvbGR2YWx1ZSkhPT1cInVuZGVmaW5lZFwiKSB7XHJcblx0XHQgICAgXHRkZWxldGUgdGFyZ2V0W3Byb3BlcnR5XTtcclxuXHRcdCAgICBcdGlmKHRhcmdldC5fX29ic2VydmVyc19fLmluZGV4T2YodGhpcyk+PTAgJiYgIXRoaXMuYWNjZXB0bGlzdCB8fCB0aGlzLmFjY2VwdGxpc3QuaW5kZXhPZihcImRlbGV0ZVwiKT49MCkge1xyXG5cdFx0ICAgICAgICBcdHZhciBjaGFuZ2UgPSB7b2JqZWN0OnRhcmdldCxuYW1lOnByb3BlcnR5LHR5cGU6XCJkZWxldGVcIixvbGRWYWx1ZTpvbGR2YWx1ZX0sXHJcblx0XHQgICAgICAgIFx0XHRzdGFydCA9IHRoaXMuY2hhbmdlc2V0Lmxlbmd0aCA9PT0gMCxcclxuXHRcdCAgICAgICAgXHRcdGRlbGl2ZXIgPSB0aGlzLmRlbGl2ZXIoKTtcclxuXHRcdCAgICAgICAgXHR0aGlzLmNoYW5nZXNldC5wdXNoKGNoYW5nZSk7XHJcblx0XHQgICAgICAgIFx0aWYoc3RhcnQpIHtcclxuXHRcdCAgICAgICAgXHRcdGRlbGl2ZXIoZmFsc2UsKHR5cGVvZihkZWxpdmVyLmRlbGF5KT09PVwibnVtYmVyXCIgPyBkZWxpdmVyLmRlbGF5IDogMTApKTtcclxuXHRcdCAgICAgICAgXHR9XHJcblx0XHQgICAgXHR9XHJcblx0ICAgIFx0Ly99XHJcblx0ICAgIFx0cmV0dXJuIHRydWU7XHJcblx0ICAgIH07XHJcblx0ICAgIE9ic2VydmVyLnByb3RvdHlwZS5kZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uKHRhcmdldCwgcHJvcGVydHksIGRlc2NyaXB0b3IpIHtcclxuXHQgICAgXHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eSwgZGVzY3JpcHRvcik7XHJcblx0ICAgIFx0aWYodGFyZ2V0Ll9fb2JzZXJ2ZXJzX18uaW5kZXhPZih0aGlzKT49MCAmJiAhdGhpcy5hY2NlcHRsaXN0IHx8IHRoaXMuYWNjZXB0bGlzdC5pbmRleE9mKFwicmVjb25maWd1cmVcIik+PTApIHtcclxuXHQgICAgICAgIFx0dmFyIGNoYW5nZSA9IHtvYmplY3Q6dGFyZ2V0LG5hbWU6cHJvcGVydHksdHlwZTpcInJlY29uZmlndXJlXCJ9LFxyXG4gICAgICAgIFx0XHRcdHN0YXJ0ID0gdGhpcy5jaGFuZ2VzZXQubGVuZ3RoID09PSAwLFxyXG4gICAgICAgIFx0XHRcdGRlbGl2ZXIgPSB0aGlzLmRlbGl2ZXIoKTtcclxuXHQgICAgICAgIFx0dGhpcy5jaGFuZ2VzZXQucHVzaChjaGFuZ2UpO1xyXG5cdCAgICAgICAgXHRpZihzdGFydCkge1xyXG5cdCAgICAgICAgXHRcdGRlbGl2ZXIoZmFsc2UsKHR5cGVvZihkZWxpdmVyLmRlbGF5KT09PVwibnVtYmVyXCIgPyBkZWxpdmVyLmRlbGF5IDogMTApKTtcclxuXHQgICAgICAgIFx0fVxyXG5cdCAgICBcdH1cclxuXHQgICAgXHRyZXR1cm4gdHJ1ZTtcclxuXHQgICAgfTtcclxuXHQgICAgT2JzZXJ2ZXIucHJvdG90eXBlLnNldFByb3RvdHlwZU9mID0gZnVuY3Rpb24odGFyZ2V0LCBwcm90b3R5cGUpIHtcclxuXHQgICAgXHR2YXIgb2xkdmFsdWUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KTtcclxuXHQgICAgXHRPYmplY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCBwcm90b3R5cGUpO1xyXG5cdCAgICBcdGlmKHRhcmdldC5fX29ic2VydmVyc19fLmluZGV4T2YodGhpcyk+PTAgJiYgIXRoaXMuYWNjZXB0bGlzdCB8fCB0aGlzLmFjY2VwdGxpc3QuaW5kZXhPZihcInNldFByb3RvdHlwZVwiKT49MCkge1xyXG5cdCAgICAgICAgXHR2YXIgY2hhbmdlID0ge29iamVjdDp0YXJnZXQsbmFtZTpcIl9fcHJvdG9fX1wiLHR5cGU6XCJzZXRQcm90b3R5cGVcIixvbGRWYWx1ZTpvbGR2YWx1ZX0sXHJcbiAgICBcdFx0XHRcdHN0YXJ0ID0gdGhpcy5jaGFuZ2VzZXQubGVuZ3RoID09PSAwLFxyXG4gICAgXHRcdFx0XHRkZWxpdmVyID0gdGhpcy5kZWxpdmVyKCk7XHJcblx0ICAgICAgICBcdHRoaXMuY2hhbmdlc2V0LnB1c2goY2hhbmdlKTtcclxuXHQgICAgICAgIFx0aWYoc3RhcnQpIHtcclxuXHQgICAgICAgIFx0XHRkZWxpdmVyKGZhbHNlLCh0eXBlb2YoZGVsaXZlci5kZWxheSk9PT1cIm51bWJlclwiID8gZGVsaXZlci5kZWxheSA6IDEwKSk7XHJcblx0ICAgICAgICBcdH1cclxuXHQgICAgXHR9XHJcblx0ICAgIFx0cmV0dXJuIHRydWU7XHJcblx0ICAgIH07XHJcblx0ICAgIE9ic2VydmVyLnByb3RvdHlwZS5wcmV2ZW50RXh0ZW5zaW9ucyA9IGZ1bmN0aW9uKHRhcmdldCkge1xyXG5cdCAgICAgICAgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHRhcmdldCk7XHJcblx0ICAgIFx0aWYodGFyZ2V0Ll9fb2JzZXJ2ZXJzX18uaW5kZXhPZih0aGlzKT49MCAmJiAhdGhpcy5hY2NlcHRsaXN0IHx8IHRoaXMuYWNjZXB0bGlzdC5pbmRleE9mKFwicHJldmVudEV4dGVuc2lvbnNcIik+PTApIHtcclxuXHQgICAgICAgIFx0dmFyIGNoYW5nZSA9IHtvYmplY3Q6dGFyZ2V0LHR5cGU6XCJwcmV2ZW50RXh0ZW5zaW9uc1wifSxcclxuXHRcdFx0XHRcdHN0YXJ0ID0gdGhpcy5jaGFuZ2VzZXQubGVuZ3RoID09PSAwLFxyXG5cdFx0XHRcdFx0ZGVsaXZlciA9IHRoaXMuZGVsaXZlcigpO1xyXG5cdCAgICAgICAgXHR0aGlzLmNoYW5nZXNldC5wdXNoKGNoYW5nZSk7XHJcblx0ICAgICAgICBcdGlmKHN0YXJ0KSB7XHJcblx0ICAgICAgICBcdFx0ZGVsaXZlcihmYWxzZSwodHlwZW9mKGRlbGl2ZXIuZGVsYXkpPT09XCJudW1iZXJcIiA/IGRlbGl2ZXIuZGVsYXkgOiAxMCkpO1xyXG5cdCAgICAgICAgXHR9XHJcblx0ICAgIFx0fVxyXG5cdCAgICBcdHJldHVybiB0cnVlO1xyXG5cdCAgICB9O1xyXG5cdCAgICBPYmplY3Qub2JzZXJ2ZSA9IGZ1bmN0aW9uKG9iamVjdCxjYWxsYmFjayxhY2NlcHRsaXN0LHBhdXNhYmxlLHBhdXNlLGRlbGF5KSB7XHJcblx0ICAgIFx0cmV0dXJuIG5ldyBPYnNlcnZlcihvYmplY3QsY2FsbGJhY2ssYWNjZXB0bGlzdCxwYXVzYWJsZSxwYXVzZSxkZWxheSk7XHJcblx0ICAgIH07XHJcblx0ICAgIE9iamVjdC51bm9ic2VydmUgPSBmdW5jdGlvbihvYmplY3QsY2FsbGJhY2spIHtcclxuXHQgICAgXHRpZihvYmplY3QuX19vYnNlcnZlckNhbGxiYWNrc19fKSB7XHJcblx0ICAgIFx0XHRpZighY2FsbGJhY2spIHtcclxuXHQgICAgXHRcdFx0b2JqZWN0Ll9fb2JzZXJ2ZXJDYWxsYmFja3NfXy5zcGxpY2UoMCxvYmplY3QuX19vYnNlcnZlckNhbGxiYWNrc19fLmxlbmd0aCk7XHJcblx0ICAgIFx0XHRcdG9iamVjdC5fX29ic2VydmVyc19fLnNwbGljZSgwLG9iamVjdC5fX29ic2VydmVyc19fLmxlbmd0aCk7XHJcblx0ICAgIFx0XHRcdHJldHVybjtcclxuXHQgICAgXHRcdH1cclxuXHQgICAgXHRcdG9iamVjdC5fX29ic2VydmVyQ2FsbGJhY2tzX18uZm9yRWFjaChmdW5jdGlvbihvYnNlcnZlcmNhbGxiYWNrLGkpIHtcclxuXHQgICAgXHRcdFx0aWYoY2FsbGJhY2s9PT1vYnNlcnZlcmNhbGxiYWNrKSB7XHJcblx0ICAgIFx0XHRcdFx0b2JqZWN0Ll9fb2JzZXJ2ZXJDYWxsYmFja3NfXy5zcGxpY2UoaSwxKTtcclxuXHQgICAgXHRcdFx0XHRkZWxldGUgb2JqZWN0Ll9fb2JzZXJ2ZXJzX19baV0uY2FsbGJhY2s7XHJcblx0ICAgIFx0XHRcdFx0b2JqZWN0Ll9fb2JzZXJ2ZXJzX18uc3BsaWNlKGksMSk7XHJcblx0ICAgIFx0XHRcdH1cclxuXHQgICAgXHRcdH0pO1xyXG5cdCAgICBcdH1cclxuXHQgICAgfTtcclxuXHQgICAgQXJyYXkub2JzZXJ2ZSA9IGZ1bmN0aW9uKG9iamVjdCxjYWxsYmFjayxhY2NlcHRsaXN0LHBhdXNhYmxlLHBhdXNlLGRlbGF5KSB7XHJcblx0ICAgIFx0aWYoIShvYmplY3QgaW5zdGFuY2VvZiBBcnJheSkgJiYgIUFycmF5LmlzQXJyYXkob2JqZWN0KSkge1xyXG5cdCAgICBcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpcnN0IGFyZ3VtZW50IHRvIEFycmF5Lm9ic2VydmVyIGlzIG5vdCBhbiBBcnJheVwiKTtcclxuXHQgICAgXHR9XHJcbiAgICAgICAgICAgIFx0YWNjZXB0bGlzdCA9IGFjY2VwdGxpc3QgfHwgW1wiYWRkXCIsIFwidXBkYXRlXCIsIFwiZGVsZXRlXCIsIFwic3BsaWNlXCJdO1xyXG5cdCAgICBcdHZhciBhcnJheXByb3h5ID0gbmV3IFByb3h5KG9iamVjdCx7Z2V0OiBmdW5jdGlvbih0YXJnZXQscHJvcGVydHkpIHtcclxuXHQgICAgXHRcdGlmKHByb3BlcnR5PT09XCJ1bm9ic2VydmVcIikge1xyXG5cdFx0ICAgIFx0XHRyZXR1cm4gZnVuY3Rpb24oY2FsbGJhY2spIHtcclxuXHRcdCAgICBcdFx0XHRpZihjYWxsYmFjaykge1xyXG5cdFx0ICAgIFx0XHRcdFx0cmV0dXJuIE9iamVjdC51bm9ic2VydmUodGFyZ2V0LGNhbGxiYWNrKTtcclxuXHRcdCAgICBcdFx0XHR9XHJcblx0XHQgICAgXHRcdFx0cmV0dXJuIHRhcmdldC51bm9ic2VydmUoKTtcclxuXHRcdCAgICBcdFx0fTtcclxuXHRcdCAgICBcdH1cclxuXHQgICAgXHRcdGlmKHByb3BlcnR5PT09XCJzcGxpY2VcIikge1xyXG5cdCAgICBcdFx0XHRyZXR1cm4gZnVuY3Rpb24oc3RhcnQsZW5kKSB7XHJcblx0ICAgIFx0XHRcdFx0aWYodHlwZW9mKHN0YXJ0KSE9PVwibnVtYmVyXCIgfHwgdHlwZW9mKGVuZCkhPT1cIm51bWJlclwiKSB7XHJcblx0ICAgIFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlyc3QgdHdvIGFyZ3VtZW50cyB0byBBcnJheSBzcGxpY2UgYXJlIG5vdCBudW1iZXIsIG51bWJlclwiKTtcclxuXHQgICAgXHRcdFx0XHR9XHJcblx0ICAgIFx0ICAgIFx0XHR2YXIgcmVtb3ZlZCA9IHRoaXMuc2xpY2Uoc3RhcnQsc3RhcnQrZW5kKSxcclxuXHQgICAgXHQgICAgXHRcdFx0YWRkZWRDb3VudCA9IChhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50cy5sZW5ndGgtMiA6IDApLFxyXG5cdCAgICBcdCAgICBcdFx0XHRjaGFuZ2UgPSAge29iamVjdDpvYmplY3QsdHlwZTpcInNwbGljZVwiLGluZGV4OnN0YXJ0LHJlbW92ZWQ6cmVtb3ZlZCxhZGRlZENvdW50OmFkZGVkQ291bnR9O1xyXG5cdCAgICBcdCAgICBcdFx0dGFyZ2V0LnNwbGljZS5hcHBseSh0YXJnZXQsYXJndW1lbnRzKTtcclxuXHQgICAgXHQgICAgXHRcdGlmKGFjY2VwdGxpc3QuaW5kZXhPZihcInNwbGljZVwiKT49MCkge1xyXG5cdCAgICBcdCAgICBcdFx0XHR2YXIgc3RhcnQgPSBwcm94eS5fX29ic2VydmVyX18uY2hhbmdlc2V0Lmxlbmd0aCA9PT0gMCxcclxuXHQgICAgXHQgICAgICAgIFx0XHRcdGRlbGl2ZXIgPSBwcm94eS5fX29ic2VydmVyX18uZGVsaXZlcigpO1xyXG5cdCAgICBcdCAgICBcdFx0XHRwcm94eS5fX29ic2VydmVyX18uY2hhbmdlc2V0LnB1c2goY2hhbmdlKTtcclxuXHQgICAgXHQgICAgXHRcdFx0aWYoc3RhcnQpIHtcclxuXHQgICAgXHRcdCAgICAgICAgXHRcdGRlbGl2ZXIoZmFsc2UsKHR5cGVvZihkZWxpdmVyLmRlbGF5KT09PVwibnVtYmVyXCIgPyBkZWxpdmVyLmRlbGF5IDogMTApKTtcclxuXHQgICAgXHRcdCAgICAgICAgXHR9XHJcblx0ICAgIFx0ICAgIFx0XHR9XHJcblx0ICAgIFx0ICAgIFx0fVxyXG5cdCAgICBcdFx0fVxyXG5cdCAgICBcdFx0aWYocHJvcGVydHk9PT1cInB1c2hcIikge1xyXG5cdCAgICBcdFx0XHQgcmV0dXJuIGZ1bmN0aW9uKGl0ZW0pIHtcclxuXHQgICAgXHRcdCAgICBcdHJldHVybiB0aGlzLnNwbGljZSh0aGlzLmxlbmd0aCwwLGl0ZW0pO1xyXG5cdCAgICBcdFx0ICAgIH1cclxuXHQgICAgXHRcdH1cclxuXHQgICAgXHRcdGlmKHByb3BlcnR5PT09XCJwb3BcIikge1xyXG5cdCAgICBcdFx0XHQgcmV0dXJuIGZ1bmN0aW9uKCkge1xyXG5cdCAgICBcdFx0ICAgIFx0cmV0dXJuIHRoaXMuc3BsaWNlKHRoaXMubGVuZ3RoLTEsMSk7XHJcblx0ICAgIFx0XHQgICAgfVxyXG5cdCAgICBcdFx0fVxyXG5cdCAgICBcdFx0aWYocHJvcGVydHk9PT1cInVuc2hpZnRcIikge1xyXG5cdCAgICBcdFx0XHQgcmV0dXJuIGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIFx0XHQgICAgXHRcdHJldHVybiB0aGlzLnNwbGljZSgwLDAsaXRlbSk7XHJcbiAgICBcdFx0ICAgIFx0fVxyXG5cdCAgICBcdFx0fVxyXG5cdCAgICBcdFx0aWYocHJvcGVydHk9PT1cInNoaWZ0XCIpIHtcclxuXHQgICAgXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xyXG5cdCAgICBcdCAgICBcdFx0cmV0dXJuIHRoaXMuc3BsaWNlKDAsMSk7XHJcblx0ICAgIFx0ICAgIFx0fVxyXG5cdCAgICBcdFx0fVxyXG5cdCAgICBcdFx0cmV0dXJuIHRhcmdldFtwcm9wZXJ0eV07XHJcblx0ICAgIFx0fX0pO1xyXG5cdCAgICBcdHZhciBwcm94eSA9IE9iamVjdC5vYnNlcnZlKGFycmF5cHJveHksZnVuY3Rpb24oY2hhbmdlc2V0KSB7IFxyXG5cdCAgICBcdFx0dmFyIGNoYW5nZXMgPSBjaGFuZ2VzZXQuZmlsdGVyKGZ1bmN0aW9uKGNoYW5nZSkgeyByZXR1cm4gY2hhbmdlLm5hbWUhPT1cImxlbmd0aFwiICYmIGNoYW5nZS5uYW1lIT09XCJhZGRcIiAmJiAoIWFjY2VwdGxpc3QgfHwgYWNjZXB0bGlzdC5pbmRleE9mKGNoYW5nZS50eXBlKT49MCk7IH0pO1xyXG5cdCAgICBcdFx0aWYoY2hhbmdlcy5sZW5ndGg+MCkge1xyXG5cdCAgICBcdFx0XHRjYWxsYmFjayhjaGFuZ2VzKTtcclxuXHQgICAgXHRcdH1cclxuXHQgICAgXHR9LGFjY2VwdGxpc3QscGF1c2FibGUscGF1c2UsZGVsYXkpO1xyXG5cdCAgICBcdHJldHVybiBwcm94eTtcclxuXHQgICAgfTtcclxuXHQgICAgQXJyYXkudW5vYnNlcnZlID0gZnVuY3Rpb24ob2JqZWN0LGNhbGxiYWNrKSB7XHJcblx0XHQgIHJldHVybiBvYmplY3QudW5vYnNlcnZlKGNhbGxiYWNrKTtcclxuXHQgICAgfVxyXG5cdH1cclxuXHRPYmplY3QuZGVlcE9ic2VydmUgPSBmdW5jdGlvbihvYmplY3QsY2FsbGJhY2sscGFydHMpIHtcclxuXHJcblx0XHRwYXJ0cyA9IChwYXJ0cyA/IHBhcnRzIDogW10pO1xyXG5cclxuXHRcdHZhciB0b1R5cGVOYW1lID0gZnVuY3Rpb24ob2JqKSB7XHJcblx0XHRcdHJldHVybiAoe30pLnRvU3RyaW5nLmNhbGwob2JqKS5tYXRjaCgvXFxzKFthLXpBLVpdKykvKVsxXS50b0xvd2VyQ2FzZSgpXHJcblx0XHR9XHJcblxyXG5cdFx0ZnVuY3Rpb24gcmVvYnNlcnZlKHZhbHVlLCBwYXJ0cykge1xyXG5cdFx0XHR2YXIga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcclxuXHRcdFx0a2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xyXG5cdFx0XHRcdGlmKCh0b1R5cGVOYW1lKHZhbHVlW2tleV0pID09PSAnb2JqZWN0JyB8fCB0b1R5cGVOYW1lKHZhbHVlW2tleV0pID09PSAnYXJyYXknKSAmJiAhdmFsdWVba2V5XS5oYXNPd25Qcm9wZXJ0eSgnX19vYnNlcnZlcnNfXycpKSB7XHJcblx0XHRcdFx0XHR2YXIgbmV3cGFydHMgPSBwYXJ0cy5zbGljZSgwKTtcclxuXHRcdFx0XHRcdG5ld3BhcnRzLnB1c2goa2V5KTtcclxuXHRcdFx0XHRcdHZhbHVlW2tleV0gPSBPYmplY3QuZGVlcE9ic2VydmUodmFsdWVba2V5XSxjYWxsYmFjayxuZXdwYXJ0cyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZW9ic2VydmUob2JqZWN0LCBwYXJ0cyk7XHJcblxyXG5cdFx0dmFyIG9ic2VydmVkID0gT2JqZWN0Lm9ic2VydmUob2JqZWN0LGZ1bmN0aW9uKGNoYW5nZXNldCkge1xyXG5cdFx0XHR2YXIgY2hhbmdlcyA9IFtdO1xyXG5cdFx0XHRmdW5jdGlvbiByZWN1cnNlKG5hbWUscm9vdE9iamVjdCxvbGRPYmplY3QsbmV3T2JqZWN0LHBhdGgpIHtcclxuXHRcdFx0XHRpZihuZXdPYmplY3QgaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuXHRcdFx0XHRcdHZhciBuZXdrZXlzID0gT2JqZWN0LmtleXMobmV3T2JqZWN0KTtcclxuXHRcdFx0XHRcdG5ld2tleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcclxuXHRcdFx0XHRcdFx0aWYoIW9sZE9iamVjdCB8fCAob2xkT2JqZWN0W2tleV0hPT1uZXdPYmplY3Rba2V5XSkpIHtcclxuXHRcdFx0XHRcdFx0XHR2YXIgb2xkdmFsdWUgPSAob2xkT2JqZWN0ICYmIG9sZE9iamVjdFtrZXldIT09dW5kZWZpbmVkID8gb2xkT2JqZWN0W2tleV0gOiB1bmRlZmluZWQpLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y2hhbmdlID0gKG9sZHZhbHVlPT09dW5kZWZpbmVkID8gXCJhZGRcIiA6IFwidXBkYXRlXCIpLFxyXG5cdFx0XHRcdFx0XHRcdFx0a2V5cGF0aCA9IHBhdGggKyBcIi5cIiArIGtleTtcclxuXHJcblx0XHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtuYW1lOm5hbWUsb2JqZWN0OnJvb3RPYmplY3QsdHlwZTpjaGFuZ2Usb2xkVmFsdWU6b2xkdmFsdWUsbmV3VmFsdWU6bmV3T2JqZWN0W2tleV0sa2V5cGF0aDprZXlwYXRofSk7XHJcblx0XHRcdFx0XHRcdFx0cmVjdXJzZShuYW1lLHJvb3RPYmplY3Qsb2xkdmFsdWUsbmV3T2JqZWN0W2tleV0sa2V5cGF0aCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0gZWxzZSBpZihvbGRPYmplY3QgaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuXHRcdFx0XHRcdHZhciBvbGRrZXlzID0gT2JqZWN0LmtleXMob2xkT2JqZWN0KTtcclxuXHRcdFx0XHRcdG9sZGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcclxuXHRcdFx0XHRcdFx0dmFyIGNoYW5nZSA9IChuZXdPYmplY3Q9PT1udWxsID8gXCJ1cGRhdGVcIiA6IFwiZGVsZXRlXCIpLFxyXG5cdFx0XHRcdFx0XHRcdGtleXBhdGggPSBwYXRoICsgXCIuXCIgKyBrZXk7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7bmFtZTpuYW1lLG9iamVjdDpyb290T2JqZWN0LHR5cGU6Y2hhbmdlLG9sZFZhbHVlOm9sZE9iamVjdFtrZXldLG5ld1ZhbHVlOm5ld09iamVjdCxrZXlwYXRoOmtleXBhdGh9KTtcclxuXHRcdFx0XHRcdFx0cmVjdXJzZShuYW1lLHJvb3RPYmplY3Qsb2xkT2JqZWN0W2tleV0sdW5kZWZpbmVkLGtleXBhdGgpO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGNoYW5nZXNldC5mb3JFYWNoKGZ1bmN0aW9uKGNoYW5nZSkge1xyXG5cdFx0XHRcdHZhciBrZXlwYXRoID0gKHBhcnRzLmxlbmd0aD4wID8gcGFydHMuam9pbihcIi5cIikgKyBcIi5cIiA6IFwiXCIpICsgY2hhbmdlLm5hbWU7XHJcblxyXG5cdFx0XHRcdGlmIChjaGFuZ2UudHlwZSA9PT0gXCJ1cGRhdGVcIiB8fCBjaGFuZ2UudHlwZSA9PT0gXCJhZGRcIikgeyBcclxuXHRcdFx0XHRcdHJlb2JzZXJ2ZShjaGFuZ2Uub2JqZWN0LCBwYXJ0cyk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRjaGFuZ2VzLnB1c2goe25hbWU6Y2hhbmdlLm5hbWUsb2JqZWN0OmNoYW5nZS5vYmplY3QsdHlwZTpjaGFuZ2UudHlwZSxvbGRWYWx1ZTpjaGFuZ2Uub2xkVmFsdWUsbmV3VmFsdWU6Y2hhbmdlLm9iamVjdFtjaGFuZ2UubmFtZV0sa2V5cGF0aDprZXlwYXRofSk7XHJcblx0XHRcdFx0cmVjdXJzZShjaGFuZ2UubmFtZSxjaGFuZ2Uub2JqZWN0LGNoYW5nZS5vbGRWYWx1ZSxjaGFuZ2Uub2JqZWN0W2NoYW5nZS5uYW1lXSxrZXlwYXRoKTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdGNhbGxiYWNrKGNoYW5nZXMpO1xyXG5cdFx0fSk7XHJcblx0XHRyZXR1cm4gb2JzZXJ2ZWQ7XHJcblx0fTtcclxufSkoKTtcclxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcHJveHktb2JzZXJ2ZS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNDY5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///469\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(14);\n\nvar _runtimeConfiguration = __webpack_require__(144);\n\nvar _Identities = __webpack_require__(206);\n\nvar _Identities2 = _interopRequireDefault(_Identities);\n\nvar _GuiFake = __webpack_require__(475);\n\nvar _GuiFake2 = _interopRequireDefault(_GuiFake);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('IdentityModule'); // Log System\n\n/**\r\n*\r\n* The Identity Module (Id Module) is the component responsible for handling the\r\n* user identity and the association of this identity with the Hyperty instances,\r\n* in order to make Hyperty instances identifiable. The identity in the reTHINK project\r\n* is not fixed to a unique Identity Service Provider, but obtained through several\r\n* different Identity sources. With this approach, the Id Module provides to the user the\r\n* option to choose the preferred method for authentication.\r\n* This module will thus able to support multiple Identity acquisition methods,\r\n* such as OpenID connect 1.0, Kerberos System, or authentication through smart cards.\r\n* For example, a user with a Google account can use the Google as an Identity Provider to provide Identity Tokens,\r\n* which can be used by the Identity Module to associate it with a Hyperty instance.\r\n*\r\n* The Identity Module uses a node package, the HelloJS, which is a client-side JavaScript API for authentication\r\n* that facilitates the requests for the OpenID connect protocol. This method allows for some abstraction\r\n* when making requests for different Identity Providers, such as OpenID connect used by Google, Facebook, Microsoft, for example.\r\n*\r\n* When a request for a user identity is made using the method loginWithRP(identifier, scope),\r\n* this method will analyse the Identity Provider chosen to obtain an identity and will use the HelloJS node package\r\n* with the selected Identity Provider and identity scope. After the HelloJS request for an Access Token\r\n* to the Identity Providers, the user will be prompted to authenticate towards the Identity Provider.\r\n* Upon receiving the Access Token, this token is validated with a RESTful web service request to an endpoint\r\n* on the Identity Provider Authorization Server, and after the validation is done,\r\n* an ID token is obtained with the information according to the scope required.\r\n* This ID token is then preserved in this module that can obtained through the getIdentities()\r\n* and is passed as return value of the loginWithRP function. The methods generateAssertion and validateAssertion have not yet been developed.\r\n*\r\n*/\nvar IdentityModule = function () {\n\n /**\r\n * This is the constructor to initialise the Identity Module it does not require any input.\r\n */\n function IdentityModule(runtimeURL, runtimeCapabilities, storageManager, dataObjectsStorage, cryptoManager, runtimeCatalogue) {\n (0, _classCallCheck3.default)(this, IdentityModule);\n\n var _this = this;\n\n if (!runtimeURL) throw new Error('runtimeURL is missing.');\n if (!storageManager) throw new Error('storageManager is missing');\n if (!cryptoManager) throw new Error('cryptoManager is missing');\n if (!runtimeCatalogue) throw new Error('runtimeCatalogue is missing');\n\n _this._runtimeURL = runtimeURL;\n\n _this._runtimeCatalogue = runtimeCatalogue;\n\n _this.dataObjectsStorage = dataObjectsStorage;\n _this._idmURL = _this._runtimeURL + '/idm';\n _this._guiURL = _this._runtimeURL + '/identity-gui';\n _this.runtimeCapabilities = runtimeCapabilities;\n\n _this._domain = (0, _utils.divideURL)(_this._runtimeURL).domain;\n\n //to store items with this format: {identity: identityURL, token: tokenID}\n _this._identities = new _Identities2.default('human', storageManager);\n\n // to be reviewed: watchingYou identitiesList or identities?\n // _this.identitiesList = _this.watchingYou.watch('identitiesList', {}, true);\n _this._crypto = cryptoManager;\n\n /* _this.emailsList = [];\r\n let newIdentity = new Identity('guid', 'HUMAN');\r\n _this.identity = newIdentity;\r\n _this.currentIdentity;\r\n _this.identities.defaultIdentity;*/\n\n //stores the association of the dataObject and the Hyperty registered within\n _this.dataObjectsIdentity = {}; // is this needed?\n\n _this._listOfIdps = [];\n\n // variable to know if the GUI is deployed to choose the identity. if the real GUI is not deployed, a fake gui is deployed instead.\n _this.guiDeployed = false;\n }\n\n //******************* GET AND SET METHODS *******************\n\n /**\r\n * return the messageBus in this Registry\r\n * @param {MessageBus} messageBus\r\n */\n\n\n (0, _createClass3.default)(IdentityModule, [{\n key: 'getIdentity',\n\n\n //******************* IDENTITY RELEATED METHODS *******************\n /**\r\n * gets all the information from a given userURL\r\n * @param {String} userURL user url\r\n * @return {JSON} identity identity bundle from the userURL\r\n */\n value: function getIdentity(userURL) {\n return this.identities.getIdentity(userURL);\n }\n\n /**\r\n * Function to set the current Identity with a given Identity\r\n * @param {Identity} identity identity\r\n */\n\n /* setCurrentIdentity(identity) {\r\n let _this = this;\r\n _this.currentIdentity = identity;\r\n }*/\n\n /**\r\n * Function to return all the identities registered within a session by a user.\r\n * These identities are returned in an array containing a JSON package for each user identity.\r\n * @return {Array} Identities\r\n */\n\n }, {\n key: 'getIdentitiesToChoose',\n value: function getIdentitiesToChoose() {\n var _this2 = this;\n\n // let identities = _this.identities.identifiers;\n\n // let idps = [\n // { domain: 'google.com', type: 'idToken'},\n // { domain: 'microsoft.com', type: 'idToken'},\n // { domain: 'orange.fr', type: 'idToken'},\n // { domain: 'slack.com', type: 'Legacy'}\n // ];\n\n // todo: retrieve available idps from runtime catalogue\n // todo: enable oauth idps\n // let idps = [\n // { domain: 'google.com', type: 'idToken' },\n // { domain: 'microsoft.com', type: 'idToken' },\n // { domain: 'facebook.com', type: 'idToken' },\n // { domain: 'slack.com', type: 'idToken' }\n // ];\n\n return new _promise2.default(function (resolve) {\n\n var url = _runtimeConfiguration.runtimeConfiguration.catalogueURLs.idpProxy.prefix + _this2._domain + _runtimeConfiguration.runtimeConfiguration.catalogueURLs.idpProxy.suffix;\n\n _promise2.default.all([_this2.runtimeCapabilities.isAvailable('browser'), _this2.runtimeCapabilities.isAvailable('node')]).then(function (result) {\n\n var isBrowser = result[0];\n var isNode = result[1];\n\n var constraints = { constraints: {} };\n constraints.constraints.node = isNode;\n constraints.constraints.browser = isBrowser;\n\n _this2._runtimeCatalogue.getTypeList(url, constraints).then(function (idps) {\n var listOfIdps = idps.map(function (key) {\n return { domain: key, type: 'idToken' };\n });\n log.info('[IdentityModule.getIdentityAssertion:getIdentitiesToChoose]', idps, listOfIdps);\n _this2._listOfIdps = listOfIdps;\n return resolve({ defaultIdentity: _this2.identities.defaultIdentity, identities: _this2.identities.identities, idps: listOfIdps });\n });\n });\n });\n }\n\n /**\r\n * Function to return the selected Identity within a session\r\n * @return {Identity} identity identity\r\n */\n /* getCurrentIdentity() {\r\n let _this = this;\r\n return _this.currentIdentity;\r\n }*/\n\n }, {\n key: 'init',\n value: function init() {\n var _this = this;\n return new _promise2.default(function (resolve) {\n _this._identities.loadIdentities().then(function () {\n\n _this._crypto.getMyPublicKey().then(function (key) {\n var hash = _this._crypto.crypto._sha256((0, _utils.stringify)(key)).then(function (hash) {\n\n var guid = 'user-guid://' + hash;\n _this.identities.guid = guid;\n _this._identities.loadAccessTokens().then(function () {\n\n resolve();\n });\n }).catch(function (error) {\n console.log('[IdentityModule] error', error);\n });\n });\n });\n });\n }\n\n /**\r\n * Function that fetch an identityAssertion from a user.\r\n *\r\n * @return {IdAssertion} IdAssertion\r\n */\n\n }, {\n key: 'getIdentityAssertion',\n value: function getIdentityAssertion(identityBundle) {\n log.log('[IdentityModule.getIdentityAssertion:identityBundle]', identityBundle);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n //CHECK whether is browser environment or nodejs\n //if it is browser, then create a fake identity\n\n _this.runtimeCapabilities.isAvailable('browser').then(function (result) {\n log.log('runtime browser identity acquisition', result);\n\n if (!result) return;\n\n //todo: only idp should be mandatory when identityBundle exists\n\n if (identityBundle && identityBundle.hasOwnProperty('idp')) {\n\n var idp = identityBundle.idp;\n var origin = identityBundle.hasOwnProperty('origin') ? identityBundle.origin : 'origin';\n var idHint = identityBundle.hasOwnProperty('idHint') ? identityBundle.idHint : '';\n\n _this.selectIdentityForHyperty(origin, idp, idHint).then(function (assertion) {\n log.log('[IdentityModule] Identity selected by hyperty.');\n return resolve(assertion);\n }, function (err) {\n // if it got an error then just select identity from GUI\n // log.error('[IdentityModule] Could not select identity from hyperty.');\n _this.selectIdentityFromGUI().then(function (newAssertion) {\n log.log('[IdentityModule] Identity selected by hyperty.');\n return resolve(newAssertion);\n }, function (err) {\n return reject(err);\n });\n });\n } else {\n\n if (_this.identities.defaultIdentity && _this.identities.defaultIdentity.expires > (0, _utils.secondsSinceEpoch)()) {\n return resolve(_this.identities.defaultIdentity);\n } else {\n _this.selectIdentityFromGUI().then(function (assertion) {\n\n log.log('[IdentityModule] Identity selected from GUI.');\n\n /*\r\n _this.identities.defaultIdentity = assertion.userProfile.userURL;\r\n return resolve(assertion);\r\n }*/\n\n _this.identities.defaultIdentity = assertion.userProfile.userURL;\n return resolve(assertion);\n }, function (err) {\n return reject(err);\n });\n }\n }\n }).catch(function (error) {\n log.error('Error on identity acquisition ', error);\n return reject(error);\n });\n\n _this.runtimeCapabilities.isAvailable('node').then(function (result) {\n log.log('node identity acquisition', result);\n\n if (!result) return;\n\n if (_this.identities.currentIdentity) {\n //TODO verify whether the token is still valid or not.\n // should be needed to make further requests, to obtain a valid token\n return resolve(_this.identities.currentIdentity);\n } else {\n log.log('getIdentityAssertion for nodejs');\n\n var idp = { type: 'idp', value: 'nodejs-idp', code: 200, auth: false };\n _this.callNodeJsGenerateMethods(idp.value, 'origin').then(function (value) {\n resolve(value);\n }, function (err) {\n reject(err);\n });\n }\n }).catch(function (error) {\n log.error('Error on identity acquisition ', error);\n reject(error);\n });\n });\n }\n\n /**\r\n * Function to return all the users URLs registered within a session\r\n * These users URLs are returned in an array of strings.\r\n * @return {Array} users\r\n */\n\n }, {\n key: 'getUsersIDs',\n value: function getUsersIDs() {\n /* log.log('[getUsersIDs:emailFormat]', emailFormat);\r\n log.log('getUsersIDs:emailFormat', emailFormat);\r\n let _this = this;\r\n let users = [];*/\n\n //if request comes with the emailFormat option, then convert url to email format\n /* let converter = (emailFormat) ? getUserEmailFromURL : (value) => { return value; };\r\n for (let index in _this.identities) {\r\n let identity = _this.identities[index];\r\n users.push(converter(identity.identity));\r\n }*/\n\n return this.identities.identifiers;\n }\n\n /**\r\n * Function to remove an identity\r\n * @param {String} userURL userURL\r\n * @return {Promise}\r\n */\n\n }, {\n key: 'deleteIdentity',\n value: function deleteIdentity(userURL) {\n\n return this.identities.removeIdentity(userURL);\n }\n\n /**\r\n * Function to unregister an identity from the emailsList array and not show in to the GUI\r\n * @param {String} email email\r\n */\n /* unregisterIdentity(email) {\r\n let _this = this;\r\n for (let e in _this.emailsList) {\r\n if (_this.emailsList[e] === email) {\r\n _this.emailsList.splice(e, 1);\r\n }\r\n }\r\n }*/\n\n /**\r\n * Function that sends a request to the GUI using messages. Sends all identities registered and\r\n * the Idps supported, and return the identity/idp received by the GUI\r\n * @param {Array} identities list of identitiies\r\n * @param {Array} idps list of idps to authenticate\r\n * @return {Promise} returns a chosen identity or idp\r\n */\n\n }, {\n key: 'requestIdentityToGUI',\n value: function requestIdentityToGUI(identities, idps) {\n log.log('[IdentityModule.requestIdentityToGUI:identities]', identities);\n log.log('[IdentityModule.requestIdentityToGUI:idps]', idps);\n\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n\n //condition to check if the real GUI is deployed. If not, deploys a fake gui\n if (_this.guiDeployed === false) {\n var guiFakeURL = _this._guiURL;\n var guiFake = new _GuiFake2.default(guiFakeURL, _this._messageBus);\n _this.guiFake = guiFake;\n _this.guiDeployed = true;\n }\n\n var message = {\n type: 'create', to: _this._guiURL, from: _this._idmURL,\n body: { value: { identities: identities, idps: idps } }\n };\n\n var callback = function callback(msg) {\n _this._messageBus.removeResponseListener(_this._idmURL, msg.id);\n\n // todo: to return the user URL and not the email or identifier\n\n if (msg.body.code === 200) {\n var selectedIdentity = msg.body;\n\n log.log('selectedIdentity: ', selectedIdentity.value);\n resolve(selectedIdentity);\n } else {\n reject('error on requesting an identity to the GUI');\n }\n };\n\n //postMessage with callback but without timeout\n try {\n _this._messageBus.postMessage(message, callback, false);\n } catch (err) {\n reject('In method callIdentityModuleFunc error: ' + err);\n }\n });\n }\n }, {\n key: 'callNodeJsGenerateMethods',\n value: function callNodeJsGenerateMethods(idp, origin) {\n log.log('[callNodeJsGenerateMethods:idp]', idp);\n log.log('[callNodeJsGenerateMethods:origin]', origin);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n //debugger;\n var publicKey = void 0;\n\n //let keyPair = nodeJSKeyPairPopulate;\n\n //generates the RSA key pair\n _this._crypto.getMyPublicKey().then(function (key) {\n\n log.log('[callNodeJsGenerateMethods:key]', key);\n\n publicKey = (0, _utils.stringify)(key);\n\n log.log('[callNodeJsGenerateMethods] NO_URL');\n\n return _this.generateAssertion(publicKey, origin, 'url', idp);\n }).then(function (value) {\n if (value) {\n resolve(value);\n } else {\n reject('Error on obtaining Identity');\n }\n }).catch(function (err) {\n log.log(err);\n reject(err);\n });\n });\n }\n }, {\n key: 'callGenerateMethods',\n value: function callGenerateMethods(idp, origin) {\n log.log('[callGenerateMethods:idp]', idp);\n log.log('[callGenerateMethods:origin]', origin);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var publicKey = void 0;\n\n //generates the RSA key pair\n _this._crypto.getMyPublicKey().then(function (key) {\n\n log.log('[callNodeJsGenerateMethods:key]', key);\n\n publicKey = (0, _utils.stringify)(key);\n\n // userkeyPair = keyPair;\n log.log('generateAssertion:no_hint');\n return _this.generateAssertion(publicKey, origin, '', idp);\n }).then(function (url) {\n _this.myHint = url;\n log.log('generateAssertion:hint');\n return _this.generateAssertion(publicKey, origin, url, idp);\n }).then(function (value) {\n if (value) {\n resolve(value);\n } else {\n reject('Error on obtaining Identity');\n }\n }).catch(function (err) {\n log.error(err);\n reject(err);\n });\n });\n }\n }, {\n key: 'loginSelectedIdentity',\n value: function loginSelectedIdentity(publicKey, origin, idp, loginUrl) {\n log.log('[loginSelectedIdentity:publicKey]', publicKey);\n log.log('[loginSelectedIdentity:origin]', origin);\n log.log('[loginSelectedIdentity:idp]', idp);\n\n // log.log('[loginSelectedIdentity:keyPair]', keyPair);\n log.log('[loginSelectedIdentity:loginUrl]', loginUrl);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n log.log('[IdentityModule] openPopup');\n _this.callIdentityModuleFunc('openPopup', { urlreceived: loginUrl }).then(function (idCode) {\n return idCode;\n }, function (err) {\n log.error('Error while logging in for the selected identity.');\n return reject(err);\n }).then(function (idCode) {\n _this.sendGenerateMessage(publicKey, origin, idCode, idp).then(function (newResponse) {\n if (newResponse.hasOwnProperty('assertion')) {\n _this.identities.addAssertion(newResponse).then(function (result) {\n resolve('Login was successfull');\n }).catch(function (err) {\n reject('Login has failed:' + err);\n });\n } else {\n log.error('Error while logging in for the selected identity.');\n return reject('Could not generate a valid assertion for selected identity.');\n }\n }).catch(function (err) {\n reject('On loginSelectedIdentity from method sendGenerateMessage error: ' + err);\n });\n });\n });\n }\n }, {\n key: 'selectIdentityForHyperty',\n value: function selectIdentityForHyperty(origin, idp, idHint) {\n log.log('[selectIdentityForHyperty:origin]', origin);\n log.log('[selectIdentityForHyperty:idp]', idp);\n log.log('[selectIdentityForHyperty:idHint]', idHint);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n //generates the RSA key pair\n _this._crypto.getMyPublicKey().then(function (key) {\n var publicKey = (0, _utils.stringify)(key);\n\n _this.sendGenerateMessage(publicKey, origin, idHint, idp).then(function (response) {\n if (response.hasOwnProperty('assertion')) {\n // identity was logged in, just save it\n _this.identities.addAssertion(response).then(function (value) {\n return resolve(response);\n }, function (err) {\n return reject(err);\n });\n } else if (response.hasOwnProperty('loginUrl')) {\n // identity was not logged in\n _this.loginSelectedIdentity(publicKey, origin, idp, response.loginUrl).then(function (value) {\n return resolve(value);\n }, function (err) {\n return reject(err);\n });\n } else {\n // you should never get here, if you do then the IdP Proxy is not well implemented\n // log.error('GenerateAssertion returned invalid response.');\n log.log('Proceeding by logging in.');\n _this.callGenerateMethods(idp, origin).then(function (value) {\n return resolve(value);\n }, function (err) {\n return reject(err);\n });\n }\n }).catch(function (err) {\n reject('On selectIdentityForHyperty from method sendGenerateMessage error: ' + err);\n });\n }).catch(function (err) {\n reject('On selectIdentityForHyperty from method generateRSAKeyPair error: ' + err);\n });\n });\n }\n }, {\n key: 'selectIdentityFromGUI',\n value: function selectIdentityFromGUI(origin) {\n var _this3 = this;\n\n log.log('[IdentityModule.selectIdentityFromGUI:origin]', origin);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this3.getIdentitiesToChoose().then(function (identitiesInfo) {\n return _this.requestIdentityToGUI(identitiesInfo.identities, identitiesInfo.idps);\n }).then(function (value) {\n\n if (value.type === 'identity') {\n\n // let chosenID = getUserURLFromEmail(value.value);\n // hack while the user url is not returned from requestIdentityToGUI;\n\n /* let chosenID = 'user://' + _this.identities.currentIdentity.idp.domain + '/' + value.value;\r\n _this.identities.defaultIdentity = _this.identities.currentIdentity;*/\n\n // returns the identity info from the chosen id\n // if (_this.identities.currentIdentity) resolve(_this.identities.currentIdentity.assertion);\n if (_this.identities.identities[value.value]) resolve(_this.identities.identities[value.value]);else reject('[IdentityModule.selectIdentityFromGUI] identity not found: ', value.value);\n } else if (value.type === 'idp') {\n\n _this.callGenerateMethods(value.value, origin).then(function (value) {\n return resolve(value);\n }, function (err) {\n return reject(err);\n });\n } else {\n return reject('error on GUI received message.');\n }\n }).catch(function (err) {\n reject('On selectIdentityFromGUI from method requestIdentityToGUI error: ' + err);\n });\n });\n }\n }, {\n key: 'callIdentityModuleFunc',\n value: function callIdentityModuleFunc(methodName, parameters) {\n log.log('[callIdentityModuleFunc:methodName]', methodName);\n log.log('[callIdentityModuleFunc:parameters]', parameters);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n var message = {\n type: 'execute', to: _this._guiURL, from: _this._idmURL,\n body: { resource: 'identity', method: methodName, params: parameters }\n };\n\n //post msg with callback but without timout\n var callback = function callback(msg) {\n _this._messageBus.removeResponseListener(_this._idmURL, msg.id);\n var result = msg.body.value;\n resolve(result);\n };\n try {\n\n _this._messageBus.postMessage(message, callback, false);\n } catch (err) {\n reject('In method callIdentityModuleFunc error: ' + err);\n }\n });\n }\n\n //******************* TOKEN METHODS *******************\n /**\r\n * get a Token to be added to a message\r\n * @param {String} fromURL origin of the message\r\n * @param {String} toURL target of the messageok\r\n * @return {JSON} token token to be added to the message\r\n */\n\n }, {\n key: 'getToken',\n value: function getToken(msg) {\n var _this = this;\n var fromURL = msg.from;\n var toUrl = msg.to;\n if (msg.hasOwnProperty('body') && msg.body.hasOwnProperty('source')) {\n fromURL = msg.body.source;\n }\n\n if (msg.type === 'forward') {\n fromURL = msg.body.from;\n }\n\n if (msg.hasOwnProperty('body') && msg.body.hasOwnProperty('subscriber')) {\n fromURL = msg.body.subscriber;\n }\n\n return new _promise2.default(function (resolve, reject) {\n log.log('[IdentityModule.getToken] for msg ', msg);\n\n //log.log('toUrl', toUrl);\n _this.registry.isLegacy(toUrl).then(function (result) {\n // log.log('[Identity.IdentityModule.getToken] isLEGACY: ', result);\n if (result) {\n\n _this._getAccessToken(msg).then(function (token) {\n log.log('[IdentityModule.getToken] access token ', token);\n resolve((0, _utils.deepClone)(token));\n }).catch(function (err) {\n reject('[IdentityModule.getToken] Access Token error ' + err);\n });\n } else {\n _this._getValidToken(fromURL).then(function (token) {\n resolve(token);\n }).catch(function (err) {\n reject('On getToken from method _getValidToken error: ' + err);\n });\n }\n }).catch(function (err) {\n reject('On getToken from method isLegacy error: ' + err);\n });\n });\n }\n\n /**\r\n * get an Id Token for a HypertyURL\r\n * @param {String} hypertyURL the Hyperty address\r\n * @return {JSON} token Id token to be added to the message\r\n */\n\n }, {\n key: 'getIdToken',\n value: function getIdToken(hypertyURL) {\n log.info('getIdToken:hypertyURL ', hypertyURL);\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n var splitURL = hypertyURL.split('://');\n var userURL = void 0;\n if (splitURL[0] !== 'hyperty') {\n // it is a Data Object URL\n\n _this._getHypertyFromDataObject(hypertyURL).then(function (returnedHypertyURL) {\n\n userURL = _this.registry.getHypertyOwner(returnedHypertyURL);\n\n if (userURL) {\n var identity = _this.identities.getIdentity(userURL);\n if (identity) return resolve(identity);else return reject('[IdentityModule.getIdToken] Identity not found for: ', userURL);\n } else {\n return reject('[IdentityModule.getIdToken] User not found for hyperty: ', returnedHypertyURL);\n }\n }).catch(function (reason) {\n log.error('[IdentityModule.getIdToken] Error: ', reason);\n reject(reason);\n });\n } else {\n userURL = _this.registry.getHypertyOwner(hypertyURL);\n if (userURL) {\n\n var identity = _this.identities.getIdentity(userURL);\n if (identity) return resolve(identity);else return reject('[IdentityModule.getIdToken] Identity not found for: ', userURL);\n } else {\n return reject('[IdentityModule.getIdToken] User not found for hyperty: ', userURL);\n }\n }\n });\n }\n\n /**\r\n * get an Access Token for an external API\r\n * @param {String} url the external url\r\n * @return {JSON} token Access token to be added to the message\r\n */\n\n }, {\n key: '_getAccessToken',\n value: function _getAccessToken(msg) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n var url = msg.to;\n var token = void 0;\n\n if (!msg.hasOwnProperty('body')) {\n return reject('[IdentityModule._getAccessToken] missing mandatory msg body: ', msg);\n }\n if (!msg.body.hasOwnProperty('value')) {\n return reject('[IdentityModule._getAccessToken] missing mandatory msg body value: ', msg);\n }\n if (!msg.body.value.hasOwnProperty('resources')) {\n return reject('[IdentityModule._getAccessToken] missing mandatory msg body value resources: ', msg);\n }\n var domainToCheck = (0, _utils.divideURL)(url).domain;\n\n if (url.includes('protostub')) {\n domainToCheck = domainToCheck.replace(domainToCheck.split('.')[0] + '.', '');\n }\n\n var resources = msg.body.value.resources;\n\n try {\n token = _this.identities.getAccessToken(domainToCheck, resources);\n } catch (e) {\n return reject('[IdentityModule._getAccessToken] Access Token error ' + err);\n }\n\n if (!token) {\n _this._getNewAccessToken(domainToCheck, resources).then(function (token) {\n log.log('[Identity.IdentityModule.getAccessToken] new Access Token ', token);\n return resolve(token);\n }).catch(function (err) {\n reject('[IdentityModule._getAccessToken] on getNewAccessToken ' + err);\n });\n } else if (token.status === 'in-progress') {\n return resolve(_this._inProgressAccessToken(domainToCheck, resources));\n } else {\n var timeNow = (0, _utils.secondsSinceEpoch)();\n\n log.log('[Identity.IdentityModule.getAccessToken] found Access Token ', token);\n\n if (timeNow >= token.expires) return resolve(_this._getNewAccessToken(domainToCheck, resources));else return resolve(token);\n }\n });\n }\n }, {\n key: '_inProgressAccessToken',\n value: function _inProgressAccessToken(domain, resources) {\n var _this4 = this;\n\n this.identities.watchingYou.observe('accessTokens', function (change) {\n\n log.log('[IdentityModule._inProgressAccessToken] accessTokens changed ' + _this4.identities.accessTokens);\n\n var keypath = change.keypath;\n\n if (keypath.includes('status')) {\n keypath = keypath.replace('.status', '');\n }\n\n if (keypath === domain && change.name === 'status' && change.newValue === 'created') {\n // log.log('[Identity.IdentityModule.getToken] token is created ' + _this.identitiesList[domain]);\n return _this4.identities.getAccessToken(domain, resources);\n }\n });\n }\n }, {\n key: '_getNewAccessToken',\n value: function _getNewAccessToken(domain, resources) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this.identities.setAccessTokenInProgress(domain);\n\n var message = {\n type: 'execute',\n to: _this._resolveDomain(domain),\n from: _this._idmURL,\n body: {\n method: 'getAccessTokenAuthorisationEndpoint',\n params: resources\n }\n };\n\n //let's first get the authorisation URL from the Idp Proxy\n _this._messageBus.postMessage(message, function (res) {\n if (res.body.code > 299) {\n return reject('[IdentityModule._getNewAccessToken] Error on getAccessTokenAuthorisationEndpoint from IdP Proxy: ', res.body.desc);\n }\n\n // let's ask the user for authorisation\n _this.callIdentityModuleFunc('openPopup', { urlreceived: res.body.value }).then(function (authorisation) {\n log.log('[IdentityModule:callIdentityModuleFunc:openPopup] auhtorisation result: ', authorisation);\n\n message.body.method = 'getAccessToken';\n message.body.params = {\n resources: resources,\n login: authorisation\n };\n\n //wihtout callback to avoid timeout errors?\n\n // let's ask Access Token from the Idp Proxy\n _this._messageBus.postMessage(message, function (res) {\n if (res.body.code > 299) return reject('[IdentityModule._getNewAccessToken] Error on getAccessToken from IdP Proxy: ', res.body.desc);\n\n _this.identities.addAccessToken(res.body.value).then(function (token) {\n log.info('[IdentityModule._getNewAccessToken] resolving token: ', token);\n return resolve(res.body.value);\n }, function (err) {\n reject(err);\n });\n });\n }, function (err) {\n reject(err);\n });\n });\n });\n }\n }, {\n key: 'sendRefreshMessage',\n value: function sendRefreshMessage(oldIdentity) {\n var _this = this;\n\n // let domain = _this._resolveDomain(oldIdentity.idp);\n // let message;\n // let assertion = _this.getIdentity(oldIdentity.userProfile.userURL);\n\n log.log('sendRefreshMessage:oldIdentity', oldIdentity);\n\n return new _promise2.default(function (resolve, reject) {\n var domain = _this._resolveDomain(oldIdentity.idp);\n var message = void 0;\n var assertion = _this.getIdentity(oldIdentity.userProfile.userURL);\n\n log.info('sendRefreshMessage:oldIdentity', oldIdentity);\n\n message = { type: 'execute', to: domain, from: _this._idmURL, body: { resource: 'identity', method: 'refreshAssertion', params: { identity: assertion } } };\n try {\n _this._messageBus.postMessage(message, function (res) {\n var result = res.body.value;\n resolve(result);\n });\n } catch (err) {\n reject('In sendRefreshMessage on postMessage error: ' + err);\n }\n });\n }\n }, {\n key: 'getAccessToken',\n value: function getAccessToken(idpDomain, resources, login) {\n log.log('[getAccessToken:idpDomain]', idpDomain);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var domain = _this._resolveDomain(idpDomain);\n var message = void 0;\n\n message = {\n type: 'execute', to: domain, from: _this._idmURL, body: { resource: 'identity', method: 'getAccessToken', params: { resources: resources, login: login } }\n };\n try {\n _this._messageBus.postMessage(message, function (res) {\n var result = res.body.value;\n resolve(result);\n });\n } catch (err) {\n reject('In sendRefreshMessage on postMessage error: ' + err);\n }\n });\n }\n }, {\n key: 'getAccessTokenAuthorisationEndpoint',\n value: function getAccessTokenAuthorisationEndpoint(scope, idpDomain) {\n log.log('[getAccessTokenAuthorisationEndpoint:idpDomain]', idpDomain);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var domain = _this._resolveDomain(idpDomain);\n var message = void 0;\n\n message = {\n type: 'execute', to: domain, from: _this._idmURL, body: { resource: 'identity', method: 'getAccessTokenAuthorisationEndpoint', params: { resources: scope } }\n };\n try {\n _this._messageBus.postMessage(message, function (res) {\n var result = res.body.value;\n resolve(result);\n });\n } catch (err) {\n reject('In sendRefreshMessage on postMessage error: ' + err);\n }\n });\n }\n }, {\n key: 'sendGenerateMessage',\n value: function sendGenerateMessage(contents, origin, usernameHint, idpDomain) {\n log.log('[sendGenerateMessage:contents]', contents);\n log.log('[sendGenerateMessage:origin]', origin);\n log.log('[sendGenerateMessage:usernameHint]', usernameHint);\n log.log('[sendGenerateMessage:idpDomain]', idpDomain);\n log.log('sendGenerateMessage_hint');\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var domain = _this._resolveDomain(idpDomain);\n var message = void 0;\n\n message = {\n type: 'execute', to: domain, from: _this._idmURL, body: { resource: 'identity', method: 'generateAssertion', params: { contents: contents, origin: origin, usernameHint: usernameHint } }\n };\n try {\n _this._messageBus.postMessage(message, function (res) {\n var result = res.body.value;\n resolve(result);\n });\n } catch (err) {\n reject('In sendRefreshMessage on postMessage error: ' + err);\n }\n });\n }\n\n /**\r\n * Requests the IdpProxy from a given Domain for an identityAssertion\r\n *\r\n * @param {DOMString} contents contents\r\n * @param {DOMString} origin origin\r\n * @param {DOMString} usernameHint usernameHint\r\n * @param {JSON} keyPair user keyPair\r\n * @return {IdAssertion} IdAssertion\r\n */\n\n }, {\n key: 'generateAssertion',\n value: function generateAssertion(contents, origin, usernameHint, idpDomain) {\n log.log('[generateAssertion:contents]', contents);\n log.log('[generateAssertion:origin]', origin);\n log.log('[generateAssertion:usernameHint]', usernameHint);\n\n // log.log('[generateAssertion:keyPair]', keyPair);\n log.log('[generateAssertion:idpDomain]', idpDomain);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n log.log('[IdentityModule:sendGenerateMessage:sendGenerateMessage]', usernameHint);\n _this.sendGenerateMessage(contents, origin, usernameHint, idpDomain).then(function (result) {\n\n if (result.loginUrl) {\n\n _this.callIdentityModuleFunc('openPopup', { urlreceived: result.loginUrl }).then(function (value) {\n log.log('[IdentityModule:callIdentityModuleFunc:openPopup]', usernameHint);\n\n resolve(value);\n }, function (err) {\n reject(err);\n });\n } else if (result) {\n\n _this.identities.addAssertion(result).then(function (value) {\n resolve(result);\n }, function (err) {\n reject(err);\n });\n } else {\n reject('error on obtaining identity information');\n }\n }).catch(function (err) {\n reject('On generateAssertion from method sendGenerateMessage error: ' + err);\n });\n });\n }\n\n /**\r\n * Requests the IdpProxy from a given Domain to validate an IdentityAssertion\r\n * Returns a promise with the result from the validation.\r\n * @param {DOMString} assertion\r\n * @param {DOMString} origin origin\r\n * @return {Promise} Promise promise with the result from the validation\r\n */\n\n }, {\n key: 'validateAssertion',\n value: function validateAssertion(assertion, origin, idpDomain) {\n log.log('[validateAssertion:assertion]', assertion);\n log.log('[validateAssertion:origin]', origin);\n log.log('[validateAssertion:idpDomain]', idpDomain);\n var _this = this;\n\n var domain = _this._resolveDomain(idpDomain);\n\n var message = {\n type: 'execute', to: domain, from: _this._idmURL, body: {\n resource: 'identity', method: 'validateAssertion',\n params: { assertion: assertion, origin: origin }\n }\n };\n\n return new _promise2.default(function (resolve, reject) {\n try {\n _this._messageBus.postMessage(message, function (result) {\n if (result.body.code === 200) {\n resolve(result.body.value);\n } else {\n reject('error', result.body.code);\n }\n });\n } catch (err) {\n reject('On validateAssertion from method postMessage error: ' + err);\n }\n });\n }\n }, {\n key: 'addGUIListeners',\n value: function addGUIListeners() {\n var _this = this;\n\n _this._messageBus.addListener(_this._idmURL, function (msg) {\n var funcName = msg.body.method;\n\n log.log('[IdentityModule:addGUIListeners]', msg, msg.body, funcName);\n\n var returnedValue = void 0;\n\n if (funcName === 'deployGUI') {\n returnedValue = _this.deployGUI();\n } else if (funcName === 'getIdentitiesToChoose') {\n _this.getIdentitiesToChoose().then(function (result) {\n // if the function requested is not a promise\n var value = { type: 'execute', value: result, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if storeIdentity method postMessage error: ' + err);\n }\n });\n return;\n } else if (funcName === 'unregisterIdentity') {\n var email = msg.body.params.email;\n returnedValue = _this.unregisterIdentity(email);\n } else if (funcName === 'getMyPublicKey') {\n // because generateRSAKeyPair is a promise\n // we have to send the message only after getting the key pair\n _this._crypto.getMyPublicKey().then(function (pubKey) {\n pubKey = (0, _utils.stringify)(pubKey);\n var value = { type: 'execute', value: pubKey, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if generateRSAKeyPair method postMessage error: ' + err);\n }\n });\n return;\n } else if (funcName === 'sendGenerateMessage') {\n var contents = msg.body.params.contents;\n var origin = msg.body.params.origin;\n var usernameHint = msg.body.params.usernameHint;\n var idpDomain = msg.body.params.idpDomain;\n _this.sendGenerateMessage(contents, origin, usernameHint, idpDomain).then(function (returnedValue) {\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if sendGenerateMessage method postMessage error: ' + err);\n }\n });\n return;\n } else if (funcName === 'getAccessTokenAuthorisationEndpoint') {\n var scope = msg.body.params.scope;\n var _idpDomain = msg.body.params.idpDomain;\n _this.getAccessTokenAuthorisationEndpoint(scope, _idpDomain).then(function (returnedValue) {\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if sendGenerateMessage method postMessage error: ' + err);\n }\n });\n return;\n } else if (funcName === 'addAccessToken') {\n var accessToken = msg.body.params;\n\n _this.identities.addAccessToken(accessToken).then(function (returnedValue) {\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if storeIdentity method postMessage error: ' + err);\n }\n });\n return;\n } else if (funcName === 'getAccessToken') {\n\n var domain = msg.body.params.idpDomain;\n var resources = msg.body.params.resources;\n var login = msg.body.params.login;\n\n _this.getAccessToken(domain, resources, login).then(function (returnedValue) {\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if sendGenerateMessage method postMessage error: ' + err);\n }\n });\n return;\n } else if (funcName === 'addAssertion') {\n var result = msg.body.params;\n\n // let keyPair = msg.body.params.keyPair;\n _this.identities.addAssertion(result).then(function (returnedValue) {\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if storeIdentity method postMessage error: ' + err);\n }\n });\n return;\n } /*else if (funcName === 'selectIdentityForHyperty') {\r\n let origin = msg.body.params.origin;\r\n let idp = msg.body.params.idp;\r\n let idHint = msg.body.params.idHint;\r\n _this.selectIdentityForHyperty(origin, idp, idHint);\r\n return;\r\n }*/\n\n // if the function requested is not a promise\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if storeIdentity method postMessage error: ' + err);\n }\n });\n }\n }, {\n key: 'deployGUI',\n value: function deployGUI() {\n var _this = this;\n _this.guiDeployed = true;\n }\n\n //******************* PRIVATE METHODS *******************\n /**\r\n * GetValidToken is for non legacy hyperties and verifies if the Token is still valid\r\n * if the token is invalid it requests a new token\r\n * @param {String} hypertyURL hypertyURL\r\n * @return {Promise}\r\n */\n\n }, {\n key: '_getValidToken',\n value: function _getValidToken(hypertyURL) {\n log.log('[IdentityModule._getValidToken]:hypertyURL', hypertyURL);\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n _this.getIdToken(hypertyURL).then(function (assertion) {\n log.log('[IdentityModule._getValidToken] retrieved IdAssertion', assertion);\n var timeNow = (0, _utils.secondsSinceEpoch)();\n\n if (!assertion.hasOwnProperty('expires')) return resolve(assertion);\n\n var expirationDate = assertion.expires;\n\n /* if (completeId.hasOwnProperty('info')) {\r\n if (completeId.info.hasOwnProperty('expires')) {\r\n expirationDate = completeId.info.expires;\r\n } else if (completeId.info.hasOwnProperty('tokenIDJSON')) {\r\n expirationDate = completeId.info.tokenIDJSON.exp;\r\n } else {\r\n // throw 'The ID Token does not have an expiration time';\r\n log.info('The ID Token does not have an expiration time');\r\n resolve(assertion);\r\n }\r\n } else if (completeId.hasOwnProperty('infoToken') && completeId.infoToken.hasOwnProperty('exp')) {\r\n expirationDate = completeId.infoToken.exp;\r\n } else {\r\n // throw 'The ID Token does not have an expiration time';\r\n log.info('The ID Token does not have an expiration time');\r\n resolve(assertion);\r\n }*/\n\n log.log('[Identity.IdentityModule.getValidToken] Token expires in', expirationDate);\n log.log('[Identity.IdentityModule.getValidToken] time now:', timeNow);\n\n if (timeNow >= expirationDate) {\n if (assertion.hasOwnProperty('refresh')) {\n _this.sendRefreshMessage(assertion).then(function (newAssertion) {\n _this.identities.updateAssertion(newAssertion).then(function () {\n resolve(newAssertion);\n }, function (err) {\n log.error('[IdentityModule.getValidToken] error updating the assertion ', err);\n reject(err);\n });\n }, function (err) {\n log.error('[IdentityModule.getValidToken] error refreshing the assertion ', err);\n reject(err);\n });\n } else {\n // no refresh token available, user has to authenticate again to get a new assertion\n // generate new idToken\n _this.callGenerateMethods(assertion.idp.domain).then(function (value) {\n resolve(value);\n }).catch(function (err) {\n reject('[IdentityModule.getValidToken] error when generating a new assertion ' + err);\n });\n }\n } else {\n resolve(assertion);\n }\n }).catch(function (error) {\n log.error('[IdentityModule.getValidToken] error on getIdToken', error);\n reject(error);\n });\n });\n }\n\n /**\r\n * returns the reporter associated to the dataObject URL\r\n * @param {String} dataObjectURL dataObject url\r\n * @return {String} reporter dataObject url reporter\r\n */\n\n }, {\n key: '_getHypertyFromDataObject',\n value: function _getHypertyFromDataObject(dataObjectURL) {\n log.info('_getHypertyFromDataObject:dataObjectURL', dataObjectURL);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var splitedURL = (0, _utils.divideURL)(dataObjectURL);\n var domain = splitedURL.domain;\n var finalURL = (0, _utils.parseMessageURL)(dataObjectURL);\n\n // check if is the creator of the hyperty\n var reporterURL = _this.registry.getReporterURLSynchonous(finalURL);\n log.info('_getHypertyFromDataObject:reporterURL', reporterURL);\n\n if (reporterURL) {\n resolve(reporterURL);\n } else {\n // check if there is already an association from an hypertyURL to the dataObject\n var storedReporterURL = _this.dataObjectsIdentity[finalURL];\n log.info('_getHypertyFromDataObject:storedReporterURL', storedReporterURL);\n\n if (storedReporterURL) {\n resolve(storedReporterURL);\n } else {\n // check if there is any hyperty that subscribed the dataObjectURL\n var subscriberHyperty = _this.registry.getDataObjectSubscriberHyperty(dataObjectURL);\n log.info('_getHypertyFromDataObject:subscriberHyperty', subscriberHyperty);\n\n if (subscriberHyperty) {\n resolve(subscriberHyperty);\n } else {\n // search in domain registry for the hyperty associated to the dataObject\n // search in case is a subscriber who wants to know the reporter\n // To be reviewed in order to avoid the discovery transaction\n _this._coreDiscovery.discoverDataObjectPerURL(finalURL, domain).then(function (dataObject) {\n log.info('_getHypertyFromDataObject:dataObject', dataObject);\n _this.dataObjectsIdentity[finalURL] = dataObject.reporter;\n log.info('_getHypertyFromDataObject:dataObject.reporter', dataObject.reporter);\n resolve(dataObject.reporter);\n }, function (err) {\n reject(err);\n });\n }\n }\n }\n });\n }\n\n /**\r\n * Function that resolve and create the domainURL in case it is provided one. If not, resolve the default domainURL\r\n * @param {String} idpDomain idpDomain (Optional)\r\n */\n\n }, {\n key: '_resolveDomain',\n value: function _resolveDomain(idpDomain) {\n if (!idpDomain) {\n return 'domain-idp://google.com';\n } else {\n return 'domain-idp://' + idpDomain;\n }\n }\n\n /*\r\n _secondsSinceEpoch() {\r\n return Math.floor(Date.now() / 1000);\r\n }*/\n\n }, {\n key: 'messageBus',\n get: function get() {\n var _this = this;\n return _this._messageBus;\n }\n\n /**\r\n * Set the messageBus in this Registry\r\n * @param {MessageBus} messageBus\r\n */\n ,\n set: function set(messageBus) {\n var _this = this;\n _this._messageBus = messageBus;\n _this.addGUIListeners();\n }\n\n /**\r\n * return the coreDiscovery component\r\n * do we need this??\r\n */\n\n }, {\n key: 'coreDiscovery',\n get: function get() {\n var _this = this;\n return _this._coreDiscovery;\n }\n\n /**\r\n * Set the coreDiscovery component\r\n * @param {coreDiscovery} coreDiscovery\r\n */\n ,\n set: function set(coreDiscovery) {\n var _this = this;\n _this._coreDiscovery = coreDiscovery;\n }\n\n /**\r\n * return the registry in this idModule\r\n * @param {registry} registry\r\n */\n\n }, {\n key: 'registry',\n get: function get() {\n var _this = this;\n return _this._registry;\n }\n\n /**\r\n * Set the registry in this idModule\r\n * @param {registry} reg\r\n */\n ,\n set: function set(registry) {\n var _this = this;\n _this._registry = registry;\n }\n }, {\n key: 'identities',\n get: function get() {\n var _this = this;\n return _this._identities;\n },\n set: function set(identities) {\n var _this = this;\n _this._identities = identities;\n }\n }, {\n key: 'idps',\n get: function get() {\n return this._listOfIdps;\n }\n }]);\n return IdentityModule;\n}();\n\nexports.default = IdentityModule;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9pZGVudGl0eS9JZGVudGl0eU1vZHVsZS5qcz81MTE1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIExvZyBTeXN0ZW1cclxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcclxubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0lkZW50aXR5TW9kdWxlJyk7XHJcblxyXG5pbXBvcnQgeyBzZWNvbmRzU2luY2VFcG9jaCwgZGl2aWRlVVJMLCBwYXJzZU1lc3NhZ2VVUkwsIHN0cmluZ2lmeSwgZGVlcENsb25lIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMuanMnO1xyXG5pbXBvcnQgeyBydW50aW1lQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL3J1bnRpbWUvcnVudGltZUNvbmZpZ3VyYXRpb24nO1xyXG5cclxuaW1wb3J0IElkZW50aXRpZXMgZnJvbSAnLi9JZGVudGl0aWVzJztcclxuaW1wb3J0IEd1aUZha2UgZnJvbSAnLi9HdWlGYWtlJztcclxuXHJcbi8qKlxyXG4qXHJcbiogVGhlIElkZW50aXR5IE1vZHVsZSAoSWQgTW9kdWxlKSBpcyB0aGUgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGVcclxuKiB1c2VyIGlkZW50aXR5IGFuZCB0aGUgYXNzb2NpYXRpb24gb2YgdGhpcyBpZGVudGl0eSB3aXRoIHRoZSBIeXBlcnR5IGluc3RhbmNlcyxcclxuKiBpbiBvcmRlciB0byBtYWtlIEh5cGVydHkgaW5zdGFuY2VzIGlkZW50aWZpYWJsZS4gVGhlIGlkZW50aXR5IGluIHRoZSByZVRISU5LIHByb2plY3RcclxuKiBpcyBub3QgZml4ZWQgdG8gYSB1bmlxdWUgSWRlbnRpdHkgU2VydmljZSBQcm92aWRlciwgYnV0IG9idGFpbmVkIHRocm91Z2ggc2V2ZXJhbFxyXG4qIGRpZmZlcmVudCBJZGVudGl0eSBzb3VyY2VzLiBXaXRoIHRoaXMgYXBwcm9hY2gsIHRoZSBJZCBNb2R1bGUgcHJvdmlkZXMgdG8gdGhlIHVzZXIgdGhlXHJcbiogb3B0aW9uIHRvIGNob29zZSB0aGUgcHJlZmVycmVkIG1ldGhvZCBmb3IgYXV0aGVudGljYXRpb24uXHJcbiogVGhpcyBtb2R1bGUgd2lsbCB0aHVzIGFibGUgdG8gc3VwcG9ydCBtdWx0aXBsZSBJZGVudGl0eSBhY3F1aXNpdGlvbiBtZXRob2RzLFxyXG4qIHN1Y2ggYXMgT3BlbklEIGNvbm5lY3QgMS4wLCBLZXJiZXJvcyBTeXN0ZW0sIG9yIGF1dGhlbnRpY2F0aW9uIHRocm91Z2ggc21hcnQgY2FyZHMuXHJcbiogRm9yIGV4YW1wbGUsIGEgdXNlciB3aXRoIGEgR29vZ2xlIGFjY291bnQgY2FuIHVzZSB0aGUgR29vZ2xlIGFzIGFuIElkZW50aXR5IFByb3ZpZGVyIHRvIHByb3ZpZGUgSWRlbnRpdHkgVG9rZW5zLFxyXG4qICB3aGljaCBjYW4gYmUgdXNlZCBieSB0aGUgSWRlbnRpdHkgTW9kdWxlIHRvIGFzc29jaWF0ZSBpdCB3aXRoIGEgSHlwZXJ0eSBpbnN0YW5jZS5cclxuKlxyXG4qIFRoZSBJZGVudGl0eSBNb2R1bGUgdXNlcyBhIG5vZGUgcGFja2FnZSwgdGhlIEhlbGxvSlMsIHdoaWNoIGlzIGEgY2xpZW50LXNpZGUgSmF2YVNjcmlwdCBBUEkgZm9yIGF1dGhlbnRpY2F0aW9uXHJcbiogdGhhdCBmYWNpbGl0YXRlcyB0aGUgcmVxdWVzdHMgZm9yIHRoZSBPcGVuSUQgY29ubmVjdCBwcm90b2NvbC4gVGhpcyBtZXRob2QgYWxsb3dzIGZvciBzb21lIGFic3RyYWN0aW9uXHJcbiogd2hlbiBtYWtpbmcgcmVxdWVzdHMgZm9yIGRpZmZlcmVudCBJZGVudGl0eSBQcm92aWRlcnMsIHN1Y2ggYXMgT3BlbklEIGNvbm5lY3QgdXNlZCBieSBHb29nbGUsIEZhY2Vib29rLCBNaWNyb3NvZnQsIGZvciBleGFtcGxlLlxyXG4qXHJcbiogV2hlbiBhIHJlcXVlc3QgZm9yIGEgdXNlciBpZGVudGl0eSBpcyBtYWRlIHVzaW5nIHRoZSBtZXRob2QgbG9naW5XaXRoUlAoaWRlbnRpZmllciwgc2NvcGUpLFxyXG4qIHRoaXMgbWV0aG9kIHdpbGwgYW5hbHlzZSB0aGUgSWRlbnRpdHkgUHJvdmlkZXIgY2hvc2VuIHRvIG9idGFpbiBhbiBpZGVudGl0eSBhbmQgd2lsbCB1c2UgdGhlIEhlbGxvSlMgbm9kZSBwYWNrYWdlXHJcbiogd2l0aCB0aGUgc2VsZWN0ZWQgSWRlbnRpdHkgUHJvdmlkZXIgYW5kIGlkZW50aXR5IHNjb3BlLiBBZnRlciB0aGUgSGVsbG9KUyByZXF1ZXN0IGZvciBhbiBBY2Nlc3MgVG9rZW5cclxuKiB0byB0aGUgSWRlbnRpdHkgUHJvdmlkZXJzLCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGF1dGhlbnRpY2F0ZSB0b3dhcmRzIHRoZSBJZGVudGl0eSBQcm92aWRlci5cclxuKiBVcG9uIHJlY2VpdmluZyB0aGUgQWNjZXNzIFRva2VuLCB0aGlzIHRva2VuIGlzIHZhbGlkYXRlZCB3aXRoIGEgUkVTVGZ1bCB3ZWIgc2VydmljZSByZXF1ZXN0IHRvIGFuIGVuZHBvaW50XHJcbiogb24gdGhlIElkZW50aXR5IFByb3ZpZGVyIEF1dGhvcml6YXRpb24gU2VydmVyLCBhbmQgYWZ0ZXIgdGhlIHZhbGlkYXRpb24gaXMgZG9uZSxcclxuKiBhbiBJRCB0b2tlbiBpcyBvYnRhaW5lZCB3aXRoIHRoZSBpbmZvcm1hdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHNjb3BlIHJlcXVpcmVkLlxyXG4qIFRoaXMgSUQgdG9rZW4gaXMgdGhlbiBwcmVzZXJ2ZWQgaW4gdGhpcyBtb2R1bGUgdGhhdCBjYW4gb2J0YWluZWQgdGhyb3VnaCB0aGUgZ2V0SWRlbnRpdGllcygpXHJcbiogYW5kIGlzIHBhc3NlZCBhcyByZXR1cm4gdmFsdWUgb2YgdGhlIGxvZ2luV2l0aFJQIGZ1bmN0aW9uLiBUaGUgbWV0aG9kcyBnZW5lcmF0ZUFzc2VydGlvbiBhbmQgdmFsaWRhdGVBc3NlcnRpb24gaGF2ZSBub3QgeWV0IGJlZW4gZGV2ZWxvcGVkLlxyXG4qXHJcbiovXHJcbmNsYXNzIElkZW50aXR5TW9kdWxlIHtcclxuXHJcbiAgLyoqXHJcbiAgKiBUaGlzIGlzIHRoZSBjb25zdHJ1Y3RvciB0byBpbml0aWFsaXNlIHRoZSBJZGVudGl0eSBNb2R1bGUgaXQgZG9lcyBub3QgcmVxdWlyZSBhbnkgaW5wdXQuXHJcbiAgKi9cclxuICBjb25zdHJ1Y3RvcihydW50aW1lVVJMLCBydW50aW1lQ2FwYWJpbGl0aWVzLCBzdG9yYWdlTWFuYWdlciwgZGF0YU9iamVjdHNTdG9yYWdlLCBjcnlwdG9NYW5hZ2VyLCBydW50aW1lQ2F0YWxvZ3VlKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGlmICghcnVudGltZVVSTCkgdGhyb3cgbmV3IEVycm9yKCdydW50aW1lVVJMIGlzIG1pc3NpbmcuJyk7XHJcbiAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB0aHJvdyBuZXcgRXJyb3IoJ3N0b3JhZ2VNYW5hZ2VyIGlzIG1pc3NpbmcnKTtcclxuICAgIGlmICghY3J5cHRvTWFuYWdlcikgdGhyb3cgbmV3IEVycm9yKCdjcnlwdG9NYW5hZ2VyIGlzIG1pc3NpbmcnKTtcclxuICAgIGlmICghcnVudGltZUNhdGFsb2d1ZSkgdGhyb3cgbmV3IEVycm9yKCdydW50aW1lQ2F0YWxvZ3VlIGlzIG1pc3NpbmcnKTtcclxuXHJcbiAgICBfdGhpcy5fcnVudGltZVVSTCA9IHJ1bnRpbWVVUkw7XHJcblxyXG4gICAgX3RoaXMuX3J1bnRpbWVDYXRhbG9ndWUgPSBydW50aW1lQ2F0YWxvZ3VlO1xyXG5cclxuICAgIF90aGlzLmRhdGFPYmplY3RzU3RvcmFnZSA9IGRhdGFPYmplY3RzU3RvcmFnZTtcclxuICAgIF90aGlzLl9pZG1VUkwgPSBfdGhpcy5fcnVudGltZVVSTCArICcvaWRtJztcclxuICAgIF90aGlzLl9ndWlVUkwgPSBfdGhpcy5fcnVudGltZVVSTCArICcvaWRlbnRpdHktZ3VpJztcclxuICAgIF90aGlzLnJ1bnRpbWVDYXBhYmlsaXRpZXMgPSBydW50aW1lQ2FwYWJpbGl0aWVzO1xyXG5cclxuICAgIF90aGlzLl9kb21haW4gPSBkaXZpZGVVUkwoX3RoaXMuX3J1bnRpbWVVUkwpLmRvbWFpbjtcclxuXHJcblxyXG4gICAgLy90byBzdG9yZSBpdGVtcyB3aXRoIHRoaXMgZm9ybWF0OiB7aWRlbnRpdHk6IGlkZW50aXR5VVJMLCB0b2tlbjogdG9rZW5JRH1cclxuICAgIF90aGlzLl9pZGVudGl0aWVzID0gbmV3IElkZW50aXRpZXMoJ2h1bWFuJywgc3RvcmFnZU1hbmFnZXIpO1xyXG5cclxuICAgIC8vIHRvIGJlIHJldmlld2VkOiB3YXRjaGluZ1lvdSBpZGVudGl0aWVzTGlzdCBvciBpZGVudGl0aWVzP1xyXG4gICAgLy8gICAgX3RoaXMuaWRlbnRpdGllc0xpc3QgPSBfdGhpcy53YXRjaGluZ1lvdS53YXRjaCgnaWRlbnRpdGllc0xpc3QnLCB7fSwgdHJ1ZSk7XHJcbiAgICBfdGhpcy5fY3J5cHRvID0gY3J5cHRvTWFuYWdlcjtcclxuXHJcbiAgICAvKiAgICBfdGhpcy5lbWFpbHNMaXN0ID0gW107XHJcbiAgICBsZXQgbmV3SWRlbnRpdHkgPSBuZXcgSWRlbnRpdHkoJ2d1aWQnLCAnSFVNQU4nKTtcclxuICAgIF90aGlzLmlkZW50aXR5ID0gbmV3SWRlbnRpdHk7XHJcbiAgICBfdGhpcy5jdXJyZW50SWRlbnRpdHk7XHJcbiAgICBfdGhpcy5pZGVudGl0aWVzLmRlZmF1bHRJZGVudGl0eTsqL1xyXG5cclxuICAgIC8vc3RvcmVzIHRoZSBhc3NvY2lhdGlvbiBvZiB0aGUgZGF0YU9iamVjdCBhbmQgdGhlIEh5cGVydHkgcmVnaXN0ZXJlZCB3aXRoaW5cclxuICAgIF90aGlzLmRhdGFPYmplY3RzSWRlbnRpdHkgPSB7fTsgLy8gaXMgdGhpcyBuZWVkZWQ/XHJcblxyXG4gICAgX3RoaXMuX2xpc3RPZklkcHMgPSBbXTtcclxuXHJcbiAgICAvLyB2YXJpYWJsZSB0byBrbm93IGlmIHRoZSBHVUkgaXMgZGVwbG95ZWQgdG8gY2hvb3NlIHRoZSBpZGVudGl0eS4gaWYgdGhlIHJlYWwgR1VJIGlzIG5vdCBkZXBsb3llZCwgYSBmYWtlIGd1aSBpcyBkZXBsb3llZCBpbnN0ZWFkLlxyXG4gICAgX3RoaXMuZ3VpRGVwbG95ZWQgPSBmYWxzZTtcclxuXHJcbiAgfVxyXG5cclxuICAvLyoqKioqKioqKioqKioqKioqKiogR0VUIEFORCBTRVQgTUVUSE9EUyAqKioqKioqKioqKioqKioqKioqXHJcblxyXG4gIC8qKlxyXG4gICogcmV0dXJuIHRoZSBtZXNzYWdlQnVzIGluIHRoaXMgUmVnaXN0cnlcclxuICAqIEBwYXJhbSB7TWVzc2FnZUJ1c30gICAgICAgICAgIG1lc3NhZ2VCdXNcclxuICAqL1xyXG4gIGdldCBtZXNzYWdlQnVzKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBfdGhpcy5fbWVzc2FnZUJ1cztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogU2V0IHRoZSBtZXNzYWdlQnVzIGluIHRoaXMgUmVnaXN0cnlcclxuICAqIEBwYXJhbSB7TWVzc2FnZUJ1c30gICAgICAgICAgIG1lc3NhZ2VCdXNcclxuICAqL1xyXG4gIHNldCBtZXNzYWdlQnVzKG1lc3NhZ2VCdXMpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBfdGhpcy5fbWVzc2FnZUJ1cyA9IG1lc3NhZ2VCdXM7XHJcbiAgICBfdGhpcy5hZGRHVUlMaXN0ZW5lcnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogcmV0dXJuIHRoZSBjb3JlRGlzY292ZXJ5IGNvbXBvbmVudFxyXG4gICogZG8gd2UgbmVlZCB0aGlzPz9cclxuICAqL1xyXG4gIGdldCBjb3JlRGlzY292ZXJ5KCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBfdGhpcy5fY29yZURpc2NvdmVyeTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogU2V0IHRoZSBjb3JlRGlzY292ZXJ5IGNvbXBvbmVudFxyXG4gICogQHBhcmFtIHtjb3JlRGlzY292ZXJ5fSBjb3JlRGlzY292ZXJ5XHJcbiAgKi9cclxuICBzZXQgY29yZURpc2NvdmVyeShjb3JlRGlzY292ZXJ5KSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgX3RoaXMuX2NvcmVEaXNjb3ZlcnkgPSBjb3JlRGlzY292ZXJ5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiByZXR1cm4gdGhlIHJlZ2lzdHJ5IGluIHRoaXMgaWRNb2R1bGVcclxuICAqIEBwYXJhbSB7cmVnaXN0cnl9ICAgICAgICAgICByZWdpc3RyeVxyXG4gICovXHJcbiAgZ2V0IHJlZ2lzdHJ5KCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBfdGhpcy5fcmVnaXN0cnk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFNldCB0aGUgcmVnaXN0cnkgaW4gdGhpcyBpZE1vZHVsZVxyXG4gICogQHBhcmFtIHtyZWdpc3RyeX0gICAgIHJlZ1xyXG4gICovXHJcbiAgc2V0IHJlZ2lzdHJ5KHJlZ2lzdHJ5KSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgX3RoaXMuX3JlZ2lzdHJ5ID0gcmVnaXN0cnk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqIElERU5USVRZIFJFTEVBVEVEIE1FVEhPRFMgKioqKioqKioqKioqKioqKioqKlxyXG4gIC8qKlxyXG4gICogZ2V0cyBhbGwgdGhlIGluZm9ybWF0aW9uIGZyb20gYSBnaXZlbiB1c2VyVVJMXHJcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICB1c2VyVVJMICAgICB1c2VyIHVybFxyXG4gICogQHJldHVybiB7SlNPTn0gICAgaWRlbnRpdHkgICAgaWRlbnRpdHkgYnVuZGxlIGZyb20gdGhlIHVzZXJVUkxcclxuICAqL1xyXG4gIGdldElkZW50aXR5KHVzZXJVUkwpIHtcclxuICAgIHJldHVybiB0aGlzLmlkZW50aXRpZXMuZ2V0SWRlbnRpdHkodXNlclVSTCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEZ1bmN0aW9uIHRvIHNldCB0aGUgY3VycmVudCBJZGVudGl0eSB3aXRoIGEgZ2l2ZW4gSWRlbnRpdHlcclxuICAqIEBwYXJhbSB7SWRlbnRpdHl9ICAgICAgICBpZGVudGl0eSAgICAgICAgIGlkZW50aXR5XHJcbiAgKi9cclxuXHJcbiAgLyogIHNldEN1cnJlbnRJZGVudGl0eShpZGVudGl0eSkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIF90aGlzLmN1cnJlbnRJZGVudGl0eSA9IGlkZW50aXR5O1xyXG4gIH0qL1xyXG5cclxuICAvKipcclxuICAqIEZ1bmN0aW9uIHRvIHJldHVybiBhbGwgdGhlIGlkZW50aXRpZXMgcmVnaXN0ZXJlZCB3aXRoaW4gYSBzZXNzaW9uIGJ5IGEgdXNlci5cclxuICAqIFRoZXNlIGlkZW50aXRpZXMgYXJlIHJldHVybmVkIGluIGFuIGFycmF5IGNvbnRhaW5pbmcgYSBKU09OIHBhY2thZ2UgZm9yIGVhY2ggdXNlciBpZGVudGl0eS5cclxuICAqIEByZXR1cm4ge0FycmF5PElkZW50aXRpZXM+fSAgICAgICAgIElkZW50aXRpZXNcclxuICAqL1xyXG4gIGdldCBpZGVudGl0aWVzKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBfdGhpcy5faWRlbnRpdGllcztcclxuICB9XHJcblxyXG4gIHNldCBpZGVudGl0aWVzKGlkZW50aXRpZXMpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBfdGhpcy5faWRlbnRpdGllcyA9IGlkZW50aXRpZXM7XHJcbiAgfVxyXG5cclxuICBnZXQgaWRwcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9saXN0T2ZJZHBzO1xyXG4gIH1cclxuXHJcbiAgZ2V0SWRlbnRpdGllc1RvQ2hvb3NlKCkge1xyXG4gICAgLy8gICAgbGV0IGlkZW50aXRpZXMgPSBfdGhpcy5pZGVudGl0aWVzLmlkZW50aWZpZXJzO1xyXG5cclxuICAgIC8vIGxldCBpZHBzID0gW1xyXG4gICAgLy8gICB7IGRvbWFpbjogJ2dvb2dsZS5jb20nLCB0eXBlOiAnaWRUb2tlbid9LFxyXG4gICAgLy8gICB7IGRvbWFpbjogJ21pY3Jvc29mdC5jb20nLCB0eXBlOiAnaWRUb2tlbid9LFxyXG4gICAgLy8gICB7IGRvbWFpbjogJ29yYW5nZS5mcicsIHR5cGU6ICdpZFRva2VuJ30sXHJcbiAgICAvLyAgIHsgZG9tYWluOiAnc2xhY2suY29tJywgdHlwZTogJ0xlZ2FjeSd9XHJcbiAgICAvLyBdO1xyXG5cclxuICAgIC8vIHRvZG86IHJldHJpZXZlIGF2YWlsYWJsZSBpZHBzIGZyb20gcnVudGltZSBjYXRhbG9ndWVcclxuICAgIC8vIHRvZG86IGVuYWJsZSBvYXV0aCBpZHBzXHJcbiAgICAvLyBsZXQgaWRwcyA9IFtcclxuICAgIC8vICAgeyBkb21haW46ICdnb29nbGUuY29tJywgdHlwZTogJ2lkVG9rZW4nIH0sXHJcbiAgICAvLyAgIHsgZG9tYWluOiAnbWljcm9zb2Z0LmNvbScsIHR5cGU6ICdpZFRva2VuJyB9LFxyXG4gICAgLy8gICB7IGRvbWFpbjogJ2ZhY2Vib29rLmNvbScsIHR5cGU6ICdpZFRva2VuJyB9LFxyXG4gICAgLy8gICB7IGRvbWFpbjogJ3NsYWNrLmNvbScsIHR5cGU6ICdpZFRva2VuJyB9XHJcbiAgICAvLyBdO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG5cclxuICAgICAgY29uc3QgdXJsID0gcnVudGltZUNvbmZpZ3VyYXRpb24uY2F0YWxvZ3VlVVJMcy5pZHBQcm94eS5wcmVmaXggKyB0aGlzLl9kb21haW4gKyBydW50aW1lQ29uZmlndXJhdGlvbi5jYXRhbG9ndWVVUkxzLmlkcFByb3h5LnN1ZmZpeDtcclxuXHJcbiAgICAgIFByb21pc2UuYWxsKFtcclxuICAgICAgICB0aGlzLnJ1bnRpbWVDYXBhYmlsaXRpZXMuaXNBdmFpbGFibGUoJ2Jyb3dzZXInKSxcclxuICAgICAgICB0aGlzLnJ1bnRpbWVDYXBhYmlsaXRpZXMuaXNBdmFpbGFibGUoJ25vZGUnKV0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgICAgIGNvbnN0IGlzQnJvd3NlciA9IHJlc3VsdFswXTtcclxuICAgICAgICAgIGNvbnN0IGlzTm9kZSA9IHJlc3VsdFsxXTtcclxuXHJcbiAgICAgICAgICBjb25zdCBjb25zdHJhaW50cyA9IHsgY29uc3RyYWludHM6IHt9IH07XHJcbiAgICAgICAgICBjb25zdHJhaW50cy5jb25zdHJhaW50cy5ub2RlID0gaXNOb2RlO1xyXG4gICAgICAgICAgY29uc3RyYWludHMuY29uc3RyYWludHMuYnJvd3NlciA9IGlzQnJvd3NlcjtcclxuXHJcbiAgICAgICAgICB0aGlzLl9ydW50aW1lQ2F0YWxvZ3VlLmdldFR5cGVMaXN0KHVybCwgY29uc3RyYWludHMpLnRoZW4oKGlkcHMpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbGlzdE9mSWRwcyA9IGlkcHMubWFwKGtleSA9PiB7IHJldHVybiB7ZG9tYWluOiBrZXksIHR5cGU6ICdpZFRva2VuJ307IH0pO1xyXG4gICAgICAgICAgICBsb2cuaW5mbygnW0lkZW50aXR5TW9kdWxlLmdldElkZW50aXR5QXNzZXJ0aW9uOmdldElkZW50aXRpZXNUb0Nob29zZV0nLCBpZHBzLCBsaXN0T2ZJZHBzKTtcclxuICAgICAgICAgICAgdGhpcy5fbGlzdE9mSWRwcyA9IGxpc3RPZklkcHM7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHsgZGVmYXVsdElkZW50aXR5OiB0aGlzLmlkZW50aXRpZXMuZGVmYXVsdElkZW50aXR5LCBpZGVudGl0aWVzOiB0aGlzLmlkZW50aXRpZXMuaWRlbnRpdGllcywgaWRwczogbGlzdE9mSWRwcyB9KTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEZ1bmN0aW9uIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgSWRlbnRpdHkgd2l0aGluIGEgc2Vzc2lvblxyXG4gICogQHJldHVybiB7SWRlbnRpdHl9ICAgICAgICBpZGVudGl0eSAgICAgICAgIGlkZW50aXR5XHJcbiAgKi9cclxuICAvKiAgZ2V0Q3VycmVudElkZW50aXR5KCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBfdGhpcy5jdXJyZW50SWRlbnRpdHk7XHJcbiAgfSovXHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIF90aGlzLl9pZGVudGl0aWVzLmxvYWRJZGVudGl0aWVzKCkudGhlbigoKSA9PiB7XHJcblxyXG4gICAgICAgIF90aGlzLl9jcnlwdG8uZ2V0TXlQdWJsaWNLZXkoKS50aGVuKChrZXkpID0+IHtcclxuICAgICAgICAgIGxldCBoYXNoID0gX3RoaXMuX2NyeXB0by5jcnlwdG8uX3NoYTI1NihzdHJpbmdpZnkoa2V5KSkudGhlbigoaGFzaCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgbGV0IGd1aWQgPSAndXNlci1ndWlkOi8vJyArIGhhc2g7XHJcbiAgICAgICAgICAgIF90aGlzLmlkZW50aXRpZXMuZ3VpZCA9IGd1aWQ7XHJcbiAgICAgICAgICAgIF90aGlzLl9pZGVudGl0aWVzLmxvYWRBY2Nlc3NUb2tlbnMoKS50aGVuKCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1tJZGVudGl0eU1vZHVsZV0gZXJyb3InLCBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEZ1bmN0aW9uIHRoYXQgZmV0Y2ggYW4gaWRlbnRpdHlBc3NlcnRpb24gZnJvbSBhIHVzZXIuXHJcbiAgKlxyXG4gICogQHJldHVybiB7SWRBc3NlcnRpb259ICAgICAgICAgICAgICBJZEFzc2VydGlvblxyXG4gICovXHJcbiAgZ2V0SWRlbnRpdHlBc3NlcnRpb24oaWRlbnRpdHlCdW5kbGUpIHtcclxuICAgIGxvZy5sb2coJ1tJZGVudGl0eU1vZHVsZS5nZXRJZGVudGl0eUFzc2VydGlvbjppZGVudGl0eUJ1bmRsZV0nLCBpZGVudGl0eUJ1bmRsZSk7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIC8vQ0hFQ0sgd2hldGhlciBpcyBicm93c2VyIGVudmlyb25tZW50IG9yIG5vZGVqc1xyXG4gICAgICAvL2lmIGl0IGlzIGJyb3dzZXIsIHRoZW4gY3JlYXRlIGEgZmFrZSBpZGVudGl0eVxyXG5cclxuICAgICAgX3RoaXMucnVudGltZUNhcGFiaWxpdGllcy5pc0F2YWlsYWJsZSgnYnJvd3NlcicpLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGxvZy5sb2coJ3J1bnRpbWUgYnJvd3NlciBpZGVudGl0eSBhY3F1aXNpdGlvbicsIHJlc3VsdCk7XHJcblxyXG4gICAgICAgIGlmICghcmVzdWx0KSByZXR1cm47XHJcblxyXG4gICAgICAgIC8vdG9kbzogb25seSBpZHAgc2hvdWxkIGJlIG1hbmRhdG9yeSB3aGVuIGlkZW50aXR5QnVuZGxlIGV4aXN0c1xyXG5cclxuICAgICAgICBpZiAoaWRlbnRpdHlCdW5kbGUgJiZcclxuICAgICAgICAgIGlkZW50aXR5QnVuZGxlLmhhc093blByb3BlcnR5KCdpZHAnKSkge1xyXG5cclxuICAgICAgICAgIGxldCBpZHAgPSBpZGVudGl0eUJ1bmRsZS5pZHA7XHJcbiAgICAgICAgICBsZXQgb3JpZ2luID0gaWRlbnRpdHlCdW5kbGUuaGFzT3duUHJvcGVydHkoJ29yaWdpbicpID8gaWRlbnRpdHlCdW5kbGUub3JpZ2luIDogJ29yaWdpbic7XHJcbiAgICAgICAgICBsZXQgaWRIaW50ID0gaWRlbnRpdHlCdW5kbGUuaGFzT3duUHJvcGVydHkoJ2lkSGludCcpID8gaWRlbnRpdHlCdW5kbGUuaWRIaW50IDogJyc7XHJcblxyXG4gICAgICAgICAgX3RoaXMuc2VsZWN0SWRlbnRpdHlGb3JIeXBlcnR5KG9yaWdpbiwgaWRwLCBpZEhpbnQpLnRoZW4oKGFzc2VydGlvbikgPT4ge1xyXG4gICAgICAgICAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGVdIElkZW50aXR5IHNlbGVjdGVkIGJ5IGh5cGVydHkuJyk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKGFzc2VydGlvbik7XHJcbiAgICAgICAgICB9LCAoZXJyKSA9PiB7IC8vIGlmIGl0IGdvdCBhbiBlcnJvciB0aGVuIGp1c3Qgc2VsZWN0IGlkZW50aXR5IGZyb20gR1VJXHJcbiAgICAgICAgICAgIC8vIGxvZy5lcnJvcignW0lkZW50aXR5TW9kdWxlXSBDb3VsZCBub3Qgc2VsZWN0IGlkZW50aXR5IGZyb20gaHlwZXJ0eS4nKTtcclxuICAgICAgICAgICAgX3RoaXMuc2VsZWN0SWRlbnRpdHlGcm9tR1VJKCkudGhlbigobmV3QXNzZXJ0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgbG9nLmxvZygnW0lkZW50aXR5TW9kdWxlXSBJZGVudGl0eSBzZWxlY3RlZCBieSBoeXBlcnR5LicpO1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKG5ld0Fzc2VydGlvbik7XHJcbiAgICAgICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICBpZiAoX3RoaXMuaWRlbnRpdGllcy5kZWZhdWx0SWRlbnRpdHkgJiYgX3RoaXMuaWRlbnRpdGllcy5kZWZhdWx0SWRlbnRpdHkuZXhwaXJlcyA+IHNlY29uZHNTaW5jZUVwb2NoKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoX3RoaXMuaWRlbnRpdGllcy5kZWZhdWx0SWRlbnRpdHkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgX3RoaXMuc2VsZWN0SWRlbnRpdHlGcm9tR1VJKCkudGhlbigoYXNzZXJ0aW9uKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgIGxvZy5sb2coJ1tJZGVudGl0eU1vZHVsZV0gSWRlbnRpdHkgc2VsZWN0ZWQgZnJvbSBHVUkuJyk7XHJcblxyXG4gICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICBfdGhpcy5pZGVudGl0aWVzLmRlZmF1bHRJZGVudGl0eSA9IGFzc2VydGlvbi51c2VyUHJvZmlsZS51c2VyVVJMO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoYXNzZXJ0aW9uKTtcclxuICAgICAgICAgICAgICB9Ki9cclxuXHJcbiAgICAgICAgICAgICAgX3RoaXMuaWRlbnRpdGllcy5kZWZhdWx0SWRlbnRpdHkgPSBhc3NlcnRpb24udXNlclByb2ZpbGUudXNlclVSTDtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShhc3NlcnRpb24pO1xyXG5cclxuICAgICAgICAgICAgfSwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgbG9nLmVycm9yKCdFcnJvciBvbiBpZGVudGl0eSBhY3F1aXNpdGlvbiAnLCBlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgX3RoaXMucnVudGltZUNhcGFiaWxpdGllcy5pc0F2YWlsYWJsZSgnbm9kZScpLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGxvZy5sb2coJ25vZGUgaWRlbnRpdHkgYWNxdWlzaXRpb24nLCByZXN1bHQpO1xyXG5cclxuICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAoX3RoaXMuaWRlbnRpdGllcy5jdXJyZW50SWRlbnRpdHkpIHtcclxuICAgICAgICAgIC8vVE9ETyB2ZXJpZnkgd2hldGhlciB0aGUgdG9rZW4gaXMgc3RpbGwgdmFsaWQgb3Igbm90LlxyXG4gICAgICAgICAgLy8gc2hvdWxkIGJlIG5lZWRlZCB0byBtYWtlIGZ1cnRoZXIgcmVxdWVzdHMsIHRvIG9idGFpbiBhIHZhbGlkIHRva2VuXHJcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShfdGhpcy5pZGVudGl0aWVzLmN1cnJlbnRJZGVudGl0eSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxvZy5sb2coJ2dldElkZW50aXR5QXNzZXJ0aW9uIGZvciBub2RlanMnKTtcclxuXHJcbiAgICAgICAgICBsZXQgaWRwID0geyB0eXBlOiAnaWRwJywgdmFsdWU6ICdub2RlanMtaWRwJywgY29kZTogMjAwLCBhdXRoOiBmYWxzZSB9O1xyXG4gICAgICAgICAgX3RoaXMuY2FsbE5vZGVKc0dlbmVyYXRlTWV0aG9kcyhpZHAudmFsdWUsICdvcmlnaW4nKS50aGVuKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcclxuICAgICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9KS5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgbG9nLmVycm9yKCdFcnJvciBvbiBpZGVudGl0eSBhY3F1aXNpdGlvbiAnLCBlcnJvcik7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAqIEZ1bmN0aW9uIHRvIHJldHVybiBhbGwgdGhlIHVzZXJzIFVSTHMgcmVnaXN0ZXJlZCB3aXRoaW4gYSBzZXNzaW9uXHJcbiAgKiBUaGVzZSB1c2VycyBVUkxzIGFyZSByZXR1cm5lZCBpbiBhbiBhcnJheSBvZiBzdHJpbmdzLlxyXG4gICogQHJldHVybiB7QXJyYXk8U3RyaW5nPn0gICAgICAgICB1c2Vyc1xyXG4gICovXHJcbiAgZ2V0VXNlcnNJRHMoKSB7XHJcbiAgICAvKiAgbG9nLmxvZygnW2dldFVzZXJzSURzOmVtYWlsRm9ybWF0XScsIGVtYWlsRm9ybWF0KTtcclxuICAgICAgbG9nLmxvZygnZ2V0VXNlcnNJRHM6ZW1haWxGb3JtYXQnLCBlbWFpbEZvcm1hdCk7XHJcbiAgICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICAgIGxldCB1c2VycyA9IFtdOyovXHJcblxyXG4gICAgLy9pZiByZXF1ZXN0IGNvbWVzIHdpdGggdGhlIGVtYWlsRm9ybWF0IG9wdGlvbiwgdGhlbiBjb252ZXJ0IHVybCB0byBlbWFpbCBmb3JtYXRcclxuICAgIC8qICAgIGxldCBjb252ZXJ0ZXIgPSAoZW1haWxGb3JtYXQpID8gZ2V0VXNlckVtYWlsRnJvbVVSTCA6ICh2YWx1ZSkgPT4geyByZXR1cm4gdmFsdWU7IH07XHJcblxyXG4gICAgZm9yIChsZXQgaW5kZXggaW4gX3RoaXMuaWRlbnRpdGllcykge1xyXG4gICAgICBsZXQgaWRlbnRpdHkgPSBfdGhpcy5pZGVudGl0aWVzW2luZGV4XTtcclxuICAgICAgdXNlcnMucHVzaChjb252ZXJ0ZXIoaWRlbnRpdHkuaWRlbnRpdHkpKTtcclxuICAgIH0qL1xyXG5cclxuICAgIHJldHVybiB0aGlzLmlkZW50aXRpZXMuaWRlbnRpZmllcnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEZ1bmN0aW9uIHRvIHJlbW92ZSBhbiBpZGVudGl0eVxyXG4gICogQHBhcmFtIHtTdHJpbmd9ICAgIHVzZXJVUkwgICAgICB1c2VyVVJMXHJcbiAgKiBAcmV0dXJuIHtQcm9taXNlfVxyXG4gICovXHJcblxyXG4gIGRlbGV0ZUlkZW50aXR5KHVzZXJVUkwpIHtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0aWVzLnJlbW92ZUlkZW50aXR5KHVzZXJVUkwpO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogRnVuY3Rpb24gdG8gdW5yZWdpc3RlciBhbiBpZGVudGl0eSBmcm9tIHRoZSBlbWFpbHNMaXN0IGFycmF5IGFuZCBub3Qgc2hvdyBpbiB0byB0aGUgR1VJXHJcbiAgKiBAcGFyYW0ge1N0cmluZ30gICAgZW1haWwgICAgICBlbWFpbFxyXG4gICovXHJcbiAgLyogIHVucmVnaXN0ZXJJZGVudGl0eShlbWFpbCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBmb3IgKGxldCBlIGluIF90aGlzLmVtYWlsc0xpc3QpIHtcclxuICAgICAgaWYgKF90aGlzLmVtYWlsc0xpc3RbZV0gPT09IGVtYWlsKSB7XHJcbiAgICAgICAgX3RoaXMuZW1haWxzTGlzdC5zcGxpY2UoZSwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9Ki9cclxuXHJcbiAgLyoqXHJcbiAgKiBGdW5jdGlvbiB0aGF0IHNlbmRzIGEgcmVxdWVzdCB0byB0aGUgR1VJIHVzaW5nIG1lc3NhZ2VzLiBTZW5kcyBhbGwgaWRlbnRpdGllcyByZWdpc3RlcmVkIGFuZFxyXG4gICogdGhlIElkcHMgc3VwcG9ydGVkLCBhbmQgcmV0dXJuIHRoZSBpZGVudGl0eS9pZHAgcmVjZWl2ZWQgYnkgdGhlIEdVSVxyXG4gICogQHBhcmFtIHtBcnJheTxpZGVudGl0eT59ICBpZGVudGl0aWVzICAgICAgbGlzdCBvZiBpZGVudGl0aWllc1xyXG4gICogQHBhcmFtIHtBcnJheTxTdHJpbmc+fSAgICBpZHBzICAgICAgICAgICAgbGlzdCBvZiBpZHBzIHRvIGF1dGhlbnRpY2F0ZVxyXG4gICogQHJldHVybiB7UHJvbWlzZX0gICAgICAgICByZXR1cm5zIGEgY2hvc2VuIGlkZW50aXR5IG9yIGlkcFxyXG4gICovXHJcbiAgcmVxdWVzdElkZW50aXR5VG9HVUkoaWRlbnRpdGllcywgaWRwcykge1xyXG4gICAgbG9nLmxvZygnW0lkZW50aXR5TW9kdWxlLnJlcXVlc3RJZGVudGl0eVRvR1VJOmlkZW50aXRpZXNdJywgaWRlbnRpdGllcyk7XHJcbiAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGUucmVxdWVzdElkZW50aXR5VG9HVUk6aWRwc10nLCBpZHBzKTtcclxuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG5cclxuICAgICAgLy9jb25kaXRpb24gdG8gY2hlY2sgaWYgdGhlIHJlYWwgR1VJIGlzIGRlcGxveWVkLiBJZiBub3QsIGRlcGxveXMgYSBmYWtlIGd1aVxyXG4gICAgICBpZiAoX3RoaXMuZ3VpRGVwbG95ZWQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgbGV0IGd1aUZha2VVUkwgPSBfdGhpcy5fZ3VpVVJMO1xyXG4gICAgICAgIGxldCBndWlGYWtlID0gbmV3IEd1aUZha2UoZ3VpRmFrZVVSTCwgX3RoaXMuX21lc3NhZ2VCdXMpO1xyXG4gICAgICAgIF90aGlzLmd1aUZha2UgPSBndWlGYWtlO1xyXG4gICAgICAgIF90aGlzLmd1aURlcGxveWVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IG1lc3NhZ2UgPSB7XHJcbiAgICAgICAgdHlwZTogJ2NyZWF0ZScsIHRvOiBfdGhpcy5fZ3VpVVJMLCBmcm9tOiBfdGhpcy5faWRtVVJMLFxyXG4gICAgICAgIGJvZHk6IHsgdmFsdWU6IHsgaWRlbnRpdGllczogaWRlbnRpdGllcywgaWRwczogaWRwcyB9IH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIGxldCBjYWxsYmFjayA9IG1zZyA9PiB7XHJcbiAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucmVtb3ZlUmVzcG9uc2VMaXN0ZW5lcihfdGhpcy5faWRtVVJMLCBtc2cuaWQpO1xyXG5cclxuXHJcbiAgICAgICAgLy8gdG9kbzogdG8gcmV0dXJuIHRoZSB1c2VyIFVSTCBhbmQgbm90IHRoZSBlbWFpbCBvciBpZGVudGlmaWVyXHJcblxyXG4gICAgICAgIGlmIChtc2cuYm9keS5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIGxldCBzZWxlY3RlZElkZW50aXR5ID0gbXNnLmJvZHk7XHJcblxyXG4gICAgICAgICAgbG9nLmxvZygnc2VsZWN0ZWRJZGVudGl0eTogJywgc2VsZWN0ZWRJZGVudGl0eS52YWx1ZSk7XHJcbiAgICAgICAgICByZXNvbHZlKHNlbGVjdGVkSWRlbnRpdHkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWplY3QoJ2Vycm9yIG9uIHJlcXVlc3RpbmcgYW4gaWRlbnRpdHkgdG8gdGhlIEdVSScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vcG9zdE1lc3NhZ2Ugd2l0aCBjYWxsYmFjayBidXQgd2l0aG91dCB0aW1lb3V0XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobWVzc2FnZSwgY2FsbGJhY2ssIGZhbHNlKTtcclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgcmVqZWN0KCdJbiBtZXRob2QgY2FsbElkZW50aXR5TW9kdWxlRnVuYyBlcnJvcjogJyArIGVycik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FsbE5vZGVKc0dlbmVyYXRlTWV0aG9kcyhpZHAsIG9yaWdpbikge1xyXG4gICAgbG9nLmxvZygnW2NhbGxOb2RlSnNHZW5lcmF0ZU1ldGhvZHM6aWRwXScsIGlkcCk7XHJcbiAgICBsb2cubG9nKCdbY2FsbE5vZGVKc0dlbmVyYXRlTWV0aG9kczpvcmlnaW5dJywgb3JpZ2luKTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgLy9kZWJ1Z2dlcjtcclxuICAgICAgbGV0IHB1YmxpY0tleTtcclxuXHJcbiAgICAgIC8vbGV0IGtleVBhaXIgPSBub2RlSlNLZXlQYWlyUG9wdWxhdGU7XHJcblxyXG4gICAgICAvL2dlbmVyYXRlcyB0aGUgUlNBIGtleSBwYWlyXHJcbiAgICAgIF90aGlzLl9jcnlwdG8uZ2V0TXlQdWJsaWNLZXkoKS50aGVuKGZ1bmN0aW9uKGtleSkge1xyXG5cclxuICAgICAgICBsb2cubG9nKCdbY2FsbE5vZGVKc0dlbmVyYXRlTWV0aG9kczprZXldJywga2V5KTtcclxuXHJcbiAgICAgICAgcHVibGljS2V5ID0gc3RyaW5naWZ5KGtleSk7XHJcblxyXG4gICAgICAgIGxvZy5sb2coJ1tjYWxsTm9kZUpzR2VuZXJhdGVNZXRob2RzXSBOT19VUkwnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIF90aGlzLmdlbmVyYXRlQXNzZXJ0aW9uKHB1YmxpY0tleSwgb3JpZ2luLCAndXJsJywgaWRwKTtcclxuXHJcbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWplY3QoJ0Vycm9yIG9uIG9idGFpbmluZyBJZGVudGl0eScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgbG9nLmxvZyhlcnIpO1xyXG4gICAgICAgIHJlamVjdChlcnIpO1xyXG5cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNhbGxHZW5lcmF0ZU1ldGhvZHMoaWRwLCBvcmlnaW4pIHtcclxuICAgIGxvZy5sb2coJ1tjYWxsR2VuZXJhdGVNZXRob2RzOmlkcF0nLCBpZHApO1xyXG4gICAgbG9nLmxvZygnW2NhbGxHZW5lcmF0ZU1ldGhvZHM6b3JpZ2luXScsIG9yaWdpbik7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICBsZXQgcHVibGljS2V5O1xyXG5cclxuICAgICAgLy9nZW5lcmF0ZXMgdGhlIFJTQSBrZXkgcGFpclxyXG4gICAgICBfdGhpcy5fY3J5cHRvLmdldE15UHVibGljS2V5KCkudGhlbihmdW5jdGlvbihrZXkpIHtcclxuXHJcbiAgICAgICAgbG9nLmxvZygnW2NhbGxOb2RlSnNHZW5lcmF0ZU1ldGhvZHM6a2V5XScsIGtleSk7XHJcblxyXG4gICAgICAgIHB1YmxpY0tleSA9IHN0cmluZ2lmeShrZXkpO1xyXG5cclxuICAgICAgICAvLyAgICAgICAgdXNlcmtleVBhaXIgPSBrZXlQYWlyO1xyXG4gICAgICAgIGxvZy5sb2coJ2dlbmVyYXRlQXNzZXJ0aW9uOm5vX2hpbnQnKTtcclxuICAgICAgICByZXR1cm4gX3RoaXMuZ2VuZXJhdGVBc3NlcnRpb24ocHVibGljS2V5LCBvcmlnaW4sICcnLCBpZHApO1xyXG5cclxuICAgICAgfSkudGhlbihmdW5jdGlvbih1cmwpIHtcclxuICAgICAgICBfdGhpcy5teUhpbnQgPSB1cmw7XHJcbiAgICAgICAgbG9nLmxvZygnZ2VuZXJhdGVBc3NlcnRpb246aGludCcpO1xyXG4gICAgICAgIHJldHVybiBfdGhpcy5nZW5lcmF0ZUFzc2VydGlvbihwdWJsaWNLZXksIG9yaWdpbiwgdXJsLCBpZHApO1xyXG5cclxuICAgICAgfSkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlamVjdCgnRXJyb3Igb24gb2J0YWluaW5nIElkZW50aXR5Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICBsb2cuZXJyb3IoZXJyKTtcclxuICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBsb2dpblNlbGVjdGVkSWRlbnRpdHkocHVibGljS2V5LCBvcmlnaW4sIGlkcCwgbG9naW5VcmwpIHtcclxuICAgIGxvZy5sb2coJ1tsb2dpblNlbGVjdGVkSWRlbnRpdHk6cHVibGljS2V5XScsIHB1YmxpY0tleSk7XHJcbiAgICBsb2cubG9nKCdbbG9naW5TZWxlY3RlZElkZW50aXR5Om9yaWdpbl0nLCBvcmlnaW4pO1xyXG4gICAgbG9nLmxvZygnW2xvZ2luU2VsZWN0ZWRJZGVudGl0eTppZHBdJywgaWRwKTtcclxuXHJcbiAgICAvLyAgICBsb2cubG9nKCdbbG9naW5TZWxlY3RlZElkZW50aXR5OmtleVBhaXJdJywga2V5UGFpcik7XHJcbiAgICBsb2cubG9nKCdbbG9naW5TZWxlY3RlZElkZW50aXR5OmxvZ2luVXJsXScsIGxvZ2luVXJsKTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgbG9nLmxvZygnW0lkZW50aXR5TW9kdWxlXSBvcGVuUG9wdXAnKTtcclxuICAgICAgX3RoaXMuY2FsbElkZW50aXR5TW9kdWxlRnVuYygnb3BlblBvcHVwJywgeyB1cmxyZWNlaXZlZDogbG9naW5VcmwgfSkudGhlbigoaWRDb2RlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGlkQ29kZTtcclxuICAgICAgfSwgKGVycikgPT4ge1xyXG4gICAgICAgIGxvZy5lcnJvcignRXJyb3Igd2hpbGUgbG9nZ2luZyBpbiBmb3IgdGhlIHNlbGVjdGVkIGlkZW50aXR5LicpO1xyXG4gICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcclxuICAgICAgfSkudGhlbigoaWRDb2RlKSA9PiB7XHJcbiAgICAgICAgX3RoaXMuc2VuZEdlbmVyYXRlTWVzc2FnZShwdWJsaWNLZXksIG9yaWdpbiwgaWRDb2RlLCBpZHApLnRoZW4oKG5ld1Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAobmV3UmVzcG9uc2UuaGFzT3duUHJvcGVydHkoJ2Fzc2VydGlvbicpKSB7XHJcbiAgICAgICAgICAgIF90aGlzLmlkZW50aXRpZXMuYWRkQXNzZXJ0aW9uKG5ld1Jlc3BvbnNlKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZSgnTG9naW4gd2FzIHN1Y2Nlc3NmdWxsJyk7XHJcbiAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnTG9naW4gaGFzIGZhaWxlZDonICsgZXJyKTsgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsb2cuZXJyb3IoJ0Vycm9yIHdoaWxlIGxvZ2dpbmcgaW4gZm9yIHRoZSBzZWxlY3RlZCBpZGVudGl0eS4nKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlamVjdCgnQ291bGQgbm90IGdlbmVyYXRlIGEgdmFsaWQgYXNzZXJ0aW9uIGZvciBzZWxlY3RlZCBpZGVudGl0eS4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KS5jYXRjaChlcnIgPT4geyByZWplY3QoJ09uIGxvZ2luU2VsZWN0ZWRJZGVudGl0eSBmcm9tIG1ldGhvZCBzZW5kR2VuZXJhdGVNZXNzYWdlIGVycm9yOiAgJyArIGVycik7IH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdElkZW50aXR5Rm9ySHlwZXJ0eShvcmlnaW4sIGlkcCwgaWRIaW50KSB7XHJcbiAgICBsb2cubG9nKCdbc2VsZWN0SWRlbnRpdHlGb3JIeXBlcnR5Om9yaWdpbl0nLCBvcmlnaW4pO1xyXG4gICAgbG9nLmxvZygnW3NlbGVjdElkZW50aXR5Rm9ySHlwZXJ0eTppZHBdJywgaWRwKTtcclxuICAgIGxvZy5sb2coJ1tzZWxlY3RJZGVudGl0eUZvckh5cGVydHk6aWRIaW50XScsIGlkSGludCk7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICAvL2dlbmVyYXRlcyB0aGUgUlNBIGtleSBwYWlyXHJcbiAgICAgIF90aGlzLl9jcnlwdG8uZ2V0TXlQdWJsaWNLZXkoKS50aGVuKGZ1bmN0aW9uKGtleSkge1xyXG4gICAgICAgIGxldCBwdWJsaWNLZXkgPSBzdHJpbmdpZnkoa2V5KTtcclxuXHJcbiAgICAgICAgX3RoaXMuc2VuZEdlbmVyYXRlTWVzc2FnZShwdWJsaWNLZXksIG9yaWdpbiwgaWRIaW50LCBpZHApLnRoZW4oKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoJ2Fzc2VydGlvbicpKSB7IC8vIGlkZW50aXR5IHdhcyBsb2dnZWQgaW4sIGp1c3Qgc2F2ZSBpdFxyXG4gICAgICAgICAgICBfdGhpcy5pZGVudGl0aWVzLmFkZEFzc2VydGlvbihyZXNwb25zZSkudGhlbigodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5oYXNPd25Qcm9wZXJ0eSgnbG9naW5VcmwnKSkgeyAvLyBpZGVudGl0eSB3YXMgbm90IGxvZ2dlZCBpblxyXG4gICAgICAgICAgICBfdGhpcy5sb2dpblNlbGVjdGVkSWRlbnRpdHkocHVibGljS2V5LCBvcmlnaW4sIGlkcCwgcmVzcG9uc2UubG9naW5VcmwpLnRoZW4oKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodmFsdWUpO1xyXG4gICAgICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7IC8vIHlvdSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGlmIHlvdSBkbyB0aGVuIHRoZSBJZFAgUHJveHkgaXMgbm90IHdlbGwgaW1wbGVtZW50ZWRcclxuICAgICAgICAgICAgLy8gbG9nLmVycm9yKCdHZW5lcmF0ZUFzc2VydGlvbiByZXR1cm5lZCBpbnZhbGlkIHJlc3BvbnNlLicpO1xyXG4gICAgICAgICAgICBsb2cubG9nKCdQcm9jZWVkaW5nIGJ5IGxvZ2dpbmcgaW4uJyk7XHJcbiAgICAgICAgICAgIF90aGlzLmNhbGxHZW5lcmF0ZU1ldGhvZHMoaWRwLCBvcmlnaW4pLnRoZW4oKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodmFsdWUpO1xyXG4gICAgICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KS5jYXRjaChlcnIgPT4geyByZWplY3QoJ09uIHNlbGVjdElkZW50aXR5Rm9ySHlwZXJ0eSBmcm9tIG1ldGhvZCBzZW5kR2VuZXJhdGVNZXNzYWdlIGVycm9yOiAgJyArIGVycik7IH0pO1xyXG4gICAgICB9KS5jYXRjaChlcnIgPT4geyByZWplY3QoJ09uIHNlbGVjdElkZW50aXR5Rm9ySHlwZXJ0eSBmcm9tIG1ldGhvZCBnZW5lcmF0ZVJTQUtleVBhaXIgZXJyb3I6ICAnICsgZXJyKTsgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNlbGVjdElkZW50aXR5RnJvbUdVSShvcmlnaW4pIHtcclxuICAgIGxvZy5sb2coJ1tJZGVudGl0eU1vZHVsZS5zZWxlY3RJZGVudGl0eUZyb21HVUk6b3JpZ2luXScsIG9yaWdpbik7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICB0aGlzLmdldElkZW50aXRpZXNUb0Nob29zZSgpLnRoZW4oKGlkZW50aXRpZXNJbmZvKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIF90aGlzLnJlcXVlc3RJZGVudGl0eVRvR1VJKGlkZW50aXRpZXNJbmZvLmlkZW50aXRpZXMsIGlkZW50aXRpZXNJbmZvLmlkcHMpO1xyXG4gICAgICB9KS50aGVuKHZhbHVlID0+IHtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlLnR5cGUgPT09ICdpZGVudGl0eScpIHtcclxuXHJcbiAgICAgICAgICAvLyAgbGV0IGNob3NlbklEID0gZ2V0VXNlclVSTEZyb21FbWFpbCh2YWx1ZS52YWx1ZSk7XHJcbiAgICAgICAgICAvLyBoYWNrIHdoaWxlIHRoZSB1c2VyIHVybCBpcyBub3QgcmV0dXJuZWQgZnJvbSByZXF1ZXN0SWRlbnRpdHlUb0dVSTtcclxuXHJcbiAgICAgICAgICAvKiAgICAgICAgICBsZXQgY2hvc2VuSUQgPSAndXNlcjovLycgKyBfdGhpcy5pZGVudGl0aWVzLmN1cnJlbnRJZGVudGl0eS5pZHAuZG9tYWluICsgJy8nICsgdmFsdWUudmFsdWU7XHJcblxyXG4gICAgICAgICAgX3RoaXMuaWRlbnRpdGllcy5kZWZhdWx0SWRlbnRpdHkgPSBfdGhpcy5pZGVudGl0aWVzLmN1cnJlbnRJZGVudGl0eTsqL1xyXG5cclxuICAgICAgICAgIC8vIHJldHVybnMgdGhlIGlkZW50aXR5IGluZm8gZnJvbSB0aGUgY2hvc2VuIGlkXHJcbiAgICAgICAgICAvLyAgICAgICAgICBpZiAoX3RoaXMuaWRlbnRpdGllcy5jdXJyZW50SWRlbnRpdHkpIHJlc29sdmUoX3RoaXMuaWRlbnRpdGllcy5jdXJyZW50SWRlbnRpdHkuYXNzZXJ0aW9uKTtcclxuICAgICAgICAgIGlmIChfdGhpcy5pZGVudGl0aWVzLmlkZW50aXRpZXNbdmFsdWUudmFsdWVdKSByZXNvbHZlKF90aGlzLmlkZW50aXRpZXMuaWRlbnRpdGllc1t2YWx1ZS52YWx1ZV0pO1xyXG4gICAgICAgICAgZWxzZSByZWplY3QoJ1tJZGVudGl0eU1vZHVsZS5zZWxlY3RJZGVudGl0eUZyb21HVUldIGlkZW50aXR5IG5vdCBmb3VuZDogJywgdmFsdWUudmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUudHlwZSA9PT0gJ2lkcCcpIHtcclxuXHJcbiAgICAgICAgICBfdGhpcy5jYWxsR2VuZXJhdGVNZXRob2RzKHZhbHVlLnZhbHVlLCBvcmlnaW4pLnRoZW4oKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHZhbHVlKTtcclxuICAgICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KCdlcnJvciBvbiBHVUkgcmVjZWl2ZWQgbWVzc2FnZS4nKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnT24gc2VsZWN0SWRlbnRpdHlGcm9tR1VJIGZyb20gbWV0aG9kIHJlcXVlc3RJZGVudGl0eVRvR1VJIGVycm9yOiAgJyArIGVycik7IH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgY2FsbElkZW50aXR5TW9kdWxlRnVuYyhtZXRob2ROYW1lLCBwYXJhbWV0ZXJzKSB7XHJcbiAgICBsb2cubG9nKCdbY2FsbElkZW50aXR5TW9kdWxlRnVuYzptZXRob2ROYW1lXScsIG1ldGhvZE5hbWUpO1xyXG4gICAgbG9nLmxvZygnW2NhbGxJZGVudGl0eU1vZHVsZUZ1bmM6cGFyYW1ldGVyc10nLCBwYXJhbWV0ZXJzKTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgbGV0IG1lc3NhZ2UgPSB7XHJcbiAgICAgICAgdHlwZTogJ2V4ZWN1dGUnLCB0bzogX3RoaXMuX2d1aVVSTCwgZnJvbTogX3RoaXMuX2lkbVVSTCxcclxuICAgICAgICBib2R5OiB7IHJlc291cmNlOiAnaWRlbnRpdHknLCBtZXRob2Q6IG1ldGhvZE5hbWUsIHBhcmFtczogcGFyYW1ldGVycyB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICAvL3Bvc3QgbXNnIHdpdGggY2FsbGJhY2sgYnV0IHdpdGhvdXQgdGltb3V0XHJcbiAgICAgIGxldCBjYWxsYmFjayA9IG1zZyA9PiB7XHJcbiAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucmVtb3ZlUmVzcG9uc2VMaXN0ZW5lcihfdGhpcy5faWRtVVJMLCBtc2cuaWQpO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBtc2cuYm9keS52YWx1ZTtcclxuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgIH07XHJcbiAgICAgIHRyeSB7XHJcblxyXG4gICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1lc3NhZ2UsIGNhbGxiYWNrLCBmYWxzZSk7XHJcblxyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICByZWplY3QoJ0luIG1ldGhvZCBjYWxsSWRlbnRpdHlNb2R1bGVGdW5jIGVycm9yOiAnICsgZXJyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyoqKioqKioqKioqKioqKioqKiogVE9LRU4gTUVUSE9EUyAqKioqKioqKioqKioqKioqKioqXHJcbiAgLyoqXHJcbiAgKiBnZXQgYSBUb2tlbiB0byBiZSBhZGRlZCB0byBhIG1lc3NhZ2VcclxuICAqIEBwYXJhbSAge1N0cmluZ30gIGZyb21VUkwgICAgIG9yaWdpbiBvZiB0aGUgbWVzc2FnZVxyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgdG9VUkwgICAgIHRhcmdldCBvZiB0aGUgbWVzc2FnZW9rXHJcbiAgKiBAcmV0dXJuIHtKU09OfSAgICB0b2tlbiAgICB0b2tlbiB0byBiZSBhZGRlZCB0byB0aGUgbWVzc2FnZVxyXG4gICovXHJcbiAgZ2V0VG9rZW4obXNnKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IGZyb21VUkwgPSBtc2cuZnJvbTtcclxuICAgIGxldCB0b1VybCA9IG1zZy50bztcclxuICAgIGlmIChtc2cuaGFzT3duUHJvcGVydHkoJ2JvZHknKSAmJiBtc2cuYm9keS5oYXNPd25Qcm9wZXJ0eSgnc291cmNlJykpIHtcclxuICAgICAgZnJvbVVSTCA9IG1zZy5ib2R5LnNvdXJjZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobXNnLnR5cGUgPT09ICdmb3J3YXJkJykge1xyXG4gICAgICBmcm9tVVJMID0gbXNnLmJvZHkuZnJvbTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobXNnLmhhc093blByb3BlcnR5KCdib2R5JykgJiYgbXNnLmJvZHkuaGFzT3duUHJvcGVydHkoJ3N1YnNjcmliZXInKSkge1xyXG4gICAgICBmcm9tVVJMID0gbXNnLmJvZHkuc3Vic2NyaWJlcjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgIGxvZy5sb2coJ1tJZGVudGl0eU1vZHVsZS5nZXRUb2tlbl0gZm9yIG1zZyAnLCBtc2cpO1xyXG5cclxuICAgICAgLy9sb2cubG9nKCd0b1VybCcsIHRvVXJsKTtcclxuICAgICAgX3RoaXMucmVnaXN0cnkuaXNMZWdhY3kodG9VcmwpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XHJcbiAgICAgICAgLy8gbG9nLmxvZygnW0lkZW50aXR5LklkZW50aXR5TW9kdWxlLmdldFRva2VuXSBpc0xFR0FDWTogJywgcmVzdWx0KTtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcblxyXG4gICAgICAgICAgX3RoaXMuX2dldEFjY2Vzc1Rva2VuKG1zZykudGhlbigodG9rZW4pID0+IHtcclxuICAgICAgICAgICAgbG9nLmxvZygnW0lkZW50aXR5TW9kdWxlLmdldFRva2VuXSBhY2Nlc3MgdG9rZW4gJywgdG9rZW4pO1xyXG4gICAgICAgICAgICByZXNvbHZlKGRlZXBDbG9uZSh0b2tlbikpO1xyXG4gICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHsgcmVqZWN0KCdbSWRlbnRpdHlNb2R1bGUuZ2V0VG9rZW5dIEFjY2VzcyBUb2tlbiBlcnJvciAnICsgZXJyKTsgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIF90aGlzLl9nZXRWYWxpZFRva2VuKGZyb21VUkwpLnRoZW4oKHRva2VuKSA9PiB7XHJcbiAgICAgICAgICAgIHJlc29sdmUodG9rZW4pO1xyXG4gICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHsgcmVqZWN0KCdPbiBnZXRUb2tlbiBmcm9tIG1ldGhvZCBfZ2V0VmFsaWRUb2tlbiBlcnJvcjogJyArIGVycik7IH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkuY2F0Y2goZXJyID0+IHsgcmVqZWN0KCdPbiBnZXRUb2tlbiBmcm9tIG1ldGhvZCBpc0xlZ2FjeSBlcnJvcjogJyArIGVycik7IH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgKiBnZXQgYW4gSWQgVG9rZW4gZm9yIGEgSHlwZXJ0eVVSTFxyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgaHlwZXJ0eVVSTCAgICAgdGhlIEh5cGVydHkgYWRkcmVzc1xyXG4gICogQHJldHVybiB7SlNPTn0gICAgdG9rZW4gICAgSWQgdG9rZW4gdG8gYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2VcclxuICAqL1xyXG4gIGdldElkVG9rZW4oaHlwZXJ0eVVSTCkge1xyXG4gICAgbG9nLmluZm8oJ2dldElkVG9rZW46aHlwZXJ0eVVSTCAnLCBoeXBlcnR5VVJMKTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgIGxldCBzcGxpdFVSTCA9IGh5cGVydHlVUkwuc3BsaXQoJzovLycpO1xyXG4gICAgICBsZXQgdXNlclVSTDtcclxuICAgICAgaWYgKHNwbGl0VVJMWzBdICE9PSAnaHlwZXJ0eScpIHsgLy8gaXQgaXMgYSBEYXRhIE9iamVjdCBVUkxcclxuXHJcbiAgICAgICAgX3RoaXMuX2dldEh5cGVydHlGcm9tRGF0YU9iamVjdChoeXBlcnR5VVJMKS50aGVuKChyZXR1cm5lZEh5cGVydHlVUkwpID0+IHtcclxuXHJcbiAgICAgICAgICB1c2VyVVJMID0gX3RoaXMucmVnaXN0cnkuZ2V0SHlwZXJ0eU93bmVyKHJldHVybmVkSHlwZXJ0eVVSTCk7XHJcblxyXG4gICAgICAgICAgaWYgKHVzZXJVUkwpIHtcclxuICAgICAgICAgICAgbGV0IGlkZW50aXR5ID0gX3RoaXMuaWRlbnRpdGllcy5nZXRJZGVudGl0eSh1c2VyVVJMKTtcclxuICAgICAgICAgICAgaWYgKGlkZW50aXR5KSByZXR1cm4gcmVzb2x2ZShpZGVudGl0eSk7XHJcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIHJlamVjdCgnW0lkZW50aXR5TW9kdWxlLmdldElkVG9rZW5dIElkZW50aXR5IG5vdCBmb3VuZCBmb3I6ICcsIHVzZXJVUkwpO1xyXG4gICAgICAgICAgfSBlbHNlIHsgcmV0dXJuIHJlamVjdCgnW0lkZW50aXR5TW9kdWxlLmdldElkVG9rZW5dIFVzZXIgbm90IGZvdW5kIGZvciBoeXBlcnR5OiAnLCByZXR1cm5lZEh5cGVydHlVUkwpOyB9XHJcbiAgICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xyXG4gICAgICAgICAgbG9nLmVycm9yKCdbSWRlbnRpdHlNb2R1bGUuZ2V0SWRUb2tlbl0gRXJyb3I6ICcsIHJlYXNvbik7XHJcbiAgICAgICAgICByZWplY3QocmVhc29uKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1c2VyVVJMID0gX3RoaXMucmVnaXN0cnkuZ2V0SHlwZXJ0eU93bmVyKGh5cGVydHlVUkwpO1xyXG4gICAgICAgIGlmICh1c2VyVVJMKSB7XHJcblxyXG4gICAgICAgICAgbGV0IGlkZW50aXR5ID0gX3RoaXMuaWRlbnRpdGllcy5nZXRJZGVudGl0eSh1c2VyVVJMKTtcclxuICAgICAgICAgIGlmIChpZGVudGl0eSkgcmV0dXJuIHJlc29sdmUoaWRlbnRpdHkpO1xyXG4gICAgICAgICAgZWxzZSByZXR1cm4gcmVqZWN0KCdbSWRlbnRpdHlNb2R1bGUuZ2V0SWRUb2tlbl0gSWRlbnRpdHkgbm90IGZvdW5kIGZvcjogJywgdXNlclVSTCk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7IHJldHVybiByZWplY3QoJ1tJZGVudGl0eU1vZHVsZS5nZXRJZFRva2VuXSBVc2VyIG5vdCBmb3VuZCBmb3IgaHlwZXJ0eTogJywgdXNlclVSTCk7IH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIGdldCBhbiBBY2Nlc3MgVG9rZW4gZm9yIGFuIGV4dGVybmFsIEFQSVxyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgdXJsICAgICB0aGUgZXh0ZXJuYWwgdXJsXHJcbiAgKiBAcmV0dXJuIHtKU09OfSAgICB0b2tlbiAgICBBY2Nlc3MgdG9rZW4gdG8gYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2VcclxuICAqL1xyXG5cclxuICBfZ2V0QWNjZXNzVG9rZW4obXNnKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGxldCB1cmwgPSBtc2cudG87XHJcbiAgICAgIGxldCB0b2tlbjtcclxuXHJcbiAgICAgIGlmICghbXNnLmhhc093blByb3BlcnR5KCdib2R5JykpIHtcclxuICAgICAgICByZXR1cm4gcmVqZWN0KCdbSWRlbnRpdHlNb2R1bGUuX2dldEFjY2Vzc1Rva2VuXSBtaXNzaW5nIG1hbmRhdG9yeSBtc2cgYm9keTogJywgbXNnKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIW1zZy5ib2R5Lmhhc093blByb3BlcnR5KCd2YWx1ZScpKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlamVjdCgnW0lkZW50aXR5TW9kdWxlLl9nZXRBY2Nlc3NUb2tlbl0gbWlzc2luZyBtYW5kYXRvcnkgbXNnIGJvZHkgdmFsdWU6ICcsIG1zZyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFtc2cuYm9keS52YWx1ZS5oYXNPd25Qcm9wZXJ0eSgncmVzb3VyY2VzJykpIHtcclxuICAgICAgICByZXR1cm4gcmVqZWN0KCdbSWRlbnRpdHlNb2R1bGUuX2dldEFjY2Vzc1Rva2VuXSBtaXNzaW5nIG1hbmRhdG9yeSBtc2cgYm9keSB2YWx1ZSByZXNvdXJjZXM6ICcsIG1zZyk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGRvbWFpblRvQ2hlY2sgPSBkaXZpZGVVUkwodXJsKS5kb21haW47XHJcblxyXG4gICAgICBpZiAodXJsLmluY2x1ZGVzKCdwcm90b3N0dWInKSkge1xyXG4gICAgICAgIGRvbWFpblRvQ2hlY2sgPSBkb21haW5Ub0NoZWNrLnJlcGxhY2UoZG9tYWluVG9DaGVjay5zcGxpdCgnLicpWzBdICsgJy4nLCAnJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCByZXNvdXJjZXMgPSBtc2cuYm9keS52YWx1ZS5yZXNvdXJjZXM7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRva2VuID0gX3RoaXMuaWRlbnRpdGllcy5nZXRBY2Nlc3NUb2tlbihkb21haW5Ub0NoZWNrLCByZXNvdXJjZXMpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlamVjdCgnW0lkZW50aXR5TW9kdWxlLl9nZXRBY2Nlc3NUb2tlbl0gQWNjZXNzIFRva2VuIGVycm9yICcgKyBlcnIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRva2VuKSB7XHJcbiAgICAgICAgX3RoaXMuX2dldE5ld0FjY2Vzc1Rva2VuKGRvbWFpblRvQ2hlY2ssIHJlc291cmNlcykudGhlbigodG9rZW4pID0+IHtcclxuICAgICAgICAgIGxvZy5sb2coJ1tJZGVudGl0eS5JZGVudGl0eU1vZHVsZS5nZXRBY2Nlc3NUb2tlbl0gbmV3IEFjY2VzcyBUb2tlbiAnLCB0b2tlbik7XHJcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh0b2tlbik7XHJcbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHsgcmVqZWN0KCdbSWRlbnRpdHlNb2R1bGUuX2dldEFjY2Vzc1Rva2VuXSBvbiBnZXROZXdBY2Nlc3NUb2tlbiAnICsgZXJyKTsgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodG9rZW4uc3RhdHVzID09PSAnaW4tcHJvZ3Jlc3MnKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoX3RoaXMuX2luUHJvZ3Jlc3NBY2Nlc3NUb2tlbihkb21haW5Ub0NoZWNrLCByZXNvdXJjZXMpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgdGltZU5vdyA9IHNlY29uZHNTaW5jZUVwb2NoKCk7XHJcblxyXG4gICAgICAgIGxvZy5sb2coJ1tJZGVudGl0eS5JZGVudGl0eU1vZHVsZS5nZXRBY2Nlc3NUb2tlbl0gZm91bmQgIEFjY2VzcyBUb2tlbiAnLCB0b2tlbik7XHJcblxyXG4gICAgICAgIGlmICh0aW1lTm93ID49IHRva2VuLmV4cGlyZXMpIHJldHVybiByZXNvbHZlKF90aGlzLl9nZXROZXdBY2Nlc3NUb2tlbihkb21haW5Ub0NoZWNrLCByZXNvdXJjZXMpKTtcclxuICAgICAgICBlbHNlIHJldHVybiByZXNvbHZlKHRva2VuKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX2luUHJvZ3Jlc3NBY2Nlc3NUb2tlbihkb21haW4sIHJlc291cmNlcykge1xyXG4gICAgdGhpcy5pZGVudGl0aWVzLndhdGNoaW5nWW91Lm9ic2VydmUoJ2FjY2Vzc1Rva2VucycsIChjaGFuZ2UpID0+IHtcclxuXHJcbiAgICAgIGxvZy5sb2coJ1tJZGVudGl0eU1vZHVsZS5faW5Qcm9ncmVzc0FjY2Vzc1Rva2VuXSBhY2Nlc3NUb2tlbnMgY2hhbmdlZCAnICsgdGhpcy5pZGVudGl0aWVzLmFjY2Vzc1Rva2Vucyk7XHJcblxyXG4gICAgICBsZXQga2V5cGF0aCA9IGNoYW5nZS5rZXlwYXRoO1xyXG5cclxuICAgICAgaWYgKGtleXBhdGguaW5jbHVkZXMoJ3N0YXR1cycpKSB7XHJcbiAgICAgICAga2V5cGF0aCA9IGtleXBhdGgucmVwbGFjZSgnLnN0YXR1cycsICcnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGtleXBhdGggPT09IGRvbWFpbiAmJiBjaGFuZ2UubmFtZSA9PT0gJ3N0YXR1cycgJiYgY2hhbmdlLm5ld1ZhbHVlID09PSAnY3JlYXRlZCcpIHtcclxuICAgICAgICAvLyBsb2cubG9nKCdbSWRlbnRpdHkuSWRlbnRpdHlNb2R1bGUuZ2V0VG9rZW5dIHRva2VuIGlzIGNyZWF0ZWQgJyArIF90aGlzLmlkZW50aXRpZXNMaXN0W2RvbWFpbl0pO1xyXG4gICAgICAgIHJldHVybiAodGhpcy5pZGVudGl0aWVzLmdldEFjY2Vzc1Rva2VuKGRvbWFpbiwgcmVzb3VyY2VzKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG5cclxuICBfZ2V0TmV3QWNjZXNzVG9rZW4oZG9tYWluLCByZXNvdXJjZXMpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG5cclxuICAgICAgX3RoaXMuaWRlbnRpdGllcy5zZXRBY2Nlc3NUb2tlbkluUHJvZ3Jlc3MoZG9tYWluKTtcclxuXHJcbiAgICAgIGxldCBtZXNzYWdlID0ge1xyXG4gICAgICAgIHR5cGU6ICdleGVjdXRlJyxcclxuICAgICAgICB0bzogX3RoaXMuX3Jlc29sdmVEb21haW4oZG9tYWluKSxcclxuICAgICAgICBmcm9tOiBfdGhpcy5faWRtVVJMLFxyXG4gICAgICAgIGJvZHk6IHtcclxuICAgICAgICAgIG1ldGhvZDogJ2dldEFjY2Vzc1Rva2VuQXV0aG9yaXNhdGlvbkVuZHBvaW50JyxcclxuICAgICAgICAgIHBhcmFtczogcmVzb3VyY2VzXHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy9sZXQncyBmaXJzdCBnZXQgdGhlIGF1dGhvcmlzYXRpb24gVVJMIGZyb20gdGhlIElkcCBQcm94eVxyXG4gICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcy5ib2R5LmNvZGUgPiAyOTkpIHtcclxuICAgICAgICAgIHJldHVybiByZWplY3QoJ1tJZGVudGl0eU1vZHVsZS5fZ2V0TmV3QWNjZXNzVG9rZW5dIEVycm9yIG9uIGdldEFjY2Vzc1Rva2VuQXV0aG9yaXNhdGlvbkVuZHBvaW50IGZyb20gSWRQIFByb3h5OiAnLCByZXMuYm9keS5kZXNjKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGxldCdzIGFzayB0aGUgdXNlciBmb3IgYXV0aG9yaXNhdGlvblxyXG4gICAgICAgIF90aGlzLmNhbGxJZGVudGl0eU1vZHVsZUZ1bmMoJ29wZW5Qb3B1cCcsIHsgdXJscmVjZWl2ZWQ6IHJlcy5ib2R5LnZhbHVlIH0pLnRoZW4oKGF1dGhvcmlzYXRpb24pID0+IHtcclxuICAgICAgICAgIGxvZy5sb2coJ1tJZGVudGl0eU1vZHVsZTpjYWxsSWRlbnRpdHlNb2R1bGVGdW5jOm9wZW5Qb3B1cF0gYXVodG9yaXNhdGlvbiByZXN1bHQ6ICcsIGF1dGhvcmlzYXRpb24pO1xyXG5cclxuICAgICAgICAgIG1lc3NhZ2UuYm9keS5tZXRob2QgPSAnZ2V0QWNjZXNzVG9rZW4nO1xyXG4gICAgICAgICAgbWVzc2FnZS5ib2R5LnBhcmFtcyA9IHtcclxuICAgICAgICAgICAgcmVzb3VyY2VzOiByZXNvdXJjZXMsXHJcbiAgICAgICAgICAgIGxvZ2luOiBhdXRob3Jpc2F0aW9uXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIC8vd2lodG91dCBjYWxsYmFjayB0byBhdm9pZCB0aW1lb3V0IGVycm9ycz9cclxuXHJcbiAgICAgICAgICAvLyBsZXQncyBhc2sgQWNjZXNzIFRva2VuIGZyb20gdGhlIElkcCBQcm94eVxyXG4gICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobWVzc2FnZSwgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzLmJvZHkuY29kZSA+IDI5OSkgcmV0dXJuIHJlamVjdCgnW0lkZW50aXR5TW9kdWxlLl9nZXROZXdBY2Nlc3NUb2tlbl0gRXJyb3Igb24gZ2V0QWNjZXNzVG9rZW4gZnJvbSBJZFAgUHJveHk6ICcsIHJlcy5ib2R5LmRlc2MpO1xyXG5cclxuICAgICAgICAgICAgX3RoaXMuaWRlbnRpdGllcy5hZGRBY2Nlc3NUb2tlbihyZXMuYm9keS52YWx1ZSkudGhlbigodG9rZW4pID0+IHtcclxuICAgICAgICAgICAgICBsb2cuaW5mbygnW0lkZW50aXR5TW9kdWxlLl9nZXROZXdBY2Nlc3NUb2tlbl0gcmVzb2x2aW5nIHRva2VuOiAnLCB0b2tlbik7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzLmJvZHkudmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgfSwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VuZFJlZnJlc2hNZXNzYWdlKG9sZElkZW50aXR5KSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIC8vICAgIGxldCBkb21haW4gPSBfdGhpcy5fcmVzb2x2ZURvbWFpbihvbGRJZGVudGl0eS5pZHApO1xyXG4gICAgLy8gICAgbGV0IG1lc3NhZ2U7XHJcbiAgICAvLyAgICBsZXQgYXNzZXJ0aW9uID0gX3RoaXMuZ2V0SWRlbnRpdHkob2xkSWRlbnRpdHkudXNlclByb2ZpbGUudXNlclVSTCk7XHJcblxyXG4gICAgbG9nLmxvZygnc2VuZFJlZnJlc2hNZXNzYWdlOm9sZElkZW50aXR5Jywgb2xkSWRlbnRpdHkpO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGxldCBkb21haW4gPSBfdGhpcy5fcmVzb2x2ZURvbWFpbihvbGRJZGVudGl0eS5pZHApO1xyXG4gICAgICBsZXQgbWVzc2FnZTtcclxuICAgICAgbGV0IGFzc2VydGlvbiA9IF90aGlzLmdldElkZW50aXR5KG9sZElkZW50aXR5LnVzZXJQcm9maWxlLnVzZXJVUkwpO1xyXG5cclxuICAgICAgbG9nLmluZm8oJ3NlbmRSZWZyZXNoTWVzc2FnZTpvbGRJZGVudGl0eScsIG9sZElkZW50aXR5KTtcclxuXHJcbiAgICAgIG1lc3NhZ2UgPSB7IHR5cGU6ICdleGVjdXRlJywgdG86IGRvbWFpbiwgZnJvbTogX3RoaXMuX2lkbVVSTCwgYm9keTogeyByZXNvdXJjZTogJ2lkZW50aXR5JywgbWV0aG9kOiAncmVmcmVzaEFzc2VydGlvbicsIHBhcmFtczogeyBpZGVudGl0eTogYXNzZXJ0aW9uIH0gfSB9O1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1lc3NhZ2UsIChyZXMpID0+IHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSByZXMuYm9keS52YWx1ZTtcclxuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgcmVqZWN0KCdJbiBzZW5kUmVmcmVzaE1lc3NhZ2Ugb24gcG9zdE1lc3NhZ2UgZXJyb3I6ICcgKyBlcnIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0QWNjZXNzVG9rZW4oaWRwRG9tYWluLCByZXNvdXJjZXMsIGxvZ2luKSB7XHJcbiAgICBsb2cubG9nKCdbZ2V0QWNjZXNzVG9rZW46aWRwRG9tYWluXScsIGlkcERvbWFpbik7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICBsZXQgZG9tYWluID0gX3RoaXMuX3Jlc29sdmVEb21haW4oaWRwRG9tYWluKTtcclxuICAgICAgbGV0IG1lc3NhZ2U7XHJcblxyXG4gICAgICBtZXNzYWdlID0ge1xyXG4gICAgICAgIHR5cGU6ICdleGVjdXRlJywgdG86IGRvbWFpbiwgZnJvbTogX3RoaXMuX2lkbVVSTCwgYm9keTogeyByZXNvdXJjZTogJ2lkZW50aXR5JywgbWV0aG9kOiAnZ2V0QWNjZXNzVG9rZW4nLCBwYXJhbXM6IHsgcmVzb3VyY2VzOiByZXNvdXJjZXMsIGxvZ2luOiBsb2dpbiB9IH1cclxuICAgICAgfTtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVzKSA9PiB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzLmJvZHkudmFsdWU7XHJcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJlamVjdCgnSW4gc2VuZFJlZnJlc2hNZXNzYWdlIG9uIHBvc3RNZXNzYWdlIGVycm9yOiAnICsgZXJyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBY2Nlc3NUb2tlbkF1dGhvcmlzYXRpb25FbmRwb2ludChzY29wZSwgaWRwRG9tYWluKSB7XHJcbiAgICBsb2cubG9nKCdbZ2V0QWNjZXNzVG9rZW5BdXRob3Jpc2F0aW9uRW5kcG9pbnQ6aWRwRG9tYWluXScsIGlkcERvbWFpbik7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICBsZXQgZG9tYWluID0gX3RoaXMuX3Jlc29sdmVEb21haW4oaWRwRG9tYWluKTtcclxuICAgICAgbGV0IG1lc3NhZ2U7XHJcblxyXG4gICAgICBtZXNzYWdlID0ge1xyXG4gICAgICAgIHR5cGU6ICdleGVjdXRlJywgdG86IGRvbWFpbiwgZnJvbTogX3RoaXMuX2lkbVVSTCwgYm9keTogeyByZXNvdXJjZTogJ2lkZW50aXR5JywgbWV0aG9kOiAnZ2V0QWNjZXNzVG9rZW5BdXRob3Jpc2F0aW9uRW5kcG9pbnQnLCBwYXJhbXM6IHsgcmVzb3VyY2VzOiBzY29wZSB9IH1cclxuICAgICAgfTtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVzKSA9PiB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzLmJvZHkudmFsdWU7XHJcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJlamVjdCgnSW4gc2VuZFJlZnJlc2hNZXNzYWdlIG9uIHBvc3RNZXNzYWdlIGVycm9yOiAnICsgZXJyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZW5kR2VuZXJhdGVNZXNzYWdlKGNvbnRlbnRzLCBvcmlnaW4sIHVzZXJuYW1lSGludCwgaWRwRG9tYWluKSB7XHJcbiAgICBsb2cubG9nKCdbc2VuZEdlbmVyYXRlTWVzc2FnZTpjb250ZW50c10nLCBjb250ZW50cyk7XHJcbiAgICBsb2cubG9nKCdbc2VuZEdlbmVyYXRlTWVzc2FnZTpvcmlnaW5dJywgb3JpZ2luKTtcclxuICAgIGxvZy5sb2coJ1tzZW5kR2VuZXJhdGVNZXNzYWdlOnVzZXJuYW1lSGludF0nLCB1c2VybmFtZUhpbnQpO1xyXG4gICAgbG9nLmxvZygnW3NlbmRHZW5lcmF0ZU1lc3NhZ2U6aWRwRG9tYWluXScsIGlkcERvbWFpbik7XHJcbiAgICBsb2cubG9nKCdzZW5kR2VuZXJhdGVNZXNzYWdlX2hpbnQnKTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHJcbiAgICAgIGxldCBkb21haW4gPSBfdGhpcy5fcmVzb2x2ZURvbWFpbihpZHBEb21haW4pO1xyXG4gICAgICBsZXQgbWVzc2FnZTtcclxuXHJcbiAgICAgIG1lc3NhZ2UgPSB7XHJcbiAgICAgICAgdHlwZTogJ2V4ZWN1dGUnLCB0bzogZG9tYWluLCBmcm9tOiBfdGhpcy5faWRtVVJMLCBib2R5OiB7IHJlc291cmNlOiAnaWRlbnRpdHknLCBtZXRob2Q6ICdnZW5lcmF0ZUFzc2VydGlvbicsIHBhcmFtczogeyBjb250ZW50czogY29udGVudHMsIG9yaWdpbjogb3JpZ2luLCB1c2VybmFtZUhpbnQ6IHVzZXJuYW1lSGludCB9IH1cclxuICAgICAgfTtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVzKSA9PiB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzLmJvZHkudmFsdWU7XHJcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJlamVjdCgnSW4gc2VuZFJlZnJlc2hNZXNzYWdlIG9uIHBvc3RNZXNzYWdlIGVycm9yOiAnICsgZXJyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFJlcXVlc3RzIHRoZSBJZHBQcm94eSBmcm9tIGEgZ2l2ZW4gRG9tYWluIGZvciBhbiBpZGVudGl0eUFzc2VydGlvblxyXG4gICpcclxuICAqIEBwYXJhbSAge0RPTVN0cmluZ30gY29udGVudHMgICAgIGNvbnRlbnRzXHJcbiAgKiBAcGFyYW0gIHtET01TdHJpbmd9IG9yaWdpbiAgICAgICBvcmlnaW5cclxuICAqIEBwYXJhbSAge0RPTVN0cmluZ30gdXNlcm5hbWVIaW50IHVzZXJuYW1lSGludFxyXG4gICogQHBhcmFtICB7SlNPTn0gICAgICBrZXlQYWlyICAgICAgIHVzZXIga2V5UGFpclxyXG4gICogQHJldHVybiB7SWRBc3NlcnRpb259ICAgICAgICAgICAgICBJZEFzc2VydGlvblxyXG4gICovXHJcbiAgZ2VuZXJhdGVBc3NlcnRpb24oY29udGVudHMsIG9yaWdpbiwgdXNlcm5hbWVIaW50LCBpZHBEb21haW4pIHtcclxuICAgIGxvZy5sb2coJ1tnZW5lcmF0ZUFzc2VydGlvbjpjb250ZW50c10nLCBjb250ZW50cyk7XHJcbiAgICBsb2cubG9nKCdbZ2VuZXJhdGVBc3NlcnRpb246b3JpZ2luXScsIG9yaWdpbik7XHJcbiAgICBsb2cubG9nKCdbZ2VuZXJhdGVBc3NlcnRpb246dXNlcm5hbWVIaW50XScsIHVzZXJuYW1lSGludCk7XHJcblxyXG4gICAgLy8gICAgbG9nLmxvZygnW2dlbmVyYXRlQXNzZXJ0aW9uOmtleVBhaXJdJywga2V5UGFpcik7XHJcbiAgICBsb2cubG9nKCdbZ2VuZXJhdGVBc3NlcnRpb246aWRwRG9tYWluXScsIGlkcERvbWFpbik7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgbG9nLmxvZygnW0lkZW50aXR5TW9kdWxlOnNlbmRHZW5lcmF0ZU1lc3NhZ2U6c2VuZEdlbmVyYXRlTWVzc2FnZV0nLCB1c2VybmFtZUhpbnQpO1xyXG4gICAgICBfdGhpcy5zZW5kR2VuZXJhdGVNZXNzYWdlKGNvbnRlbnRzLCBvcmlnaW4sIHVzZXJuYW1lSGludCwgaWRwRG9tYWluKS50aGVuKChyZXN1bHQpID0+IHtcclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdC5sb2dpblVybCkge1xyXG5cclxuICAgICAgICAgIF90aGlzLmNhbGxJZGVudGl0eU1vZHVsZUZ1bmMoJ29wZW5Qb3B1cCcsIHsgdXJscmVjZWl2ZWQ6IHJlc3VsdC5sb2dpblVybCB9KS50aGVuKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGU6Y2FsbElkZW50aXR5TW9kdWxlRnVuYzpvcGVuUG9wdXBdJywgdXNlcm5hbWVIaW50KTtcclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xyXG4gICAgICAgICAgfSwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0KSB7XHJcblxyXG4gICAgICAgICAgX3RoaXMuaWRlbnRpdGllcy5hZGRBc3NlcnRpb24ocmVzdWx0KS50aGVuKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWplY3QoJ2Vycm9yIG9uIG9idGFpbmluZyBpZGVudGl0eSBpbmZvcm1hdGlvbicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnT24gZ2VuZXJhdGVBc3NlcnRpb24gZnJvbSBtZXRob2Qgc2VuZEdlbmVyYXRlTWVzc2FnZSBlcnJvcjogJyArIGVycik7IH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFJlcXVlc3RzIHRoZSBJZHBQcm94eSBmcm9tIGEgZ2l2ZW4gRG9tYWluIHRvIHZhbGlkYXRlIGFuIElkZW50aXR5QXNzZXJ0aW9uXHJcbiAgKiBSZXR1cm5zIGEgcHJvbWlzZSB3aXRoIHRoZSByZXN1bHQgZnJvbSB0aGUgdmFsaWRhdGlvbi5cclxuICAqIEBwYXJhbSAge0RPTVN0cmluZ30gYXNzZXJ0aW9uXHJcbiAgKiBAcGFyYW0gIHtET01TdHJpbmd9IG9yaWdpbiAgICAgICBvcmlnaW5cclxuICAqIEByZXR1cm4ge1Byb21pc2V9ICAgICAgICAgUHJvbWlzZSAgICAgICAgIHByb21pc2Ugd2l0aCB0aGUgcmVzdWx0IGZyb20gdGhlIHZhbGlkYXRpb25cclxuICAqL1xyXG4gIHZhbGlkYXRlQXNzZXJ0aW9uKGFzc2VydGlvbiwgb3JpZ2luLCBpZHBEb21haW4pIHtcclxuICAgIGxvZy5sb2coJ1t2YWxpZGF0ZUFzc2VydGlvbjphc3NlcnRpb25dJywgYXNzZXJ0aW9uKTtcclxuICAgIGxvZy5sb2coJ1t2YWxpZGF0ZUFzc2VydGlvbjpvcmlnaW5dJywgb3JpZ2luKTtcclxuICAgIGxvZy5sb2coJ1t2YWxpZGF0ZUFzc2VydGlvbjppZHBEb21haW5dJywgaWRwRG9tYWluKTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IGRvbWFpbiA9IF90aGlzLl9yZXNvbHZlRG9tYWluKGlkcERvbWFpbik7XHJcblxyXG4gICAgbGV0IG1lc3NhZ2UgPSB7XHJcbiAgICAgIHR5cGU6ICdleGVjdXRlJywgdG86IGRvbWFpbiwgZnJvbTogX3RoaXMuX2lkbVVSTCwgYm9keToge1xyXG4gICAgICAgIHJlc291cmNlOiAnaWRlbnRpdHknLCBtZXRob2Q6ICd2YWxpZGF0ZUFzc2VydGlvbicsXHJcbiAgICAgICAgcGFyYW1zOiB7IGFzc2VydGlvbjogYXNzZXJ0aW9uLCBvcmlnaW46IG9yaWdpbiB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1lc3NhZ2UsIChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmIChyZXN1bHQuYm9keS5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQuYm9keS52YWx1ZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZWplY3QoJ2Vycm9yJywgcmVzdWx0LmJvZHkuY29kZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJlamVjdCgnT24gdmFsaWRhdGVBc3NlcnRpb24gZnJvbSBtZXRob2QgcG9zdE1lc3NhZ2UgZXJyb3I6ICcgKyBlcnIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFkZEdVSUxpc3RlbmVycygpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgX3RoaXMuX21lc3NhZ2VCdXMuYWRkTGlzdGVuZXIoX3RoaXMuX2lkbVVSTCwgKG1zZykgPT4ge1xyXG4gICAgICBsZXQgZnVuY05hbWUgPSBtc2cuYm9keS5tZXRob2Q7XHJcblxyXG4gICAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGU6YWRkR1VJTGlzdGVuZXJzXScsIG1zZywgbXNnLmJvZHksIGZ1bmNOYW1lKTtcclxuXHJcbiAgICAgIGxldCByZXR1cm5lZFZhbHVlO1xyXG5cclxuICAgICAgaWYgKGZ1bmNOYW1lID09PSAnZGVwbG95R1VJJykge1xyXG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5kZXBsb3lHVUkoKTtcclxuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ2dldElkZW50aXRpZXNUb0Nob29zZScpIHtcclxuICAgICAgICBfdGhpcy5nZXRJZGVudGl0aWVzVG9DaG9vc2UoKS50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIC8vIGlmIHRoZSBmdW5jdGlvbiByZXF1ZXN0ZWQgaXMgbm90IGEgcHJvbWlzZVxyXG4gICAgICAgICAgbGV0IHZhbHVlID0geyB0eXBlOiAnZXhlY3V0ZScsIHZhbHVlOiByZXN1bHQsIGNvZGU6IDIwMCB9O1xyXG4gICAgICAgICAgbGV0IHJlcGx5TXNnID0geyBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCB0bzogbXNnLmZyb20sIGZyb206IG1zZy50bywgYm9keTogdmFsdWUgfTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHJlcGx5TXNnKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICBsb2cuZXJyb3IoJ09uIGFkZEdVSUxpc3RlbmVycyBmcm9tIGlmIHN0b3JlSWRlbnRpdHkgbWV0aG9kIHBvc3RNZXNzYWdlIGVycm9yOiAnICsgZXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAndW5yZWdpc3RlcklkZW50aXR5Jykge1xyXG4gICAgICAgIGxldCBlbWFpbCA9IG1zZy5ib2R5LnBhcmFtcy5lbWFpbDtcclxuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMudW5yZWdpc3RlcklkZW50aXR5KGVtYWlsKTtcclxuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ2dldE15UHVibGljS2V5Jykge1xyXG4gICAgICAgIC8vIGJlY2F1c2UgZ2VuZXJhdGVSU0FLZXlQYWlyIGlzIGEgcHJvbWlzZVxyXG4gICAgICAgIC8vIHdlIGhhdmUgdG8gc2VuZCB0aGUgbWVzc2FnZSBvbmx5IGFmdGVyIGdldHRpbmcgdGhlIGtleSBwYWlyXHJcbiAgICAgICAgX3RoaXMuX2NyeXB0by5nZXRNeVB1YmxpY0tleSgpLnRoZW4oKHB1YktleSkgPT4ge1xyXG4gICAgICAgICAgcHViS2V5ID0gc3RyaW5naWZ5KHB1YktleSk7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSB7IHR5cGU6ICdleGVjdXRlJywgdmFsdWU6IHB1YktleSwgY29kZTogMjAwIH07XHJcbiAgICAgICAgICBsZXQgcmVwbHlNc2cgPSB7IGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIHRvOiBtc2cuZnJvbSwgZnJvbTogbXNnLnRvLCBib2R5OiB2YWx1ZSB9O1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UocmVwbHlNc2cpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIGxvZy5lcnJvcignT24gYWRkR1VJTGlzdGVuZXJzIGZyb20gaWYgZ2VuZXJhdGVSU0FLZXlQYWlyIG1ldGhvZCBwb3N0TWVzc2FnZSBlcnJvcjogJyArIGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnc2VuZEdlbmVyYXRlTWVzc2FnZScpIHtcclxuICAgICAgICBsZXQgY29udGVudHMgPSBtc2cuYm9keS5wYXJhbXMuY29udGVudHM7XHJcbiAgICAgICAgbGV0IG9yaWdpbiA9IG1zZy5ib2R5LnBhcmFtcy5vcmlnaW47XHJcbiAgICAgICAgbGV0IHVzZXJuYW1lSGludCA9IG1zZy5ib2R5LnBhcmFtcy51c2VybmFtZUhpbnQ7XHJcbiAgICAgICAgbGV0IGlkcERvbWFpbiA9IG1zZy5ib2R5LnBhcmFtcy5pZHBEb21haW47XHJcbiAgICAgICAgX3RoaXMuc2VuZEdlbmVyYXRlTWVzc2FnZShjb250ZW50cywgb3JpZ2luLCB1c2VybmFtZUhpbnQsIGlkcERvbWFpbikudGhlbigocmV0dXJuZWRWYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0geyB0eXBlOiAnZXhlY3V0ZScsIHZhbHVlOiByZXR1cm5lZFZhbHVlLCBjb2RlOiAyMDAgfTtcclxuICAgICAgICAgIGxldCByZXBseU1zZyA9IHsgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgdG86IG1zZy5mcm9tLCBmcm9tOiBtc2cudG8sIGJvZHk6IHZhbHVlIH07XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShyZXBseU1zZyk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgbG9nLmVycm9yKCdPbiBhZGRHVUlMaXN0ZW5lcnMgZnJvbSBpZiBzZW5kR2VuZXJhdGVNZXNzYWdlIG1ldGhvZCBwb3N0TWVzc2FnZSBlcnJvcjogJyArIGVycik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ2dldEFjY2Vzc1Rva2VuQXV0aG9yaXNhdGlvbkVuZHBvaW50Jykge1xyXG4gICAgICAgIGxldCBzY29wZSA9IG1zZy5ib2R5LnBhcmFtcy5zY29wZTtcclxuICAgICAgICBsZXQgaWRwRG9tYWluID0gbXNnLmJvZHkucGFyYW1zLmlkcERvbWFpbjtcclxuICAgICAgICBfdGhpcy5nZXRBY2Nlc3NUb2tlbkF1dGhvcmlzYXRpb25FbmRwb2ludChzY29wZSwgaWRwRG9tYWluKS50aGVuKChyZXR1cm5lZFZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSB7IHR5cGU6ICdleGVjdXRlJywgdmFsdWU6IHJldHVybmVkVmFsdWUsIGNvZGU6IDIwMCB9O1xyXG4gICAgICAgICAgbGV0IHJlcGx5TXNnID0geyBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCB0bzogbXNnLmZyb20sIGZyb206IG1zZy50bywgYm9keTogdmFsdWUgfTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHJlcGx5TXNnKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICBsb2cuZXJyb3IoJ09uIGFkZEdVSUxpc3RlbmVycyBmcm9tIGlmIHNlbmRHZW5lcmF0ZU1lc3NhZ2UgbWV0aG9kIHBvc3RNZXNzYWdlIGVycm9yOiAnICsgZXJyKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnYWRkQWNjZXNzVG9rZW4nKSB7XHJcbiAgICAgICAgbGV0IGFjY2Vzc1Rva2VuID0gbXNnLmJvZHkucGFyYW1zO1xyXG5cclxuICAgICAgICBfdGhpcy5pZGVudGl0aWVzLmFkZEFjY2Vzc1Rva2VuKGFjY2Vzc1Rva2VuKS50aGVuKChyZXR1cm5lZFZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSB7IHR5cGU6ICdleGVjdXRlJywgdmFsdWU6IHJldHVybmVkVmFsdWUsIGNvZGU6IDIwMCB9O1xyXG4gICAgICAgICAgbGV0IHJlcGx5TXNnID0geyBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCB0bzogbXNnLmZyb20sIGZyb206IG1zZy50bywgYm9keTogdmFsdWUgfTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHJlcGx5TXNnKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICBsb2cuZXJyb3IoJ09uIGFkZEdVSUxpc3RlbmVycyBmcm9tIGlmIHN0b3JlSWRlbnRpdHkgbWV0aG9kIHBvc3RNZXNzYWdlIGVycm9yOiAnICsgZXJyKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnZ2V0QWNjZXNzVG9rZW4nKSB7XHJcblxyXG4gICAgICAgIGxldCBkb21haW4gPSBtc2cuYm9keS5wYXJhbXMuaWRwRG9tYWluO1xyXG4gICAgICAgIGxldCByZXNvdXJjZXMgPSBtc2cuYm9keS5wYXJhbXMucmVzb3VyY2VzO1xyXG4gICAgICAgIGxldCBsb2dpbiA9IG1zZy5ib2R5LnBhcmFtcy5sb2dpbjtcclxuXHJcbiAgICAgICAgX3RoaXMuZ2V0QWNjZXNzVG9rZW4oZG9tYWluLCByZXNvdXJjZXMsIGxvZ2luKS50aGVuKChyZXR1cm5lZFZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSB7IHR5cGU6ICdleGVjdXRlJywgdmFsdWU6IHJldHVybmVkVmFsdWUsIGNvZGU6IDIwMCB9O1xyXG4gICAgICAgICAgbGV0IHJlcGx5TXNnID0geyBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCB0bzogbXNnLmZyb20sIGZyb206IG1zZy50bywgYm9keTogdmFsdWUgfTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHJlcGx5TXNnKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICBsb2cuZXJyb3IoJ09uIGFkZEdVSUxpc3RlbmVycyBmcm9tIGlmIHNlbmRHZW5lcmF0ZU1lc3NhZ2UgbWV0aG9kIHBvc3RNZXNzYWdlIGVycm9yOiAnICsgZXJyKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnYWRkQXNzZXJ0aW9uJykge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBtc2cuYm9keS5wYXJhbXM7XHJcblxyXG4gICAgICAgIC8vICAgICAgICBsZXQga2V5UGFpciA9IG1zZy5ib2R5LnBhcmFtcy5rZXlQYWlyO1xyXG4gICAgICAgIF90aGlzLmlkZW50aXRpZXMuYWRkQXNzZXJ0aW9uKHJlc3VsdCkudGhlbigocmV0dXJuZWRWYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0geyB0eXBlOiAnZXhlY3V0ZScsIHZhbHVlOiByZXR1cm5lZFZhbHVlLCBjb2RlOiAyMDAgfTtcclxuICAgICAgICAgIGxldCByZXBseU1zZyA9IHsgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgdG86IG1zZy5mcm9tLCBmcm9tOiBtc2cudG8sIGJvZHk6IHZhbHVlIH07XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShyZXBseU1zZyk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgbG9nLmVycm9yKCdPbiBhZGRHVUlMaXN0ZW5lcnMgZnJvbSBpZiBzdG9yZUlkZW50aXR5IG1ldGhvZCBwb3N0TWVzc2FnZSBlcnJvcjogJyArIGVycik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSAvKmVsc2UgaWYgKGZ1bmNOYW1lID09PSAnc2VsZWN0SWRlbnRpdHlGb3JIeXBlcnR5Jykge1xyXG4gICAgICAgIGxldCBvcmlnaW4gPSBtc2cuYm9keS5wYXJhbXMub3JpZ2luO1xyXG4gICAgICAgIGxldCBpZHAgPSBtc2cuYm9keS5wYXJhbXMuaWRwO1xyXG4gICAgICAgIGxldCBpZEhpbnQgPSBtc2cuYm9keS5wYXJhbXMuaWRIaW50O1xyXG4gICAgICAgIF90aGlzLnNlbGVjdElkZW50aXR5Rm9ySHlwZXJ0eShvcmlnaW4sIGlkcCwgaWRIaW50KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0qL1xyXG5cclxuICAgICAgLy8gaWYgdGhlIGZ1bmN0aW9uIHJlcXVlc3RlZCBpcyBub3QgYSBwcm9taXNlXHJcbiAgICAgIGxldCB2YWx1ZSA9IHsgdHlwZTogJ2V4ZWN1dGUnLCB2YWx1ZTogcmV0dXJuZWRWYWx1ZSwgY29kZTogMjAwIH07XHJcbiAgICAgIGxldCByZXBseU1zZyA9IHsgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgdG86IG1zZy5mcm9tLCBmcm9tOiBtc2cudG8sIGJvZHk6IHZhbHVlIH07XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UocmVwbHlNc2cpO1xyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBsb2cuZXJyb3IoJ09uIGFkZEdVSUxpc3RlbmVycyBmcm9tIGlmIHN0b3JlSWRlbnRpdHkgbWV0aG9kIHBvc3RNZXNzYWdlIGVycm9yOiAnICsgZXJyKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVwbG95R1VJKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIF90aGlzLmd1aURlcGxveWVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vKioqKioqKioqKioqKioqKioqKiBQUklWQVRFIE1FVEhPRFMgKioqKioqKioqKioqKioqKioqKlxyXG4gIC8qKlxyXG4gICAqIEdldFZhbGlkVG9rZW4gaXMgZm9yIG5vbiBsZWdhY3kgaHlwZXJ0aWVzIGFuZCB2ZXJpZmllcyBpZiB0aGUgVG9rZW4gaXMgc3RpbGwgdmFsaWRcclxuICAgKiBpZiB0aGUgdG9rZW4gaXMgaW52YWxpZCBpdCByZXF1ZXN0cyBhIG5ldyB0b2tlblxyXG4gICAqIEBwYXJhbSAge1N0cmluZ30gaHlwZXJ0eVVSTCBoeXBlcnR5VVJMXHJcbiAgICogQHJldHVybiB7UHJvbWlzZX1cclxuICAgKi9cclxuICBfZ2V0VmFsaWRUb2tlbihoeXBlcnR5VVJMKSB7XHJcbiAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGUuX2dldFZhbGlkVG9rZW5dOmh5cGVydHlVUkwnLCBoeXBlcnR5VVJMKTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBfdGhpcy5nZXRJZFRva2VuKGh5cGVydHlVUkwpLnRoZW4oZnVuY3Rpb24oYXNzZXJ0aW9uKSB7XHJcbiAgICAgICAgbG9nLmxvZygnW0lkZW50aXR5TW9kdWxlLl9nZXRWYWxpZFRva2VuXSByZXRyaWV2ZWQgSWRBc3NlcnRpb24nLCBhc3NlcnRpb24pO1xyXG4gICAgICAgIGxldCB0aW1lTm93ID0gc2Vjb25kc1NpbmNlRXBvY2goKTtcclxuXHJcbiAgICAgICAgaWYgKCFhc3NlcnRpb24uaGFzT3duUHJvcGVydHkoJ2V4cGlyZXMnKSkgcmV0dXJuIHJlc29sdmUoYXNzZXJ0aW9uKTtcclxuXHJcbiAgICAgICAgbGV0IGV4cGlyYXRpb25EYXRlID0gYXNzZXJ0aW9uLmV4cGlyZXM7XHJcblxyXG4gICAgICAgIC8qIGlmIChjb21wbGV0ZUlkLmhhc093blByb3BlcnR5KCdpbmZvJykpIHtcclxuICAgICAgICAgIGlmIChjb21wbGV0ZUlkLmluZm8uaGFzT3duUHJvcGVydHkoJ2V4cGlyZXMnKSkge1xyXG4gICAgICAgICAgICBleHBpcmF0aW9uRGF0ZSA9IGNvbXBsZXRlSWQuaW5mby5leHBpcmVzO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjb21wbGV0ZUlkLmluZm8uaGFzT3duUHJvcGVydHkoJ3Rva2VuSURKU09OJykpIHtcclxuICAgICAgICAgICAgZXhwaXJhdGlvbkRhdGUgPSBjb21wbGV0ZUlkLmluZm8udG9rZW5JREpTT04uZXhwO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdGhyb3cgJ1RoZSBJRCBUb2tlbiBkb2VzIG5vdCBoYXZlIGFuIGV4cGlyYXRpb24gdGltZSc7XHJcbiAgICAgICAgICAgIGxvZy5pbmZvKCdUaGUgSUQgVG9rZW4gZG9lcyBub3QgaGF2ZSBhbiBleHBpcmF0aW9uIHRpbWUnKTtcclxuICAgICAgICAgICAgcmVzb2x2ZShhc3NlcnRpb24pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY29tcGxldGVJZC5oYXNPd25Qcm9wZXJ0eSgnaW5mb1Rva2VuJykgJiYgY29tcGxldGVJZC5pbmZvVG9rZW4uaGFzT3duUHJvcGVydHkoJ2V4cCcpKSB7XHJcbiAgICAgICAgICBleHBpcmF0aW9uRGF0ZSA9IGNvbXBsZXRlSWQuaW5mb1Rva2VuLmV4cDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gdGhyb3cgJ1RoZSBJRCBUb2tlbiBkb2VzIG5vdCBoYXZlIGFuIGV4cGlyYXRpb24gdGltZSc7XHJcbiAgICAgICAgICBsb2cuaW5mbygnVGhlIElEIFRva2VuIGRvZXMgbm90IGhhdmUgYW4gZXhwaXJhdGlvbiB0aW1lJyk7XHJcbiAgICAgICAgICByZXNvbHZlKGFzc2VydGlvbik7XHJcbiAgICAgICAgfSovXHJcblxyXG4gICAgICAgIGxvZy5sb2coJ1tJZGVudGl0eS5JZGVudGl0eU1vZHVsZS5nZXRWYWxpZFRva2VuXSBUb2tlbiBleHBpcmVzIGluJywgZXhwaXJhdGlvbkRhdGUpO1xyXG4gICAgICAgIGxvZy5sb2coJ1tJZGVudGl0eS5JZGVudGl0eU1vZHVsZS5nZXRWYWxpZFRva2VuXSB0aW1lIG5vdzonLCB0aW1lTm93KTtcclxuXHJcbiAgICAgICAgaWYgKHRpbWVOb3cgPj0gZXhwaXJhdGlvbkRhdGUpIHtcclxuICAgICAgICAgIGlmIChhc3NlcnRpb24uaGFzT3duUHJvcGVydHkoJ3JlZnJlc2gnKSkge1xyXG4gICAgICAgICAgICBfdGhpcy5zZW5kUmVmcmVzaE1lc3NhZ2UoYXNzZXJ0aW9uKS50aGVuKChuZXdBc3NlcnRpb24pID0+IHtcclxuICAgICAgICAgICAgICBfdGhpcy5pZGVudGl0aWVzLnVwZGF0ZUFzc2VydGlvbihuZXdBc3NlcnRpb24pLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShuZXdBc3NlcnRpb24pO1xyXG4gICAgICAgICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgIGxvZy5lcnJvcignW0lkZW50aXR5TW9kdWxlLmdldFZhbGlkVG9rZW5dIGVycm9yIHVwZGF0aW5nIHRoZSBhc3NlcnRpb24gJywgZXJyKTtcclxuICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgbG9nLmVycm9yKCdbSWRlbnRpdHlNb2R1bGUuZ2V0VmFsaWRUb2tlbl0gZXJyb3IgcmVmcmVzaGluZyB0aGUgYXNzZXJ0aW9uICcsIGVycik7XHJcbiAgICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHsgLy8gbm8gcmVmcmVzaCB0b2tlbiBhdmFpbGFibGUsIHVzZXIgaGFzIHRvIGF1dGhlbnRpY2F0ZSBhZ2FpbiB0byBnZXQgYSBuZXcgYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlIG5ldyBpZFRva2VuXHJcbiAgICAgICAgICAgIF90aGlzLmNhbGxHZW5lcmF0ZU1ldGhvZHMoYXNzZXJ0aW9uLmlkcC5kb21haW4pLnRoZW4oKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnW0lkZW50aXR5TW9kdWxlLmdldFZhbGlkVG9rZW5dIGVycm9yIHdoZW4gZ2VuZXJhdGluZyBhIG5ldyBhc3NlcnRpb24gJyArIGVycik7IH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXNvbHZlKGFzc2VydGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikge1xyXG4gICAgICAgIGxvZy5lcnJvcignW0lkZW50aXR5TW9kdWxlLmdldFZhbGlkVG9rZW5dIGVycm9yIG9uIGdldElkVG9rZW4nLCBlcnJvcik7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogcmV0dXJucyB0aGUgcmVwb3J0ZXIgYXNzb2NpYXRlZCB0byB0aGUgZGF0YU9iamVjdCBVUkxcclxuICAqIEBwYXJhbSAgIHtTdHJpbmd9ICAgZGF0YU9iamVjdFVSTCAgICAgICAgIGRhdGFPYmplY3QgdXJsXHJcbiAgKiBAcmV0dXJuICAge1N0cmluZ30gIHJlcG9ydGVyICAgICAgICAgICAgICBkYXRhT2JqZWN0IHVybCByZXBvcnRlclxyXG4gICovXHJcbiAgX2dldEh5cGVydHlGcm9tRGF0YU9iamVjdChkYXRhT2JqZWN0VVJMKSB7XHJcbiAgICBsb2cuaW5mbygnX2dldEh5cGVydHlGcm9tRGF0YU9iamVjdDpkYXRhT2JqZWN0VVJMJywgZGF0YU9iamVjdFVSTCk7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIGxldCBzcGxpdGVkVVJMID0gZGl2aWRlVVJMKGRhdGFPYmplY3RVUkwpO1xyXG4gICAgICBsZXQgZG9tYWluID0gc3BsaXRlZFVSTC5kb21haW47XHJcbiAgICAgIGxldCBmaW5hbFVSTCA9IHBhcnNlTWVzc2FnZVVSTChkYXRhT2JqZWN0VVJMKTtcclxuXHJcbiAgICAgIC8vIGNoZWNrIGlmIGlzIHRoZSBjcmVhdG9yIG9mIHRoZSBoeXBlcnR5XHJcbiAgICAgIGxldCByZXBvcnRlclVSTCA9IF90aGlzLnJlZ2lzdHJ5LmdldFJlcG9ydGVyVVJMU3luY2hvbm91cyhmaW5hbFVSTCk7XHJcbiAgICAgIGxvZy5pbmZvKCdfZ2V0SHlwZXJ0eUZyb21EYXRhT2JqZWN0OnJlcG9ydGVyVVJMJywgcmVwb3J0ZXJVUkwpO1xyXG5cclxuICAgICAgaWYgKHJlcG9ydGVyVVJMKSB7XHJcbiAgICAgICAgcmVzb2x2ZShyZXBvcnRlclVSTCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYWxyZWFkeSBhbiBhc3NvY2lhdGlvbiBmcm9tIGFuIGh5cGVydHlVUkwgdG8gdGhlIGRhdGFPYmplY3RcclxuICAgICAgICBsZXQgc3RvcmVkUmVwb3J0ZXJVUkwgPSBfdGhpcy5kYXRhT2JqZWN0c0lkZW50aXR5W2ZpbmFsVVJMXTtcclxuICAgICAgICBsb2cuaW5mbygnX2dldEh5cGVydHlGcm9tRGF0YU9iamVjdDpzdG9yZWRSZXBvcnRlclVSTCcsIHN0b3JlZFJlcG9ydGVyVVJMKTtcclxuXHJcbiAgICAgICAgaWYgKHN0b3JlZFJlcG9ydGVyVVJMKSB7XHJcbiAgICAgICAgICByZXNvbHZlKHN0b3JlZFJlcG9ydGVyVVJMKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYW55IGh5cGVydHkgdGhhdCBzdWJzY3JpYmVkIHRoZSBkYXRhT2JqZWN0VVJMXHJcbiAgICAgICAgICBsZXQgc3Vic2NyaWJlckh5cGVydHkgPSBfdGhpcy5yZWdpc3RyeS5nZXREYXRhT2JqZWN0U3Vic2NyaWJlckh5cGVydHkoZGF0YU9iamVjdFVSTCk7XHJcbiAgICAgICAgICBsb2cuaW5mbygnX2dldEh5cGVydHlGcm9tRGF0YU9iamVjdDpzdWJzY3JpYmVySHlwZXJ0eScsIHN1YnNjcmliZXJIeXBlcnR5KTtcclxuXHJcbiAgICAgICAgICBpZiAoc3Vic2NyaWJlckh5cGVydHkpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShzdWJzY3JpYmVySHlwZXJ0eSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBzZWFyY2ggaW4gZG9tYWluIHJlZ2lzdHJ5IGZvciB0aGUgaHlwZXJ0eSBhc3NvY2lhdGVkIHRvIHRoZSBkYXRhT2JqZWN0XHJcbiAgICAgICAgICAgIC8vIHNlYXJjaCBpbiBjYXNlIGlzIGEgc3Vic2NyaWJlciB3aG8gd2FudHMgdG8ga25vdyB0aGUgcmVwb3J0ZXJcclxuICAgICAgICAgICAgLy8gVG8gYmUgcmV2aWV3ZWQgaW4gb3JkZXIgdG8gYXZvaWQgdGhlIGRpc2NvdmVyeSB0cmFuc2FjdGlvblxyXG4gICAgICAgICAgICBfdGhpcy5fY29yZURpc2NvdmVyeS5kaXNjb3ZlckRhdGFPYmplY3RQZXJVUkwoZmluYWxVUkwsIGRvbWFpbikudGhlbihkYXRhT2JqZWN0ID0+IHtcclxuICAgICAgICAgICAgICBsb2cuaW5mbygnX2dldEh5cGVydHlGcm9tRGF0YU9iamVjdDpkYXRhT2JqZWN0JywgZGF0YU9iamVjdCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMuZGF0YU9iamVjdHNJZGVudGl0eVtmaW5hbFVSTF0gPSBkYXRhT2JqZWN0LnJlcG9ydGVyO1xyXG4gICAgICAgICAgICAgIGxvZy5pbmZvKCdfZ2V0SHlwZXJ0eUZyb21EYXRhT2JqZWN0OmRhdGFPYmplY3QucmVwb3J0ZXInLCBkYXRhT2JqZWN0LnJlcG9ydGVyKTtcclxuICAgICAgICAgICAgICByZXNvbHZlKGRhdGFPYmplY3QucmVwb3J0ZXIpO1xyXG4gICAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBGdW5jdGlvbiB0aGF0IHJlc29sdmUgYW5kIGNyZWF0ZSB0aGUgZG9tYWluVVJMIGluIGNhc2UgaXQgaXMgcHJvdmlkZWQgb25lLiBJZiBub3QsIHJlc29sdmUgdGhlIGRlZmF1bHQgZG9tYWluVVJMXHJcbiAgKiBAcGFyYW0ge1N0cmluZ30gICAgIGlkcERvbWFpbiAgICAgaWRwRG9tYWluIChPcHRpb25hbClcclxuICAqL1xyXG4gIF9yZXNvbHZlRG9tYWluKGlkcERvbWFpbikge1xyXG4gICAgaWYgKCFpZHBEb21haW4pIHtcclxuICAgICAgcmV0dXJuICdkb21haW4taWRwOi8vZ29vZ2xlLmNvbSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ2RvbWFpbi1pZHA6Ly8nICsgaWRwRG9tYWluO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLypcclxuICAgIF9zZWNvbmRzU2luY2VFcG9jaCgpIHtcclxuICAgICAgcmV0dXJuIE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xyXG4gICAgfSovXHJcbn1cclxuXHJcblxyXG5leHBvcnQgZGVmYXVsdCBJZGVudGl0eU1vZHVsZTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9pZGVudGl0eS9JZGVudGl0eU1vZHVsZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7QUFQQTtBQUNBO0FBT0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0QkE7QUFDQTtBQUNBOzs7QUFHQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUF3REE7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBOzs7OztBQUtBOzs7Ozs7OztBQW1CQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7O0FBSUE7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBS0E7QUFDQTs7Ozs7QUFLQTtBQUNBOzs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7QUFJQTs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSkE7QUFDQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFEQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBN3VDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBOzs7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7OztBQTJwQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///470\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(472), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9udW1iZXIvaXMtaW50ZWdlci5qcz80NTFhIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9udW1iZXIvaXMtaW50ZWdlclwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9udW1iZXIvaXMtaW50ZWdlci5qc1xuLy8gbW9kdWxlIGlkID0gNDcxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///471\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(473);\nmodule.exports = __webpack_require__(13).Number.isInteger;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9udW1iZXIvaXMtaW50ZWdlci5qcz83MzhlIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm51bWJlci5pcy1pbnRlZ2VyJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5OdW1iZXIuaXNJbnRlZ2VyO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL251bWJlci9pcy1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSA0NzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///472\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.3 Number.isInteger(number)\nvar $export = __webpack_require__(21);\n\n$export($export.S, 'Number', { isInteger: __webpack_require__(474) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDczLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5udW1iZXIuaXMtaW50ZWdlci5qcz9kNWE5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjEuMi4zIE51bWJlci5pc0ludGVnZXIobnVtYmVyKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IGlzSW50ZWdlcjogcmVxdWlyZSgnLi9faXMtaW50ZWdlcicpIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm51bWJlci5pcy1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSA0NzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///473\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.3 Number.isInteger(number)\nvar isObject = __webpack_require__(36);\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDc0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1pbnRlZ2VyLmpzPzAwYTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMS4yLjMgTnVtYmVyLmlzSW50ZWdlcihudW1iZXIpXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzSW50ZWdlcihpdCkge1xuICByZXR1cm4gIWlzT2JqZWN0KGl0KSAmJiBpc0Zpbml0ZShpdCkgJiYgZmxvb3IoaXQpID09PSBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtaW50ZWdlci5qc1xuLy8gbW9kdWxlIGlkID0gNDc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///474\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('IdentityModule');\n\n/**\r\n* fake class for the gui to select the identity,\r\n* TODO replace with the proper identity GUI\r\n*\r\n*/\n// Log System\n\nvar GuiFake = function GuiFake(url, messageBus) {\n (0, _classCallCheck3.default)(this, GuiFake);\n\n log.log('FakeGUI_deployed');\n var _this = this;\n\n _this._url = url;\n _this._waitTime = 10000;\n _this._messageBus = messageBus;\n\n _this._messageBus.addListener(_this._url, function (msg) {\n\n if (msg.hasOwnProperty('type') && msg.type === 'create' && msg.body.hasOwnProperty('value') && msg.body.value.hasOwnProperty('identities') && msg.body.value.hasOwnProperty('idps')) {\n\n var identities = msg.body.value.identities;\n var idps = msg.body.value.idps;\n\n var value = void 0;\n\n if (identities[0] !== undefined) {\n value = { type: 'identity', value: identities[0], code: 200 };\n } else {\n value = { type: 'idp', value: idps[1].domain, code: 200 };\n }\n\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n\n // to test on the identity side the listener without the timeout\n // can represent the time the user takes to choose and identity\n if (msg.body.value === 'wait') {\n\n setTimeout(function () {\n _this._messageBus.postMessage(replyMsg);\n }, _this._waitTime);\n } else {\n _this._messageBus.postMessage(replyMsg);\n }\n } else {\n log.log('Ignoring messages not intended to FakeGUI.', msg);\n }\n });\n};\n\nexports.default = GuiFake;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDc1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9pZGVudGl0eS9HdWlGYWtlLmpzP2Q4YTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9nIFN5c3RlbVxyXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xyXG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignSWRlbnRpdHlNb2R1bGUnKTtcclxuXHJcbi8qKlxyXG4qIGZha2UgY2xhc3MgZm9yIHRoZSBndWkgdG8gc2VsZWN0IHRoZSBpZGVudGl0eSxcclxuKiBUT0RPIHJlcGxhY2Ugd2l0aCB0aGUgcHJvcGVyIGlkZW50aXR5IEdVSVxyXG4qXHJcbiovXHJcbmNsYXNzIEd1aUZha2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcih1cmwsIG1lc3NhZ2VCdXMpIHtcclxuICAgIGxvZy5sb2coJ0Zha2VHVUlfZGVwbG95ZWQnKTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgX3RoaXMuX3VybCA9IHVybDtcclxuICAgIF90aGlzLl93YWl0VGltZSA9IDEwMDAwO1xyXG4gICAgX3RoaXMuX21lc3NhZ2VCdXMgPSBtZXNzYWdlQnVzO1xyXG5cclxuICAgIF90aGlzLl9tZXNzYWdlQnVzLmFkZExpc3RlbmVyKF90aGlzLl91cmwsIG1zZyA9PiB7XHJcblxyXG4gICAgICBpZiAobXNnLmhhc093blByb3BlcnR5KCd0eXBlJykgJiZcclxuICAgICAgICAgIG1zZy50eXBlID09PSAnY3JlYXRlJyAmJlxyXG4gICAgICAgICAgbXNnLmJvZHkuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykgJiZcclxuICAgICAgICAgIG1zZy5ib2R5LnZhbHVlLmhhc093blByb3BlcnR5KCdpZGVudGl0aWVzJykgJiZcclxuICAgICAgICAgIG1zZy5ib2R5LnZhbHVlLmhhc093blByb3BlcnR5KCdpZHBzJykpIHtcclxuXHJcbiAgICAgICAgbGV0IGlkZW50aXRpZXMgPSBtc2cuYm9keS52YWx1ZS5pZGVudGl0aWVzO1xyXG4gICAgICAgIGxldCBpZHBzID0gbXNnLmJvZHkudmFsdWUuaWRwcztcclxuXHJcbiAgICAgICAgbGV0IHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAoaWRlbnRpdGllc1swXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IHt0eXBlOiAnaWRlbnRpdHknLCB2YWx1ZTogaWRlbnRpdGllc1swXSwgY29kZTogMjAwfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFsdWUgPSB7dHlwZTogJ2lkcCcsIHZhbHVlOiBpZHBzWzFdLmRvbWFpbiwgY29kZTogMjAwfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCByZXBseU1zZyA9IHtpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCB0bzogbXNnLmZyb20sIGZyb206IG1zZy50bywgYm9keTogdmFsdWV9O1xyXG5cclxuICAgICAgICAvLyB0byB0ZXN0IG9uIHRoZSBpZGVudGl0eSBzaWRlIHRoZSBsaXN0ZW5lciB3aXRob3V0IHRoZSB0aW1lb3V0XHJcbiAgICAgICAgLy8gY2FuIHJlcHJlc2VudCB0aGUgdGltZSB0aGUgdXNlciB0YWtlcyB0byBjaG9vc2UgYW5kIGlkZW50aXR5XHJcbiAgICAgICAgaWYgKG1zZy5ib2R5LnZhbHVlID09PSAnd2FpdCcpIHtcclxuXHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UocmVwbHlNc2cpO1xyXG4gICAgICAgICAgfSwgX3RoaXMuX3dhaXRUaW1lKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UocmVwbHlNc2cpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsb2cubG9nKCdJZ25vcmluZyBtZXNzYWdlcyBub3QgaW50ZW5kZWQgdG8gRmFrZUdVSS4nLCBtc2cpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBHdWlGYWtlO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2lkZW50aXR5L0d1aUZha2UuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQTtBQUNBO0FBREE7QUFDQTs7Ozs7QUFBQTtBQUNBO0FBQ0E7Ozs7O0FBSkE7QUFDQTtBQVFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///475\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _Identities = __webpack_require__(206);\n\nvar _Identities2 = _interopRequireDefault(_Identities);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Provides an API to manage identities from msg bus pipeline\r\n*\r\n*/\nvar log = logger.getLogger('IdentityManager');\n\nvar IdentityManager = function () {\n function IdentityManager(idm) {\n (0, _classCallCheck3.default)(this, IdentityManager);\n\n var _this = this;\n\n _this._idm = idm;\n }\n\n (0, _createClass3.default)(IdentityManager, [{\n key: 'reset',\n value: function reset() {\n console.log('IM reset');\n\n // this._idm.identities.reset();\n this._idm.identities = new _Identities2.default(this._idm.identities._type, this._idm.identities._storageManager);\n console.log(this._idm.identities);\n }\n }, {\n key: '_isToSetID',\n value: function _isToSetID(message) {\n var schemasToIgnore = ['domain-idp', 'runtime', 'domain'];\n\n var _from = message.from;\n\n if (message.body && message.body.hasOwnProperty('source')) {\n _from = message.body.source;\n }\n\n if (message.body && message.body.hasOwnProperty('subscriber')) {\n _from = message.body.subscriber;\n }\n\n if (message.type === 'forward') {\n return false;\n }\n\n // Signalling Messages between P2P Stubs don't have Identities. FFS\n if (_from.includes('/p2prequester/') || _from.includes('/p2phandler/')) {\n return false;\n }\n\n var splitFrom = _from.split('://');\n var fromSchema = splitFrom[0];\n var isToIgnore = schemasToIgnore.indexOf(fromSchema) === -1;\n\n return isToIgnore;\n }\n }, {\n key: 'processMessage',\n value: function processMessage(message) {\n var _this2 = this;\n\n log.log('[IdentityManager.processMessage] ', message);\n\n return new _promise2.default(function (resolve, reject) {\n\n // skip messages that don't need identity tokens in the body\n\n if (!_this2._isToSetID(message)) return resolve(message);\n\n /* let from = message.from;\r\n let sourceURL = undefined;\r\n if ( message.hasOwnProperty('body') && message.body.hasOwnProperty('source')) {\r\n from = message.body.source;\r\n }\r\n if (message.type === 'forward') {\r\n from = message.body.from;\r\n }\r\n if (message.hasOwnProperty('body') && message.body.hasOwnProperty('subscriber')) {\r\n from = message.body.subscriber;\r\n }*/\n\n _this2._idm.getToken(message).then(function (identity) {\n\n if (!message.hasOwnProperty('body')) message.body = {};\n\n message.body.identity = identity;\n resolve(message);\n }).catch(function (reason) {\n log.error(reason);\n reject(reason);\n });\n });\n }\n }]);\n return IdentityManager;\n}();\n\nexports.default = IdentityManager;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDc2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9pZGVudGl0eS9JZGVudGl0eU1hbmFnZXIuanM/ZjI3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuKiBQcm92aWRlcyBhbiBBUEkgdG8gbWFuYWdlIGlkZW50aXRpZXMgZnJvbSBtc2cgYnVzIHBpcGVsaW5lXHJcbipcclxuKi9cclxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcclxuaW1wb3J0IElkZW50aXRpZXMgZnJvbSAnLi9JZGVudGl0aWVzJztcclxubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0lkZW50aXR5TWFuYWdlcicpO1xyXG5cclxuY2xhc3MgSWRlbnRpdHlNYW5hZ2VyIHtcclxuXHJcbiAgY29uc3RydWN0b3IoaWRtKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIF90aGlzLl9pZG0gPSBpZG07XHJcblxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnSU0gcmVzZXQnKTtcclxuXHJcbiAgICAvLyB0aGlzLl9pZG0uaWRlbnRpdGllcy5yZXNldCgpO1xyXG4gICAgdGhpcy5faWRtLmlkZW50aXRpZXMgPSBuZXcgSWRlbnRpdGllcyh0aGlzLl9pZG0uaWRlbnRpdGllcy5fdHlwZSwgdGhpcy5faWRtLmlkZW50aXRpZXMuX3N0b3JhZ2VNYW5hZ2VyKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuX2lkbS5pZGVudGl0aWVzKTtcclxuICB9XHJcblxyXG4gIF9pc1RvU2V0SUQobWVzc2FnZSkge1xyXG4gICAgbGV0IHNjaGVtYXNUb0lnbm9yZSA9IFsnZG9tYWluLWlkcCcsICdydW50aW1lJywgJ2RvbWFpbiddO1xyXG5cclxuICAgIGxldCBfZnJvbSA9IG1lc3NhZ2UuZnJvbTtcclxuXHJcbiAgICBpZiAobWVzc2FnZS5ib2R5ICYmIG1lc3NhZ2UuYm9keS5oYXNPd25Qcm9wZXJ0eSgnc291cmNlJykpIHtcclxuICAgICAgX2Zyb20gPSBtZXNzYWdlLmJvZHkuc291cmNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtZXNzYWdlLmJvZHkgJiYgbWVzc2FnZS5ib2R5Lmhhc093blByb3BlcnR5KCdzdWJzY3JpYmVyJykpIHtcclxuICAgICAgX2Zyb20gPSBtZXNzYWdlLmJvZHkuc3Vic2NyaWJlcjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobWVzc2FnZS50eXBlID09PSAnZm9yd2FyZCcpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNpZ25hbGxpbmcgTWVzc2FnZXMgYmV0d2VlbiBQMlAgU3R1YnMgZG9uJ3QgaGF2ZSBJZGVudGl0aWVzLiBGRlNcclxuICAgIGlmIChfZnJvbS5pbmNsdWRlcygnL3AycHJlcXVlc3Rlci8nKSB8fCBfZnJvbS5pbmNsdWRlcygnL3AycGhhbmRsZXIvJykpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzcGxpdEZyb20gPSAoX2Zyb20pLnNwbGl0KCc6Ly8nKTtcclxuICAgIGxldCBmcm9tU2NoZW1hID0gc3BsaXRGcm9tWzBdO1xyXG4gICAgbGV0IGlzVG9JZ25vcmUgPSBzY2hlbWFzVG9JZ25vcmUuaW5kZXhPZihmcm9tU2NoZW1hKSA9PT0gLTE7XHJcblxyXG4gICAgcmV0dXJuIGlzVG9JZ25vcmU7XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzTWVzc2FnZShtZXNzYWdlKSB7XHJcbiAgICBsb2cubG9nKCdbSWRlbnRpdHlNYW5hZ2VyLnByb2Nlc3NNZXNzYWdlXSAnLCBtZXNzYWdlKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgLy8gc2tpcCBtZXNzYWdlcyB0aGF0IGRvbid0IG5lZWQgaWRlbnRpdHkgdG9rZW5zIGluIHRoZSBib2R5XHJcblxyXG4gICAgICBpZiAoIXRoaXMuX2lzVG9TZXRJRChtZXNzYWdlKSkgcmV0dXJuIHJlc29sdmUobWVzc2FnZSk7XHJcblxyXG4gICAgICAvKiAgICAgIGxldCBmcm9tID0gbWVzc2FnZS5mcm9tO1xyXG4gICAgICBsZXQgc291cmNlVVJMID0gdW5kZWZpbmVkO1xyXG4gICAgICBpZiAoIG1lc3NhZ2UuaGFzT3duUHJvcGVydHkoJ2JvZHknKSAmJiBtZXNzYWdlLmJvZHkuaGFzT3duUHJvcGVydHkoJ3NvdXJjZScpKSB7XHJcbiAgICAgICAgZnJvbSA9IG1lc3NhZ2UuYm9keS5zb3VyY2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09ICdmb3J3YXJkJykge1xyXG4gICAgICAgIGZyb20gPSBtZXNzYWdlLmJvZHkuZnJvbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG1lc3NhZ2UuaGFzT3duUHJvcGVydHkoJ2JvZHknKSAmJiBtZXNzYWdlLmJvZHkuaGFzT3duUHJvcGVydHkoJ3N1YnNjcmliZXInKSkge1xyXG4gICAgICAgIGZyb20gPSBtZXNzYWdlLmJvZHkuc3Vic2NyaWJlcjtcclxuICAgICAgfSovXHJcblxyXG4gICAgICB0aGlzLl9pZG0uZ2V0VG9rZW4obWVzc2FnZSkudGhlbigoaWRlbnRpdHkpID0+IHtcclxuXHJcbiAgICAgICAgaWYgKCFtZXNzYWdlLmhhc093blByb3BlcnR5KCdib2R5JykpIG1lc3NhZ2UuYm9keSA9IHt9O1xyXG5cclxuICAgICAgICBtZXNzYWdlLmJvZHkuaWRlbnRpdHkgPSBpZGVudGl0eTtcclxuICAgICAgICByZXNvbHZlKG1lc3NhZ2UpO1xyXG4gICAgICB9KS5jYXRjaCgocmVhc29uKSA9PiB7XHJcbiAgICAgICAgbG9nLmVycm9yKHJlYXNvbik7XHJcbiAgICAgICAgcmVqZWN0KHJlYXNvbik7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IElkZW50aXR5TWFuYWdlcjtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9pZGVudGl0eS9JZGVudGl0eU1hbmFnZXIuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTs7Ozs7OztBQU5BOzs7O0FBTUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQWNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTs7Ozs7QUFLQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///476\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _ActionsService = __webpack_require__(478);\n\nvar _ActionsService2 = _interopRequireDefault(_ActionsService);\n\nvar _PDP = __webpack_require__(479);\n\nvar _PDP2 = _interopRequireDefault(_PDP);\n\nvar _Policy = __webpack_require__(480);\n\nvar _Policy2 = _interopRequireDefault(_Policy);\n\nvar _utils = __webpack_require__(14);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('PEP'); // Log System\n\nvar PEP = function () {\n\n /**\r\n * Creates a Policy Enforcement Point (PEP) instance\r\n * @param {Object} context\r\n */\n function PEP(context) {\n (0, _classCallCheck3.default)(this, PEP);\n\n var _this = this;\n\n _this.pdp = new _PDP2.default(context);\n _this.actionsService = new _ActionsService2.default(context);\n _this.context = context;\n context.pep = _this;\n\n //TODO should be added a trigger to verify when the loadConfigurations is successfully completed\n context.loadConfigurations();\n }\n\n /**\r\n * return the messageBus in this Registry\r\n * @param {MessageBus} messageBus\r\n */\n\n\n (0, _createClass3.default)(PEP, [{\n key: 'addGUIListeners',\n value: function addGUIListeners() {\n var _this = this;\n\n _this.context.messageBus.addListener(_this.context.pepURL, function (msg) {\n var funcName = msg.body.method;\n\n var returnedValue = void 0;\n if (funcName === 'addToGroup') {\n var groupName = msg.body.params.groupName;\n var userEmail = msg.body.params.userEmail;\n returnedValue = _this.context.addToGroup(groupName, userEmail);\n } else if (funcName === 'createGroup') {\n var _groupName = msg.body.params.groupName;\n returnedValue = _this.context.createGroup(_groupName);\n } else if (funcName === 'addPolicy') {\n var source = msg.body.params.source;\n var key = msg.body.params.key;\n var policy = msg.body.params.policy;\n var combiningAlgorithm = msg.body.params.combiningAlgorithm;\n returnedValue = _this.addPolicy(source, key, policy, combiningAlgorithm);\n } else if (funcName === 'deleteGroup') {\n var _groupName2 = msg.body.params.groupName;\n returnedValue = _this.context.deleteGroup(_groupName2);\n } else if (funcName === 'removePolicy') {\n var _source = msg.body.params.source;\n var _key = msg.body.params.key;\n returnedValue = _this.removePolicy(_source, _key);\n } else if (funcName === 'savePolicies') {\n var _source2 = msg.body.params.source;\n returnedValue = _this.context.savePolicies(_source2);\n } else if (funcName === 'userPolicies') {\n returnedValue = _this.context.userPolicies;\n } else if (funcName === 'activeUserPolicy') {\n var userPolicy = msg.body.params.userPolicy;\n if (userPolicy) {\n _this.context.activeUserPolicy = userPolicy;\n }\n returnedValue = _this.context.activeUserPolicy;\n } else if (funcName === 'userPolicy') {\n var _key2 = msg.body.params.key;\n returnedValue = _this.context.userPolicies[_key2];\n } else if (funcName === 'saveActivePolicy') {\n returnedValue = _this.context.saveActivePolicy();\n } else if (funcName === 'getMyEmails') {\n returnedValue = _this.context.getMyEmails();\n } else if (funcName === 'getMyHyperties') {\n returnedValue = _this.context.getMyHyperties();\n } else if (funcName === 'groups') {\n returnedValue = _this.context.groups;\n } else if (funcName === 'getGroupsNames') {\n returnedValue = _this.context.getGroupsNames();\n }if (funcName === 'removeFromGroup') {\n var _groupName3 = msg.body.params.groupName;\n var _userEmail = msg.body.params.userEmail;\n returnedValue = _this.context.removeFromGroup(_groupName3, _userEmail);\n }\n\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n _this.context.messageBus.postMessage(replyMsg);\n });\n }\n\n /**\r\n * Adds a policy to the Policy Enforcement Point (PEP). The policy can be created by the service\r\n * provider or by the user.\r\n * @param {String} source\r\n * @param {String} key\r\n * @param {Object} policy\r\n */\n\n }, {\n key: 'addPolicy',\n value: function addPolicy(source, key, policy, combiningAlgorithm) {\n if (!source) throw new Error('source is not defined');\n if (!key) throw new Error('key is not defined');\n\n if (policy === undefined) {\n policy = new _Policy2.default(key, [], [], combiningAlgorithm);\n } else {\n if (!(policy instanceof _Policy2.default)) {\n policy = new _Policy2.default(policy.key, policy.rules, policy.actions, policy.combiningAlgorithm);\n }\n }\n\n switch (source) {\n case 'SERVICE_PROVIDER':\n this.context.savePolicies(source, policy, key);\n break;\n case 'USER':\n this.context.userPolicies[key] = policy;\n this.context.savePolicies(source);\n break;\n default:\n throw Error('Unknown policy source: ' + source);\n }\n }\n }, {\n key: 'authorise',\n value: function authorise(message, isIncoming) {\n var _this2 = this;\n\n // log.log('[Policy.PEP Authorise] ', message);\n // log.log(message);\n if (!message) throw new Error('message is not defined');\n if (!message.from) throw new Error('message.from is not defined');\n if (!message.to) throw new Error('message.to is not defined');\n if (!message.type) throw new Error('message.type is not defined');\n message.body = message.body || {};\n\n return new _promise2.default(function (resolve, reject) {\n\n message.body = message.body || {};\n var _this = _this2;\n\n var result = _this.pdp.evaluatePolicies(message, isIncoming);\n if (result === 'Not Applicable') {\n result = _this.context.defaultBehaviour;\n message.body.auth = false;\n }\n _this.actionsService.enforcePolicies(message, isIncoming).then(function (messages) {\n for (var i in messages) {\n message = messages[i];\n if (result) {\n message.body.auth = message.body.auth === undefined ? true : message.body.auth;\n resolve(message);\n } else {\n var errorMessage = { body: { code: 403, description: 'Blocked by policy' }, from: message.to, to: message.from, type: 'response' };\n reject(errorMessage);\n }\n }\n }, function (error) {\n reject(error);\n });\n });\n }\n }, {\n key: 'authoriseSync',\n value: function authoriseSync(message) {\n var result = void 0;\n message.body = message.body || {};\n result = this.pdp.evaluatePolicies(message, true);\n if (result === 'Not Applicable') {\n result = this.context.defaultBehaviour;\n }\n return result;\n }\n }, {\n key: 'removePolicy',\n value: function removePolicy(source, key) {\n if (!source) throw new Error('source is not defined');\n if (source !== '*' && !key) throw new Error('key is not defined');\n\n switch (source) {\n case '*':\n this.context.serviceProviderPolicy = {};\n this.context.userPolicies = {};\n this.context.activeUserPolicy = undefined;\n this.context.savePolicies('USER');\n this.context.savePolicies('SERVICE_PROVIDER');\n this.context.saveActivePolicy();\n break;\n case 'SERVICE_PROVIDER':\n delete this.context.serviceProviderPolicy[key];\n this.context.savePolicies();\n break;\n case 'USER':\n delete this.context.userPolicies[key];\n if (key === this.context.activeUserPolicy) {\n this.context.activeUserPolicy = undefined;\n this.context.saveActivePolicy();\n }\n this.context.savePolicies('USER');\n break;\n default:\n throw Error('Unknown policy source: ' + source);\n }\n }\n }, {\n key: 'messageBus',\n get: function get() {\n var _this = this;\n return _this.context.messageBus;\n }\n\n /**\r\n * Set the messageBus in this Registry\r\n * @param {MessageBus} messageBus\r\n */\n ,\n set: function set(messageBus) {\n var _this = this;\n _this.context.messageBus = messageBus;\n _this.addGUIListeners();\n }\n }]);\n return PEP;\n}();\n\nexports.default = PEP;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDc3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUEVQLmpzPzQ3ZjIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9nIFN5c3RlbVxyXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xyXG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignUEVQJyk7XHJcblxyXG5pbXBvcnQgQWN0aW9uc1NlcnZpY2UgZnJvbSAnLi9BY3Rpb25zU2VydmljZSc7XHJcbmltcG9ydCBQRFAgZnJvbSAnLi9QRFAnO1xyXG5pbXBvcnQgUG9saWN5IGZyb20gJy4vUG9saWN5JztcclxuaW1wb3J0IHtpc0h5cGVydHlVUkx9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcclxuXHJcbmNsYXNzIFBFUCB7XHJcblxyXG4gIC8qKlxyXG4gICogQ3JlYXRlcyBhIFBvbGljeSBFbmZvcmNlbWVudCBQb2ludCAoUEVQKSBpbnN0YW5jZVxyXG4gICogQHBhcmFtICAgIHtPYmplY3R9ICAgIGNvbnRleHRcclxuICAqL1xyXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgX3RoaXMucGRwID0gbmV3IFBEUChjb250ZXh0KTtcclxuICAgIF90aGlzLmFjdGlvbnNTZXJ2aWNlID0gbmV3IEFjdGlvbnNTZXJ2aWNlKGNvbnRleHQpO1xyXG4gICAgX3RoaXMuY29udGV4dCA9IGNvbnRleHQ7XHJcbiAgICBjb250ZXh0LnBlcCA9IF90aGlzO1xyXG5cclxuICAgIC8vVE9ETyBzaG91bGQgYmUgYWRkZWQgYSB0cmlnZ2VyIHRvIHZlcmlmeSB3aGVuIHRoZSBsb2FkQ29uZmlndXJhdGlvbnMgaXMgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZFxyXG4gICAgY29udGV4dC5sb2FkQ29uZmlndXJhdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogcmV0dXJuIHRoZSBtZXNzYWdlQnVzIGluIHRoaXMgUmVnaXN0cnlcclxuICAqIEBwYXJhbSB7TWVzc2FnZUJ1c30gICAgICAgICAgIG1lc3NhZ2VCdXNcclxuICAqL1xyXG4gIGdldCBtZXNzYWdlQnVzKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBfdGhpcy5jb250ZXh0Lm1lc3NhZ2VCdXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFNldCB0aGUgbWVzc2FnZUJ1cyBpbiB0aGlzIFJlZ2lzdHJ5XHJcbiAgKiBAcGFyYW0ge01lc3NhZ2VCdXN9ICAgICAgICAgICBtZXNzYWdlQnVzXHJcbiAgKi9cclxuICBzZXQgbWVzc2FnZUJ1cyhtZXNzYWdlQnVzKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgX3RoaXMuY29udGV4dC5tZXNzYWdlQnVzID0gbWVzc2FnZUJ1cztcclxuICAgIF90aGlzLmFkZEdVSUxpc3RlbmVycygpO1xyXG4gIH1cclxuXHJcbiAgYWRkR1VJTGlzdGVuZXJzKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBfdGhpcy5jb250ZXh0Lm1lc3NhZ2VCdXMuYWRkTGlzdGVuZXIoX3RoaXMuY29udGV4dC5wZXBVUkwsIChtc2cpID0+IHtcclxuICAgICAgbGV0IGZ1bmNOYW1lID0gbXNnLmJvZHkubWV0aG9kO1xyXG5cclxuICAgICAgbGV0IHJldHVybmVkVmFsdWU7XHJcbiAgICAgIGlmIChmdW5jTmFtZSA9PT0gJ2FkZFRvR3JvdXAnKSB7XHJcbiAgICAgICAgbGV0IGdyb3VwTmFtZSA9IG1zZy5ib2R5LnBhcmFtcy5ncm91cE5hbWU7XHJcbiAgICAgICAgbGV0IHVzZXJFbWFpbCA9IG1zZy5ib2R5LnBhcmFtcy51c2VyRW1haWw7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuYWRkVG9Hcm91cChncm91cE5hbWUsIHVzZXJFbWFpbCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdjcmVhdGVHcm91cCcpIHtcclxuICAgICAgICBsZXQgZ3JvdXBOYW1lID0gbXNnLmJvZHkucGFyYW1zLmdyb3VwTmFtZTtcclxuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC5jcmVhdGVHcm91cChncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnYWRkUG9saWN5Jykge1xyXG4gICAgICAgIGxldCBzb3VyY2UgPSBtc2cuYm9keS5wYXJhbXMuc291cmNlO1xyXG4gICAgICAgIGxldCBrZXkgPSBtc2cuYm9keS5wYXJhbXMua2V5O1xyXG4gICAgICAgIGxldCBwb2xpY3kgPSBtc2cuYm9keS5wYXJhbXMucG9saWN5O1xyXG4gICAgICAgIGxldCBjb21iaW5pbmdBbGdvcml0aG0gPSBtc2cuYm9keS5wYXJhbXMuY29tYmluaW5nQWxnb3JpdGhtO1xyXG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5hZGRQb2xpY3koc291cmNlLCBrZXksIHBvbGljeSwgY29tYmluaW5nQWxnb3JpdGhtKTtcclxuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ2RlbGV0ZUdyb3VwJykge1xyXG4gICAgICAgIGxldCBncm91cE5hbWUgPSBtc2cuYm9keS5wYXJhbXMuZ3JvdXBOYW1lO1xyXG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5jb250ZXh0LmRlbGV0ZUdyb3VwKGdyb3VwTmFtZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdyZW1vdmVQb2xpY3knKSB7XHJcbiAgICAgICAgbGV0IHNvdXJjZSA9IG1zZy5ib2R5LnBhcmFtcy5zb3VyY2U7XHJcbiAgICAgICAgbGV0IGtleSA9IG1zZy5ib2R5LnBhcmFtcy5rZXk7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLnJlbW92ZVBvbGljeShzb3VyY2UsIGtleSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdzYXZlUG9saWNpZXMnKSB7XHJcbiAgICAgICAgbGV0IHNvdXJjZSA9IG1zZy5ib2R5LnBhcmFtcy5zb3VyY2U7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuc2F2ZVBvbGljaWVzKHNvdXJjZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICd1c2VyUG9saWNpZXMnKSB7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQudXNlclBvbGljaWVzO1xyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnYWN0aXZlVXNlclBvbGljeScpIHtcclxuICAgICAgICBsZXQgdXNlclBvbGljeSA9IG1zZy5ib2R5LnBhcmFtcy51c2VyUG9saWN5O1xyXG4gICAgICAgIGlmICh1c2VyUG9saWN5KSB7IF90aGlzLmNvbnRleHQuYWN0aXZlVXNlclBvbGljeSA9IHVzZXJQb2xpY3k7IH1cclxuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC5hY3RpdmVVc2VyUG9saWN5O1xyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAndXNlclBvbGljeScpIHtcclxuICAgICAgICBsZXQga2V5ID0gbXNnLmJvZHkucGFyYW1zLmtleTtcclxuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC51c2VyUG9saWNpZXNba2V5XTtcclxuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ3NhdmVBY3RpdmVQb2xpY3knKSB7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuc2F2ZUFjdGl2ZVBvbGljeSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnZ2V0TXlFbWFpbHMnKSB7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuZ2V0TXlFbWFpbHMoKTtcclxuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ2dldE15SHlwZXJ0aWVzJykge1xyXG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5jb250ZXh0LmdldE15SHlwZXJ0aWVzKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdncm91cHMnKSB7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuZ3JvdXBzO1xyXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnZ2V0R3JvdXBzTmFtZXMnKSB7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuZ2V0R3JvdXBzTmFtZXMoKTtcclxuICAgICAgfSBpZiAoZnVuY05hbWUgPT09ICdyZW1vdmVGcm9tR3JvdXAnKSB7XHJcbiAgICAgICAgbGV0IGdyb3VwTmFtZSA9IG1zZy5ib2R5LnBhcmFtcy5ncm91cE5hbWU7XHJcbiAgICAgICAgbGV0IHVzZXJFbWFpbCA9IG1zZy5ib2R5LnBhcmFtcy51c2VyRW1haWw7XHJcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQucmVtb3ZlRnJvbUdyb3VwKGdyb3VwTmFtZSwgdXNlckVtYWlsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IHZhbHVlID0ge3R5cGU6ICdleGVjdXRlJywgdmFsdWU6IHJldHVybmVkVmFsdWUsIGNvZGU6IDIwMH07XHJcbiAgICAgIGxldCByZXBseU1zZyA9IHtpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCB0bzogbXNnLmZyb20sIGZyb206IG1zZy50bywgYm9keTogdmFsdWV9O1xyXG4gICAgICBfdGhpcy5jb250ZXh0Lm1lc3NhZ2VCdXMucG9zdE1lc3NhZ2UocmVwbHlNc2cpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEFkZHMgYSBwb2xpY3kgdG8gdGhlIFBvbGljeSBFbmZvcmNlbWVudCBQb2ludCAoUEVQKS4gVGhlIHBvbGljeSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgc2VydmljZVxyXG4gICogcHJvdmlkZXIgb3IgYnkgdGhlIHVzZXIuXHJcbiAgKiBAcGFyYW0gICAge1N0cmluZ30gICAgc291cmNlXHJcbiAgKiBAcGFyYW0gICAge1N0cmluZ30gICAga2V5XHJcbiAgKiBAcGFyYW0gICAge09iamVjdH0gICAgcG9saWN5XHJcbiAgKi9cclxuICBhZGRQb2xpY3koc291cmNlLCBrZXksIHBvbGljeSwgY29tYmluaW5nQWxnb3JpdGhtKSB7XHJcbiAgICBpZiAoIXNvdXJjZSkgdGhyb3cgbmV3IEVycm9yKCdzb3VyY2UgaXMgbm90IGRlZmluZWQnKTtcclxuICAgIGlmICgha2V5KSB0aHJvdyBuZXcgRXJyb3IoJ2tleSBpcyBub3QgZGVmaW5lZCcpO1xyXG5cclxuICAgIGlmIChwb2xpY3kgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBwb2xpY3kgPSBuZXcgUG9saWN5KGtleSwgW10sIFtdLCBjb21iaW5pbmdBbGdvcml0aG0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCEocG9saWN5IGluc3RhbmNlb2YgUG9saWN5KSkge1xyXG4gICAgICAgIHBvbGljeSA9IG5ldyBQb2xpY3kocG9saWN5LmtleSwgcG9saWN5LnJ1bGVzLCBwb2xpY3kuYWN0aW9ucywgcG9saWN5LmNvbWJpbmluZ0FsZ29yaXRobSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHNvdXJjZSkge1xyXG4gICAgICBjYXNlICdTRVJWSUNFX1BST1ZJREVSJzpcclxuICAgICAgICB0aGlzLmNvbnRleHQuc2F2ZVBvbGljaWVzKHNvdXJjZSwgcG9saWN5LCBrZXkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdVU0VSJzpcclxuICAgICAgICB0aGlzLmNvbnRleHQudXNlclBvbGljaWVzW2tleV0gPSBwb2xpY3k7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmVQb2xpY2llcyhzb3VyY2UpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRocm93IEVycm9yKCdVbmtub3duIHBvbGljeSBzb3VyY2U6ICcgKyBzb3VyY2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXV0aG9yaXNlKG1lc3NhZ2UsIGlzSW5jb21pbmcpIHtcclxuICAgIC8vIGxvZy5sb2coJ1tQb2xpY3kuUEVQIEF1dGhvcmlzZV0gJywgbWVzc2FnZSk7XHJcbiAgICAvLyBsb2cubG9nKG1lc3NhZ2UpO1xyXG4gICAgaWYgKCFtZXNzYWdlKSB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UgaXMgbm90IGRlZmluZWQnKTtcclxuICAgIGlmICghbWVzc2FnZS5mcm9tKSB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UuZnJvbSBpcyBub3QgZGVmaW5lZCcpO1xyXG4gICAgaWYgKCFtZXNzYWdlLnRvKSB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UudG8gaXMgbm90IGRlZmluZWQnKTtcclxuICAgIGlmICghbWVzc2FnZS50eXBlKSB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UudHlwZSBpcyBub3QgZGVmaW5lZCcpO1xyXG4gICAgbWVzc2FnZS5ib2R5ID0gbWVzc2FnZS5ib2R5IHx8IHt9O1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICBtZXNzYWdlLmJvZHkgPSBtZXNzYWdlLmJvZHkgfHwge307XHJcbiAgICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgICBsZXQgcmVzdWx0ID0gX3RoaXMucGRwLmV2YWx1YXRlUG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZyk7XHJcbiAgICAgIGlmIChyZXN1bHQgPT09ICdOb3QgQXBwbGljYWJsZScpIHtcclxuICAgICAgICByZXN1bHQgPSBfdGhpcy5jb250ZXh0LmRlZmF1bHRCZWhhdmlvdXI7XHJcbiAgICAgICAgbWVzc2FnZS5ib2R5LmF1dGggPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBfdGhpcy5hY3Rpb25zU2VydmljZS5lbmZvcmNlUG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZykudGhlbihtZXNzYWdlcyA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSBpbiBtZXNzYWdlcykge1xyXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2VzW2ldO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICBtZXNzYWdlLmJvZHkuYXV0aCA9IChtZXNzYWdlLmJvZHkuYXV0aCA9PT0gdW5kZWZpbmVkKSA/IHRydWUgOiBtZXNzYWdlLmJvZHkuYXV0aDtcclxuICAgICAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSB7IGJvZHk6IHsgY29kZTogNDAzLCBkZXNjcmlwdGlvbjogJ0Jsb2NrZWQgYnkgcG9saWN5JyB9LCBmcm9tOiBtZXNzYWdlLnRvLCB0bzogbWVzc2FnZS5mcm9tLCB0eXBlOiAncmVzcG9uc2UnIH07XHJcbiAgICAgICAgICAgIHJlamVjdChlcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGF1dGhvcmlzZVN5bmMobWVzc2FnZSkge1xyXG4gICAgbGV0IHJlc3VsdDtcclxuICAgIG1lc3NhZ2UuYm9keSA9IG1lc3NhZ2UuYm9keSB8fCB7fTtcclxuICAgIHJlc3VsdCA9IHRoaXMucGRwLmV2YWx1YXRlUG9saWNpZXMobWVzc2FnZSwgdHJ1ZSk7XHJcbiAgICBpZiAocmVzdWx0ID09PSAnTm90IEFwcGxpY2FibGUnKSB7XHJcbiAgICAgIHJlc3VsdCA9IHRoaXMuY29udGV4dC5kZWZhdWx0QmVoYXZpb3VyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuXHJcbiAgfVxyXG5cclxuICByZW1vdmVQb2xpY3koc291cmNlLCBrZXkpIHtcclxuICAgIGlmICghc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoJ3NvdXJjZSBpcyBub3QgZGVmaW5lZCcpO1xyXG4gICAgaWYgKHNvdXJjZSAhPT0gJyonICYmICFrZXkpIHRocm93IG5ldyBFcnJvcigna2V5IGlzIG5vdCBkZWZpbmVkJyk7XHJcblxyXG4gICAgc3dpdGNoIChzb3VyY2UpIHtcclxuICAgICAgY2FzZSAnKic6XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LnNlcnZpY2VQcm92aWRlclBvbGljeSA9IHt9O1xyXG4gICAgICAgIHRoaXMuY29udGV4dC51c2VyUG9saWNpZXMgPSB7fTtcclxuICAgICAgICB0aGlzLmNvbnRleHQuYWN0aXZlVXNlclBvbGljeSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLmNvbnRleHQuc2F2ZVBvbGljaWVzKCdVU0VSJyk7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmVQb2xpY2llcygnU0VSVklDRV9QUk9WSURFUicpO1xyXG4gICAgICAgIHRoaXMuY29udGV4dC5zYXZlQWN0aXZlUG9saWN5KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1NFUlZJQ0VfUFJPVklERVInOlxyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmNvbnRleHQuc2VydmljZVByb3ZpZGVyUG9saWN5W2tleV07XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmVQb2xpY2llcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdVU0VSJzpcclxuICAgICAgICBkZWxldGUgdGhpcy5jb250ZXh0LnVzZXJQb2xpY2llc1trZXldO1xyXG4gICAgICAgIGlmIChrZXkgPT09IHRoaXMuY29udGV4dC5hY3RpdmVVc2VyUG9saWN5KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnRleHQuYWN0aXZlVXNlclBvbGljeSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgIHRoaXMuY29udGV4dC5zYXZlQWN0aXZlUG9saWN5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29udGV4dC5zYXZlUG9saWNpZXMoJ1VTRVInKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBFcnJvcignVW5rbm93biBwb2xpY3kgc291cmNlOiAnICsgc291cmNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBQRVA7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L1BFUC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7OztBQU5BO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVdBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF0QkE7QUF3QkE7OztBQXZMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUE4S0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///477\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ActionsService = function () {\n function ActionsService(context) {\n (0, _classCallCheck3.default)(this, ActionsService);\n\n this.context = context;\n }\n\n (0, _createClass3.default)(ActionsService, [{\n key: 'enforcePolicies',\n value: function enforcePolicies(message, isIncomingMessage) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n\n var policies = _this.context.getPolicies(message, isIncomingMessage);\n\n if (policies !== undefined) {\n if (policies.serviceProviderPolicy !== undefined) {\n policies.serviceProviderPolicy.enforceActions(_this.context, message).then(function (messages) {\n resolve(messages);\n }, function (error) {\n reject(error);\n });\n } else {\n if (policies.userPolicy !== undefined) {\n policies.userPolicy.enforceActions(_this.context, message).then(function (messages) {\n resolve(messages);\n }, function (error) {\n reject(error);\n });\n } else {\n resolve([message]);\n }\n }\n } else {\n resolve([message]);\n }\n });\n }\n }, {\n key: 'forwardToID',\n value: function forwardToID(message, email) {\n var _this = this;\n if (!_this.context.runtimeRegistry) throw new Error('forward message to given ID is unsupported in this environment');\n\n return new _promise2.default(function (resolve, reject) {\n if (_this.context.runtimeRegistry.hypertiesList[0].hypertyURL === message.to) {\n var splitTo = message.to.split('://');\n if (splitTo[0] !== 'runtime') {\n _this.context.runtimeRegistry.discoverHypertyPerUser(email).then(function (result) {\n message.to = result.hypertyURL;\n message.body.via = undefined;\n resolve(message);\n _this.context.runtimeRegistry._messageBus.postMessage(message);\n }, function (error) {\n reject(error);\n });\n } else {\n resolve(message);\n }\n } else {\n resolve(message);\n }\n });\n }\n }, {\n key: 'forwardToHyperty',\n value: function forwardToHyperty(message, hypertyURL) {\n var _this = this;\n if (!_this.context.runtimeRegistry) throw new Error('forward message to given ID is unsupported in this environment');\n\n return new _promise2.default(function (resolve) {\n if (_this.context.runtimeRegistry.hypertiesList[0].hypertyURL === message.to) {\n var splitTo = message.to.split('://');\n if (splitTo[0] !== 'runtime') {\n message.to = hypertyURL;\n message.body.via = undefined;\n resolve(message);\n _this.context.runtimeRegistry._messageBus.postMessage(message);\n } else {\n resolve(message);\n }\n } else {\n resolve(message);\n }\n });\n }\n }, {\n key: 'sendAutomaticMessage',\n value: function sendAutomaticMessage(message, text) {\n var _this = this;\n return new _promise2.default(function (resolve) {\n var automaticMessage = {\n from: message.to,\n to: message.from,\n body: {\n value: text\n },\n type: message.type\n };\n resolve(message);\n _this.context.runtimeRegistry._messageBus.postMessage(automaticMessage);\n });\n }\n }]);\n return ActionsService;\n}();\n\nexports.default = ActionsService;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDc4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvQWN0aW9uc1NlcnZpY2UuanM/MjliZCJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBBY3Rpb25zU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQpIHtcclxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBlbmZvcmNlUG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZ01lc3NhZ2UpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgbGV0IHBvbGljaWVzID0gX3RoaXMuY29udGV4dC5nZXRQb2xpY2llcyhtZXNzYWdlLCBpc0luY29taW5nTWVzc2FnZSk7XHJcblxyXG4gICAgICBpZiAocG9saWNpZXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmIChwb2xpY2llcy5zZXJ2aWNlUHJvdmlkZXJQb2xpY3kgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgcG9saWNpZXMuc2VydmljZVByb3ZpZGVyUG9saWN5LmVuZm9yY2VBY3Rpb25zKF90aGlzLmNvbnRleHQsIG1lc3NhZ2UpLnRoZW4obWVzc2FnZXMgPT4ge1xyXG4gICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2VzKTtcclxuICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChwb2xpY2llcy51c2VyUG9saWN5ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcG9saWNpZXMudXNlclBvbGljeS5lbmZvcmNlQWN0aW9ucyhfdGhpcy5jb250ZXh0LCBtZXNzYWdlKS50aGVuKG1lc3NhZ2VzID0+IHtcclxuICAgICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2VzKTtcclxuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKFttZXNzYWdlXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUoW21lc3NhZ2VdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmb3J3YXJkVG9JRChtZXNzYWdlLCBlbWFpbCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGlmICghX3RoaXMuY29udGV4dC5ydW50aW1lUmVnaXN0cnkpIHRocm93IG5ldyBFcnJvcignZm9yd2FyZCBtZXNzYWdlIHRvIGdpdmVuIElEIGlzIHVuc3VwcG9ydGVkIGluIHRoaXMgZW52aXJvbm1lbnQnKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAoX3RoaXMuY29udGV4dC5ydW50aW1lUmVnaXN0cnkuaHlwZXJ0aWVzTGlzdFswXS5oeXBlcnR5VVJMID09PSBtZXNzYWdlLnRvKSB7XHJcbiAgICAgICAgbGV0IHNwbGl0VG8gPSAobWVzc2FnZS50bykuc3BsaXQoJzovLycpO1xyXG4gICAgICAgIGlmIChzcGxpdFRvWzBdICE9PSAncnVudGltZScpIHtcclxuICAgICAgICAgIF90aGlzLmNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmRpc2NvdmVySHlwZXJ0eVBlclVzZXIoZW1haWwpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgbWVzc2FnZS50byA9IHJlc3VsdC5oeXBlcnR5VVJMO1xyXG4gICAgICAgICAgICBtZXNzYWdlLmJvZHkudmlhID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlKTtcclxuICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUobWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9yd2FyZFRvSHlwZXJ0eShtZXNzYWdlLCBoeXBlcnR5VVJMKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKCFfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeSkgdGhyb3cgbmV3IEVycm9yKCdmb3J3YXJkIG1lc3NhZ2UgdG8gZ2l2ZW4gSUQgaXMgdW5zdXBwb3J0ZWQgaW4gdGhpcyBlbnZpcm9ubWVudCcpO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBpZiAoX3RoaXMuY29udGV4dC5ydW50aW1lUmVnaXN0cnkuaHlwZXJ0aWVzTGlzdFswXS5oeXBlcnR5VVJMID09PSBtZXNzYWdlLnRvKSB7XHJcbiAgICAgICAgbGV0IHNwbGl0VG8gPSAobWVzc2FnZS50bykuc3BsaXQoJzovLycpO1xyXG4gICAgICAgIGlmIChzcGxpdFRvWzBdICE9PSAncnVudGltZScpIHtcclxuICAgICAgICAgIG1lc3NhZ2UudG8gPSBoeXBlcnR5VVJMO1xyXG4gICAgICAgICAgbWVzc2FnZS5ib2R5LnZpYSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7XHJcbiAgICAgICAgICBfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZW5kQXV0b21hdGljTWVzc2FnZShtZXNzYWdlLCB0ZXh0KSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIGxldCBhdXRvbWF0aWNNZXNzYWdlID0ge1xyXG4gICAgICAgIGZyb206IG1lc3NhZ2UudG8sXHJcbiAgICAgICAgdG86IG1lc3NhZ2UuZnJvbSxcclxuICAgICAgICBib2R5OiB7XHJcbiAgICAgICAgICB2YWx1ZTogdGV4dFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHlwZTogbWVzc2FnZS50eXBlXHJcbiAgICAgIH07XHJcbiAgICAgIHJlc29sdmUobWVzc2FnZSk7XHJcbiAgICAgIF90aGlzLmNvbnRleHQucnVudGltZVJlZ2lzdHJ5Ll9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKGF1dG9tYXRpY01lc3NhZ2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQWN0aW9uc1NlcnZpY2U7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L0FjdGlvbnNTZXJ2aWNlLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBTkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///478\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Operators = __webpack_require__(145);\n\nvar _Operators2 = _interopRequireDefault(_Operators);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* The Policy Decision Point (PDP) decides if a message is to be authorised by checking a set of\r\n* policies. The resource to be verified is specified in the first word of the 'condition' field of\r\n* a Policy object. The implementation that verifies if the message is compliant with a policy is\r\n* specified in a hashtable to allow dynamic definition of the implementation, providing\r\n* extensibility to the Policy Engine functionalities.\r\n*/\nvar PDP = function () {\n function PDP(context) {\n (0, _classCallCheck3.default)(this, PDP);\n\n this.context = context;\n this.operators = new _Operators2.default();\n }\n\n (0, _createClass3.default)(PDP, [{\n key: 'evaluatePolicies',\n value: function evaluatePolicies(message, isIncomingMessage) {\n var policies = this.context.getPolicies(message, isIncomingMessage);\n var result = 'Not Applicable';\n if (policies !== undefined) {\n result = this.evaluatePolicy(message, policies.serviceProviderPolicy, isIncomingMessage);\n if (result || result === 'Not Applicable') {\n var userResult = this.evaluatePolicy(message, policies.userPolicy, isIncomingMessage);\n if (userResult !== 'Not Applicable') {\n result = userResult;\n }\n }\n }\n\n return result;\n }\n }, {\n key: 'evaluatePolicy',\n value: function evaluatePolicy(message, policy, isIncoming) {\n var result = 'Not Applicable';\n if (policy) {\n result = policy.evaluateRules(this.context, message, isIncoming);\n }\n\n return result;\n }\n }]);\n return PDP;\n}();\n\nexports.default = PDP;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDc5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUERQLmpzP2U5YmEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9wZXJhdG9ycyBmcm9tICcuL09wZXJhdG9ycyc7XHJcblxyXG4vKipcclxuKiBUaGUgUG9saWN5IERlY2lzaW9uIFBvaW50IChQRFApIGRlY2lkZXMgaWYgYSBtZXNzYWdlIGlzIHRvIGJlIGF1dGhvcmlzZWQgYnkgY2hlY2tpbmcgYSBzZXQgb2ZcclxuKiBwb2xpY2llcy4gVGhlIHJlc291cmNlIHRvIGJlIHZlcmlmaWVkIGlzIHNwZWNpZmllZCBpbiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgJ2NvbmRpdGlvbicgZmllbGQgb2ZcclxuKiBhIFBvbGljeSBvYmplY3QuIFRoZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHZlcmlmaWVzIGlmIHRoZSBtZXNzYWdlIGlzIGNvbXBsaWFudCB3aXRoIGEgcG9saWN5IGlzXHJcbiogc3BlY2lmaWVkIGluIGEgaGFzaHRhYmxlIHRvIGFsbG93IGR5bmFtaWMgZGVmaW5pdGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24sIHByb3ZpZGluZ1xyXG4qIGV4dGVuc2liaWxpdHkgdG8gdGhlIFBvbGljeSBFbmdpbmUgZnVuY3Rpb25hbGl0aWVzLlxyXG4qL1xyXG5jbGFzcyBQRFAge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb250ZXh0KSB7XHJcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xyXG4gICAgdGhpcy5vcGVyYXRvcnMgPSBuZXcgT3BlcmF0b3JzKCk7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVBvbGljaWVzKG1lc3NhZ2UsIGlzSW5jb21pbmdNZXNzYWdlKSB7XHJcbiAgICBsZXQgcG9saWNpZXMgPSB0aGlzLmNvbnRleHQuZ2V0UG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZ01lc3NhZ2UpO1xyXG4gICAgbGV0IHJlc3VsdCA9ICdOb3QgQXBwbGljYWJsZSc7XHJcbiAgICBpZiAocG9saWNpZXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXN1bHQgPSB0aGlzLmV2YWx1YXRlUG9saWN5KG1lc3NhZ2UsIHBvbGljaWVzLnNlcnZpY2VQcm92aWRlclBvbGljeSwgaXNJbmNvbWluZ01lc3NhZ2UpO1xyXG4gICAgICBpZiAocmVzdWx0IHx8IHJlc3VsdCA9PT0gJ05vdCBBcHBsaWNhYmxlJykge1xyXG4gICAgICAgIGxldCB1c2VyUmVzdWx0ID0gdGhpcy5ldmFsdWF0ZVBvbGljeShtZXNzYWdlLCBwb2xpY2llcy51c2VyUG9saWN5LCBpc0luY29taW5nTWVzc2FnZSk7XHJcbiAgICAgICAgaWYgKHVzZXJSZXN1bHQgIT09ICdOb3QgQXBwbGljYWJsZScpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IHVzZXJSZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlUG9saWN5KG1lc3NhZ2UsIHBvbGljeSwgaXNJbmNvbWluZykge1xyXG4gICAgbGV0IHJlc3VsdCA9ICdOb3QgQXBwbGljYWJsZSc7XHJcbiAgICBpZiAocG9saWN5KSB7XHJcbiAgICAgIHJlc3VsdCA9IHBvbGljeS5ldmFsdWF0ZVJ1bGVzKHRoaXMuY29udGV4dCwgbWVzc2FnZSwgaXNJbmNvbWluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBQRFA7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L1BEUC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7OztBQUNBOzs7Ozs7O0FBT0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///479\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _AllowOverrides = __webpack_require__(207);\n\nvar _AllowOverrides2 = _interopRequireDefault(_AllowOverrides);\n\nvar _BlockOverrides = __webpack_require__(208);\n\nvar _BlockOverrides2 = _interopRequireDefault(_BlockOverrides);\n\nvar _FirstApplicable = __webpack_require__(209);\n\nvar _FirstApplicable2 = _interopRequireDefault(_FirstApplicable);\n\nvar _Rule = __webpack_require__(481);\n\nvar _Rule2 = _interopRequireDefault(_Rule);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Policy = function () {\n function Policy(key, rules, actions, combiningAlgorithm) {\n (0, _classCallCheck3.default)(this, Policy);\n\n if (!key) throw new Error('key is not defined');\n if (!actions) throw new Error('actions are not defined');\n\n this.actions = actions;\n this.key = key;\n this._setRules(rules);\n this._setCombiningAlgorithm(combiningAlgorithm);\n }\n\n (0, _createClass3.default)(Policy, [{\n key: 'addAction',\n value: function addAction(method, param) {\n this.actions.push({ method: method, param: param });\n }\n }, {\n key: 'createRule',\n value: function createRule(decision, condition, scope, target, priority) {\n if (priority === undefined) {\n priority = this.getLastPriority() + 1;\n }\n var rule = new _Rule2.default(decision, condition, scope, target, priority);\n this.rules.push(rule);\n }\n }, {\n key: 'deleteRule',\n value: function deleteRule(rule) {\n var indexToRemove = this.rules.indexOf(rule);\n this.rules.splice(indexToRemove, 1);\n }\n }, {\n key: 'enforceActions',\n value: function enforceActions(context, message) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n var results = [];\n if (_this.actions.length !== 0) {\n for (var i in _this.actions) {\n var result = context.pep.actionsService[_this.actions[i].method](message, _this.actions[i].param);\n results.push(result);\n }\n _promise2.default.all(results).then(function (messages) {\n resolve(messages);\n }, function (error) {\n reject(error);\n });\n } else {\n resolve([message]);\n }\n });\n }\n }, {\n key: 'evaluateRules',\n value: function evaluateRules(context, message, isIncoming) {\n var results = [];\n for (var i in this.rules) {\n results.push(this.rules[i].evaluate(context, message, isIncoming));\n }\n\n return this.combiningAlgorithm.combine(results);\n }\n }, {\n key: 'getLastPriority',\n value: function getLastPriority() {\n var priorities = [];\n\n if (this.rules.length !== 0) {\n for (var i in this.rules) {\n priorities.push(this.rules[i].priority);\n }\n return Math.max.apply(Math, priorities);\n } else {\n return -1;\n }\n }\n }, {\n key: 'getRuleByPriority',\n value: function getRuleByPriority(priority) {\n for (var i in this.rules) {\n if (String(this.rules[i].priority) === String(priority)) {\n return this.rules[i];\n }\n }\n throw Error('Rule with priority ' + priority + ' does not exist!');\n }\n }, {\n key: '_setCombiningAlgorithm',\n value: function _setCombiningAlgorithm(combiningAlgorithm) {\n if (!combiningAlgorithm) {\n combiningAlgorithm = 'blockOverrides';\n }\n switch (combiningAlgorithm) {\n case 'blockOverrides':\n this.combiningAlgorithm = new _BlockOverrides2.default();\n break;\n case 'allowOverrides':\n this.combiningAlgorithm = new _AllowOverrides2.default();\n break;\n case 'firstApplicable':\n this.combiningAlgorithm = new _FirstApplicable2.default();\n break;\n default:\n throw Error('Unknown algorithm: ' + combiningAlgorithm);\n }\n }\n }, {\n key: '_setRules',\n value: function _setRules(rules) {\n this.rules = [];\n\n for (var i in rules) {\n var rule = rules[i];\n if (rule.priority === undefined) {\n rule.priority = this.getLastPriority() + 1;\n }\n if (!(rule instanceof _Rule2.default)) {\n rule = new _Rule2.default(rule.decision, rule.condition, rule.scope, rule.target, rule.priority);\n }\n this.rules.push(rule);\n }\n }\n }, {\n key: 'sortRules',\n value: function sortRules() {\n return this.rules.sort(function (a, b) {\n var x = a.priority;var y = b.priority;\n return x < y ? -1 : x > y ? 1 : 0;\n });\n }\n }]);\n return Policy;\n}();\n\nexports.default = Policy;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDgwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUG9saWN5LmpzPzk4NDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFsbG93T3ZlcnJpZGVzIGZyb20gJy4vY29tYmluaW5nQWxnb3JpdGhtcy9BbGxvd092ZXJyaWRlcyc7XHJcbmltcG9ydCBCbG9ja092ZXJyaWRlcyBmcm9tICcuL2NvbWJpbmluZ0FsZ29yaXRobXMvQmxvY2tPdmVycmlkZXMnO1xyXG5pbXBvcnQgRmlyc3RBcHBsaWNhYmxlIGZyb20gJy4vY29tYmluaW5nQWxnb3JpdGhtcy9GaXJzdEFwcGxpY2FibGUnO1xyXG5pbXBvcnQgUnVsZSBmcm9tICcuL1J1bGUnO1xyXG5cclxuY2xhc3MgUG9saWN5IHtcclxuXHJcbiAgY29uc3RydWN0b3Ioa2V5LCBydWxlcywgYWN0aW9ucywgY29tYmluaW5nQWxnb3JpdGhtKSB7XHJcbiAgICBpZiAoIWtleSkgdGhyb3cgbmV3IEVycm9yKCdrZXkgaXMgbm90IGRlZmluZWQnKTtcclxuICAgIGlmICghYWN0aW9ucykgdGhyb3cgbmV3IEVycm9yKCdhY3Rpb25zIGFyZSBub3QgZGVmaW5lZCcpO1xyXG5cclxuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnM7XHJcbiAgICB0aGlzLmtleSA9IGtleTtcclxuICAgIHRoaXMuX3NldFJ1bGVzKHJ1bGVzKTtcclxuICAgIHRoaXMuX3NldENvbWJpbmluZ0FsZ29yaXRobShjb21iaW5pbmdBbGdvcml0aG0pO1xyXG4gIH1cclxuXHJcbiAgYWRkQWN0aW9uKG1ldGhvZCwgcGFyYW0pIHtcclxuICAgIHRoaXMuYWN0aW9ucy5wdXNoKHsgbWV0aG9kOiBtZXRob2QsIHBhcmFtOiBwYXJhbSB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVJ1bGUoZGVjaXNpb24sIGNvbmRpdGlvbiwgc2NvcGUsIHRhcmdldCwgcHJpb3JpdHkpIHtcclxuICAgIGlmIChwcmlvcml0eSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHByaW9yaXR5ID0gdGhpcy5nZXRMYXN0UHJpb3JpdHkoKSArIDE7XHJcbiAgICB9XHJcbiAgICBsZXQgcnVsZSA9IG5ldyBSdWxlKGRlY2lzaW9uLCBjb25kaXRpb24sIHNjb3BlLCB0YXJnZXQsIHByaW9yaXR5KTtcclxuICAgIHRoaXMucnVsZXMucHVzaChydWxlKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVJ1bGUocnVsZSkge1xyXG4gICAgbGV0IGluZGV4VG9SZW1vdmUgPSB0aGlzLnJ1bGVzLmluZGV4T2YocnVsZSk7XHJcbiAgICB0aGlzLnJ1bGVzLnNwbGljZShpbmRleFRvUmVtb3ZlLCAxKTtcclxuICB9XHJcblxyXG4gIGVuZm9yY2VBY3Rpb25zKGNvbnRleHQsIG1lc3NhZ2UpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRzID0gW107XHJcbiAgICAgIGlmICh0aGlzLmFjdGlvbnMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSBpbiB0aGlzLmFjdGlvbnMpIHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSBjb250ZXh0LnBlcC5hY3Rpb25zU2VydmljZVt0aGlzLmFjdGlvbnNbaV0ubWV0aG9kXShtZXNzYWdlLCB0aGlzLmFjdGlvbnNbaV0ucGFyYW0pO1xyXG4gICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFByb21pc2UuYWxsKHJlc3VsdHMpLnRoZW4oKG1lc3NhZ2VzKSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKG1lc3NhZ2VzKTtcclxuICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUoW21lc3NhZ2VdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVJ1bGVzKGNvbnRleHQsIG1lc3NhZ2UsIGlzSW5jb21pbmcpIHtcclxuICAgIGxldCByZXN1bHRzID0gW107XHJcbiAgICBmb3IgKGxldCBpIGluIHRoaXMucnVsZXMpIHtcclxuICAgICAgcmVzdWx0cy5wdXNoKHRoaXMucnVsZXNbaV0uZXZhbHVhdGUoY29udGV4dCwgbWVzc2FnZSwgaXNJbmNvbWluZykpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmNvbWJpbmluZ0FsZ29yaXRobS5jb21iaW5lKHJlc3VsdHMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFzdFByaW9yaXR5KCkge1xyXG4gICAgbGV0IHByaW9yaXRpZXMgPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5ydWxlcy5sZW5ndGggIT09IDApIHtcclxuICAgICAgZm9yIChsZXQgaSBpbiB0aGlzLnJ1bGVzKSB7XHJcbiAgICAgICAgcHJpb3JpdGllcy5wdXNoKHRoaXMucnVsZXNbaV0ucHJpb3JpdHkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBNYXRoLm1heC5hcHBseShNYXRoLCBwcmlvcml0aWVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAtMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJ1bGVCeVByaW9yaXR5KHByaW9yaXR5KSB7XHJcbiAgICBmb3IgKGxldCBpIGluIHRoaXMucnVsZXMpIHtcclxuICAgICAgaWYgKFN0cmluZyh0aGlzLnJ1bGVzW2ldLnByaW9yaXR5KSA9PT0gU3RyaW5nKHByaW9yaXR5KSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJ1bGVzW2ldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aHJvdyBFcnJvcignUnVsZSB3aXRoIHByaW9yaXR5ICcgKyBwcmlvcml0eSArICcgZG9lcyBub3QgZXhpc3QhJyk7XHJcbiAgfVxyXG5cclxuICBfc2V0Q29tYmluaW5nQWxnb3JpdGhtKGNvbWJpbmluZ0FsZ29yaXRobSkge1xyXG4gICAgaWYgKCFjb21iaW5pbmdBbGdvcml0aG0pIHtcclxuICAgICAgY29tYmluaW5nQWxnb3JpdGhtID0gJ2Jsb2NrT3ZlcnJpZGVzJztcclxuICAgIH1cclxuICAgIHN3aXRjaCAoY29tYmluaW5nQWxnb3JpdGhtKSB7XHJcbiAgICAgIGNhc2UgJ2Jsb2NrT3ZlcnJpZGVzJzpcclxuICAgICAgICB0aGlzLmNvbWJpbmluZ0FsZ29yaXRobSA9IG5ldyBCbG9ja092ZXJyaWRlcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhbGxvd092ZXJyaWRlcyc6XHJcbiAgICAgICAgdGhpcy5jb21iaW5pbmdBbGdvcml0aG0gPSBuZXcgQWxsb3dPdmVycmlkZXMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZmlyc3RBcHBsaWNhYmxlJzpcclxuICAgICAgICB0aGlzLmNvbWJpbmluZ0FsZ29yaXRobSA9IG5ldyBGaXJzdEFwcGxpY2FibGUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBFcnJvcignVW5rbm93biBhbGdvcml0aG06ICcgKyBjb21iaW5pbmdBbGdvcml0aG0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgX3NldFJ1bGVzKHJ1bGVzKSB7XHJcbiAgICB0aGlzLnJ1bGVzID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgaSBpbiBydWxlcykge1xyXG4gICAgICBsZXQgcnVsZSA9IHJ1bGVzW2ldO1xyXG4gICAgICBpZiAocnVsZS5wcmlvcml0eSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcnVsZS5wcmlvcml0eSA9IHRoaXMuZ2V0TGFzdFByaW9yaXR5KCkgKyAxO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghKHJ1bGUgaW5zdGFuY2VvZiBSdWxlKSkge1xyXG4gICAgICAgIHJ1bGUgPSBuZXcgUnVsZShydWxlLmRlY2lzaW9uLCBydWxlLmNvbmRpdGlvbiwgcnVsZS5zY29wZSwgcnVsZS50YXJnZXQsIHJ1bGUucHJpb3JpdHkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucnVsZXMucHVzaChydWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNvcnRSdWxlcygpIHtcclxuICAgIHJldHVybiB0aGlzLnJ1bGVzLnNvcnQoZnVuY3Rpb24oYSwgYikge1xyXG4gICAgICBsZXQgeCA9IGEucHJpb3JpdHk7IGxldCB5ID0gYi5wcmlvcml0eTtcclxuICAgICAgcmV0dXJuICgoeCA8IHkpID8gLTEgOiAoKHggPiB5KSA/IDEgOiAwKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBQb2xpY3k7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L1BvbGljeS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7Ozs7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFYQTtBQWFBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///480\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _AdvancedCondition = __webpack_require__(482);\n\nvar _AdvancedCondition2 = _interopRequireDefault(_AdvancedCondition);\n\nvar _Condition = __webpack_require__(146);\n\nvar _Condition2 = _interopRequireDefault(_Condition);\n\nvar _utils = __webpack_require__(14);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Rule = function () {\n function Rule(decision, condition, scope, target, priority) {\n (0, _classCallCheck3.default)(this, Rule);\n\n this.decision = decision;\n this.setCondition(condition);\n this.priority = priority;\n this.scope = scope;\n this.target = target;\n }\n\n (0, _createClass3.default)(Rule, [{\n key: 'setCondition',\n value: function setCondition(condition) {\n if (!(condition instanceof _Condition2.default || condition instanceof _AdvancedCondition2.default || condition instanceof _AdvancedCondition2.default)) {\n var attribute = condition.attribute;\n switch (attribute) {\n case 'subscription':\n this.condition = new _AdvancedCondition2.default(condition.attribute, condition.operator, condition.params);\n break;\n case undefined:\n this.condition = new _AdvancedCondition2.default(condition);\n break;\n default:\n this.condition = new _Condition2.default(condition.attribute, condition.operator, condition.params);\n }\n } else {\n this.condition = condition;\n }\n }\n }, {\n key: 'evaluate',\n value: function evaluate(context, message, isIncoming) {\n var field = isIncoming ? message.to : message.from;\n var hypertyName = void 0;\n switch (this.scope) {\n case 'global':\n break;\n\n case 'hyperty':\n if ((0, _utils.isDataObjectURL)(field)) {\n var reporter = context.runtimeRegistry.getReporterURLSynchonous((0, _utils.removePathFromURL)(field));\n if (reporter !== undefined) {\n hypertyName = context.runtimeRegistry.getHypertyName(reporter);\n }\n } else {\n if (field.split('://')[0] === 'hyperty') {\n hypertyName = context.runtimeRegistry.getHypertyName((0, _utils.removePathFromURL)(field));\n }\n }\n if (hypertyName === this.target) {\n break;\n }\n\n return 'Not Applicable';\n\n case 'identity':\n var owner = void 0;\n\n if ((0, _utils.isDataObjectURL)(field)) {\n var _reporter = context.runtimeRegistry.getReporterURLSynchonous((0, _utils.removePathFromURL)(field));\n owner = context.runtimeRegistry.getHypertyOwner(_reporter);\n } else {\n if (field.split('://')[0] === 'hyperty') {\n owner = context.runtimeRegistry.getHypertyOwner((0, _utils.removePathFromURL)(field));\n }\n }\n if (owner !== undefined) {\n owner = (0, _utils.getUserEmailFromURL)(owner);\n }\n if (owner === this.target) {\n break;\n }\n\n return 'Not Applicable';\n }\n\n if (this.condition.isApplicable(context, message, this.scope, this.target)) {\n return this.decision;\n } else {\n return 'Not Applicable';\n }\n }\n }]);\n return Rule;\n}();\n\nexports.default = Rule;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDgxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUnVsZS5qcz9jOWU4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBZHZhbmNlZENvbmRpdGlvbiBmcm9tICcuL2NvbmRpdGlvbnMvQWR2YW5jZWRDb25kaXRpb24nO1xyXG5pbXBvcnQgQ29uZGl0aW9uIGZyb20gJy4vY29uZGl0aW9ucy9Db25kaXRpb24nO1xyXG5pbXBvcnQge2dldFVzZXJFbWFpbEZyb21VUkwsIGlzRGF0YU9iamVjdFVSTCwgcmVtb3ZlUGF0aEZyb21VUkx9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcclxuaW1wb3J0IFN1YnNjcmlwdGlvbkNvbmRpdGlvbiBmcm9tICcuL2NvbmRpdGlvbnMvQWR2YW5jZWRDb25kaXRpb24nO1xyXG5cclxuY2xhc3MgUnVsZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGRlY2lzaW9uLCBjb25kaXRpb24sIHNjb3BlLCB0YXJnZXQsIHByaW9yaXR5KSB7XHJcbiAgICB0aGlzLmRlY2lzaW9uID0gZGVjaXNpb247XHJcbiAgICB0aGlzLnNldENvbmRpdGlvbihjb25kaXRpb24pO1xyXG4gICAgdGhpcy5wcmlvcml0eSA9IHByaW9yaXR5O1xyXG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xyXG4gICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XHJcbiAgfVxyXG5cclxuICBzZXRDb25kaXRpb24oY29uZGl0aW9uKSB7XHJcbiAgICBpZiAoIShjb25kaXRpb24gaW5zdGFuY2VvZiBDb25kaXRpb24gfHwgY29uZGl0aW9uIGluc3RhbmNlb2YgU3Vic2NyaXB0aW9uQ29uZGl0aW9uIHx8IGNvbmRpdGlvbiBpbnN0YW5jZW9mIEFkdmFuY2VkQ29uZGl0aW9uKSkge1xyXG4gICAgICBsZXQgYXR0cmlidXRlID0gY29uZGl0aW9uLmF0dHJpYnV0ZTtcclxuICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcclxuICAgICAgICBjYXNlICdzdWJzY3JpcHRpb24nOlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb24gPSBuZXcgU3Vic2NyaXB0aW9uQ29uZGl0aW9uKGNvbmRpdGlvbi5hdHRyaWJ1dGUsIGNvbmRpdGlvbi5vcGVyYXRvciwgY29uZGl0aW9uLnBhcmFtcyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIHVuZGVmaW5lZDpcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uID0gbmV3IEFkdmFuY2VkQ29uZGl0aW9uKGNvbmRpdGlvbik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb24gPSBuZXcgQ29uZGl0aW9uKGNvbmRpdGlvbi5hdHRyaWJ1dGUsIGNvbmRpdGlvbi5vcGVyYXRvciwgY29uZGl0aW9uLnBhcmFtcyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gY29uZGl0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGUoY29udGV4dCwgbWVzc2FnZSwgaXNJbmNvbWluZykge1xyXG4gICAgbGV0IGZpZWxkID0gKGlzSW5jb21pbmcpID8gbWVzc2FnZS50byA6IG1lc3NhZ2UuZnJvbTtcclxuICAgIGxldCBoeXBlcnR5TmFtZTtcclxuICAgIHN3aXRjaCAodGhpcy5zY29wZSkge1xyXG4gICAgICBjYXNlICdnbG9iYWwnOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnaHlwZXJ0eSc6XHJcbiAgICAgICAgaWYgKGlzRGF0YU9iamVjdFVSTChmaWVsZCkpIHtcclxuICAgICAgICAgIGxldCByZXBvcnRlciA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldFJlcG9ydGVyVVJMU3luY2hvbm91cyhyZW1vdmVQYXRoRnJvbVVSTChmaWVsZCkpO1xyXG4gICAgICAgICAgaWYgKHJlcG9ydGVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaHlwZXJ0eU5hbWUgPSBjb250ZXh0LnJ1bnRpbWVSZWdpc3RyeS5nZXRIeXBlcnR5TmFtZShyZXBvcnRlcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChmaWVsZC5zcGxpdCgnOi8vJylbMF0gPT09ICdoeXBlcnR5Jykge1xyXG4gICAgICAgICAgICBoeXBlcnR5TmFtZSA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldEh5cGVydHlOYW1lKHJlbW92ZVBhdGhGcm9tVVJMKGZpZWxkKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChoeXBlcnR5TmFtZSA9PT0gdGhpcy50YXJnZXQpIHtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuICdOb3QgQXBwbGljYWJsZSc7XHJcblxyXG4gICAgICBjYXNlICdpZGVudGl0eSc6XHJcbiAgICAgICAgbGV0IG93bmVyO1xyXG5cclxuICAgICAgICBpZiAoaXNEYXRhT2JqZWN0VVJMKGZpZWxkKSkge1xyXG4gICAgICAgICAgbGV0IHJlcG9ydGVyID0gY29udGV4dC5ydW50aW1lUmVnaXN0cnkuZ2V0UmVwb3J0ZXJVUkxTeW5jaG9ub3VzKHJlbW92ZVBhdGhGcm9tVVJMKGZpZWxkKSk7XHJcbiAgICAgICAgICBvd25lciA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldEh5cGVydHlPd25lcihyZXBvcnRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChmaWVsZC5zcGxpdCgnOi8vJylbMF0gPT09ICdoeXBlcnR5Jykge1xyXG4gICAgICAgICAgICBvd25lciA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldEh5cGVydHlPd25lcihyZW1vdmVQYXRoRnJvbVVSTChmaWVsZCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3duZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgb3duZXIgPSBnZXRVc2VyRW1haWxGcm9tVVJMKG93bmVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG93bmVyID09PSB0aGlzLnRhcmdldCkge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gJ05vdCBBcHBsaWNhYmxlJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25kaXRpb24uaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UsIHRoaXMuc2NvcGUsIHRoaXMudGFyZ2V0KSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kZWNpc2lvbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnTm90IEFwcGxpY2FibGUnO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUnVsZTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvUnVsZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFFQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXZDQTtBQUNBO0FBeUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFHQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///481\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Condition = __webpack_require__(146);\n\nvar _Condition2 = _interopRequireDefault(_Condition);\n\nvar _Operators = __webpack_require__(145);\n\nvar _Operators2 = _interopRequireDefault(_Operators);\n\nvar _SubscriptionCondition = __webpack_require__(483);\n\nvar _SubscriptionCondition2 = _interopRequireDefault(_SubscriptionCondition);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AdvancedCondition = function () {\n function AdvancedCondition(condition) {\n (0, _classCallCheck3.default)(this, AdvancedCondition);\n\n this.operators = new _Operators2.default();\n if (condition.operators !== undefined) {\n condition = condition.condition;\n }\n condition = this.buildCondition(condition);\n this.condition = condition;\n }\n\n (0, _createClass3.default)(AdvancedCondition, [{\n key: 'buildCondition',\n value: function buildCondition(condition) {\n if (Array.isArray(condition[1])) {\n condition[1] = this.buildCondition(condition[1]);\n } else {\n if (condition[1].attribute === 'subscription') {\n condition[1] = new _SubscriptionCondition2.default(condition[1].attribute, condition[1].operator, condition[1].params);\n } else {\n condition[1] = new _Condition2.default(condition[1].attribute, condition[1].operator, condition[1].params);\n }\n }\n\n if (condition[2] !== undefined) {\n if (Array.isArray(condition[2])) {\n condition[2] = this.buildCondition(condition[2]);\n } else {\n if (condition[2].attribute === 'subscription') {\n condition[2] = new _SubscriptionCondition2.default(condition[2].attribute, condition[2].operator, condition[2].params);\n } else {\n condition[2] = new _Condition2.default(condition[2].attribute, condition[2].operator, condition[2].params);\n }\n }\n }\n return condition;\n }\n }, {\n key: 'isApplicable',\n value: function isApplicable(context, message, scope, target, operator, left, right) {\n if (!operator) {\n operator = this.condition[0];\n left = this.condition[1];\n right = this.condition[2];\n }\n\n while (!(left instanceof _Condition2.default) & !(left instanceof _SubscriptionCondition2.default) & typeof left !== 'boolean') {\n left = this.isApplicable(context, message, scope, target, left[0], left[1], left[2]);\n }\n if (right !== undefined) {\n while (!(right instanceof _Condition2.default) & !(right instanceof _SubscriptionCondition2.default) & typeof right !== 'boolean') {\n right = this.isApplicable(context, message, scope, target, right[0], right[1], right[2]);\n }\n }\n\n var resultLeft = typeof left === 'boolean' ? left : left.isApplicable(context, message, scope, target);\n var resultRight = void 0;\n if (right !== undefined) {\n resultRight = typeof right === 'boolean' ? right : right.isApplicable(context, message, scope, target);\n }\n return this.operators[operator]([resultLeft, resultRight]);\n }\n }]);\n return AdvancedCondition;\n}();\n\nexports.default = AdvancedCondition;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDgyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29uZGl0aW9ucy9BZHZhbmNlZENvbmRpdGlvbi5qcz9iZDBmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb25kaXRpb24gZnJvbSAnLi9Db25kaXRpb24nO1xyXG5pbXBvcnQgT3BlcmF0b3JzIGZyb20gJy4uL09wZXJhdG9ycyc7XHJcbmltcG9ydCBTdWJzY3JpcHRpb25Db25kaXRpb24gZnJvbSAnLi9TdWJzY3JpcHRpb25Db25kaXRpb24nO1xyXG5cclxuY2xhc3MgQWR2YW5jZWRDb25kaXRpb24ge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25kaXRpb24pIHtcclxuICAgIHRoaXMub3BlcmF0b3JzID0gbmV3IE9wZXJhdG9ycygpO1xyXG4gICAgaWYgKGNvbmRpdGlvbi5vcGVyYXRvcnMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25kaXRpb24gPSBjb25kaXRpb24uY29uZGl0aW9uO1xyXG4gICAgfVxyXG4gICAgY29uZGl0aW9uID0gdGhpcy5idWlsZENvbmRpdGlvbihjb25kaXRpb24pO1xyXG4gICAgdGhpcy5jb25kaXRpb24gPSBjb25kaXRpb247XHJcbiAgfVxyXG5cclxuICBidWlsZENvbmRpdGlvbihjb25kaXRpb24pIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmRpdGlvblsxXSkpIHtcclxuICAgICAgY29uZGl0aW9uWzFdID0gdGhpcy5idWlsZENvbmRpdGlvbihjb25kaXRpb25bMV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGNvbmRpdGlvblsxXS5hdHRyaWJ1dGUgPT09ICdzdWJzY3JpcHRpb24nKSB7XHJcbiAgICAgICAgY29uZGl0aW9uWzFdID0gbmV3IFN1YnNjcmlwdGlvbkNvbmRpdGlvbihjb25kaXRpb25bMV0uYXR0cmlidXRlLCBjb25kaXRpb25bMV0ub3BlcmF0b3IsIGNvbmRpdGlvblsxXS5wYXJhbXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbmRpdGlvblsxXSA9IG5ldyBDb25kaXRpb24oY29uZGl0aW9uWzFdLmF0dHJpYnV0ZSwgY29uZGl0aW9uWzFdLm9wZXJhdG9yLCBjb25kaXRpb25bMV0ucGFyYW1zKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb25kaXRpb25bMl0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25kaXRpb25bMl0pKSB7XHJcbiAgICAgICAgY29uZGl0aW9uWzJdID0gdGhpcy5idWlsZENvbmRpdGlvbihjb25kaXRpb25bMl0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjb25kaXRpb25bMl0uYXR0cmlidXRlID09PSAnc3Vic2NyaXB0aW9uJykge1xyXG4gICAgICAgICAgY29uZGl0aW9uWzJdID0gbmV3IFN1YnNjcmlwdGlvbkNvbmRpdGlvbihjb25kaXRpb25bMl0uYXR0cmlidXRlLCBjb25kaXRpb25bMl0ub3BlcmF0b3IsIGNvbmRpdGlvblsyXS5wYXJhbXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25kaXRpb25bMl0gPSBuZXcgQ29uZGl0aW9uKGNvbmRpdGlvblsyXS5hdHRyaWJ1dGUsIGNvbmRpdGlvblsyXS5vcGVyYXRvciwgY29uZGl0aW9uWzJdLnBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29uZGl0aW9uO1xyXG4gIH1cclxuXHJcbiAgaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UsIHNjb3BlLCB0YXJnZXQsIG9wZXJhdG9yLCBsZWZ0LCByaWdodCkge1xyXG4gICAgaWYgKCFvcGVyYXRvcikge1xyXG4gICAgICBvcGVyYXRvciA9IHRoaXMuY29uZGl0aW9uWzBdO1xyXG4gICAgICBsZWZ0ID0gdGhpcy5jb25kaXRpb25bMV07XHJcbiAgICAgIHJpZ2h0ID0gdGhpcy5jb25kaXRpb25bMl07XHJcbiAgICB9XHJcblxyXG4gICAgd2hpbGUgKCEobGVmdCBpbnN0YW5jZW9mIENvbmRpdGlvbikgJiAhKGxlZnQgaW5zdGFuY2VvZiBTdWJzY3JpcHRpb25Db25kaXRpb24pICYgKHR5cGVvZiBsZWZ0ICE9PSAnYm9vbGVhbicpKSB7XHJcbiAgICAgIGxlZnQgPSB0aGlzLmlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlLCBzY29wZSwgdGFyZ2V0LCBsZWZ0WzBdLCBsZWZ0WzFdLCBsZWZ0WzJdKTtcclxuICAgIH1cclxuICAgIGlmIChyaWdodCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHdoaWxlICghKHJpZ2h0IGluc3RhbmNlb2YgQ29uZGl0aW9uKSAmICEocmlnaHQgaW5zdGFuY2VvZiBTdWJzY3JpcHRpb25Db25kaXRpb24pICYgKHR5cGVvZiByaWdodCAhPT0gJ2Jvb2xlYW4nKSkge1xyXG4gICAgICAgIHJpZ2h0ID0gdGhpcy5pc0FwcGxpY2FibGUoY29udGV4dCwgbWVzc2FnZSwgc2NvcGUsIHRhcmdldCwgcmlnaHRbMF0sIHJpZ2h0WzFdLCByaWdodFsyXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgcmVzdWx0TGVmdCA9ICh0eXBlb2YgbGVmdCA9PT0gJ2Jvb2xlYW4nKSA/IGxlZnQgOiBsZWZ0LmlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlLCBzY29wZSwgdGFyZ2V0KTtcclxuICAgIGxldCByZXN1bHRSaWdodDtcclxuICAgIGlmIChyaWdodCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJlc3VsdFJpZ2h0ID0gKHR5cGVvZiByaWdodCA9PT0gJ2Jvb2xlYW4nKSA/IHJpZ2h0IDogcmlnaHQuaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UsIHNjb3BlLCB0YXJnZXQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMub3BlcmF0b3JzW29wZXJhdG9yXShbcmVzdWx0TGVmdCwgcmVzdWx0UmlnaHRdKTtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBBZHZhbmNlZENvbmRpdGlvbjtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvY29uZGl0aW9ucy9BZHZhbmNlZENvbmRpdGlvbi5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7OztBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///482\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(60);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(68);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = __webpack_require__(484);\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = __webpack_require__(69);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Condition2 = __webpack_require__(146);\n\nvar _Condition3 = _interopRequireDefault(_Condition2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* @author Ana Caldeira \r\n* @classdesc Class to represent a subscription condition and evaluate its applicability.\r\n*/\nvar SubscriptionCondition = function (_Condition) {\n (0, _inherits3.default)(SubscriptionCondition, _Condition);\n\n /**\r\n * Creates a new SubscriptionCondition.\r\n * @class\r\n * @param {string} attribute\r\n * @param {string} operator\r\n * @param {*} params\r\n */\n function SubscriptionCondition(attribute, operator, params) {\n (0, _classCallCheck3.default)(this, SubscriptionCondition);\n return (0, _possibleConstructorReturn3.default)(this, (SubscriptionCondition.__proto__ || (0, _getPrototypeOf2.default)(SubscriptionCondition)).call(this, attribute, operator, params));\n }\n\n /**\r\n * Verifies if the subscription condition is applicable to the message. First, verifies if the message is of the subscription type; second, verifies if the message is from a remote runtime to guarantee that the subscription is being validated in the destination runtime; third, verifies if the subscription preference is met.\r\n * @param {Object} context environment where the Policy Engine is being used\r\n * @param {Object} message\r\n */\n\n\n (0, _createClass3.default)(SubscriptionCondition, [{\n key: 'isApplicable',\n value: function isApplicable(context, message) {\n var isSubscription = message.type === 'subscribe';\n var isFromRemoteSM = context.isFromRemoteSM(message.from);\n if (isSubscription & isFromRemoteSM) {\n return (0, _get3.default)(SubscriptionCondition.prototype.__proto__ || (0, _getPrototypeOf2.default)(SubscriptionCondition.prototype), 'isApplicable', this).call(this, context, message);\n } else {\n return false;\n }\n }\n }]);\n return SubscriptionCondition;\n}(_Condition3.default); /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\nexports.default = SubscriptionCondition;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDgzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29uZGl0aW9ucy9TdWJzY3JpcHRpb25Db25kaXRpb24uanM/YTkwMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxyXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxyXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXHJcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xyXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxyXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXHJcbipcclxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuKlxyXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbipcclxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKiovXHJcblxyXG5pbXBvcnQgQ29uZGl0aW9uIGZyb20gJy4vQ29uZGl0aW9uJztcclxuXHJcbi8qKlxyXG4qIEBhdXRob3IgQW5hIENhbGRlaXJhIDxhbmEuY2FsZGVpcmFAdGVjbmljby51bGlzYm9hLnB0PlxyXG4qIEBjbGFzc2Rlc2MgQ2xhc3MgdG8gcmVwcmVzZW50IGEgc3Vic2NyaXB0aW9uIGNvbmRpdGlvbiBhbmQgZXZhbHVhdGUgaXRzIGFwcGxpY2FiaWxpdHkuXHJcbiovXHJcbmNsYXNzIFN1YnNjcmlwdGlvbkNvbmRpdGlvbiBleHRlbmRzIENvbmRpdGlvbiB7XHJcblxyXG4gIC8qKlxyXG4gICogQ3JlYXRlcyBhIG5ldyBTdWJzY3JpcHRpb25Db25kaXRpb24uXHJcbiAgKiBAY2xhc3NcclxuICAqIEBwYXJhbSAge3N0cmluZ30gIGF0dHJpYnV0ZVxyXG4gICogQHBhcmFtICB7c3RyaW5nfSAgb3BlcmF0b3JcclxuICAqIEBwYXJhbSAgeyp9ICAgICAgIHBhcmFtc1xyXG4gICovXHJcbiAgY29uc3RydWN0b3IoYXR0cmlidXRlLCBvcGVyYXRvciwgcGFyYW1zKSB7XHJcbiAgICBzdXBlcihhdHRyaWJ1dGUsIG9wZXJhdG9yLCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBWZXJpZmllcyBpZiB0aGUgc3Vic2NyaXB0aW9uIGNvbmRpdGlvbiBpcyBhcHBsaWNhYmxlIHRvIHRoZSBtZXNzYWdlLiBGaXJzdCwgdmVyaWZpZXMgaWYgdGhlIG1lc3NhZ2UgaXMgb2YgdGhlIHN1YnNjcmlwdGlvbiB0eXBlOyBzZWNvbmQsIHZlcmlmaWVzIGlmIHRoZSBtZXNzYWdlIGlzIGZyb20gYSByZW1vdGUgcnVudGltZSB0byBndWFyYW50ZWUgdGhhdCB0aGUgc3Vic2NyaXB0aW9uIGlzIGJlaW5nIHZhbGlkYXRlZCBpbiB0aGUgZGVzdGluYXRpb24gcnVudGltZTsgdGhpcmQsIHZlcmlmaWVzIGlmIHRoZSBzdWJzY3JpcHRpb24gcHJlZmVyZW5jZSBpcyBtZXQuXHJcbiAgKiBAcGFyYW0gIHtPYmplY3R9ICAgIGNvbnRleHQgICBlbnZpcm9ubWVudCB3aGVyZSB0aGUgUG9saWN5IEVuZ2luZSBpcyBiZWluZyB1c2VkXHJcbiAgKiBAcGFyYW0gIHtPYmplY3R9ICAgIG1lc3NhZ2VcclxuICAqL1xyXG4gIGlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlKSB7XHJcbiAgICBsZXQgaXNTdWJzY3JpcHRpb24gPSBtZXNzYWdlLnR5cGUgPT09ICdzdWJzY3JpYmUnO1xyXG4gICAgbGV0IGlzRnJvbVJlbW90ZVNNID0gY29udGV4dC5pc0Zyb21SZW1vdGVTTShtZXNzYWdlLmZyb20pO1xyXG4gICAgaWYgKGlzU3Vic2NyaXB0aW9uICYgaXNGcm9tUmVtb3RlU00pIHtcclxuICAgICAgcmV0dXJuIHN1cGVyLmlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTdWJzY3JpcHRpb25Db25kaXRpb247XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L2NvbmRpdGlvbnMvU3Vic2NyaXB0aW9uQ29uZGl0aW9uLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7QUFDQTs7Ozs7QUFDQTs7OztBQUlBOzs7QUFFQTs7Ozs7OztBQU9BO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUF2REE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkRBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///483\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _getPrototypeOf = __webpack_require__(60);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _getOwnPropertyDescriptor = __webpack_require__(485);\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = (0, _getOwnPropertyDescriptor2.default)(object, property);\n\n if (desc === undefined) {\n var parent = (0, _getPrototypeOf2.default)(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if ("value" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDg0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9nZXQuanM/Yzg0YiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9nZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpO1xuXG52YXIgX2dldFByb3RvdHlwZU9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldFByb3RvdHlwZU9mKTtcblxudmFyIF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yXCIpO1xuXG52YXIgX2dldE93blByb3BlcnR5RGVzY3JpcHRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiBnZXQob2JqZWN0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpIHtcbiAgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuICB2YXIgZGVzYyA9ICgwLCBfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yMi5kZWZhdWx0KShvYmplY3QsIHByb3BlcnR5KTtcblxuICBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIHBhcmVudCA9ICgwLCBfZ2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKG9iamVjdCk7XG5cbiAgICBpZiAocGFyZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ2V0KHBhcmVudCwgcHJvcGVydHksIHJlY2VpdmVyKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoXCJ2YWx1ZVwiIGluIGRlc2MpIHtcbiAgICByZXR1cm4gZGVzYy52YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7XG5cbiAgICBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTtcbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvZ2V0LmpzXG4vLyBtb2R1bGUgaWQgPSA0ODRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///484\n')},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(486), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDg1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzPzJiYTEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2dldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1xuLy8gbW9kdWxlIGlkID0gNDg1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///485\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(487);\nvar $Object = __webpack_require__(13).Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDg2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzPzcyNzkiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICByZXR1cm4gJE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDQ4NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///486\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(45);\nvar $getOwnPropertyDescriptor = __webpack_require__(142).f;\n\n__webpack_require__(98)('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDg3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzPzg4ODkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKVxudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodG9JT2JqZWN0KGl0KSwga2V5KTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDQ4N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///487\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(46);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _getPrototypeOf = __webpack_require__(60);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(68);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(69);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _Bus2 = __webpack_require__(204);\n\nvar _Bus3 = _interopRequireDefault(_Bus2);\n\nvar _Pipeline = __webpack_require__(489);\n\nvar _Pipeline2 = _interopRequireDefault(_Pipeline);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('MessageBus'); /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\n// Log system\n\n/**\r\n* @author micaelpedrosa@gmail.com\r\n* Message BUS Interface is an extension of the Bus\r\n* It doesn't support the default '*' listener, instead it uses the registry.resolve(..)\r\n*/\nvar MessageBus = function (_Bus) {\n (0, _inherits3.default)(MessageBus, _Bus);\n\n /* private\r\n _registry: Registry\r\n _forwards: { : { fl: MsgListener, sandboxToUrls: Map(Sandbox, [to-url]), urlToSandbox: { to-url: Sandbox } } }\r\n _pipeline: Pipeline\r\n */\n\n //TODO: future optimization\n //1. message batch processing with setInterval\n //2. resolve default gateway/protostub with register.resolve\n\n function MessageBus(registry) {\n (0, _classCallCheck3.default)(this, MessageBus);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (MessageBus.__proto__ || (0, _getPrototypeOf2.default)(MessageBus)).call(this));\n\n _this2._registry = registry;\n _this2._forwards = {};\n\n _this2._pipelineIn = new _Pipeline2.default(function (error) {\n log.error('PIPELINE-ERROR: ', (0, _stringify2.default)(error));\n });\n\n _this2._pipelineOut = new _Pipeline2.default(function (error) {\n log.error('PIPELINE-ERROR: ', (0, _stringify2.default)(error));\n });\n return _this2;\n }\n\n (0, _createClass3.default)(MessageBus, [{\n key: 'postMessage',\n\n\n /**\r\n * Post a message for routing. It will first search for a listener, if there is no one, it sends to a external routing using the _onPostMessage.\r\n * External routing use the registry.resolve(..) method to decide the destination sandbox.\r\n * @param {Message} inMsg JSON with mandatory Message structure {id, type, from, to}\r\n * @param {Callback} responseCallback Optional callback if a response is expected from the request. A response will be always sent, even if it is a \"Timeout\".\r\n * @return {number} the Message id\r\n */\n value: function postMessage(inMsg, responseCallback, timeout) {\n log.info('onPOSTMessage: ', inMsg);\n var _this = this;\n\n var deliver = function deliver(msg) {\n\n _this._responseCallback(inMsg, responseCallback, timeout);\n\n if (!_this._onResponse(msg)) {\n var itemList = _this._subscriptions[msg.to];\n if (itemList) {\n //do not publish on default address, because of loopback cycle\n _this._publishOn(itemList, msg);\n } else {\n //if there is no listener, send to external interface\n _this._onPostMessage(msg);\n }\n }\n };\n\n _this._genId(inMsg);\n\n if (_this._isToProcess(inMsg)) {\n var isIncoming = _this._isIncomingMessage(inMsg);\n\n if (isIncoming) _this._pipelineIn.process(inMsg, deliver);else _this._pipelineOut.process(inMsg, deliver);\n } else deliver(inMsg);\n\n return inMsg.id;\n }\n }, {\n key: '_isToProcess',\n value: function _isToProcess(message) {\n var schemasToIgnore = ['domain', 'domain-idp', 'global', 'hyperty-runtime', 'runtime'];\n var splitFrom = message.from.split('://');\n var fromSchema = splitFrom[0];\n var splitTo = message.to.split('://');\n var toSchema = splitTo[0];\n var from = message.from;\n var to = message.to;\n\n // Signalling messages between P2P Stubs don't have to be verified. FFS\n\n if (message.body && message.body.source) {\n from = message.body.source;\n }\n\n if (message.body && message.body.subscriber) {\n from = message.body.subscriber;\n }\n\n if (from.indexOf('/p2phandler/') !== -1 || from.indexOf('/p2prequester/') !== -1 || to.indexOf('/p2phandler/') !== -1 || to.indexOf('/p2prequester/') !== -1) {\n return false;\n }\n\n if (this._registry.isLocal(from) && this._registry.isLocal(message.to)) return false;\n\n if (message.from === fromSchema || message.to === toSchema || message.type === 'read' || message.type === 'response' || message.from.includes('hyperty://') && message.type === 'delete') {\n return false;\n } else {\n return schemasToIgnore.indexOf(fromSchema) === -1 || schemasToIgnore.indexOf(toSchema) === -1;\n }\n }\n }, {\n key: '_isIncomingMessage',\n value: function _isIncomingMessage(message) {\n var from = void 0;\n\n if (message.type === 'forward') {\n log.info('[MessageBus - isIncomingMessage] - message.type: ', message.type);\n from = message.body.from;\n } else if (message.hasOwnProperty('body') && message.body.hasOwnProperty('source') && message.body.source) {\n log.info('[MessageBus - isIncomingMessage] - message.body.source: ', message.body.source);\n from = message.body.source;\n } else if (message.hasOwnProperty('body') && message.body.hasOwnProperty('subscriber') && message.body.subscriber) {\n //TODO: this subscriber validation should not exist, because is outdated\n //TODO: the syncher and syncher manager not following the correct spec;\n log.info('[MessageBus - isIncomingMessage] - message.body.subscriber: ', message.body.subscriber);\n from = message.body.subscriber;\n } else if (message.hasOwnProperty('body') && message.body.hasOwnProperty('reporter') && message.body.reporter) {\n //TODO: this subscriber validation should not exist, because is outdated\n //TODO: the syncher and syncher manager not following the correct spec;\n log.info('[MessageBus - isIncomingMessage] - message.body.reporter: ', message.body.reporter);\n from = message.body.reporter;\n } else {\n log.info('[MessageBus - isIncomingMessage] - message.from ', message.from);\n from = message.from;\n }\n\n log.info('[MessageBus - isIncomingMessage] - check if isLocal: ', from);\n return !this._registry.isLocal(from);\n }\n\n /**\r\n * Adds an external publish address listener. Every message for the address will be forwarded to the external routing by _onPostMessage.\r\n * This means, even if there is a listener for the address, it will also send the message to the external routing.\r\n * @param {URL} from Publish address.\r\n */\n\n }, {\n key: 'addPublish',\n value: function addPublish(from) {\n var _this3 = this;\n\n var _this = this;\n\n //verify if forward exist\n var refCount = _this._forwards[from];\n if (!refCount) {\n var forwardListener = _this.addListener(from, function (msg) {\n log.info('MB-PUBLISH: ( ' + from + ' )');\n _this._onPostMessage(msg);\n });\n\n refCount = {\n counter: 0,\n fl: forwardListener,\n remove: function remove() {\n _this3.counter--;\n if (_this3.counter === 0) {\n _this3.fl.remove();\n delete _this._forwards[from];\n }\n }\n };\n\n _this._forwards[from] = refCount;\n }\n\n refCount.counter++;\n return refCount;\n }\n\n /**\r\n * Adds a forward listener for a message destination. Every message reaching an address will be also sent to the forward address.\r\n * @param {URL} from Message destination, it's actually the field \"to\" of the message.\r\n * @param {URL} to Forward address.\r\n */\n\n }, {\n key: 'addForward',\n value: function addForward(from, to) {\n var _this = this;\n\n return _this.addListener(from, function (msg) {\n log.info('MB-FORWARD: ( ' + from + ' to ' + to + ' )');\n _this.forward(to, msg);\n });\n }\n\n /**\r\n * Just forward's a message to the forward address. Listeners should be available for the forward address.\r\n * @param {URL} url Forward address.\r\n * @param {Message} msg Message to forward\r\n */\n\n }, {\n key: 'forward',\n value: function forward(url, msg) {\n var _this = this;\n\n var itemList = _this._subscriptions[url];\n if (itemList) {\n _this._publishOn(itemList, msg);\n }\n }\n\n //default route, if there are no listeners available for a message destination.\n\n }, {\n key: '_onPostMessage',\n value: function _onPostMessage(msg) {\n var _this = this;\n\n //resolve external protostub...\n _this._registry.resolve(msg).then(function (route, msg2route) {\n if (msg2route) _this.forward(route, msg2route);else _this.forward(route, msg);\n }).catch(function (e) {\n log.error('RESOLVE-ERROR: ', e);\n });\n }\n }, {\n key: 'pipelineIn',\n get: function get() {\n return this._pipelineIn;\n }\n }, {\n key: 'pipelineOut',\n get: function get() {\n return this._pipelineOut;\n }\n }]);\n return MessageBus;\n}(_Bus3.default);\n\nexports.default = MessageBus;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDg4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvTWVzc2FnZUJ1cy5qcz8zYTNhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuXHJcbi8vIExvZyBzeXN0ZW1cclxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcclxubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ01lc3NhZ2VCdXMnKTtcclxuXHJcbmltcG9ydCBCdXMgZnJvbSAnLi9CdXMnO1xyXG5pbXBvcnQgUGlwZWxpbmUgZnJvbSAnLi9QaXBlbGluZSc7XHJcblxyXG4vKipcclxuKiBAYXV0aG9yIG1pY2FlbHBlZHJvc2FAZ21haWwuY29tXHJcbiogTWVzc2FnZSBCVVMgSW50ZXJmYWNlIGlzIGFuIGV4dGVuc2lvbiBvZiB0aGUgQnVzXHJcbiogSXQgZG9lc24ndCBzdXBwb3J0IHRoZSBkZWZhdWx0ICcqJyBsaXN0ZW5lciwgaW5zdGVhZCBpdCB1c2VzIHRoZSByZWdpc3RyeS5yZXNvbHZlKC4uKVxyXG4qL1xyXG5jbGFzcyBNZXNzYWdlQnVzIGV4dGVuZHMgQnVzIHtcclxuICAvKiBwcml2YXRlXHJcbiAgX3JlZ2lzdHJ5OiBSZWdpc3RyeVxyXG4gIF9mb3J3YXJkczogeyA8ZnJvbS11cmw+OiB7IGZsOiBNc2dMaXN0ZW5lciwgc2FuZGJveFRvVXJsczogTWFwKFNhbmRib3gsIFt0by11cmxdKSwgdXJsVG9TYW5kYm94OiB7IHRvLXVybDogU2FuZGJveCB9IH0gfVxyXG5cclxuICBfcGlwZWxpbmU6IFBpcGVsaW5lXHJcbiAgKi9cclxuXHJcbiAgLy9UT0RPOiBmdXR1cmUgb3B0aW1pemF0aW9uXHJcbiAgLy8xLiBtZXNzYWdlIGJhdGNoIHByb2Nlc3Npbmcgd2l0aCBzZXRJbnRlcnZhbFxyXG4gIC8vMi4gcmVzb2x2ZSBkZWZhdWx0IGdhdGV3YXkvcHJvdG9zdHViIHdpdGggcmVnaXN0ZXIucmVzb2x2ZVxyXG5cclxuICBjb25zdHJ1Y3RvcihyZWdpc3RyeSkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuX3JlZ2lzdHJ5ID0gcmVnaXN0cnk7XHJcbiAgICB0aGlzLl9mb3J3YXJkcyA9IHt9O1xyXG5cclxuICAgIHRoaXMuX3BpcGVsaW5lSW4gPSBuZXcgUGlwZWxpbmUoKGVycm9yKSA9PiB7XHJcbiAgICAgIGxvZy5lcnJvcignUElQRUxJTkUtRVJST1I6ICcsIEpTT04uc3RyaW5naWZ5KGVycm9yKSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9waXBlbGluZU91dCA9IG5ldyBQaXBlbGluZSgoZXJyb3IpID0+IHtcclxuICAgICAgbG9nLmVycm9yKCdQSVBFTElORS1FUlJPUjogJywgSlNPTi5zdHJpbmdpZnkoZXJyb3IpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBpcGVsaW5lSW4oKSB7IHJldHVybiB0aGlzLl9waXBlbGluZUluOyB9XHJcblxyXG4gIGdldCBwaXBlbGluZU91dCgpIHsgcmV0dXJuIHRoaXMuX3BpcGVsaW5lT3V0OyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvc3QgYSBtZXNzYWdlIGZvciByb3V0aW5nLiBJdCB3aWxsIGZpcnN0IHNlYXJjaCBmb3IgYSBsaXN0ZW5lciwgaWYgdGhlcmUgaXMgbm8gb25lLCBpdCBzZW5kcyB0byBhIGV4dGVybmFsIHJvdXRpbmcgdXNpbmcgdGhlIF9vblBvc3RNZXNzYWdlLlxyXG4gICAqIEV4dGVybmFsIHJvdXRpbmcgdXNlIHRoZSByZWdpc3RyeS5yZXNvbHZlKC4uKSBtZXRob2QgdG8gZGVjaWRlIHRoZSBkZXN0aW5hdGlvbiBzYW5kYm94LlxyXG4gICAqIEBwYXJhbSAge01lc3NhZ2V9IGluTXNnICAgICAgICAgICAgSlNPTiB3aXRoIG1hbmRhdG9yeSBNZXNzYWdlIHN0cnVjdHVyZSB7aWQsIHR5cGUsIGZyb20sIHRvfVxyXG4gICAqIEBwYXJhbSAge0NhbGxiYWNrfSByZXNwb25zZUNhbGxiYWNrIE9wdGlvbmFsIGNhbGxiYWNrIGlmIGEgcmVzcG9uc2UgaXMgZXhwZWN0ZWQgZnJvbSB0aGUgcmVxdWVzdC4gQSByZXNwb25zZSB3aWxsIGJlIGFsd2F5cyBzZW50LCBldmVuIGlmIGl0IGlzIGEgXCJUaW1lb3V0XCIuXHJcbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAgICAgICAgICAgIHRoZSBNZXNzYWdlIGlkXHJcbiAgICovXHJcbiAgcG9zdE1lc3NhZ2UoaW5Nc2csIHJlc3BvbnNlQ2FsbGJhY2ssIHRpbWVvdXQpIHtcclxuICAgIGxvZy5pbmZvKCdvblBPU1RNZXNzYWdlOiAnLCBpbk1zZyk7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBkZWxpdmVyID0gKG1zZykgPT4ge1xyXG5cclxuICAgICAgICAgIF90aGlzLl9yZXNwb25zZUNhbGxiYWNrKGluTXNnLCByZXNwb25zZUNhbGxiYWNrLCB0aW1lb3V0KTtcclxuXHJcbiAgICAgICAgICBpZiAoIV90aGlzLl9vblJlc3BvbnNlKG1zZykpIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW1MaXN0ID0gX3RoaXMuX3N1YnNjcmlwdGlvbnNbbXNnLnRvXTtcclxuICAgICAgICAgICAgaWYgKGl0ZW1MaXN0KSB7XHJcbiAgICAgICAgICAgICAgLy9kbyBub3QgcHVibGlzaCBvbiBkZWZhdWx0IGFkZHJlc3MsIGJlY2F1c2Ugb2YgbG9vcGJhY2sgY3ljbGVcclxuICAgICAgICAgICAgICBfdGhpcy5fcHVibGlzaE9uKGl0ZW1MaXN0LCBtc2cpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vaWYgdGhlcmUgaXMgbm8gbGlzdGVuZXIsIHNlbmQgdG8gZXh0ZXJuYWwgaW50ZXJmYWNlXHJcbiAgICAgICAgICAgICAgX3RoaXMuX29uUG9zdE1lc3NhZ2UobXNnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIF90aGlzLl9nZW5JZChpbk1zZyk7XHJcblxyXG4gICAgaWYgKF90aGlzLl9pc1RvUHJvY2Vzcyhpbk1zZykpIHtcclxuICAgICAgbGV0IGlzSW5jb21pbmcgPSBfdGhpcy5faXNJbmNvbWluZ01lc3NhZ2UoaW5Nc2cpO1xyXG5cclxuICAgICAgaWYgKGlzSW5jb21pbmcpIF90aGlzLl9waXBlbGluZUluLnByb2Nlc3MoaW5Nc2csIGRlbGl2ZXIpO1xyXG4gICAgICBlbHNlIF90aGlzLl9waXBlbGluZU91dC5wcm9jZXNzKGluTXNnLCBkZWxpdmVyKTtcclxuICAgIH0gZWxzZSBkZWxpdmVyKGluTXNnKTtcclxuXHJcbiAgICByZXR1cm4gaW5Nc2cuaWQ7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIF9pc1RvUHJvY2VzcyhtZXNzYWdlKSB7XHJcbiAgICBsZXQgc2NoZW1hc1RvSWdub3JlID0gWydkb21haW4nLCAnZG9tYWluLWlkcCcsICdnbG9iYWwnLCAnaHlwZXJ0eS1ydW50aW1lJywgJ3J1bnRpbWUnXTtcclxuICAgIGxldCBzcGxpdEZyb20gPSAobWVzc2FnZS5mcm9tKS5zcGxpdCgnOi8vJyk7XHJcbiAgICBsZXQgZnJvbVNjaGVtYSA9IHNwbGl0RnJvbVswXTtcclxuICAgIGxldCBzcGxpdFRvID0gKG1lc3NhZ2UudG8pLnNwbGl0KCc6Ly8nKTtcclxuICAgIGxldCB0b1NjaGVtYSA9ICBzcGxpdFRvWzBdO1xyXG4gICAgbGV0IGZyb20gPSBtZXNzYWdlLmZyb207XHJcbiAgICBsZXQgdG8gPSBtZXNzYWdlLnRvO1xyXG5cclxuICAgIC8vIFNpZ25hbGxpbmcgbWVzc2FnZXMgYmV0d2VlbiBQMlAgU3R1YnMgZG9uJ3QgaGF2ZSB0byBiZSB2ZXJpZmllZC4gRkZTXHJcblxyXG4gICAgaWYgKG1lc3NhZ2UuYm9keSAmJiBtZXNzYWdlLmJvZHkuc291cmNlKSB7XHJcbiAgICAgIGZyb20gPSBtZXNzYWdlLmJvZHkuc291cmNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtZXNzYWdlLmJvZHkgJiYgbWVzc2FnZS5ib2R5LnN1YnNjcmliZXIpIHtcclxuICAgICAgZnJvbSA9IG1lc3NhZ2UuYm9keS5zdWJzY3JpYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmcm9tLmluZGV4T2YoJy9wMnBoYW5kbGVyLycpICE9PSAtMSB8fCBmcm9tLmluZGV4T2YoJy9wMnByZXF1ZXN0ZXIvJykgIT09IC0xIHx8IHRvLmluZGV4T2YoJy9wMnBoYW5kbGVyLycpICE9PSAtMSB8fCB0by5pbmRleE9mKCcvcDJwcmVxdWVzdGVyLycpICE9PSAtMSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX3JlZ2lzdHJ5LmlzTG9jYWwoZnJvbSkgJiYgdGhpcy5fcmVnaXN0cnkuaXNMb2NhbChtZXNzYWdlLnRvKSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChtZXNzYWdlLmZyb20gPT09IGZyb21TY2hlbWEgfHwgbWVzc2FnZS50byA9PT0gdG9TY2hlbWEgfHwgbWVzc2FnZS50eXBlID09PSAncmVhZCcgfHwgbWVzc2FnZS50eXBlID09PSAncmVzcG9uc2UnIHx8IChtZXNzYWdlLmZyb20uaW5jbHVkZXMoJ2h5cGVydHk6Ly8nKSAmJiBtZXNzYWdlLnR5cGUgPT09ICdkZWxldGUnKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gc2NoZW1hc1RvSWdub3JlLmluZGV4T2YoZnJvbVNjaGVtYSkgPT09IC0xIHx8IHNjaGVtYXNUb0lnbm9yZS5pbmRleE9mKHRvU2NoZW1hKSA9PT0gLTE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfaXNJbmNvbWluZ01lc3NhZ2UobWVzc2FnZSkge1xyXG4gICAgbGV0IGZyb207XHJcblxyXG4gICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ2ZvcndhcmQnKSB7XHJcbiAgICAgIGxvZy5pbmZvKCdbTWVzc2FnZUJ1cyAtIGlzSW5jb21pbmdNZXNzYWdlXSAtIG1lc3NhZ2UudHlwZTogJywgbWVzc2FnZS50eXBlKTtcclxuICAgICAgZnJvbSA9IG1lc3NhZ2UuYm9keS5mcm9tO1xyXG4gICAgfSBlbHNlIGlmIChtZXNzYWdlLmhhc093blByb3BlcnR5KCdib2R5JykgJiYgbWVzc2FnZS5ib2R5Lmhhc093blByb3BlcnR5KCdzb3VyY2UnKSAmJiBtZXNzYWdlLmJvZHkuc291cmNlKSB7XHJcbiAgICAgIGxvZy5pbmZvKCdbTWVzc2FnZUJ1cyAtIGlzSW5jb21pbmdNZXNzYWdlXSAtIG1lc3NhZ2UuYm9keS5zb3VyY2U6ICcsIG1lc3NhZ2UuYm9keS5zb3VyY2UpO1xyXG4gICAgICBmcm9tID0gbWVzc2FnZS5ib2R5LnNvdXJjZTtcclxuICAgIH0gZWxzZSBpZiAobWVzc2FnZS5oYXNPd25Qcm9wZXJ0eSgnYm9keScpICYmIG1lc3NhZ2UuYm9keS5oYXNPd25Qcm9wZXJ0eSgnc3Vic2NyaWJlcicpICYmIG1lc3NhZ2UuYm9keS5zdWJzY3JpYmVyKSB7XHJcbiAgICAgIC8vVE9ETzogdGhpcyBzdWJzY3JpYmVyIHZhbGlkYXRpb24gc2hvdWxkIG5vdCBleGlzdCwgYmVjYXVzZSBpcyBvdXRkYXRlZFxyXG4gICAgICAvL1RPRE86IHRoZSBzeW5jaGVyIGFuZCBzeW5jaGVyIG1hbmFnZXIgbm90IGZvbGxvd2luZyB0aGUgY29ycmVjdCBzcGVjO1xyXG4gICAgICBsb2cuaW5mbygnW01lc3NhZ2VCdXMgLSBpc0luY29taW5nTWVzc2FnZV0gLSBtZXNzYWdlLmJvZHkuc3Vic2NyaWJlcjogJywgbWVzc2FnZS5ib2R5LnN1YnNjcmliZXIpO1xyXG4gICAgICBmcm9tID0gbWVzc2FnZS5ib2R5LnN1YnNjcmliZXI7XHJcbiAgICB9ICBlbHNlIGlmIChtZXNzYWdlLmhhc093blByb3BlcnR5KCdib2R5JykgJiYgbWVzc2FnZS5ib2R5Lmhhc093blByb3BlcnR5KCdyZXBvcnRlcicpICYmIG1lc3NhZ2UuYm9keS5yZXBvcnRlcikge1xyXG4gICAgICAvL1RPRE86IHRoaXMgc3Vic2NyaWJlciB2YWxpZGF0aW9uIHNob3VsZCBub3QgZXhpc3QsIGJlY2F1c2UgaXMgb3V0ZGF0ZWRcclxuICAgICAgLy9UT0RPOiB0aGUgc3luY2hlciBhbmQgc3luY2hlciBtYW5hZ2VyIG5vdCBmb2xsb3dpbmcgdGhlIGNvcnJlY3Qgc3BlYztcclxuICAgICAgbG9nLmluZm8oJ1tNZXNzYWdlQnVzIC0gaXNJbmNvbWluZ01lc3NhZ2VdIC0gbWVzc2FnZS5ib2R5LnJlcG9ydGVyOiAnLCBtZXNzYWdlLmJvZHkucmVwb3J0ZXIpO1xyXG4gICAgICBmcm9tID0gbWVzc2FnZS5ib2R5LnJlcG9ydGVyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbG9nLmluZm8oJ1tNZXNzYWdlQnVzIC0gaXNJbmNvbWluZ01lc3NhZ2VdIC0gbWVzc2FnZS5mcm9tICcsIG1lc3NhZ2UuZnJvbSk7XHJcbiAgICAgIGZyb20gPSBtZXNzYWdlLmZyb207XHJcbiAgICB9XHJcblxyXG4gICAgbG9nLmluZm8oJ1tNZXNzYWdlQnVzIC0gaXNJbmNvbWluZ01lc3NhZ2VdIC0gY2hlY2sgaWYgaXNMb2NhbDogJywgZnJvbSk7XHJcbiAgICByZXR1cm4gIXRoaXMuX3JlZ2lzdHJ5LmlzTG9jYWwoZnJvbSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBhbiBleHRlcm5hbCBwdWJsaXNoIGFkZHJlc3MgbGlzdGVuZXIuIEV2ZXJ5IG1lc3NhZ2UgZm9yIHRoZSBhZGRyZXNzIHdpbGwgYmUgZm9yd2FyZGVkIHRvIHRoZSBleHRlcm5hbCByb3V0aW5nIGJ5IF9vblBvc3RNZXNzYWdlLlxyXG4gICAqIFRoaXMgbWVhbnMsIGV2ZW4gaWYgdGhlcmUgaXMgYSBsaXN0ZW5lciBmb3IgdGhlIGFkZHJlc3MsIGl0IHdpbGwgYWxzbyBzZW5kIHRoZSBtZXNzYWdlIHRvIHRoZSBleHRlcm5hbCByb3V0aW5nLlxyXG4gICAqIEBwYXJhbSB7VVJMfSBmcm9tIFB1Ymxpc2ggYWRkcmVzcy5cclxuICAgKi9cclxuICBhZGRQdWJsaXNoKGZyb20pIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgLy92ZXJpZnkgaWYgZm9yd2FyZCBleGlzdFxyXG4gICAgbGV0IHJlZkNvdW50ID0gX3RoaXMuX2ZvcndhcmRzW2Zyb21dO1xyXG4gICAgaWYgKCFyZWZDb3VudCkge1xyXG4gICAgICBsZXQgZm9yd2FyZExpc3RlbmVyID0gX3RoaXMuYWRkTGlzdGVuZXIoZnJvbSwgKG1zZykgPT4ge1xyXG4gICAgICAgIGxvZy5pbmZvKCdNQi1QVUJMSVNIOiAoICcgKyBmcm9tICsgJyApJyk7XHJcbiAgICAgICAgX3RoaXMuX29uUG9zdE1lc3NhZ2UobXNnKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZWZDb3VudCA9IHtcclxuICAgICAgICBjb3VudGVyOiAwLFxyXG4gICAgICAgIGZsOiBmb3J3YXJkTGlzdGVuZXIsXHJcbiAgICAgICAgcmVtb3ZlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvdW50ZXItLTtcclxuICAgICAgICAgIGlmICh0aGlzLmNvdW50ZXIgPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5mbC5yZW1vdmUoKTtcclxuICAgICAgICAgICAgZGVsZXRlIF90aGlzLl9mb3J3YXJkc1tmcm9tXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgIF90aGlzLl9mb3J3YXJkc1tmcm9tXSA9IHJlZkNvdW50O1xyXG4gICB9XHJcblxyXG4gICByZWZDb3VudC5jb3VudGVyKys7XHJcbiAgIHJldHVybiByZWZDb3VudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMgYSBmb3J3YXJkIGxpc3RlbmVyIGZvciBhIG1lc3NhZ2UgZGVzdGluYXRpb24uIEV2ZXJ5IG1lc3NhZ2UgcmVhY2hpbmcgYW4gYWRkcmVzcyB3aWxsIGJlIGFsc28gc2VudCB0byB0aGUgZm9yd2FyZCBhZGRyZXNzLlxyXG4gICAqIEBwYXJhbSB7VVJMfSBmcm9tIE1lc3NhZ2UgZGVzdGluYXRpb24sIGl0J3MgYWN0dWFsbHkgdGhlIGZpZWxkIFwidG9cIiBvZiB0aGUgbWVzc2FnZS5cclxuICAgKiBAcGFyYW0ge1VSTH0gdG8gICBGb3J3YXJkIGFkZHJlc3MuXHJcbiAgICovXHJcbiAgIGFkZEZvcndhcmQoZnJvbSwgdG8pIHtcclxuICAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgICByZXR1cm4gX3RoaXMuYWRkTGlzdGVuZXIoZnJvbSwgKG1zZykgPT4ge1xyXG4gICAgICAgbG9nLmluZm8oJ01CLUZPUldBUkQ6ICggJyArIGZyb20gKyAnIHRvICcgKyB0byArICcgKScpO1xyXG4gICAgICAgX3RoaXMuZm9yd2FyZCh0bywgbXNnKTtcclxuICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgLyoqXHJcbiAgICAqIEp1c3QgZm9yd2FyZCdzIGEgbWVzc2FnZSB0byB0aGUgZm9yd2FyZCBhZGRyZXNzLiBMaXN0ZW5lcnMgc2hvdWxkIGJlIGF2YWlsYWJsZSBmb3IgdGhlIGZvcndhcmQgYWRkcmVzcy5cclxuICAgICogQHBhcmFtICB7VVJMfSB1cmwgRm9yd2FyZCBhZGRyZXNzLlxyXG4gICAgKiBAcGFyYW0gIHtNZXNzYWdlfSBtc2cgTWVzc2FnZSB0byBmb3J3YXJkXHJcbiAgICAqL1xyXG4gICBmb3J3YXJkKHVybCwgbXNnKSB7XHJcbiAgICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICAgbGV0IGl0ZW1MaXN0ID0gX3RoaXMuX3N1YnNjcmlwdGlvbnNbdXJsXTtcclxuICAgICBpZiAoaXRlbUxpc3QpIHtcclxuICAgICAgIF90aGlzLl9wdWJsaXNoT24oaXRlbUxpc3QsIG1zZyk7XHJcbiAgICAgfVxyXG4gICB9XHJcblxyXG4gICAvL2RlZmF1bHQgcm91dGUsIGlmIHRoZXJlIGFyZSBubyBsaXN0ZW5lcnMgYXZhaWxhYmxlIGZvciBhIG1lc3NhZ2UgZGVzdGluYXRpb24uXHJcbiAgIF9vblBvc3RNZXNzYWdlKG1zZykge1xyXG4gICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgIC8vcmVzb2x2ZSBleHRlcm5hbCBwcm90b3N0dWIuLi5cclxuICAgICBfdGhpcy5fcmVnaXN0cnkucmVzb2x2ZShtc2cpLnRoZW4oKHJvdXRlLCBtc2cycm91dGUpID0+IHtcclxuICAgICAgIGlmIChtc2cycm91dGUpIF90aGlzLmZvcndhcmQocm91dGUsIG1zZzJyb3V0ZSk7XHJcbiAgICAgICBlbHNlIF90aGlzLmZvcndhcmQocm91dGUsIG1zZyk7XHJcbiAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkge1xyXG4gICAgICAgbG9nLmVycm9yKCdSRVNPTFZFLUVSUk9SOiAnLCBlKTtcclxuICAgICB9KTtcclxuICAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNZXNzYWdlQnVzO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2J1cy9NZXNzYWdlQnVzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkE7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBOzs7QUFBQTtBQUNBOzs7Ozs7O0FBSkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRkE7QUFDQTtBQU1BOzs7OztBQUtBOzs7QUFDQTs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFYQTtBQVlBO0FBQ0E7Ozs7O0FBS0E7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7OztBQUtBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQUNBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBckxBO0FBQUE7QUFBQTs7O0FBRUE7QUFBQTtBQUFBOzs7OztBQXNMQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///488\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(14);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('Pipeline');\n\n/**\r\n* @author micaelpedrosa@gmail.com\r\n* Sequencial processor of methods. Similar to how Sequential Promise's work, but better fit for message processing.\r\n* Normal use for this, is to intercept all messages with configured handlers, and act accordingly.\r\n*/\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n\nvar Pipeline = function () {\n /* public\r\n handlers: ((PipeContext) => void)[]\r\n onFail: (error) => void\r\n */\n\n function Pipeline(_onFail) {\n (0, _classCallCheck3.default)(this, Pipeline);\n\n var _this = this;\n\n _this.handlers = [];\n _this.onFail = _onFail;\n }\n\n /**\r\n * Insert a message in the pipeline queue. All messages are wrapped with a PipeContext.\r\n * @param {Message} msg Message for the queue\r\n * @param {Callback} onDeliver When message is finished processing from all handlers, it will be delivered in this callback.\r\n */\n\n\n (0, _createClass3.default)(Pipeline, [{\n key: 'process',\n value: function process(msg, onDeliver) {\n var _this = this;\n\n if (_this.handlers.length > 0) {\n var iter = new Iterator(_this.handlers);\n iter.next(new PipeContext(_this, iter, msg, onDeliver));\n } else {\n onDeliver(msg);\n }\n }\n }]);\n return Pipeline;\n}();\n\n/**\r\n* @author micaelpedrosa@gmail.com\r\n* Wrapper around a message that adds actions that can be fired by any interceptor handler.\r\n* The Pipeline is asynchronous, so an handler should always call an action, the default one is \"next()\"\r\n*/\n\n\nvar PipeContext = function () {\n /* private\r\n _inStop: boolean\r\n _pipeline: Pipeline\r\n _iter: Iterator\r\n _msg: Message\r\n */\n\n function PipeContext(pipeline, iter, msg, onDeliver) {\n (0, _classCallCheck3.default)(this, PipeContext);\n\n var _this = this;\n\n _this._inStop = false;\n\n _this._pipeline = pipeline;\n _this._iter = iter;\n _this._msg = msg;\n _this._onDeliver = onDeliver;\n }\n\n (0, _createClass3.default)(PipeContext, [{\n key: 'next',\n\n\n /**\r\n * Proceed to the next interceptor handler, unless there was an error. If it's the last one, proceed to onDeliver handler.\r\n */\n value: function next() {\n var _this = this;\n\n if (!_this._inStop) {\n if (_this._iter.hasNext) {\n _this._iter.next(_this);\n } else {\n _this._onDeliver(_this._msg);\n }\n }\n }\n\n /**\r\n * Proceed directly to the onDeliver handler, unless there was an error.\r\n */\n\n }, {\n key: 'deliver',\n value: function deliver() {\n var _this = this;\n if (!_this._inStop) {\n _this._inStop = true;\n _this._onDeliver(_this._msg);\n }\n }\n\n /**\r\n * Mark the context with an error and proceed to the onFail handler.\r\n * @param {[type]} error [description]\r\n */\n\n }, {\n key: 'fail',\n value: function fail(error) {\n var _this = this;\n\n if (!_this._inStop) {\n _this._inStop = true;\n if (_this._pipeline.onFail) {\n _this._pipeline.onFail(error);\n }\n }\n }\n }, {\n key: 'pipeline',\n get: function get() {\n return this._pipeline;\n }\n }, {\n key: 'msg',\n get: function get() {\n return this._msg;\n },\n set: function set(inMsg) {\n this._msg = inMsg;\n }\n }]);\n return PipeContext;\n}();\n\nvar Iterator = function () {\n /* private\r\n _index: number\r\n _array: []\r\n */\n\n function Iterator(array) {\n (0, _classCallCheck3.default)(this, Iterator);\n\n this._index = -1;\n this._array = array;\n }\n\n (0, _createClass3.default)(Iterator, [{\n key: 'hasNext',\n get: function get() {\n return this._index < this._array.length - 1;\n }\n }, {\n key: 'next',\n get: function get() {\n this._index++;\n return this._array[this._index];\n }\n }]);\n return Iterator;\n}();\n\nexports.default = Pipeline;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDg5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvUGlwZWxpbmUuanM/YTAzZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxyXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxyXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXHJcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xyXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxyXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXHJcbipcclxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuKlxyXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbipcclxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKiovXHJcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XHJcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdQaXBlbGluZScpO1xyXG5cclxuLyoqXHJcbiogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxyXG4qIFNlcXVlbmNpYWwgcHJvY2Vzc29yIG9mIG1ldGhvZHMuIFNpbWlsYXIgdG8gaG93IFNlcXVlbnRpYWwgUHJvbWlzZSdzIHdvcmssIGJ1dCBiZXR0ZXIgZml0IGZvciBtZXNzYWdlIHByb2Nlc3NpbmcuXHJcbiogTm9ybWFsIHVzZSBmb3IgdGhpcywgaXMgdG8gaW50ZXJjZXB0IGFsbCBtZXNzYWdlcyB3aXRoIGNvbmZpZ3VyZWQgaGFuZGxlcnMsIGFuZCBhY3QgYWNjb3JkaW5nbHkuXHJcbiovXHJcblxyXG5pbXBvcnQge2lzRGF0YU9iamVjdFVSTH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xyXG5cclxuY2xhc3MgUGlwZWxpbmUge1xyXG4gIC8qIHB1YmxpY1xyXG4gICAgaGFuZGxlcnM6ICgoUGlwZUNvbnRleHQpID0+IHZvaWQpW11cclxuICAgIG9uRmFpbDogKGVycm9yKSA9PiB2b2lkXHJcbiAgKi9cclxuXHJcbiAgY29uc3RydWN0b3IoX29uRmFpbCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBfdGhpcy5oYW5kbGVycyA9IFtdO1xyXG4gICAgX3RoaXMub25GYWlsID0gX29uRmFpbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluc2VydCBhIG1lc3NhZ2UgaW4gdGhlIHBpcGVsaW5lIHF1ZXVlLiBBbGwgbWVzc2FnZXMgYXJlIHdyYXBwZWQgd2l0aCBhIFBpcGVDb250ZXh0LlxyXG4gICAqIEBwYXJhbSAge01lc3NhZ2V9IG1zZyAgICAgICBNZXNzYWdlIGZvciB0aGUgcXVldWVcclxuICAgKiBAcGFyYW0gIHtDYWxsYmFja30gb25EZWxpdmVyIFdoZW4gbWVzc2FnZSBpcyBmaW5pc2hlZCBwcm9jZXNzaW5nIGZyb20gYWxsIGhhbmRsZXJzLCBpdCB3aWxsIGJlIGRlbGl2ZXJlZCBpbiB0aGlzIGNhbGxiYWNrLlxyXG4gICAqL1xyXG4gIHByb2Nlc3MobXNnLCBvbkRlbGl2ZXIpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgaWYgKF90aGlzLmhhbmRsZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGl0ZXIgPSBuZXcgSXRlcmF0b3IoX3RoaXMuaGFuZGxlcnMpO1xyXG4gICAgICBpdGVyLm5leHQobmV3IFBpcGVDb250ZXh0KF90aGlzLCBpdGVyLCBtc2csIG9uRGVsaXZlcikpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb25EZWxpdmVyKG1zZyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuKiBAYXV0aG9yIG1pY2FlbHBlZHJvc2FAZ21haWwuY29tXHJcbiogV3JhcHBlciBhcm91bmQgYSBtZXNzYWdlIHRoYXQgYWRkcyBhY3Rpb25zIHRoYXQgY2FuIGJlIGZpcmVkIGJ5IGFueSBpbnRlcmNlcHRvciBoYW5kbGVyLlxyXG4qIFRoZSBQaXBlbGluZSBpcyBhc3luY2hyb25vdXMsIHNvIGFuIGhhbmRsZXIgc2hvdWxkIGFsd2F5cyBjYWxsIGFuIGFjdGlvbiwgdGhlIGRlZmF1bHQgb25lIGlzIFwibmV4dCgpXCJcclxuKi9cclxuY2xhc3MgUGlwZUNvbnRleHQge1xyXG4gIC8qIHByaXZhdGVcclxuICAgIF9pblN0b3A6IGJvb2xlYW5cclxuXHJcbiAgICBfcGlwZWxpbmU6IFBpcGVsaW5lXHJcbiAgICBfaXRlcjogSXRlcmF0b3JcclxuICAgIF9tc2c6IE1lc3NhZ2VcclxuICAqL1xyXG5cclxuICBjb25zdHJ1Y3RvcihwaXBlbGluZSwgaXRlciwgbXNnLCBvbkRlbGl2ZXIpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgX3RoaXMuX2luU3RvcCA9IGZhbHNlO1xyXG5cclxuICAgIF90aGlzLl9waXBlbGluZSA9IHBpcGVsaW5lO1xyXG4gICAgX3RoaXMuX2l0ZXIgPSBpdGVyO1xyXG4gICAgX3RoaXMuX21zZyA9IG1zZztcclxuICAgIF90aGlzLl9vbkRlbGl2ZXIgPSBvbkRlbGl2ZXI7XHJcbiAgfVxyXG5cclxuICBnZXQgcGlwZWxpbmUoKSB7IHJldHVybiB0aGlzLl9waXBlbGluZTsgfVxyXG5cclxuICBnZXQgbXNnKCkgeyByZXR1cm4gdGhpcy5fbXNnOyB9XHJcbiAgc2V0IG1zZyhpbk1zZykgeyB0aGlzLl9tc2cgPSBpbk1zZzsgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm9jZWVkIHRvIHRoZSBuZXh0IGludGVyY2VwdG9yIGhhbmRsZXIsIHVubGVzcyB0aGVyZSB3YXMgYW4gZXJyb3IuIElmIGl0J3MgdGhlIGxhc3Qgb25lLCBwcm9jZWVkIHRvIG9uRGVsaXZlciBoYW5kbGVyLlxyXG4gICAqL1xyXG4gIG5leHQoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGlmICghX3RoaXMuX2luU3RvcCkge1xyXG4gICAgICBpZiAoX3RoaXMuX2l0ZXIuaGFzTmV4dCkge1xyXG4gICAgICAgIF90aGlzLl9pdGVyLm5leHQoX3RoaXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIF90aGlzLl9vbkRlbGl2ZXIoX3RoaXMuX21zZyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb2NlZWQgZGlyZWN0bHkgdG8gdGhlIG9uRGVsaXZlciBoYW5kbGVyLCB1bmxlc3MgdGhlcmUgd2FzIGFuIGVycm9yLlxyXG4gICAqL1xyXG4gIGRlbGl2ZXIoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKCFfdGhpcy5faW5TdG9wKSB7XHJcbiAgICAgIF90aGlzLl9pblN0b3AgPSB0cnVlO1xyXG4gICAgICBfdGhpcy5fb25EZWxpdmVyKF90aGlzLl9tc2cpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFyayB0aGUgY29udGV4dCB3aXRoIGFuIGVycm9yIGFuZCBwcm9jZWVkIHRvIHRoZSBvbkZhaWwgaGFuZGxlci5cclxuICAgKiBAcGFyYW0gIHtbdHlwZV19IGVycm9yIFtkZXNjcmlwdGlvbl1cclxuICAgKi9cclxuICBmYWlsKGVycm9yKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGlmICghX3RoaXMuX2luU3RvcCkge1xyXG4gICAgICBfdGhpcy5faW5TdG9wID0gdHJ1ZTtcclxuICAgICAgaWYgKF90aGlzLl9waXBlbGluZS5vbkZhaWwpIHtcclxuICAgICAgICBfdGhpcy5fcGlwZWxpbmUub25GYWlsKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbn1cclxuXHJcbmNsYXNzIEl0ZXJhdG9yIHtcclxuICAvKiBwcml2YXRlXHJcbiAgICBfaW5kZXg6IG51bWJlclxyXG4gICAgX2FycmF5OiBbXVxyXG4gICovXHJcblxyXG4gIGNvbnN0cnVjdG9yKGFycmF5KSB7XHJcbiAgICB0aGlzLl9pbmRleCA9IC0xO1xyXG4gICAgdGhpcy5fYXJyYXkgPSBhcnJheTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNOZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luZGV4IDwgdGhpcy5fYXJyYXkubGVuZ3RoIC0gMTtcclxuICB9XHJcblxyXG4gIGdldCBuZXh0KCkge1xyXG4gICAgdGhpcy5faW5kZXgrKztcclxuICAgIHJldHVybiB0aGlzLl9hcnJheVt0aGlzLl9pbmRleF07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBQaXBlbGluZTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9idXMvUGlwZWxpbmUuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBc0JBO0FBQ0E7QUFEQTtBQUNBO0FBUUE7QUFDQTs7Ozs7QUFUQTtBQUNBO0FBQ0E7Ozs7OztBQXpCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQ0E7QUFDQTs7Ozs7QUFLQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBR0E7Ozs7Ozs7QUFLQTtBQUNBOzs7Ozs7O0FBUUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBTUE7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBNUNBO0FBQUE7QUFBQTs7O0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBOzs7OztBQWdEQTtBQUNBOzs7OztBQUtBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///489\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(46);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _utf = __webpack_require__(491);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('CryptoManager');\n\n/**\r\n* Class with the cryptographic functions for the authentication protocol\r\n*\r\n*/\n\nvar Crypto = function () {\n\n /**\r\n * Runtimefactory is passed in the costructor, because the nodeJS has a different crypto module\r\n * from the browser. RuntimeFactory provides a wrapper for the fuctions of nodeJS, so they can be\r\n * invoked browser like.\r\n */\n function Crypto(runtimeFactory) {\n (0, _classCallCheck3.default)(this, Crypto);\n\n var _this = this;\n typeof runtimeFactory.createWebcrypto === 'function' ? _this._crypto = runtimeFactory.createWebcrypto() : _this._crypto = crypto;\n }\n\n /**\r\n * Performs a RSA encryption\r\n * @param {ArrayBuffer} value the public key\r\n * @param {BufferSource} value data to be encryped\r\n * @return {Uint8Array} encrypted data\r\n */\n\n\n (0, _createClass3.default)(Crypto, [{\n key: 'encryptRSA',\n value: function encryptRSA(pubKey, data) {\n log.log('encryptRSA:pubKey', pubKey);\n log.log('encryptRSA:data', data);\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._importRSAencryptKey(new Uint8Array(pubKey)).then(function (publicKey) {\n\n _this._crypto.subtle.encrypt({\n name: 'RSA-OAEP'\n }, publicKey, //from generateKey or importKey above\n data //ArrayBuffer of data you want to encrypt\n ).then(function (encrypted) {\n //returns an ArrayBuffer containing the encrypted data\n // log.log('crypto-encryptRSA', new Uint8Array(encrypted));\n resolve(new Uint8Array(encrypted));\n }).catch(function (err) {\n // log.log('crypto-encryptRSA', err);\n reject(err);\n });\n });\n });\n }\n\n /**\r\n * Performs a RSA decryption\r\n * @param {ArrayBuffer} value the private key\r\n * @param {BufferSource} value data to be decrypted\r\n * @return {Uint8Array} decrypted data\r\n */\n\n }, {\n key: 'decryptRSA',\n value: function decryptRSA(privKey, data) {\n log.log('decryptRSA:privKey', privKey);\n log.log('decryptRSA:data', data);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._importRSAdecryptKey(privKey).then(function (privateKey) {\n\n _this._crypto.subtle.decrypt({\n name: 'RSA-OAEP'\n }, privateKey, //from generateKey or importKey above\n data //ArrayBuffer of the data\n ).then(function (decrypted) {\n\n var decryptedData = new Uint8Array(decrypted);\n\n // log.log('crypto-decryptRSA', decryptedData);\n resolve(decryptedData);\n }).catch(function (err) {\n // log.log('crypto-decryptRSA', err);\n reject(err);\n });\n });\n });\n }\n\n /**\r\n * Performs a RSA sign\r\n * @param {ArrayBuffer} value the private key\r\n * @param {BufferSource} value data to be signed\r\n * @return {Uint8Array} data signature\r\n */\n\n }, {\n key: 'signRSA',\n value: function signRSA(privKey, data) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._importRSAsignKey(privKey).then(function (privateKey) {\n\n _this._crypto.subtle.sign({\n name: 'RSASSA-PKCS1-v1_5'\n }, privateKey, //from generateKey or importKey above\n (0, _utf.encodeUTF8)(data) //ArrayBuffer of data you want to sign\n ).then(function (signature) {\n //returns an ArrayBuffer containing the signature\n // log.log('crypto-signRSA', new Uint8Array(signature));\n resolve(new Uint8Array(signature));\n }).catch(function (err) {\n // log.log('crypto-signRSA', err);\n reject(err);\n });\n });\n });\n }\n\n /**\r\n * Performs a RSA signature verification\r\n * @param {ArrayBuffer} value the public key\r\n * @param {BufferSource} value data to be verified\r\n * @return {Boolean} result of the signature verification\r\n */\n\n }, {\n key: 'verifyRSA',\n value: function verifyRSA(pubKey, data, signature) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._importRSAverifyKey(pubKey).then(function (publicKey) {\n\n _this._crypto.subtle.verify({\n name: 'RSASSA-PKCS1-v1_5'\n }, publicKey, //from generateKey or importKey above\n signature, //ArrayBuffer of the signature\n (0, _utf.encodeUTF8)(data) //ArrayBuffer of the data\n ).then(function (isvalid) {\n //returns a boolean on whether the signature is true or not\n // log.log('crypto-verifyRSA', isvalid);\n resolve(isvalid);\n }).catch(function (err) {\n // log.log('crypto-verifyRSA', err);\n reject(err);\n });\n });\n });\n }\n\n /**\r\n * Performs a RSA signature verification\r\n * @param {ArrayBuffer} value the public key\r\n * @param {BufferSource} value data to be verified\r\n * @return {Boolean} result of the signature verification\r\n */\n\n }, {\n key: 'encryptAES',\n value: function encryptAES(key, data, iv) {\n log.log('encryptAES:key', key);\n log.log('encryptAES:data', data);\n log.log('encryptAES:iv', iv);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._importAESkey(key).then(function (aesKey) {\n\n _this._crypto.subtle.encrypt({\n name: 'AES-CBC',\n\n //Don't re-use initialization vectors!\n //Always generate a new iv every time your encrypt!\n iv: iv\n }, aesKey, //from generateKey or importKey above\n (0, _utf.encodeUTF8)(data) //ArrayBuffer of data you want to encrypt\n ).then(function (encrypted) {\n //returns an ArrayBuffer containing the encrypted data\n // log.log('crypto-encryptAES', new Uint8Array(encrypted));\n resolve(new Uint8Array(encrypted));\n }).catch(function (err) {\n // log.log('crypto-encryptAES', err);\n reject(err);\n });\n });\n });\n }\n }, {\n key: 'decryptAES',\n value: function decryptAES(key, data, iv) {\n log.log('decryptAES:key', key);\n log.log('decryptAES:data', data);\n log.log('decryptAES:iv', iv);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._importAESkey(key).then(function (aesKey) {\n\n _this._crypto.subtle.decrypt({\n name: 'AES-CBC',\n iv: iv\n }, aesKey, //from generateKey or importKey above\n data //ArrayBuffer of the data\n ).then(function (decrypted) {\n\n var decodedData = (0, _utf.decodeUTF8)(new Uint8Array(decrypted));\n log.log('crypto-decryptAES', decodedData);\n resolve(decodedData);\n }).catch(function (err) {\n // log.log('crypto-decryptAES', err);\n reject(err);\n });\n });\n });\n }\n\n /**\r\n * creates a hash using the HMAC algorithm\r\n * @param {byteArray} key key to be used in the hmac\r\n * @param {string} data information to be hashed\r\n * @return {byteArray} signature resulting hash\r\n */\n\n }, {\n key: 'hashHMAC',\n value: function hashHMAC(key, data) {\n log.log('hashHMAC:key', key);\n log.log('hashHMAC:data', data);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n if (typeof data != 'string') {\n data = (0, _stringify2.default)(data);\n log.log('Converting hashHMAC inpured DATA');\n log.log('HHashHMAC:', data);\n }\n\n _this._importHMACkey(key).then(function (hmacKey) {\n\n _this._crypto.subtle.sign({\n name: 'HMAC'\n }, hmacKey, //from generateKey or importKey above\n (0, _utf.encodeUTF8)(data) //ArrayBuffer of data you want to sign\n ).then(function (signature) {\n log.log('HashHMAC signature:', new Uint8Array(signature));\n\n // log.log('crypto-hashHMAC', signature);\n //returns an ArrayBuffer containing the signature\n resolve(new Uint8Array(signature));\n }).catch(function (err) {\n // log.log('crypto-hashHMAC', err);\n reject(err);\n });\n });\n });\n }\n\n /**\r\n * verifies an hash using the HMAC algorithm\r\n * @param {byteArray} key key to be used in the hmac\r\n * @param {string} data information to be hashed to compare\r\n * @param {byteArray} signature hash to compare with the received data\r\n * @return {boolean} isvalid boolean saying if the data corresponds to the hash received\r\n */\n\n }, {\n key: 'verifyHMAC',\n value: function verifyHMAC(key, data, signature) {\n log.log('verifyHMAC:key', key);\n log.log('verifyHMAC:data', data);\n log.log('verifyHMAC:signature', signature);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this._importHMACkey(key).then(function (hmacKey) {\n\n if (typeof data != 'string') {\n data = (0, _stringify2.default)(data);\n log.log('Converting verifyHMAC inputed DATA:', data);\n }\n\n _this._crypto.subtle.verify({\n name: 'HMAC'\n }, hmacKey, //from generateKey or importKey above\n signature, //ArrayBuffer of the signature\n (0, _utf.encodeUTF8)(data) //ArrayBuffer of the data\n ).then(function (isvalid) {\n //returns a boolean on whether the signature is true or not\n // log.log('crypto-verifyHMAC', isvalid);\n log.log('verifyHMAC result', isvalid);\n isvalid ? resolve(isvalid) : reject(isvalid);\n }).catch(function (err) {\n log.error('crypto-verifyHMAC', err);\n reject(err);\n });\n });\n });\n }\n\n /**\r\n * generates a RSA public/private key pair with a modulus length of 2048 bits\r\n * @return {JSON} keyPair json containing the public and private keys\r\n */\n\n }, {\n key: 'generateRSAKeyPair',\n value: function generateRSAKeyPair() {\n var _this = this;\n var keyPair = {};\n\n return new _promise2.default(function (resolve, reject) {\n _this._crypto.subtle.generateKey({\n name: 'RSA-PSS',\n modulusLength: 2048, //can be 1024, 2048, or 4096\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: { name: 'SHA-256' //can be 'SHA-1', 'SHA-256', 'SHA-384', or 'SHA-512'\n } }, true, //whether the key is extractable (i.e. can be used in exportKey)\n ['sign', 'verify'] //can be any combination of 'sign' and 'verify'\n\n ).then(function (key) {\n //returns a keypair object\n // log.log(key);\n\n _this._crypto.subtle.exportKey('spki', //can be 'jwk' (public or private), 'spki' (public only), or 'pkcs8' (private only)\n key.publicKey //can be a publicKey or privateKey, as long as extractable was true\n ).then(function (publicKey) {\n //returns the exported key data\n keyPair.public = new Uint8Array(publicKey);\n return _this._crypto.subtle.exportKey('pkcs8', //can be 'jwk' (public or private), 'spki' (public only), or 'pkcs8' (private only)\n key.privateKey //can be a publicKey or privateKey, as long as extractable was true\n );\n }).then(function (privateKey) {\n keyPair.private = new Uint8Array(privateKey);\n\n // log.log('crypto-generateRSAKeyPair', keyPair);\n resolve(keyPair);\n }).catch(function (err) {\n log.error(err);\n reject(err);\n });\n }).catch(function (err) {\n log.error(err);\n reject(err);\n });\n });\n }\n\n /**\r\n * Generates a 128 bit random value.\r\n * @return {byteArray} array random value\r\n */\n\n }, {\n key: 'generateIV',\n value: function generateIV() {\n var _this = this;\n\n var array = new Uint8Array(16);\n _this._crypto.getRandomValues(array);\n\n return array;\n }\n\n /**\r\n * Generates a 256 bit random value. 32 bits are extrated from the machine time,\r\n * the remaining are generated randomly\r\n * @return {byteArray} array random value\r\n */\n\n }, {\n key: 'generateRandom',\n value: function generateRandom() {\n var _this = this;\n\n var array = new Uint8Array(32);\n _this._crypto.getRandomValues(array);\n\n var date = Date.now();\n\n var dateEncoded = (0, _utf.encodeUTF8)(date.toString());\n\n //extract the least significant 4 bytes in the date\n var finalDate = dateEncoded.slice(dateEncoded.length - 4, dateEncoded.length);\n\n // add in the first 4 bytes of the array the bytes extracted previously;\n for (var i = 0; i < 4; i++) {\n array[i] = finalDate[i];\n }\n return array;\n }\n\n /**\r\n * generates a premaster secret (PMS) of 48 bytes (384 bits) randomly\r\n * @return {byteArray} array premaster secret key\r\n */\n\n }, {\n key: 'generatePMS',\n value: function generatePMS() {\n var _this = this;\n\n var array = new Uint8Array(48);\n _this._crypto.getRandomValues(array);\n return array;\n }\n\n /**\r\n * generates a masterKey secret (PMS) of 48 bytes (384 bits) using the premaster secret and\r\n * two randoms\r\n * @return {byteArray} array master secret key with 48 bytes\r\n */\n\n }, {\n key: 'generateMasterSecret',\n value: function generateMasterSecret(hmacKey, data) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n var key = new Uint8Array(48);\n var seed = data;\n\n _this._digest(hmacKey).then(function (digestedKey) {\n\n _this.hashHMAC(digestedKey, seed).then(function (keypart0) {\n\n //copy the first 32 bytes into the key\n for (var i = 0; i < 32; i++) {\n key[i] = keypart0[i];\n }\n return _this.hashHMAC(digestedKey, seed + keypart0);\n }).then(function (keypart1) {\n\n //copy the first 16 bytes to the key remaining 16 bytes\n for (var i = 0; i < 16; i++) {\n key[i + 32] = keypart1[i];\n }\n\n // log.log('crypto-generateMasterSecret', key);\n resolve(key);\n }).catch(function (err) {\n // log.log('crypto-generateMasterSecret', err);\n reject(err);\n });\n });\n });\n }\n\n /**\r\n * generates both users MAC and encryption keys. generate as output an array\r\n * with 4 byteArray each with 32 bytes\r\n * @param {byteArray} secret secret to be used in the HMAC function\r\n * @param {String} data information to be used as seed\r\n * @return {Array} key array with the information to generate keys\r\n */\n\n }, {\n key: 'generateKeys',\n value: function generateKeys(hmacKey, data) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var key = [];\n var seed = data;\n\n // iterate 4 times to obtain a 1024 key size\n _this.hashHMAC(hmacKey, seed).then(function (keypart0) {\n key.push(keypart0);\n return _this.hashHMAC(hmacKey, seed + keypart0);\n }).then(function (keypart1) {\n key.push(keypart1);\n return _this.hashHMAC(hmacKey, seed + keypart1);\n }).then(function (keypart2) {\n key.push(keypart2);\n return _this.hashHMAC(hmacKey, seed + keypart2);\n }).then(function (keypart3) {\n key.push(keypart3);\n\n // log.log('crypto-generateKeys', key);\n resolve(key);\n }).catch(function (err) {\n // log.log('crypto-generateKeys', err);\n reject(err);\n });\n\n // log.log(hmacKey, data);\n });\n }\n }, {\n key: '_importRSAsignKey',\n value: function _importRSAsignKey(privKey) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._crypto.subtle.importKey('pkcs8', //can be 'jwk' (public or private), 'spki' (public only), or 'pkcs8' (private only)\n privKey, { //these are the algorithm options\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' //can be 'SHA-1', 'SHA-256', 'SHA-384', or 'SHA-512'\n } }, true, //whether the key is extractable (i.e. can be used in exportKey)\n ['sign'] //'verify' for public key import, 'sign' for private key imports\n ).then(function (privateKey) {\n //returns a publicKey (or privateKey if you are importing a private key)\n // log.log('crypto-_importRSAsignKey', privateKey);\n resolve(privateKey);\n }).catch(function (err) {\n log.error('crypto-_importRSAsignKey', err);\n reject(err);\n });\n });\n }\n }, {\n key: '_importRSAverifyKey',\n value: function _importRSAverifyKey(pubKey) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._crypto.subtle.importKey('spki', //can be 'jwk' (public or private), 'spki' (public only), or 'pkcs8' (private only)\n pubKey, { //these are the algorithm options\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' //can be 'SHA-1', 'SHA-256', 'SHA-384', or 'SHA-512'\n } }, true, //whether the key is extractable (i.e. can be used in exportKey)\n ['verify'] //'verify' for public key import, 'sign' for private key imports\n ).then(function (publicKey) {\n //returns a publicKey (or privateKey if you are importing a private key)\n // log.log('crypto-_importRSAverifyKey', publicKey);\n resolve(publicKey);\n }).catch(function (err) {\n log.error('crypto-_importRSAverifyKey', err);\n reject(err);\n });\n });\n }\n }, {\n key: '_importRSAencryptKey',\n value: function _importRSAencryptKey(pubKey) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._crypto.subtle.importKey('spki', //can be 'jwk' (public or private), 'spki' (public only), or 'pkcs8' (private only)\n pubKey, { //these are the algorithm options\n name: 'RSA-OAEP',\n hash: { name: 'SHA-256' //can be 'SHA-1', 'SHA-256', 'SHA-384', or 'SHA-512'\n } }, true, //whether the key is extractable (i.e. can be used in exportKey)\n ['encrypt'] //'encrypt' or 'wrapKey' for public key import or\n //'decrypt' or 'unwrapKey' for private key imports\n ).then(function (publicKey) {\n //returns a publicKey (or privateKey if you are importing a private key)\n // log.log('crypto-_importRSAencryptKey', publicKey);\n resolve(publicKey);\n }).catch(function (err) {\n log.error('crypto-_importRSAencryptKey', err.name);\n reject(err);\n });\n });\n }\n }, {\n key: '_importRSAdecryptKey',\n value: function _importRSAdecryptKey(privKey) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._crypto.subtle.importKey('pkcs8', //can be 'jwk' (public or private), 'spki' (public only), or 'pkcs8' (private only)\n privKey, { //these are the algorithm options\n name: 'RSA-OAEP',\n hash: { name: 'SHA-256' //can be 'SHA-1', 'SHA-256', 'SHA-384', or 'SHA-512'\n } }, true, //whether the key is extractable (i.e. can be used in exportKey)\n ['decrypt'] //'encrypt' or 'wrapKey' for public key import or\n //'decrypt' or 'unwrapKey' for private key imports\n ).then(function (privateKey) {\n //returns a publicKey (or privateKey if you are importing a private key)\n // log.log('crypto-_importRSAdecryptKey', privateKey);\n resolve(privateKey);\n }).catch(function (err) {\n log.error('crypto-_importRSAdecryptKey', err);\n reject(err);\n });\n });\n }\n }, {\n key: 'concatPMSwithRandoms',\n value: function concatPMSwithRandoms(pms, toRandom, fromRandom) {\n\n var finalKey = new Uint8Array(pms.length + toRandom.length + fromRandom.length);\n\n // add PremasterKey\n for (var i = 0; i < pms.length; i++) {\n finalKey[i] = pms[i];\n }\n\n //add to random\n for (var _i = 0; _i < toRandom.length; _i++) {\n finalKey[_i + pms.length] = pms[_i];\n }\n\n //add from random\n for (var _i2 = 0; _i2 < fromRandom.length; _i2++) {\n finalKey[_i2 + pms.length + toRandom.length] = pms[_i2];\n }\n\n return finalKey;\n }\n }, {\n key: '_generate256bitKey',\n value: function _generate256bitKey() {\n var _this = this;\n var array = new Uint8Array(32);\n _this._crypto.getRandomValues(array);\n\n return array;\n }\n\n /**\r\n * imports the secret to the HMAC function\r\n * @param {byteArray} arrayBuffer bytes to import as key\r\n * @return {JSON} key key ready to be used in the HMAC cryptographic function\r\n */\n\n }, {\n key: '_importHMACkey',\n value: function _importHMACkey(arrayBuffer) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this._digest(arrayBuffer).then(function (key) {\n\n _this._crypto.subtle.importKey('raw', //can be 'jwk' or 'raw'\n key, { //this is the algorithm options\n name: 'HMAC',\n hash: { name: 'SHA-256' }, //can be 'SHA-1', 'SHA-256', 'SHA-384', or 'SHA-512'\n length: 256 //optional, if you want your key length to differ from the hash function's block length\n }, true, //whether the key is extractable (i.e. can be used in exportKey)\n ['sign', 'verify'] //can be any combination of 'sign' and 'verify'\n ).then(function (key) {\n //returns the symmetric key\n // log.log('crypto-_importHMACkey', key);\n resolve(key);\n }).catch(function (err) {\n reject(err);\n });\n });\n });\n }\n }, {\n key: '_digest',\n value: function _digest(value) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._crypto.subtle.digest({\n name: 'SHA-256'\n }, value //The data you want to hash as an ArrayBuffer\n ).then(function (hash) {\n //returns the hash as an ArrayBuffer\n // log.log('crypto-digest', new Uint8Array(hash));\n resolve(new Uint8Array(hash));\n }).catch(function (err) {\n log.error(err);\n reject(err);\n });\n });\n }\n }, {\n key: '_importAESkey',\n value: function _importAESkey(arrayBuffer) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n _this._crypto.subtle.importKey('raw', //can be 'jwk' or 'raw'\n arrayBuffer, { //this is the algorithm options\n name: 'AES-CBC'\n }, true, //whether the key is extractable (i.e. can be used in exportKey)\n ['encrypt', 'decrypt'] //can be 'encrypt', 'decrypt', 'wrapKey', or 'unwrapKey'\n ).then(function (key) {\n //returns the symmetric key\n // log.log('crypto-importAESkey', key);\n resolve(key);\n }).catch(function (err) {\n log.error('crypto-importAESkey', err);\n reject(err);\n });\n });\n }\n }, {\n key: '_sha256',\n value: function _sha256(str) {\n var _this = this;\n var buffer = new TextEncoder('utf-8').encode(str);\n return _this._crypto.subtle.digest('SHA-256', buffer).then(function (hash) {\n return _this._hex(hash);\n });\n }\n }, {\n key: '_hex',\n value: function _hex(buffer) {\n var hexCodes = [];\n var view = new DataView(buffer);\n for (var i = 0; i < view.byteLength; i += 4) {\n // Using getUint32 reduces the number of iterations needed (we process 4 bytes each time)\n var value = view.getUint32(i);\n\n var stringValue = value.toString(16);\n\n var padding = '00000000';\n var paddedValue = (padding + stringValue).slice(-padding.length);\n hexCodes.push(paddedValue);\n }\n\n // Join all the hex strings into one\n return hexCodes.join('');\n }\n }]);\n return Crypto;\n}();\n\nexports.default = Crypto;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9jcnlwdG9NYW5hZ2VyL0NyeXB0by5qcz9hZTY2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZW5jb2RlVVRGOCwgZGVjb2RlVVRGOH0gZnJvbSAnLi91dGY4LmpzJztcclxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcclxubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0NyeXB0b01hbmFnZXInKTtcclxuXHJcbi8qKlxyXG4qIENsYXNzIHdpdGggdGhlIGNyeXB0b2dyYXBoaWMgZnVuY3Rpb25zIGZvciB0aGUgYXV0aGVudGljYXRpb24gcHJvdG9jb2xcclxuKlxyXG4qL1xyXG5jbGFzcyBDcnlwdG8ge1xyXG5cclxuLyoqXHJcbiogUnVudGltZWZhY3RvcnkgaXMgcGFzc2VkIGluIHRoZSBjb3N0cnVjdG9yLCBiZWNhdXNlIHRoZSBub2RlSlMgaGFzIGEgZGlmZmVyZW50IGNyeXB0byBtb2R1bGVcclxuKiBmcm9tIHRoZSBicm93c2VyLiBSdW50aW1lRmFjdG9yeSBwcm92aWRlcyBhIHdyYXBwZXIgZm9yIHRoZSBmdWN0aW9ucyBvZiBub2RlSlMsIHNvIHRoZXkgY2FuIGJlXHJcbiogaW52b2tlZCBicm93c2VyIGxpa2UuXHJcbiovXHJcbiAgY29uc3RydWN0b3IocnVudGltZUZhY3RvcnkpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICB0eXBlb2YgcnVudGltZUZhY3RvcnkuY3JlYXRlV2ViY3J5cHRvID09PSAnZnVuY3Rpb24nID8gX3RoaXMuX2NyeXB0byA9IHJ1bnRpbWVGYWN0b3J5LmNyZWF0ZVdlYmNyeXB0bygpIDogX3RoaXMuX2NyeXB0byA9IGNyeXB0bztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogUGVyZm9ybXMgYSBSU0EgZW5jcnlwdGlvblxyXG4gICogQHBhcmFtICAge0FycmF5QnVmZmVyfSAgICB2YWx1ZSAgICB0aGUgcHVibGljIGtleVxyXG4gICogQHBhcmFtICAge0J1ZmZlclNvdXJjZX0gICAgdmFsdWUgICAgZGF0YSB0byBiZSBlbmNyeXBlZFxyXG4gICogQHJldHVybiAge1VpbnQ4QXJyYXl9ICAgZW5jcnlwdGVkIGRhdGFcclxuICAqL1xyXG4gIGVuY3J5cHRSU0EocHViS2V5LCBkYXRhKSB7XHJcbiAgICBsb2cubG9nKCdlbmNyeXB0UlNBOnB1YktleScsIHB1YktleSk7XHJcbiAgICBsb2cubG9nKCdlbmNyeXB0UlNBOmRhdGEnLCBkYXRhKTtcclxuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgX3RoaXMuX2ltcG9ydFJTQWVuY3J5cHRLZXkobmV3IFVpbnQ4QXJyYXkocHViS2V5KSkudGhlbihmdW5jdGlvbihwdWJsaWNLZXkpIHtcclxuXHJcbiAgICAgICAgX3RoaXMuX2NyeXB0by5zdWJ0bGUuZW5jcnlwdChcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ1JTQS1PQUVQJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHB1YmxpY0tleSwgLy9mcm9tIGdlbmVyYXRlS2V5IG9yIGltcG9ydEtleSBhYm92ZVxyXG4gICAgICAgICAgZGF0YSAvL0FycmF5QnVmZmVyIG9mIGRhdGEgeW91IHdhbnQgdG8gZW5jcnlwdFxyXG4gICAgICAgIClcclxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGVuY3J5cHRlZCkge1xyXG4gICAgICAgICAgLy9yZXR1cm5zIGFuIEFycmF5QnVmZmVyIGNvbnRhaW5pbmcgdGhlIGVuY3J5cHRlZCBkYXRhXHJcbiAgICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tZW5jcnlwdFJTQScsIG5ldyBVaW50OEFycmF5KGVuY3J5cHRlZCkpO1xyXG4gICAgICAgICAgICByZXNvbHZlKG5ldyBVaW50OEFycmF5KGVuY3J5cHRlZCkpO1xyXG5cclxuICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLWVuY3J5cHRSU0EnLCBlcnIpO1xyXG4gICAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBQZXJmb3JtcyBhIFJTQSBkZWNyeXB0aW9uXHJcbiAgKiBAcGFyYW0gICB7QXJyYXlCdWZmZXJ9ICAgIHZhbHVlICAgIHRoZSBwcml2YXRlIGtleVxyXG4gICogQHBhcmFtICAge0J1ZmZlclNvdXJjZX0gICAgdmFsdWUgICAgZGF0YSB0byBiZSBkZWNyeXB0ZWRcclxuICAqIEByZXR1cm4gIHtVaW50OEFycmF5fSAgIGRlY3J5cHRlZCBkYXRhXHJcbiAgKi9cclxuICBkZWNyeXB0UlNBKHByaXZLZXksIGRhdGEpIHtcclxuICAgIGxvZy5sb2coJ2RlY3J5cHRSU0E6cHJpdktleScsIHByaXZLZXkpO1xyXG4gICAgbG9nLmxvZygnZGVjcnlwdFJTQTpkYXRhJywgZGF0YSk7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgX3RoaXMuX2ltcG9ydFJTQWRlY3J5cHRLZXkocHJpdktleSkudGhlbihmdW5jdGlvbihwcml2YXRlS2V5KSB7XHJcblxyXG4gICAgICAgIF90aGlzLl9jcnlwdG8uc3VidGxlLmRlY3J5cHQoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdSU0EtT0FFUCdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBwcml2YXRlS2V5LCAvL2Zyb20gZ2VuZXJhdGVLZXkgb3IgaW1wb3J0S2V5IGFib3ZlXHJcbiAgICAgICAgICBkYXRhIC8vQXJyYXlCdWZmZXIgb2YgdGhlIGRhdGFcclxuICAgICAgICApXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbihkZWNyeXB0ZWQpIHtcclxuXHJcbiAgICAgICAgICAgIGxldCBkZWNyeXB0ZWREYXRhID0gbmV3IFVpbnQ4QXJyYXkoZGVjcnlwdGVkKTtcclxuXHJcbiAgICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by1kZWNyeXB0UlNBJywgZGVjcnlwdGVkRGF0YSk7XHJcbiAgICAgICAgICAgIHJlc29sdmUoZGVjcnlwdGVkRGF0YSk7XHJcblxyXG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tZGVjcnlwdFJTQScsIGVycik7XHJcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBQZXJmb3JtcyBhIFJTQSBzaWduXHJcbiAgKiBAcGFyYW0gICB7QXJyYXlCdWZmZXJ9ICAgIHZhbHVlICAgIHRoZSBwcml2YXRlIGtleVxyXG4gICogQHBhcmFtICAge0J1ZmZlclNvdXJjZX0gICAgdmFsdWUgICAgZGF0YSB0byBiZSBzaWduZWRcclxuICAqIEByZXR1cm4gIHtVaW50OEFycmF5fSAgIGRhdGEgc2lnbmF0dXJlXHJcbiAgKi9cclxuICBzaWduUlNBKHByaXZLZXksIGRhdGEpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICBfdGhpcy5faW1wb3J0UlNBc2lnbktleShwcml2S2V5KS50aGVuKGZ1bmN0aW9uKHByaXZhdGVLZXkpIHtcclxuXHJcbiAgICAgICAgX3RoaXMuX2NyeXB0by5zdWJ0bGUuc2lnbihcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ1JTQVNTQS1QS0NTMS12MV81J1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHByaXZhdGVLZXksIC8vZnJvbSBnZW5lcmF0ZUtleSBvciBpbXBvcnRLZXkgYWJvdmVcclxuICAgICAgICAgIGVuY29kZVVURjgoZGF0YSkgLy9BcnJheUJ1ZmZlciBvZiBkYXRhIHlvdSB3YW50IHRvIHNpZ25cclxuICAgICAgICApXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbihzaWduYXR1cmUpIHtcclxuICAgICAgICAgIC8vcmV0dXJucyBhbiBBcnJheUJ1ZmZlciBjb250YWluaW5nIHRoZSBzaWduYXR1cmVcclxuICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by1zaWduUlNBJywgbmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlKSk7XHJcbiAgICAgICAgICAgIHJlc29sdmUobmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlKSk7XHJcblxyXG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tc2lnblJTQScsIGVycik7XHJcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogUGVyZm9ybXMgYSBSU0Egc2lnbmF0dXJlIHZlcmlmaWNhdGlvblxyXG4gICogQHBhcmFtICAge0FycmF5QnVmZmVyfSAgICB2YWx1ZSAgICB0aGUgcHVibGljIGtleVxyXG4gICogQHBhcmFtICAge0J1ZmZlclNvdXJjZX0gICAgdmFsdWUgICAgZGF0YSB0byBiZSB2ZXJpZmllZFxyXG4gICogQHJldHVybiAge0Jvb2xlYW59ICAgcmVzdWx0IG9mIHRoZSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uXHJcbiAgKi9cclxuICB2ZXJpZnlSU0EocHViS2V5LCBkYXRhLCBzaWduYXR1cmUpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICBfdGhpcy5faW1wb3J0UlNBdmVyaWZ5S2V5KHB1YktleSkudGhlbihmdW5jdGlvbihwdWJsaWNLZXkpIHtcclxuXHJcbiAgICAgICAgX3RoaXMuX2NyeXB0by5zdWJ0bGUudmVyaWZ5KFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnUlNBU1NBLVBLQ1MxLXYxXzUnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgcHVibGljS2V5LCAvL2Zyb20gZ2VuZXJhdGVLZXkgb3IgaW1wb3J0S2V5IGFib3ZlXHJcbiAgICAgICAgICBzaWduYXR1cmUsIC8vQXJyYXlCdWZmZXIgb2YgdGhlIHNpZ25hdHVyZVxyXG4gICAgICAgICAgZW5jb2RlVVRGOChkYXRhKSAvL0FycmF5QnVmZmVyIG9mIHRoZSBkYXRhXHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24oaXN2YWxpZCkge1xyXG4gICAgICAgICAgLy9yZXR1cm5zIGEgYm9vbGVhbiBvbiB3aGV0aGVyIHRoZSBzaWduYXR1cmUgaXMgdHJ1ZSBvciBub3RcclxuICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by12ZXJpZnlSU0EnLCBpc3ZhbGlkKTtcclxuICAgICAgICAgICAgcmVzb2x2ZShpc3ZhbGlkKTtcclxuXHJcbiAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by12ZXJpZnlSU0EnLCBlcnIpO1xyXG4gICAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFBlcmZvcm1zIGEgUlNBIHNpZ25hdHVyZSB2ZXJpZmljYXRpb25cclxuICAqIEBwYXJhbSAgIHtBcnJheUJ1ZmZlcn0gICAgdmFsdWUgICAgdGhlIHB1YmxpYyBrZXlcclxuICAqIEBwYXJhbSAgIHtCdWZmZXJTb3VyY2V9ICAgIHZhbHVlICAgIGRhdGEgdG8gYmUgdmVyaWZpZWRcclxuICAqIEByZXR1cm4gIHtCb29sZWFufSAgIHJlc3VsdCBvZiB0aGUgc2lnbmF0dXJlIHZlcmlmaWNhdGlvblxyXG4gICovXHJcbiAgZW5jcnlwdEFFUyhrZXksIGRhdGEsIGl2KSB7XHJcbiAgICBsb2cubG9nKCdlbmNyeXB0QUVTOmtleScsIGtleSk7XHJcbiAgICBsb2cubG9nKCdlbmNyeXB0QUVTOmRhdGEnLCBkYXRhKTtcclxuICAgIGxvZy5sb2coJ2VuY3J5cHRBRVM6aXYnLCBpdik7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgX3RoaXMuX2ltcG9ydEFFU2tleShrZXkpLnRoZW4oZnVuY3Rpb24oYWVzS2V5KSB7XHJcblxyXG4gICAgICAgIF90aGlzLl9jcnlwdG8uc3VidGxlLmVuY3J5cHQoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdBRVMtQ0JDJyxcclxuXHJcbiAgICAgICAgICAgIC8vRG9uJ3QgcmUtdXNlIGluaXRpYWxpemF0aW9uIHZlY3RvcnMhXHJcbiAgICAgICAgICAgIC8vQWx3YXlzIGdlbmVyYXRlIGEgbmV3IGl2IGV2ZXJ5IHRpbWUgeW91ciBlbmNyeXB0IVxyXG4gICAgICAgICAgICBpdjogaXZcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBhZXNLZXksIC8vZnJvbSBnZW5lcmF0ZUtleSBvciBpbXBvcnRLZXkgYWJvdmVcclxuICAgICAgICAgIGVuY29kZVVURjgoZGF0YSkgLy9BcnJheUJ1ZmZlciBvZiBkYXRhIHlvdSB3YW50IHRvIGVuY3J5cHRcclxuICAgICAgICApXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbihlbmNyeXB0ZWQpIHtcclxuICAgICAgICAgIC8vcmV0dXJucyBhbiBBcnJheUJ1ZmZlciBjb250YWluaW5nIHRoZSBlbmNyeXB0ZWQgZGF0YVxyXG4gICAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLWVuY3J5cHRBRVMnLCBuZXcgVWludDhBcnJheShlbmNyeXB0ZWQpKTtcclxuICAgICAgICAgICAgcmVzb2x2ZShuZXcgVWludDhBcnJheShlbmNyeXB0ZWQpKTtcclxuXHJcbiAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by1lbmNyeXB0QUVTJywgZXJyKTtcclxuICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVjcnlwdEFFUyhrZXksIGRhdGEsIGl2KSB7XHJcbiAgICBsb2cubG9nKCdkZWNyeXB0QUVTOmtleScsIGtleSk7XHJcbiAgICBsb2cubG9nKCdkZWNyeXB0QUVTOmRhdGEnLCBkYXRhKTtcclxuICAgIGxvZy5sb2coJ2RlY3J5cHRBRVM6aXYnLCBpdik7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgX3RoaXMuX2ltcG9ydEFFU2tleShrZXkpLnRoZW4oZnVuY3Rpb24oYWVzS2V5KSB7XHJcblxyXG4gICAgICAgIF90aGlzLl9jcnlwdG8uc3VidGxlLmRlY3J5cHQoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdBRVMtQ0JDJyxcclxuICAgICAgICAgICAgaXY6IGl2XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgYWVzS2V5LCAvL2Zyb20gZ2VuZXJhdGVLZXkgb3IgaW1wb3J0S2V5IGFib3ZlXHJcbiAgICAgICAgICBkYXRhIC8vQXJyYXlCdWZmZXIgb2YgdGhlIGRhdGFcclxuICAgICAgICApXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbihkZWNyeXB0ZWQpIHtcclxuXHJcbiAgICAgICAgICAgIGxldCBkZWNvZGVkRGF0YSA9IGRlY29kZVVURjgobmV3IFVpbnQ4QXJyYXkoZGVjcnlwdGVkKSk7XHJcbiAgICAgICAgICAgIGxvZy5sb2coJ2NyeXB0by1kZWNyeXB0QUVTJywgZGVjb2RlZERhdGEpO1xyXG4gICAgICAgICAgICByZXNvbHZlKGRlY29kZWREYXRhKTtcclxuXHJcbiAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by1kZWNyeXB0QUVTJywgZXJyKTtcclxuICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBjcmVhdGVzIGEgaGFzaCB1c2luZyB0aGUgSE1BQyBhbGdvcml0aG1cclxuICAqIEBwYXJhbSAge2J5dGVBcnJheX0gICAga2V5ICAgICAgIGtleSB0byBiZSB1c2VkIGluIHRoZSBobWFjXHJcbiAgKiBAcGFyYW0gIHtzdHJpbmd9ICAgICAgZGF0YSAgICAgICBpbmZvcm1hdGlvbiB0byBiZSBoYXNoZWRcclxuICAqIEByZXR1cm4gIHtieXRlQXJyYXl9ICAgc2lnbmF0dXJlICByZXN1bHRpbmcgaGFzaFxyXG4gICovXHJcbiAgaGFzaEhNQUMoa2V5LCBkYXRhKSB7XHJcbiAgICBsb2cubG9nKCdoYXNoSE1BQzprZXknLCBrZXkpO1xyXG4gICAgbG9nLmxvZygnaGFzaEhNQUM6ZGF0YScsIGRhdGEpO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XHJcblxyXG4gICAgICBpZiAodHlwZW9mIGRhdGEgIT0gJ3N0cmluZycpIHtcclxuICAgICAgICBkYXRhID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XHJcbiAgICAgICAgbG9nLmxvZygnQ29udmVydGluZyBoYXNoSE1BQyBpbnB1cmVkIERBVEEnKTtcclxuICAgICAgICBsb2cubG9nKCdISGFzaEhNQUM6JywgZGF0YSk7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICBfdGhpcy5faW1wb3J0SE1BQ2tleShrZXkpLnRoZW4oZnVuY3Rpb24oaG1hY0tleSkge1xyXG5cclxuICAgICAgICBfdGhpcy5fY3J5cHRvLnN1YnRsZS5zaWduKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnSE1BQydcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBobWFjS2V5LCAvL2Zyb20gZ2VuZXJhdGVLZXkgb3IgaW1wb3J0S2V5IGFib3ZlXHJcbiAgICAgICAgICBlbmNvZGVVVEY4KGRhdGEpIC8vQXJyYXlCdWZmZXIgb2YgZGF0YSB5b3Ugd2FudCB0byBzaWduXHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24oc2lnbmF0dXJlKSB7XHJcbiAgICAgICAgICAgIGxvZy5sb2coJ0hhc2hITUFDIHNpZ25hdHVyZTonLCBuZXcgVWludDhBcnJheShzaWduYXR1cmUpKTtcclxuXHJcbiAgICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by1oYXNoSE1BQycsIHNpZ25hdHVyZSk7XHJcbiAgICAgICAgICAgIC8vcmV0dXJucyBhbiBBcnJheUJ1ZmZlciBjb250YWluaW5nIHRoZSBzaWduYXR1cmVcclxuICAgICAgICAgICAgcmVzb2x2ZShuZXcgVWludDhBcnJheShzaWduYXR1cmUpKTtcclxuXHJcbiAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLWhhc2hITUFDJywgZXJyKTtcclxuICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogdmVyaWZpZXMgYW4gaGFzaCB1c2luZyB0aGUgSE1BQyBhbGdvcml0aG1cclxuICAqIEBwYXJhbSAge2J5dGVBcnJheX0gICAga2V5ICAgICAgIGtleSB0byBiZSB1c2VkIGluIHRoZSBobWFjXHJcbiAgKiBAcGFyYW0gIHtzdHJpbmd9ICAgICAgZGF0YSAgICAgICBpbmZvcm1hdGlvbiB0byBiZSBoYXNoZWQgdG8gY29tcGFyZVxyXG4gICogQHBhcmFtICB7Ynl0ZUFycmF5fSAgc2lnbmF0dXJlICAgaGFzaCB0byBjb21wYXJlIHdpdGggdGhlIHJlY2VpdmVkIGRhdGFcclxuICAqIEByZXR1cm4gIHtib29sZWFufSAgIGlzdmFsaWQgICAgIGJvb2xlYW4gc2F5aW5nIGlmIHRoZSBkYXRhIGNvcnJlc3BvbmRzIHRvIHRoZSBoYXNoIHJlY2VpdmVkXHJcbiAgKi9cclxuICB2ZXJpZnlITUFDKGtleSwgZGF0YSwgc2lnbmF0dXJlKSB7XHJcbiAgICBsb2cubG9nKCd2ZXJpZnlITUFDOmtleScsIGtleSk7XHJcbiAgICBsb2cubG9nKCd2ZXJpZnlITUFDOmRhdGEnLCBkYXRhKTtcclxuICAgIGxvZy5sb2coJ3ZlcmlmeUhNQUM6c2lnbmF0dXJlJywgc2lnbmF0dXJlKTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG5cclxuICAgICAgX3RoaXMuX2ltcG9ydEhNQUNrZXkoa2V5KS50aGVuKGZ1bmN0aW9uKGhtYWNLZXkpIHtcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhICE9ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBkYXRhID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XHJcbiAgICAgICAgICBsb2cubG9nKCdDb252ZXJ0aW5nIHZlcmlmeUhNQUMgaW5wdXRlZCBEQVRBOicsIGRhdGEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgX3RoaXMuX2NyeXB0by5zdWJ0bGUudmVyaWZ5KFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnSE1BQydcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBobWFjS2V5LCAvL2Zyb20gZ2VuZXJhdGVLZXkgb3IgaW1wb3J0S2V5IGFib3ZlXHJcbiAgICAgICAgICBzaWduYXR1cmUsIC8vQXJyYXlCdWZmZXIgb2YgdGhlIHNpZ25hdHVyZVxyXG4gICAgICAgICAgZW5jb2RlVVRGOChkYXRhKSAvL0FycmF5QnVmZmVyIG9mIHRoZSBkYXRhXHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24oaXN2YWxpZCkge1xyXG4gICAgICAgICAgLy9yZXR1cm5zIGEgYm9vbGVhbiBvbiB3aGV0aGVyIHRoZSBzaWduYXR1cmUgaXMgdHJ1ZSBvciBub3RcclxuICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by12ZXJpZnlITUFDJywgaXN2YWxpZCk7XHJcbiAgICAgICAgICAgIGxvZy5sb2coJ3ZlcmlmeUhNQUMgcmVzdWx0JywgaXN2YWxpZCk7XHJcbiAgICAgICAgICAgIChpc3ZhbGlkKSA/IHJlc29sdmUoaXN2YWxpZCkgOiByZWplY3QoaXN2YWxpZCk7XHJcblxyXG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICAgIGxvZy5lcnJvcignY3J5cHRvLXZlcmlmeUhNQUMnLCBlcnIpO1xyXG4gICAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBnZW5lcmF0ZXMgYSBSU0EgcHVibGljL3ByaXZhdGUga2V5IHBhaXIgd2l0aCBhIG1vZHVsdXMgbGVuZ3RoIG9mIDIwNDggYml0c1xyXG4gICogQHJldHVybiAge0pTT059ICAga2V5UGFpciAgICBqc29uIGNvbnRhaW5pbmcgdGhlIHB1YmxpYyBhbmQgcHJpdmF0ZSBrZXlzXHJcbiAgKi9cclxuICBnZW5lcmF0ZVJTQUtleVBhaXIoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IGtleVBhaXIgPSB7fTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgIF90aGlzLl9jcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICdSU0EtUFNTJyxcclxuICAgICAgICAgIG1vZHVsdXNMZW5ndGg6IDIwNDgsIC8vY2FuIGJlIDEwMjQsIDIwNDgsIG9yIDQwOTZcclxuICAgICAgICAgIHB1YmxpY0V4cG9uZW50OiBuZXcgVWludDhBcnJheShbMHgwMSwgMHgwMCwgMHgwMV0pLFxyXG4gICAgICAgICAgaGFzaDoge25hbWU6ICdTSEEtMjU2J30gLy9jYW4gYmUgJ1NIQS0xJywgJ1NIQS0yNTYnLCAnU0hBLTM4NCcsIG9yICdTSEEtNTEyJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJ1ZSwgLy93aGV0aGVyIHRoZSBrZXkgaXMgZXh0cmFjdGFibGUgKGkuZS4gY2FuIGJlIHVzZWQgaW4gZXhwb3J0S2V5KVxyXG4gICAgICAgIFsnc2lnbicsICd2ZXJpZnknXSAvL2NhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgJ3NpZ24nIGFuZCAndmVyaWZ5J1xyXG5cclxuICAgICAgKS50aGVuKGZ1bmN0aW9uKGtleSkge1xyXG4gICAgICAgIC8vcmV0dXJucyBhIGtleXBhaXIgb2JqZWN0XHJcbiAgICAgICAgLy8gbG9nLmxvZyhrZXkpO1xyXG5cclxuICAgICAgICBfdGhpcy5fY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoXHJcbiAgICAgICAgICAnc3BraScsIC8vY2FuIGJlICdqd2snIChwdWJsaWMgb3IgcHJpdmF0ZSksICdzcGtpJyAocHVibGljIG9ubHkpLCBvciAncGtjczgnIChwcml2YXRlIG9ubHkpXHJcbiAgICAgICAgICBrZXkucHVibGljS2V5IC8vY2FuIGJlIGEgcHVibGljS2V5IG9yIHByaXZhdGVLZXksIGFzIGxvbmcgYXMgZXh0cmFjdGFibGUgd2FzIHRydWVcclxuICAgICAgICApLnRoZW4oZnVuY3Rpb24ocHVibGljS2V5KSB7XHJcbiAgICAgICAgICAvL3JldHVybnMgdGhlIGV4cG9ydGVkIGtleSBkYXRhXHJcbiAgICAgICAgICBrZXlQYWlyLnB1YmxpYyAgPSBuZXcgVWludDhBcnJheShwdWJsaWNLZXkpO1xyXG4gICAgICAgICAgcmV0dXJuIF90aGlzLl9jcnlwdG8uc3VidGxlLmV4cG9ydEtleShcclxuICAgICAgICAgICAgJ3BrY3M4JywgLy9jYW4gYmUgJ2p3aycgKHB1YmxpYyBvciBwcml2YXRlKSwgJ3Nwa2knIChwdWJsaWMgb25seSksIG9yICdwa2NzOCcgKHByaXZhdGUgb25seSlcclxuICAgICAgICAgICAga2V5LnByaXZhdGVLZXkgLy9jYW4gYmUgYSBwdWJsaWNLZXkgb3IgcHJpdmF0ZUtleSwgYXMgbG9uZyBhcyBleHRyYWN0YWJsZSB3YXMgdHJ1ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKHByaXZhdGVLZXkpIHtcclxuICAgICAgICAgIGtleVBhaXIucHJpdmF0ZSAgPSBuZXcgVWludDhBcnJheShwcml2YXRlS2V5KTtcclxuXHJcbiAgICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tZ2VuZXJhdGVSU0FLZXlQYWlyJywga2V5UGFpcik7XHJcbiAgICAgICAgICByZXNvbHZlKGtleVBhaXIpO1xyXG5cclxuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICAgIGxvZy5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICBsb2cuZXJyb3IoZXJyKTtcclxuICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogR2VuZXJhdGVzIGEgMTI4IGJpdCByYW5kb20gdmFsdWUuXHJcbiAgKiBAcmV0dXJuIHtieXRlQXJyYXl9ICBhcnJheSAgICByYW5kb20gdmFsdWVcclxuICAqL1xyXG4gIGdlbmVyYXRlSVYoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBhcnJheSA9IG5ldyAgVWludDhBcnJheSgxNik7XHJcbiAgICBfdGhpcy5fY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSk7XHJcblxyXG4gICAgcmV0dXJuIGFycmF5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBHZW5lcmF0ZXMgYSAyNTYgYml0IHJhbmRvbSB2YWx1ZS4gMzIgYml0cyBhcmUgZXh0cmF0ZWQgZnJvbSB0aGUgbWFjaGluZSB0aW1lLFxyXG4gICogdGhlIHJlbWFpbmluZyBhcmUgZ2VuZXJhdGVkIHJhbmRvbWx5XHJcbiAgKiBAcmV0dXJuIHtieXRlQXJyYXl9ICBhcnJheSAgICByYW5kb20gdmFsdWVcclxuICAqL1xyXG4gIGdlbmVyYXRlUmFuZG9tKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBsZXQgYXJyYXkgPSBuZXcgIFVpbnQ4QXJyYXkoMzIpO1xyXG4gICAgX3RoaXMuX2NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyYXkpO1xyXG5cclxuICAgIGxldCBkYXRlID0gRGF0ZS5ub3coKTtcclxuXHJcbiAgICBsZXQgZGF0ZUVuY29kZWQgPSBlbmNvZGVVVEY4KGRhdGUudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgLy9leHRyYWN0IHRoZSBsZWFzdCBzaWduaWZpY2FudCA0IGJ5dGVzIGluIHRoZSBkYXRlXHJcbiAgICBsZXQgZmluYWxEYXRlID0gZGF0ZUVuY29kZWQuc2xpY2UoZGF0ZUVuY29kZWQubGVuZ3RoIC0gNCwgZGF0ZUVuY29kZWQubGVuZ3RoKTtcclxuXHJcbiAgICAvLyBhZGQgaW4gdGhlIGZpcnN0IDQgYnl0ZXMgb2YgdGhlIGFycmF5IHRoZSBieXRlcyBleHRyYWN0ZWQgcHJldmlvdXNseTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgaSsrKSB7IGFycmF5W2ldID0gZmluYWxEYXRlW2ldOyB9XHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIGdlbmVyYXRlcyBhIHByZW1hc3RlciBzZWNyZXQgKFBNUykgb2YgNDggYnl0ZXMgKDM4NCBiaXRzKSByYW5kb21seVxyXG4gICogQHJldHVybiB7Ynl0ZUFycmF5fSAgYXJyYXkgICAgcHJlbWFzdGVyIHNlY3JldCBrZXlcclxuICAqL1xyXG4gIGdlbmVyYXRlUE1TKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBsZXQgYXJyYXkgPSBuZXcgVWludDhBcnJheSg0OCk7XHJcbiAgICBfdGhpcy5fY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSk7XHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIGdlbmVyYXRlcyBhIG1hc3RlcktleSBzZWNyZXQgKFBNUykgb2YgNDggYnl0ZXMgKDM4NCBiaXRzKSB1c2luZyB0aGUgcHJlbWFzdGVyIHNlY3JldCBhbmRcclxuICAqIHR3byByYW5kb21zXHJcbiAgKiBAcmV0dXJuIHtieXRlQXJyYXl9ICBhcnJheSAgICBtYXN0ZXIgc2VjcmV0IGtleSB3aXRoIDQ4IGJ5dGVzXHJcbiAgKi9cclxuICBnZW5lcmF0ZU1hc3RlclNlY3JldChobWFjS2V5LCBkYXRhKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgbGV0IGtleSA9IG5ldyBVaW50OEFycmF5KDQ4KTtcclxuICAgICAgbGV0IHNlZWQgPSBkYXRhO1xyXG5cclxuICAgICAgX3RoaXMuX2RpZ2VzdChobWFjS2V5KS50aGVuKChkaWdlc3RlZEtleSkgPT4ge1xyXG5cclxuICAgICAgICBfdGhpcy5oYXNoSE1BQyhkaWdlc3RlZEtleSwgc2VlZCkudGhlbihmdW5jdGlvbihrZXlwYXJ0MCkge1xyXG5cclxuICAgICAgICAgIC8vY29weSB0aGUgZmlyc3QgMzIgYnl0ZXMgaW50byB0aGUga2V5XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDMyOyBpKyspIHsga2V5W2ldID0ga2V5cGFydDBbaV07IH1cclxuICAgICAgICAgIHJldHVybiBfdGhpcy5oYXNoSE1BQyhkaWdlc3RlZEtleSwgc2VlZCArIGtleXBhcnQwKTtcclxuXHJcbiAgICAgICAgfSkudGhlbihmdW5jdGlvbihrZXlwYXJ0MSkge1xyXG5cclxuICAgICAgICAgIC8vY29weSB0aGUgZmlyc3QgMTYgYnl0ZXMgdG8gdGhlIGtleSByZW1haW5pbmcgMTYgYnl0ZXNcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTY7IGkrKykgeyBrZXlbaSArIDMyXSA9IGtleXBhcnQxW2ldOyB9XHJcblxyXG4gICAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLWdlbmVyYXRlTWFzdGVyU2VjcmV0Jywga2V5KTtcclxuICAgICAgICAgIHJlc29sdmUoa2V5KTtcclxuXHJcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tZ2VuZXJhdGVNYXN0ZXJTZWNyZXQnLCBlcnIpO1xyXG4gICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBnZW5lcmF0ZXMgYm90aCB1c2VycyBNQUMgYW5kIGVuY3J5cHRpb24ga2V5cy4gZ2VuZXJhdGUgYXMgb3V0cHV0IGFuIGFycmF5XHJcbiAgKiB3aXRoIDQgYnl0ZUFycmF5IGVhY2ggd2l0aCAzMiBieXRlc1xyXG4gICogQHBhcmFtICB7Ynl0ZUFycmF5fSAgICAgICAgc2VjcmV0ICAgICAgIHNlY3JldCB0byBiZSB1c2VkIGluIHRoZSBITUFDIGZ1bmN0aW9uXHJcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgICAgICBkYXRhICAgICAgICAgaW5mb3JtYXRpb24gdG8gYmUgdXNlZCBhcyBzZWVkXHJcbiAgKiBAcmV0dXJuIHtBcnJheTxieXRlQXJyYXk+fSBrZXkgICAgICAgICAgYXJyYXkgd2l0aCB0aGUgaW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUga2V5c1xyXG4gICovXHJcbiAgZ2VuZXJhdGVLZXlzKGhtYWNLZXksIGRhdGEpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG5cclxuICAgICAgbGV0IGtleSA9IFtdO1xyXG4gICAgICBsZXQgc2VlZCA9IGRhdGE7XHJcblxyXG4gICAgICAvLyBpdGVyYXRlIDQgdGltZXMgdG8gb2J0YWluIGEgMTAyNCBrZXkgc2l6ZVxyXG4gICAgICBfdGhpcy5oYXNoSE1BQyhobWFjS2V5LCBzZWVkKS50aGVuKGZ1bmN0aW9uKGtleXBhcnQwKSB7XHJcbiAgICAgICAga2V5LnB1c2goa2V5cGFydDApO1xyXG4gICAgICAgIHJldHVybiBfdGhpcy5oYXNoSE1BQyhobWFjS2V5LCBzZWVkICsga2V5cGFydDApO1xyXG5cclxuICAgICAgfSkudGhlbihmdW5jdGlvbihrZXlwYXJ0MSkge1xyXG4gICAgICAgIGtleS5wdXNoKGtleXBhcnQxKTtcclxuICAgICAgICByZXR1cm4gX3RoaXMuaGFzaEhNQUMoaG1hY0tleSwgc2VlZCArIGtleXBhcnQxKTtcclxuXHJcbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24oa2V5cGFydDIpIHtcclxuICAgICAgICBrZXkucHVzaChrZXlwYXJ0Mik7XHJcbiAgICAgICAgcmV0dXJuIF90aGlzLmhhc2hITUFDKGhtYWNLZXksIHNlZWQgKyBrZXlwYXJ0Mik7XHJcblxyXG4gICAgICB9KS50aGVuKGZ1bmN0aW9uKGtleXBhcnQzKSB7XHJcbiAgICAgICAga2V5LnB1c2goa2V5cGFydDMpO1xyXG5cclxuICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tZ2VuZXJhdGVLZXlzJywga2V5KTtcclxuICAgICAgICByZXNvbHZlKGtleSk7XHJcblxyXG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tZ2VuZXJhdGVLZXlzJywgZXJyKTtcclxuICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyBsb2cubG9nKGhtYWNLZXksIGRhdGEpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBfaW1wb3J0UlNBc2lnbktleShwcml2S2V5KSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgX3RoaXMuX2NyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KFxyXG4gICAgICAgICdwa2NzOCcsIC8vY2FuIGJlICdqd2snIChwdWJsaWMgb3IgcHJpdmF0ZSksICdzcGtpJyAocHVibGljIG9ubHkpLCBvciAncGtjczgnIChwcml2YXRlIG9ubHkpXHJcbiAgICAgICAgcHJpdktleSxcclxuICAgICAgICB7ICAgLy90aGVzZSBhcmUgdGhlIGFsZ29yaXRobSBvcHRpb25zXHJcbiAgICAgICAgICBuYW1lOiAnUlNBU1NBLVBLQ1MxLXYxXzUnLFxyXG4gICAgICAgICAgaGFzaDoge25hbWU6ICdTSEEtMjU2J30gLy9jYW4gYmUgJ1NIQS0xJywgJ1NIQS0yNTYnLCAnU0hBLTM4NCcsIG9yICdTSEEtNTEyJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJ1ZSwgLy93aGV0aGVyIHRoZSBrZXkgaXMgZXh0cmFjdGFibGUgKGkuZS4gY2FuIGJlIHVzZWQgaW4gZXhwb3J0S2V5KVxyXG4gICAgICAgIFsnc2lnbiddIC8vJ3ZlcmlmeScgZm9yIHB1YmxpYyBrZXkgaW1wb3J0LCAnc2lnbicgZm9yIHByaXZhdGUga2V5IGltcG9ydHNcclxuICAgICAgKVxyXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uKHByaXZhdGVLZXkpIHtcclxuICAgICAgICAvL3JldHVybnMgYSBwdWJsaWNLZXkgKG9yIHByaXZhdGVLZXkgaWYgeW91IGFyZSBpbXBvcnRpbmcgYSBwcml2YXRlIGtleSlcclxuICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tX2ltcG9ydFJTQXNpZ25LZXknLCBwcml2YXRlS2V5KTtcclxuICAgICAgICAgIHJlc29sdmUocHJpdmF0ZUtleSk7XHJcblxyXG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgICAgbG9nLmVycm9yKCdjcnlwdG8tX2ltcG9ydFJTQXNpZ25LZXknLCBlcnIpO1xyXG4gICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIF9pbXBvcnRSU0F2ZXJpZnlLZXkocHViS2V5KSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgX3RoaXMuX2NyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KFxyXG4gICAgICAgICdzcGtpJywgLy9jYW4gYmUgJ2p3aycgKHB1YmxpYyBvciBwcml2YXRlKSwgJ3Nwa2knIChwdWJsaWMgb25seSksIG9yICdwa2NzOCcgKHByaXZhdGUgb25seSlcclxuICAgICAgICBwdWJLZXksXHJcbiAgICAgICAgeyAgIC8vdGhlc2UgYXJlIHRoZSBhbGdvcml0aG0gb3B0aW9uc1xyXG4gICAgICAgICAgbmFtZTogJ1JTQVNTQS1QS0NTMS12MV81JyxcclxuICAgICAgICAgIGhhc2g6IHtuYW1lOiAnU0hBLTI1Nid9IC8vY2FuIGJlICdTSEEtMScsICdTSEEtMjU2JywgJ1NIQS0zODQnLCBvciAnU0hBLTUxMidcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRydWUsIC8vd2hldGhlciB0aGUga2V5IGlzIGV4dHJhY3RhYmxlIChpLmUuIGNhbiBiZSB1c2VkIGluIGV4cG9ydEtleSlcclxuICAgICAgICBbJ3ZlcmlmeSddIC8vJ3ZlcmlmeScgZm9yIHB1YmxpYyBrZXkgaW1wb3J0LCAnc2lnbicgZm9yIHByaXZhdGUga2V5IGltcG9ydHNcclxuICAgICAgKVxyXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uKHB1YmxpY0tleSkge1xyXG4gICAgICAgIC8vcmV0dXJucyBhIHB1YmxpY0tleSAob3IgcHJpdmF0ZUtleSBpZiB5b3UgYXJlIGltcG9ydGluZyBhIHByaXZhdGUga2V5KVxyXG4gICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by1faW1wb3J0UlNBdmVyaWZ5S2V5JywgcHVibGljS2V5KTtcclxuICAgICAgICAgIHJlc29sdmUocHVibGljS2V5KTtcclxuXHJcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICBsb2cuZXJyb3IoJ2NyeXB0by1faW1wb3J0UlNBdmVyaWZ5S2V5JywgZXJyKTtcclxuICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBfaW1wb3J0UlNBZW5jcnlwdEtleShwdWJLZXkpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICBfdGhpcy5fY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoXHJcbiAgICAgICAgJ3Nwa2knLCAvL2NhbiBiZSAnandrJyAocHVibGljIG9yIHByaXZhdGUpLCAnc3BraScgKHB1YmxpYyBvbmx5KSwgb3IgJ3BrY3M4JyAocHJpdmF0ZSBvbmx5KVxyXG4gICAgICAgIHB1YktleSxcclxuICAgICAgICB7ICAgLy90aGVzZSBhcmUgdGhlIGFsZ29yaXRobSBvcHRpb25zXHJcbiAgICAgICAgICBuYW1lOiAnUlNBLU9BRVAnLFxyXG4gICAgICAgICAgaGFzaDoge25hbWU6ICdTSEEtMjU2J30gLy9jYW4gYmUgJ1NIQS0xJywgJ1NIQS0yNTYnLCAnU0hBLTM4NCcsIG9yICdTSEEtNTEyJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJ1ZSwgLy93aGV0aGVyIHRoZSBrZXkgaXMgZXh0cmFjdGFibGUgKGkuZS4gY2FuIGJlIHVzZWQgaW4gZXhwb3J0S2V5KVxyXG4gICAgICAgIFsnZW5jcnlwdCddIC8vJ2VuY3J5cHQnIG9yICd3cmFwS2V5JyBmb3IgcHVibGljIGtleSBpbXBvcnQgb3JcclxuICAgICAgICAvLydkZWNyeXB0JyBvciAndW53cmFwS2V5JyBmb3IgcHJpdmF0ZSBrZXkgaW1wb3J0c1xyXG4gICAgICApXHJcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24ocHVibGljS2V5KSB7XHJcbiAgICAgICAgLy9yZXR1cm5zIGEgcHVibGljS2V5IChvciBwcml2YXRlS2V5IGlmIHlvdSBhcmUgaW1wb3J0aW5nIGEgcHJpdmF0ZSBrZXkpXHJcbiAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLV9pbXBvcnRSU0FlbmNyeXB0S2V5JywgcHVibGljS2V5KTtcclxuICAgICAgICAgIHJlc29sdmUocHVibGljS2V5KTtcclxuXHJcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICBsb2cuZXJyb3IoJ2NyeXB0by1faW1wb3J0UlNBZW5jcnlwdEtleScsIGVyci5uYW1lKTtcclxuICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBfaW1wb3J0UlNBZGVjcnlwdEtleShwcml2S2V5KSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgX3RoaXMuX2NyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KFxyXG4gICAgICAgICdwa2NzOCcsIC8vY2FuIGJlICdqd2snIChwdWJsaWMgb3IgcHJpdmF0ZSksICdzcGtpJyAocHVibGljIG9ubHkpLCBvciAncGtjczgnIChwcml2YXRlIG9ubHkpXHJcbiAgICAgICAgcHJpdktleSxcclxuICAgICAgICB7ICAgLy90aGVzZSBhcmUgdGhlIGFsZ29yaXRobSBvcHRpb25zXHJcbiAgICAgICAgICBuYW1lOiAnUlNBLU9BRVAnLFxyXG4gICAgICAgICAgaGFzaDoge25hbWU6ICdTSEEtMjU2J30gLy9jYW4gYmUgJ1NIQS0xJywgJ1NIQS0yNTYnLCAnU0hBLTM4NCcsIG9yICdTSEEtNTEyJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJ1ZSwgLy93aGV0aGVyIHRoZSBrZXkgaXMgZXh0cmFjdGFibGUgKGkuZS4gY2FuIGJlIHVzZWQgaW4gZXhwb3J0S2V5KVxyXG4gICAgICAgIFsnZGVjcnlwdCddIC8vJ2VuY3J5cHQnIG9yICd3cmFwS2V5JyBmb3IgcHVibGljIGtleSBpbXBvcnQgb3JcclxuICAgICAgICAvLydkZWNyeXB0JyBvciAndW53cmFwS2V5JyBmb3IgcHJpdmF0ZSBrZXkgaW1wb3J0c1xyXG4gICAgICApXHJcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24ocHJpdmF0ZUtleSkge1xyXG4gICAgICAgIC8vcmV0dXJucyBhIHB1YmxpY0tleSAob3IgcHJpdmF0ZUtleSBpZiB5b3UgYXJlIGltcG9ydGluZyBhIHByaXZhdGUga2V5KVxyXG4gICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by1faW1wb3J0UlNBZGVjcnlwdEtleScsIHByaXZhdGVLZXkpO1xyXG4gICAgICAgICAgcmVzb2x2ZShwcml2YXRlS2V5KTtcclxuXHJcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICBsb2cuZXJyb3IoJ2NyeXB0by1faW1wb3J0UlNBZGVjcnlwdEtleScsIGVycik7XHJcbiAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29uY2F0UE1Td2l0aFJhbmRvbXMocG1zLCB0b1JhbmRvbSwgZnJvbVJhbmRvbSkge1xyXG5cclxuICAgIGxldCBmaW5hbEtleSA9IG5ldyBVaW50OEFycmF5KHBtcy5sZW5ndGggKyB0b1JhbmRvbS5sZW5ndGggKyBmcm9tUmFuZG9tLmxlbmd0aCk7XHJcblxyXG4gICAgLy8gYWRkIFByZW1hc3RlcktleVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZmluYWxLZXlbaV0gPSBwbXNbaV07XHJcbiAgICB9XHJcblxyXG4gICAgLy9hZGQgdG8gcmFuZG9tXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRvUmFuZG9tLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZpbmFsS2V5W2kgKyBwbXMubGVuZ3RoXSA9IHBtc1tpXTtcclxuICAgIH1cclxuXHJcbiAgICAvL2FkZCBmcm9tIHJhbmRvbVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmcm9tUmFuZG9tLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZpbmFsS2V5W2kgKyBwbXMubGVuZ3RoICsgdG9SYW5kb20ubGVuZ3RoXSA9IHBtc1tpXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmluYWxLZXk7XHJcbiAgfVxyXG5cclxuICBfZ2VuZXJhdGUyNTZiaXRLZXkoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IGFycmF5ID0gbmV3ICBVaW50OEFycmF5KDMyKTtcclxuICAgIF90aGlzLl9jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycmF5KTtcclxuXHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIGltcG9ydHMgdGhlIHNlY3JldCB0byB0aGUgSE1BQyBmdW5jdGlvblxyXG4gICogQHBhcmFtICB7Ynl0ZUFycmF5fSAgIGFycmF5QnVmZmVyICAgICBieXRlcyB0byBpbXBvcnQgYXMga2V5XHJcbiAgKiBAcmV0dXJuIHtKU09OfSAgICAgICBrZXkgICAgICAgICAgICAgIGtleSByZWFkeSB0byBiZSB1c2VkIGluIHRoZSBITUFDIGNyeXB0b2dyYXBoaWMgZnVuY3Rpb25cclxuICAqL1xyXG4gIF9pbXBvcnRITUFDa2V5KGFycmF5QnVmZmVyKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIF90aGlzLl9kaWdlc3QoYXJyYXlCdWZmZXIpLnRoZW4oKGtleSkgPT4ge1xyXG5cclxuICAgICAgICBfdGhpcy5fY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoXHJcbiAgICAgICAgICAncmF3JywgLy9jYW4gYmUgJ2p3aycgb3IgJ3JhdydcclxuICAgICAgICAgIGtleSxcclxuICAgICAgICAgIHsgICAvL3RoaXMgaXMgdGhlIGFsZ29yaXRobSBvcHRpb25zXHJcbiAgICAgICAgICAgIG5hbWU6ICdITUFDJyxcclxuICAgICAgICAgICAgaGFzaDoge25hbWU6ICdTSEEtMjU2J30sIC8vY2FuIGJlICdTSEEtMScsICdTSEEtMjU2JywgJ1NIQS0zODQnLCBvciAnU0hBLTUxMidcclxuICAgICAgICAgICAgbGVuZ3RoOiAyNTYgLy9vcHRpb25hbCwgaWYgeW91IHdhbnQgeW91ciBrZXkgbGVuZ3RoIHRvIGRpZmZlciBmcm9tIHRoZSBoYXNoIGZ1bmN0aW9uJ3MgYmxvY2sgbGVuZ3RoXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdHJ1ZSwgLy93aGV0aGVyIHRoZSBrZXkgaXMgZXh0cmFjdGFibGUgKGkuZS4gY2FuIGJlIHVzZWQgaW4gZXhwb3J0S2V5KVxyXG4gICAgICAgICAgWydzaWduJywgJ3ZlcmlmeSddIC8vY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiAnc2lnbicgYW5kICd2ZXJpZnknXHJcbiAgICAgICAgKS50aGVuKGZ1bmN0aW9uKGtleSkge1xyXG4gICAgICAgICAgLy9yZXR1cm5zIHRoZSBzeW1tZXRyaWMga2V5XHJcbiAgICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tX2ltcG9ydEhNQUNrZXknLCBrZXkpO1xyXG4gICAgICAgICAgcmVzb2x2ZShrZXkpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBfZGlnZXN0KHZhbHVlKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgX3RoaXMuX2NyeXB0by5zdWJ0bGUuZGlnZXN0KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICdTSEEtMjU2J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdmFsdWUgLy9UaGUgZGF0YSB5b3Ugd2FudCB0byBoYXNoIGFzIGFuIEFycmF5QnVmZmVyXHJcbiAgICAgIClcclxuICAgICAgICAudGhlbihmdW5jdGlvbihoYXNoKSB7XHJcbiAgICAgICAgLy9yZXR1cm5zIHRoZSBoYXNoIGFzIGFuIEFycmF5QnVmZmVyXHJcbiAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLWRpZ2VzdCcsIG5ldyBVaW50OEFycmF5KGhhc2gpKTtcclxuICAgICAgICAgIHJlc29sdmUobmV3IFVpbnQ4QXJyYXkoaGFzaCkpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgICAgbG9nLmVycm9yKGVycik7XHJcbiAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIF9pbXBvcnRBRVNrZXkoYXJyYXlCdWZmZXIpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgIF90aGlzLl9jcnlwdG8uc3VidGxlLmltcG9ydEtleShcclxuICAgICAgICAncmF3JywgLy9jYW4gYmUgJ2p3aycgb3IgJ3JhdydcclxuICAgICAgICBhcnJheUJ1ZmZlcixcclxuICAgICAgICB7ICAgLy90aGlzIGlzIHRoZSBhbGdvcml0aG0gb3B0aW9uc1xyXG4gICAgICAgICAgbmFtZTogJ0FFUy1DQkMnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cnVlLCAvL3doZXRoZXIgdGhlIGtleSBpcyBleHRyYWN0YWJsZSAoaS5lLiBjYW4gYmUgdXNlZCBpbiBleHBvcnRLZXkpXHJcbiAgICAgICAgWydlbmNyeXB0JywgJ2RlY3J5cHQnXSAvL2NhbiBiZSAnZW5jcnlwdCcsICdkZWNyeXB0JywgJ3dyYXBLZXknLCBvciAndW53cmFwS2V5J1xyXG4gICAgICApXHJcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24oa2V5KSB7XHJcbiAgICAgICAgLy9yZXR1cm5zIHRoZSBzeW1tZXRyaWMga2V5XHJcbiAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLWltcG9ydEFFU2tleScsIGtleSk7XHJcbiAgICAgICAgICByZXNvbHZlKGtleSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICBsb2cuZXJyb3IoJ2NyeXB0by1pbXBvcnRBRVNrZXknLCBlcnIpO1xyXG4gICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIF9zaGEyNTYoc3RyKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IGJ1ZmZlciA9IG5ldyBUZXh0RW5jb2RlcigndXRmLTgnKS5lbmNvZGUoc3RyKTtcclxuICAgIHJldHVybiBfdGhpcy5fY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ1NIQS0yNTYnLCBidWZmZXIpLnRoZW4oZnVuY3Rpb24oaGFzaCkge1xyXG4gICAgICByZXR1cm4gX3RoaXMuX2hleChoYXNoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX2hleChidWZmZXIpIHtcclxuICAgIGxldCBoZXhDb2RlcyA9IFtdO1xyXG4gICAgbGV0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmlldy5ieXRlTGVuZ3RoOyBpICs9IDQpIHtcclxuICAgICAgLy8gVXNpbmcgZ2V0VWludDMyIHJlZHVjZXMgdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIG5lZWRlZCAod2UgcHJvY2VzcyA0IGJ5dGVzIGVhY2ggdGltZSlcclxuICAgICAgbGV0IHZhbHVlID0gdmlldy5nZXRVaW50MzIoaSlcclxuXHJcbiAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKDE2KVxyXG5cclxuICAgICAgbGV0IHBhZGRpbmcgPSAnMDAwMDAwMDAnXHJcbiAgICAgIGxldCBwYWRkZWRWYWx1ZSA9IChwYWRkaW5nICsgc3RyaW5nVmFsdWUpLnNsaWNlKC1wYWRkaW5nLmxlbmd0aClcclxuICAgICAgaGV4Q29kZXMucHVzaChwYWRkZWRWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSm9pbiBhbGwgdGhlIGhleCBzdHJpbmdzIGludG8gb25lXHJcbiAgICByZXR1cm4gaGV4Q29kZXMuam9pbignJyk7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IENyeXB0bztcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9jcnlwdG9NYW5hZ2VyL0NyeXB0by5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTs7Ozs7QUFBQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBOzs7OztBQUtBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBREE7QUFJQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQURBO0FBSUE7QUFMQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFEQTtBQUlBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFEQTtBQUlBO0FBQ0E7QUFOQTtBQVNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQVRBO0FBWUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUZBO0FBS0E7QUFOQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBREE7QUFJQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFEQTtBQUlBO0FBQ0E7QUFOQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFUQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFBQTtBQUdBO0FBUkE7QUFXQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFBQTtBQUdBO0FBUkE7QUFXQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFUQTtBQVlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQVRBO0FBWUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBVEE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQURBO0FBREE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQURBO0FBSUE7QUFQQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///490\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.encodeUTF8 = encodeUTF8;\nexports.decodeUTF8 = decodeUTF8;\n// Marshals a string to Uint8Array.\nfunction encodeUTF8(s) {\n\tvar i = 0;\n\tvar bytes = new Uint8Array(s.length * 4);\n\tfor (var ci = 0; ci != s.length; ci++) {\n\t\ttry {\n\t\t\tvar xxx = s.charCodeAt(ci);\n\t\t} catch (err) {\n\t\t\tconsole.log(err.message);\n\t\t\treturn;\n\t\t}\n\t\tvar c = s.charCodeAt(ci);\n\t\tif (c < 128) {\n\t\t\tbytes[i++] = c;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c < 2048) {\n\t\t\tbytes[i++] = c >> 6 | 192;\n\t\t} else {\n\t\t\tif (c > 0xd7ff && c < 0xdc00) {\n\t\t\t\tif (++ci == s.length) throw 'UTF-8 encode: incomplete surrogate pair';\n\t\t\t\tvar c2 = s.charCodeAt(ci);\n\t\t\t\tif (c2 < 0xdc00 || c2 > 0xdfff) throw 'UTF-8 encode: second char code 0x' + c2.toString(16) + ' at index ' + ci + ' in surrogate pair out of range';\n\t\t\t\tc = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n\t\t\t\tbytes[i++] = c >> 18 | 240;\n\t\t\t\tbytes[i++] = c >> 12 & 63 | 128;\n\t\t\t} else {\n\t\t\t\t// c <= 0xffff\n\t\t\t\tbytes[i++] = c >> 12 | 224;\n\t\t\t}\n\t\t\tbytes[i++] = c >> 6 & 63 | 128;\n\t\t}\n\t\tbytes[i++] = c & 63 | 128;\n\t}\n\treturn bytes.subarray(0, i);\n}\n\n// Unmarshals an Uint8Array to string.\nfunction decodeUTF8(bytes) {\n\tvar s = '';\n\tvar i = 0;\n\twhile (i < bytes.length) {\n\t\tvar c = bytes[i++];\n\t\tif (c > 127) {\n\t\t\tif (c > 191 && c < 224) {\n\t\t\t\tif (i >= bytes.length) throw 'UTF-8 decode: incomplete 2-byte sequence';\n\t\t\t\tc = (c & 31) << 6 | bytes[i] & 63;\n\t\t\t} else if (c > 223 && c < 240) {\n\t\t\t\tif (i + 1 >= bytes.length) throw 'UTF-8 decode: incomplete 3-byte sequence';\n\t\t\t\tc = (c & 15) << 12 | (bytes[i] & 63) << 6 | bytes[++i] & 63;\n\t\t\t} else if (c > 239 && c < 248) {\n\t\t\t\tif (i + 2 >= bytes.length) throw 'UTF-8 decode: incomplete 4-byte sequence';\n\t\t\t\tc = (c & 7) << 18 | (bytes[i] & 63) << 12 | (bytes[++i] & 63) << 6 | bytes[++i] & 63;\n\t\t\t} else throw 'UTF-8 decode: unknown multibyte start 0x' + c.toString(16) + ' at index ' + (i - 1);\n\t\t\t++i;\n\t\t}\n\n\t\tif (c <= 0xffff) s += String.fromCharCode(c);else if (c <= 0x10ffff) {\n\t\t\tc -= 0x10000;\n\t\t\ts += String.fromCharCode(c >> 10 | 0xd800);\n\t\t\ts += String.fromCharCode(c & 0x3FF | 0xdc00);\n\t\t} else throw 'UTF-8 decode: code point 0x' + c.toString(16) + ' exceeds UTF-16 reach';\n\t}\n\treturn s;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9jcnlwdG9NYW5hZ2VyL3V0ZjguanM/M2IxOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBNYXJzaGFscyBhIHN0cmluZyB0byBVaW50OEFycmF5LlxyXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlVVRGOChzKSB7XHJcblx0dmFyIGkgPSAwO1xyXG5cdHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KHMubGVuZ3RoICogNCk7XHJcblx0Zm9yICh2YXIgY2kgPSAwOyBjaSAhPSBzLmxlbmd0aDsgY2krKykge1xyXG4gICAgdHJ5e1xyXG4gICAgICB2YXIgeHh4ID0gcy5jaGFyQ29kZUF0KGNpKTtcclxuICAgIH0gY2F0Y2ggKGVycil7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVyci5tZXNzYWdlKTtcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIH1cclxuXHRcdHZhciBjID0gcy5jaGFyQ29kZUF0KGNpKTtcclxuXHRcdGlmIChjIDwgMTI4KSB7XHJcblx0XHRcdGJ5dGVzW2krK10gPSBjO1xyXG5cdFx0XHRjb250aW51ZTtcclxuXHRcdH1cclxuXHRcdGlmIChjIDwgMjA0OCkge1xyXG5cdFx0XHRieXRlc1tpKytdID0gYyA+PiA2IHwgMTkyO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKGMgPiAweGQ3ZmYgJiYgYyA8IDB4ZGMwMCkge1xyXG5cdFx0XHRcdGlmICgrK2NpID09IHMubGVuZ3RoKSB0aHJvdyAnVVRGLTggZW5jb2RlOiBpbmNvbXBsZXRlIHN1cnJvZ2F0ZSBwYWlyJztcclxuXHRcdFx0XHR2YXIgYzIgPSBzLmNoYXJDb2RlQXQoY2kpO1xyXG5cdFx0XHRcdGlmIChjMiA8IDB4ZGMwMCB8fCBjMiA+IDB4ZGZmZikgdGhyb3cgJ1VURi04IGVuY29kZTogc2Vjb25kIGNoYXIgY29kZSAweCcgKyBjMi50b1N0cmluZygxNikgKyAnIGF0IGluZGV4ICcgKyBjaSArICcgaW4gc3Vycm9nYXRlIHBhaXIgb3V0IG9mIHJhbmdlJztcclxuXHRcdFx0XHRjID0gMHgxMDAwMCArICgoYyAmIDB4MDNmZikgPDwgMTApICsgKGMyICYgMHgwM2ZmKTtcclxuXHRcdFx0XHRieXRlc1tpKytdID0gYyA+PiAxOCB8IDI0MDtcclxuXHRcdFx0XHRieXRlc1tpKytdID0gYz4+IDEyICYgNjMgfCAxMjg7XHJcblx0XHRcdH0gZWxzZSB7IC8vIGMgPD0gMHhmZmZmXHJcblx0XHRcdFx0Ynl0ZXNbaSsrXSA9IGMgPj4gMTIgfCAyMjQ7XHJcblx0XHRcdH1cclxuXHRcdFx0Ynl0ZXNbaSsrXSA9IGMgPj4gNiAmIDYzIHwgMTI4O1xyXG5cdFx0fVxyXG5cdFx0Ynl0ZXNbaSsrXSA9IGMgJiA2MyB8IDEyODtcclxuXHR9XHJcblx0cmV0dXJuIGJ5dGVzLnN1YmFycmF5KDAsIGkpO1xyXG59XHJcblxyXG4vLyBVbm1hcnNoYWxzIGFuIFVpbnQ4QXJyYXkgdG8gc3RyaW5nLlxyXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVVRGOChieXRlcykge1xyXG5cdHZhciBzID0gJyc7XHJcblx0dmFyIGkgPSAwO1xyXG5cdHdoaWxlIChpIDwgYnl0ZXMubGVuZ3RoKSB7XHJcblx0XHR2YXIgYyA9IGJ5dGVzW2krK107XHJcblx0XHRpZiAoYyA+IDEyNykge1xyXG5cdFx0XHRpZiAoYyA+IDE5MSAmJiBjIDwgMjI0KSB7XHJcblx0XHRcdFx0aWYgKGkgPj0gYnl0ZXMubGVuZ3RoKSB0aHJvdyAnVVRGLTggZGVjb2RlOiBpbmNvbXBsZXRlIDItYnl0ZSBzZXF1ZW5jZSc7XHJcblx0XHRcdFx0YyA9IChjICYgMzEpIDw8IDYgfCBieXRlc1tpXSAmIDYzO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGMgPiAyMjMgJiYgYyA8IDI0MCkge1xyXG5cdFx0XHRcdGlmIChpICsgMSA+PSBieXRlcy5sZW5ndGgpIHRocm93ICdVVEYtOCBkZWNvZGU6IGluY29tcGxldGUgMy1ieXRlIHNlcXVlbmNlJztcclxuXHRcdFx0XHRjID0gKGMgJiAxNSkgPDwgMTIgfCAoYnl0ZXNbaV0gJiA2MykgPDwgNiB8IGJ5dGVzWysraV0gJiA2MztcclxuXHRcdFx0fSBlbHNlIGlmIChjID4gMjM5ICYmIGMgPCAyNDgpIHtcclxuXHRcdFx0XHRpZiAoaSsyID49IGJ5dGVzLmxlbmd0aCkgdGhyb3cgJ1VURi04IGRlY29kZTogaW5jb21wbGV0ZSA0LWJ5dGUgc2VxdWVuY2UnO1xyXG5cdFx0XHRcdGMgPSAoYyAmIDcpIDw8IDE4IHwgKGJ5dGVzW2ldICYgNjMpIDw8IDEyIHwgKGJ5dGVzWysraV0gJiA2MykgPDwgNiB8IGJ5dGVzWysraV0gJiA2MztcclxuXHRcdFx0fSBlbHNlIHRocm93ICdVVEYtOCBkZWNvZGU6IHVua25vd24gbXVsdGlieXRlIHN0YXJ0IDB4JyArIGMudG9TdHJpbmcoMTYpICsgJyBhdCBpbmRleCAnICsgKGkgLSAxKTtcclxuXHRcdFx0KytpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjIDw9IDB4ZmZmZikgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xyXG5cdFx0ZWxzZSBpZiAoYyA8PSAweDEwZmZmZikge1xyXG5cdFx0XHRjIC09IDB4MTAwMDA7XHJcblx0XHRcdHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjID4+IDEwIHwgMHhkODAwKVxyXG5cdFx0XHRzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyAmIDB4M0ZGIHwgMHhkYzAwKVxyXG5cdFx0fSBlbHNlIHRocm93ICdVVEYtOCBkZWNvZGU6IGNvZGUgcG9pbnQgMHgnICsgYy50b1N0cmluZygxNikgKyAnIGV4Y2VlZHMgVVRGLTE2IHJlYWNoJztcclxuXHR9XHJcblx0cmV0dXJuIHM7XHJcbn1cclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9jcnlwdG9NYW5hZ2VyL3V0ZjguanMiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0E7QUFxQ0E7QUF0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///491\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = __webpack_require__(97);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(14);\n\nvar _AddressAllocation = __webpack_require__(99);\n\nvar _AddressAllocation2 = _interopRequireDefault(_AddressAllocation);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('loader'); // Log System\n\nvar Loader = function () {\n function Loader(runtimeURL, runtimeConfiguration, runtimeDescriptorsInstance) {\n (0, _classCallCheck3.default)(this, Loader);\n\n if (!runtimeConfiguration) throw Error('[Runtime.Loader] The descriptor need to know the runtime configuration');\n if (!runtimeDescriptorsInstance) throw Error('[Runtime.Loader] The descriptor need to know the runtime Descriptor instance');\n\n this.log = log;\n\n this.runtimeConfiguration = runtimeConfiguration;\n this.descriptors = runtimeDescriptorsInstance;\n }\n\n /**\r\n * Set runtime url\r\n * @param {string} value runtimeURL\r\n */\n\n\n (0, _createClass3.default)(Loader, [{\n key: 'loadHyperty',\n\n\n /**\r\n * Deploy Hyperty from Catalogue URL\r\n *\r\n * @see https://github.com/reTHINK-project/specs/tree/master/datamodel/core/address\r\n *\r\n * @param {URL.HypertyCatalogueURL} hypertyCatalogueURL - The Catalogue URL used to identify descriptors in the Catalogue.\r\n * @param {boolean|URL.HypertyURL} [reuseURL=false] reuseURL - reuseURL is used to reuse the hypertyURL previously registred, by default the reuse is disabled;\r\n * @param {URL} appURL - the app url origin address;\r\n * @param {object} IdpConstraint - constraints to be used when selecting the identity to be associated with the Hyperty including origin, idp, and idHint.\r\n * @returns {Promise} this is Promise and returns true if all components are loaded with success or an error if someone fails.\r\n *\r\n * @memberOf Loader\r\n */\n value: function loadHyperty(hypertyCatalogueURL) {\n var reuseURL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var _this = this;\n\n var IdpConstraint = arguments[2];\n var appURL = arguments[3];\n\n\n if (!this._readyToUse()) return false;\n if (!hypertyCatalogueURL) throw new Error('[Runtime.Loader] Hyperty descriptor url parameter is needed');\n\n return new _promise2.default(function (resolve, reject) {\n\n var _hypertyURL = void 0;\n var _hypertySandbox = void 0;\n var _hypertyDescriptor = void 0;\n var _hypertySourcePackage = void 0;\n var haveError = false;\n\n var errorReason = function errorReason(reason) {\n log.info('[Runtime.Loader] Something failed on the deploy hyperty: ', reason);\n reject(reason);\n };\n\n var handleError = function handleError(reason) {\n haveError = true;\n reject(reason);\n };\n\n // Get Hyperty descriptor\n // TODO: the request Module should be changed,\n // because at this moment it is incompatible with nodejs;\n // Probably we need to pass a factory like we do for sandboxes;\n log.info('[Runtime.Loader] ------------------ Hyperty ------------------------');\n log.info('[Runtime.Loader] Get hyperty descriptor for :', hypertyCatalogueURL);\n return _this.descriptors.getHypertyDescriptor(hypertyCatalogueURL).then(function (hypertyDescriptor) {\n // at this point, we have completed \"step 2 and 3\" as shown in https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md\n log.info('[Runtime.Loader] 1: return hyperty descriptor');\n\n // hyperty contains the full path of the catalogue URL, e.g.\n // catalogue.rethink.eu/.well-known/..........\n _hypertyDescriptor = hypertyDescriptor;\n\n var sourcePackageURL = hypertyDescriptor.sourcePackageURL;\n\n if (sourcePackageURL === '/sourcePackage') {\n return hypertyDescriptor.sourcePackage;\n }\n\n // Get the hyperty source code\n return _this.runtimeCatalogue.getSourcePackageFromURL(sourcePackageURL);\n }, handleError).then(function (sourcePackage) {\n if (haveError) return false;\n\n log.info('[Runtime.Loader] 2: return hyperty source code');\n\n // at this point, we have completed \"step 4 and 5\" as shown in https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md\n\n _hypertySourcePackage = sourcePackage;\n\n //\n // steps 6 -- 9 are skipped.\n // TODO: on release of core 0.2;\n // TODO: Promise to check the policy engine\n\n // mock-up code;\n // temporary code, only\n var policy = true;\n\n return policy;\n }, handleError).then(function (policyResult) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 3: return policy engine result' + policyResult);\n\n // we have completed step 6 to 9 of https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md right now.\n //\n // Steps 6 -- 9\n // As a result of the sipped steps, we know at this point if we execute\n // inSameSandbox or not.\n //\n\n // For testing, just assume we execute in same Sandbox.\n var inSameSandbox = true;\n var sandbox = void 0;\n\n if (inSameSandbox) {\n\n // this don't need be a Promise;\n sandbox = _this.registry.getAppSandbox();\n\n // we have completed step 11 here.\n } else {\n\n var domain = (0, _utils.divideURL)(hypertyCatalogueURL).domain;\n\n // getSandbox, this will return a promise;\n sandbox = _this.registry.getSandbox(domain);\n }\n\n // this will return the sandbox or one promise to getSandbox;\n return sandbox;\n }, handleError).then(function (sandbox) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 4: return the sandbox', sandbox);\n\n // Return the sandbox indepentely if it running in the same sandbox or not\n // we have completed step 14 here.\n return sandbox;\n }, function (reason) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 4.1: Try to register a new sandbox');\n\n // check if the sandbox is registed for this hyperty descriptor url;\n // Make Steps xxx --- xxx\n // Instantiate the Sandbox\n\n var hypertyCapabilities = {};\n if (_hypertyDescriptor && _hypertyDescriptor.hasOwnProperty('capabilities')) {\n hypertyCapabilities = _hypertyDescriptor.stubCapabilities;\n }\n\n return _this._runtimeFactory.createSandbox(hypertyCapabilities).then(function (sandbox) {\n\n sandbox.addListener('*', function (msg) {\n _this.messageBus.postMessage(msg);\n });\n\n return sandbox;\n });\n }, handleError).then(function (sandbox) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 5: return sandbox and register');\n\n _hypertySandbox = sandbox;\n\n var numberOfAddresses = 1;\n //debugger;\n return _this._addressAllocation.create(_this._registry._domain, numberOfAddresses, _hypertyDescriptor, 'hyperty', reuseURL);\n }, handleError).then(function (addresses) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 6: return the addresses for the hyperty', addresses);\n\n // Register hyperty\n return _this.registry.registerHyperty(_hypertySandbox, hypertyCatalogueURL, _hypertyDescriptor, addresses, IdpConstraint);\n }, handleError).then(function (registrationResult) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 7: registration result', registrationResult);\n\n // we have completed step 16 of https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md right now.\n _hypertyURL = registrationResult.url;\n\n // Extend original hyperty configuration;\n var configuration = {};\n if (!(0, _utils.emptyObject)(_hypertyDescriptor.configuration)) {\n try {\n configuration = (0, _assign2.default)({}, JSON.parse(_hypertyDescriptor.configuration));\n } catch (e) {\n configuration = _hypertyDescriptor.configuration;\n }\n }\n configuration.runtimeURL = _this._runtimeURL;\n\n if (registrationResult.p2pHandler) {\n configuration.p2pHandler = registrationResult.p2pHandler;\n configuration.p2pRequester = registrationResult.p2pRequester;\n }\n\n // We will deploy the component - step 17 of https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md right now.\n\n try {\n return _hypertySandbox.deployComponent(_hypertySourcePackage.sourceCode, _hypertyURL, configuration);\n } catch (e) {\n log.info('[Runtime.Loader] Error on deploy component:', e);\n reject(e);\n }\n }, handleError).then(function (deployComponentStatus) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 8: Deploy component status for hyperty: ', deployComponentStatus);\n\n // we have completed step 19 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md right now.\n\n // Add the message bus listener to the appSandbox or hypertSandbox;\n _this.messageBus.addListener(_hypertyURL, function (msg) {\n _hypertySandbox.postMessage(msg);\n });\n\n // we have completed step 20 of https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md right now.\n var hyperty = {\n runtimeHypertyURL: _hypertyURL,\n status: deployComponentStatus\n };\n\n log.info('[Runtime.Loader] Hyperty: ', hyperty);\n resolve(hyperty);\n\n // we have completed step 21 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md right now.\n log.info('[Runtime.Loader] ------------------ END ------------------------');\n }, handleError).catch(errorReason);\n });\n }\n\n /**\r\n * Deploy Stub from Catalogue URL or domain url\r\n * @param {URL.URL} protostubURL Catalogue URL for the ProtoStub to be loaded or the domain to be target by the protostub\r\n * @param {Object} p2pConfig configuration of p2p\r\n */\n\n }, {\n key: 'loadStub',\n value: function loadStub(protostubURL, p2pConfig) {\n var _this2 = this;\n\n if (!this._readyToUse()) return false;\n if (!protostubURL) throw new Error('[Runtime.Loader.loadStub]ProtoStub descriptor url parameter is needed');\n\n return new _promise2.default(function (resolve, reject) {\n\n // to analyse if domain for p2pHandlers should be something else and not the default domain itself\n\n var domain = (0, _utils.divideURL)(protostubURL).domain;\n\n if (!domain) {\n domain = protostubURL;\n }\n\n var _stubSandbox = void 0;\n var _stubDescriptor = void 0;\n var _runtimeProtoStubURL = void 0;\n var _stubSourcePackage = void 0;\n var haveError = false;\n var stubId = void 0;\n\n var errorReason = function errorReason(reason) {\n log.info('[Runtime.Loader.loadStub]Something failed on the deploy of protocolstub: ', reason);\n reject(reason);\n };\n\n var handleError = function handleError(reason) {\n haveError = true;\n reject(reason);\n };\n\n // Discover Protocol Stub\n var discoverStub = void 0;\n var isP2PHandler = false;\n var isP2PRequester = false;\n var stubCapabilities = {};\n\n log.info('[Runtime.Loader.loadStub] starting loading for ', protostubURL, ' with p2pconfig ', p2pConfig);\n log.info('[Runtime.Loader.loadStub]Discover or Create a new ProtoStub for domain: ', domain);\n\n // step 2 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n try {\n if (p2pConfig) {\n\n if (p2pConfig.hasOwnProperty('isHandlerStub') && p2pConfig.isHandlerStub) {\n // step 6 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n isP2PHandler = true;\n stubId = _this2.runtimeURL;\n discoverStub = _this2.registry.discoverP2PStub();\n } else {\n isP2PRequester = true;\n var p2pHandlerRuntimeURL = p2pConfig.remoteRuntimeURL;\n stubId = p2pHandlerRuntimeURL;\n\n // step 4 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n\n // step 5 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n discoverStub = _this2.registry.discoverP2PStub(p2pHandlerRuntimeURL);\n }\n } else {\n // step 3 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n stubId = domain;\n discoverStub = _this2.registry.discoverProtostub(domain);\n }\n\n // Is registed?\n log.info('[Runtime.Loader.loadStub]1. Proto Stub Discovered for ', protostubURL, ': ', discoverStub);\n\n // step 23 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n resolve(discoverStub);\n log.info(' [Runtime.Loader]------------------- END ---------------------------\\n');\n } catch (reason) {\n\n // is not registed?\n log.info('[Runtime.Loader.loadStub]1. Proto Stub not found ' + reason);\n\n // step 8 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n _this2.descriptors.getStubDescriptor(protostubURL).then(function (stubDescriptor) {\n\n if (haveError) return false;\n log.info('[Runtime.Loader.loadStub]2. return the ProtoStub descriptor');\n\n // step 9 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n _stubDescriptor = stubDescriptor;\n\n var sourcePackageURL = stubDescriptor.sourcePackageURL;\n\n if (sourcePackageURL === '/sourcePackage') {\n return stubDescriptor.sourcePackage;\n }\n\n // step 10 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n return _this2.runtimeCatalogue.getSourcePackageFromURL(sourcePackageURL);\n }, handleError).catch(errorReason).then(function (stubSourcePackage) {\n if (haveError) return false;\n\n // According to debug, it seems RuntimeCatalogue does not support yet constraints. It appears empty!!!!\n\n if (_stubDescriptor && _stubDescriptor.constraints) {\n stubCapabilities = _stubDescriptor.constraints;\n }\n\n // step 11 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n log.info('[Runtime.Loader.loadStub]3. return the ProtoStub Source Code');\n _stubSourcePackage = stubSourcePackage;\n\n // this will return the sandbox or one promise to getSandbox;\n // step 12 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n return _this2.registry.getSandbox(domain, stubCapabilities);\n }).then(function (stubSandbox) {\n if (haveError) return false;\n\n // step 15 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n log.info('[Runtime.Loader.loadStub]4. if the sandbox is registered then return the sandbox ', stubSandbox);\n\n _stubSandbox = stubSandbox;\n return stubSandbox;\n }).catch(function (reason) {\n if (haveError) return false;\n\n // step 13 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n log.info('[Runtime.Loader.loadStub]5. Sandbox was not found, creating a new one ', reason);\n\n // check if the sandbox is registed for this stub descriptor url;\n\n\n // step 14 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n return _this2._runtimeFactory.createSandbox(stubCapabilities).then(function (sandbox) {\n sandbox.addListener('*', function (msg) {\n _this2.messageBus.postMessage(msg);\n });\n\n return sandbox;\n });\n }).then(function (sandbox) {\n if (haveError) return false;\n\n // step 16 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n log.info('[Runtime.Loader.loadStub]6. return the sandbox instance and register', sandbox, 'to domain ', domain);\n\n _stubSandbox = sandbox;\n\n // we need register stub on registry - step xxx https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n return _this2.registry.registerStub(_stubSandbox, stubId, p2pConfig, protostubURL, _stubDescriptor);\n }, handleError).then(function (runtimeProtoStub) {\n if (haveError) return false;\n\n // step 23 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n log.info('[Runtime.Loader.loadStub] 7. return the runtime protostub url: ', runtimeProtoStub);\n\n _runtimeProtoStubURL = runtimeProtoStub.url;\n\n // Extend original hyperty configuration;\n var configuration = {};\n if (!(0, _utils.emptyObject)(_stubDescriptor.configuration)) {\n try {\n configuration = (0, _assign2.default)({}, JSON.parse(_stubDescriptor.configuration));\n } catch (e) {\n configuration = _stubDescriptor.configuration;\n }\n }\n\n if (p2pConfig) {\n try {\n configuration = (0, _assign2.default)(configuration, JSON.parse(p2pConfig));\n } catch (e) {\n configuration = (0, _assign2.default)(configuration, p2pConfig);\n }\n }\n\n // required for protostub session\n\n configuration.runtimeURL = _this2._runtimeURL;\n\n // step 24 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n try {\n // step 26 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n log.info('[Runtime.Loader.loadStub] 8: adding sandbox listener to protostubURL : ', _runtimeProtoStubURL);\n\n // step 27 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n // Add the message bus listener\n _this2.messageBus.addListener(_runtimeProtoStubURL, function (msg) {\n _stubSandbox.postMessage(msg);\n });\n\n return _stubSandbox.deployComponent(_stubSourcePackage.sourceCode, _runtimeProtoStubURL, configuration);\n } catch (e) {\n log.error('[Runtime.Loader.loadStub] Error on deploy component:', e);\n reject(e);\n }\n }, handleError).then(function () {\n if (haveError) return false;\n\n // step 28 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n var stub = void 0;\n if (p2pConfig) {\n log.log('[Runtime.Loader.loadStub] p2pConfig: ', p2pConfig);\n\n if (p2pConfig.hasOwnProperty('isHandlerStub')) stub = _this2.registry.p2pHandlerStub[_this2._runtimeURL];\n if (p2pConfig.hasOwnProperty('p2pRequesterStub')) stub = _this2.registry.p2pRequesterStub[p2pConfig.remoteRuntimeURL];\n } else {\n stub = _this2.registry.protostubsList[domain];\n }\n\n log.log('[Runtime.Loader.loadStub] Stub: ', stub);\n resolve(stub);\n log.info('[Runtime.Loader.loadStub]------------------- END ---------------------------\\n');\n }, handleError).catch(errorReason);\n }\n });\n }\n\n /**\r\n * Deploy idpProxy from Catalogue URL or domain url\r\n * @param {URL.URL} domain domain\r\n */\n\n }, {\n key: 'loadIdpProxy',\n value: function loadIdpProxy(idpProxyURL) {\n var _this3 = this;\n\n if (!this._readyToUse()) return false;\n if (!idpProxyURL) throw new Error('[Runtime.Loader] IdpProxy descriptor url parameter is needed');\n\n return new _promise2.default(function (resolve, reject) {\n\n var domain = (0, _utils.divideURL)(idpProxyURL).domain;\n\n if (!domain) {\n domain = idpProxyURL;\n }\n\n var _proxySandbox = void 0;\n var _proxyDescriptor = void 0;\n var _runtimeIdpProxyURL = void 0;\n var _proxySourcePackage = void 0;\n var haveError = false;\n\n var errorReason = function errorReason(reason) {\n log.info('[Runtime.Loader] Something failed on the deploy of IdpProxy: ', reason);\n reject(reason);\n };\n\n var handleError = function handleError(reason) {\n haveError = true;\n reject(reason);\n };\n\n // Discover IDPProxy\n log.info('[Runtime.Loader] ------------------- IDP Proxy Deploy ---------------------------\\n');\n log.info('[Runtime.Loader] Discover or Create a new IdpProxy for domain/URL: ', domain);\n\n try {\n var runtimeIdpProxyURL = _this3.registry.discoverIdpProxy(domain);\n\n // Is registed?\n log.info('[Runtime.Loader] 1. IDPProxy Discovered: ', runtimeIdpProxyURL);\n\n // we have completed step 2 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n\n var idpProxy = _this3.registry.idpProxyList[domain];\n log.log('Deployed: ', idpProxy);\n\n resolve(idpProxy);\n log.info('[Runtime.Loader] ------------------- END ---------------------------\\n');\n } catch (reason) {\n\n // is not registed?\n log.info('[Runtime.Loader] 1. IdpProxy not found:', reason);\n\n // we have completed step 3 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n\n // we need to get ProtoStub descriptor step 4 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n _this3.descriptors.getIdpProxyDescriptor(idpProxyURL).then(function (proxyDescriptor) {\n\n log.info('[Runtime.Loader] 2. Return the IDPProxy descriptor');\n\n // we have completed step 5 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n _proxyDescriptor = proxyDescriptor;\n\n var sourcePackageURL = proxyDescriptor.sourcePackageURL;\n\n if (sourcePackageURL === '/sourcePackage') {\n return proxyDescriptor.sourcePackage;\n }\n\n // we need to get ProtoStub Source code from descriptor - step 6 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n return _this3.runtimeCatalogue.getSourcePackageFromURL(sourcePackageURL);\n }, handleError).then(function (sourcePackage) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 3. return the IDPProxy source package');\n\n // we have completed step 7 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n\n _proxySourcePackage = sourcePackage;\n\n // TODO: Check on PEP (policy Engine) if we need the sandbox and check if the Sandbox Factory have the context sandbox;\n var policy = true;\n return policy;\n }, handleError).then(function (policy) {\n if (haveError) return false;\n\n // this will return the sandbox or one promise to getSandbox;\n return _this3.registry.getSandbox(domain);\n }).then(function (proxySandbox) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 4. if the sandbox is registered then return the sandbox', proxySandbox);\n\n _proxySandbox = proxySandbox;\n return proxySandbox;\n }).catch(function (reason) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 5. Sandbox was not found, creating a new one', reason);\n\n var proxyCapabilities = {};\n if (_proxyDescriptor && _proxyDescriptor.hasOwnProperty('capabilities')) {\n _proxyDescriptor = _proxyDescriptor.stubCapabilities;\n }\n\n return _this3._runtimeFactory.createSandbox(proxyCapabilities).then(function (sandbox) {\n\n sandbox.addListener('*', function (msg) {\n _this3.messageBus.postMessage(msg);\n });\n\n return sandbox;\n });\n }).then(function (sandbox) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 6. return the sandbox instance and register', sandbox, 'to domain ', domain);\n\n _proxySandbox = sandbox;\n\n // we need register stub on registry - step xxx https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n return _this3.registry.registerIdpProxy(sandbox, domain);\n }, handleError).then(function (runtimeIdpProxyURL) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 7. Return the runtime Idp Proxy URL: ', runtimeIdpProxyURL);\n\n // we have completed step xxx https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n\n _runtimeIdpProxyURL = runtimeIdpProxyURL;\n\n // Extend original hyperty configuration;\n var configuration = {};\n if (!(0, _utils.emptyObject)(_proxyDescriptor.configuration)) {\n try {\n configuration = (0, _assign2.default)({}, JSON.parse(_proxyDescriptor.configuration));\n } catch (e) {\n configuration = _proxyDescriptor.configuration;\n }\n }\n configuration.runtimeURL = _this3._runtimeURL;\n\n // Deploy Component step xxx\n try {\n // we have completed step xxx https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n\n // Add the message bus listener\n _this3.messageBus.addListener(_runtimeIdpProxyURL, function (msg) {\n _proxySandbox.postMessage(msg);\n });\n\n return _proxySandbox.deployComponent(_proxySourcePackage.sourceCode, runtimeIdpProxyURL, configuration);\n } catch (e) {\n log.info('[Runtime.Loader] Error on deploy component:', e);\n reject(e);\n }\n }, handleError).then(function () {\n if (haveError) return false;\n\n // we have completed step xxx https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n\n // Load Stub function resolved with success;\n // let idpProxy = {\n // runtimeIdpProxyURL: _runtimeIdpProxyURL,\n // status: deployComponentStatus\n // };\n\n //this.registry.idpProxyList[domain].status = 'deployed';\n var idpProxy = _this3.registry.idpProxyList[domain];\n\n log.log('[Runtime.Loader.loadIdpProxy] 8: loaded: ', idpProxy);\n\n resolve(idpProxy);\n log.info('[Runtime.Loader.loadIdpProxy] ------------------- END ---------------------------\\n');\n }, handleError).catch(errorReason);\n }\n });\n }\n\n // Check if the loader is ready to load all components\n\n }, {\n key: '_readyToUse',\n value: function _readyToUse() {\n\n var status = false;\n\n if (!this._runtimeURL) throw new Error('[Runtime.Loader] The loader need the runtime url address');\n if (!this._messagesBus) throw new Error('[Runtime.Loader] The loader need the messageBus component');\n if (!this._registry) throw new Error('[Runtime.Loader] The loader need the registry component');\n if (!this._runtimeFactory) throw new Error('[Runtime.Loader] The loader need the runtime factory component');\n\n status = true;\n return status;\n }\n }, {\n key: 'runtimeURL',\n set: function set(value) {\n this._runtimeURL = value;\n }\n\n /**\r\n * Get runtime url\r\n * @return {string} value runtimeURL\r\n */\n ,\n get: function get() {\n return this._runtimeURL;\n }\n\n /**\r\n * Set Registry component\r\n * @param {Registry} value Registry Component\r\n */\n\n }, {\n key: 'registry',\n set: function set(value) {\n this._registry = value;\n\n // Install AddressAllocation\n var addressAllocation = _AddressAllocation2.default.instance;\n this._addressAllocation = addressAllocation;\n\n log.log('[Loader - AddressAllocation] - ', addressAllocation);\n }\n\n /**\r\n * Get Registry component\r\n * @return {Registry} Registry component\r\n */\n ,\n get: function get() {\n return this._registry;\n }\n\n /**\r\n * Set Message Bus component\r\n * @param {MessageBus} value Message bus component\r\n */\n\n }, {\n key: 'messageBus',\n set: function set(value) {\n this._messagesBus = value;\n }\n\n /**\r\n * Get Message Bus component\r\n * @return {MessageBus} Message Bus component\r\n */\n ,\n get: function get() {\n return this._messagesBus;\n }\n\n /**\r\n * Set Runtime Factory component\r\n * @param {runtimeFactory} value Factory includes the specific implementations for each environment\r\n */\n\n }, {\n key: 'runtimeFactory',\n set: function set(value) {\n this._runtimeFactory = value;\n }\n\n /**\r\n * Get Runtime Factory component\r\n * @return {runtimeFactory} Runtime Factory component\r\n */\n ,\n get: function get() {\n return this._runtimeFactory;\n }\n }]);\n return Loader;\n}();\n\nexports.default = Loader;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ydW50aW1lL0xvYWRlci5qcz9jYzkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIExvZyBTeXN0ZW1cclxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcclxubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ2xvYWRlcicpO1xyXG5cclxuaW1wb3J0IHtkaXZpZGVVUkwsIGVtcHR5T2JqZWN0fSBmcm9tICcuLi91dGlscy91dGlscyc7XHJcbmltcG9ydCBBZGRyZXNzQWxsb2NhdGlvbiBmcm9tICcuLi9hbGxvY2F0aW9uL0FkZHJlc3NBbGxvY2F0aW9uJztcclxuXHJcbmNsYXNzIExvYWRlciB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHJ1bnRpbWVVUkwsIHJ1bnRpbWVDb25maWd1cmF0aW9uLCBydW50aW1lRGVzY3JpcHRvcnNJbnN0YW5jZSkge1xyXG4gICAgaWYgKCFydW50aW1lQ29uZmlndXJhdGlvbikgdGhyb3cgICBFcnJvcignW1J1bnRpbWUuTG9hZGVyXSBUaGUgZGVzY3JpcHRvciBuZWVkIHRvIGtub3cgdGhlIHJ1bnRpbWUgY29uZmlndXJhdGlvbicpO1xyXG4gICAgaWYgKCFydW50aW1lRGVzY3JpcHRvcnNJbnN0YW5jZSkgdGhyb3cgICBFcnJvcignW1J1bnRpbWUuTG9hZGVyXSBUaGUgZGVzY3JpcHRvciBuZWVkIHRvIGtub3cgdGhlIHJ1bnRpbWUgRGVzY3JpcHRvciBpbnN0YW5jZScpO1xyXG5cclxuICAgIHRoaXMubG9nID0gbG9nO1xyXG5cclxuICAgIHRoaXMucnVudGltZUNvbmZpZ3VyYXRpb24gPSBydW50aW1lQ29uZmlndXJhdGlvbjtcclxuICAgIHRoaXMuZGVzY3JpcHRvcnMgPSBydW50aW1lRGVzY3JpcHRvcnNJbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBydW50aW1lIHVybFxyXG4gICAqIEBwYXJhbSAge3N0cmluZ30gdmFsdWUgcnVudGltZVVSTFxyXG4gICAqL1xyXG4gIHNldCBydW50aW1lVVJMKHZhbHVlKSB7XHJcbiAgICB0aGlzLl9ydW50aW1lVVJMID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgcnVudGltZSB1cmxcclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IHZhbHVlIHJ1bnRpbWVVUkxcclxuICAgKi9cclxuICBnZXQgcnVudGltZVVSTCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9ydW50aW1lVVJMO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IFJlZ2lzdHJ5IGNvbXBvbmVudFxyXG4gICAqIEBwYXJhbSAge1JlZ2lzdHJ5fSB2YWx1ZSBSZWdpc3RyeSBDb21wb25lbnRcclxuICAgKi9cclxuICBzZXQgcmVnaXN0cnkodmFsdWUpIHtcclxuICAgIHRoaXMuX3JlZ2lzdHJ5ID0gdmFsdWU7XHJcblxyXG4gICAgLy8gSW5zdGFsbCBBZGRyZXNzQWxsb2NhdGlvblxyXG4gICAgbGV0IGFkZHJlc3NBbGxvY2F0aW9uID0gQWRkcmVzc0FsbG9jYXRpb24uaW5zdGFuY2U7XHJcbiAgICB0aGlzLl9hZGRyZXNzQWxsb2NhdGlvbiA9IGFkZHJlc3NBbGxvY2F0aW9uO1xyXG5cclxuICAgIGxvZy5sb2coJ1tMb2FkZXIgLSBBZGRyZXNzQWxsb2NhdGlvbl0gLSAnLCBhZGRyZXNzQWxsb2NhdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgUmVnaXN0cnkgY29tcG9uZW50XHJcbiAgICogQHJldHVybiB7UmVnaXN0cnl9IFJlZ2lzdHJ5IGNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCByZWdpc3RyeSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9yZWdpc3RyeTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBNZXNzYWdlIEJ1cyBjb21wb25lbnRcclxuICAgKiBAcGFyYW0gIHtNZXNzYWdlQnVzfSB2YWx1ZSBNZXNzYWdlIGJ1cyBjb21wb25lbnRcclxuICAgKi9cclxuICBzZXQgbWVzc2FnZUJ1cyh2YWx1ZSkge1xyXG4gICAgdGhpcy5fbWVzc2FnZXNCdXMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBNZXNzYWdlIEJ1cyBjb21wb25lbnRcclxuICAgKiBAcmV0dXJuIHtNZXNzYWdlQnVzfSBNZXNzYWdlIEJ1cyBjb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgbWVzc2FnZUJ1cygpIHtcclxuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlc0J1cztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBSdW50aW1lIEZhY3RvcnkgY29tcG9uZW50XHJcbiAgICogQHBhcmFtICB7cnVudGltZUZhY3Rvcnl9IHZhbHVlIEZhY3RvcnkgaW5jbHVkZXMgdGhlIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucyBmb3IgZWFjaCBlbnZpcm9ubWVudFxyXG4gICAqL1xyXG4gIHNldCBydW50aW1lRmFjdG9yeSh2YWx1ZSkge1xyXG4gICAgdGhpcy5fcnVudGltZUZhY3RvcnkgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBSdW50aW1lIEZhY3RvcnkgY29tcG9uZW50XHJcbiAgICogQHJldHVybiB7cnVudGltZUZhY3Rvcnl9IFJ1bnRpbWUgRmFjdG9yeSBjb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgcnVudGltZUZhY3RvcnkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcnVudGltZUZhY3Rvcnk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogRGVwbG95IEh5cGVydHkgZnJvbSBDYXRhbG9ndWUgVVJMXHJcbiAgICpcclxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3Qvc3BlY3MvdHJlZS9tYXN0ZXIvZGF0YW1vZGVsL2NvcmUvYWRkcmVzc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIHtVUkwuSHlwZXJ0eUNhdGFsb2d1ZVVSTH0gaHlwZXJ0eUNhdGFsb2d1ZVVSTCAtIFRoZSBDYXRhbG9ndWUgVVJMIHVzZWQgdG8gaWRlbnRpZnkgZGVzY3JpcHRvcnMgaW4gdGhlIENhdGFsb2d1ZS5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW58VVJMLkh5cGVydHlVUkx9IFtyZXVzZVVSTD1mYWxzZV0gcmV1c2VVUkwgLSByZXVzZVVSTCBpcyB1c2VkIHRvIHJldXNlIHRoZSBoeXBlcnR5VVJMIHByZXZpb3VzbHkgcmVnaXN0cmVkLCBieSBkZWZhdWx0IHRoZSByZXVzZSBpcyBkaXNhYmxlZDtcclxuICAgKiBAcGFyYW0ge1VSTH0gYXBwVVJMIC0gdGhlIGFwcCB1cmwgb3JpZ2luIGFkZHJlc3M7XHJcbiAgICogQHBhcmFtIHtvYmplY3R9IElkcENvbnN0cmFpbnQgLSBjb25zdHJhaW50cyB0byBiZSB1c2VkIHdoZW4gc2VsZWN0aW5nIHRoZSBpZGVudGl0eSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIEh5cGVydHkgaW5jbHVkaW5nIG9yaWdpbiwgaWRwLCBhbmQgaWRIaW50LlxyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEJvb2xlYW4sIEVycm9yPn0gdGhpcyBpcyBQcm9taXNlIGFuZCByZXR1cm5zIHRydWUgaWYgYWxsIGNvbXBvbmVudHMgYXJlIGxvYWRlZCB3aXRoIHN1Y2Nlc3Mgb3IgYW4gZXJyb3IgaWYgc29tZW9uZSBmYWlscy5cclxuICAgKlxyXG4gICAqIEBtZW1iZXJPZiBMb2FkZXJcclxuICAgKi9cclxuICBsb2FkSHlwZXJ0eShoeXBlcnR5Q2F0YWxvZ3VlVVJMLCByZXVzZVVSTCA9IGZhbHNlLCBJZHBDb25zdHJhaW50LCBhcHBVUkwpIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuX3JlYWR5VG9Vc2UoKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKCFoeXBlcnR5Q2F0YWxvZ3VlVVJMKSB0aHJvdyBuZXcgICBFcnJvcignW1J1bnRpbWUuTG9hZGVyXSBIeXBlcnR5IGRlc2NyaXB0b3IgdXJsIHBhcmFtZXRlciBpcyBuZWVkZWQnKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgbGV0IF9oeXBlcnR5VVJMO1xyXG4gICAgICBsZXQgX2h5cGVydHlTYW5kYm94O1xyXG4gICAgICBsZXQgX2h5cGVydHlEZXNjcmlwdG9yO1xyXG4gICAgICBsZXQgX2h5cGVydHlTb3VyY2VQYWNrYWdlO1xyXG4gICAgICBsZXQgaGF2ZUVycm9yID0gZmFsc2U7XHJcblxyXG4gICAgICBsZXQgZXJyb3JSZWFzb24gPSAocmVhc29uKSA9PiB7XHJcbiAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gU29tZXRoaW5nIGZhaWxlZCBvbiB0aGUgZGVwbG95IGh5cGVydHk6ICcsIHJlYXNvbik7XHJcbiAgICAgICAgcmVqZWN0KHJlYXNvbik7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBsZXQgaGFuZGxlRXJyb3IgPSAocmVhc29uKSA9PiB7XHJcbiAgICAgICAgaGF2ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICByZWplY3QocmVhc29uKTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vIEdldCBIeXBlcnR5IGRlc2NyaXB0b3JcclxuICAgICAgLy8gVE9ETzogdGhlIHJlcXVlc3QgTW9kdWxlIHNob3VsZCBiZSBjaGFuZ2VkLFxyXG4gICAgICAvLyBiZWNhdXNlIGF0IHRoaXMgbW9tZW50IGl0IGlzIGluY29tcGF0aWJsZSB3aXRoIG5vZGVqcztcclxuICAgICAgLy8gUHJvYmFibHkgd2UgbmVlZCB0byBwYXNzIGEgZmFjdG9yeSBsaWtlIHdlIGRvIGZvciBzYW5kYm94ZXM7XHJcbiAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIC0tLS0tLS0tLS0tLS0tLS0tLSBIeXBlcnR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScpO1xyXG4gICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyXSBHZXQgaHlwZXJ0eSBkZXNjcmlwdG9yIGZvciA6JywgaHlwZXJ0eUNhdGFsb2d1ZVVSTCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3JzLmdldEh5cGVydHlEZXNjcmlwdG9yKGh5cGVydHlDYXRhbG9ndWVVUkwpXHJcbiAgICAgICAgLnRoZW4oKGh5cGVydHlEZXNjcmlwdG9yKSA9PiB7XHJcbiAgICAgICAgICAvLyBhdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGNvbXBsZXRlZCBcInN0ZXAgMiBhbmQgM1wiIGFzIHNob3duIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LWh5cGVydHkubWRcclxuICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIDE6IHJldHVybiBoeXBlcnR5IGRlc2NyaXB0b3InKTtcclxuXHJcbiAgICAgICAgICAvLyBoeXBlcnR5IGNvbnRhaW5zIHRoZSBmdWxsIHBhdGggb2YgdGhlIGNhdGFsb2d1ZSBVUkwsIGUuZy5cclxuICAgICAgICAgIC8vIGNhdGFsb2d1ZS5yZXRoaW5rLmV1Ly53ZWxsLWtub3duLy4uLi4uLi4uLi5cclxuICAgICAgICAgIF9oeXBlcnR5RGVzY3JpcHRvciA9IGh5cGVydHlEZXNjcmlwdG9yO1xyXG5cclxuICAgICAgICAgIGxldCBzb3VyY2VQYWNrYWdlVVJMID0gaHlwZXJ0eURlc2NyaXB0b3Iuc291cmNlUGFja2FnZVVSTDtcclxuXHJcbiAgICAgICAgICBpZiAoc291cmNlUGFja2FnZVVSTCA9PT0gJy9zb3VyY2VQYWNrYWdlJykge1xyXG4gICAgICAgICAgICByZXR1cm4gaHlwZXJ0eURlc2NyaXB0b3Iuc291cmNlUGFja2FnZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBHZXQgdGhlIGh5cGVydHkgc291cmNlIGNvZGVcclxuICAgICAgICAgIHJldHVybiB0aGlzLnJ1bnRpbWVDYXRhbG9ndWUuZ2V0U291cmNlUGFja2FnZUZyb21VUkwoc291cmNlUGFja2FnZVVSTCk7XHJcbiAgICAgICAgfSwgaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgLnRoZW4oKHNvdXJjZVBhY2thZ2UpID0+IHtcclxuICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyXSAyOiByZXR1cm4gaHlwZXJ0eSBzb3VyY2UgY29kZScpO1xyXG5cclxuICAgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgY29tcGxldGVkIFwic3RlcCA0IGFuZCA1XCIgYXMgc2hvd24gaW4gaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktaHlwZXJ0eS5tZFxyXG5cclxuICAgICAgICAgIF9oeXBlcnR5U291cmNlUGFja2FnZSA9IHNvdXJjZVBhY2thZ2U7XHJcblxyXG4gICAgICAgICAgLy9cclxuICAgICAgICAgIC8vIHN0ZXBzIDYgLS0gOSBhcmUgc2tpcHBlZC5cclxuICAgICAgICAgIC8vIFRPRE86IG9uIHJlbGVhc2Ugb2YgY29yZSAwLjI7XHJcbiAgICAgICAgICAvLyBUT0RPOiBQcm9taXNlIHRvIGNoZWNrIHRoZSBwb2xpY3kgZW5naW5lXHJcblxyXG4gICAgICAgICAgLy8gbW9jay11cCBjb2RlO1xyXG4gICAgICAgICAgLy8gdGVtcG9yYXJ5IGNvZGUsIG9ubHlcclxuICAgICAgICAgIGxldCBwb2xpY3kgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHJldHVybiBwb2xpY3k7XHJcbiAgICAgICAgfSwgaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgLnRoZW4oKHBvbGljeVJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gMzogcmV0dXJuIHBvbGljeSBlbmdpbmUgcmVzdWx0JyArIHBvbGljeVJlc3VsdCk7XHJcblxyXG4gICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCA2IHRvIDkgb2YgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktaHlwZXJ0eS5tZCByaWdodCBub3cuXHJcbiAgICAgICAgICAvL1xyXG4gICAgICAgICAgLy8gU3RlcHMgNiAtLSA5XHJcbiAgICAgICAgICAvLyBBcyBhIHJlc3VsdCBvZiB0aGUgc2lwcGVkIHN0ZXBzLCB3ZSBrbm93IGF0IHRoaXMgcG9pbnQgaWYgd2UgZXhlY3V0ZVxyXG4gICAgICAgICAgLy8gaW5TYW1lU2FuZGJveCBvciBub3QuXHJcbiAgICAgICAgICAvL1xyXG5cclxuICAgICAgICAgIC8vIEZvciB0ZXN0aW5nLCBqdXN0IGFzc3VtZSB3ZSBleGVjdXRlIGluIHNhbWUgU2FuZGJveC5cclxuICAgICAgICAgIGxldCBpblNhbWVTYW5kYm94ID0gdHJ1ZTtcclxuICAgICAgICAgIGxldCBzYW5kYm94O1xyXG5cclxuICAgICAgICAgIGlmIChpblNhbWVTYW5kYm94KSB7XHJcblxyXG4gICAgICAgICAgICAvLyB0aGlzIGRvbid0IG5lZWQgYmUgYSBQcm9taXNlO1xyXG4gICAgICAgICAgICBzYW5kYm94ID0gdGhpcy5yZWdpc3RyeS5nZXRBcHBTYW5kYm94KCk7XHJcblxyXG4gICAgICAgICAgICAvLyB3ZSBoYXZlIGNvbXBsZXRlZCBzdGVwIDExIGhlcmUuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgbGV0IGRvbWFpbiA9IGRpdmlkZVVSTChoeXBlcnR5Q2F0YWxvZ3VlVVJMKS5kb21haW47XHJcblxyXG4gICAgICAgICAgICAvLyBnZXRTYW5kYm94LCB0aGlzIHdpbGwgcmV0dXJuIGEgcHJvbWlzZTtcclxuICAgICAgICAgICAgc2FuZGJveCA9IHRoaXMucmVnaXN0cnkuZ2V0U2FuZGJveChkb21haW4pO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIHRoaXMgd2lsbCByZXR1cm4gdGhlIHNhbmRib3ggb3Igb25lIHByb21pc2UgdG8gZ2V0U2FuZGJveDtcclxuICAgICAgICAgIHJldHVybiBzYW5kYm94O1xyXG4gICAgICAgIH0sIGhhbmRsZUVycm9yKVxyXG4gICAgICAgIC50aGVuKChzYW5kYm94KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaGF2ZUVycm9yKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyXSA0OiByZXR1cm4gdGhlIHNhbmRib3gnLCBzYW5kYm94KTtcclxuXHJcbiAgICAgICAgICAvLyBSZXR1cm4gdGhlIHNhbmRib3ggaW5kZXBlbnRlbHkgaWYgaXQgcnVubmluZyBpbiB0aGUgc2FtZSBzYW5kYm94IG9yIG5vdFxyXG4gICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCAxNCBoZXJlLlxyXG4gICAgICAgICAgcmV0dXJuIHNhbmRib3g7XHJcbiAgICAgICAgfSwgKHJlYXNvbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gNC4xOiBUcnkgdG8gcmVnaXN0ZXIgYSBuZXcgc2FuZGJveCcpO1xyXG5cclxuICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSBzYW5kYm94IGlzIHJlZ2lzdGVkIGZvciB0aGlzIGh5cGVydHkgZGVzY3JpcHRvciB1cmw7XHJcbiAgICAgICAgICAvLyBNYWtlIFN0ZXBzIHh4eCAtLS0geHh4XHJcbiAgICAgICAgICAvLyBJbnN0YW50aWF0ZSB0aGUgU2FuZGJveFxyXG5cclxuICAgICAgICAgIGxldCBoeXBlcnR5Q2FwYWJpbGl0aWVzID0ge307XHJcbiAgICAgICAgICBpZiAoX2h5cGVydHlEZXNjcmlwdG9yICYmIF9oeXBlcnR5RGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgnY2FwYWJpbGl0aWVzJykpIHtcclxuICAgICAgICAgICAgaHlwZXJ0eUNhcGFiaWxpdGllcyA9IF9oeXBlcnR5RGVzY3JpcHRvci5zdHViQ2FwYWJpbGl0aWVzO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybiB0aGlzLl9ydW50aW1lRmFjdG9yeS5jcmVhdGVTYW5kYm94KGh5cGVydHlDYXBhYmlsaXRpZXMpLnRoZW4oKHNhbmRib3gpID0+IHtcclxuXHJcbiAgICAgICAgICAgIHNhbmRib3guYWRkTGlzdGVuZXIoJyonLCAobXNnKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1zZyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHNhbmRib3g7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LCBoYW5kbGVFcnJvcilcclxuICAgICAgICAudGhlbigoc2FuZGJveCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gNTogcmV0dXJuIHNhbmRib3ggYW5kIHJlZ2lzdGVyJyk7XHJcblxyXG4gICAgICAgICAgX2h5cGVydHlTYW5kYm94ID0gc2FuZGJveDtcclxuXHJcbiAgICAgICAgICBsZXQgbnVtYmVyT2ZBZGRyZXNzZXMgPSAxO1xyXG4gICAgICAgICAgLy9kZWJ1Z2dlcjtcclxuICAgICAgICAgIHJldHVybiB0aGlzLl9hZGRyZXNzQWxsb2NhdGlvbi5jcmVhdGUodGhpcy5fcmVnaXN0cnkuX2RvbWFpbiwgbnVtYmVyT2ZBZGRyZXNzZXMsIF9oeXBlcnR5RGVzY3JpcHRvciwgJ2h5cGVydHknLCByZXVzZVVSTCk7XHJcbiAgICAgICAgfSwgaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgLnRoZW4oKGFkZHJlc3NlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gNjogcmV0dXJuIHRoZSBhZGRyZXNzZXMgZm9yIHRoZSBoeXBlcnR5JywgYWRkcmVzc2VzKTtcclxuXHJcbiAgICAgICAgICAvLyBSZWdpc3RlciBoeXBlcnR5XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5yZWdpc3Rlckh5cGVydHkoX2h5cGVydHlTYW5kYm94LCBoeXBlcnR5Q2F0YWxvZ3VlVVJMLCBfaHlwZXJ0eURlc2NyaXB0b3IsIGFkZHJlc3NlcywgSWRwQ29uc3RyYWludCk7XHJcbiAgICAgICAgfSwgaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgLnRoZW4oKHJlZ2lzdHJhdGlvblJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gNzogcmVnaXN0cmF0aW9uIHJlc3VsdCcsIHJlZ2lzdHJhdGlvblJlc3VsdCk7XHJcblxyXG4gICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCAxNiBvZiBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1oeXBlcnR5Lm1kIHJpZ2h0IG5vdy5cclxuICAgICAgICAgIF9oeXBlcnR5VVJMID0gcmVnaXN0cmF0aW9uUmVzdWx0LnVybDtcclxuXHJcbiAgICAgICAgICAvLyBFeHRlbmQgb3JpZ2luYWwgaHlwZXJ0eSBjb25maWd1cmF0aW9uO1xyXG4gICAgICAgICAgbGV0IGNvbmZpZ3VyYXRpb24gPSB7fTtcclxuICAgICAgICAgIGlmICghZW1wdHlPYmplY3QoX2h5cGVydHlEZXNjcmlwdG9yLmNvbmZpZ3VyYXRpb24pKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IE9iamVjdC5hc3NpZ24oe30sIEpTT04ucGFyc2UoX2h5cGVydHlEZXNjcmlwdG9yLmNvbmZpZ3VyYXRpb24pKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBfaHlwZXJ0eURlc2NyaXB0b3IuY29uZmlndXJhdGlvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uZmlndXJhdGlvbi5ydW50aW1lVVJMID0gdGhpcy5fcnVudGltZVVSTDtcclxuXHJcbiAgICAgICAgICBpZiAocmVnaXN0cmF0aW9uUmVzdWx0LnAycEhhbmRsZXIpIHtcclxuICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wMnBIYW5kbGVyID0gcmVnaXN0cmF0aW9uUmVzdWx0LnAycEhhbmRsZXI7XHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucDJwUmVxdWVzdGVyID0gcmVnaXN0cmF0aW9uUmVzdWx0LnAycFJlcXVlc3RlcjtcclxuICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgLy8gV2Ugd2lsbCBkZXBsb3kgdGhlIGNvbXBvbmVudCAtIHN0ZXAgMTcgb2YgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktaHlwZXJ0eS5tZCByaWdodCBub3cuXHJcblxyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIF9oeXBlcnR5U2FuZGJveC5kZXBsb3lDb21wb25lbnQoX2h5cGVydHlTb3VyY2VQYWNrYWdlLnNvdXJjZUNvZGUsIF9oeXBlcnR5VVJMLCBjb25maWd1cmF0aW9uKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gRXJyb3Igb24gZGVwbG95IGNvbXBvbmVudDonLCBlKTtcclxuICAgICAgICAgICAgcmVqZWN0KGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGhhbmRsZUVycm9yKVxyXG4gICAgICAgIC50aGVuKChkZXBsb3lDb21wb25lbnRTdGF0dXMpID0+IHtcclxuICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIDg6IERlcGxveSBjb21wb25lbnQgc3RhdHVzIGZvciBoeXBlcnR5OiAnLCBkZXBsb3lDb21wb25lbnRTdGF0dXMpO1xyXG5cclxuICAgICAgICAgIC8vIHdlIGhhdmUgY29tcGxldGVkIHN0ZXAgMTkgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktaHlwZXJ0eS5tZCByaWdodCBub3cuXHJcblxyXG4gICAgICAgICAgLy8gQWRkIHRoZSBtZXNzYWdlIGJ1cyBsaXN0ZW5lciB0byB0aGUgYXBwU2FuZGJveCBvciBoeXBlcnRTYW5kYm94O1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlQnVzLmFkZExpc3RlbmVyKF9oeXBlcnR5VVJMLCAobXNnKSA9PiB7XHJcbiAgICAgICAgICAgIF9oeXBlcnR5U2FuZGJveC5wb3N0TWVzc2FnZShtc2cpO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCAyMCBvZiBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1oeXBlcnR5Lm1kIHJpZ2h0IG5vdy5cclxuICAgICAgICAgIGxldCBoeXBlcnR5ID0ge1xyXG4gICAgICAgICAgICBydW50aW1lSHlwZXJ0eVVSTDogX2h5cGVydHlVUkwsXHJcbiAgICAgICAgICAgIHN0YXR1czogZGVwbG95Q29tcG9uZW50U3RhdHVzXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIEh5cGVydHk6ICcsIGh5cGVydHkpO1xyXG4gICAgICAgICAgcmVzb2x2ZShoeXBlcnR5KTtcclxuXHJcbiAgICAgICAgICAvLyB3ZSBoYXZlIGNvbXBsZXRlZCBzdGVwIDIxIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LWh5cGVydHkubWQgcmlnaHQgbm93LlxyXG4gICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gLS0tLS0tLS0tLS0tLS0tLS0tIEVORCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKTtcclxuICAgICAgICB9LCBoYW5kbGVFcnJvcilcclxuICAgICAgICAuY2F0Y2goZXJyb3JSZWFzb24pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIERlcGxveSBTdHViIGZyb20gQ2F0YWxvZ3VlIFVSTCBvciBkb21haW4gdXJsXHJcbiAgKiBAcGFyYW0gIHtVUkwuVVJMfSAgICAgcHJvdG9zdHViVVJMICAgIENhdGFsb2d1ZSBVUkwgZm9yIHRoZSBQcm90b1N0dWIgdG8gYmUgbG9hZGVkIG9yIHRoZSBkb21haW4gdG8gYmUgdGFyZ2V0IGJ5IHRoZSBwcm90b3N0dWJcclxuICAqIEBwYXJhbSAge09iamVjdH0gICAgICBwMnBDb25maWcgICAgICAgY29uZmlndXJhdGlvbiBvZiBwMnBcclxuICAqL1xyXG4gIGxvYWRTdHViKHByb3Rvc3R1YlVSTCwgcDJwQ29uZmlnKSB7XHJcblxyXG4gICAgaWYgKCF0aGlzLl9yZWFkeVRvVXNlKCkpIHJldHVybiBmYWxzZTtcclxuICAgIGlmICghcHJvdG9zdHViVVJMKSB0aHJvdyBuZXcgICBFcnJvcignW1J1bnRpbWUuTG9hZGVyLmxvYWRTdHViXVByb3RvU3R1YiBkZXNjcmlwdG9yIHVybCBwYXJhbWV0ZXIgaXMgbmVlZGVkJyk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHJcbiAgICAgIC8vIHRvIGFuYWx5c2UgaWYgZG9tYWluIGZvciBwMnBIYW5kbGVycyBzaG91bGQgYmUgc29tZXRoaW5nIGVsc2UgYW5kIG5vdCB0aGUgZGVmYXVsdCBkb21haW4gaXRzZWxmXHJcblxyXG4gICAgICBsZXQgZG9tYWluID0gZGl2aWRlVVJMKHByb3Rvc3R1YlVSTCkuZG9tYWluO1xyXG5cclxuICAgICAgaWYgKCFkb21haW4pIHtcclxuICAgICAgICBkb21haW4gPSBwcm90b3N0dWJVUkw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBfc3R1YlNhbmRib3g7XHJcbiAgICAgIGxldCBfc3R1YkRlc2NyaXB0b3I7XHJcbiAgICAgIGxldCBfcnVudGltZVByb3RvU3R1YlVSTDtcclxuICAgICAgbGV0IF9zdHViU291cmNlUGFja2FnZTtcclxuICAgICAgbGV0IGhhdmVFcnJvciA9IGZhbHNlO1xyXG4gICAgICBsZXQgc3R1YklkO1xyXG5cclxuICAgICAgbGV0IGVycm9yUmVhc29uID0gKHJlYXNvbikgPT4ge1xyXG4gICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXIubG9hZFN0dWJdU29tZXRoaW5nIGZhaWxlZCBvbiB0aGUgZGVwbG95IG9mIHByb3RvY29sc3R1YjogJywgcmVhc29uKTtcclxuICAgICAgICByZWplY3QocmVhc29uKTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGxldCBoYW5kbGVFcnJvciA9IChyZWFzb24pID0+IHtcclxuICAgICAgICBoYXZlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHJlamVjdChyZWFzb24pO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy8gRGlzY292ZXIgUHJvdG9jb2wgU3R1YlxyXG4gICAgICBsZXQgZGlzY292ZXJTdHViO1xyXG4gICAgICBsZXQgaXNQMlBIYW5kbGVyID0gZmFsc2U7XHJcbiAgICAgIGxldCBpc1AyUFJlcXVlc3RlciA9IGZhbHNlO1xyXG4gICAgICBsZXQgc3R1YkNhcGFiaWxpdGllcyA9IHt9O1xyXG5cclxuICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlci5sb2FkU3R1Yl0gc3RhcnRpbmcgbG9hZGluZyBmb3IgJywgcHJvdG9zdHViVVJMLCAnIHdpdGggcDJwY29uZmlnICcsIHAycENvbmZpZyk7XHJcbiAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXIubG9hZFN0dWJdRGlzY292ZXIgb3IgQ3JlYXRlIGEgbmV3IFByb3RvU3R1YiBmb3IgZG9tYWluOiAnLCBkb21haW4pO1xyXG5cclxuICAgICAgLy8gc3RlcCAyIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGlmIChwMnBDb25maWcpIHtcclxuXHJcbiAgICAgICAgICBpZiAocDJwQ29uZmlnLmhhc093blByb3BlcnR5KCdpc0hhbmRsZXJTdHViJykgJiYgcDJwQ29uZmlnLmlzSGFuZGxlclN0dWIpIHtcclxuICAgICAgICAgICAgLy8gc3RlcCA2IGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxyXG4gICAgICAgICAgICBpc1AyUEhhbmRsZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICBzdHViSWQgPSB0aGlzLnJ1bnRpbWVVUkw7XHJcbiAgICAgICAgICAgIGRpc2NvdmVyU3R1YiA9IHRoaXMucmVnaXN0cnkuZGlzY292ZXJQMlBTdHViKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpc1AyUFJlcXVlc3RlciA9IHRydWU7XHJcbiAgICAgICAgICAgIGxldCBwMnBIYW5kbGVyUnVudGltZVVSTCA9IHAycENvbmZpZy5yZW1vdGVSdW50aW1lVVJMO1xyXG4gICAgICAgICAgICBzdHViSWQgPSBwMnBIYW5kbGVyUnVudGltZVVSTDtcclxuXHJcbiAgICAgICAgICAgIC8vIHN0ZXAgNCBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcclxuXHJcbiAgICAgICAgICAgIC8vIHN0ZXAgNSBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcclxuICAgICAgICAgICAgZGlzY292ZXJTdHViID0gdGhpcy5yZWdpc3RyeS5kaXNjb3ZlclAyUFN0dWIocDJwSGFuZGxlclJ1bnRpbWVVUkwpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gc3RlcCAzIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxyXG4gICAgICAgICAgc3R1YklkID0gZG9tYWluO1xyXG4gICAgICAgICAgZGlzY292ZXJTdHViID0gdGhpcy5yZWdpc3RyeS5kaXNjb3ZlclByb3Rvc3R1Yihkb21haW4pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSXMgcmVnaXN0ZWQ/XHJcbiAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlci5sb2FkU3R1Yl0xLiBQcm90byBTdHViIERpc2NvdmVyZWQgZm9yICcsIHByb3Rvc3R1YlVSTCwgJzogJywgZGlzY292ZXJTdHViKTtcclxuXHJcbiAgICAgICAgLy8gc3RlcCAyMyBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcclxuICAgICAgICByZXNvbHZlKGRpc2NvdmVyU3R1Yik7XHJcbiAgICAgICAgbG9nLmluZm8oJyBbUnVudGltZS5Mb2FkZXJdLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuJyk7XHJcblxyXG4gICAgICB9IGNhdGNoIChyZWFzb24pIHtcclxuXHJcbiAgICAgICAgLy8gaXMgbm90IHJlZ2lzdGVkP1xyXG4gICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXIubG9hZFN0dWJdMS4gUHJvdG8gU3R1YiBub3QgZm91bmQgJyArIHJlYXNvbik7XHJcblxyXG4gICAgICAgIC8vIHN0ZXAgOCBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcclxuICAgICAgICB0aGlzLmRlc2NyaXB0b3JzLmdldFN0dWJEZXNjcmlwdG9yKHByb3Rvc3R1YlVSTClcclxuICAgICAgICAgIC50aGVuKChzdHViRGVzY3JpcHRvcikgPT4ge1xyXG5cclxuICAgICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyLmxvYWRTdHViXTIuIHJldHVybiB0aGUgUHJvdG9TdHViIGRlc2NyaXB0b3InKTtcclxuXHJcbiAgICAgICAgICAgIC8vIHN0ZXAgOSBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcclxuICAgICAgICAgICAgX3N0dWJEZXNjcmlwdG9yID0gc3R1YkRlc2NyaXB0b3I7XHJcblxyXG4gICAgICAgICAgICBsZXQgc291cmNlUGFja2FnZVVSTCA9IHN0dWJEZXNjcmlwdG9yLnNvdXJjZVBhY2thZ2VVUkw7XHJcblxyXG4gICAgICAgICAgICBpZiAoc291cmNlUGFja2FnZVVSTCA9PT0gJy9zb3VyY2VQYWNrYWdlJykge1xyXG4gICAgICAgICAgICAgIHJldHVybiBzdHViRGVzY3JpcHRvci5zb3VyY2VQYWNrYWdlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBzdGVwIDEwIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ydW50aW1lQ2F0YWxvZ3VlLmdldFNvdXJjZVBhY2thZ2VGcm9tVVJMKHNvdXJjZVBhY2thZ2VVUkwpO1xyXG4gICAgICAgICAgfSwgaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgICAuY2F0Y2goZXJyb3JSZWFzb24pXHJcbiAgICAgICAgICAudGhlbigoc3R1YlNvdXJjZVBhY2thZ2UpID0+IHtcclxuICAgICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIGRlYnVnLCBpdCBzZWVtcyBSdW50aW1lQ2F0YWxvZ3VlIGRvZXMgbm90IHN1cHBvcnQgeWV0IGNvbnN0cmFpbnRzLiBJdCBhcHBlYXJzIGVtcHR5ISEhIVxyXG5cclxuICAgICAgICAgICAgaWYgKF9zdHViRGVzY3JpcHRvciAmJiBfc3R1YkRlc2NyaXB0b3IuY29uc3RyYWludHMpIHtcclxuICAgICAgICAgICAgICBzdHViQ2FwYWJpbGl0aWVzID0gX3N0dWJEZXNjcmlwdG9yLmNvbnN0cmFpbnRzO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBzdGVwIDExIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxyXG4gICAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyLmxvYWRTdHViXTMuIHJldHVybiB0aGUgUHJvdG9TdHViIFNvdXJjZSBDb2RlJyk7XHJcbiAgICAgICAgICAgIF9zdHViU291cmNlUGFja2FnZSA9IHN0dWJTb3VyY2VQYWNrYWdlO1xyXG5cclxuICAgICAgICAgICAgLy8gdGhpcyB3aWxsIHJldHVybiB0aGUgc2FuZGJveCBvciBvbmUgcHJvbWlzZSB0byBnZXRTYW5kYm94O1xyXG4gICAgICAgICAgICAvLyBzdGVwIDEyIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5nZXRTYW5kYm94KGRvbWFpbiwgc3R1YkNhcGFiaWxpdGllcyk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oKHN0dWJTYW5kYm94KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIC8vIHN0ZXAgMTUgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXHJcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXIubG9hZFN0dWJdNC4gaWYgdGhlIHNhbmRib3ggaXMgcmVnaXN0ZXJlZCB0aGVuIHJldHVybiB0aGUgc2FuZGJveCAnLCBzdHViU2FuZGJveCk7XHJcblxyXG4gICAgICAgICAgICBfc3R1YlNhbmRib3ggPSBzdHViU2FuZGJveDtcclxuICAgICAgICAgICAgcmV0dXJuIHN0dWJTYW5kYm94O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaCgocmVhc29uKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIC8vIHN0ZXAgMTMgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXHJcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXIubG9hZFN0dWJdNS4gU2FuZGJveCB3YXMgbm90IGZvdW5kLCBjcmVhdGluZyBhIG5ldyBvbmUgJywgcmVhc29uKTtcclxuXHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSBzYW5kYm94IGlzIHJlZ2lzdGVkIGZvciB0aGlzIHN0dWIgZGVzY3JpcHRvciB1cmw7XHJcblxyXG5cclxuICAgICAgICAgICAgLy8gc3RlcCAxNCBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3J1bnRpbWVGYWN0b3J5LmNyZWF0ZVNhbmRib3goc3R1YkNhcGFiaWxpdGllcykudGhlbigoc2FuZGJveCkgPT4ge1xyXG4gICAgICAgICAgICAgIHNhbmRib3guYWRkTGlzdGVuZXIoJyonLCAobXNnKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobXNnKTtcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgcmV0dXJuIHNhbmRib3g7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbigoc2FuZGJveCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaGF2ZUVycm9yKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAvLyBzdGVwIDE2IGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxyXG4gICAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyLmxvYWRTdHViXTYuIHJldHVybiB0aGUgc2FuZGJveCBpbnN0YW5jZSBhbmQgcmVnaXN0ZXInLCBzYW5kYm94LCAndG8gZG9tYWluICcsIGRvbWFpbik7XHJcblxyXG4gICAgICAgICAgICBfc3R1YlNhbmRib3ggPSBzYW5kYm94O1xyXG5cclxuICAgICAgICAgICAgLy8gd2UgbmVlZCByZWdpc3RlciBzdHViIG9uIHJlZ2lzdHJ5IC0gc3RlcCB4eHggaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LnJlZ2lzdGVyU3R1Yihfc3R1YlNhbmRib3gsIHN0dWJJZCwgcDJwQ29uZmlnLCBwcm90b3N0dWJVUkwsIF9zdHViRGVzY3JpcHRvcik7XHJcbiAgICAgICAgICB9LCBoYW5kbGVFcnJvcilcclxuICAgICAgICAgIC50aGVuKChydW50aW1lUHJvdG9TdHViKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIC8vIHN0ZXAgMjMgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXHJcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXIubG9hZFN0dWJdIDcuIHJldHVybiB0aGUgcnVudGltZSBwcm90b3N0dWIgdXJsOiAnLCBydW50aW1lUHJvdG9TdHViKTtcclxuXHJcbiAgICAgICAgICAgIF9ydW50aW1lUHJvdG9TdHViVVJMID0gcnVudGltZVByb3RvU3R1Yi51cmw7XHJcblxyXG4gICAgICAgICAgICAvLyBFeHRlbmQgb3JpZ2luYWwgaHlwZXJ0eSBjb25maWd1cmF0aW9uO1xyXG4gICAgICAgICAgICBsZXQgY29uZmlndXJhdGlvbiA9IHt9O1xyXG4gICAgICAgICAgICBpZiAoIWVtcHR5T2JqZWN0KF9zdHViRGVzY3JpcHRvci5jb25maWd1cmF0aW9uKSkge1xyXG4gICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gT2JqZWN0LmFzc2lnbih7fSwgSlNPTi5wYXJzZShfc3R1YkRlc2NyaXB0b3IuY29uZmlndXJhdGlvbikpO1xyXG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBfc3R1YkRlc2NyaXB0b3IuY29uZmlndXJhdGlvbjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChwMnBDb25maWcpIHtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IE9iamVjdC5hc3NpZ24oY29uZmlndXJhdGlvbiwgSlNPTi5wYXJzZShwMnBDb25maWcpKTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gT2JqZWN0LmFzc2lnbihjb25maWd1cmF0aW9uLCBwMnBDb25maWcpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gcmVxdWlyZWQgZm9yIHByb3Rvc3R1YiBzZXNzaW9uXHJcblxyXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uLnJ1bnRpbWVVUkwgPSB0aGlzLl9ydW50aW1lVVJMO1xyXG5cclxuICAgICAgICAgICAgLy8gc3RlcCAyNCBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAvLyBzdGVwIDI2IGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxyXG4gICAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXIubG9hZFN0dWJdIDg6IGFkZGluZyBzYW5kYm94IGxpc3RlbmVyIHRvIHByb3Rvc3R1YlVSTCA6ICcsIF9ydW50aW1lUHJvdG9TdHViVVJMKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gc3RlcCAyNyBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcclxuICAgICAgICAgICAgICAvLyBBZGQgdGhlIG1lc3NhZ2UgYnVzIGxpc3RlbmVyXHJcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlQnVzLmFkZExpc3RlbmVyKF9ydW50aW1lUHJvdG9TdHViVVJMLCAobXNnKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBfc3R1YlNhbmRib3gucG9zdE1lc3NhZ2UobXNnKTtcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgcmV0dXJuIF9zdHViU2FuZGJveC5kZXBsb3lDb21wb25lbnQoX3N0dWJTb3VyY2VQYWNrYWdlLnNvdXJjZUNvZGUsIF9ydW50aW1lUHJvdG9TdHViVVJMLCBjb25maWd1cmF0aW9uKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgIGxvZy5lcnJvcignW1J1bnRpbWUuTG9hZGVyLmxvYWRTdHViXSBFcnJvciBvbiBkZXBsb3kgY29tcG9uZW50OicsIGUpO1xyXG4gICAgICAgICAgICAgIHJlamVjdChlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcclxuXHJcblxyXG4gICAgICAgICAgICAvLyBzdGVwIDI4IGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxyXG4gICAgICAgICAgICBsZXQgc3R1YjtcclxuICAgICAgICAgICAgaWYgKHAycENvbmZpZykge1xyXG4gICAgICAgICAgICAgIGxvZy5sb2coJ1tSdW50aW1lLkxvYWRlci5sb2FkU3R1Yl0gcDJwQ29uZmlnOiAnLCBwMnBDb25maWcpO1xyXG5cclxuICAgICAgICAgICAgICBpZiAocDJwQ29uZmlnLmhhc093blByb3BlcnR5KCdpc0hhbmRsZXJTdHViJykpIHN0dWIgPSB0aGlzLnJlZ2lzdHJ5LnAycEhhbmRsZXJTdHViW3RoaXMuX3J1bnRpbWVVUkxdO1xyXG4gICAgICAgICAgICAgIGlmIChwMnBDb25maWcuaGFzT3duUHJvcGVydHkoJ3AycFJlcXVlc3RlclN0dWInKSkgc3R1YiA9IHRoaXMucmVnaXN0cnkucDJwUmVxdWVzdGVyU3R1YltwMnBDb25maWcucmVtb3RlUnVudGltZVVSTF07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgc3R1YiA9IHRoaXMucmVnaXN0cnkucHJvdG9zdHVic0xpc3RbZG9tYWluXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbG9nLmxvZygnW1J1bnRpbWUuTG9hZGVyLmxvYWRTdHViXSBTdHViOiAnLCBzdHViKTtcclxuICAgICAgICAgICAgcmVzb2x2ZShzdHViKTtcclxuICAgICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlci5sb2FkU3R1Yl0tLS0tLS0tLS0tLS0tLS0tLS0tIEVORCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4nKTtcclxuICAgICAgICAgIH0sIGhhbmRsZUVycm9yKVxyXG4gICAgICAgICAgLmNhdGNoKGVycm9yUmVhc29uKTtcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIERlcGxveSBpZHBQcm94eSBmcm9tIENhdGFsb2d1ZSBVUkwgb3IgZG9tYWluIHVybFxyXG4gICogQHBhcmFtICB7VVJMLlVSTH0gICAgIGRvbWFpbiAgICAgICAgICBkb21haW5cclxuICAqL1xyXG5cclxuICBsb2FkSWRwUHJveHkoaWRwUHJveHlVUkwpIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuX3JlYWR5VG9Vc2UoKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKCFpZHBQcm94eVVSTCkgdGhyb3cgbmV3ICAgRXJyb3IoJ1tSdW50aW1lLkxvYWRlcl0gSWRwUHJveHkgZGVzY3JpcHRvciB1cmwgcGFyYW1ldGVyIGlzIG5lZWRlZCcpO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICBsZXQgZG9tYWluID0gZGl2aWRlVVJMKGlkcFByb3h5VVJMKS5kb21haW47XHJcblxyXG4gICAgICBpZiAoIWRvbWFpbikge1xyXG4gICAgICAgIGRvbWFpbiA9IGlkcFByb3h5VVJMO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgX3Byb3h5U2FuZGJveDtcclxuICAgICAgbGV0IF9wcm94eURlc2NyaXB0b3I7XHJcbiAgICAgIGxldCBfcnVudGltZUlkcFByb3h5VVJMO1xyXG4gICAgICBsZXQgX3Byb3h5U291cmNlUGFja2FnZTtcclxuICAgICAgbGV0IGhhdmVFcnJvciA9IGZhbHNlO1xyXG5cclxuICAgICAgbGV0IGVycm9yUmVhc29uID0gKHJlYXNvbikgPT4ge1xyXG4gICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIFNvbWV0aGluZyBmYWlsZWQgb24gdGhlIGRlcGxveSBvZiBJZHBQcm94eTogJywgcmVhc29uKTtcclxuICAgICAgICByZWplY3QocmVhc29uKTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGxldCBoYW5kbGVFcnJvciA9IChyZWFzb24pID0+IHtcclxuICAgICAgICBoYXZlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHJlamVjdChyZWFzb24pO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy8gRGlzY292ZXIgSURQUHJveHlcclxuICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gLS0tLS0tLS0tLS0tLS0tLS0tLSBJRFAgUHJveHkgRGVwbG95IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbicpO1xyXG4gICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyXSBEaXNjb3ZlciBvciBDcmVhdGUgYSBuZXcgSWRwUHJveHkgZm9yIGRvbWFpbi9VUkw6ICcsIGRvbWFpbik7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCBydW50aW1lSWRwUHJveHlVUkwgPSB0aGlzLnJlZ2lzdHJ5LmRpc2NvdmVySWRwUHJveHkoZG9tYWluKTtcclxuXHJcbiAgICAgICAgLy8gSXMgcmVnaXN0ZWQ/XHJcbiAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gMS4gSURQUHJveHkgRGlzY292ZXJlZDogJywgcnVudGltZUlkcFByb3h5VVJMKTtcclxuXHJcbiAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCAyIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxyXG5cclxuICAgICAgICBsZXQgaWRwUHJveHkgPSB0aGlzLnJlZ2lzdHJ5LmlkcFByb3h5TGlzdFtkb21haW5dO1xyXG4gICAgICAgIGxvZy5sb2coJ0RlcGxveWVkOiAnLCBpZHBQcm94eSk7XHJcblxyXG4gICAgICAgIHJlc29sdmUoaWRwUHJveHkpO1xyXG4gICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIC0tLS0tLS0tLS0tLS0tLS0tLS0gRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbicpO1xyXG4gICAgICB9IGNhdGNoIChyZWFzb24pIHtcclxuXHJcbiAgICAgICAgLy8gaXMgbm90IHJlZ2lzdGVkP1xyXG4gICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIDEuIElkcFByb3h5IG5vdCBmb3VuZDonLCByZWFzb24pO1xyXG5cclxuICAgICAgICAvLyB3ZSBoYXZlIGNvbXBsZXRlZCBzdGVwIDMgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXHJcblxyXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gZ2V0IFByb3RvU3R1YiBkZXNjcmlwdG9yIHN0ZXAgNCBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcclxuICAgICAgICB0aGlzLmRlc2NyaXB0b3JzLmdldElkcFByb3h5RGVzY3JpcHRvcihpZHBQcm94eVVSTClcclxuICAgICAgICAgIC50aGVuKChwcm94eURlc2NyaXB0b3IpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIDIuIFJldHVybiB0aGUgSURQUHJveHkgZGVzY3JpcHRvcicpO1xyXG5cclxuICAgICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCA1IGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxyXG4gICAgICAgICAgICBfcHJveHlEZXNjcmlwdG9yID0gcHJveHlEZXNjcmlwdG9yO1xyXG5cclxuICAgICAgICAgICAgbGV0IHNvdXJjZVBhY2thZ2VVUkwgPSBwcm94eURlc2NyaXB0b3Iuc291cmNlUGFja2FnZVVSTDtcclxuXHJcbiAgICAgICAgICAgIGlmIChzb3VyY2VQYWNrYWdlVVJMID09PSAnL3NvdXJjZVBhY2thZ2UnKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHByb3h5RGVzY3JpcHRvci5zb3VyY2VQYWNrYWdlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGdldCBQcm90b1N0dWIgU291cmNlIGNvZGUgZnJvbSBkZXNjcmlwdG9yIC0gc3RlcCA2IGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ydW50aW1lQ2F0YWxvZ3VlLmdldFNvdXJjZVBhY2thZ2VGcm9tVVJMKHNvdXJjZVBhY2thZ2VVUkwpO1xyXG4gICAgICAgICAgfSwgaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgICAudGhlbigoc291cmNlUGFja2FnZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaGF2ZUVycm9yKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIDMuIHJldHVybiB0aGUgSURQUHJveHkgc291cmNlIHBhY2thZ2UnKTtcclxuXHJcbiAgICAgICAgICAgIC8vIHdlIGhhdmUgY29tcGxldGVkIHN0ZXAgNyBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcclxuXHJcbiAgICAgICAgICAgIF9wcm94eVNvdXJjZVBhY2thZ2UgPSBzb3VyY2VQYWNrYWdlO1xyXG5cclxuICAgICAgICAgICAgLy8gVE9ETzogQ2hlY2sgb24gUEVQIChwb2xpY3kgRW5naW5lKSBpZiB3ZSBuZWVkIHRoZSBzYW5kYm94IGFuZCBjaGVjayBpZiB0aGUgU2FuZGJveCBGYWN0b3J5IGhhdmUgdGhlIGNvbnRleHQgc2FuZGJveDtcclxuICAgICAgICAgICAgbGV0IHBvbGljeSA9IHRydWU7XHJcbiAgICAgICAgICAgIHJldHVybiBwb2xpY3k7XHJcbiAgICAgICAgICB9LCBoYW5kbGVFcnJvcilcclxuICAgICAgICAgIC50aGVuKChwb2xpY3kpID0+IHtcclxuICAgICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgLy8gdGhpcyB3aWxsIHJldHVybiB0aGUgc2FuZGJveCBvciBvbmUgcHJvbWlzZSB0byBnZXRTYW5kYm94O1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5nZXRTYW5kYm94KGRvbWFpbik7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oKHByb3h5U2FuZGJveCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaGF2ZUVycm9yKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIDQuIGlmIHRoZSBzYW5kYm94IGlzIHJlZ2lzdGVyZWQgdGhlbiByZXR1cm4gdGhlIHNhbmRib3gnLCBwcm94eVNhbmRib3gpO1xyXG5cclxuICAgICAgICAgICAgX3Byb3h5U2FuZGJveCA9IHByb3h5U2FuZGJveDtcclxuICAgICAgICAgICAgcmV0dXJuIHByb3h5U2FuZGJveDtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goKHJlYXNvbikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaGF2ZUVycm9yKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIDUuIFNhbmRib3ggd2FzIG5vdCBmb3VuZCwgY3JlYXRpbmcgYSBuZXcgb25lJywgcmVhc29uKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBwcm94eUNhcGFiaWxpdGllcyA9IHt9O1xyXG4gICAgICAgICAgICBpZiAoX3Byb3h5RGVzY3JpcHRvciAmJiBfcHJveHlEZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCdjYXBhYmlsaXRpZXMnKSkge1xyXG4gICAgICAgICAgICAgIF9wcm94eURlc2NyaXB0b3IgPSBfcHJveHlEZXNjcmlwdG9yLnN0dWJDYXBhYmlsaXRpZXM7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ydW50aW1lRmFjdG9yeS5jcmVhdGVTYW5kYm94KHByb3h5Q2FwYWJpbGl0aWVzKS50aGVuKChzYW5kYm94KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgIHNhbmRib3guYWRkTGlzdGVuZXIoJyonLCAobXNnKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobXNnKTtcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgcmV0dXJuIHNhbmRib3g7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC50aGVuKChzYW5kYm94KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gNi4gcmV0dXJuIHRoZSBzYW5kYm94IGluc3RhbmNlIGFuZCByZWdpc3RlcicsIHNhbmRib3gsICd0byBkb21haW4gJywgZG9tYWluKTtcclxuXHJcbiAgICAgICAgICAgIF9wcm94eVNhbmRib3ggPSBzYW5kYm94O1xyXG5cclxuICAgICAgICAgICAgLy8gd2UgbmVlZCByZWdpc3RlciBzdHViIG9uIHJlZ2lzdHJ5IC0gc3RlcCB4eHggaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LnJlZ2lzdGVySWRwUHJveHkoc2FuZGJveCwgZG9tYWluKTtcclxuICAgICAgICAgIH0sIGhhbmRsZUVycm9yKVxyXG4gICAgICAgICAgLnRoZW4oKHJ1bnRpbWVJZHBQcm94eVVSTCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaGF2ZUVycm9yKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIDcuIFJldHVybiB0aGUgcnVudGltZSBJZHAgUHJveHkgVVJMOiAnLCBydW50aW1lSWRwUHJveHlVUkwpO1xyXG5cclxuICAgICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCB4eHggaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXHJcblxyXG4gICAgICAgICAgICBfcnVudGltZUlkcFByb3h5VVJMID0gcnVudGltZUlkcFByb3h5VVJMO1xyXG5cclxuICAgICAgICAgICAgLy8gRXh0ZW5kIG9yaWdpbmFsIGh5cGVydHkgY29uZmlndXJhdGlvbjtcclxuICAgICAgICAgICAgbGV0IGNvbmZpZ3VyYXRpb24gPSB7fTtcclxuICAgICAgICAgICAgaWYgKCFlbXB0eU9iamVjdChfcHJveHlEZXNjcmlwdG9yLmNvbmZpZ3VyYXRpb24pKSB7XHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBPYmplY3QuYXNzaWduKHt9LCBKU09OLnBhcnNlKF9wcm94eURlc2NyaXB0b3IuY29uZmlndXJhdGlvbikpO1xyXG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBfcHJveHlEZXNjcmlwdG9yLmNvbmZpZ3VyYXRpb247XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucnVudGltZVVSTCA9IHRoaXMuX3J1bnRpbWVVUkw7XHJcblxyXG4gICAgICAgICAgICAvLyBEZXBsb3kgQ29tcG9uZW50IHN0ZXAgeHh4XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCB4eHggaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXHJcblxyXG4gICAgICAgICAgICAgIC8vIEFkZCB0aGUgbWVzc2FnZSBidXMgbGlzdGVuZXJcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VCdXMuYWRkTGlzdGVuZXIoX3J1bnRpbWVJZHBQcm94eVVSTCwgKG1zZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgX3Byb3h5U2FuZGJveC5wb3N0TWVzc2FnZShtc2cpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICByZXR1cm4gX3Byb3h5U2FuZGJveC5kZXBsb3lDb21wb25lbnQoX3Byb3h5U291cmNlUGFja2FnZS5zb3VyY2VDb2RlLCBydW50aW1lSWRwUHJveHlVUkwsIGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gRXJyb3Igb24gZGVwbG95IGNvbXBvbmVudDonLCBlKTtcclxuICAgICAgICAgICAgICByZWplY3QoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIGhhbmRsZUVycm9yKVxyXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaGF2ZUVycm9yKSByZXR1cm4gZmFsc2U7XHJcblxyXG5cclxuICAgICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCB4eHggaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXHJcblxyXG4gICAgICAgICAgICAvLyBMb2FkIFN0dWIgZnVuY3Rpb24gcmVzb2x2ZWQgd2l0aCBzdWNjZXNzO1xyXG4gICAgICAgICAgICAvLyBsZXQgaWRwUHJveHkgPSB7XHJcbiAgICAgICAgICAgIC8vICAgcnVudGltZUlkcFByb3h5VVJMOiBfcnVudGltZUlkcFByb3h5VVJMLFxyXG4gICAgICAgICAgICAvLyAgIHN0YXR1czogZGVwbG95Q29tcG9uZW50U3RhdHVzXHJcbiAgICAgICAgICAgIC8vIH07XHJcblxyXG4gICAgICAgICAgICAvL3RoaXMucmVnaXN0cnkuaWRwUHJveHlMaXN0W2RvbWFpbl0uc3RhdHVzID0gJ2RlcGxveWVkJztcclxuICAgICAgICAgICAgbGV0IGlkcFByb3h5ID0gdGhpcy5yZWdpc3RyeS5pZHBQcm94eUxpc3RbZG9tYWluXTtcclxuXHJcbiAgICAgICAgICAgIGxvZy5sb2coJ1tSdW50aW1lLkxvYWRlci5sb2FkSWRwUHJveHldIDg6IGxvYWRlZDogJywgaWRwUHJveHkpO1xyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShpZHBQcm94eSk7XHJcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXIubG9hZElkcFByb3h5XSAtLS0tLS0tLS0tLS0tLS0tLS0tIEVORCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4nKTtcclxuXHJcbiAgICAgICAgICB9LCBoYW5kbGVFcnJvcilcclxuICAgICAgICAgIC5jYXRjaChlcnJvclJlYXNvbik7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIGlmIHRoZSBsb2FkZXIgaXMgcmVhZHkgdG8gbG9hZCBhbGwgY29tcG9uZW50c1xyXG4gIF9yZWFkeVRvVXNlKCkge1xyXG5cclxuICAgIGxldCBzdGF0dXMgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoIXRoaXMuX3J1bnRpbWVVUkwpIHRocm93IG5ldyAgIEVycm9yKCdbUnVudGltZS5Mb2FkZXJdIFRoZSBsb2FkZXIgbmVlZCB0aGUgcnVudGltZSB1cmwgYWRkcmVzcycpO1xyXG4gICAgaWYgKCF0aGlzLl9tZXNzYWdlc0J1cykgdGhyb3cgbmV3ICAgRXJyb3IoJ1tSdW50aW1lLkxvYWRlcl0gVGhlIGxvYWRlciBuZWVkIHRoZSBtZXNzYWdlQnVzIGNvbXBvbmVudCcpO1xyXG4gICAgaWYgKCF0aGlzLl9yZWdpc3RyeSkgdGhyb3cgbmV3ICAgRXJyb3IoJ1tSdW50aW1lLkxvYWRlcl0gVGhlIGxvYWRlciBuZWVkIHRoZSByZWdpc3RyeSBjb21wb25lbnQnKTtcclxuICAgIGlmICghdGhpcy5fcnVudGltZUZhY3RvcnkpIHRocm93IG5ldyAgIEVycm9yKCdbUnVudGltZS5Mb2FkZXJdIFRoZSBsb2FkZXIgbmVlZCB0aGUgcnVudGltZSBmYWN0b3J5IGNvbXBvbmVudCcpO1xyXG5cclxuICAgIHN0YXR1cyA9IHRydWU7XHJcbiAgICByZXR1cm4gc3RhdHVzO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IExvYWRlcjtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9ydW50aW1lL0xvYWRlci5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7QUFKQTtBQUNBO0FBSUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQXVFQTs7Ozs7Ozs7Ozs7OztBQWFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7OztBQUtBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQWh0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7Ozs7O0FBb3BCQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///492\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.storage = storage;\n\nvar _runtimeConfiguration = __webpack_require__(144);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar storages = {};\n\nfunction storage(runtimeFactory) {\n if (!runtimeFactory) throw new Error('The runtime factory is a needed parameter');\n\n (0, _keys2.default)(_runtimeConfiguration.runtimeConfiguration.storageSchemas).forEach(function (key) {\n\n if (!storages.hasOwnProperty(key)) {\n storages[key] = runtimeFactory.storageManager(key, _runtimeConfiguration.runtimeConfiguration.storageSchemas[key]);\n }\n });\n\n return storages;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ydW50aW1lL1N0b3JhZ2UuanM/ZTk0NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBydW50aW1lQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vcnVudGltZUNvbmZpZ3VyYXRpb24nO1xyXG5cclxubGV0IHN0b3JhZ2VzID0ge307XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc3RvcmFnZShydW50aW1lRmFjdG9yeSkge1xyXG4gIGlmICghcnVudGltZUZhY3RvcnkpIHRocm93IG5ldyBFcnJvcignVGhlIHJ1bnRpbWUgZmFjdG9yeSBpcyBhIG5lZWRlZCBwYXJhbWV0ZXInKTtcclxuXHJcbiAgT2JqZWN0LmtleXMocnVudGltZUNvbmZpZ3VyYXRpb24uc3RvcmFnZVNjaGVtYXMpLmZvckVhY2goKGtleSkgPT4ge1xyXG5cclxuICAgIGlmICghc3RvcmFnZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICBzdG9yYWdlc1trZXldID0gcnVudGltZUZhY3Rvcnkuc3RvcmFnZU1hbmFnZXIoa2V5LCBydW50aW1lQ29uZmlndXJhdGlvbi5zdG9yYWdlU2NoZW1hc1trZXldKTtcclxuICAgIH1cclxuXHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBzdG9yYWdlcztcclxufVxyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3J1bnRpbWUvU3RvcmFnZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUlBO0FBQ0E7QUFMQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///493\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _utils = __webpack_require__(14);\n\nvar _runtimeUtils = __webpack_require__(143);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('Descriptors');\n\nvar Descriptors = function () {\n function Descriptors(runtimeURL, catalogue, runtimeConfiguration) {\n (0, _classCallCheck3.default)(this, Descriptors);\n\n if (!runtimeURL) throw Error('The descriptor need to know the runtime url to be used');\n if (!catalogue) throw Error('The descriptor needs the catalogue instance');\n if (!runtimeConfiguration) throw Error('The descriptor needs the runtime configuration');\n\n this.log = log;\n\n this.runtimeConfiguration = runtimeConfiguration;\n this.runtimeURL = runtimeURL;\n this.catalogue = catalogue;\n\n this.constraints = _runtimeUtils.runtimeUtils.runtimeCapabilities;\n }\n\n (0, _createClass3.default)(Descriptors, [{\n key: 'getHypertyDescriptor',\n value: function getHypertyDescriptor(hypertyURL) {\n return this.catalogue.getHypertyDescriptor(hypertyURL, true, this.constraints);\n }\n }, {\n key: 'getStubDescriptor',\n value: function getStubDescriptor(stubURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var domain = void 0;\n var protostub = void 0;\n var protoStubURL = void 0;\n\n var originDividedURL = (0, _utils.divideURL)(_this.runtimeURL);\n var originDomain = originDividedURL.domain;\n\n if (stubURL.includes('://')) {\n var dividedURL = (0, _utils.divideURL)(stubURL);\n domain = dividedURL.domain;\n var path = dividedURL.identity;\n\n if (path) {\n protostub = path.substring(path.lastIndexOf('/') + 1);\n } else {\n protostub = 'default';\n }\n } else {\n protostub = 'default';\n domain = stubURL;\n }\n\n protoStubURL = (0, _utils.buildURL)(_this.runtimeConfiguration, 'catalogueURLs', 'protocolstub', protostub);\n if (domain !== _this.runtimeConfiguration.domain) {\n if (!stubURL.indexOf('https') || !stubURL.indexOf('hyperty-catalogue')) {\n protoStubURL = stubURL;\n } else {\n\n // TODO: check how to load form different configuration domain\n var resource = (0, _utils.getConfigurationResources)(_this.runtimeConfiguration, 'catalogueURLs', 'protocolstub');\n protoStubURL = resource.prefix + domain + resource.suffix + protostub;\n }\n }\n\n log.log('Load ProtocolStub for domain, ' + domain + ' : ', protoStubURL);\n return _this.catalogue.getStubDescriptor(protoStubURL, true, _this.constraints).then(function (result) {\n\n resolve(result);\n }).catch(function (error) {\n\n // log.log('Error: ', error);\n\n protostub = domain;\n domain = originDomain;\n\n var resource = (0, _utils.getConfigurationResources)(_this.runtimeConfiguration, 'catalogueURLs', 'protocolstub');\n protoStubURL = resource.prefix + domain + resource.suffix + protostub;\n\n // log.log('Fallback -> Load Protocolstub for domain, ' + domain + ' : ', protostub);\n return _this.catalogue.getStubDescriptor(protoStubURL, true, _this.constraints);\n }).then(function (result) {\n resolve(result);\n }).catch(function (reason) {\n reject(reason);\n });\n });\n }\n }, {\n key: 'getIdpProxyDescriptor',\n value: function getIdpProxyDescriptor(idpProxyURL) {\n var _this2 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var domain = void 0;\n var idpproxy = void 0;\n\n var originDividedURL = (0, _utils.divideURL)(_this2.runtimeURL);\n var originDomain = originDividedURL.domain;\n var constraints = _this2.constraints;\n\n constraints.constraints.onlyAccessToken = true;\n constraints.constraints.onlyIdAssertionValidation = true;\n console.log('LOG HERE', constraints);\n if (idpProxyURL.includes('://')) {\n var dividedURL = (0, _utils.divideURL)(idpProxyURL);\n domain = dividedURL.domain;\n var path = dividedURL.identity;\n if (path) {\n idpproxy = path.substring(path.lastIndexOf('/') + 1);\n } else {\n idpproxy = 'default';\n }\n } else {\n idpproxy = 'default';\n domain = idpProxyURL;\n }\n\n var resource = (0, _utils.getConfigurationResources)(_this2.runtimeConfiguration, 'catalogueURLs', 'idpProxy');\n\n idpProxyURL = resource.prefix + domain + resource.suffix + idpproxy;\n // log.log('Load Idp Proxy for domain, ' + domain + ' : ', idpProxyURL);\n return _this2.catalogue.getIdpProxyDescriptor(idpProxyURL, true, constraints).then(function (result) {\n\n resolve(result);\n }).catch(function () {\n\n idpproxy = domain;\n domain = originDomain;\n\n idpProxyURL = (0, _utils.buildURL)(_this2.runtimeConfiguration, 'catalogueURLs', 'idpProxy', idpproxy);\n\n // log.log('Load Idp Proxy for domain, ' + domain + ' : ', idpProxyURL);\n return _this2.catalogue.getIdpProxyDescriptor(idpProxyURL, true, constraints);\n }).then(function (result) {\n resolve(result);\n }).catch(function (reason) {\n reject(reason);\n });\n });\n }\n }]);\n return Descriptors;\n}();\n\nexports.default = Descriptors;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDk0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ydW50aW1lL0Rlc2NyaXB0b3JzLmpzP2ZjZDgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaXZpZGVVUkwsIGdldENvbmZpZ3VyYXRpb25SZXNvdXJjZXMsIGJ1aWxkVVJMfSBmcm9tICcuLi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IHJ1bnRpbWVVdGlscyB9IGZyb20gJy4vcnVudGltZVV0aWxzJztcclxuXHJcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XHJcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdEZXNjcmlwdG9ycycpO1xyXG5cclxuY2xhc3MgRGVzY3JpcHRvcnMge1xyXG5cclxuICBjb25zdHJ1Y3RvcihydW50aW1lVVJMLCBjYXRhbG9ndWUsIHJ1bnRpbWVDb25maWd1cmF0aW9uKSB7XHJcbiAgICBpZiAoIXJ1bnRpbWVVUkwpIHRocm93IEVycm9yKCdUaGUgZGVzY3JpcHRvciBuZWVkIHRvIGtub3cgdGhlIHJ1bnRpbWUgdXJsIHRvIGJlIHVzZWQnKTtcclxuICAgIGlmICghY2F0YWxvZ3VlKSB0aHJvdyBFcnJvcignVGhlIGRlc2NyaXB0b3IgbmVlZHMgdGhlIGNhdGFsb2d1ZSBpbnN0YW5jZScpO1xyXG4gICAgaWYgKCFydW50aW1lQ29uZmlndXJhdGlvbikgdGhyb3cgRXJyb3IoJ1RoZSBkZXNjcmlwdG9yIG5lZWRzIHRoZSBydW50aW1lIGNvbmZpZ3VyYXRpb24nKTtcclxuXHJcbiAgICB0aGlzLmxvZyA9IGxvZztcclxuXHJcbiAgICB0aGlzLnJ1bnRpbWVDb25maWd1cmF0aW9uID0gcnVudGltZUNvbmZpZ3VyYXRpb247XHJcbiAgICB0aGlzLnJ1bnRpbWVVUkwgPSBydW50aW1lVVJMO1xyXG4gICAgdGhpcy5jYXRhbG9ndWUgPSBjYXRhbG9ndWU7XHJcblxyXG4gICAgdGhpcy5jb25zdHJhaW50cyA9IHJ1bnRpbWVVdGlscy5ydW50aW1lQ2FwYWJpbGl0aWVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0SHlwZXJ0eURlc2NyaXB0b3IoaHlwZXJ0eVVSTCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2F0YWxvZ3VlLmdldEh5cGVydHlEZXNjcmlwdG9yKGh5cGVydHlVUkwsIHRydWUsIHRoaXMuY29uc3RyYWludHMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3R1YkRlc2NyaXB0b3Ioc3R1YlVSTCkge1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICBsZXQgZG9tYWluO1xyXG4gICAgICBsZXQgcHJvdG9zdHViO1xyXG4gICAgICBsZXQgcHJvdG9TdHViVVJMO1xyXG5cclxuICAgICAgbGV0IG9yaWdpbkRpdmlkZWRVUkwgPSBkaXZpZGVVUkwodGhpcy5ydW50aW1lVVJMKTtcclxuICAgICAgbGV0IG9yaWdpbkRvbWFpbiA9IG9yaWdpbkRpdmlkZWRVUkwuZG9tYWluO1xyXG5cclxuICAgICAgaWYgKHN0dWJVUkwuaW5jbHVkZXMoJzovLycpKSB7XHJcbiAgICAgICAgbGV0IGRpdmlkZWRVUkwgPSBkaXZpZGVVUkwoc3R1YlVSTCk7XHJcbiAgICAgICAgZG9tYWluID0gZGl2aWRlZFVSTC5kb21haW47XHJcbiAgICAgICAgbGV0IHBhdGggPSBkaXZpZGVkVVJMLmlkZW50aXR5O1xyXG5cclxuICAgICAgICBpZiAocGF0aCkge1xyXG4gICAgICAgICAgcHJvdG9zdHViID0gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZignLycpICsgMSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHByb3Rvc3R1YiA9ICdkZWZhdWx0JztcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHByb3Rvc3R1YiA9ICdkZWZhdWx0JztcclxuICAgICAgICBkb21haW4gPSBzdHViVVJMO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBwcm90b1N0dWJVUkwgPSBidWlsZFVSTCh0aGlzLnJ1bnRpbWVDb25maWd1cmF0aW9uLCAnY2F0YWxvZ3VlVVJMcycsICdwcm90b2NvbHN0dWInLCBwcm90b3N0dWIpO1xyXG4gICAgICBpZiAoZG9tYWluICE9PSB0aGlzLnJ1bnRpbWVDb25maWd1cmF0aW9uLmRvbWFpbikge1xyXG4gICAgICAgIGlmICghc3R1YlVSTC5pbmRleE9mKCdodHRwcycpIHx8ICFzdHViVVJMLmluZGV4T2YoJ2h5cGVydHktY2F0YWxvZ3VlJykpIHtcclxuICAgICAgICAgIHByb3RvU3R1YlVSTCA9IHN0dWJVUkw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyBUT0RPOiBjaGVjayBob3cgdG8gbG9hZCBmb3JtIGRpZmZlcmVudCBjb25maWd1cmF0aW9uIGRvbWFpblxyXG4gICAgICAgICAgbGV0IHJlc291cmNlID0gZ2V0Q29uZmlndXJhdGlvblJlc291cmNlcyh0aGlzLnJ1bnRpbWVDb25maWd1cmF0aW9uLCAnY2F0YWxvZ3VlVVJMcycsICdwcm90b2NvbHN0dWInKTtcclxuICAgICAgICAgIHByb3RvU3R1YlVSTCA9IHJlc291cmNlLnByZWZpeCArIGRvbWFpbiArIHJlc291cmNlLnN1ZmZpeCArIHByb3Rvc3R1YjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxvZy5sb2coJ0xvYWQgUHJvdG9jb2xTdHViIGZvciBkb21haW4sICcgKyBkb21haW4gKyAnIDogJywgcHJvdG9TdHViVVJMKTtcclxuICAgICAgcmV0dXJuIHRoaXMuY2F0YWxvZ3VlLmdldFN0dWJEZXNjcmlwdG9yKHByb3RvU3R1YlVSTCwgdHJ1ZSwgdGhpcy5jb25zdHJhaW50cykudGhlbigocmVzdWx0KSA9PiB7XHJcblxyXG4gICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuXHJcbiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xyXG5cclxuICAgICAgICAvLyBsb2cubG9nKCdFcnJvcjogJywgZXJyb3IpO1xyXG5cclxuICAgICAgICBwcm90b3N0dWIgPSBkb21haW47XHJcbiAgICAgICAgZG9tYWluID0gb3JpZ2luRG9tYWluO1xyXG5cclxuICAgICAgICBsZXQgcmVzb3VyY2UgPSBnZXRDb25maWd1cmF0aW9uUmVzb3VyY2VzKHRoaXMucnVudGltZUNvbmZpZ3VyYXRpb24sICdjYXRhbG9ndWVVUkxzJywgJ3Byb3RvY29sc3R1YicpO1xyXG4gICAgICAgIHByb3RvU3R1YlVSTCA9IHJlc291cmNlLnByZWZpeCArIGRvbWFpbiArIHJlc291cmNlLnN1ZmZpeCArIHByb3Rvc3R1YjtcclxuXHJcbiAgICAgICAgLy8gbG9nLmxvZygnRmFsbGJhY2sgLT4gTG9hZCBQcm90b2NvbHN0dWIgZm9yIGRvbWFpbiwgJyArIGRvbWFpbiArICcgOiAnLCBwcm90b3N0dWIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhdGFsb2d1ZS5nZXRTdHViRGVzY3JpcHRvcihwcm90b1N0dWJVUkwsIHRydWUsIHRoaXMuY29uc3RyYWludHMpO1xyXG4gICAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcclxuICAgICAgICByZWplY3QocmVhc29uKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRJZHBQcm94eURlc2NyaXB0b3IoaWRwUHJveHlVUkwpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICBsZXQgZG9tYWluO1xyXG4gICAgICBsZXQgaWRwcHJveHk7XHJcblxyXG4gICAgICBsZXQgb3JpZ2luRGl2aWRlZFVSTCA9IGRpdmlkZVVSTCh0aGlzLnJ1bnRpbWVVUkwpO1xyXG4gICAgICBsZXQgb3JpZ2luRG9tYWluID0gb3JpZ2luRGl2aWRlZFVSTC5kb21haW47XHJcbiAgICAgIGxldCBjb25zdHJhaW50cyA9IHRoaXMuY29uc3RyYWludHM7XHJcblxyXG4gICAgICBjb25zdHJhaW50cy5jb25zdHJhaW50cy5vbmx5QWNjZXNzVG9rZW4gPSB0cnVlO1xyXG4gICAgICBjb25zdHJhaW50cy5jb25zdHJhaW50cy5vbmx5SWRBc3NlcnRpb25WYWxpZGF0aW9uID0gdHJ1ZTtcclxuICAgICAgY29uc29sZS5sb2coJ0xPRyBIRVJFJywgY29uc3RyYWludHMpO1xyXG4gICAgICBpZiAoaWRwUHJveHlVUkwuaW5jbHVkZXMoJzovLycpKSB7XHJcbiAgICAgICAgbGV0IGRpdmlkZWRVUkwgPSBkaXZpZGVVUkwoaWRwUHJveHlVUkwpO1xyXG4gICAgICAgIGRvbWFpbiA9IGRpdmlkZWRVUkwuZG9tYWluO1xyXG4gICAgICAgIGxldCBwYXRoID0gZGl2aWRlZFVSTC5pZGVudGl0eTtcclxuICAgICAgICBpZiAocGF0aCkge1xyXG4gICAgICAgICAgaWRwcHJveHkgPSBwYXRoLnN1YnN0cmluZyhwYXRoLmxhc3RJbmRleE9mKCcvJykgKyAxKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWRwcHJveHkgPSAnZGVmYXVsdCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZHBwcm94eSA9ICdkZWZhdWx0JztcclxuICAgICAgICBkb21haW4gPSBpZHBQcm94eVVSTDtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIGxldCByZXNvdXJjZSA9IGdldENvbmZpZ3VyYXRpb25SZXNvdXJjZXModGhpcy5ydW50aW1lQ29uZmlndXJhdGlvbiwgJ2NhdGFsb2d1ZVVSTHMnLCAnaWRwUHJveHknKTtcclxuXHJcbiAgICAgIGlkcFByb3h5VVJMID0gcmVzb3VyY2UucHJlZml4ICsgZG9tYWluICsgcmVzb3VyY2Uuc3VmZml4ICsgaWRwcHJveHk7XHJcbiAgICAgIC8vIGxvZy5sb2coJ0xvYWQgSWRwIFByb3h5IGZvciBkb21haW4sICcgKyBkb21haW4gKyAnIDogJywgaWRwUHJveHlVUkwpO1xyXG4gICAgICByZXR1cm4gdGhpcy5jYXRhbG9ndWUuZ2V0SWRwUHJveHlEZXNjcmlwdG9yKGlkcFByb3h5VVJMLCB0cnVlLCBjb25zdHJhaW50cykudGhlbigocmVzdWx0KSA9PiB7XHJcblxyXG4gICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuXHJcbiAgICAgIH0pLmNhdGNoKCgpID0+IHtcclxuXHJcbiAgICAgICAgaWRwcHJveHkgPSBkb21haW47XHJcbiAgICAgICAgZG9tYWluID0gb3JpZ2luRG9tYWluO1xyXG5cclxuICAgICAgICBpZHBQcm94eVVSTCA9IGJ1aWxkVVJMKHRoaXMucnVudGltZUNvbmZpZ3VyYXRpb24sICdjYXRhbG9ndWVVUkxzJywgJ2lkcFByb3h5JywgaWRwcHJveHkpO1xyXG5cclxuICAgICAgICAvLyBsb2cubG9nKCdMb2FkIElkcCBQcm94eSBmb3IgZG9tYWluLCAnICsgZG9tYWluICsgJyA6ICcsIGlkcFByb3h5VVJMKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYXRhbG9ndWUuZ2V0SWRwUHJveHlEZXNjcmlwdG9yKGlkcFByb3h5VVJMLCB0cnVlLCBjb25zdHJhaW50cyk7XHJcbiAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xyXG4gICAgICAgIHJlamVjdChyZWFzb24pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IERlc2NyaXB0b3JzO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3J1bnRpbWUvRGVzY3JpcHRvcnMuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7Ozs7O0FBR0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///494\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _logLevels = __webpack_require__(201);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * Class where message bus handlers are built. To be used by the RuntimeUA to initialise the runtime UA.\r\n */\n\nvar log = logger.getLogger('RuntimeUA');\n\n// Log System\n\nvar MsgBusHandlers = function () {\n function MsgBusHandlers(pep, idm, crypto) {\n (0, _classCallCheck3.default)(this, MsgBusHandlers);\n\n if (!pep) throw Error('[MsgBusHandlers] pep input paramenter is mandatory');\n if (!idm) throw Error('[MsgBusHandlers] idm input paramente is mandatory');\n if (!crypto) throw Error('[MsgBusHandlers] crypto input paramente is mandatory');\n\n this.policyEngine = pep;\n this.identityManager = idm;\n this.cryptoManager = crypto;\n }\n\n // Policy based access control for incoming messages\n\n (0, _createClass3.default)(MsgBusHandlers, [{\n key: 'pepInHandler',\n get: function get() {\n var _this = this;\n\n return function (ctx) {\n _this.policyEngine.authorise(ctx.msg, true).then(function (changedMgs) {\n ctx.msg = changedMgs;\n ctx.next();\n }).catch(function (reason) {\n log.error(reason);\n ctx.fail(reason);\n });\n };\n }\n\n // Policy based access control for outgoing messages\n\n }, {\n key: 'pepOutHandler',\n get: function get() {\n var _this = this;\n return function (ctx) {\n _this.policyEngine.authorise(ctx.msg, false).then(function (changedMgs) {\n ctx.msg = changedMgs;\n ctx.next();\n }).catch(function (reason) {\n log.error(reason);\n ctx.fail(reason);\n });\n };\n }\n\n // Add Identity info to messages\n\n }, {\n key: 'idmHandler',\n get: function get() {\n var _this = this;\n return function (ctx) {\n _this.identityManager.processMessage(ctx.msg).then(function (changedMgs) {\n ctx.msg = changedMgs;\n ctx.next();\n }).catch(function (reason) {\n log.error(reason);\n ctx.fail(reason);\n });\n };\n }\n\n // encrypt messages\n\n }, {\n key: 'encryptHandler',\n get: function get() {\n var _this = this;\n return function (ctx) {\n _this.cryptoManager.encryptMessage(ctx.msg).then(function (changedMgs) {\n ctx.msg = changedMgs;\n ctx.next();\n }).catch(function (reason) {\n log.error(reason);\n ctx.fail(reason);\n });\n };\n }\n\n // decrypt messages\n\n }, {\n key: 'decryptHandler',\n get: function get() {\n var _this = this;\n return function (ctx) {\n _this.cryptoManager.decryptMessage(ctx.msg).then(function (changedMgs) {\n ctx.msg = changedMgs;\n ctx.next();\n }).catch(function (reason) {\n log.warn(reason);\n ctx.fail(reason);\n });\n };\n }\n }]);\n return MsgBusHandlers;\n}();\n\nexports.default = MsgBusHandlers;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDk1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ydW50aW1lL01zZ0J1c0hhbmRsZXJzLmpzPzZiYmEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqICBDbGFzcyB3aGVyZSBtZXNzYWdlIGJ1cyBoYW5kbGVycyBhcmUgYnVpbHQuIFRvIGJlIHVzZWQgYnkgdGhlIFJ1bnRpbWVVQSB0byBpbml0aWFsaXNlIHRoZSBydW50aW1lIFVBLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IGxvZyBhcyBsb2dMZXZlbHMgfSBmcm9tICcuLi9sb2dMZXZlbHMnO1xyXG5cclxuLy8gTG9nIFN5c3RlbVxyXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xyXG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignUnVudGltZVVBJyk7XHJcblxyXG5jbGFzcyBNc2dCdXNIYW5kbGVycyB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHBlcCwgaWRtLCBjcnlwdG8pIHtcclxuICAgIGlmICghcGVwKSB0aHJvdyBFcnJvcignW01zZ0J1c0hhbmRsZXJzXSBwZXAgaW5wdXQgcGFyYW1lbnRlciBpcyBtYW5kYXRvcnknKTtcclxuICAgIGlmICghaWRtKSB0aHJvdyBFcnJvcignW01zZ0J1c0hhbmRsZXJzXSBpZG0gaW5wdXQgcGFyYW1lbnRlIGlzIG1hbmRhdG9yeScpO1xyXG4gICAgaWYgKCFjcnlwdG8pIHRocm93IEVycm9yKCdbTXNnQnVzSGFuZGxlcnNdIGNyeXB0byBpbnB1dCBwYXJhbWVudGUgaXMgbWFuZGF0b3J5Jyk7XHJcblxyXG4gICAgdGhpcy5wb2xpY3lFbmdpbmUgPSBwZXA7XHJcbiAgICB0aGlzLmlkZW50aXR5TWFuYWdlciA9IGlkbTtcclxuICAgIHRoaXMuY3J5cHRvTWFuYWdlciA9IGNyeXB0bztcclxuICB9XHJcblxyXG4gIC8vIFBvbGljeSBiYXNlZCBhY2Nlc3MgY29udHJvbCBmb3IgaW5jb21pbmcgbWVzc2FnZXNcclxuXHJcbiAgZ2V0IHBlcEluSGFuZGxlcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIChjdHgpID0+IHtcclxuICAgICAgX3RoaXMucG9saWN5RW5naW5lLmF1dGhvcmlzZShjdHgubXNnLCB0cnVlKS50aGVuKChjaGFuZ2VkTWdzKSA9PiB7XHJcbiAgICAgICAgY3R4Lm1zZyA9IGNoYW5nZWRNZ3M7XHJcbiAgICAgICAgY3R4Lm5leHQoKTtcclxuICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xyXG4gICAgICAgIGxvZy5lcnJvcihyZWFzb24pO1xyXG4gICAgICAgIGN0eC5mYWlsKHJlYXNvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgfVxyXG5cclxuICAvLyBQb2xpY3kgYmFzZWQgYWNjZXNzIGNvbnRyb2wgZm9yIG91dGdvaW5nIG1lc3NhZ2VzXHJcbiAgZ2V0IHBlcE91dEhhbmRsZXIoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIChjdHgpID0+IHtcclxuICAgICAgX3RoaXMucG9saWN5RW5naW5lLmF1dGhvcmlzZShjdHgubXNnLCBmYWxzZSkudGhlbigoY2hhbmdlZE1ncykgPT4ge1xyXG4gICAgICAgIGN0eC5tc2cgPSBjaGFuZ2VkTWdzO1xyXG4gICAgICAgIGN0eC5uZXh0KCk7XHJcbiAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcclxuICAgICAgICBsb2cuZXJyb3IocmVhc29uKTtcclxuICAgICAgICBjdHguZmFpbChyZWFzb24pO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvLyBBZGQgSWRlbnRpdHkgaW5mbyB0byBtZXNzYWdlc1xyXG4gIGdldCBpZG1IYW5kbGVyKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiAoY3R4KSA9PiB7XHJcbiAgICAgIF90aGlzLmlkZW50aXR5TWFuYWdlci5wcm9jZXNzTWVzc2FnZShjdHgubXNnKS50aGVuKChjaGFuZ2VkTWdzKSA9PiB7XHJcbiAgICAgICAgY3R4Lm1zZyA9IGNoYW5nZWRNZ3M7XHJcbiAgICAgICAgY3R4Lm5leHQoKTtcclxuICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xyXG4gICAgICAgIGxvZy5lcnJvcihyZWFzb24pO1xyXG4gICAgICAgIGN0eC5mYWlsKHJlYXNvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vIGVuY3J5cHQgbWVzc2FnZXNcclxuXHJcbiAgZ2V0IGVuY3J5cHRIYW5kbGVyKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiAoY3R4KSA9PiB7XHJcbiAgICAgIF90aGlzLmNyeXB0b01hbmFnZXIuZW5jcnlwdE1lc3NhZ2UoY3R4Lm1zZykudGhlbigoY2hhbmdlZE1ncykgPT4ge1xyXG4gICAgICAgIGN0eC5tc2cgPSBjaGFuZ2VkTWdzO1xyXG4gICAgICAgIGN0eC5uZXh0KCk7XHJcbiAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcclxuICAgICAgICBsb2cuZXJyb3IocmVhc29uKTtcclxuICAgICAgICBjdHguZmFpbChyZWFzb24pO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gIH1cclxuXHJcbiAgLy8gZGVjcnlwdCBtZXNzYWdlc1xyXG5cclxuICBnZXQgZGVjcnlwdEhhbmRsZXIoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIChjdHgpID0+IHtcclxuICAgICAgX3RoaXMuY3J5cHRvTWFuYWdlci5kZWNyeXB0TWVzc2FnZShjdHgubXNnKS50aGVuKChjaGFuZ2VkTWdzKSA9PiB7XHJcbiAgICAgICAgY3R4Lm1zZyA9IGNoYW5nZWRNZ3M7XHJcbiAgICAgICAgY3R4Lm5leHQoKTtcclxuICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xyXG4gICAgICAgIGxvZy53YXJuKHJlYXNvbik7XHJcbiAgICAgICAgY3R4LmZhaWwocmVhc29uKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNc2dCdXNIYW5kbGVycztcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9ydW50aW1lL01zZ0J1c0hhbmRsZXJzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBREE7QUFDQTs7Ozs7QUFSQTs7OztBQVFBO0FBQ0E7QUFIQTtBQUNBO0FBR0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///495\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _GraphConnectorLight = __webpack_require__(497);\n\nvar _GraphConnectorLight2 = _interopRequireDefault(_GraphConnectorLight);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _GraphConnectorLight2.default; // let GraphConnector;\n// if (process.env.MODE !== 'light') {\n// GraphConnector = require('./GraphConnectorBase');\n// if (GraphConnector && GraphConnector.hasOwnProperty('default')) GraphConnector = GraphConnector.default;\n// } else {\n// GraphConnector = require('./GraphConnectorLight');\n// if (GraphConnector && GraphConnector.hasOwnProperty('default')) GraphConnector = GraphConnector.default;\n// }\n\n/**\r\n * The GraphConnectorBase have some problems with the size;\r\n * @deprecated Due to some problems increase a lot the file size\r\n */\n// import GraphConnector from './GraphConnectorBase';\n\n/**\r\n *\r\n * @experimental used instead of GraphConnectorBase;\r\n */\n\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDk2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ncmFwaGNvbm5lY3Rvci9HcmFwaENvbm5lY3Rvci5qcz84MGM4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGxldCBHcmFwaENvbm5lY3RvcjtcclxuLy8gaWYgKHByb2Nlc3MuZW52Lk1PREUgIT09ICdsaWdodCcpIHtcclxuLy8gICBHcmFwaENvbm5lY3RvciA9IHJlcXVpcmUoJy4vR3JhcGhDb25uZWN0b3JCYXNlJyk7XHJcbi8vICAgaWYgKEdyYXBoQ29ubmVjdG9yICYmIEdyYXBoQ29ubmVjdG9yLmhhc093blByb3BlcnR5KCdkZWZhdWx0JykpIEdyYXBoQ29ubmVjdG9yID0gR3JhcGhDb25uZWN0b3IuZGVmYXVsdDtcclxuLy8gfSBlbHNlIHtcclxuLy8gICBHcmFwaENvbm5lY3RvciA9IHJlcXVpcmUoJy4vR3JhcGhDb25uZWN0b3JMaWdodCcpO1xyXG4vLyAgIGlmIChHcmFwaENvbm5lY3RvciAmJiAgR3JhcGhDb25uZWN0b3IuaGFzT3duUHJvcGVydHkoJ2RlZmF1bHQnKSkgR3JhcGhDb25uZWN0b3IgPSBHcmFwaENvbm5lY3Rvci5kZWZhdWx0O1xyXG4vLyB9XHJcblxyXG4vKipcclxuICogVGhlIEdyYXBoQ29ubmVjdG9yQmFzZSBoYXZlIHNvbWUgcHJvYmxlbXMgd2l0aCB0aGUgc2l6ZTtcclxuICogQGRlcHJlY2F0ZWQgRHVlIHRvIHNvbWUgcHJvYmxlbXMgaW5jcmVhc2UgYSBsb3QgdGhlIGZpbGUgc2l6ZVxyXG4gKi9cclxuLy8gaW1wb3J0IEdyYXBoQ29ubmVjdG9yIGZyb20gJy4vR3JhcGhDb25uZWN0b3JCYXNlJztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAZXhwZXJpbWVudGFsIHVzZWQgaW5zdGVhZCBvZiBHcmFwaENvbm5lY3RvckJhc2U7XHJcbiAqL1xyXG5pbXBvcnQgR3JhcGhDb25uZWN0b3IgZnJvbSAnLi9HcmFwaENvbm5lY3RvckxpZ2h0JztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEdyYXBoQ29ubmVjdG9yO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2dyYXBoY29ubmVjdG9yL0dyYXBoQ29ubmVjdG9yLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFtQkE7QUFDQTs7Ozs7QUFwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7Ozs7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///496\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the "License");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an "AS IS" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\n/**\r\n * The Graph Connector contains the contact list/address book.\r\n * @abstract\r\n * @experimental\r\n * @author beierle@tu-berlin.de\r\n *\r\n *\r\n */\nvar GraphConnector = function GraphConnector(hypertyRuntimeURL, messageBus, storageManager) {\n (0, _classCallCheck3.default)(this, GraphConnector);\n};\n\nexports.default = GraphConnector;\nmodule.exports = exports["default"];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDk3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ncmFwaGNvbm5lY3Rvci9HcmFwaENvbm5lY3RvckxpZ2h0LmpzP2ZmZGYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4gKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxyXG4gKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcclxuICogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuICogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXHJcbiAqIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcclxuICogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiAqIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXHJcbiAqXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbiAqXHJcbiAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqXHJcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuICoqL1xyXG5cclxuLyoqXHJcbiAqIFRoZSBHcmFwaCBDb25uZWN0b3IgY29udGFpbnMgdGhlIGNvbnRhY3QgbGlzdC9hZGRyZXNzIGJvb2suXHJcbiAqIEBhYnN0cmFjdFxyXG4gKiBAZXhwZXJpbWVudGFsXHJcbiAqIEBhdXRob3IgYmVpZXJsZUB0dS1iZXJsaW4uZGVcclxuICpcclxuICpcclxuICovXHJcbmNsYXNzIEdyYXBoQ29ubmVjdG9yIHtcclxuXHJcbiAgY29uc3RydWN0b3IoaHlwZXJ0eVJ1bnRpbWVVUkwsIG1lc3NhZ2VCdXMsIHN0b3JhZ2VNYW5hZ2VyKSB7XHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEdyYXBoQ29ubmVjdG9yO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2dyYXBoY29ubmVjdG9yL0dyYXBoQ29ubmVjdG9yTGlnaHQuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTs7Ozs7Ozs7QUFRQTtBQUVBO0FBRUE7QUFDQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///497\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(14);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('CoreDiscovery'); /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\n// Log System\n\n/**\r\n* Core Discovery interface\r\n* Class to allow applications to search for hyperties and DataObjects using the message bus\r\n*/\nvar CoreDiscovery = function () {\n\n /**\r\n * To initialise the Discovery, which will provide the support for hyperties to\r\n * query users registered in outside the internal core.\r\n * @param {MessageBus} msgbus msgbus\r\n * @param {RuntimeURL} runtimeURL runtimeURL\r\n * @param {graphConnector} graphConnector\r\n */\n function CoreDiscovery(runtimeURL, msgBus, graphConnector, runtimeFactory, registry) {\n (0, _classCallCheck3.default)(this, CoreDiscovery);\n\n if (!runtimeFactory) throw Error('The catalogue needs the runtimeFactory');\n\n var _this = this;\n this._messageBus = msgBus;\n _this.graphConnector = graphConnector;\n _this.httpRequest = runtimeFactory.createHttpRequest();\n _this.domain = (0, _utils.divideURL)(runtimeURL).domain;\n _this.discoveryURL = runtimeURL + '/discovery/';\n _this.registry = registry;\n\n _this.messageBus.addListener(_this.discoveryURL, function (msg) {\n\n _this.discoveryManager(msg).then(function (result) {\n\n //FLOW-OUT: message response\n _this.messageBus.postMessage({\n id: msg.id,\n type: 'response',\n from: msg.to,\n to: msg.from,\n body: {\n code: 200,\n value: result\n }\n });\n }).catch(function (err) {\n var description = void 0;\n var code = void 0;\n\n if (err === 'GraphConnector') {\n description = 'This search is not available at the moment. Try later.';\n code = 500;\n } else {\n description = 'Not Found';\n code = 404;\n }\n\n //FLOW-OUT: error message response\n _this.messageBus.postMessage({\n id: msg.id,\n type: 'response',\n from: msg.to,\n to: msg.from,\n body: {\n code: code,\n description: description\n }\n });\n });\n });\n }\n\n /**\r\n * Returns the MessageBus.\r\n */\n\n\n (0, _createClass3.default)(CoreDiscovery, [{\n key: 'discoveryManager',\n\n\n /* function to decide what discovery method to call and later return the response msg */\n value: function discoveryManager(msg) {\n var _this = this;\n var domain = (0, _utils.divideURL)(msg.from).domain;\n var atributes = msg.body.resource.split('/').filter(Boolean);\n var resources = [];\n var dataSchemes = [];\n\n log.log('[CoreDiscovery.discoveryManager] received: ', msg);\n\n if (msg.body.criteria) {\n if (msg.body.criteria.resources) {\n resources = msg.body.criteria.resources;\n }\n if (msg.body.criteria.dataSchemes) {\n dataSchemes = msg.body.criteria.dataSchemes;\n }\n }\n\n switch (atributes[1]) {\n case 'user':\n if (atributes[0] == 'hyperty') {\n return _this.discoverHyperties(msg.body.resource.split('user/')[1], dataSchemes, resources, msg.body.criteria.domain);\n } else {\n return _this.discoverDataObjects(msg.body.resource.split('user/')[1], dataSchemes, resources, msg.body.criteria.domain);\n }\n break;\n\n case 'url':\n if (atributes[0] == 'hyperty') {\n return _this.discoverHypertyPerURL(msg.body.resource.split('url/')[1], msg.body.criteria.domain);\n } else {\n return _this.discoverDataObjectPerURL(msg.body.resource.split('url/')[1], msg.body.criteria.domain);\n }\n break;\n case 'name':\n return _this.discoverDataObjectsPerName(msg.body.resource.split('name/')[1], dataSchemes, resources, msg.body.criteria.domain);\n break;\n case 'reporter':\n return _this.discoverDataObjectsPerReporter(msg.body.resource.split('reporter/')[1], dataSchemes, resources, msg.body.criteria.domain);\n break;\n case 'guid':\n if (typeof _this.graphConnector !== 'undefined' && _this.graphConnector !== null) {\n if (atributes[0] == 'hyperty') {\n return _this.discoverHypertiesPerGUID(msg.body.resource.split('user-guid://')[1], dataSchemes, resources);\n } else {\n return _this.discoverDataObjectsPerGUID(msg.body.resource.split('user-guid://')[1], dataSchemes, resources);\n }\n break;\n } else {\n return _promise2.default.reject('GraphConnector');\n break;\n }\n case 'userprofile':\n if (typeof _this.graphConnector !== 'undefined' && _this.graphConnector !== null) {\n if (atributes[0] == 'hyperty') {\n return _this.discoverHypertiesPerUserProfileData(msg.body.resource.split('userprofile/')[1], dataSchemes, resources);\n } else {\n return _this.discoverDataObjectsPerUserProfileData(msg.body.resource.split('userprofile/')[1], dataSchemes, resources);\n }\n break;\n } else {\n return _promise2.default.reject('GraphConnector');\n break;\n }\n }\n }\n\n /**\r\n * Advanced Search for Hyperties registered in domain registry associated with some user identifier (eg email, name ...)\r\n * @param {String} userIdentifier\r\n * @param {Array} dataSchemes (Optional) types of hyperties schemas\r\n * @param {Array} resources (Optional) types of hyperties resources\r\n */\n\n }, {\n key: 'discoverHypertiesPerUserProfileData',\n value: function discoverHypertiesPerUserProfileData(userIdentifier, dataSchemes, resources) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n //translate user identifier (e.g. email, name...) into the associated GUIDs\n _this.discoverGUIDPerUserIdentifier(userIdentifier).then(function (guids) {\n\n var hypertiesPromises = guids.map(function (guid) {\n\n return new _promise2.default(function (resolve, reject) {\n _this.discoverHypertiesPerGUID(guid, dataSchemes, resources).then(function (hyperties) {\n resolve(hyperties);\n }).catch(function (err) {\n resolve([]);\n });\n });\n });\n\n _promise2.default.all(hypertiesPromises).then(function (hypertiesResult) {\n\n var hyperties = [].concat.apply([], hypertiesResult);\n\n if (hyperties.length === 0) {\n return reject('No hyperties were found');\n }\n\n resolve(hyperties);\n });\n }).catch(function (err) {\n return reject(err);\n });\n });\n }\n\n /**\r\n * Advanced Search for DataObjects registered in domain registry associated with some user identifier (eg email, name ...)\r\n * @param {String} userIdentifier\r\n * @param {Array} dataSchemes (Optional) types of hyperties schemas\r\n * @param {Array} resources (Optional) types of hyperties resources\r\n */\n\n }, {\n key: 'discoverDataObjectsPerUserProfileData',\n value: function discoverDataObjectsPerUserProfileData(userIdentifier, dataSchemes, resources) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n //translate user identifier (e.g. email, name...) into the associated GUIDs\n _this.discoverGUIDPerUserIdentifier(userIdentifier).then(function (guids) {\n\n var dataObjectsPromises = guids.map(function (guid) {\n\n return new _promise2.default(function (resolve, reject) {\n _this.discoverDataObjectsPerGUID(guid, dataSchemes, resources).then(function (dataObjects) {\n resolve(dataObjects);\n }).catch(function (err) {\n resolve([]);\n });\n });\n });\n\n _promise2.default.all(dataObjectsPromises).then(function (dataObjectsResult) {\n\n var dataObjects = [].concat.apply([], dataObjectsResult);\n\n if (dataObjects.length === 0) {\n return reject('No dataObjects were found');\n }\n\n resolve(dataObjects);\n });\n }).catch(function (err) {\n return reject(err);\n });\n });\n }\n\n /**\r\n * Advanced Search for Hyperties registered in domain registry associated with some GUID\r\n * @param {String} guid\r\n * @param {Array} dataSchemes (Optional) types of hyperties schemas\r\n * @param {Array} resources (Optional) types of hyperties resources\r\n */\n\n }, {\n key: 'discoverHypertiesPerGUID',\n value: function discoverHypertiesPerGUID(guid, dataSchemes, resources) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n //translate GUID into the user IDs to query the domain registry\n _this.discoverUserIdsPerGUID(guid).then(function (uids) {\n\n //translate user IDs into the associated hyperties registered in some domain\n var hypertiesPromises = uids.map(function (uid) {\n return new _promise2.default(function (resolve, reject) {\n _this.discoverHyperties(uid.uID, dataSchemes, resources, uid.domain).then(function (hyperties) {\n resolve(hyperties);\n }).catch(function (err) {\n resolve([]);\n });\n });\n });\n\n _promise2.default.all(hypertiesPromises).then(function (hypertiesResult) {\n\n var hyperties = [].concat.apply([], hypertiesResult);\n\n if (hyperties.length === 0) {\n return reject('No hyperties were found');\n }\n\n // log.log('Hyperties : ', hyperties);\n resolve(hyperties);\n });\n }).catch(function (err) {\n return reject(err);\n });\n });\n }\n\n /**\r\n * Advanced Search for DataObjects registered in domain registry associated with some GUID\r\n * @param {String} guid\r\n * @param {Array} dataSchemes (Optional) types of hyperties schemas\r\n * @param {Array} resources (Optional) types of hyperties resources\r\n */\n\n }, {\n key: 'discoverDataObjectsPerGUID',\n value: function discoverDataObjectsPerGUID(guid, dataSchemes, resources) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n //translate GUID into the user IDs to query the domain registry\n _this.discoverUserIdsPerGUID(guid).then(function (uids) {\n\n //translate user IDs into the associated dataObjects registered in some domain\n var dataObjectPromises = uids.map(function (uid) {\n return new _promise2.default(function (resolve, reject) {\n _this.discoverDataObjects(uid.uID, dataSchemes, resources, uid.domain).then(function (dataObjects) {\n resolve(dataObjects);\n }).catch(function (err) {\n resolve([]);\n });\n });\n });\n\n _promise2.default.all(dataObjectPromises).then(function (dataObjectsResult) {\n\n var dataObjects = [].concat.apply([], dataObjectsResult);\n\n if (dataObjects.length === 0) {\n return reject('No dataObjects were found');\n }\n\n // log.log('DataObjects : ', dataObjects);\n resolve(dataObjects);\n });\n }).catch(function (err) {\n return reject(err);\n });\n });\n }\n\n /** Advanced Search for Hyperties registered in domain registry and associated with some user ID\r\n * @param {String} user user identifier, either in url or email format\r\n * @param {Array} dataSchemes (Optional) types of hyperties schemas\r\n * @param {Array} resources (Optional) types of hyperties resources\r\n * @param {String} domain (Optional) domain of the registry to search\r\n */\n\n }, {\n key: 'discoverHyperties',\n value: function discoverHyperties(user, dataSchemes, resources, domain) {\n var _this = this;\n var activeDomain = void 0;\n\n activeDomain = !domain ? _this.domain : domain;\n\n var msg = {\n type: 'read',\n from: _this.discoveryURL,\n to: 'domain://registry.' + activeDomain,\n body: {}\n };\n\n if (user.indexOf('user://') > -1) {\n msg.body.resource = user;\n } else {\n msg.body.resource = '/hyperty/idp-identifier/' + user;\n }\n\n if (dataSchemes.length > 0) {\n if (!msg.body.criteria) {\n msg.body.criteria = {};\n }\n msg.body.criteria.dataSchemes = dataSchemes;\n }\n\n if (resources.length > 0) {\n if (!msg.body.criteria) {\n msg.body.criteria = {};\n }\n msg.body.criteria.resources = resources;\n }\n\n return new _promise2.default(function (resolve, reject) {\n // log.log(\"[CoreDiscovery.discoverHyperties] sending msg \", msg);\n\n _this.messageBus.postMessage(msg, function (reply) {\n\n // log.log(\"[CoreDiscovery.discoverHyperties] rcved reply \", reply);\n\n if (reply.body.code === 200 || reply.body.code === 500) {\n var hyperties = reply.body.value;\n\n var finalHyperties = [];\n for (var key in hyperties) {\n finalHyperties.push(hyperties[key]);\n }if (finalHyperties.length > 0) {\n // log.log(\"[CoreDiscovery.discoverHyperties] Hyperties Found: \", finalHyperties);\n resolve(finalHyperties);\n } else {\n return reject('No Hyperty was found');\n }\n } else {\n return reject('No Hyperty was found');\n }\n\n /*_this.registry.isLegacy(user).then((legacy) => {\r\n if (legacy) resolve([{hypertyID: user }])\r\n else return reject('No Hyperty was found');\r\n });*/\n });\n });\n }\n\n /** Advanced Search for DataObjects registered in domain registry and associated with some user ID\r\n * @param {String} user user identifier, either in url or email format\r\n * @param {Array} dataSchemes (Optional) types of dataObjects schemas\r\n * @param {Array} resources (Optional) types of dataObjects resources\r\n * @param {String} domain (Optional) domain of the registry to search\r\n */\n\n }, {\n key: 'discoverDataObjects',\n value: function discoverDataObjects(user, dataSchemes, resources, domain) {\n var _this = this;\n var activeDomain = void 0;\n var dataObjectsArray = [];\n\n activeDomain = !domain ? _this.domain : domain;\n\n return new _promise2.default(function (resolve, reject) {\n\n //translate user identifier (e.g. email, name...) into the associated hyperties\n _this.discoverHyperties(user, [], [], activeDomain).then(function (hyperties) {\n\n var finalHyperties = [];\n for (var key in hyperties) {\n finalHyperties.push(hyperties[key]);\n } //translate hyperties URLs into the associated dataObjects registered in some domain\n var dataObjectsPromises = finalHyperties.map(function (hyperty) {\n return new _promise2.default(function (resolve, reject) {\n _this.discoverDataObjectsPerReporter(hyperty.hypertyID, dataSchemes, resources, activeDomain).then(function (dataObject) {\n resolve(dataObject);\n }).catch(function (err) {\n resolve([]);\n });\n });\n });\n\n _promise2.default.all(dataObjectsPromises).then(function (dataObjectsResult) {\n\n var dataObjects = [].concat.apply([], dataObjectsResult);\n\n dataObjects.forEach(function (dataObject) {\n dataObjectsArray.push(dataObject);\n });\n\n var finalDataObjects = [];\n for (var key in dataObjectsArray) {\n finalDataObjects.push(dataObjectsArray[key]);\n }if (finalDataObjects.length === 0) {\n return reject('No dataObjects were found');\n }\n\n // log.log('DataObjects Found: ', finalDataObjects);\n resolve(finalDataObjects);\n });\n }).catch(function (err) {\n return reject(err);\n });\n });\n }\n\n /**\r\n * function to request about hyperties registered in domain registry, and\r\n * return the hyperty information, if found.\r\n * @param {String} url dataObject URL\r\n * @param {String} domain (Optional)\r\n * @return {Promise} Promise\r\n */\n\n }, {\n key: 'discoverHypertyPerURL',\n value: function discoverHypertyPerURL(url, domain) {\n var _this = this;\n var activeDomain = void 0;\n\n activeDomain = !domain ? _this.domain : domain;\n\n var msg = {\n type: 'read',\n from: _this.discoveryURL,\n to: 'domain://registry.' + activeDomain,\n body: {\n resource: url\n }\n };\n\n return new _promise2.default(function (resolve, reject) {\n\n _this.messageBus.postMessage(msg, function (reply) {\n\n if (reply.body.code !== 200 && reply.body.code !== 500) {\n return reject('No Hyperty was found');\n }\n\n var hyperty = reply.body.value;\n\n if (hyperty) {\n // log.log('Hyperty found: ', hyperty);\n resolve(hyperty);\n } else {\n return reject('No Hyperty was found');\n }\n });\n });\n }\n\n /**\r\n * function to request about dataObject registered in domain registry, and\r\n * return the dataObject information, if found.\r\n * @param {String} url dataObject URL\r\n * @param {String} domain (Optional)\r\n * @return {Promise} Promise\r\n */\n\n }, {\n key: 'discoverDataObjectPerURL',\n value: function discoverDataObjectPerURL(url, domain) {\n var _this = this;\n var activeDomain = void 0;\n\n activeDomain = !domain ? _this.domain : domain;\n\n var msg = {\n type: 'read',\n from: _this.discoveryURL,\n to: 'domain://registry.' + activeDomain,\n body: {\n resource: url\n }\n };\n\n return new _promise2.default(function (resolve, reject) {\n\n _this.messageBus.postMessage(msg, function (reply) {\n\n var dataObject = reply.body.value;\n\n if (dataObject) {\n // log.log('DataObject found: ', dataObject);\n resolve(dataObject);\n } else {\n return reject('DataObject not found');\n }\n });\n });\n }\n\n /** Advanced Search for dataObjects registered in domain registry\r\n * @param {String} name name of the dataObject\r\n * @param {Array} dataSchemes (Optional) types of dataObject schemas\r\n * @param {Array} resources (Optional) types of dataObject resources\r\n * @param {String} domain (Optional) domain of the registry to search\r\n */\n\n }, {\n key: 'discoverDataObjectsPerName',\n value: function discoverDataObjectsPerName(name, dataSchemes, resources, domain) {\n var _this = this;\n var activeDomain = void 0;\n\n activeDomain = !domain ? _this.domain : domain;\n\n var msg = {\n type: 'read',\n from: _this.discoveryURL,\n to: 'domain://registry.' + activeDomain,\n body: {\n resource: name\n }\n };\n\n if (dataSchemes.length > 0) {\n if (!msg.body.criteria) {\n msg.body.criteria = {};\n }\n msg.body.criteria.dataSchemes = dataSchemes;\n }\n\n if (resources.length > 0) {\n if (!msg.body.criteria) {\n msg.body.criteria = {};\n }\n msg.body.criteria.resources = resources;\n }\n\n return new _promise2.default(function (resolve, reject) {\n\n _this.messageBus.postMessage(msg, function (reply) {\n\n var dataObjects = reply.body.value;\n\n var finalDataObjects = [];\n for (var key in dataObjects) {\n finalDataObjects.push(dataObjects[key]);\n }if (finalDataObjects.length > 0) {\n // log.log(\"DataObjects Found: \", finalDataObjects);\n resolve(finalDataObjects);\n } else {\n return reject('No DataObject was found');\n }\n });\n });\n }\n\n /**\r\n * function to request about specific reporter dataObject registered in domain registry, and\r\n * return the dataObjects from that reporter.\r\n * @param {String} reporter dataObject reporter\r\n * @param {Array} scdataSchemeshema (Optional) types of dataObjects schemas\r\n * @param {Array} resources (Optional) types of dataObjects resources\r\n * @param {String} domain (Optional)\r\n */\n\n }, {\n key: 'discoverDataObjectsPerReporter',\n value: function discoverDataObjectsPerReporter(reporter, dataSchemes, resources, domain) {\n var _this = this;\n var activeDomain = void 0;\n\n activeDomain = !domain ? _this.domain : domain;\n\n var msg = {\n type: 'read',\n from: _this.discoveryURL,\n to: 'domain://registry.' + activeDomain,\n body: {\n resource: '/comm',\n criteria: {\n reporter: reporter\n }\n }\n };\n\n if (dataSchemes.length > 0) {\n msg.body.criteria.dataSchemes = dataSchemes;\n }\n\n if (resources.length > 0) {\n msg.body.criteria.resources = resources;\n }\n\n return new _promise2.default(function (resolve, reject) {\n\n _this.messageBus.postMessage(msg, function (reply) {\n\n var dataObjects = reply.body.value;\n\n var finalDataObjects = [];\n for (var key in dataObjects) {\n finalDataObjects.push(dataObjects[key]);\n }if (finalDataObjects.length > 0) {\n // log.log(\"DataObjects Found: \", finalDataObjects);\n resolve(finalDataObjects);\n } else {\n return reject('No DataObject was found');\n }\n });\n });\n }\n\n /**\r\n * function to request global registry about the user IDs associated with some GUID\r\n * @param {String} guid\r\n * @return {Promise} Promise\r\n */\n\n }, {\n key: 'discoverUserIdsPerGUID',\n value: function discoverUserIdsPerGUID(guid) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n // log.log(\"GO graphConnector:\", guid);\n\n _this.graphConnector.queryGlobalRegistry(guid).then(function (graphConnectorContactData) {\n\n // log.log('Information returned from Global Registry: ', graphConnectorContactData);\n\n if (typeof graphConnectorContactData === 'string' || !graphConnectorContactData) {\n return reject('Unsuccessful discover userIDs by GUID');\n } else {\n\n var userids = graphConnectorContactData.userIDs;\n\n if (userids.length === 0) {\n return reject('UserIDs not available');\n }\n\n resolve(userids);\n }\n }).catch(function (err) {\n return reject(err);\n });\n });\n }\n\n /**\r\n * function to request discovery service about the GUID associated with some user identifier (eg email, name ...)\r\n * @param {String} userIdentifier\r\n * @return {Promise} Promise\r\n */\n\n }, {\n key: 'discoverGUIDPerUserIdentifier',\n value: function discoverGUIDPerUserIdentifier(userIdentifier) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var lookupURLDiscoveryService = 'https://rethink.tlabscloud.com/discovery/rest/discover/lookup?searchquery=';\n _this.httpRequest.get(lookupURLDiscoveryService + userIdentifier).then(function (json) {\n // log.log('discover GUID by user identifier', json);\n\n var response = JSON.parse(json);\n var filteredGuid = response.results.filter(function (x) {\n return x.rethinkID != undefined;\n });\n\n if (filteredGuid.length === 0) {\n return reject('Unsuccessful discover GUID by user identifier');\n }\n\n var guids = filteredGuid.map(function (x) {\n return x.rethinkID;\n });\n\n return resolve(guids);\n }).catch(function (err) {\n // log.log(\"HTTP Request error: \", err);\n return reject(err);\n });\n });\n }\n }, {\n key: 'messageBus',\n get: function get() {\n return this._messageBus;\n }\n\n /**\r\n * Sets the MessageBus.\r\n * @param {MessageBus} messageBus The Message Bus.\r\n */\n ,\n set: function set(messageBus) {\n this._messageBus = messageBus;\n }\n }]);\n return CoreDiscovery;\n}();\n\nexports.default = CoreDiscovery;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDk4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9kaXNjb3ZlcnkvQ29yZURpc2NvdmVyeS5qcz8yMzdkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuXHJcbi8vIExvZyBTeXN0ZW1cclxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcclxubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0NvcmVEaXNjb3ZlcnknKTtcclxuXHJcblxyXG5pbXBvcnQge2RpdmlkZVVSTH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xyXG5cclxuLyoqXHJcbiogQ29yZSBEaXNjb3ZlcnkgaW50ZXJmYWNlXHJcbiogQ2xhc3MgdG8gYWxsb3cgYXBwbGljYXRpb25zIHRvIHNlYXJjaCBmb3IgaHlwZXJ0aWVzIGFuZCBEYXRhT2JqZWN0cyB1c2luZyB0aGUgbWVzc2FnZSBidXNcclxuKi9cclxuY2xhc3MgQ29yZURpc2NvdmVyeSB7XHJcblxyXG4gIC8qKlxyXG4gICogVG8gaW5pdGlhbGlzZSB0aGUgRGlzY292ZXJ5LCB3aGljaCB3aWxsIHByb3ZpZGUgdGhlIHN1cHBvcnQgZm9yIGh5cGVydGllcyB0b1xyXG4gICogcXVlcnkgdXNlcnMgcmVnaXN0ZXJlZCBpbiBvdXRzaWRlIHRoZSBpbnRlcm5hbCBjb3JlLlxyXG4gICogQHBhcmFtICB7TWVzc2FnZUJ1c30gICAgICAgICAgbXNnYnVzICAgICAgICAgICAgICAgIG1zZ2J1c1xyXG4gICogQHBhcmFtICB7UnVudGltZVVSTH0gICAgICAgICAgcnVudGltZVVSTCAgICAgICAgICAgIHJ1bnRpbWVVUkxcclxuICAqIEBwYXJhbSAge2dyYXBoQ29ubmVjdG9yfSAgICBncmFwaENvbm5lY3RvclxyXG4gICovXHJcbiAgY29uc3RydWN0b3IocnVudGltZVVSTCwgbXNnQnVzLCBncmFwaENvbm5lY3RvciwgcnVudGltZUZhY3RvcnksIHJlZ2lzdHJ5KSB7XHJcbiAgICBpZiAoIXJ1bnRpbWVGYWN0b3J5KSB0aHJvdyBFcnJvcignVGhlIGNhdGFsb2d1ZSBuZWVkcyB0aGUgcnVudGltZUZhY3RvcnknKTtcclxuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgdGhpcy5fbWVzc2FnZUJ1cyA9IG1zZ0J1cztcclxuICAgIF90aGlzLmdyYXBoQ29ubmVjdG9yID0gZ3JhcGhDb25uZWN0b3I7XHJcbiAgICBfdGhpcy5odHRwUmVxdWVzdCA9IHJ1bnRpbWVGYWN0b3J5LmNyZWF0ZUh0dHBSZXF1ZXN0KCk7XHJcbiAgICBfdGhpcy5kb21haW4gPSBkaXZpZGVVUkwocnVudGltZVVSTCkuZG9tYWluO1xyXG4gICAgX3RoaXMuZGlzY292ZXJ5VVJMID0gcnVudGltZVVSTCArICcvZGlzY292ZXJ5Lyc7XHJcbiAgICBfdGhpcy5yZWdpc3RyeSA9IHJlZ2lzdHJ5O1xyXG5cclxuICAgIF90aGlzLm1lc3NhZ2VCdXMuYWRkTGlzdGVuZXIoX3RoaXMuZGlzY292ZXJ5VVJMLCAobXNnKSA9PiB7XHJcblxyXG4gICAgICBfdGhpcy5kaXNjb3ZlcnlNYW5hZ2VyKG1zZykudGhlbihyZXN1bHQgPT57XHJcblxyXG4gICAgICAgIC8vRkxPVy1PVVQ6IG1lc3NhZ2UgcmVzcG9uc2VcclxuICAgICAgICBfdGhpcy5tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHtcclxuICAgICAgICAgIGlkOiBtc2cuaWQsXHJcbiAgICAgICAgICB0eXBlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgICAgZnJvbTogbXNnLnRvLFxyXG4gICAgICAgICAgdG86IG1zZy5mcm9tLFxyXG4gICAgICAgICAgYm9keToge1xyXG4gICAgICAgICAgICBjb2RlOiAyMDAsXHJcbiAgICAgICAgICAgIHZhbHVlOiByZXN1bHRcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICBsZXQgZGVzY3JpcHRpb247XHJcbiAgICAgICAgICBsZXQgY29kZTtcclxuXHJcbiAgICAgICAgICBpZiAoZXJyID09PSAnR3JhcGhDb25uZWN0b3InKSB7XHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ1RoaXMgc2VhcmNoIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIG1vbWVudC4gVHJ5IGxhdGVyLic7XHJcbiAgICAgICAgICAgIGNvZGUgPSA1MDA7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdOb3QgRm91bmQnO1xyXG4gICAgICAgICAgICBjb2RlID0gNDA0O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vRkxPVy1PVVQ6IGVycm9yIG1lc3NhZ2UgcmVzcG9uc2VcclxuICAgICAgICAgIF90aGlzLm1lc3NhZ2VCdXMucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICBpZDogbXNnLmlkLFxyXG4gICAgICAgICAgICB0eXBlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgICAgICBmcm9tOiBtc2cudG8sXHJcbiAgICAgICAgICAgIHRvOiBtc2cuZnJvbSxcclxuICAgICAgICAgICAgYm9keToge1xyXG4gICAgICAgICAgICAgIGNvZGU6IGNvZGUsXHJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBNZXNzYWdlQnVzLlxyXG4gICAqL1xyXG4gIGdldCBtZXNzYWdlQnVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VCdXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBNZXNzYWdlQnVzLlxyXG4gICAqIEBwYXJhbSB7TWVzc2FnZUJ1c30gICAgICAgICAgIG1lc3NhZ2VCdXMgICAgVGhlIE1lc3NhZ2UgQnVzLlxyXG4gICAqL1xyXG4gIHNldCBtZXNzYWdlQnVzKG1lc3NhZ2VCdXMpIHtcclxuICAgIHRoaXMuX21lc3NhZ2VCdXMgPSBtZXNzYWdlQnVzO1xyXG4gIH1cclxuXHJcbiAgLyogZnVuY3Rpb24gdG8gZGVjaWRlIHdoYXQgZGlzY292ZXJ5IG1ldGhvZCB0byBjYWxsIGFuZCBsYXRlciByZXR1cm4gdGhlIHJlc3BvbnNlIG1zZyAgKi9cclxuICBkaXNjb3ZlcnlNYW5hZ2VyKG1zZykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBkb21haW4gPSBkaXZpZGVVUkwobXNnLmZyb20pLmRvbWFpbjtcclxuICAgIGxldCBhdHJpYnV0ZXMgPSBtc2cuYm9keS5yZXNvdXJjZS5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcclxuICAgIGxldCByZXNvdXJjZXMgPSBbXTtcclxuICAgIGxldCBkYXRhU2NoZW1lcyA9IFtdO1xyXG5cclxuICAgIGxvZy5sb2coJ1tDb3JlRGlzY292ZXJ5LmRpc2NvdmVyeU1hbmFnZXJdIHJlY2VpdmVkOiAnLCBtc2cpO1xyXG5cclxuICAgIGlmIChtc2cuYm9keS5jcml0ZXJpYSkge1xyXG4gICAgICBpZiAobXNnLmJvZHkuY3JpdGVyaWEucmVzb3VyY2VzKSB7IHJlc291cmNlcyA9IG1zZy5ib2R5LmNyaXRlcmlhLnJlc291cmNlczsgfVxyXG4gICAgICBpZiAobXNnLmJvZHkuY3JpdGVyaWEuZGF0YVNjaGVtZXMpIHsgZGF0YVNjaGVtZXMgPSBtc2cuYm9keS5jcml0ZXJpYS5kYXRhU2NoZW1lczsgfVxyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAoYXRyaWJ1dGVzWzFdKSB7XHJcbiAgICAgIGNhc2UgJ3VzZXInOlxyXG4gICAgICAgIGlmIChhdHJpYnV0ZXNbMF0gPT0gJ2h5cGVydHknKSB7IHJldHVybiBfdGhpcy5kaXNjb3Zlckh5cGVydGllcyhtc2cuYm9keS5yZXNvdXJjZS5zcGxpdCgndXNlci8nKVsxXSwgZGF0YVNjaGVtZXMsIHJlc291cmNlcywgbXNnLmJvZHkuY3JpdGVyaWEuZG9tYWluKTsgfSBlbHNlIHsgcmV0dXJuIF90aGlzLmRpc2NvdmVyRGF0YU9iamVjdHMobXNnLmJvZHkucmVzb3VyY2Uuc3BsaXQoJ3VzZXIvJylbMV0sIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMsIG1zZy5ib2R5LmNyaXRlcmlhLmRvbWFpbik7IH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ3VybCc6XHJcbiAgICAgICAgaWYgKGF0cmlidXRlc1swXSA9PSAnaHlwZXJ0eScpIHsgcmV0dXJuIF90aGlzLmRpc2NvdmVySHlwZXJ0eVBlclVSTChtc2cuYm9keS5yZXNvdXJjZS5zcGxpdCgndXJsLycpWzFdLCBtc2cuYm9keS5jcml0ZXJpYS5kb21haW4pOyB9IGVsc2UgeyByZXR1cm4gX3RoaXMuZGlzY292ZXJEYXRhT2JqZWN0UGVyVVJMKG1zZy5ib2R5LnJlc291cmNlLnNwbGl0KCd1cmwvJylbMV0sIG1zZy5ib2R5LmNyaXRlcmlhLmRvbWFpbik7IH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbmFtZSc6XHJcbiAgICAgICAgcmV0dXJuIF90aGlzLmRpc2NvdmVyRGF0YU9iamVjdHNQZXJOYW1lKG1zZy5ib2R5LnJlc291cmNlLnNwbGl0KCduYW1lLycpWzFdLCBkYXRhU2NoZW1lcywgcmVzb3VyY2VzLCBtc2cuYm9keS5jcml0ZXJpYS5kb21haW4pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyZXBvcnRlcic6XHJcbiAgICAgICAgcmV0dXJuIF90aGlzLmRpc2NvdmVyRGF0YU9iamVjdHNQZXJSZXBvcnRlcihtc2cuYm9keS5yZXNvdXJjZS5zcGxpdCgncmVwb3J0ZXIvJylbMV0sIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMsIG1zZy5ib2R5LmNyaXRlcmlhLmRvbWFpbik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2d1aWQnOlxyXG4gICAgICAgIGlmICh0eXBlb2YgX3RoaXMuZ3JhcGhDb25uZWN0b3IgIT09ICd1bmRlZmluZWQnICYmICBfdGhpcy5ncmFwaENvbm5lY3RvciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgaWYgKGF0cmlidXRlc1swXSA9PSAnaHlwZXJ0eScpIHsgcmV0dXJuIF90aGlzLmRpc2NvdmVySHlwZXJ0aWVzUGVyR1VJRChtc2cuYm9keS5yZXNvdXJjZS5zcGxpdCgndXNlci1ndWlkOi8vJylbMV0sIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMpOyB9IGVsc2UgeyByZXR1cm4gX3RoaXMuZGlzY292ZXJEYXRhT2JqZWN0c1BlckdVSUQobXNnLmJvZHkucmVzb3VyY2Uuc3BsaXQoJ3VzZXItZ3VpZDovLycpWzFdLCBkYXRhU2NoZW1lcywgcmVzb3VyY2VzKTsgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgnR3JhcGhDb25uZWN0b3InKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgY2FzZSAndXNlcnByb2ZpbGUnOlxyXG4gICAgICAgIGlmICh0eXBlb2YgX3RoaXMuZ3JhcGhDb25uZWN0b3IgIT09ICd1bmRlZmluZWQnICYmICBfdGhpcy5ncmFwaENvbm5lY3RvciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgaWYgKGF0cmlidXRlc1swXSA9PSAnaHlwZXJ0eScpIHsgcmV0dXJuIF90aGlzLmRpc2NvdmVySHlwZXJ0aWVzUGVyVXNlclByb2ZpbGVEYXRhKG1zZy5ib2R5LnJlc291cmNlLnNwbGl0KCd1c2VycHJvZmlsZS8nKVsxXSwgZGF0YVNjaGVtZXMsIHJlc291cmNlcyk7IH0gZWxzZSB7IHJldHVybiBfdGhpcy5kaXNjb3ZlckRhdGFPYmplY3RzUGVyVXNlclByb2ZpbGVEYXRhKG1zZy5ib2R5LnJlc291cmNlLnNwbGl0KCd1c2VycHJvZmlsZS8nKVsxXSwgZGF0YVNjaGVtZXMsIHJlc291cmNlcyk7IH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ0dyYXBoQ29ubmVjdG9yJyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEFkdmFuY2VkIFNlYXJjaCBmb3IgSHlwZXJ0aWVzIHJlZ2lzdGVyZWQgaW4gZG9tYWluIHJlZ2lzdHJ5IGFzc29jaWF0ZWQgd2l0aCBzb21lIHVzZXIgaWRlbnRpZmllciAoZWcgZW1haWwsIG5hbWUgLi4uKVxyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICAgdXNlcklkZW50aWZpZXJcclxuICAqIEBwYXJhbSAge0FycmF5PHN0cmluZz59ICAgIGRhdGFTY2hlbWVzIChPcHRpb25hbCkgICAgIHR5cGVzIG9mIGh5cGVydGllcyBzY2hlbWFzXHJcbiAgKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSAgICByZXNvdXJjZXMgKE9wdGlvbmFsKSAgdHlwZXMgb2YgaHlwZXJ0aWVzIHJlc291cmNlc1xyXG4gICovXHJcbiAgZGlzY292ZXJIeXBlcnRpZXNQZXJVc2VyUHJvZmlsZURhdGEodXNlcklkZW50aWZpZXIsIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG5cclxuICAgICAgLy90cmFuc2xhdGUgdXNlciBpZGVudGlmaWVyIChlLmcuIGVtYWlsLCBuYW1lLi4uKSBpbnRvIHRoZSBhc3NvY2lhdGVkIEdVSURzXHJcbiAgICAgIF90aGlzLmRpc2NvdmVyR1VJRFBlclVzZXJJZGVudGlmaWVyKHVzZXJJZGVudGlmaWVyKVxyXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uKGd1aWRzKSB7XHJcblxyXG4gICAgICAgICAgbGV0IGh5cGVydGllc1Byb21pc2VzID0gZ3VpZHMubWFwKGZ1bmN0aW9uKGd1aWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgICBfdGhpcy5kaXNjb3Zlckh5cGVydGllc1BlckdVSUQoZ3VpZCwgZGF0YVNjaGVtZXMsIHJlc291cmNlcylcclxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGh5cGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGh5cGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgICAgICAgICAgICByZXNvbHZlKFtdKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIFByb21pc2UuYWxsKGh5cGVydGllc1Byb21pc2VzKVxyXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbihoeXBlcnRpZXNSZXN1bHQpIHtcclxuXHJcbiAgICAgICAgICAgICAgbGV0IGh5cGVydGllcyA9IFtdLmNvbmNhdC5hcHBseShbXSwgaHlwZXJ0aWVzUmVzdWx0KTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKGh5cGVydGllcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoJ05vIGh5cGVydGllcyB3ZXJlIGZvdW5kJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICByZXNvbHZlKGh5cGVydGllcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEFkdmFuY2VkIFNlYXJjaCBmb3IgRGF0YU9iamVjdHMgcmVnaXN0ZXJlZCBpbiBkb21haW4gcmVnaXN0cnkgYXNzb2NpYXRlZCB3aXRoIHNvbWUgdXNlciBpZGVudGlmaWVyIChlZyBlbWFpbCwgbmFtZSAuLi4pXHJcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgICAgICB1c2VySWRlbnRpZmllclxyXG4gICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gICAgZGF0YVNjaGVtZXMgKE9wdGlvbmFsKSAgICAgdHlwZXMgb2YgaHlwZXJ0aWVzIHNjaGVtYXNcclxuICAqIEBwYXJhbSAge0FycmF5PHN0cmluZz59ICAgIHJlc291cmNlcyAoT3B0aW9uYWwpICB0eXBlcyBvZiBoeXBlcnRpZXMgcmVzb3VyY2VzXHJcbiAgKi9cclxuICBkaXNjb3ZlckRhdGFPYmplY3RzUGVyVXNlclByb2ZpbGVEYXRhKHVzZXJJZGVudGlmaWVyLCBkYXRhU2NoZW1lcywgcmVzb3VyY2VzKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIC8vdHJhbnNsYXRlIHVzZXIgaWRlbnRpZmllciAoZS5nLiBlbWFpbCwgbmFtZS4uLikgaW50byB0aGUgYXNzb2NpYXRlZCBHVUlEc1xyXG4gICAgICBfdGhpcy5kaXNjb3ZlckdVSURQZXJVc2VySWRlbnRpZmllcih1c2VySWRlbnRpZmllcilcclxuICAgICAgICAudGhlbihmdW5jdGlvbihndWlkcykge1xyXG5cclxuICAgICAgICAgIGxldCBkYXRhT2JqZWN0c1Byb21pc2VzID0gZ3VpZHMubWFwKGZ1bmN0aW9uKGd1aWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgICBfdGhpcy5kaXNjb3ZlckRhdGFPYmplY3RzUGVyR1VJRChndWlkLCBkYXRhU2NoZW1lcywgcmVzb3VyY2VzKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YU9iamVjdHMpIHtcclxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhT2JqZWN0cyk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgICAgICAgICAgICByZXNvbHZlKFtdKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIFByb21pc2UuYWxsKGRhdGFPYmplY3RzUHJvbWlzZXMpXHJcbiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGRhdGFPYmplY3RzUmVzdWx0KSB7XHJcblxyXG4gICAgICAgICAgICAgIGxldCBkYXRhT2JqZWN0cyA9IFtdLmNvbmNhdC5hcHBseShbXSwgZGF0YU9iamVjdHNSZXN1bHQpO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZGF0YU9iamVjdHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KCdObyBkYXRhT2JqZWN0cyB3ZXJlIGZvdW5kJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICByZXNvbHZlKGRhdGFPYmplY3RzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogQWR2YW5jZWQgU2VhcmNoIGZvciBIeXBlcnRpZXMgcmVnaXN0ZXJlZCBpbiBkb21haW4gcmVnaXN0cnkgYXNzb2NpYXRlZCB3aXRoIHNvbWUgR1VJRFxyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICAgICBndWlkXHJcbiAgKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSAgICBkYXRhU2NoZW1lcyAoT3B0aW9uYWwpICAgICB0eXBlcyBvZiBoeXBlcnRpZXMgc2NoZW1hc1xyXG4gICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gICAgcmVzb3VyY2VzIChPcHRpb25hbCkgIHR5cGVzIG9mIGh5cGVydGllcyByZXNvdXJjZXNcclxuICAqL1xyXG4gIGRpc2NvdmVySHlwZXJ0aWVzUGVyR1VJRChndWlkLCBkYXRhU2NoZW1lcywgcmVzb3VyY2VzKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIC8vdHJhbnNsYXRlIEdVSUQgaW50byB0aGUgdXNlciBJRHMgdG8gcXVlcnkgdGhlIGRvbWFpbiByZWdpc3RyeVxyXG4gICAgICBfdGhpcy5kaXNjb3ZlclVzZXJJZHNQZXJHVUlEKGd1aWQpXHJcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24odWlkcykge1xyXG5cclxuICAgICAgICAvL3RyYW5zbGF0ZSB1c2VyIElEcyBpbnRvIHRoZSBhc3NvY2lhdGVkIGh5cGVydGllcyByZWdpc3RlcmVkIGluIHNvbWUgZG9tYWluXHJcbiAgICAgICAgICBsZXQgaHlwZXJ0aWVzUHJvbWlzZXMgPSB1aWRzLm1hcChmdW5jdGlvbih1aWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgICAgICAgIF90aGlzLmRpc2NvdmVySHlwZXJ0aWVzKHVpZC51SUQsIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMsIHVpZC5kb21haW4pXHJcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihoeXBlcnRpZXMpIHtcclxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShoeXBlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbXSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBQcm9taXNlLmFsbChoeXBlcnRpZXNQcm9taXNlcylcclxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oaHlwZXJ0aWVzUmVzdWx0KSB7XHJcblxyXG4gICAgICAgICAgICAgIGxldCBoeXBlcnRpZXMgPSBbXS5jb25jYXQuYXBwbHkoW10sIGh5cGVydGllc1Jlc3VsdCk7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChoeXBlcnRpZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KCdObyBoeXBlcnRpZXMgd2VyZSBmb3VuZCcpO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgLy8gbG9nLmxvZygnSHlwZXJ0aWVzIDogJywgaHlwZXJ0aWVzKTtcclxuICAgICAgICAgICAgICByZXNvbHZlKGh5cGVydGllcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBBZHZhbmNlZCBTZWFyY2ggZm9yIERhdGFPYmplY3RzIHJlZ2lzdGVyZWQgaW4gZG9tYWluIHJlZ2lzdHJ5IGFzc29jaWF0ZWQgd2l0aCBzb21lIEdVSURcclxuICAqIEBwYXJhbSAge1N0cmluZ30gICAgICAgICAgICAgZ3VpZFxyXG4gICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gICAgZGF0YVNjaGVtZXMgKE9wdGlvbmFsKSAgICAgdHlwZXMgb2YgaHlwZXJ0aWVzIHNjaGVtYXNcclxuICAqIEBwYXJhbSAge0FycmF5PHN0cmluZz59ICAgIHJlc291cmNlcyAoT3B0aW9uYWwpICB0eXBlcyBvZiBoeXBlcnRpZXMgcmVzb3VyY2VzXHJcbiAgKi9cclxuICBkaXNjb3ZlckRhdGFPYmplY3RzUGVyR1VJRChndWlkLCBkYXRhU2NoZW1lcywgcmVzb3VyY2VzKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIC8vdHJhbnNsYXRlIEdVSUQgaW50byB0aGUgdXNlciBJRHMgdG8gcXVlcnkgdGhlIGRvbWFpbiByZWdpc3RyeVxyXG4gICAgICBfdGhpcy5kaXNjb3ZlclVzZXJJZHNQZXJHVUlEKGd1aWQpXHJcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24odWlkcykge1xyXG5cclxuICAgICAgICAvL3RyYW5zbGF0ZSB1c2VyIElEcyBpbnRvIHRoZSBhc3NvY2lhdGVkIGRhdGFPYmplY3RzIHJlZ2lzdGVyZWQgaW4gc29tZSBkb21haW5cclxuICAgICAgICAgIGxldCBkYXRhT2JqZWN0UHJvbWlzZXMgPSB1aWRzLm1hcChmdW5jdGlvbih1aWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgICAgICAgIF90aGlzLmRpc2NvdmVyRGF0YU9iamVjdHModWlkLnVJRCwgZGF0YVNjaGVtZXMsIHJlc291cmNlcywgdWlkLmRvbWFpbilcclxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGRhdGFPYmplY3RzKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YU9iamVjdHMpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbXSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBQcm9taXNlLmFsbChkYXRhT2JqZWN0UHJvbWlzZXMpXHJcbiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGRhdGFPYmplY3RzUmVzdWx0KSB7XHJcblxyXG4gICAgICAgICAgICAgIGxldCBkYXRhT2JqZWN0cyA9IFtdLmNvbmNhdC5hcHBseShbXSwgZGF0YU9iamVjdHNSZXN1bHQpO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZGF0YU9iamVjdHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KCdObyBkYXRhT2JqZWN0cyB3ZXJlIGZvdW5kJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAvLyBsb2cubG9nKCdEYXRhT2JqZWN0cyA6ICcsIGRhdGFPYmplY3RzKTtcclxuICAgICAgICAgICAgICByZXNvbHZlKGRhdGFPYmplY3RzKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogQWR2YW5jZWQgU2VhcmNoIGZvciBIeXBlcnRpZXMgcmVnaXN0ZXJlZCBpbiBkb21haW4gcmVnaXN0cnkgYW5kIGFzc29jaWF0ZWQgd2l0aCBzb21lIHVzZXIgSURcclxuICAqIEBwYXJhbSAge1N0cmluZ30gICAgICAgICAgIHVzZXIgICAgICAgICAgICAgICAgICB1c2VyIGlkZW50aWZpZXIsIGVpdGhlciBpbiB1cmwgb3IgZW1haWwgZm9ybWF0XHJcbiAgKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSAgICBkYXRhU2NoZW1lcyAoT3B0aW9uYWwpICAgICB0eXBlcyBvZiBoeXBlcnRpZXMgc2NoZW1hc1xyXG4gICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gICAgcmVzb3VyY2VzIChPcHRpb25hbCkgIHR5cGVzIG9mIGh5cGVydGllcyByZXNvdXJjZXNcclxuICAqIEBwYXJhbSAge1N0cmluZ30gICAgICAgICAgIGRvbWFpbiAoT3B0aW9uYWwpICAgICBkb21haW4gb2YgdGhlIHJlZ2lzdHJ5IHRvIHNlYXJjaFxyXG4gICovXHJcbiAgZGlzY292ZXJIeXBlcnRpZXModXNlciwgZGF0YVNjaGVtZXMsIHJlc291cmNlcywgZG9tYWluKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IGFjdGl2ZURvbWFpbjtcclxuXHJcbiAgICBhY3RpdmVEb21haW4gPSAoIWRvbWFpbikgPyBfdGhpcy5kb21haW4gOiBkb21haW47XHJcblxyXG4gICAgbGV0IG1zZyA9IHtcclxuICAgICAgdHlwZTogJ3JlYWQnLFxyXG4gICAgICBmcm9tOiBfdGhpcy5kaXNjb3ZlcnlVUkwsXHJcbiAgICAgIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIGFjdGl2ZURvbWFpbixcclxuICAgICAgYm9keToge1xyXG5cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodXNlci5pbmRleE9mKCd1c2VyOi8vJykgPiAtMSkgeyBtc2cuYm9keS5yZXNvdXJjZSA9IHVzZXI7IH0gZWxzZSB7IG1zZy5ib2R5LnJlc291cmNlID0gJy9oeXBlcnR5L2lkcC1pZGVudGlmaWVyLycgKyB1c2VyOyB9XHJcblxyXG4gICAgaWYgKGRhdGFTY2hlbWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKCFtc2cuYm9keS5jcml0ZXJpYSkgeyBtc2cuYm9keS5jcml0ZXJpYSA9IHt9OyB9XHJcbiAgICAgIG1zZy5ib2R5LmNyaXRlcmlhLmRhdGFTY2hlbWVzID0gZGF0YVNjaGVtZXM7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlc291cmNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmICghbXNnLmJvZHkuY3JpdGVyaWEpIHsgbXNnLmJvZHkuY3JpdGVyaWEgPSB7fTsgfVxyXG4gICAgICBtc2cuYm9keS5jcml0ZXJpYS5yZXNvdXJjZXMgPSByZXNvdXJjZXM7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAvLyBsb2cubG9nKFwiW0NvcmVEaXNjb3ZlcnkuZGlzY292ZXJIeXBlcnRpZXNdIHNlbmRpbmcgbXNnIFwiLCBtc2cpO1xyXG5cclxuICAgICAgX3RoaXMubWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtc2csIChyZXBseSkgPT4ge1xyXG5cclxuICAgICAgICAvLyBsb2cubG9nKFwiW0NvcmVEaXNjb3ZlcnkuZGlzY292ZXJIeXBlcnRpZXNdIHJjdmVkIHJlcGx5IFwiLCByZXBseSk7XHJcblxyXG4gICAgICAgIGlmIChyZXBseS5ib2R5LmNvZGUgPT09IDIwMCB8fCByZXBseS5ib2R5LmNvZGUgPT09IDUwMCkge1xyXG4gICAgICAgICAgbGV0IGh5cGVydGllcyA9IHJlcGx5LmJvZHkudmFsdWU7XHJcblxyXG4gICAgICAgICAgbGV0IGZpbmFsSHlwZXJ0aWVzID0gW107XHJcbiAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gaHlwZXJ0aWVzKSBmaW5hbEh5cGVydGllcy5wdXNoKGh5cGVydGllc1trZXldKTtcclxuXHJcbiAgICAgICAgICBpZiAoZmluYWxIeXBlcnRpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAvLyBsb2cubG9nKFwiW0NvcmVEaXNjb3ZlcnkuZGlzY292ZXJIeXBlcnRpZXNdIEh5cGVydGllcyBGb3VuZDogXCIsIGZpbmFsSHlwZXJ0aWVzKTtcclxuICAgICAgICAgICAgcmVzb2x2ZShmaW5hbEh5cGVydGllcyk7XHJcbiAgICAgICAgICB9IGVsc2UgeyByZXR1cm4gcmVqZWN0KCdObyBIeXBlcnR5IHdhcyBmb3VuZCcpOyB9XHJcbiAgICAgICAgfSBlbHNlIHsgcmV0dXJuIHJlamVjdCgnTm8gSHlwZXJ0eSB3YXMgZm91bmQnKTsgfVxyXG5cclxuICAgICAgICAvKl90aGlzLnJlZ2lzdHJ5LmlzTGVnYWN5KHVzZXIpLnRoZW4oKGxlZ2FjeSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChsZWdhY3kpIHJlc29sdmUoW3toeXBlcnR5SUQ6IHVzZXIgfV0pXHJcbiAgICAgICAgICAgICAgZWxzZSByZXR1cm4gcmVqZWN0KCdObyBIeXBlcnR5IHdhcyBmb3VuZCcpO1xyXG4gICAgICAgICAgfSk7Ki9cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBBZHZhbmNlZCBTZWFyY2ggZm9yIERhdGFPYmplY3RzIHJlZ2lzdGVyZWQgaW4gZG9tYWluIHJlZ2lzdHJ5IGFuZCBhc3NvY2lhdGVkIHdpdGggc29tZSB1c2VyIElEXHJcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgICAgICB1c2VyICAgICAgICAgICAgICAgICAgdXNlciBpZGVudGlmaWVyLCBlaXRoZXIgaW4gdXJsIG9yIGVtYWlsIGZvcm1hdFxyXG4gICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gICAgZGF0YVNjaGVtZXMgKE9wdGlvbmFsKSAgICAgdHlwZXMgb2YgZGF0YU9iamVjdHMgc2NoZW1hc1xyXG4gICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gICAgcmVzb3VyY2VzIChPcHRpb25hbCkgIHR5cGVzIG9mIGRhdGFPYmplY3RzIHJlc291cmNlc1xyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICAgZG9tYWluIChPcHRpb25hbCkgICAgIGRvbWFpbiBvZiB0aGUgcmVnaXN0cnkgdG8gc2VhcmNoXHJcbiAgKi9cclxuICBkaXNjb3ZlckRhdGFPYmplY3RzKHVzZXIsIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMsIGRvbWFpbikge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBhY3RpdmVEb21haW47XHJcbiAgICBsZXQgZGF0YU9iamVjdHNBcnJheSA9IFtdO1xyXG5cclxuICAgIGFjdGl2ZURvbWFpbiA9ICghZG9tYWluKSA/IF90aGlzLmRvbWFpbiA6IGRvbWFpbjtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XHJcblxyXG4gICAgICAvL3RyYW5zbGF0ZSB1c2VyIGlkZW50aWZpZXIgKGUuZy4gZW1haWwsIG5hbWUuLi4pIGludG8gdGhlIGFzc29jaWF0ZWQgaHlwZXJ0aWVzXHJcbiAgICAgIF90aGlzLmRpc2NvdmVySHlwZXJ0aWVzKHVzZXIsIFtdLCBbXSwgYWN0aXZlRG9tYWluKVxyXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uKGh5cGVydGllcykge1xyXG5cclxuICAgICAgICAgIGxldCBmaW5hbEh5cGVydGllcyA9IFtdO1xyXG4gICAgICAgICAgZm9yICh2YXIga2V5IGluIGh5cGVydGllcykgZmluYWxIeXBlcnRpZXMucHVzaChoeXBlcnRpZXNba2V5XSk7XHJcblxyXG4gICAgICAgICAgLy90cmFuc2xhdGUgaHlwZXJ0aWVzIFVSTHMgaW50byB0aGUgYXNzb2NpYXRlZCBkYXRhT2JqZWN0cyByZWdpc3RlcmVkIGluIHNvbWUgZG9tYWluXHJcbiAgICAgICAgICBsZXQgZGF0YU9iamVjdHNQcm9taXNlcyA9IGZpbmFsSHlwZXJ0aWVzLm1hcChmdW5jdGlvbihoeXBlcnR5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgICBfdGhpcy5kaXNjb3ZlckRhdGFPYmplY3RzUGVyUmVwb3J0ZXIoaHlwZXJ0eS5oeXBlcnR5SUQsIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMsIGFjdGl2ZURvbWFpbilcclxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGRhdGFPYmplY3QpIHtcclxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhT2JqZWN0KTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoW10pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgUHJvbWlzZS5hbGwoZGF0YU9iamVjdHNQcm9taXNlcylcclxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YU9iamVjdHNSZXN1bHQpIHtcclxuXHJcbiAgICAgICAgICAgICAgbGV0IGRhdGFPYmplY3RzID0gW10uY29uY2F0LmFwcGx5KFtdLCBkYXRhT2JqZWN0c1Jlc3VsdCk7XHJcblxyXG4gICAgICAgICAgICAgIGRhdGFPYmplY3RzLmZvckVhY2goZnVuY3Rpb24oZGF0YU9iamVjdCkge1xyXG4gICAgICAgICAgICAgICAgZGF0YU9iamVjdHNBcnJheS5wdXNoKGRhdGFPYmplY3QpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICBsZXQgZmluYWxEYXRhT2JqZWN0cyA9IFtdO1xyXG4gICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhT2JqZWN0c0FycmF5KSBmaW5hbERhdGFPYmplY3RzLnB1c2goZGF0YU9iamVjdHNBcnJheVtrZXldKTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKGZpbmFsRGF0YU9iamVjdHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KCdObyBkYXRhT2JqZWN0cyB3ZXJlIGZvdW5kJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAvLyBsb2cubG9nKCdEYXRhT2JqZWN0cyBGb3VuZDogJywgZmluYWxEYXRhT2JqZWN0cyk7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZShmaW5hbERhdGFPYmplY3RzKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIGZ1bmN0aW9uIHRvIHJlcXVlc3QgYWJvdXQgaHlwZXJ0aWVzIHJlZ2lzdGVyZWQgaW4gZG9tYWluIHJlZ2lzdHJ5LCBhbmRcclxuICAqIHJldHVybiB0aGUgaHlwZXJ0eSBpbmZvcm1hdGlvbiwgaWYgZm91bmQuXHJcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgICAgICAgICB1cmwgIGRhdGFPYmplY3QgVVJMXHJcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgICAgICAgZG9tYWluIChPcHRpb25hbClcclxuICAqIEByZXR1cm4ge1Byb21pc2V9ICAgICAgICAgIFByb21pc2VcclxuICAqL1xyXG4gIGRpc2NvdmVySHlwZXJ0eVBlclVSTCh1cmwsIGRvbWFpbikge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBhY3RpdmVEb21haW47XHJcblxyXG4gICAgYWN0aXZlRG9tYWluID0gKCFkb21haW4pID8gX3RoaXMuZG9tYWluIDogZG9tYWluO1xyXG5cclxuICAgIGxldCBtc2cgPSB7XHJcbiAgICAgIHR5cGU6ICdyZWFkJyxcclxuICAgICAgZnJvbTogX3RoaXMuZGlzY292ZXJ5VVJMLFxyXG4gICAgICB0bzogJ2RvbWFpbjovL3JlZ2lzdHJ5LicgKyBhY3RpdmVEb21haW4sXHJcbiAgICAgIGJvZHk6IHtcclxuICAgICAgICByZXNvdXJjZTogdXJsXHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG5cclxuICAgICAgX3RoaXMubWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtc2csIChyZXBseSkgPT4ge1xyXG5cclxuICAgICAgICBpZiAocmVwbHkuYm9keS5jb2RlICE9PSAyMDAgJiYgcmVwbHkuYm9keS5jb2RlICE9PSA1MDApIHsgcmV0dXJuIHJlamVjdCgnTm8gSHlwZXJ0eSB3YXMgZm91bmQnKTsgfVxyXG5cclxuICAgICAgICBsZXQgaHlwZXJ0eSA9IHJlcGx5LmJvZHkudmFsdWU7XHJcblxyXG4gICAgICAgIGlmIChoeXBlcnR5KSB7XHJcbiAgICAgICAgICAvLyBsb2cubG9nKCdIeXBlcnR5IGZvdW5kOiAnLCBoeXBlcnR5KTtcclxuICAgICAgICAgIHJlc29sdmUoaHlwZXJ0eSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiByZWplY3QoJ05vIEh5cGVydHkgd2FzIGZvdW5kJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBmdW5jdGlvbiB0byByZXF1ZXN0IGFib3V0IGRhdGFPYmplY3QgcmVnaXN0ZXJlZCBpbiBkb21haW4gcmVnaXN0cnksIGFuZFxyXG4gICogcmV0dXJuIHRoZSBkYXRhT2JqZWN0IGluZm9ybWF0aW9uLCBpZiBmb3VuZC5cclxuICAqIEBwYXJhbSAge1N0cmluZ30gICAgICAgICAgICAgIHVybCAgZGF0YU9iamVjdCBVUkxcclxuICAqIEBwYXJhbSAge1N0cmluZ30gICAgICAgICAgICBkb21haW4gKE9wdGlvbmFsKVxyXG4gICogQHJldHVybiB7UHJvbWlzZX0gICAgICAgICAgUHJvbWlzZVxyXG4gICovXHJcbiAgZGlzY292ZXJEYXRhT2JqZWN0UGVyVVJMKHVybCwgZG9tYWluKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IGFjdGl2ZURvbWFpbjtcclxuXHJcbiAgICBhY3RpdmVEb21haW4gPSAoIWRvbWFpbikgPyBfdGhpcy5kb21haW4gOiBkb21haW47XHJcblxyXG4gICAgbGV0IG1zZyA9IHtcclxuICAgICAgdHlwZTogJ3JlYWQnLFxyXG4gICAgICBmcm9tOiBfdGhpcy5kaXNjb3ZlcnlVUkwsXHJcbiAgICAgIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIGFjdGl2ZURvbWFpbixcclxuICAgICAgYm9keToge1xyXG4gICAgICAgIHJlc291cmNlOiB1cmxcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XHJcblxyXG4gICAgICBfdGhpcy5tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1zZywgKHJlcGx5KSA9PiB7XHJcblxyXG4gICAgICAgIGxldCBkYXRhT2JqZWN0ID0gcmVwbHkuYm9keS52YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKGRhdGFPYmplY3QpIHtcclxuICAgICAgICAgIC8vIGxvZy5sb2coJ0RhdGFPYmplY3QgZm91bmQ6ICcsIGRhdGFPYmplY3QpO1xyXG4gICAgICAgICAgcmVzb2x2ZShkYXRhT2JqZWN0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHJlamVjdCgnRGF0YU9iamVjdCBub3QgZm91bmQnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogQWR2YW5jZWQgU2VhcmNoIGZvciBkYXRhT2JqZWN0cyByZWdpc3RlcmVkIGluIGRvbWFpbiByZWdpc3RyeVxyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICAgbmFtZSAgICAgICAgICAgICAgICAgIG5hbWUgb2YgdGhlIGRhdGFPYmplY3RcclxuICAqIEBwYXJhbSAge0FycmF5PHN0cmluZz59ICAgIGRhdGFTY2hlbWVzIChPcHRpb25hbCkgICAgIHR5cGVzIG9mIGRhdGFPYmplY3Qgc2NoZW1hc1xyXG4gICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gICAgcmVzb3VyY2VzIChPcHRpb25hbCkgIHR5cGVzIG9mIGRhdGFPYmplY3QgcmVzb3VyY2VzXHJcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgICAgICBkb21haW4gKE9wdGlvbmFsKSAgICAgZG9tYWluIG9mIHRoZSByZWdpc3RyeSB0byBzZWFyY2hcclxuICAqL1xyXG4gIGRpc2NvdmVyRGF0YU9iamVjdHNQZXJOYW1lKG5hbWUsIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMsIGRvbWFpbikge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBhY3RpdmVEb21haW47XHJcblxyXG4gICAgYWN0aXZlRG9tYWluID0gKCFkb21haW4pID8gX3RoaXMuZG9tYWluIDogZG9tYWluO1xyXG5cclxuICAgIGxldCBtc2cgPSB7XHJcbiAgICAgIHR5cGU6ICdyZWFkJyxcclxuICAgICAgZnJvbTogX3RoaXMuZGlzY292ZXJ5VVJMLFxyXG4gICAgICB0bzogJ2RvbWFpbjovL3JlZ2lzdHJ5LicgKyBhY3RpdmVEb21haW4sXHJcbiAgICAgIGJvZHk6IHtcclxuICAgICAgICByZXNvdXJjZTogbmFtZVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChkYXRhU2NoZW1lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmICghbXNnLmJvZHkuY3JpdGVyaWEpIHsgbXNnLmJvZHkuY3JpdGVyaWEgPSB7fTsgfVxyXG4gICAgICBtc2cuYm9keS5jcml0ZXJpYS5kYXRhU2NoZW1lcyA9IGRhdGFTY2hlbWVzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXNvdXJjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAoIW1zZy5ib2R5LmNyaXRlcmlhKSB7IG1zZy5ib2R5LmNyaXRlcmlhID0ge307IH1cclxuICAgICAgbXNnLmJvZHkuY3JpdGVyaWEucmVzb3VyY2VzID0gcmVzb3VyY2VzO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIF90aGlzLm1lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobXNnLCAocmVwbHkpID0+IHtcclxuXHJcbiAgICAgICAgbGV0IGRhdGFPYmplY3RzID0gcmVwbHkuYm9keS52YWx1ZTtcclxuXHJcbiAgICAgICAgbGV0IGZpbmFsRGF0YU9iamVjdHMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YU9iamVjdHMpIGZpbmFsRGF0YU9iamVjdHMucHVzaChkYXRhT2JqZWN0c1trZXldKTtcclxuXHJcbiAgICAgICAgaWYgKGZpbmFsRGF0YU9iamVjdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgLy8gbG9nLmxvZyhcIkRhdGFPYmplY3RzIEZvdW5kOiBcIiwgZmluYWxEYXRhT2JqZWN0cyk7XHJcbiAgICAgICAgICByZXNvbHZlKGZpbmFsRGF0YU9iamVjdHMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KCdObyBEYXRhT2JqZWN0IHdhcyBmb3VuZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogZnVuY3Rpb24gdG8gcmVxdWVzdCBhYm91dCBzcGVjaWZpYyByZXBvcnRlciBkYXRhT2JqZWN0IHJlZ2lzdGVyZWQgaW4gZG9tYWluIHJlZ2lzdHJ5LCBhbmRcclxuICAqIHJldHVybiB0aGUgZGF0YU9iamVjdHMgZnJvbSB0aGF0IHJlcG9ydGVyLlxyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICAgcmVwb3J0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YU9iamVjdCByZXBvcnRlclxyXG4gICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gICAgc2NkYXRhU2NoZW1lc2hlbWEgICAgICAgICAgICAgICAgKE9wdGlvbmFsKSAgICAgdHlwZXMgb2YgZGF0YU9iamVjdHMgc2NoZW1hc1xyXG4gICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gICAgcmVzb3VyY2VzICAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsKSAgdHlwZXMgb2YgZGF0YU9iamVjdHMgcmVzb3VyY2VzXHJcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgICAgICBkb21haW4gICAgICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwpXHJcbiAgKi9cclxuICBkaXNjb3ZlckRhdGFPYmplY3RzUGVyUmVwb3J0ZXIocmVwb3J0ZXIsIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMsIGRvbWFpbikge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBhY3RpdmVEb21haW47XHJcblxyXG4gICAgYWN0aXZlRG9tYWluID0gKCFkb21haW4pID8gX3RoaXMuZG9tYWluIDogZG9tYWluO1xyXG5cclxuICAgIGxldCBtc2cgPSB7XHJcbiAgICAgIHR5cGU6ICdyZWFkJyxcclxuICAgICAgZnJvbTogX3RoaXMuZGlzY292ZXJ5VVJMLFxyXG4gICAgICB0bzogJ2RvbWFpbjovL3JlZ2lzdHJ5LicgKyBhY3RpdmVEb21haW4sXHJcbiAgICAgIGJvZHk6IHtcclxuICAgICAgICByZXNvdXJjZTogJy9jb21tJyxcclxuICAgICAgICBjcml0ZXJpYToge1xyXG4gICAgICAgICAgcmVwb3J0ZXI6IHJlcG9ydGVyXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChkYXRhU2NoZW1lcy5sZW5ndGggPiAwKSB7IG1zZy5ib2R5LmNyaXRlcmlhLmRhdGFTY2hlbWVzID0gZGF0YVNjaGVtZXM7IH1cclxuXHJcbiAgICBpZiAocmVzb3VyY2VzLmxlbmd0aCA+IDApIHsgbXNnLmJvZHkuY3JpdGVyaWEucmVzb3VyY2VzID0gcmVzb3VyY2VzOyB9XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG5cclxuICAgICAgX3RoaXMubWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtc2csIChyZXBseSkgPT4ge1xyXG5cclxuICAgICAgICBsZXQgZGF0YU9iamVjdHMgPSByZXBseS5ib2R5LnZhbHVlO1xyXG5cclxuICAgICAgICBsZXQgZmluYWxEYXRhT2JqZWN0cyA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhT2JqZWN0cykgZmluYWxEYXRhT2JqZWN0cy5wdXNoKGRhdGFPYmplY3RzW2tleV0pO1xyXG5cclxuICAgICAgICBpZiAoZmluYWxEYXRhT2JqZWN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAvLyBsb2cubG9nKFwiRGF0YU9iamVjdHMgRm91bmQ6IFwiLCBmaW5hbERhdGFPYmplY3RzKTtcclxuICAgICAgICAgIHJlc29sdmUoZmluYWxEYXRhT2JqZWN0cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiByZWplY3QoJ05vIERhdGFPYmplY3Qgd2FzIGZvdW5kJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBmdW5jdGlvbiB0byByZXF1ZXN0IGdsb2JhbCByZWdpc3RyeSBhYm91dCB0aGUgdXNlciBJRHMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgR1VJRFxyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICAgICAgZ3VpZFxyXG4gICogQHJldHVybiB7UHJvbWlzZX0gICAgICAgICAgUHJvbWlzZVxyXG4gICovXHJcbiAgZGlzY292ZXJVc2VySWRzUGVyR1VJRChndWlkKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuXHJcbiAgICAgIC8vIGxvZy5sb2coXCJHTyBncmFwaENvbm5lY3RvcjpcIiwgZ3VpZCk7XHJcblxyXG4gICAgICBfdGhpcy5ncmFwaENvbm5lY3Rvci5xdWVyeUdsb2JhbFJlZ2lzdHJ5KGd1aWQpXHJcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24oZ3JhcGhDb25uZWN0b3JDb250YWN0RGF0YSkge1xyXG5cclxuICAgICAgICAvLyBsb2cubG9nKCdJbmZvcm1hdGlvbiByZXR1cm5lZCBmcm9tIEdsb2JhbCBSZWdpc3RyeTogJywgZ3JhcGhDb25uZWN0b3JDb250YWN0RGF0YSk7XHJcblxyXG4gICAgICAgICAgaWYgKHR5cGVvZiBncmFwaENvbm5lY3RvckNvbnRhY3REYXRhID09PSAnc3RyaW5nJyB8fCAhZ3JhcGhDb25uZWN0b3JDb250YWN0RGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KCdVbnN1Y2Nlc3NmdWwgZGlzY292ZXIgdXNlcklEcyBieSBHVUlEJyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgbGV0IHVzZXJpZHMgPSBncmFwaENvbm5lY3RvckNvbnRhY3REYXRhLnVzZXJJRHM7XHJcblxyXG4gICAgICAgICAgICBpZiAodXNlcmlkcy5sZW5ndGggPT09IDApIHsgcmV0dXJuIHJlamVjdCgnVXNlcklEcyBub3QgYXZhaWxhYmxlJyk7IH1cclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUodXNlcmlkcyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBmdW5jdGlvbiB0byByZXF1ZXN0IGRpc2NvdmVyeSBzZXJ2aWNlIGFib3V0IHRoZSBHVUlEIGFzc29jaWF0ZWQgd2l0aCBzb21lIHVzZXIgaWRlbnRpZmllciAoZWcgZW1haWwsIG5hbWUgLi4uKVxyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICAgIHVzZXJJZGVudGlmaWVyXHJcbiAgKiBAcmV0dXJuIHtQcm9taXNlfSAgICAgICAgICAgUHJvbWlzZVxyXG4gICovXHJcbiAgZGlzY292ZXJHVUlEUGVyVXNlcklkZW50aWZpZXIodXNlcklkZW50aWZpZXIpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG5cclxuICAgICAgbGV0IGxvb2t1cFVSTERpc2NvdmVyeVNlcnZpY2UgPSAnaHR0cHM6Ly9yZXRoaW5rLnRsYWJzY2xvdWQuY29tL2Rpc2NvdmVyeS9yZXN0L2Rpc2NvdmVyL2xvb2t1cD9zZWFyY2hxdWVyeT0nO1xyXG4gICAgICBfdGhpcy5odHRwUmVxdWVzdC5nZXQobG9va3VwVVJMRGlzY292ZXJ5U2VydmljZSArIHVzZXJJZGVudGlmaWVyKVxyXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uKGpzb24pIHtcclxuICAgICAgICAvLyBsb2cubG9nKCdkaXNjb3ZlciBHVUlEIGJ5IHVzZXIgaWRlbnRpZmllcicsIGpzb24pO1xyXG5cclxuICAgICAgICAgIGxldCByZXNwb25zZSA9IEpTT04ucGFyc2UoanNvbik7XHJcbiAgICAgICAgICBsZXQgZmlsdGVyZWRHdWlkID0gcmVzcG9uc2UucmVzdWx0cy5maWx0ZXIoZnVuY3Rpb24oeCkge1xyXG4gICAgICAgICAgICByZXR1cm4geC5yZXRoaW5rSUQgIT0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgaWYgKGZpbHRlcmVkR3VpZC5sZW5ndGggPT09IDApIHsgcmV0dXJuIHJlamVjdCgnVW5zdWNjZXNzZnVsIGRpc2NvdmVyIEdVSUQgYnkgdXNlciBpZGVudGlmaWVyJyk7IH1cclxuXHJcbiAgICAgICAgICBsZXQgZ3VpZHMgPSBmaWx0ZXJlZEd1aWQubWFwKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHgucmV0aGlua0lEOyB9KTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShndWlkcyk7XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgIC8vIGxvZy5sb2coXCJIVFRQIFJlcXVlc3QgZXJyb3I6IFwiLCBlcnIpO1xyXG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDb3JlRGlzY292ZXJ5O1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2Rpc2NvdmVyeS9Db3JlRGlzY292ZXJ5LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkE7QUFDQTtBQURBO0FBQ0E7QUFHQTtBQUNBOzs7OztBQUpBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUZBO0FBQ0E7QUFNQTs7OztBQUlBO0FBQ0E7QUFDQTs7Ozs7OztBQU9BO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUxBO0FBVUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFMQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQWVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE3QkE7QUErQkE7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQVFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBQ0E7QUFRQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFGQTtBQUpBO0FBQ0E7QUFXQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBdm1CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTs7Ozs7QUFnbUJBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///498\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _from = __webpack_require__(210);\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _typeof2 = __webpack_require__(78);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _assign = __webpack_require__(97);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(14);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('DataObjectsStorage'); // Log System\n\nvar DataObjectsStorage = function () {\n function DataObjectsStorage(storageManager, storedDataObjects) {\n (0, _classCallCheck3.default)(this, DataObjectsStorage);\n\n if (!storageManager) throw new Error('[Store Data Objects] - Needs the storageManager component');\n\n this._storageManager = storageManager;\n this._storeDataObject = storedDataObjects;\n\n this._cache = {};\n }\n\n /**\r\n * @description should set the initial state of the dataObjectURL to be resumed if necessary;\r\n *\r\n * @param {DataObjectURL} url - dataObjectURL to be saved;\r\n * @param {Boolean} isReporter - the object to be saved is a reporter\r\n * @param {SchemaURL} schema - the schema url\r\n * @param {String} status - the status of current dataObject\r\n * @param {HypertyURL} reporter - the Reporter hypertyURL\r\n * @param {Array} subscription - list of subscriptions\r\n * @param {Array} children - list of childs of dataObjectURL\r\n * @param {Array} childrens - list of childrens, like, 'chatmessage';\r\n * @param {Array object with the dataObject information;\r\n */\n\n }, {\n key: 'getDataObject',\n value: function getDataObject(resource) {\n var _this2 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this2._storageManager.get('syncherManager:ObjectURLs').then(function (storedDataObject) {\n\n var observers = storedDataObject.hasOwnProperty('observers') ? storedDataObject.observers : {};\n var reporters = storedDataObject.hasOwnProperty('reporters') ? storedDataObject.reporters : {};\n\n var currentReporter = (0, _keys2.default)(reporters).find(function (value) {\n return value === resource;\n });\n var currentObserver = (0, _keys2.default)(observers).find(function (value) {\n return value === resource;\n });\n var dataObject = void 0;\n\n if (currentObserver) {\n dataObject = storedDataObject.observers[currentObserver];\n }\n if (currentReporter) {\n dataObject = storedDataObject.reporters[currentReporter];\n }\n\n log.info('[StoreDataObjects - getDataObject] - for observer: ', currentObserver);\n log.info('[StoreDataObjects - getDataObject] - for reporters: ', currentReporter);\n\n log.info('[StoreDataObjects - getDataObject] - resolve: ', dataObject);\n return dataObject ? resolve(dataObject) : reject('No dataObject was found');\n });\n });\n }\n\n /**\r\n * @description should get the dataObject information by the message\r\n *\r\n * @param {Object} msg - message would be analised to get the current dataObject information\r\n * @param {Boolean} isReporter - the object to be saved is a reporter\r\n *\r\n * @returns Promise should retun an object with the dataObject or null\r\n */\n\n }, {\n key: 'getResourcesByCriteria',\n value: function getResourcesByCriteria(msg, isReporter) {\n var _this3 = this;\n\n return new _promise2.default(function (resolve) {\n\n var type = _this3._getTypeOfObject(isReporter);\n\n _this3.getAll().then(function (storedDataObjects) {\n\n if (!storedDataObjects) {\n log.log('[DataObjectsStorage.getResourcesByCriteria] don\\'t have stored data objects');\n return resolve(null);\n }\n\n if (msg.body && msg.body.hasOwnProperty('resume') && !msg.body.resume) {\n return resolve(null);\n }\n\n // check if the message have other criteria\n // if not search for on the 'from' of the message.\n var result = [];\n var hasSubscription = _this3._hasSubscription(storedDataObjects[type], msg.from);\n var isOwner = _this3._searchOwner(storedDataObjects[type], msg.from);\n var isToProtoStubResume = _this3._checkProtostubResume(storedDataObjects, msg);\n log.log('[StoredDataObjects - getResourcesByCriteria]:', storedDataObjects, msg, hasSubscription, isOwner);\n if (msg.hasOwnProperty('from') && hasSubscription || isOwner || isToProtoStubResume) {\n var resource = void 0;\n\n if (isOwner) {\n resource = _this3._getResourcesByOwner(storedDataObjects[type], msg.from);\n } else {\n resource = _this3._getResourcesBySubscription(storedDataObjects[type], msg.from);\n }\n\n var identityFoundData = [];\n if (msg.body && msg.body.identity) identityFoundData = _this3._getResourcesByIdentity(storedDataObjects[type], msg.body.identity);\n\n //TODO: remove schema since metadata already includes the schema?\n\n var schemaFoundData = [];\n if (msg.body && msg.body.schema) schemaFoundData = _this3._getResourcesBySchema(storedDataObjects[type], msg.body.schema);\n\n var metadataFound = [];\n if (msg.body && msg.body.value) {\n var metadata = msg.body.value;\n delete metadata.data;\n metadataFound = _this3._getResourcesByMetadata(storedDataObjects[type], metadata);\n }\n\n var dataFound = [];\n if (msg.body && msg.body.value && msg.body.value.data) dataFound = _this3._getResourcesByData(storedDataObjects[type], msg.body.value.data);\n\n // you can pass as arrays as you want.. it will be merged in on place\n // removed duplicates;\n result = _this3._intersection(resource, identityFoundData, schemaFoundData, dataFound, metadataFound);\n\n if (result.length == 0 && isToProtoStubResume && type == 'observers' && msg.from.split('protostub').length > 0) {\n var storedObservers = storedDataObjects[type];\n var fromDomain = (0, _utils.divideURL)(msg.from).domain;\n (0, _keys2.default)(storedObservers).filter(function (objectURL) {\n var subscriptions = storedObservers[objectURL].subscriptions;\n var hasSubscription = false;\n subscriptions.forEach(function (subscription) {\n var subscriptionDomain = (0, _utils.divideURL)(subscription).domain;\n if (subscriptionDomain == fromDomain) {\n result.push(objectURL);\n }\n });\n });\n }\n } else {\n return resolve(null);\n }\n\n var init = {};\n result.forEach(function (key) {\n var currentIsReporter = storedDataObjects[type][key];\n init[key] = currentIsReporter;\n return init;\n });\n\n log.log('[Store Data Objects] - ', init);\n\n resolve(init);\n });\n });\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_getResourcesByIdentity',\n value: function _getResourcesByIdentity(storedData, userURL) {\n if (!storedData) return [];\n\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n return storedData[objectURL].subscriberUsers.filter(function (current) {\n return current === userURL;\n }).length;\n });\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_getResourcesByOwner',\n value: function _getResourcesByOwner(storedData, owner) {\n if (!storedData) return [];\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n return storedData[objectURL].reporter === owner;\n });\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_getResourcesBySubscription',\n value: function _getResourcesBySubscription(storedData, subscription) {\n if (!storedData) return [];\n\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n return storedData[objectURL].subscriptions.filter(function (current) {\n return current === subscription;\n }).length;\n });\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_getResourcesBySchema',\n value: function _getResourcesBySchema(storedData, schema) {\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n var currentObject = storedData[objectURL];\n return (0, _keys2.default)(currentObject).filter(function (key) {\n return key === 'schema' && currentObject[key] === schema;\n }).length;\n });\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_getResourcesByMetadata',\n value: function _getResourcesByMetadata(storedData, metadata) {\n if (!metadata) return [];\n\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n var currentObject = storedData[objectURL];\n return (0, _keys2.default)(currentObject).filter(function (key) {\n // search on storeDataObjects for specific key provided from data;\n return (0, _keys2.default)(metadata).filter(function (searchFor) {\n return key === searchFor && currentObject[key] === metadata[searchFor];\n }).length;\n }).length;\n });\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_getResourcesByData',\n value: function _getResourcesByData(storedData, data) {\n if (!data) return [];\n\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n var currentObject = storedData[objectURL].hasOwnProperty('data') ? storedData[objectURL].data : {};\n return (0, _keys2.default)(currentObject).filter(function (key) {\n // search on storeDataObjects for specific key provided from data;\n return (0, _keys2.default)(data).filter(function (searchFor) {\n return key === searchFor && currentObject[key] === data[searchFor];\n }).length;\n }).length;\n });\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_hasSubscription',\n value: function _hasSubscription(storedData, subscription) {\n if (!storedData) return false;\n\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n return storedData[objectURL].subscriptions.filter(function (current) {\n return current === subscription;\n }).length;\n }).length > 0 ? true : false;\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_searchOwner',\n value: function _searchOwner(storedData, from) {\n if (!storedData) return false;\n\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n return storedData[objectURL].reporter === from;\n }).length > 0 ? true : false;\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_checkProtostubResume',\n value: function _checkProtostubResume(storedDataObjects, msg) {\n\n if (!storedDataObjects) return false;\n\n if (msg.hasOwnProperty('body') && msg.body.hasOwnProperty('value') && msg.body.value.hasOwnProperty('reporter')) {\n var reporter = msg.body.value.reporter;\n if (storedDataObjects.hasOwnProperty('reporters')) {\n var reportersStored = storedDataObjects.reporters;\n return (0, _keys2.default)(reportersStored).filter(function (objectURL) {\n return reportersStored[objectURL].reporter === reporter;\n }).length > 0 ? true : false;\n } else {\n return false;\n }\n } else if (storedDataObjects.hasOwnProperty('observers')) {\n var storedObservers = storedDataObjects.observers;\n var fromDomain = (0, _utils.divideURL)(msg.from).domain;\n\n return (0, _keys2.default)(storedObservers).filter(function (objectURL) {\n var subscriptions = storedObservers[objectURL].subscriptions;\n var hasSubscription = false;\n subscriptions.forEach(function (subscription) {\n var subscriptionDomain = (0, _utils.divideURL)(subscription).domain;\n if (subscriptionDomain == fromDomain) {\n hasSubscription = true;\n }\n });\n if (hasSubscription) {\n return true;\n }\n }).length > 0 ? true : false;\n }\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_isOwner',\n value: function _isOwner(value, url) {\n if (!value) return false;\n return value.reporter === url ? true : false;\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_intersection',\n value: function _intersection() {\n var args = (0, _from2.default)(arguments);\n\n var result = args.reduce(function (first, second) {\n return first.concat(second);\n }).filter(function (value, index, self) {\n return self.indexOf(value) === index;\n });\n log.log('DataObjectsStorage._intersection] Result an unique array of strings: ', result);\n return result;\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_updateToArray',\n value: function _updateToArray(storeDataObject, resource, key, value) {\n log.log('[DataObjectsStorage] - _updateToArray: ', storeDataObject, resource, key, value);\n if (storeDataObject[resource][key].indexOf(value) === -1) storeDataObject[resource][key].push(value);\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_removeFromArray',\n value: function _removeFromArray(storeDataObject, resource, key, value) {\n var indexOfValue = storeDataObject[resource][key].indexOf(value);\n if (indexOfValue === -1) storeDataObject[resource][key].splice(indexOfValue, 1);\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_hasValue',\n value: function _hasValue(obj, key, value) {\n return obj.hasOwnProperty(key) && obj[key] === value;\n }\n\n /**\r\n * @private\r\n * @todo documentation\r\n */\n\n }, {\n key: '_getTypeOfObject',\n value: function _getTypeOfObject(isReporter) {\n return isReporter ? 'reporters' : 'observers';\n }\n }]);\n return DataObjectsStorage;\n}();\n\nexports.default = DataObjectsStorage;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDk5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zdG9yZS1vYmplY3RzL0RhdGFPYmplY3RzU3RvcmFnZS5qcz9lOTU2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIExvZyBTeXN0ZW1cclxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcclxubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0RhdGFPYmplY3RzU3RvcmFnZScpO1xyXG5cclxuaW1wb3J0IHsgYXNzaWduLCBkZWVwQ2xvbmUsIGRpdmlkZVVSTCB9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcclxuXHJcbmNsYXNzIERhdGFPYmplY3RzU3RvcmFnZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHN0b3JhZ2VNYW5hZ2VyLCBzdG9yZWREYXRhT2JqZWN0cykge1xyXG4gICAgaWYgKCFzdG9yYWdlTWFuYWdlcikgdGhyb3cgbmV3IEVycm9yKCdbU3RvcmUgRGF0YSBPYmplY3RzXSAtIE5lZWRzIHRoZSBzdG9yYWdlTWFuYWdlciBjb21wb25lbnQnKTtcclxuXHJcbiAgICB0aGlzLl9zdG9yYWdlTWFuYWdlciA9IHN0b3JhZ2VNYW5hZ2VyO1xyXG4gICAgdGhpcy5fc3RvcmVEYXRhT2JqZWN0ID0gc3RvcmVkRGF0YU9iamVjdHM7XHJcblxyXG4gICAgdGhpcy5fY2FjaGUgPSB7fTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBzaG91bGQgc2V0IHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBkYXRhT2JqZWN0VVJMIHRvIGJlIHJlc3VtZWQgaWYgbmVjZXNzYXJ5O1xyXG4gICAqXHJcbiAgICogQHBhcmFtIHtEYXRhT2JqZWN0VVJMfSB1cmwgLSBkYXRhT2JqZWN0VVJMIHRvIGJlIHNhdmVkO1xyXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNSZXBvcnRlciAtIHRoZSBvYmplY3QgdG8gYmUgc2F2ZWQgaXMgYSByZXBvcnRlclxyXG4gICAqIEBwYXJhbSB7U2NoZW1hVVJMfSBzY2hlbWEgLSB0aGUgc2NoZW1hIHVybFxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBzdGF0dXMgLSB0aGUgc3RhdHVzIG9mIGN1cnJlbnQgZGF0YU9iamVjdFxyXG4gICAqIEBwYXJhbSB7SHlwZXJ0eVVSTH0gcmVwb3J0ZXIgLSB0aGUgUmVwb3J0ZXIgaHlwZXJ0eVVSTFxyXG4gICAqIEBwYXJhbSB7QXJyYXk8SHlwZXJ0eVVSTD59IHN1YnNjcmlwdGlvbiAtIGxpc3Qgb2Ygc3Vic2NyaXB0aW9uc1xyXG4gICAqIEBwYXJhbSB7QXJyYXk8RGF0YU9iamVjdENoaWxkPn0gY2hpbGRyZW4gLSBsaXN0IG9mIGNoaWxkcyBvZiBkYXRhT2JqZWN0VVJMXHJcbiAgICogQHBhcmFtIHtBcnJheTxTdHJpbmc+fSBjaGlsZHJlbnMgLSBsaXN0IG9mIGNoaWxkcmVucywgbGlrZSwgJ2NoYXRtZXNzYWdlJztcclxuICAgKiBAcGFyYW0ge0FycmF5PFVzZXJVUkx9IHN1YnNjcmliZXJVc2VyIC0gbGlzdCBvZiBzdWJzY3JpYmVkIHVzZXJzO1xyXG4gICAqL1xyXG5cclxuICBzZXQobWV0YWRhdGEpIHtcclxuXHJcbiAgICBsZXQgc3RvcmVEYXRhT2JqZWN0ID0gdGhpcy5fc3RvcmVEYXRhT2JqZWN0O1xyXG4gICAgbGV0IHR5cGUgPSB0aGlzLl9nZXRUeXBlT2ZPYmplY3QobWV0YWRhdGEuaXNSZXBvcnRlcik7XHJcbiAgICBpZiAoIXN0b3JlRGF0YU9iamVjdC5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgc3RvcmVEYXRhT2JqZWN0W3R5cGVdID0ge307XHJcblxyXG4gICAgaWYgKCFzdG9yZURhdGFPYmplY3RbdHlwZV0uaGFzT3duUHJvcGVydHkobWV0YWRhdGEudXJsKSkge1xyXG4gICAgICBzdG9yZURhdGFPYmplY3RbdHlwZV1bbWV0YWRhdGEudXJsXSA9IHt9O1xyXG4gICAgICBzdG9yZURhdGFPYmplY3RbdHlwZV1bbWV0YWRhdGEudXJsXS5zdWJzY3JpcHRpb25zID0gW107Ly8gVE9ETzpkbyB3ZSBuZWVkIHRoaXM/XHJcbiAgICAgIHN0b3JlRGF0YU9iamVjdFt0eXBlXVttZXRhZGF0YS51cmxdLnN1YnNjcmliZXJVc2VycyA9IFtdOy8vIFRPRE86ZG8gd2UgbmVlZCB0aGlzP1xyXG4gICAgICBzdG9yZURhdGFPYmplY3RbdHlwZV1bbWV0YWRhdGEudXJsXS5jaGlsZHJlbk9iamVjdHMgPSB7fTtcclxuICAgICAgc3RvcmVEYXRhT2JqZWN0W3R5cGVdW21ldGFkYXRhLnVybF0uZGF0YSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIE9iamVjdC5hc3NpZ24oc3RvcmVEYXRhT2JqZWN0W3R5cGVdW21ldGFkYXRhLnVybF0sIG1ldGFkYXRhKTtcclxuICAgIGRlbGV0ZSBzdG9yZURhdGFPYmplY3RbdHlwZV1bbWV0YWRhdGEudXJsXS5zdWJzY3JpYmVyVXNlcjtcclxuICAgIGRlbGV0ZSBzdG9yZURhdGFPYmplY3RbdHlwZV1bbWV0YWRhdGEudXJsXS5zdWJzY3JpYmVySHlwZXJ0eTtcclxuXHJcbiAgICAvKmlmIChzY2hlbWEpIHN0b3JlRGF0YU9iamVjdFt0eXBlXVttZXRhZGF0YS51cmxdLnNjaGVtYSA9IHNjaGVtYTtcclxuICAgIGlmIChzdGF0dXMpIHN0b3JlRGF0YU9iamVjdFt0eXBlXVttZXRhZGF0YS51cmxdLnN0YXR1cyA9IHN0YXR1cztcclxuICAgIGlmIChjaGlsZHJlblJlc291cmNlcykgc3RvcmVEYXRhT2JqZWN0W3R5cGVdW21ldGFkYXRhLnVybF0uY2hpbGRyZW5SZXNvdXJjZXMgPSBjaGlsZHJlblJlc291cmNlczsqL1xyXG5cclxuICAgIGlmIChtZXRhZGF0YS5zdWJzY3JpYmVySHlwZXJ0eSAmJiAhbWV0YWRhdGEuaXNSZXBvcnRlcikgeyAvLyBUT0RPOiBkbyB3ZSBuZWVkIHRoaXM/XHJcbiAgICAgIHRoaXMuX3VwZGF0ZVRvQXJyYXkoc3RvcmVEYXRhT2JqZWN0W3R5cGVdLCBtZXRhZGF0YS51cmwsICdzdWJzY3JpcHRpb25zJywgbWV0YWRhdGEuc3Vic2NyaWJlckh5cGVydHkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vc3RvcmVEYXRhT2JqZWN0W3R5cGVdW21ldGFkYXRhLnVybF0ub3duZXIgPSBvd25lcjtcclxuXHJcbiAgICBpZiAobWV0YWRhdGEuc3Vic2NyaWJlclVzZXIpIHsgLy8gVE9ETzogZG8gd2UgbmVlZCB0aGlzP1xyXG4gICAgICBpZiAoc3RvcmVEYXRhT2JqZWN0W3R5cGVdW21ldGFkYXRhLnVybF0uc3Vic2NyaWJlclVzZXJzLmluZGV4T2YobWV0YWRhdGEuc3Vic2NyaWJlclVzZXIpKSB7XHJcbiAgICAgICAgdGhpcy5fdXBkYXRlVG9BcnJheShzdG9yZURhdGFPYmplY3RbdHlwZV0sIG1ldGFkYXRhLnVybCwgJ3N1YnNjcmliZXJVc2VycycsIG1ldGFkYXRhLnN1YnNjcmliZXJVc2VyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3N0b3JlRGF0YU9iamVjdCA9IHN0b3JlRGF0YU9iamVjdDtcclxuICAgIHRoaXMuX3N0b3JhZ2VNYW5hZ2VyLnNldCgnc3luY2hlck1hbmFnZXI6T2JqZWN0VVJMcycsIDEsIHN0b3JlRGF0YU9iamVjdCk7XHJcbiAgICByZXR1cm4gc3RvcmVEYXRhT2JqZWN0W3R5cGVdW21ldGFkYXRhLnVybF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gc2hvdWxkIHNhdmUgYW5kIHVwZGF0ZSB0aGUgY3VycmVudCBkYXRhT2JqZWN0IGRhdGEgaW5mb3JtYXRpb25cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNSZXBvcnRlciAtIHRoZSBvYmplY3QgdG8gYmUgc2F2ZWQgaXMgYSByZXBvcnRlclxyXG4gICAqIEBwYXJhbSB7RGF0YU9iamVjdFVSTH0gcmVzb3VyY2UgLSBkYXRhT2JqZWN0VVJMIHRvIGJlIHNhdmVkIG9yIHVwZGF0ZWQ7XHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IGF0dHJpYnV0ZSAtIGF0dHJpYnV0ZSBpbnNpZGUgdGhlIGRhdGEgd2hpY2ggd2lsbCBiZSBzYXZlZFxyXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhIC0gdmFsdWUgd2lsbCBiZSBzYXZlZCBpbnNpZGUgdGhlIGF0dHJpYnV0ZTtcclxuICAgKi9cclxuICBzYXZlRGF0YShpc1JlcG9ydGVyLCByZXNvdXJjZSwgYXR0cmlidXRlLCB2YWx1ZSkge1xyXG5cclxuICAgIGxldCBzdG9yZURhdGFPYmplY3QgPSB0aGlzLl9zdG9yZURhdGFPYmplY3Q7XHJcbiAgICBsZXQgdHlwZSA9IHRoaXMuX2dldFR5cGVPZk9iamVjdChpc1JlcG9ydGVyKTtcclxuXHJcbiAgICBpZiAoIXN0b3JlRGF0YU9iamVjdCB8fCAhc3RvcmVEYXRhT2JqZWN0W3R5cGVdIHx8ICFzdG9yZURhdGFPYmplY3RbdHlwZV1bcmVzb3VyY2VdKSB7XHJcbiAgICAgIGxvZy5sb2coJ1tTdG9yZURhdGFPYmplY3RzIC0gc2F2ZSBkYXRhXSAtIG5vdCBzYXZlZCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbG9nLmxvZygnW1N0b3JlRGF0YU9iamVjdHMgLSBzYXZlRGF0YV0gLSAnLCBpc1JlcG9ydGVyLCB0eXBlLCByZXNvdXJjZSwgYXR0cmlidXRlLCB2YWx1ZSk7XHJcblxyXG4gICAgaWYgKCFzdG9yZURhdGFPYmplY3RbdHlwZV1bcmVzb3VyY2VdLmhhc093blByb3BlcnR5KCdkYXRhJykpIHtcclxuICAgICAgc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXS5kYXRhID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGF0dHJpYnV0ZSkge1xyXG4gICAgICBsZXQgZGF0YTtcclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIGRhdGEgPSBkZWVwQ2xvbmUodmFsdWUpO1xyXG4gICAgICBlbHNlIGRhdGEgPSB2YWx1ZTtcclxuXHJcbiAgICAgIGFzc2lnbihzdG9yZURhdGFPYmplY3RbdHlwZV1bcmVzb3VyY2VdLmRhdGEsIGF0dHJpYnV0ZSwgZGF0YSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdG9yZURhdGFPYmplY3RbdHlwZV1bcmVzb3VyY2VdLmRhdGEgPSBkZWVwQ2xvbmUodmFsdWUpIHx8IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3N0b3JlRGF0YU9iamVjdCA9IHN0b3JlRGF0YU9iamVjdDtcclxuICAgIHRoaXMuX3N0b3JhZ2VNYW5hZ2VyLnNldCgnc3luY2hlck1hbmFnZXI6T2JqZWN0VVJMcycsIDEsIHN0b3JlRGF0YU9iamVjdCk7XHJcbiAgICByZXR1cm4gc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXTtcclxuICB9XHJcblxyXG4gIHNhdmVDaGlsZHJlbnMoaXNSZXBvcnRlciwgcmVzb3VyY2UsIGF0dHJpYnV0ZSwgdmFsdWUpIHtcclxuICAgIGxldCBzdG9yZURhdGFPYmplY3QgPSB0aGlzLl9zdG9yZURhdGFPYmplY3Q7XHJcbiAgICBsZXQgdHlwZSA9IHRoaXMuX2dldFR5cGVPZk9iamVjdChpc1JlcG9ydGVyKTtcclxuXHJcbiAgICBpZiAoIXN0b3JlRGF0YU9iamVjdCB8fCAhc3RvcmVEYXRhT2JqZWN0W3R5cGVdIHx8ICFzdG9yZURhdGFPYmplY3RbdHlwZV1bcmVzb3VyY2VdKSB7XHJcbiAgICAgIGxvZy5sb2coJ1tTdG9yZURhdGFPYmplY3RzIC0gc2F2ZSBjaGlsZHJlbnNdIC0gbm90IHNhdmVkJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXN0b3JlRGF0YU9iamVjdFt0eXBlXVtyZXNvdXJjZV0uaGFzT3duUHJvcGVydHkoJ2NoaWxkcmVucycpKSB7XHJcbiAgICAgIHN0b3JlRGF0YU9iamVjdFt0eXBlXVtyZXNvdXJjZV0uY2hpbGRyZW5PYmplY3RzID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGF0dHJpYnV0ZSkge1xyXG4gICAgICBhc3NpZ24oc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXS5jaGlsZHJlbk9iamVjdHMsIGF0dHJpYnV0ZSwgZGVlcENsb25lKHZhbHVlKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdG9yZURhdGFPYmplY3RbdHlwZV1bcmVzb3VyY2VdLmNoaWxkcmVuT2JqZWN0cyA9IGRlZXBDbG9uZSh2YWx1ZSkgfHwge307XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fc3RvcmVEYXRhT2JqZWN0ID0gc3RvcmVEYXRhT2JqZWN0O1xyXG4gICAgdGhpcy5fc3RvcmFnZU1hbmFnZXIuc2V0KCdzeW5jaGVyTWFuYWdlcjpPYmplY3RVUkxzJywgMSwgc3RvcmVEYXRhT2JqZWN0KTtcclxuICAgIHJldHVybiBzdG9yZURhdGFPYmplY3RbdHlwZV1bcmVzb3VyY2VdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIHNob3VsZCBzYXZlIGFuZCB1cGRhdGUgdGhlIGN1cnJlbnQgZGF0YU9iamVjdCBpbmZvcm1hdGlvblxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtCb29sZWFufSBpc1JlcG9ydGVyIC0gdGhlIG9iamVjdCB0byBiZSBzYXZlZCBpcyBhIHJlcG9ydGVyXHJcbiAgICogQHBhcmFtIHtEYXRhT2JqZWN0VVJMfSByZXNvdXJjZSAtIGRhdGFPYmplY3RVUkwgdG8gYmUgc2F2ZWQgb3IgdXBkYXRlZDtcclxuICAgKiBAcGFyYW0ge1N0cmluZ30gYXR0cmlidXRlIC0gYXR0cmlidXRlIGluc2lkZSB0aGUgZGF0YSB3aGljaCB3aWxsIGJlIHNhdmVkXHJcbiAgICogQHBhcmFtIHthbnl9IGRhdGEgLSB2YWx1ZSB3aWxsIGJlIHNhdmVkIGluc2lkZSB0aGUgYXR0cmlidXRlO1xyXG4gICAqL1xyXG4gIHVwZGF0ZShpc1JlcG9ydGVyLCByZXNvdXJjZSwgYXR0cmlidXRlLCB2YWx1ZSkge1xyXG5cclxuICAgIGxldCBzdG9yZURhdGFPYmplY3QgPSB0aGlzLl9zdG9yZURhdGFPYmplY3Q7XHJcbiAgICBsZXQgdHlwZSA9IHRoaXMuX2dldFR5cGVPZk9iamVjdChpc1JlcG9ydGVyKTtcclxuXHJcbiAgICBpZiAoIXN0b3JlRGF0YU9iamVjdCB8fCAhc3RvcmVEYXRhT2JqZWN0W3R5cGVdIHx8ICFzdG9yZURhdGFPYmplY3RbdHlwZV1bcmVzb3VyY2VdKSB7XHJcbiAgICAgIGxvZy5sb2coJ1tTdG9yZURhdGFPYmplY3RzIC0gdXBkYXRlXSAtIG5vdCBzYXZlZCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbG9nLmxvZygnW1N0b3JlRGF0YU9iamVjdHMgLSB1cGRhdGVdIC0gJywgaXNSZXBvcnRlciwgdHlwZSwgcmVzb3VyY2UsIGF0dHJpYnV0ZSwgdmFsdWUpO1xyXG5cclxuICAgIGlmIChzdG9yZURhdGFPYmplY3RbdHlwZV0gJiYgc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXSAmJiByZXNvdXJjZSAmJiBhdHRyaWJ1dGUgJiYgdmFsdWUpIHtcclxuXHJcbiAgICAgIGlmIChhdHRyaWJ1dGUgPT09ICdzdWJzY3JpcHRpb25zJyB8fCBhdHRyaWJ1dGUgPT09ICdzdWJzY3JpYmVyVXNlcnMnKSB7XHJcbiAgICAgICAgbGV0IHVwZGF0ZSA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmIChhdHRyaWJ1dGUgPT09ICdzdWJzY3JpcHRpb25zJykge1xyXG4gICAgICAgICAgdXBkYXRlID0gIXRoaXMuX2lzT3duZXIoc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXSwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHVwZGF0ZSkgdGhpcy5fdXBkYXRlVG9BcnJheShzdG9yZURhdGFPYmplY3RbdHlwZV0sIHJlc291cmNlLCBhdHRyaWJ1dGUsIHZhbHVlKTtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXVthdHRyaWJ1dGVdID0gdmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX3N0b3JlRGF0YU9iamVjdCA9IHN0b3JlRGF0YU9iamVjdDtcclxuICAgICAgdGhpcy5fc3RvcmFnZU1hbmFnZXIuc2V0KCdzeW5jaGVyTWFuYWdlcjpPYmplY3RVUkxzJywgMSwgc3RvcmVEYXRhT2JqZWN0KTtcclxuICAgICAgcmV0dXJuIHN0b3JlRGF0YU9iamVjdFt0eXBlXVtyZXNvdXJjZV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gc2hvdWxkIGRlbGV0ZSBzdG9yZWQgaW5mb3JtYXRpb24gZnJvbSB0aGUgZGF0YU9iamVjdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtCb29sZWFufSBpc1JlcG9ydGVyIC0gdGhlIG9iamVjdCB0byBiZSBzYXZlZCBpcyBhIHJlcG9ydGVyXHJcbiAgICogQHBhcmFtIHtEYXRhT2JqZWN0VVJMfSByZXNvdXJjZSAtIGRhdGFPYmplY3RVUkwgdG8gYmUgc2F2ZWQgb3IgdXBkYXRlZDtcclxuICAgKiBAcGFyYW0ge1N0cmluZ30gYXR0cmlidXRlIC0gYXR0cmlidXRlIGluc2lkZSB0aGUgZGF0YSB3aGljaCB3aWxsIGJlIHNhdmVkXHJcbiAgICogQHBhcmFtIHthbnl9IGRhdGEgLSB2YWx1ZSB3aWxsIGJlIHNhdmVkIGluc2lkZSB0aGUgYXR0cmlidXRlO1xyXG4gICAqL1xyXG4gIGRlbGV0ZShpc1JlcG9ydGVyLCByZXNvdXJjZSwgYXR0cmlidXRlLCB2YWx1ZSkge1xyXG5cclxuICAgIGxldCBzdG9yZURhdGFPYmplY3QgPSB0aGlzLl9zdG9yZURhdGFPYmplY3Q7XHJcbiAgICBsZXQgdHlwZSA9IHRoaXMuX2dldFR5cGVPZk9iamVjdChpc1JlcG9ydGVyKTtcclxuXHJcbiAgICBpZiAoIXN0b3JlRGF0YU9iamVjdCB8fCAhc3RvcmVEYXRhT2JqZWN0W3R5cGVdIHx8ICFzdG9yZURhdGFPYmplY3RbdHlwZV1bcmVzb3VyY2VdKSB7XHJcbiAgICAgIGxvZy5sb2coJ1tTdG9yZURhdGFPYmplY3RzIC0gZGVsZXRlXSAtIG5vdCBzYXZlZCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0b3JlRGF0YU9iamVjdFt0eXBlXSAmJiBzdG9yZURhdGFPYmplY3RbdHlwZV1bcmVzb3VyY2VdICYmIHJlc291cmNlICYmIGF0dHJpYnV0ZSAmJiB2YWx1ZSkge1xyXG5cclxuICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gJ3N1YnNjcmlwdGlvbnMnIHx8IGF0dHJpYnV0ZSA9PT0gJ3N1YnNjcmliZXJVc2VycycpIHtcclxuICAgICAgICB0aGlzLl9yZW1vdmVGcm9tQXJyYXkoc3RvcmVEYXRhT2JqZWN0W3R5cGVdLCByZXNvdXJjZSwgYXR0cmlidXRlLCB2YWx1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGVsZXRlIHN0b3JlRGF0YU9iamVjdFt0eXBlXVtyZXNvdXJjZV1bYXR0cmlidXRlXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fc3RvcmVEYXRhT2JqZWN0ID0gc3RvcmVEYXRhT2JqZWN0O1xyXG4gICAgICB0aGlzLl9zdG9yYWdlTWFuYWdlci5zZXQoJ3N5bmNoZXJNYW5hZ2VyOk9iamVjdFVSTHMnLCAxLCBzdG9yZURhdGFPYmplY3QpO1xyXG5cclxuICAgICAgcmV0dXJuIHN0b3JlRGF0YU9iamVjdFt0eXBlXVtyZXNvdXJjZV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUT0RPOiBjaGVjayBpZiB0aGlzIHByb2Nlc3MgaXMgdmlhYmxlIGJlY2F1c2UgdGhlIHN0b3JhZ2UgbWFuYWdlciBhYmlsaXR5IHRvIGRlbGV0ZVxyXG4gICAqIG5vdyB0aGUgc3RvcmFnZU1hbmFnZXIgb25seSBjYW4gZGVsZXRlIGFuIHNwZWNpZmljIGtleSwgYnV0IG5vdCB0aGUgc3BlY2lmaWMgdmFsdWUgaW5zaWRlIHRoYXQga2V5O1xyXG4gICAqL1xyXG4gIGRlbGV0ZVJlc291cmNlKHJlc291cmNlKSB7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHJcbiAgICAgIGlmIChyZXNvdXJjZSkge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRBbGwoKS50aGVuKChzdG9yZWREYXRhT2JqZWN0cykgPT4ge1xyXG4gICAgICAgICAgbGV0IHRtcCA9IE9iamVjdC5hc3NpZ24oc3RvcmVkRGF0YU9iamVjdHMsIHRoaXMuX3N0b3JlRGF0YU9iamVjdCB8fCB7fSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRtcC5oYXNPd25Qcm9wZXJ0eSgnb2JzZXJ2ZXJzJykgJiYgdG1wLm9ic2VydmVycy5oYXNPd25Qcm9wZXJ0eShyZXNvdXJjZSkpIHtcclxuICAgICAgICAgICAgZGVsZXRlIHRtcC5vYnNlcnZlcnNbcmVzb3VyY2VdO1xyXG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlTWFuYWdlci5zZXQoJ3N5bmNoZXJNYW5hZ2VyOk9iamVjdFVSTHMnLCAxLCB0bXApO1xyXG4gICAgICAgICAgICB0aGlzLl9zdG9yZURhdGFPYmplY3QgPSB0bXA7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHRtcC5vYnNlcnZlcnNbcmVzb3VyY2VdKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodG1wLmhhc093blByb3BlcnR5KCdyZXBvcnRlcnMnKSAmJiB0bXAucmVwb3J0ZXJzLmhhc093blByb3BlcnR5KHJlc291cmNlKSkge1xyXG4gICAgICAgICAgICBkZWxldGUgdG1wLnJlcG9ydGVyc1tyZXNvdXJjZV07XHJcbiAgICAgICAgICAgIHRoaXMuX3N0b3JhZ2VNYW5hZ2VyLnNldCgnc3luY2hlck1hbmFnZXI6T2JqZWN0VVJMcycsIDEsIHRtcCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0b3JlRGF0YU9iamVjdCA9IHRtcDtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodG1wLnJlcG9ydGVyc1tyZXNvdXJjZV0pO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJlc29sdmUoJ1RoZSAnICsgcmVzb3VyY2UgKyAnIGRvc2VuXFx0IGV4aXN0cywgbm90aGluZyB3YXMgZGVsZXRlZCcpO1xyXG5cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignW1N0b3JlRGF0YU9iamVjdHNdIC0gQ2FuXFwndCBkZWxldGUgdGhpcyAnICsgcmVzb3VyY2UpKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGdldEFsbCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9zdG9yYWdlTWFuYWdlci5nZXQoJ3N5bmNoZXJNYW5hZ2VyOk9iamVjdFVSTHMnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBzaG91bGQgbG9vayBmb3IgYSBzcGVjaWZpYyBkYXRhT2JqZWN0VVJMXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0RhdGFPYmplY3RVUkx9IHJlc291cmNlIC0gdGhlIGRhdGFPYmplY3RVUkwgd2lsbCBiZSBzZWFyY2hlZFxyXG4gICAqXHJcbiAgICogQHJldHVybnMgUHJvbWlzZTxPYmplY3Q+IG9iamVjdCB3aXRoIHRoZSBkYXRhT2JqZWN0IGluZm9ybWF0aW9uO1xyXG4gICAqL1xyXG4gIGdldERhdGFPYmplY3QocmVzb3VyY2UpIHtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5fc3RvcmFnZU1hbmFnZXIuZ2V0KCdzeW5jaGVyTWFuYWdlcjpPYmplY3RVUkxzJykudGhlbigoc3RvcmVkRGF0YU9iamVjdCkgPT4ge1xyXG5cclxuICAgICAgICBsZXQgb2JzZXJ2ZXJzID0gc3RvcmVkRGF0YU9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnb2JzZXJ2ZXJzJykgPyBzdG9yZWREYXRhT2JqZWN0Lm9ic2VydmVycyA6IHt9O1xyXG4gICAgICAgIGxldCByZXBvcnRlcnMgPSBzdG9yZWREYXRhT2JqZWN0Lmhhc093blByb3BlcnR5KCdyZXBvcnRlcnMnKSA/IHN0b3JlZERhdGFPYmplY3QucmVwb3J0ZXJzIDoge307XHJcblxyXG4gICAgICAgIGxldCBjdXJyZW50UmVwb3J0ZXIgPSBPYmplY3Qua2V5cyhyZXBvcnRlcnMpLmZpbmQoKHZhbHVlKSA9PiB7IHJldHVybiB2YWx1ZSA9PT0gcmVzb3VyY2U7IH0pO1xyXG4gICAgICAgIGxldCBjdXJyZW50T2JzZXJ2ZXIgPSBPYmplY3Qua2V5cyhvYnNlcnZlcnMpLmZpbmQoKHZhbHVlKSA9PiB7IHJldHVybiB2YWx1ZSA9PT0gcmVzb3VyY2U7IH0pO1xyXG4gICAgICAgIGxldCBkYXRhT2JqZWN0O1xyXG5cclxuICAgICAgICBpZiAoY3VycmVudE9ic2VydmVyKSB7IGRhdGFPYmplY3QgPSBzdG9yZWREYXRhT2JqZWN0Lm9ic2VydmVyc1tjdXJyZW50T2JzZXJ2ZXJdOyB9XHJcbiAgICAgICAgaWYgKGN1cnJlbnRSZXBvcnRlcikgeyBkYXRhT2JqZWN0ID0gc3RvcmVkRGF0YU9iamVjdC5yZXBvcnRlcnNbY3VycmVudFJlcG9ydGVyXTsgfVxyXG5cclxuICAgICAgICBsb2cuaW5mbygnW1N0b3JlRGF0YU9iamVjdHMgLSBnZXREYXRhT2JqZWN0XSAtIGZvciBvYnNlcnZlcjogJywgY3VycmVudE9ic2VydmVyKTtcclxuICAgICAgICBsb2cuaW5mbygnW1N0b3JlRGF0YU9iamVjdHMgLSBnZXREYXRhT2JqZWN0XSAtIGZvciByZXBvcnRlcnM6ICcsIGN1cnJlbnRSZXBvcnRlcik7XHJcblxyXG4gICAgICAgIGxvZy5pbmZvKCdbU3RvcmVEYXRhT2JqZWN0cyAtIGdldERhdGFPYmplY3RdIC0gcmVzb2x2ZTogJywgZGF0YU9iamVjdCk7XHJcbiAgICAgICAgcmV0dXJuIGRhdGFPYmplY3QgPyByZXNvbHZlKGRhdGFPYmplY3QpIDogcmVqZWN0KCdObyBkYXRhT2JqZWN0IHdhcyBmb3VuZCcpO1xyXG5cclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIHNob3VsZCBnZXQgdGhlIGRhdGFPYmplY3QgaW5mb3JtYXRpb24gYnkgdGhlIG1lc3NhZ2VcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBtc2cgLSBtZXNzYWdlIHdvdWxkIGJlIGFuYWxpc2VkIHRvIGdldCB0aGUgY3VycmVudCBkYXRhT2JqZWN0IGluZm9ybWF0aW9uXHJcbiAgICogQHBhcmFtIHtCb29sZWFufSBpc1JlcG9ydGVyIC0gdGhlIG9iamVjdCB0byBiZSBzYXZlZCBpcyBhIHJlcG9ydGVyXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyBQcm9taXNlPG9iamVjdD4gc2hvdWxkIHJldHVuIGFuIG9iamVjdCB3aXRoIHRoZSBkYXRhT2JqZWN0IG9yIG51bGxcclxuICAgKi9cclxuICBnZXRSZXNvdXJjZXNCeUNyaXRlcmlhKG1zZywgaXNSZXBvcnRlcikge1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG5cclxuICAgICAgbGV0IHR5cGUgPSB0aGlzLl9nZXRUeXBlT2ZPYmplY3QoaXNSZXBvcnRlcik7XHJcblxyXG4gICAgICB0aGlzLmdldEFsbCgpLnRoZW4oKHN0b3JlZERhdGFPYmplY3RzKSA9PiB7XHJcblxyXG4gICAgICAgIGlmICghc3RvcmVkRGF0YU9iamVjdHMpIHtcclxuICAgICAgICAgIGxvZy5sb2coJ1tEYXRhT2JqZWN0c1N0b3JhZ2UuZ2V0UmVzb3VyY2VzQnlDcml0ZXJpYV0gZG9uXFwndCBoYXZlIHN0b3JlZCBkYXRhIG9iamVjdHMnKTtcclxuICAgICAgICAgIHJldHVybiByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG1zZy5ib2R5ICYmIG1zZy5ib2R5Lmhhc093blByb3BlcnR5KCdyZXN1bWUnKSAmJiAhbXNnLmJvZHkucmVzdW1lKSB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShudWxsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZSBtZXNzYWdlIGhhdmUgb3RoZXIgY3JpdGVyaWFcclxuICAgICAgICAvLyBpZiBub3Qgc2VhcmNoIGZvciBvbiB0aGUgJ2Zyb20nIG9mIHRoZSBtZXNzYWdlLlxyXG4gICAgICAgIGxldCByZXN1bHQgPSBbXTtcclxuICAgICAgICBsZXQgaGFzU3Vic2NyaXB0aW9uID0gdGhpcy5faGFzU3Vic2NyaXB0aW9uKHN0b3JlZERhdGFPYmplY3RzW3R5cGVdLCBtc2cuZnJvbSk7XHJcbiAgICAgICAgbGV0IGlzT3duZXIgPSB0aGlzLl9zZWFyY2hPd25lcihzdG9yZWREYXRhT2JqZWN0c1t0eXBlXSwgbXNnLmZyb20pO1xyXG4gICAgICAgIGxldCBpc1RvUHJvdG9TdHViUmVzdW1lID0gdGhpcy5fY2hlY2tQcm90b3N0dWJSZXN1bWUoc3RvcmVkRGF0YU9iamVjdHMsIG1zZyk7XHJcbiAgICAgICAgbG9nLmxvZygnW1N0b3JlZERhdGFPYmplY3RzIC0gZ2V0UmVzb3VyY2VzQnlDcml0ZXJpYV06Jywgc3RvcmVkRGF0YU9iamVjdHMsIG1zZywgaGFzU3Vic2NyaXB0aW9uLCBpc093bmVyKTtcclxuICAgICAgICBpZiAobXNnLmhhc093blByb3BlcnR5KCdmcm9tJykgJiYgaGFzU3Vic2NyaXB0aW9uIHx8IGlzT3duZXIgfHwgaXNUb1Byb3RvU3R1YlJlc3VtZSkge1xyXG4gICAgICAgICAgbGV0IHJlc291cmNlO1xyXG5cclxuICAgICAgICAgIGlmIChpc093bmVyKSB7XHJcbiAgICAgICAgICAgIHJlc291cmNlID0gdGhpcy5fZ2V0UmVzb3VyY2VzQnlPd25lcihzdG9yZWREYXRhT2JqZWN0c1t0eXBlXSwgbXNnLmZyb20pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVzb3VyY2UgPSB0aGlzLl9nZXRSZXNvdXJjZXNCeVN1YnNjcmlwdGlvbihzdG9yZWREYXRhT2JqZWN0c1t0eXBlXSwgbXNnLmZyb20pO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGxldCBpZGVudGl0eUZvdW5kRGF0YSA9IFtdO1xyXG4gICAgICAgICAgaWYgKG1zZy5ib2R5ICYmIG1zZy5ib2R5LmlkZW50aXR5KSBpZGVudGl0eUZvdW5kRGF0YSA9IHRoaXMuX2dldFJlc291cmNlc0J5SWRlbnRpdHkoc3RvcmVkRGF0YU9iamVjdHNbdHlwZV0sIG1zZy5ib2R5LmlkZW50aXR5KTtcclxuXHJcbiAgICAgICAgICAvL1RPRE86IHJlbW92ZSBzY2hlbWEgc2luY2UgbWV0YWRhdGEgYWxyZWFkeSBpbmNsdWRlcyB0aGUgc2NoZW1hP1xyXG5cclxuICAgICAgICAgIGxldCBzY2hlbWFGb3VuZERhdGEgPSBbXTtcclxuICAgICAgICAgIGlmIChtc2cuYm9keSAmJiBtc2cuYm9keS5zY2hlbWEpIHNjaGVtYUZvdW5kRGF0YSA9IHRoaXMuX2dldFJlc291cmNlc0J5U2NoZW1hKHN0b3JlZERhdGFPYmplY3RzW3R5cGVdLCBtc2cuYm9keS5zY2hlbWEpO1xyXG5cclxuICAgICAgICAgIGxldCBtZXRhZGF0YUZvdW5kID0gW107XHJcbiAgICAgICAgICBpZiAobXNnLmJvZHkgJiYgbXNnLmJvZHkudmFsdWUpIHtcclxuICAgICAgICAgICAgbGV0IG1ldGFkYXRhID0gbXNnLmJvZHkudmFsdWU7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBtZXRhZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICBtZXRhZGF0YUZvdW5kID0gdGhpcy5fZ2V0UmVzb3VyY2VzQnlNZXRhZGF0YShzdG9yZWREYXRhT2JqZWN0c1t0eXBlXSwgbWV0YWRhdGEpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGxldCBkYXRhRm91bmQgPSBbXTtcclxuICAgICAgICAgIGlmIChtc2cuYm9keSAmJiBtc2cuYm9keS52YWx1ZSAmJiBtc2cuYm9keS52YWx1ZS5kYXRhKSBkYXRhRm91bmQgPSB0aGlzLl9nZXRSZXNvdXJjZXNCeURhdGEoc3RvcmVkRGF0YU9iamVjdHNbdHlwZV0sIG1zZy5ib2R5LnZhbHVlLmRhdGEpO1xyXG5cclxuICAgICAgICAgIC8vIHlvdSBjYW4gcGFzcyBhcyBhcnJheXMgYXMgeW91IHdhbnQuLiBpdCB3aWxsIGJlIG1lcmdlZCBpbiBvbiBwbGFjZVxyXG4gICAgICAgICAgLy8gcmVtb3ZlZCBkdXBsaWNhdGVzO1xyXG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5faW50ZXJzZWN0aW9uKHJlc291cmNlLCBpZGVudGl0eUZvdW5kRGF0YSwgc2NoZW1hRm91bmREYXRhLCBkYXRhRm91bmQsIG1ldGFkYXRhRm91bmQpO1xyXG5cclxuICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09IDAgJiYgaXNUb1Byb3RvU3R1YlJlc3VtZSAmJiB0eXBlID09ICdvYnNlcnZlcnMnICYmIG1zZy5mcm9tLnNwbGl0KCdwcm90b3N0dWInKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCBzdG9yZWRPYnNlcnZlcnMgPSBzdG9yZWREYXRhT2JqZWN0c1t0eXBlXTtcclxuICAgICAgICAgICAgbGV0IGZyb21Eb21haW4gPSBkaXZpZGVVUkwobXNnLmZyb20pLmRvbWFpbjtcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RvcmVkT2JzZXJ2ZXJzKS5maWx0ZXIoKG9iamVjdFVSTCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBzdWJzY3JpcHRpb25zID0gc3RvcmVkT2JzZXJ2ZXJzW29iamVjdFVSTF0uc3Vic2NyaXB0aW9ucztcclxuICAgICAgICAgICAgICBsZXQgaGFzU3Vic2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgbGV0IHN1YnNjcmlwdGlvbkRvbWFpbiA9IGRpdmlkZVVSTChzdWJzY3JpcHRpb24pLmRvbWFpbjtcclxuICAgICAgICAgICAgICAgIGlmIChzdWJzY3JpcHRpb25Eb21haW4gPT0gZnJvbURvbWFpbikge1xyXG4gICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChvYmplY3RVUkwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShudWxsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBpbml0ID0ge307XHJcbiAgICAgICAgcmVzdWx0LmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgbGV0IGN1cnJlbnRJc1JlcG9ydGVyID0gc3RvcmVkRGF0YU9iamVjdHNbdHlwZV1ba2V5XTtcclxuICAgICAgICAgIGluaXRba2V5XSA9IGN1cnJlbnRJc1JlcG9ydGVyO1xyXG4gICAgICAgICAgcmV0dXJuIGluaXQ7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxvZy5sb2coJ1tTdG9yZSBEYXRhIE9iamVjdHNdIC0gJywgaW5pdCk7XHJcblxyXG4gICAgICAgIHJlc29sdmUoaW5pdCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxyXG4gICAqL1xyXG4gIF9nZXRSZXNvdXJjZXNCeUlkZW50aXR5KHN0b3JlZERhdGEsIHVzZXJVUkwpIHtcclxuICAgIGlmICghc3RvcmVkRGF0YSkgcmV0dXJuIFtdO1xyXG5cclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhzdG9yZWREYXRhKS5maWx0ZXIoKG9iamVjdFVSTCkgPT4ge1xyXG4gICAgICByZXR1cm4gc3RvcmVkRGF0YVtvYmplY3RVUkxdLnN1YnNjcmliZXJVc2Vycy5maWx0ZXIoKGN1cnJlbnQpID0+IHtcclxuICAgICAgICByZXR1cm4gY3VycmVudCA9PT0gdXNlclVSTDtcclxuICAgICAgfSkubGVuZ3RoO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEB0b2RvIGRvY3VtZW50YXRpb25cclxuICAgKi9cclxuICBfZ2V0UmVzb3VyY2VzQnlPd25lcihzdG9yZWREYXRhLCBvd25lcikge1xyXG4gICAgaWYgKCFzdG9yZWREYXRhKSByZXR1cm4gW107XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc3RvcmVkRGF0YSkuZmlsdGVyKChvYmplY3RVUkwpID0+IHtcclxuICAgICAgcmV0dXJuIHN0b3JlZERhdGFbb2JqZWN0VVJMXS5yZXBvcnRlciA9PT0gb3duZXI7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxyXG4gICAqL1xyXG4gIF9nZXRSZXNvdXJjZXNCeVN1YnNjcmlwdGlvbihzdG9yZWREYXRhLCBzdWJzY3JpcHRpb24pIHtcclxuICAgIGlmICghc3RvcmVkRGF0YSkgcmV0dXJuIFtdO1xyXG5cclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhzdG9yZWREYXRhKS5maWx0ZXIoKG9iamVjdFVSTCkgPT4ge1xyXG4gICAgICByZXR1cm4gc3RvcmVkRGF0YVtvYmplY3RVUkxdLnN1YnNjcmlwdGlvbnMuZmlsdGVyKChjdXJyZW50KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGN1cnJlbnQgPT09IHN1YnNjcmlwdGlvbjtcclxuICAgICAgfSkubGVuZ3RoO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBAdG9kbyBkb2N1bWVudGF0aW9uXHJcbiAgICovXHJcbiAgX2dldFJlc291cmNlc0J5U2NoZW1hKHN0b3JlZERhdGEsIHNjaGVtYSkge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHN0b3JlZERhdGEpLmZpbHRlcigob2JqZWN0VVJMKSA9PiB7XHJcbiAgICAgIGxldCBjdXJyZW50T2JqZWN0ID0gc3RvcmVkRGF0YVtvYmplY3RVUkxdO1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoY3VycmVudE9iamVjdCkuZmlsdGVyKChrZXkpID0+IHtcclxuICAgICAgICByZXR1cm4ga2V5ID09PSAnc2NoZW1hJyAmJiBjdXJyZW50T2JqZWN0W2tleV0gPT09IHNjaGVtYTtcclxuICAgICAgfSkubGVuZ3RoO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEB0b2RvIGRvY3VtZW50YXRpb25cclxuICAgKi9cclxuICBfZ2V0UmVzb3VyY2VzQnlNZXRhZGF0YShzdG9yZWREYXRhLCBtZXRhZGF0YSkge1xyXG4gICAgaWYgKCFtZXRhZGF0YSkgcmV0dXJuIFtdO1xyXG5cclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhzdG9yZWREYXRhKS5maWx0ZXIoKG9iamVjdFVSTCkgPT4ge1xyXG4gICAgICBsZXQgY3VycmVudE9iamVjdCA9IHN0b3JlZERhdGFbb2JqZWN0VVJMXTtcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGN1cnJlbnRPYmplY3QpLmZpbHRlcigoa2V5KSA9PiB7XHJcbiAgICAgICAgLy8gc2VhcmNoIG9uIHN0b3JlRGF0YU9iamVjdHMgZm9yIHNwZWNpZmljIGtleSBwcm92aWRlZCBmcm9tIGRhdGE7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG1ldGFkYXRhKS5maWx0ZXIoc2VhcmNoRm9yID0+IHtcclxuICAgICAgICAgIHJldHVybiBrZXkgPT09IHNlYXJjaEZvciAmJiBjdXJyZW50T2JqZWN0W2tleV0gPT09IG1ldGFkYXRhW3NlYXJjaEZvcl07XHJcbiAgICAgICAgfSkubGVuZ3RoO1xyXG5cclxuICAgICAgfSkubGVuZ3RoO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEB0b2RvIGRvY3VtZW50YXRpb25cclxuICAgKi9cclxuICBfZ2V0UmVzb3VyY2VzQnlEYXRhKHN0b3JlZERhdGEsIGRhdGEpIHtcclxuICAgIGlmICghZGF0YSkgcmV0dXJuIFtdO1xyXG5cclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhzdG9yZWREYXRhKS5maWx0ZXIoKG9iamVjdFVSTCkgPT4ge1xyXG4gICAgICBsZXQgY3VycmVudE9iamVjdCA9IHN0b3JlZERhdGFbb2JqZWN0VVJMXS5oYXNPd25Qcm9wZXJ0eSgnZGF0YScpID8gc3RvcmVkRGF0YVtvYmplY3RVUkxdLmRhdGEgOiB7fTtcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGN1cnJlbnRPYmplY3QpLmZpbHRlcigoa2V5KSA9PiB7XHJcbiAgICAgICAgLy8gc2VhcmNoIG9uIHN0b3JlRGF0YU9iamVjdHMgZm9yIHNwZWNpZmljIGtleSBwcm92aWRlZCBmcm9tIGRhdGE7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGRhdGEpLmZpbHRlcihzZWFyY2hGb3IgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGtleSA9PT0gc2VhcmNoRm9yICYmIGN1cnJlbnRPYmplY3Rba2V5XSA9PT0gZGF0YVtzZWFyY2hGb3JdO1xyXG4gICAgICAgIH0pLmxlbmd0aDtcclxuXHJcbiAgICAgIH0pLmxlbmd0aDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBAdG9kbyBkb2N1bWVudGF0aW9uXHJcbiAgICovXHJcbiAgX2hhc1N1YnNjcmlwdGlvbihzdG9yZWREYXRhLCBzdWJzY3JpcHRpb24pIHtcclxuICAgIGlmICghc3RvcmVkRGF0YSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhzdG9yZWREYXRhKS5maWx0ZXIoKG9iamVjdFVSTCkgPT4ge1xyXG4gICAgICByZXR1cm4gc3RvcmVkRGF0YVtvYmplY3RVUkxdLnN1YnNjcmlwdGlvbnMuZmlsdGVyKChjdXJyZW50KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGN1cnJlbnQgPT09IHN1YnNjcmlwdGlvbjtcclxuICAgICAgfSkubGVuZ3RoO1xyXG4gICAgfSkubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxyXG4gICAqL1xyXG4gIF9zZWFyY2hPd25lcihzdG9yZWREYXRhLCBmcm9tKSB7XHJcbiAgICBpZiAoIXN0b3JlZERhdGEpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc3RvcmVkRGF0YSkuZmlsdGVyKChvYmplY3RVUkwpID0+IHtcclxuICAgICAgcmV0dXJuIHN0b3JlZERhdGFbb2JqZWN0VVJMXS5yZXBvcnRlciA9PT0gZnJvbTtcclxuICAgIH0pLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEB0b2RvIGRvY3VtZW50YXRpb25cclxuICAgKi9cclxuICBfY2hlY2tQcm90b3N0dWJSZXN1bWUoc3RvcmVkRGF0YU9iamVjdHMsIG1zZykge1xyXG5cclxuICAgIGlmICghc3RvcmVkRGF0YU9iamVjdHMpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAobXNnLmhhc093blByb3BlcnR5KCdib2R5JykgJiYgbXNnLmJvZHkuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykgJiYgbXNnLmJvZHkudmFsdWUuaGFzT3duUHJvcGVydHkoJ3JlcG9ydGVyJykpIHtcclxuICAgICAgbGV0IHJlcG9ydGVyID0gbXNnLmJvZHkudmFsdWUucmVwb3J0ZXI7XHJcbiAgICAgIGlmIChzdG9yZWREYXRhT2JqZWN0cy5oYXNPd25Qcm9wZXJ0eSgncmVwb3J0ZXJzJykpIHtcclxuICAgICAgICBsZXQgcmVwb3J0ZXJzU3RvcmVkID0gc3RvcmVkRGF0YU9iamVjdHMucmVwb3J0ZXJzO1xyXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhyZXBvcnRlcnNTdG9yZWQpLmZpbHRlcigob2JqZWN0VVJMKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVwb3J0ZXJzU3RvcmVkW29iamVjdFVSTF0ucmVwb3J0ZXIgPT09IHJlcG9ydGVyO1xyXG4gICAgICAgIH0pLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHN0b3JlZERhdGFPYmplY3RzLmhhc093blByb3BlcnR5KCdvYnNlcnZlcnMnKSkge1xyXG4gICAgICBsZXQgc3RvcmVkT2JzZXJ2ZXJzID0gc3RvcmVkRGF0YU9iamVjdHMub2JzZXJ2ZXJzO1xyXG4gICAgICBsZXQgZnJvbURvbWFpbiA9IGRpdmlkZVVSTChtc2cuZnJvbSkuZG9tYWluO1xyXG5cclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHN0b3JlZE9ic2VydmVycykuZmlsdGVyKChvYmplY3RVUkwpID0+IHtcclxuICAgICAgICBsZXQgc3Vic2NyaXB0aW9ucyA9IHN0b3JlZE9ic2VydmVyc1tvYmplY3RVUkxdLnN1YnNjcmlwdGlvbnM7XHJcbiAgICAgICAgbGV0IGhhc1N1YnNjcmlwdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHN1YnNjcmlwdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgIGxldCBzdWJzY3JpcHRpb25Eb21haW4gPSBkaXZpZGVVUkwoc3Vic2NyaXB0aW9uKS5kb21haW47XHJcbiAgICAgICAgICBpZiAoc3Vic2NyaXB0aW9uRG9tYWluID09IGZyb21Eb21haW4pIHtcclxuICAgICAgICAgICAgaGFzU3Vic2NyaXB0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoaGFzU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEB0b2RvIGRvY3VtZW50YXRpb25cclxuICAgKi9cclxuICBfaXNPd25lcih2YWx1ZSwgdXJsKSB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gdmFsdWUucmVwb3J0ZXIgPT09IHVybCA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxyXG4gICAqL1xyXG4gIF9pbnRlcnNlY3Rpb24oKSB7XHJcbiAgICBsZXQgYXJncyA9IEFycmF5LmZyb20oYXJndW1lbnRzKTtcclxuXHJcbiAgICBsZXQgcmVzdWx0ID0gYXJncy5yZWR1Y2UoKGZpcnN0LCBzZWNvbmQpID0+IHtcclxuICAgICAgcmV0dXJuIGZpcnN0LmNvbmNhdChzZWNvbmQpO1xyXG4gICAgfSkuZmlsdGVyKCh2YWx1ZSwgaW5kZXgsIHNlbGYpID0+IHtcclxuICAgICAgcmV0dXJuIHNlbGYuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4O1xyXG4gICAgfSk7XHJcbiAgICBsb2cubG9nKCdEYXRhT2JqZWN0c1N0b3JhZ2UuX2ludGVyc2VjdGlvbl0gUmVzdWx0IGFuIHVuaXF1ZSBhcnJheSBvZiBzdHJpbmdzOiAnLCByZXN1bHQpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxyXG4gICAqL1xyXG4gIF91cGRhdGVUb0FycmF5KHN0b3JlRGF0YU9iamVjdCwgcmVzb3VyY2UsIGtleSwgdmFsdWUpIHtcclxuICAgIGxvZy5sb2coJ1tEYXRhT2JqZWN0c1N0b3JhZ2VdIC0gX3VwZGF0ZVRvQXJyYXk6ICcsIHN0b3JlRGF0YU9iamVjdCwgcmVzb3VyY2UsIGtleSwgdmFsdWUpO1xyXG4gICAgaWYgKHN0b3JlRGF0YU9iamVjdFtyZXNvdXJjZV1ba2V5XS5pbmRleE9mKHZhbHVlKSA9PT0gLTEpIHN0b3JlRGF0YU9iamVjdFtyZXNvdXJjZV1ba2V5XS5wdXNoKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxyXG4gICAqL1xyXG4gIF9yZW1vdmVGcm9tQXJyYXkoc3RvcmVEYXRhT2JqZWN0LCByZXNvdXJjZSwga2V5LCB2YWx1ZSkge1xyXG4gICAgbGV0IGluZGV4T2ZWYWx1ZSA9IHN0b3JlRGF0YU9iamVjdFtyZXNvdXJjZV1ba2V5XS5pbmRleE9mKHZhbHVlKTtcclxuICAgIGlmIChpbmRleE9mVmFsdWUgPT09IC0xKSBzdG9yZURhdGFPYmplY3RbcmVzb3VyY2VdW2tleV0uc3BsaWNlKGluZGV4T2ZWYWx1ZSwgMSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEB0b2RvIGRvY3VtZW50YXRpb25cclxuICAgKi9cclxuICBfaGFzVmFsdWUob2JqLCBrZXksIHZhbHVlKSB7XHJcbiAgICByZXR1cm4gb2JqLmhhc093blByb3BlcnR5KGtleSkgJiYgb2JqW2tleV0gPT09IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBAdG9kbyBkb2N1bWVudGF0aW9uXHJcbiAgICovXHJcbiAgX2dldFR5cGVPZk9iamVjdChpc1JlcG9ydGVyKSB7XHJcbiAgICByZXR1cm4gaXNSZXBvcnRlciA/ICdyZXBvcnRlcnMnIDogJ29ic2VydmVycyc7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRGF0YU9iamVjdHNTdG9yYWdlO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3N0b3JlLW9iamVjdHMvRGF0YU9iamVjdHNTdG9yYWdlLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBOzs7OztBQUhBO0FBQ0E7QUFHQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQWNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFRQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///499\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(128);\n__webpack_require__(501);\nmodule.exports = __webpack_require__(13).Array.from;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9hcnJheS9mcm9tLmpzP2U3MzciXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5hcnJheS5mcm9tJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5BcnJheS5mcm9tO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2FycmF5L2Zyb20uanNcbi8vIG1vZHVsZSBpZCA9IDUwMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///500\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar ctx = __webpack_require__(65);\nvar $export = __webpack_require__(21);\nvar toObject = __webpack_require__(76);\nvar call = __webpack_require__(192);\nvar isArrayIter = __webpack_require__(193);\nvar toLength = __webpack_require__(134);\nvar createProperty = __webpack_require__(502);\nvar getIterFn = __webpack_require__(194);\n\n$export($export.S + $export.F * !__webpack_require__(199)(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5mcm9tLmpzP2FiMjIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuL19pdGVyLWNhbGwnKTtcbnZhciBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgZ2V0SXRlckZuID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbiAoaXRlcikgeyBBcnJheS5mcm9tKGl0ZXIpOyB9KSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjIuMSBBcnJheS5mcm9tKGFycmF5TGlrZSwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQpXG4gIGZyb206IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlIC8qICwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQgKi8pIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KGFycmF5TGlrZSk7XG4gICAgdmFyIEMgPSB0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nID8gdGhpcyA6IEFycmF5O1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgbWFwZm4gPSBhTGVuID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgaXRlckZuID0gZ2V0SXRlckZuKE8pO1xuICAgIHZhciBsZW5ndGgsIHJlc3VsdCwgc3RlcCwgaXRlcmF0b3I7XG4gICAgaWYgKG1hcHBpbmcpIG1hcGZuID0gY3R4KG1hcGZuLCBhTGVuID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCwgMik7XG4gICAgLy8gaWYgb2JqZWN0IGlzbid0IGl0ZXJhYmxlIG9yIGl0J3MgYXJyYXkgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIHNpbXBsZSBjYXNlXG4gICAgaWYgKGl0ZXJGbiAhPSB1bmRlZmluZWQgJiYgIShDID09IEFycmF5ICYmIGlzQXJyYXlJdGVyKGl0ZXJGbikpKSB7XG4gICAgICBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoTyksIHJlc3VsdCA9IG5ldyBDKCk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgaW5kZXgrKykge1xuICAgICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBtYXBwaW5nID8gY2FsbChpdGVyYXRvciwgbWFwZm4sIFtzdGVwLnZhbHVlLCBpbmRleF0sIHRydWUpIDogc3RlcC52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICAgIGZvciAocmVzdWx0ID0gbmV3IEMobGVuZ3RoKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5mcm9tLmpzXG4vLyBtb2R1bGUgaWQgPSA1MDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///501\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $defineProperty = __webpack_require__(40);\nvar createDesc = __webpack_require__(73);\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jcmVhdGUtcHJvcGVydHkuanM/N2MxNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBpbmRleCwgdmFsdWUpIHtcbiAgaWYgKGluZGV4IGluIG9iamVjdCkgJGRlZmluZVByb3BlcnR5LmYob2JqZWN0LCBpbmRleCwgY3JlYXRlRGVzYygwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtpbmRleF0gPSB2YWx1ZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3JlYXRlLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA1MDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///502\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(14);\n\nvar _PromiseQueue = __webpack_require__(504);\n\nvar _PromiseQueue2 = _interopRequireDefault(_PromiseQueue);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('HypertyResourcesStorage'); // Log System\n\nvar HypertyResourcesStorage = function () {\n function HypertyResourcesStorage(runtimeURL, bus, storageManager, hypertyResources) {\n (0, _classCallCheck3.default)(this, HypertyResourcesStorage);\n\n\n if (!storageManager) throw new Error('[HypertyResourcesStorage constructor] mandatory storageManager parameter missing');\n if (!runtimeURL) throw new Error('[HypertyResourcesStorage constructor] mandatory runtimeURL parameter missing');\n if (!bus) throw new Error('[HypertyResourcesStorage constructor] mandatory bus parameter missing');\n\n var _this = this;\n\n _this._bus = bus;\n\n _this._storageLimit = 0.9; // the save storageLimit;\n\n _this._url = runtimeURL + '/storage';\n\n _this._storageManager = storageManager;\n\n _this.promiseQueue = new _PromiseQueue2.default();\n\n _this._hypertyResources = hypertyResources;\n\n bus.addListener(_this._url, function (msg) {\n log.info('[HypertyResourcesStorage] Message RCV: ', msg);\n switch (msg.type) {\n case 'create':\n _this._onCreate(msg);break;\n case 'read':\n _this._onRead(msg);break;\n case 'delete':\n _this._onDelete(msg);break;\n }\n });\n }\n\n /**\r\n * check the available storage quota\r\n *\r\n * @memberof HypertyResourcesStorage\r\n */\n\n\n (0, _createClass3.default)(HypertyResourcesStorage, [{\n key: 'checkStorageQuota',\n value: function checkStorageQuota() {\n var _this2 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n if (_this2._availableQuota && _this2._usage) {\n return resolve((0, _utils.availableSpace)(_this2._usage, _this2._availableQuota));\n }\n\n if (navigator) {\n\n navigator.storage.estimate().then(function (estimate) {\n _this2._availableQuota = estimate.quota;\n _this2._usage = estimate.usage;\n resolve((0, _utils.availableSpace)(_this2._usage, _this2._availableQuota));\n }).catch(function (reason) {\n log.error('[HypertyResourcesStorage] CheckStorageQuota error: ', reason);\n reject(reason);\n });\n }\n });\n }\n\n /**\r\n * @description should save an HypertyResource contained in the body of a create message request;\r\n *\r\n * @param {string} message - message containing the hyperty resource to be stored\r\n */\n\n }, {\n key: '_onCreate',\n value: function _onCreate(message) {\n\n var _this = this;\n\n if (!message.body || !message.body.value) throw new Error('[HypertyResourcesStorage._onCreate] mandatory message body value missing: ', message);\n\n var content = message.body.value;\n var contentURL = content.contentURL;\n var resourceURL = '';\n\n if (!contentURL) {\n\n contentURL = [];\n resourceURL = _this._url + '/' + (0, _utils.generateGUID)();\n } else {\n var currentURL = contentURL[0];\n var resource = currentURL.substr(currentURL.lastIndexOf('/') + 1);\n resourceURL = _this._url + '/' + resource;\n }\n\n if (!_this._hypertyResources.hasOwnProperty(resourceURL)) {\n\n contentURL.push(resourceURL);\n content.contentURL = contentURL;\n }\n\n this._hypertyResources[resourceURL] = content;\n\n this.promiseQueue.add(this._toSave(resourceURL, message, content));\n }\n }, {\n key: '_toSave',\n value: function _toSave(resourceURL, message, content) {\n var _this3 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var error = function error(reason) {\n var response = {\n from: message.to,\n to: message.from,\n id: message.id,\n type: 'response',\n body: { value: resourceURL, code: 500, description: reason }\n };\n\n _this3._bus.postMessage(response);\n\n return reject(reason);\n };\n\n _this3.checkStorageQuota().then(function (result) {\n\n if (content.size > result.quota) {\n var msg = 'The storage do not have space to store that resource';\n error(msg);\n throw Error(msg);\n }\n\n var spaceAvailable = result.quota;\n var allocated = result.usage + content.size;\n\n if (result.percent >= _this3._storageLimit || allocated > spaceAvailable) {\n return _this3._getOlderResources(content.size);\n } else {\n return true;\n }\n }).then(function () {\n return _this3._storageManager.set(resourceURL, 1, content);\n }).then(function () {\n\n var response = {\n from: message.to,\n to: message.from,\n id: message.id,\n type: 'response',\n body: { value: resourceURL, code: 200 }\n };\n\n _this3._bus.postMessage(response);\n\n log.log('Success');\n\n return resolve();\n }).catch(error);\n });\n }\n }, {\n key: '_getOlderResources',\n value: function _getOlderResources(size) {\n var _this4 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this4._storageManager.get().then(function (result) {\n\n var resources = (0, _keys2.default)(result);\n\n var total = 0;\n var reduced = resources.sort(function (a, b) {\n return result[a].created < result[b].created;\n }).reduce(function (previousResource, currentResource) {\n var current = _this4._hypertyResources[currentResource];\n\n log.log('[HypertyResourcesStorage] _getOlderResources: ', total, size, currentResource, _this4._availableQuota);\n\n if (total <= size) {\n total += current.size;\n previousResource.push(currentResource);\n }\n\n return previousResource;\n }, []);\n\n var deleting = reduced.map(function (key) {\n return _this4._storageManager.delete(key);\n });\n\n _promise2.default.all(deleting).then(function () {\n resolve(true);\n }).catch(function (reason) {\n reject(reason);\n });\n });\n });\n }\n\n /**\r\n * @description should return an HypertyResource stored in the Storage Manager identified by the content url contained in the body of a read message request;\r\n *\r\n * @param {string} message - message containing the hyperty resource to be stored\r\n */\n\n }, {\n key: '_onRead',\n value: function _onRead(message) {\n\n var _this = this;\n\n if (!message.body || !message.body.resource) throw new Error('[HypertyResourcesStorage._onRead] mandatory message body resource missing: ', message);\n\n var contentUrl = message.body.resource;\n\n var response = {\n from: message.to,\n to: message.from,\n id: message.id,\n type: 'response',\n body: {}\n };\n\n // let content = _this._hypertyResources[contentUrl];\n\n log.info('[HypertyResourcesStorage._onRead] get resourceURL:', contentUrl);\n\n this._storageManager.get('resourceURL', contentUrl).then(function (content) {\n\n log.info('[HypertyResourcesStorage._onRead] found content:', content);\n\n if (content) {\n\n if (content.resourceType === 'file') {\n _this._onReadFile(response, content);\n } else {\n response.body.code = 200;\n response.body.p2p = true;\n response.body.value = content;\n _this._bus.postMessage(response);\n }\n } else {\n response.body.code = 404;\n response.body.desc = 'Content Not Found for ' + contentUrl;\n _this._bus.postMessage(response);\n }\n });\n\n //response.body.code = 404;\n\n //_this._hypertyResources[contentUrl] = message.body.value;\n\n }\n }, {\n key: '_onReadFile',\n value: function _onReadFile(response, resource) {\n var _this = this;\n\n var reader = new FileReader();\n\n reader.onload = function (theFile) {\n\n log.info('[FileHypertyResource.init] file loaded ', theFile);\n\n response.body.code = 200;\n response.body.p2p = true;\n response.body.value = (0, _utils.deepClone)(resource);\n response.body.value.content = theFile.target.result;\n _this._bus.postMessage(response);\n };\n\n if (resource.mimetype.includes('text/')) {\n reader.readAsText(resource.content);\n } else {\n var current = resource.content;\n\n var blob = void 0;\n if (Array.isArray(current)) {\n blob = new Blob(current, { type: resource.mimetype });\n } else {\n blob = new Blob([current], { type: resource.mimetype });\n }\n\n reader.readAsArrayBuffer(blob);\n }\n }\n\n /**\r\n * @description should delete an HypertyResource from the storage;\r\n *\r\n * @param {string} message - message containing the content URL of the hyperty resource to be deleted\r\n */\n\n }, {\n key: '_onDelete',\n value: function _onDelete(message) {\n\n var _this = this;\n\n if (!message.body) throw new Error('[HypertyResourcesStorage._onDelete] mandatory message body missing: ', message);\n\n if (message.body.resource) {\n delete _this._hypertyResources[message.body.resource];\n } else if (message.body.resources) {\n message.body.resources.forEach(function (resource) {\n delete _this._hypertyResources[resource];\n });\n } else {\n throw new Error('[HypertyResourcesStorage._onDelete] mandatory resource missing: ', message);\n }\n\n _this._storageManager.delete('resourceURL', message.body.resource).then(function () {\n var response = {\n from: message.to,\n to: message.from,\n id: message.id,\n type: 'response',\n body: { code: 200 }\n };\n\n _this._bus.postMessage(response);\n }).catch(function (reason) {\n var response = {\n from: message.to,\n to: message.from,\n id: message.id,\n type: 'response',\n body: { code: 400, description: reason }\n };\n\n _this._bus.postMessage(response);\n });\n }\n }]);\n return HypertyResourcesStorage;\n}();\n\nexports.default = HypertyResourcesStorage;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9oeXBlcnR5LXJlc291cmNlcy1zdG9yYWdlL0h5cGVydHlSZXNvdXJjZXNTdG9yYWdlLmpzP2Q0NjciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9nIFN5c3RlbVxyXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xyXG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2UnKTtcclxuXHJcbmltcG9ydCB7IGdlbmVyYXRlR1VJRCwgZGVlcENsb25lLCBhdmFpbGFibGVTcGFjZSB9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcclxuXHJcbmltcG9ydCBQcm9taXNlUXVldWUgZnJvbSAnLi4vdXRpbHMvUHJvbWlzZVF1ZXVlJztcclxuXHJcbmNsYXNzIEh5cGVydHlSZXNvdXJjZXNTdG9yYWdlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocnVudGltZVVSTCwgYnVzLCBzdG9yYWdlTWFuYWdlciwgaHlwZXJ0eVJlc291cmNlcykge1xyXG5cclxuICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHRocm93IG5ldyBFcnJvcignW0h5cGVydHlSZXNvdXJjZXNTdG9yYWdlIGNvbnN0cnVjdG9yXSBtYW5kYXRvcnkgc3RvcmFnZU1hbmFnZXIgcGFyYW1ldGVyIG1pc3NpbmcnKTtcclxuICAgIGlmICghcnVudGltZVVSTCkgdGhyb3cgbmV3IEVycm9yKCdbSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2UgY29uc3RydWN0b3JdIG1hbmRhdG9yeSBydW50aW1lVVJMIHBhcmFtZXRlciBtaXNzaW5nJyk7XHJcbiAgICBpZiAoIWJ1cykgdGhyb3cgbmV3IEVycm9yKCdbSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2UgY29uc3RydWN0b3JdIG1hbmRhdG9yeSBidXMgcGFyYW1ldGVyIG1pc3NpbmcnKTtcclxuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIF90aGlzLl9idXMgPSBidXM7XHJcblxyXG4gICAgX3RoaXMuX3N0b3JhZ2VMaW1pdCA9IDAuOTsgLy8gdGhlIHNhdmUgc3RvcmFnZUxpbWl0O1xyXG5cclxuICAgIF90aGlzLl91cmwgPSBydW50aW1lVVJMICsgJy9zdG9yYWdlJztcclxuXHJcbiAgICBfdGhpcy5fc3RvcmFnZU1hbmFnZXIgPSBzdG9yYWdlTWFuYWdlcjtcclxuXHJcbiAgICBfdGhpcy5wcm9taXNlUXVldWUgPSBuZXcgUHJvbWlzZVF1ZXVlKCk7XHJcblxyXG4gICAgX3RoaXMuX2h5cGVydHlSZXNvdXJjZXMgPSBoeXBlcnR5UmVzb3VyY2VzO1xyXG5cclxuICAgIGJ1cy5hZGRMaXN0ZW5lcihfdGhpcy5fdXJsLCAobXNnKSA9PiB7XHJcbiAgICAgIGxvZy5pbmZvKCdbSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2VdIE1lc3NhZ2UgUkNWOiAnLCBtc2cpO1xyXG4gICAgICBzd2l0Y2ggKG1zZy50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnY3JlYXRlJzogX3RoaXMuX29uQ3JlYXRlKG1zZyk7IGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3JlYWQnOiBfdGhpcy5fb25SZWFkKG1zZyk7IGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2RlbGV0ZSc6IF90aGlzLl9vbkRlbGV0ZShtc2cpOyBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogY2hlY2sgdGhlIGF2YWlsYWJsZSBzdG9yYWdlIHF1b3RhXHJcbiAgICpcclxuICAgKiBAbWVtYmVyb2YgSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2VcclxuICAgKi9cclxuICBjaGVja1N0b3JhZ2VRdW90YSgpIHtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgaWYgKHRoaXMuX2F2YWlsYWJsZVF1b3RhICYmIHRoaXMuX3VzYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoYXZhaWxhYmxlU3BhY2UodGhpcy5fdXNhZ2UsIHRoaXMuX2F2YWlsYWJsZVF1b3RhKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChuYXZpZ2F0b3IpIHtcclxuXHJcbiAgICAgICAgbmF2aWdhdG9yLnN0b3JhZ2UuZXN0aW1hdGUoKS50aGVuKChlc3RpbWF0ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fYXZhaWxhYmxlUXVvdGEgPSBlc3RpbWF0ZS5xdW90YTtcclxuICAgICAgICAgIHRoaXMuX3VzYWdlID0gZXN0aW1hdGUudXNhZ2U7XHJcbiAgICAgICAgICByZXNvbHZlKGF2YWlsYWJsZVNwYWNlKHRoaXMuX3VzYWdlLCB0aGlzLl9hdmFpbGFibGVRdW90YSkpO1xyXG5cclxuICAgICAgICB9KS5jYXRjaCgocmVhc29uKSA9PiB7XHJcbiAgICAgICAgICBsb2cuZXJyb3IoJ1tIeXBlcnR5UmVzb3VyY2VzU3RvcmFnZV0gQ2hlY2tTdG9yYWdlUXVvdGEgZXJyb3I6ICcsIHJlYXNvbik7XHJcbiAgICAgICAgICByZWplY3QocmVhc29uKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gc2hvdWxkIHNhdmUgYW4gSHlwZXJ0eVJlc291cmNlIGNvbnRhaW5lZCBpbiB0aGUgYm9keSBvZiBhIGNyZWF0ZSBtZXNzYWdlIHJlcXVlc3Q7XHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgaHlwZXJ0eSByZXNvdXJjZSB0byBiZSBzdG9yZWRcclxuICAgKi9cclxuXHJcbiAgX29uQ3JlYXRlKG1lc3NhZ2UpIHtcclxuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGlmICghbWVzc2FnZS5ib2R5IHx8ICFtZXNzYWdlLmJvZHkudmFsdWUpIHRocm93IG5ldyBFcnJvcignW0h5cGVydHlSZXNvdXJjZXNTdG9yYWdlLl9vbkNyZWF0ZV0gbWFuZGF0b3J5IG1lc3NhZ2UgYm9keSB2YWx1ZSBtaXNzaW5nOiAnLCBtZXNzYWdlKTtcclxuXHJcbiAgICBsZXQgY29udGVudCA9IG1lc3NhZ2UuYm9keS52YWx1ZTtcclxuICAgIGxldCBjb250ZW50VVJMID0gY29udGVudC5jb250ZW50VVJMO1xyXG4gICAgbGV0IHJlc291cmNlVVJMID0gJyc7XHJcblxyXG4gICAgaWYgKCFjb250ZW50VVJMKSB7XHJcblxyXG4gICAgICBjb250ZW50VVJMID0gW107XHJcbiAgICAgIHJlc291cmNlVVJMID0gX3RoaXMuX3VybCArICcvJyArIGdlbmVyYXRlR1VJRCgpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRVUkwgPSBjb250ZW50VVJMWzBdO1xyXG4gICAgICBjb25zdCByZXNvdXJjZSA9IGN1cnJlbnRVUkwuc3Vic3RyKGN1cnJlbnRVUkwubGFzdEluZGV4T2YoJy8nKSArIDEpO1xyXG4gICAgICByZXNvdXJjZVVSTCA9IF90aGlzLl91cmwgKyAnLycgKyByZXNvdXJjZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIV90aGlzLl9oeXBlcnR5UmVzb3VyY2VzLmhhc093blByb3BlcnR5KHJlc291cmNlVVJMKSkge1xyXG5cclxuICAgICAgY29udGVudFVSTC5wdXNoKHJlc291cmNlVVJMKTtcclxuICAgICAgY29udGVudC5jb250ZW50VVJMID0gY29udGVudFVSTDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5faHlwZXJ0eVJlc291cmNlc1tyZXNvdXJjZVVSTF0gPSBjb250ZW50O1xyXG5cclxuICAgIHRoaXMucHJvbWlzZVF1ZXVlLmFkZCh0aGlzLl90b1NhdmUocmVzb3VyY2VVUkwsIG1lc3NhZ2UsIGNvbnRlbnQpKTtcclxuXHJcbiAgfVxyXG5cclxuICBfdG9TYXZlKHJlc291cmNlVVJMLCBtZXNzYWdlLCBjb250ZW50KSB7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IGVycm9yID0gKHJlYXNvbikgPT4ge1xyXG4gICAgICAgIGxldCByZXNwb25zZSA9IHtcclxuICAgICAgICAgIGZyb206IG1lc3NhZ2UudG8sXHJcbiAgICAgICAgICB0bzogbWVzc2FnZS5mcm9tLFxyXG4gICAgICAgICAgaWQ6IG1lc3NhZ2UuaWQsXHJcbiAgICAgICAgICB0eXBlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgICAgYm9keTogeyB2YWx1ZTogcmVzb3VyY2VVUkwsIGNvZGU6IDUwMCwgZGVzY3JpcHRpb246IHJlYXNvbiB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHJlc3BvbnNlKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlamVjdChyZWFzb24pO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5jaGVja1N0b3JhZ2VRdW90YSgpLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgICBpZiAoY29udGVudC5zaXplID4gcmVzdWx0LnF1b3RhKSB7XHJcbiAgICAgICAgICBjb25zdCBtc2cgPSAnVGhlIHN0b3JhZ2UgZG8gbm90IGhhdmUgc3BhY2UgdG8gc3RvcmUgdGhhdCByZXNvdXJjZSc7XHJcbiAgICAgICAgICBlcnJvcihtc2cpO1xyXG4gICAgICAgICAgdGhyb3cgRXJyb3IobXNnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHNwYWNlQXZhaWxhYmxlID0gcmVzdWx0LnF1b3RhO1xyXG4gICAgICAgIGNvbnN0IGFsbG9jYXRlZCA9IHJlc3VsdC51c2FnZSArIGNvbnRlbnQuc2l6ZTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdC5wZXJjZW50ID49IHRoaXMuX3N0b3JhZ2VMaW1pdCB8fCBhbGxvY2F0ZWQgPiBzcGFjZUF2YWlsYWJsZSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9sZGVyUmVzb3VyY2VzKGNvbnRlbnQuc2l6ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zdG9yYWdlTWFuYWdlci5zZXQocmVzb3VyY2VVUkwsIDEsIGNvbnRlbnQpO1xyXG4gICAgICB9KS50aGVuKCgpID0+IHtcclxuXHJcbiAgICAgICAgbGV0IHJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgZnJvbTogbWVzc2FnZS50byxcclxuICAgICAgICAgIHRvOiBtZXNzYWdlLmZyb20sXHJcbiAgICAgICAgICBpZDogbWVzc2FnZS5pZCxcclxuICAgICAgICAgIHR5cGU6ICdyZXNwb25zZScsXHJcbiAgICAgICAgICBib2R5OiB7IHZhbHVlOiByZXNvdXJjZVVSTCwgY29kZTogMjAwIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLl9idXMucG9zdE1lc3NhZ2UocmVzcG9uc2UpO1xyXG5cclxuICAgICAgICBsb2cubG9nKCdTdWNjZXNzJyk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXNvbHZlKCk7XHJcblxyXG4gICAgICB9KS5jYXRjaChlcnJvcik7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgX2dldE9sZGVyUmVzb3VyY2VzKHNpemUpIHtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5fc3RvcmFnZU1hbmFnZXIuZ2V0KCkudGhlbigocmVzdWx0KSA9PiB7XHJcblxyXG4gICAgICAgIGNvbnN0IHJlc291cmNlcyA9IE9iamVjdC5rZXlzKHJlc3VsdCk7XHJcblxyXG4gICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgY29uc3QgcmVkdWNlZCA9IHJlc291cmNlcy5zb3J0KChhLCBiKSA9PiByZXN1bHRbYV0uY3JlYXRlZCA8IHJlc3VsdFtiXS5jcmVhdGVkKVxyXG4gICAgICAgICAgLnJlZHVjZSgocHJldmlvdXNSZXNvdXJjZSwgY3VycmVudFJlc291cmNlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9oeXBlcnR5UmVzb3VyY2VzW2N1cnJlbnRSZXNvdXJjZV07XHJcblxyXG4gICAgICAgICAgICBsb2cubG9nKCdbSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2VdIF9nZXRPbGRlclJlc291cmNlczogJywgdG90YWwsIHNpemUsIGN1cnJlbnRSZXNvdXJjZSwgdGhpcy5fYXZhaWxhYmxlUXVvdGEpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRvdGFsIDw9IHNpemUpIHtcclxuICAgICAgICAgICAgICB0b3RhbCArPSBjdXJyZW50LnNpemU7XHJcbiAgICAgICAgICAgICAgcHJldmlvdXNSZXNvdXJjZS5wdXNoKGN1cnJlbnRSZXNvdXJjZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1Jlc291cmNlO1xyXG5cclxuICAgICAgICAgIH0sIFtdKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGVsZXRpbmcgPSByZWR1Y2VkLm1hcChrZXkgPT4gdGhpcy5fc3RvcmFnZU1hbmFnZXIuZGVsZXRlKGtleSkpO1xyXG5cclxuICAgICAgICBQcm9taXNlLmFsbChkZWxldGluZykudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcclxuICAgICAgICAgIHJlamVjdChyZWFzb24pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIHNob3VsZCByZXR1cm4gYW4gSHlwZXJ0eVJlc291cmNlIHN0b3JlZCBpbiB0aGUgU3RvcmFnZSBNYW5hZ2VyIGlkZW50aWZpZWQgYnkgdGhlIGNvbnRlbnQgdXJsIGNvbnRhaW5lZCBpbiB0aGUgYm9keSBvZiBhIHJlYWQgbWVzc2FnZSByZXF1ZXN0O1xyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIGh5cGVydHkgcmVzb3VyY2UgdG8gYmUgc3RvcmVkXHJcbiAgICovXHJcblxyXG4gIF9vblJlYWQobWVzc2FnZSkge1xyXG5cclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgaWYgKCFtZXNzYWdlLmJvZHkgfHwgIW1lc3NhZ2UuYm9keS5yZXNvdXJjZSkgdGhyb3cgbmV3IEVycm9yKCdbSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2UuX29uUmVhZF0gbWFuZGF0b3J5IG1lc3NhZ2UgYm9keSByZXNvdXJjZSBtaXNzaW5nOiAnLCBtZXNzYWdlKTtcclxuXHJcbiAgICBsZXQgY29udGVudFVybCA9IG1lc3NhZ2UuYm9keS5yZXNvdXJjZTtcclxuXHJcbiAgICBsZXQgcmVzcG9uc2UgPSB7XHJcbiAgICAgIGZyb206IG1lc3NhZ2UudG8sXHJcbiAgICAgIHRvOiBtZXNzYWdlLmZyb20sXHJcbiAgICAgIGlkOiBtZXNzYWdlLmlkLFxyXG4gICAgICB0eXBlOiAncmVzcG9uc2UnLFxyXG4gICAgICBib2R5OiB7fVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBsZXQgY29udGVudCA9IF90aGlzLl9oeXBlcnR5UmVzb3VyY2VzW2NvbnRlbnRVcmxdO1xyXG5cclxuICAgIGxvZy5pbmZvKCdbSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2UuX29uUmVhZF0gZ2V0IHJlc291cmNlVVJMOicsIGNvbnRlbnRVcmwpO1xyXG5cclxuICAgIHRoaXMuX3N0b3JhZ2VNYW5hZ2VyLmdldCgncmVzb3VyY2VVUkwnLCBjb250ZW50VXJsKS50aGVuKChjb250ZW50KSA9PiB7XHJcblxyXG4gICAgICBsb2cuaW5mbygnW0h5cGVydHlSZXNvdXJjZXNTdG9yYWdlLl9vblJlYWRdIGZvdW5kIGNvbnRlbnQ6JywgY29udGVudCk7XHJcblxyXG4gICAgICBpZiAoY29udGVudCkge1xyXG5cclxuICAgICAgICBpZiAoY29udGVudC5yZXNvdXJjZVR5cGUgPT09ICdmaWxlJykge1xyXG4gICAgICAgICAgX3RoaXMuX29uUmVhZEZpbGUocmVzcG9uc2UsIGNvbnRlbnQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXNwb25zZS5ib2R5LmNvZGUgPSAyMDA7XHJcbiAgICAgICAgICByZXNwb25zZS5ib2R5LnAycCA9IHRydWU7XHJcbiAgICAgICAgICByZXNwb25zZS5ib2R5LnZhbHVlID0gY29udGVudDtcclxuICAgICAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzcG9uc2UuYm9keS5jb2RlID0gNDA0O1xyXG4gICAgICAgIHJlc3BvbnNlLmJvZHkuZGVzYyA9ICdDb250ZW50IE5vdCBGb3VuZCBmb3IgJyArIGNvbnRlbnRVcmw7XHJcbiAgICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShyZXNwb25zZSk7XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcblxyXG4gICAgLy9yZXNwb25zZS5ib2R5LmNvZGUgPSA0MDQ7XHJcblxyXG4gICAgLy9fdGhpcy5faHlwZXJ0eVJlc291cmNlc1tjb250ZW50VXJsXSA9IG1lc3NhZ2UuYm9keS52YWx1ZTtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgX29uUmVhZEZpbGUocmVzcG9uc2UsIHJlc291cmNlKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbih0aGVGaWxlKSB7XHJcblxyXG4gICAgICBsb2cuaW5mbygnW0ZpbGVIeXBlcnR5UmVzb3VyY2UuaW5pdF0gZmlsZSBsb2FkZWQgJywgdGhlRmlsZSk7XHJcblxyXG4gICAgICByZXNwb25zZS5ib2R5LmNvZGUgPSAyMDA7XHJcbiAgICAgIHJlc3BvbnNlLmJvZHkucDJwID0gdHJ1ZTtcclxuICAgICAgcmVzcG9uc2UuYm9keS52YWx1ZSA9IGRlZXBDbG9uZShyZXNvdXJjZSk7XHJcbiAgICAgIHJlc3BvbnNlLmJvZHkudmFsdWUuY29udGVudCA9IHRoZUZpbGUudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChyZXNvdXJjZS5taW1ldHlwZS5pbmNsdWRlcygndGV4dC8nKSkge1xyXG4gICAgICByZWFkZXIucmVhZEFzVGV4dChyZXNvdXJjZS5jb250ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSByZXNvdXJjZS5jb250ZW50O1xyXG5cclxuICAgICAgbGV0IGJsb2I7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQpKSB7XHJcbiAgICAgICAgYmxvYiA9IG5ldyBCbG9iKGN1cnJlbnQsIHsgdHlwZTogcmVzb3VyY2UubWltZXR5cGV9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBibG9iID0gbmV3IEJsb2IoW2N1cnJlbnRdLCB7IHR5cGU6IHJlc291cmNlLm1pbWV0eXBlfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBzaG91bGQgZGVsZXRlIGFuIEh5cGVydHlSZXNvdXJjZSBmcm9tIHRoZSBzdG9yYWdlO1xyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQgVVJMIG9mIHRoZSBoeXBlcnR5IHJlc291cmNlIHRvIGJlIGRlbGV0ZWRcclxuICAgKi9cclxuXHJcbiAgX29uRGVsZXRlKG1lc3NhZ2UpIHtcclxuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGlmICghbWVzc2FnZS5ib2R5KSB0aHJvdyBuZXcgRXJyb3IoJ1tIeXBlcnR5UmVzb3VyY2VzU3RvcmFnZS5fb25EZWxldGVdIG1hbmRhdG9yeSBtZXNzYWdlIGJvZHkgbWlzc2luZzogJywgbWVzc2FnZSk7XHJcblxyXG4gICAgaWYgKG1lc3NhZ2UuYm9keS5yZXNvdXJjZSkge1xyXG4gICAgICBkZWxldGUgX3RoaXMuX2h5cGVydHlSZXNvdXJjZXNbbWVzc2FnZS5ib2R5LnJlc291cmNlXTtcclxuICAgIH0gZWxzZSBpZiAobWVzc2FnZS5ib2R5LnJlc291cmNlcykge1xyXG4gICAgICBtZXNzYWdlLmJvZHkucmVzb3VyY2VzLmZvckVhY2goKHJlc291cmNlKSA9PiB7XHJcbiAgICAgICAgZGVsZXRlIF90aGlzLl9oeXBlcnR5UmVzb3VyY2VzW3Jlc291cmNlXTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tIeXBlcnR5UmVzb3VyY2VzU3RvcmFnZS5fb25EZWxldGVdIG1hbmRhdG9yeSByZXNvdXJjZSBtaXNzaW5nOiAnLCBtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBfdGhpcy5fc3RvcmFnZU1hbmFnZXIuZGVsZXRlKCdyZXNvdXJjZVVSTCcsIG1lc3NhZ2UuYm9keS5yZXNvdXJjZSkudGhlbigoKSA9PiB7XHJcbiAgICAgIGxldCByZXNwb25zZSA9IHtcclxuICAgICAgICBmcm9tOiBtZXNzYWdlLnRvLFxyXG4gICAgICAgIHRvOiBtZXNzYWdlLmZyb20sXHJcbiAgICAgICAgaWQ6IG1lc3NhZ2UuaWQsXHJcbiAgICAgICAgdHlwZTogJ3Jlc3BvbnNlJyxcclxuICAgICAgICBib2R5OiB7IGNvZGU6IDIwMCB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHJlc3BvbnNlKTtcclxuICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcclxuICAgICAgbGV0IHJlc3BvbnNlID0ge1xyXG4gICAgICAgIGZyb206IG1lc3NhZ2UudG8sXHJcbiAgICAgICAgdG86IG1lc3NhZ2UuZnJvbSxcclxuICAgICAgICBpZDogbWVzc2FnZS5pZCxcclxuICAgICAgICB0eXBlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgIGJvZHk6IHsgY29kZTogNDAwLCBkZXNjcmlwdGlvbjogcmVhc29uIH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEh5cGVydHlSZXNvdXJjZXNTdG9yYWdlO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2h5cGVydHktcmVzb3VyY2VzLXN0b3JhZ2UvSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2UuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBTEE7QUFDQTtBQUtBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFIQTtBQUtBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFLQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTs7O0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFDQTtBQU9BO0FBQ0E7QUFFQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///503\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = __webpack_require__(505);\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PromiseQueue = function () {\n\n // TODO: Improve this Queuing\n function PromiseQueue(concurrency) {\n (0, _classCallCheck3.default)(this, PromiseQueue);\n\n this.flushing = false;\n this.Promise = _promise2.default;\n this.concurrency = typeof concurrency !== 'number' ? 1 : concurrency;\n this.promises = [];\n this.queue = [];\n this.isProcessing = false;\n }\n\n (0, _createClass3.default)(PromiseQueue, [{\n key: 'done',\n value: function done(cb) {\n this.callback = cb;\n }\n }, {\n key: 'add',\n value: function add(promise) {\n var _this = this;\n\n this.queue.push(promise);\n\n if (!this.isProcessing) {\n return this.queue.reduce(function (promiseChain, currentTask) {\n return promiseChain.then(function (chainResults) {\n return currentTask.then(function (currentResult) {\n return [].concat((0, _toConsumableArray3.default)(chainResults), [currentResult]);\n });\n });\n }, _promise2.default.resolve([])).then(function (arrayOfResults) {\n // Do something with all results\n _this.isProcessing = false;\n });\n }\n }\n }]);\n return PromiseQueue;\n}();\n\nexports.default = PromiseQueue;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy91dGlscy9Qcm9taXNlUXVldWUuanM/MDViZCJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBQcm9taXNlUXVldWUge1xyXG5cclxuICAvLyBUT0RPOiBJbXByb3ZlIHRoaXMgUXVldWluZ1xyXG4gIGNvbnN0cnVjdG9yKGNvbmN1cnJlbmN5KSB7XHJcbiAgICB0aGlzLmZsdXNoaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLlByb21pc2UgPSBQcm9taXNlO1xyXG4gICAgdGhpcy5jb25jdXJyZW5jeSA9ICh0eXBlb2YgY29uY3VycmVuY3kgIT09ICdudW1iZXInKSA/IDEgOiBjb25jdXJyZW5jeTtcclxuICAgIHRoaXMucHJvbWlzZXMgPSBbXTtcclxuICAgIHRoaXMucXVldWUgPSBbXTtcclxuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBkb25lKGNiKSB7XHJcbiAgICB0aGlzLmNhbGxiYWNrID0gY2I7XHJcbiAgfVxyXG5cclxuICBhZGQocHJvbWlzZSkge1xyXG4gICAgdGhpcy5xdWV1ZS5wdXNoKHByb21pc2UpO1xyXG5cclxuICAgIGlmICghdGhpcy5pc1Byb2Nlc3NpbmcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucXVldWUucmVkdWNlKChwcm9taXNlQ2hhaW4sIGN1cnJlbnRUYXNrKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHByb21pc2VDaGFpbi50aGVuKGNoYWluUmVzdWx0cyA9PiBjdXJyZW50VGFzay50aGVuKGN1cnJlbnRSZXN1bHQgPT4gWy4uLmNoYWluUmVzdWx0cywgY3VycmVudFJlc3VsdF0pKTtcclxuICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKFtdKSkudGhlbihhcnJheU9mUmVzdWx0cyA9PiB7XHJcbiAgICAgICAgLy8gRG8gc29tZXRoaW5nIHdpdGggYWxsIHJlc3VsdHNcclxuICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUHJvbWlzZVF1ZXVlO1xyXG5cclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy91dGlscy9Qcm9taXNlUXVldWUuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///504\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nexports.__esModule = true;\n\nvar _from = __webpack_require__(210);\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcz8xYWVlIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2Zyb20gPSByZXF1aXJlKFwiLi4vY29yZS1qcy9hcnJheS9mcm9tXCIpO1xuXG52YXIgX2Zyb20yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZnJvbSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycjJbaV0gPSBhcnJbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycjI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICgwLCBfZnJvbTIuZGVmYXVsdCkoYXJyKTtcbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDUwNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///505\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _values = __webpack_require__(211);\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(14);\n\nvar _schemaValidation = __webpack_require__(510);\n\nvar _AddressAllocation = __webpack_require__(99);\n\nvar _AddressAllocation2 = _interopRequireDefault(_AddressAllocation);\n\nvar _ReporterObject = __webpack_require__(515);\n\nvar _ReporterObject2 = _interopRequireDefault(_ReporterObject);\n\nvar _ObserverObject = __webpack_require__(516);\n\nvar _ObserverObject2 = _interopRequireDefault(_ObserverObject);\n\nvar _CryptoManager = __webpack_require__(100);\n\nvar cryptoManager = _interopRequireWildcard(_CryptoManager);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('SyncherManager'); /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\n// Log System\n\n/**\r\n * @author micaelpedrosa@gmail.com\r\n * Core Syncronization system.\r\n */\nvar SyncherManager = function () {\n /* private\r\n _url: URL\r\n _bus: MiniBus\r\n _registry: Registry\r\n _allocator: AddressAllocation\r\n _reporters: { ObjectURL: ReporterObject }\r\n _observers: { ObjectURL: ObserverObject }\r\n */\n\n function SyncherManager(runtimeURL, bus, registry, catalog, storageManager, allocator, storeDataObjects, identityModule) {\n (0, _classCallCheck3.default)(this, SyncherManager);\n\n if (!runtimeURL) throw new Error('[Syncher Manager] - needs the runtimeURL parameter');\n if (!bus) throw new Error('[Syncher Manager] - needs the MessageBus instance');\n if (!registry) throw new Error('[Syncher Manager] - needs the Registry instance');\n if (!catalog) throw new Error('[Syncher Manager] - needs the RuntimeCatalogue instance');\n if (!storageManager) throw new Error('[Syncher Manager] - need the storageManager instance');\n\n var _this = this;\n\n _this._bus = bus;\n _this._registry = registry;\n _this._catalog = catalog;\n _this._storageManager = storageManager;\n _this._identityModule = identityModule;\n\n //TODO: these should be saved in persistence engine?\n _this.runtimeURL = runtimeURL;\n _this._url = runtimeURL + '/sm';\n _this._objectURL = runtimeURL + '/object-allocation';\n\n _this._reporters = {};\n _this._observers = {};\n\n _this._dataObjectsStorage = storeDataObjects;\n console.log('[NOTSAVING] storeDataObjects', storeDataObjects);\n //TODO: this should not be hardcoded!\n _this._domain = (0, _utils.divideURL)(runtimeURL).domain;\n\n if (allocator) {\n _this._allocator = allocator;\n } else {\n _this._allocator = _AddressAllocation2.default.instance;\n }\n\n log.log('[SyncherManager - AddressAllocation] - ', _this._allocator);\n\n bus.addListener(_this._url, function (msg) {\n log.info('[SyncherManager] RCV: ', msg);\n switch (msg.type) {\n case 'create':\n _this._onCreate(msg);break;\n case 'delete':\n _this._onDelete(msg);break;\n case 'subscribe':\n _this._onLocalSubscribe(msg);break;\n case 'unsubscribe':\n _this._onLocalUnSubscribe(msg);break;\n }\n });\n }\n\n (0, _createClass3.default)(SyncherManager, [{\n key: '_onCreate',\n\n\n //FLOW-IN: message received from Syncher -> create\n value: function _onCreate(msg) {\n var _this2 = this;\n\n var from = msg.from;\n var to = msg.to;\n\n // check if message is to save new childrenObjects in the local storage\n // TODO: check if message is to store new child in the local storage and call storeChild. How to distinguish from others?\n\n //debugger;\n if (msg.body.attribute) {\n this._storeChildrens(msg);\n } else {\n\n if (!msg.body.hasOwnProperty('resume') || msg.body.hasOwnProperty('resume') && !msg.body.resume) {\n\n // check if this is an invitation message\n if (msg.body.authorise) {\n this._authorise(msg);\n log.info('[SyncherManager.onCreate - invite observers]', msg);\n } else {\n // this is to create a new data object\n log.info('[SyncherManager.onCreate - Create New Object]', msg);\n this._newCreate(msg);\n }\n } else {\n\n // If from the hyperty side, call the resumeReporter we will have resume = true'\n // so we will create an resumed object and will try to resume the object previously saved;\n this._dataObjectsStorage.getResourcesByCriteria(msg, true).then(function (result) {\n\n log.info('[SyncherManager - Create Resumed] - ResourcesByCriteria | Message: ', msg, ' result: ', result);\n\n if (result && (0, _keys2.default)(result).length > 0) {\n\n var listOfReporters = [];\n\n (0, _keys2.default)(result).forEach(function (objURL) {\n listOfReporters.push(_this2._resumeCreate(msg, result[objURL]));\n });\n\n _promise2.default.all(listOfReporters).then(function (resumedReporters) {\n log.log('[SyncherManager - Create Resumed]', resumedReporters);\n\n // TODO: shoud send the information if some object was fail;\n var successfullyResumed = (0, _values2.default)(resumedReporters).filter(function (reporter) {\n return reporter !== false;\n });\n\n log.info('[SyncherManager.onCreate] returning resumed objects : ', successfullyResumed);\n\n //FLOW-OUT: message response to Syncher -> create resume\n _this2._bus.postMessage({\n id: msg.id, type: 'response', from: to, to: from,\n body: { code: 200, value: successfullyResumed }\n });\n });\n } else {\n //forward to hyperty:\n var reply = {};\n reply.id = msg.id;\n reply.from = msg.to;\n reply.to = msg.from;\n reply.type = 'response';\n reply.body = {\n code: 404,\n desc: 'No data objects reporters to be resumed'\n };\n _this2._bus.postMessage(reply);\n }\n });\n }\n }\n }\n }, {\n key: '_storeChildrens',\n value: function _storeChildrens(msg) {\n var _this = this;\n\n var resource = msg.body.resource;\n var attribute = msg.body.attribute;\n\n if (attribute === 'childrenObjects') {\n _this._dataObjectsStorage.saveChildrens(false, resource, undefined, msg.body.value);\n } else {\n _this._dataObjectsStorage.saveChildrens(true, resource, attribute, msg.body.value);\n }\n }\n }, {\n key: '_newCreate',\n value: function _newCreate(msg) {\n var _this3 = this;\n\n var _this = this;\n\n var owner = msg.from;\n var domain = (0, _utils.divideURL)(msg.from).domain;\n\n // if reporter is in a Interworking Protostub the runtime domain backend services will be used\n if (_this._registry.isInterworkingProtoStub(msg.from)) {\n domain = (0, _utils.divideURL)(_this.runtimeURL).domain;\n }\n\n // Process invitation message to observers\n\n /*if (msg.body.authorise) {\r\n _this._authorise(msg);\r\n return;\r\n }*/\n\n //get schema from catalogue and parse -> (scheme, children)\n _this._catalog.getDataSchemaDescriptor(msg.body.schema).then(function (descriptor) {\n\n var properties = descriptor.sourcePackage.sourceCode.properties;\n var scheme = properties.scheme ? properties.scheme.constant : 'resource';\n var childrens = properties.children ? properties.children.constant : [];\n\n // Do schema validation\n // TODO: check if is need to handle with the result of validation\n (0, _schemaValidation.schemaValidation)(scheme, descriptor, msg.body.value);\n\n var objectInfo = {\n name: msg.body.value.name,\n schema: msg.body.value.schema,\n reporter: msg.body.value.reporter,\n resources: msg.body.value.resources\n };\n\n // should resuse data object url if it passed\n var reuseDataObject = msg.body.value.resource;\n var numOfAddress = 1;\n\n //debugger;\n //request address allocation of a new object from the msg-node\n //_this._allocator.create(domain, numOfAddress, objectInfo, scheme, reuseDataObject).then((allocated) => {\n _this._allocator.create(domain, numOfAddress, objectInfo, scheme, reuseDataObject).then(function (allocated) {\n\n var objectRegistration = (0, _utils.deepClone)(msg.body.value);\n objectRegistration.url = allocated.address[0];\n objectRegistration.authorise = msg.body.authorise;\n objectRegistration.childrens = childrens;\n\n //objectRegistration.expires = 30;//TODO: get it from data object configuration description when present\n\n delete objectRegistration.data;\n\n log.log('[SyncherManager._newCreate] ALLOCATOR CREATE:', allocated);\n\n var subscriptionURL = objectRegistration.url + '/subscription';\n\n log.log('[SyncherManager._newCreate] Subscription URL', subscriptionURL);\n\n //To register the dataObject in the runtimeRegistry\n log.info('[SyncherManager._newCreate] Register Object: ', objectRegistration);\n\n //_this._registry.registerDataObject(msg.body.value.name, msg.body.value.schema, objURL, msg.body.value.reporter, msg.body.value.resources, allocated, msg.body.authorise).then((resolve) => {\n _this._registry.registerDataObject(objectRegistration).then(function (registeredObject) {\n log.log('[SyncherManager._newCreate] DataObject successfully registered', registeredObject);\n\n //all OK -> create reporter and register listeners\n var reporter = void 0;\n\n if (!_this3._reporters[objectRegistration.url]) {\n reporter = new _ReporterObject2.default(_this, owner, objectRegistration.url);\n } else {\n reporter = _this3._reporters[objectRegistration.url];\n }\n\n log.log('[SyncherManager - new Create] - ', msg);\n\n // Store for each reporter hyperty the dataObject\n var userURL = void 0;\n // let interworking = false;\n\n if (msg.body.hasOwnProperty('identity') && msg.body.identity.userProfile && msg.body.identity.userProfile.userURL) {\n userURL = msg.body.identity.userProfile.userURL;\n\n // if (!userURL.includes('user://')) {\n // interworking = true;\n // }\n } else {\n userURL = _this._registry.getHypertyOwner(msg.from);\n\n // if (!userURL) {\n // interworking = true;\n // }\n }\n\n // should we use the msg.body.value instead?\n\n var metadata = (0, _utils.deepClone)(objectRegistration);\n metadata.subscriberUser = userURL;\n metadata.isReporter = true;\n\n // Store the dataObject information\n\n //if (!interworking) {\n\n _this._dataObjectsStorage.set(metadata);\n\n if (msg.body.hasOwnProperty('store') && msg.body.store) {\n reporter.isToSaveData = true;\n _this._dataObjectsStorage.update(true, objectRegistration.url, 'isToSaveData', true);\n\n if (msg.body.value.data) {\n _this._dataObjectsStorage.saveData(true, objectRegistration.url, null, msg.body.value.data);\n }\n }\n\n //}\n\n // adding listeners to forward to reporter\n\n reporter.forwardSubscribe([objectRegistration.url, subscriptionURL]).then(function () {\n reporter.addChildrens(childrens).then(function () {\n _this._reporters[objectRegistration.url] = reporter;\n\n var responseMsg = {\n id: msg.id, type: 'response', from: msg.to, to: owner,\n body: { code: 200, resource: objectRegistration.url, childrenResources: childrens }\n };\n\n //FLOW-OUT: message response to Syncher -> create\n _this._bus.postMessage(responseMsg);\n });\n });\n }, function (error) {\n log.error(error);\n });\n });\n }).catch(function (reason) {\n //FLOW-OUT: error message response to Syncher -> create\n var responseMsg = {\n id: msg.id, type: 'response', from: msg.to, to: owner,\n body: { code: 500, desc: reason }\n };\n\n _this._bus.postMessage(responseMsg);\n });\n }\n }, {\n key: '_resumeCreate',\n value: function _resumeCreate(msg, storedObject) {\n var _this4 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve) {\n\n var owner = msg.from;\n var schema = storedObject.schema;\n var resource = storedObject.url;\n var initialData = storedObject.data;\n\n log.log('[SyncherManager] - resume create', msg, storedObject);\n\n //get schema from catalogue and parse -> (scheme, children)\n _this._catalog.getDataSchemaDescriptor(schema).then(function (descriptor) {\n\n var properties = descriptor.sourcePackage.sourceCode.properties;\n var scheme = properties.scheme ? properties.scheme.constant : 'resource';\n var childrens = properties.children ? properties.children.constant : [];\n\n log.log('[SyncherManager] - getDataSchemaDescriptor: ', descriptor, childrens);\n\n // Do schema validation\n // TODO: check if is need to handle with the result of validation\n (0, _schemaValidation.schemaValidation)(scheme, descriptor, initialData);\n\n var objectRegistration = (0, _utils.deepClone)(msg.body.value);\n objectRegistration.url = storedObject.url;\n objectRegistration.expires = storedObject.expires;\n\n delete objectRegistration.data;\n\n //all OK -> create reporter and register listeners\n var reporter = void 0;\n\n if (!_this4._reporters[resource]) {\n reporter = new _ReporterObject2.default(_this, owner, resource);\n } else {\n reporter = _this4._reporters[resource];\n }\n\n reporter.isToSaveData = storedObject.isToSaveData;\n\n reporter.forwardSubscribe([storedObject.url]).then(function () {\n reporter.addChildrens(childrens).then(function () {\n\n reporter.resumeSubscriptions(storedObject.subscriptions);\n\n _this._reporters[resource] = reporter;\n\n log.info('[SyncherManager - resume create] - resolved resumed: ', storedObject);\n\n return _this._decryptChildrens(storedObject, childrens);\n }).then(function (decryptedObject) {\n\n // log.log('result of previous promise');\n resolve(decryptedObject);\n }).catch(function (reason) {\n log.error('[SyncherManager - resume create] - fail on addChildrens: ', reason);\n resolve(false);\n });\n });\n log.info('[SyncherManager._resumeCreate] Register Object: ', objectRegistration);\n _this._registry.registerDataObject(objectRegistration).then(function (resolve) {\n log.log('[SyncherManager._resumeCreate] DataObject registration successfully updated', resolve);\n });\n\n // resolve();\n }).catch(function (reason) {\n log.error('[SyncherManager - resume create] - fail on getDataSchemaDescriptor: ', reason);\n resolve(false);\n });\n });\n }\n\n // to decrypt DataChildObjects if they are encrypted\n\n }, {\n key: '_decryptChildrens',\n value: function _decryptChildrens(storedObject, childrens) {\n var _this = this;\n return new _promise2.default(function (resolve) {\n\n if (!childrens) {\n resolve(storedObject);\n } else {\n var childrensObj = (0, _keys2.default)(storedObject.childrenObjects);\n\n if (childrensObj.length === 0) {\n resolve(storedObject);\n }\n\n childrens.forEach(function (children) {\n\n var childObjects = storedObject.childrenObjects[children];\n\n log.log('[SyncherManager._decryptChildrens] dataObjectChilds to decrypt ', childObjects);\n\n var listOfDecryptedObjects = [];\n\n (0, _keys2.default)(childObjects).forEach(function (childId) {\n var child = childObjects[childId];\n var owner = childId.split('#')[0];\n\n if (typeof child.value === 'string') {\n\n log.log('[SyncherManager._decryptChildrens] createdBy ', owner, ' object: ', child.value);\n\n var decrypted = cryptoManager.default.decryptDataObject(JSON.parse(child.value), storedObject.url);\n\n listOfDecryptedObjects.push(decrypted);\n }\n });\n\n _promise2.default.all(listOfDecryptedObjects).then(function (decryptedObjects) {\n\n log.log('[SyncherManager._decryptChildrens] returning decrypted ', decryptedObjects);\n\n decryptedObjects.forEach(function (decryptedObject) {\n var childId = decryptedObject.value.url;\n storedObject.childrenObjects[children][childId].value = decryptedObject.value;\n });\n\n log.log('[SyncherManager._decryptChildrens] storedObject ', storedObject);\n\n resolve(storedObject);\n }).catch(function (reason) {\n log.warn('[SyncherManager._decryptChildrens] failed : ', reason);\n });\n });\n }\n });\n }\n\n // Process invitations to observers\n\n }, {\n key: '_authorise',\n value: function _authorise(msg) {\n var _this = this;\n\n if (!msg.body.resource) {\n throw new Error('[SyncherManager._authorise] invitation request without data object url:', msg);\n }\n\n var objSubscriptorURL = msg.body.resource + '/subscription';\n var p2p = msg.body.p2p ? msg.body.p2p : false;\n\n log.log('[SyncherManager - authorise] - ', msg);\n\n if (msg.body.authorise) {\n msg.body.authorise.forEach(function (hypertyURL) {\n //FLOW-OUT: send invites to list of remote Syncher -> _onRemoteCreate -> onNotification\n\n _this._bus.postMessage({\n type: 'create', from: objSubscriptorURL, to: hypertyURL,\n body: { p2p: p2p, identity: msg.body.identity, source: msg.from, value: msg.body.value, schema: msg.body.schema }\n }, function (reply) {\n // lets forward the invitation response\n var response = {\n from: msg.to,\n to: msg.from,\n id: msg.id,\n type: reply.type,\n body: reply.body\n };\n\n _this._bus.postMessage(response);\n });\n });\n }\n }\n\n //FLOW-IN: message received from DataObjectReporter -> delete\n\n }, {\n key: '_onDelete',\n value: function _onDelete(msg) {\n var _this = this;\n\n var objURL = msg.body.resource;\n\n var object = _this._reporters[objURL];\n if (object) {\n //TODO: is there any policy verification before delete?\n\n object.delete();\n\n this._dataObjectsStorage.deleteResource(objURL).then(function (result) {\n\n log.log('[SyncherManager - onDelete] - deleteResource: ', result);\n\n _this._registry.unregisterDataObject(objURL);\n\n //TODO: unregister object?\n _this._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: msg.from,\n body: { code: 200 }\n });\n });\n }\n }\n\n //FLOW-IN: message received from local Syncher -> subscribe\n\n }, {\n key: '_onLocalSubscribe',\n value: function _onLocalSubscribe(msg) {\n var _this5 = this;\n\n //debugger;\n this._dataObjectsStorage.getResourcesByCriteria(msg, false).then(function (result) {\n\n log.info('[SyncherManager - Subscribe] - ResourcesByCriteria | Message: ', msg, ' result: ', result);\n\n if (result && (0, _keys2.default)(result).length > 0) {\n\n var listOfObservers = [];\n\n // TODO: should reuse the storaged information\n (0, _keys2.default)(result).forEach(function (objURL) {\n log.log('[SyncherManager - resume Subscribe] - reuse current object url: ', result[objURL]);\n listOfObservers.push(_this5._resumeSubscription(msg, result[objURL]));\n });\n\n _promise2.default.all(listOfObservers).then(function (resumedObservers) {\n log.log('[SyncherManager - Observers Resumed]', resumedObservers);\n\n // TODO: shoud send the information if some object was fail;\n var successfullyResumed = (0, _values2.default)(resumedObservers).filter(function (observer) {\n return observer !== false;\n });\n\n //FLOW-OUT: message response to Syncher -> create\n _this5._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: msg.from,\n body: { code: 200, value: successfullyResumed }\n });\n });\n } else if (msg.body.schema && msg.body.resource) {\n log.log('[SyncherManager.onLocalSubscribe - new Subscribe] - ', msg.body.schema, msg.body.resource);\n _this5._newSubscription(msg);\n } else {\n //forward to hyperty:\n var reply = {};\n reply.id = msg.id;\n reply.from = msg.to;\n reply.to = msg.from;\n reply.type = 'response';\n reply.body = {\n code: 404,\n desc: 'No data objects observers to be resumed'\n };\n _this5._bus.postMessage(reply);\n }\n });\n }\n }, {\n key: '_newSubscription',\n value: function _newSubscription(msg) {\n var _this6 = this;\n\n var _this = this;\n\n var objURL = msg.body.resource;\n\n var hypertyURL = msg.from;\n var domain = (0, _utils.divideURL)(objURL).domain;\n var objURLSubscription = objURL + '/subscription';\n\n var childBaseURL = objURL + '/children/';\n\n //get schema from catalogue and parse -> (children)\n _this._catalog.getDataSchemaDescriptor(msg.body.schema).then(function (descriptor) {\n var properties = descriptor.sourcePackage.sourceCode.properties;\n var childrens = properties.children ? properties.children.constant : [];\n\n var subscriptions = [];\n subscriptions.push(objURL + '/changes');\n\n childrens.forEach(function (child) {\n return subscriptions.push(childBaseURL + child);\n });\n\n //children addresses\n\n //FLOW-OUT: subscribe message to the msg-node, registering listeners on the broker\n var nodeSubscribeMsg = {\n type: 'subscribe', from: _this._url, to: 'domain://msg-node.' + domain + '/sm',\n body: { identity: msg.body.identity, resources: subscriptions, source: hypertyURL }\n };\n\n //subscribe in msg-node\n _this._bus.postMessage(nodeSubscribeMsg, function (reply) {\n log.log('node-subscribe-response(observer): ', reply);\n console.log('REUSETEST SyncherManager - node-subscribe-response(observer): ', reply);\n if (reply.body.code === 200) {\n\n //FLOW-OUT: reply with provisional response\n _this._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: hypertyURL,\n body: { code: 100, childrenResources: childrens, schema: msg.body.schema, resource: msg.body.resource }\n });\n\n //FLOW-OUT: subscribe message to remote ReporterObject -> _onRemoteSubscribe\n var objSubscribeMsg = {\n type: 'subscribe', from: _this._url, to: objURLSubscription,\n body: { identity: nodeSubscribeMsg.body.identity, subscriber: hypertyURL }\n };\n\n //TODO: For Further Study\n if (msg.body.hasOwnProperty('mutual')) objSubscribeMsg.body.mutual = msg.body.mutual;\n log.log('[SyncherManager._newSubscription]', objSubscribeMsg, msg);\n console.log('REUSETEST SyncherManager - [SyncherManager._newSubscription]', objSubscribeMsg, msg);\n //subscribe to reporter SM\n _this._bus.postMessage(objSubscribeMsg, function (reply) {\n log.log('reporter-subscribe-response-new: ', reply);\n console.log('REUSETEST SyncherManager - reporter-subscribe-response-new: ', reply);\n if (reply.body.code === 200) {\n\n log.log('[SyncherManager._newSubscription] - observers: ', _this._observers, objURL, _this._observers[objURL]);\n console.log('REUSETEST SyncherManager - 200 code[SyncherManager._newSubscription] - observers: ', _this._observers, objURL, _this._observers[objURL]);\n var observer = _this._observers[objURL];\n if (!observer) {\n observer = new _ObserverObject2.default(_this, objURL, childrens);\n log.log('[SyncherManager._newSubscription] - observers: create new ObserverObject: ', observer);\n _this._observers[objURL] = observer;\n\n // register new hyperty subscription\n observer.addSubscription(hypertyURL);\n\n // add childrens and listeners to save data if necessary\n observer.addChildrens(childrens);\n }\n\n var interworking = false;\n\n //debugger;\n\n // Store for each reporter hyperty the dataObject\n var userURL = void 0;\n if (msg.body.hasOwnProperty('identity') && msg.body.identity.userProfile && msg.body.identity.userProfile.userURL) {\n userURL = msg.body.identity.userProfile.userURL;\n if (!userURL.includes('user://')) {\n interworking = true;\n }\n } else {\n userURL = _this._registry.getHypertyOwner(msg.from);\n if (!userURL) interworking = true;\n }\n\n var metadata = (0, _utils.deepClone)(reply.body.value);\n\n // let childrenObjects = metadata.childrenObjects || {};\n\n delete metadata.data;\n delete metadata.childrenObjects;\n\n metadata.childrens = childrens;\n metadata.subscriberUser = userURL;\n metadata.isReporter = false;\n metadata.subscriberHyperty = hypertyURL;\n\n if (!interworking) {\n //_this._dataObjectsStorage.set(objURL, false, msg.body.schema, 'on', reply.body.owner, hypertyURL, childrens, userURL);\n _this._dataObjectsStorage.set(metadata);\n if (metadata.hasOwnProperty('store') && metadata.store || metadata.hasOwnProperty('isToSaveData') && metadata.isToSaveData) {\n observer.isToSaveData = true;\n _this._dataObjectsStorage.update(false, objURL, 'isToSaveData', true);\n _this._dataObjectsStorage.saveData(false, objURL, null, reply.body.value.data);\n }\n }\n\n //forward to hyperty:\n reply.id = msg.id;\n reply.from = _this._url;\n reply.to = hypertyURL;\n reply.body.schema = msg.body.schema;\n reply.body.resource = msg.body.resource;\n\n //TODO: For Further Study\n if (msg.body.hasOwnProperty('mutual')) reply.body.mutual = msg.body.mutual;\n log.log('[subscribe] - new subscription: ', msg, reply, observer);\n\n _this6._bus.postMessage(reply);\n }\n });\n } else {\n //listener rejected\n _this._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: hypertyURL,\n body: reply.body\n });\n }\n });\n });\n }\n }, {\n key: '_resumeSubscription',\n value: function _resumeSubscription(msg, storedObject) {\n var _this7 = this;\n\n return new _promise2.default(function (resolve) {\n\n var objURL = storedObject.url;\n var schema = storedObject.schema;\n\n var hypertyURL = msg.from;\n\n // let objURLSubscription = objURL + '/subscription';\n\n var childBaseURL = objURL + '/children/';\n\n log.log('[SyncherManager - ReuseSubscription] - objURL: ', objURL, ' - schema:', schema);\n\n //get schema from catalogue and parse -> (children)\n // TODO: remove this since children resources should be available in the DataObjectsStorage\n _this7._catalog.getDataSchemaDescriptor(schema).then(function (descriptor) {\n var properties = descriptor.sourcePackage.sourceCode.properties;\n var childrens = properties.children ? properties.children.constant : [];\n\n //children addresses\n var subscriptions = [];\n subscriptions.push(objURL + '/changes');\n childrens.forEach(function (child) {\n return subscriptions.push(childBaseURL + child);\n });\n\n //FLOW-OUT: reply with provisional response\n _this7._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: hypertyURL,\n body: { code: 100, childrenResources: childrens, schema: schema, resource: objURL }\n });\n\n //FLOW-OUT: subscribe message to remote ReporterObject -> _onRemoteSubscribe\n /*let objSubscribeMsg = {\r\n type: 'subscribe', from: this._url, to: objURLSubscription,\r\n body: { subscriber: hypertyURL, identity: msg.body.identity }\r\n };\r\n //subscribe to reporter SM\r\n this._bus.postMessage(objSubscribeMsg, (reply) => {*/\n\n var observer = _this7._observers[objURL];\n if (!observer) {\n observer = new _ObserverObject2.default(_this7, objURL, childrens);\n observer.isToSaveData = storedObject.isToSaveData;\n _this7._observers[objURL] = observer;\n }\n\n //register new hyperty subscription\n observer.addSubscription(hypertyURL);\n observer.addChildrens(childrens);\n\n // Object.assign(storedObject.data, reply.body.value.data);\n // Object.assign(storedObject.childrens, reply.body.value.childrens);\n\n //log.log('[subscribe] - resume subscription: ', msg, reply, storedObject, observer);\n\n return _this7._decryptChildrens(storedObject, childrens);\n }).then(function (decryptedObject) {\n // log.log('result of previous promise');\n resolve(decryptedObject);\n }).catch(function (reason) {\n log.error('[SyncherManager - resume subscription] - fail on getDataSchemaDescriptor: ', reason);\n resolve(false);\n });\n });\n }\n\n //FLOW-IN: message received from local DataObjectObserver -> unsubscribe\n\n }, {\n key: '_onLocalUnSubscribe',\n value: function _onLocalUnSubscribe(msg) {\n var _this = this;\n\n var hypertyURL = msg.from;\n var objURL = msg.body.resource;\n\n var observer = _this._observers[objURL];\n if (observer) {\n //TODO: is there any policy verification before delete?\n observer.removeSubscription(msg);\n\n //TODO: destroy object in the registry?\n _this._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: msg.from,\n body: { code: 200 }\n });\n\n this._dataObjectsStorage.deleteResource(objURL);\n\n //TODO: remove Object if no more subscription?\n delete _this._observers[objURL];\n }\n }\n }, {\n key: 'url',\n get: function get() {\n return this._url;\n }\n }]);\n return SyncherManager;\n}();\n\nexports.default = SyncherManager;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zeW5jaGVyL1N5bmNoZXJNYW5hZ2VyLmpzPzMzMzciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcclxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcclxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxyXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxyXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcclxuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcclxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxyXG4qXHJcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcclxuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbipcclxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4qXHJcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbioqL1xyXG5cclxuLy8gTG9nIFN5c3RlbVxyXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xyXG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignU3luY2hlck1hbmFnZXInKTtcclxuXHJcbmltcG9ydCB7IGRpdmlkZVVSTCwgZGVlcENsb25lIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xyXG5pbXBvcnQgeyBzY2hlbWFWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdXRpbHMvc2NoZW1hVmFsaWRhdGlvbic7XHJcblxyXG5pbXBvcnQgQWRkcmVzc0FsbG9jYXRpb24gZnJvbSAnLi4vYWxsb2NhdGlvbi9BZGRyZXNzQWxsb2NhdGlvbic7XHJcbmltcG9ydCBSZXBvcnRlck9iamVjdCBmcm9tICcuL1JlcG9ydGVyT2JqZWN0JztcclxuaW1wb3J0IE9ic2VydmVyT2JqZWN0IGZyb20gJy4vT2JzZXJ2ZXJPYmplY3QnO1xyXG5pbXBvcnQgKiBhcyBjcnlwdG9NYW5hZ2VyIGZyb20gJy4uL2NyeXB0b01hbmFnZXIvQ3J5cHRvTWFuYWdlcic7XHJcblxyXG4vKipcclxuICogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxyXG4gKiBDb3JlIFN5bmNyb25pemF0aW9uIHN5c3RlbS5cclxuICovXHJcbmNsYXNzIFN5bmNoZXJNYW5hZ2VyIHtcclxuICAvKiBwcml2YXRlXHJcbiAgX3VybDogVVJMXHJcbiAgX2J1czogTWluaUJ1c1xyXG4gIF9yZWdpc3RyeTogUmVnaXN0cnlcclxuICBfYWxsb2NhdG9yOiBBZGRyZXNzQWxsb2NhdGlvblxyXG5cclxuICBfcmVwb3J0ZXJzOiB7IE9iamVjdFVSTDogUmVwb3J0ZXJPYmplY3QgfVxyXG4gIF9vYnNlcnZlcnM6IHsgT2JqZWN0VVJMOiBPYnNlcnZlck9iamVjdCB9XHJcbiAgKi9cclxuXHJcbiAgY29uc3RydWN0b3IocnVudGltZVVSTCwgYnVzLCByZWdpc3RyeSwgY2F0YWxvZywgc3RvcmFnZU1hbmFnZXIsIGFsbG9jYXRvciwgc3RvcmVEYXRhT2JqZWN0cywgaWRlbnRpdHlNb2R1bGUpIHtcclxuICAgIGlmICghcnVudGltZVVSTCkgdGhyb3cgbmV3IEVycm9yKCdbU3luY2hlciBNYW5hZ2VyXSAtIG5lZWRzIHRoZSBydW50aW1lVVJMIHBhcmFtZXRlcicpO1xyXG4gICAgaWYgKCFidXMpIHRocm93IG5ldyBFcnJvcignW1N5bmNoZXIgTWFuYWdlcl0gLSBuZWVkcyB0aGUgTWVzc2FnZUJ1cyBpbnN0YW5jZScpO1xyXG4gICAgaWYgKCFyZWdpc3RyeSkgdGhyb3cgbmV3IEVycm9yKCdbU3luY2hlciBNYW5hZ2VyXSAtIG5lZWRzIHRoZSBSZWdpc3RyeSBpbnN0YW5jZScpO1xyXG4gICAgaWYgKCFjYXRhbG9nKSB0aHJvdyBuZXcgRXJyb3IoJ1tTeW5jaGVyIE1hbmFnZXJdIC0gbmVlZHMgdGhlIFJ1bnRpbWVDYXRhbG9ndWUgaW5zdGFuY2UnKTtcclxuICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHRocm93IG5ldyBFcnJvcignW1N5bmNoZXIgTWFuYWdlcl0gLSBuZWVkIHRoZSBzdG9yYWdlTWFuYWdlciBpbnN0YW5jZScpO1xyXG5cclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgX3RoaXMuX2J1cyA9IGJ1cztcclxuICAgIF90aGlzLl9yZWdpc3RyeSA9IHJlZ2lzdHJ5O1xyXG4gICAgX3RoaXMuX2NhdGFsb2cgPSBjYXRhbG9nO1xyXG4gICAgX3RoaXMuX3N0b3JhZ2VNYW5hZ2VyID0gc3RvcmFnZU1hbmFnZXI7XHJcbiAgICBfdGhpcy5faWRlbnRpdHlNb2R1bGUgPSBpZGVudGl0eU1vZHVsZTtcclxuXHJcbiAgICAvL1RPRE86IHRoZXNlIHNob3VsZCBiZSBzYXZlZCBpbiBwZXJzaXN0ZW5jZSBlbmdpbmU/XHJcbiAgICBfdGhpcy5ydW50aW1lVVJMID0gcnVudGltZVVSTDtcclxuICAgIF90aGlzLl91cmwgPSBydW50aW1lVVJMICsgJy9zbSc7XHJcbiAgICBfdGhpcy5fb2JqZWN0VVJMID0gcnVudGltZVVSTCArICcvb2JqZWN0LWFsbG9jYXRpb24nO1xyXG5cclxuICAgIF90aGlzLl9yZXBvcnRlcnMgPSB7fTtcclxuICAgIF90aGlzLl9vYnNlcnZlcnMgPSB7fTtcclxuXHJcbiAgICBfdGhpcy5fZGF0YU9iamVjdHNTdG9yYWdlID0gc3RvcmVEYXRhT2JqZWN0cztcclxuICAgIGNvbnNvbGUubG9nKCdbTk9UU0FWSU5HXSBzdG9yZURhdGFPYmplY3RzJywgc3RvcmVEYXRhT2JqZWN0cyk7XHJcbiAgICAvL1RPRE86IHRoaXMgc2hvdWxkIG5vdCBiZSBoYXJkY29kZWQhXHJcbiAgICBfdGhpcy5fZG9tYWluID0gZGl2aWRlVVJMKHJ1bnRpbWVVUkwpLmRvbWFpbjtcclxuXHJcbiAgICBpZiAoYWxsb2NhdG9yKSB7XHJcbiAgICAgIF90aGlzLl9hbGxvY2F0b3IgPSBhbGxvY2F0b3I7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBfdGhpcy5fYWxsb2NhdG9yID0gQWRkcmVzc0FsbG9jYXRpb24uaW5zdGFuY2U7XHJcbiAgICB9XHJcblxyXG4gICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyIC0gQWRkcmVzc0FsbG9jYXRpb25dIC0gJywgX3RoaXMuX2FsbG9jYXRvcik7XHJcblxyXG4gICAgYnVzLmFkZExpc3RlbmVyKF90aGlzLl91cmwsIChtc2cpID0+IHtcclxuICAgICAgbG9nLmluZm8oJ1tTeW5jaGVyTWFuYWdlcl0gUkNWOiAnLCBtc2cpO1xyXG4gICAgICBzd2l0Y2ggKG1zZy50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnY3JlYXRlJzogX3RoaXMuX29uQ3JlYXRlKG1zZyk7IGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2RlbGV0ZSc6IF90aGlzLl9vbkRlbGV0ZShtc2cpOyBicmVhaztcclxuICAgICAgICBjYXNlICdzdWJzY3JpYmUnOiBfdGhpcy5fb25Mb2NhbFN1YnNjcmliZShtc2cpOyBicmVhaztcclxuICAgICAgICBjYXNlICd1bnN1YnNjcmliZSc6IF90aGlzLl9vbkxvY2FsVW5TdWJzY3JpYmUobXNnKTsgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGdldCB1cmwoKSB7IHJldHVybiB0aGlzLl91cmw7IH1cclxuXHJcbiAgLy9GTE9XLUlOOiBtZXNzYWdlIHJlY2VpdmVkIGZyb20gU3luY2hlciAtPiBjcmVhdGVcclxuICBfb25DcmVhdGUobXNnKSB7XHJcblxyXG4gICAgbGV0IGZyb20gPSBtc2cuZnJvbTtcclxuICAgIGxldCB0byA9IG1zZy50bztcclxuXHJcbiAgICAvLyBjaGVjayBpZiBtZXNzYWdlIGlzIHRvIHNhdmUgbmV3IGNoaWxkcmVuT2JqZWN0cyBpbiB0aGUgbG9jYWwgc3RvcmFnZVxyXG4gICAgLy8gVE9ETzogY2hlY2sgaWYgbWVzc2FnZSBpcyB0byBzdG9yZSBuZXcgY2hpbGQgaW4gdGhlIGxvY2FsIHN0b3JhZ2UgYW5kIGNhbGwgc3RvcmVDaGlsZC4gSG93IHRvIGRpc3Rpbmd1aXNoIGZyb20gb3RoZXJzP1xyXG5cclxuICAgIC8vZGVidWdnZXI7XHJcbiAgICBpZiAobXNnLmJvZHkuYXR0cmlidXRlKSB7IHRoaXMuX3N0b3JlQ2hpbGRyZW5zKG1zZyk7IH0gZWxzZSB7XHJcblxyXG4gICAgICBpZiAoIW1zZy5ib2R5Lmhhc093blByb3BlcnR5KCdyZXN1bWUnKSB8fCAobXNnLmJvZHkuaGFzT3duUHJvcGVydHkoJ3Jlc3VtZScpICYmICFtc2cuYm9keS5yZXN1bWUpKSB7XHJcblxyXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoaXMgaXMgYW4gaW52aXRhdGlvbiBtZXNzYWdlXHJcbiAgICAgICAgaWYgKG1zZy5ib2R5LmF1dGhvcmlzZSkge1xyXG4gICAgICAgICAgdGhpcy5fYXV0aG9yaXNlKG1zZyk7XHJcbiAgICAgICAgICBsb2cuaW5mbygnW1N5bmNoZXJNYW5hZ2VyLm9uQ3JlYXRlIC0gaW52aXRlIG9ic2VydmVyc10nLCBtc2cpO1xyXG4gICAgICAgIH0gZWxzZSB7IC8vIHRoaXMgaXMgdG8gY3JlYXRlIGEgbmV3IGRhdGEgb2JqZWN0XHJcbiAgICAgICAgICBsb2cuaW5mbygnW1N5bmNoZXJNYW5hZ2VyLm9uQ3JlYXRlIC0gQ3JlYXRlIE5ldyBPYmplY3RdJywgbXNnKTtcclxuICAgICAgICAgIHRoaXMuX25ld0NyZWF0ZShtc2cpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIC8vIElmIGZyb20gdGhlIGh5cGVydHkgc2lkZSwgY2FsbCB0aGUgcmVzdW1lUmVwb3J0ZXIgd2Ugd2lsbCBoYXZlIHJlc3VtZSA9IHRydWUnXHJcbiAgICAgICAgLy8gc28gd2Ugd2lsbCBjcmVhdGUgYW4gcmVzdW1lZCBvYmplY3QgYW5kIHdpbGwgdHJ5IHRvIHJlc3VtZSB0aGUgb2JqZWN0IHByZXZpb3VzbHkgc2F2ZWQ7XHJcbiAgICAgICAgdGhpcy5fZGF0YU9iamVjdHNTdG9yYWdlLmdldFJlc291cmNlc0J5Q3JpdGVyaWEobXNnLCB0cnVlKS50aGVuKChyZXN1bHQpID0+IHtcclxuXHJcbiAgICAgICAgICBsb2cuaW5mbygnW1N5bmNoZXJNYW5hZ2VyIC0gQ3JlYXRlIFJlc3VtZWRdIC0gUmVzb3VyY2VzQnlDcml0ZXJpYSB8IE1lc3NhZ2U6ICcsIG1zZywgJyByZXN1bHQ6ICcsIHJlc3VsdCk7XHJcblxyXG4gICAgICAgICAgaWYgKHJlc3VsdCAmJiBPYmplY3Qua2V5cyhyZXN1bHQpLmxlbmd0aCA+IDApIHtcclxuXHJcbiAgICAgICAgICAgIGxldCBsaXN0T2ZSZXBvcnRlcnMgPSBbXTtcclxuXHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaCgob2JqVVJMKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGlzdE9mUmVwb3J0ZXJzLnB1c2godGhpcy5fcmVzdW1lQ3JlYXRlKG1zZywgcmVzdWx0W29ialVSTF0pKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBQcm9taXNlLmFsbChsaXN0T2ZSZXBvcnRlcnMpLnRoZW4oKHJlc3VtZWRSZXBvcnRlcnMpID0+IHtcclxuICAgICAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIgLSBDcmVhdGUgUmVzdW1lZF0nLCByZXN1bWVkUmVwb3J0ZXJzKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gVE9ETzogc2hvdWQgc2VuZCB0aGUgaW5mb3JtYXRpb24gaWYgc29tZSBvYmplY3Qgd2FzIGZhaWw7XHJcbiAgICAgICAgICAgICAgbGV0IHN1Y2Nlc3NmdWxseVJlc3VtZWQgPSBPYmplY3QudmFsdWVzKHJlc3VtZWRSZXBvcnRlcnMpLmZpbHRlcigocmVwb3J0ZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXBvcnRlciAhPT0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIGxvZy5pbmZvKCdbU3luY2hlck1hbmFnZXIub25DcmVhdGVdIHJldHVybmluZyByZXN1bWVkIG9iamVjdHMgOiAnLCBzdWNjZXNzZnVsbHlSZXN1bWVkKTtcclxuXHJcbiAgICAgICAgICAgICAgLy9GTE9XLU9VVDogbWVzc2FnZSByZXNwb25zZSB0byBTeW5jaGVyIC0+IGNyZWF0ZSByZXN1bWVcclxuICAgICAgICAgICAgICB0aGlzLl9idXMucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgZnJvbTogdG8sIHRvOiBmcm9tLFxyXG4gICAgICAgICAgICAgICAgYm9keTogeyBjb2RlOiAyMDAsIHZhbHVlOiBzdWNjZXNzZnVsbHlSZXN1bWVkIH1cclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vZm9yd2FyZCB0byBoeXBlcnR5OlxyXG4gICAgICAgICAgICBsZXQgcmVwbHkgPSB7fTtcclxuICAgICAgICAgICAgcmVwbHkuaWQgPSBtc2cuaWQ7XHJcbiAgICAgICAgICAgIHJlcGx5LmZyb20gPSBtc2cudG87XHJcbiAgICAgICAgICAgIHJlcGx5LnRvID0gbXNnLmZyb207XHJcbiAgICAgICAgICAgIHJlcGx5LnR5cGUgPSAncmVzcG9uc2UnO1xyXG4gICAgICAgICAgICByZXBseS5ib2R5ID0ge1xyXG4gICAgICAgICAgICAgIGNvZGU6IDQwNCxcclxuICAgICAgICAgICAgICBkZXNjOiAnTm8gZGF0YSBvYmplY3RzIHJlcG9ydGVycyB0byBiZSByZXN1bWVkJ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLl9idXMucG9zdE1lc3NhZ2UocmVwbHkpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIF9zdG9yZUNoaWxkcmVucyhtc2cpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IHJlc291cmNlID0gbXNnLmJvZHkucmVzb3VyY2U7XHJcbiAgICBsZXQgYXR0cmlidXRlID0gbXNnLmJvZHkuYXR0cmlidXRlO1xyXG5cclxuICAgIGlmIChhdHRyaWJ1dGUgPT09ICdjaGlsZHJlbk9iamVjdHMnKSB7IF90aGlzLl9kYXRhT2JqZWN0c1N0b3JhZ2Uuc2F2ZUNoaWxkcmVucyhmYWxzZSwgcmVzb3VyY2UsIHVuZGVmaW5lZCwgbXNnLmJvZHkudmFsdWUpOyB9IGVsc2UgeyBfdGhpcy5fZGF0YU9iamVjdHNTdG9yYWdlLnNhdmVDaGlsZHJlbnModHJ1ZSwgcmVzb3VyY2UsIGF0dHJpYnV0ZSwgbXNnLmJvZHkudmFsdWUpOyB9XHJcblxyXG4gIH1cclxuXHJcbiAgX25ld0NyZWF0ZShtc2cpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IG93bmVyID0gbXNnLmZyb207XHJcbiAgICBsZXQgZG9tYWluID0gZGl2aWRlVVJMKG1zZy5mcm9tKS5kb21haW47XHJcblxyXG4gICAgLy8gaWYgcmVwb3J0ZXIgaXMgaW4gYSBJbnRlcndvcmtpbmcgUHJvdG9zdHViIHRoZSBydW50aW1lIGRvbWFpbiBiYWNrZW5kIHNlcnZpY2VzIHdpbGwgYmUgdXNlZFxyXG4gICAgaWYgKF90aGlzLl9yZWdpc3RyeS5pc0ludGVyd29ya2luZ1Byb3RvU3R1Yihtc2cuZnJvbSkpIHtcclxuICAgICAgZG9tYWluID0gZGl2aWRlVVJMKF90aGlzLnJ1bnRpbWVVUkwpLmRvbWFpbjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBQcm9jZXNzIGludml0YXRpb24gbWVzc2FnZSB0byBvYnNlcnZlcnNcclxuXHJcbiAgICAvKmlmIChtc2cuYm9keS5hdXRob3Jpc2UpIHtcclxuICAgICAgX3RoaXMuX2F1dGhvcmlzZShtc2cpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9Ki9cclxuXHJcbiAgICAvL2dldCBzY2hlbWEgZnJvbSBjYXRhbG9ndWUgYW5kIHBhcnNlIC0+IChzY2hlbWUsIGNoaWxkcmVuKVxyXG4gICAgX3RoaXMuX2NhdGFsb2cuZ2V0RGF0YVNjaGVtYURlc2NyaXB0b3IobXNnLmJvZHkuc2NoZW1hKS50aGVuKChkZXNjcmlwdG9yKSA9PiB7XHJcblxyXG4gICAgICBsZXQgcHJvcGVydGllcyA9IGRlc2NyaXB0b3Iuc291cmNlUGFja2FnZS5zb3VyY2VDb2RlLnByb3BlcnRpZXM7XHJcbiAgICAgIGxldCBzY2hlbWUgPSBwcm9wZXJ0aWVzLnNjaGVtZSA/IHByb3BlcnRpZXMuc2NoZW1lLmNvbnN0YW50IDogJ3Jlc291cmNlJztcclxuICAgICAgbGV0IGNoaWxkcmVucyA9IHByb3BlcnRpZXMuY2hpbGRyZW4gPyBwcm9wZXJ0aWVzLmNoaWxkcmVuLmNvbnN0YW50IDogW107XHJcblxyXG4gICAgICAvLyBEbyBzY2hlbWEgdmFsaWRhdGlvblxyXG4gICAgICAvLyBUT0RPOiBjaGVjayBpZiBpcyBuZWVkIHRvIGhhbmRsZSB3aXRoIHRoZSByZXN1bHQgb2YgdmFsaWRhdGlvblxyXG4gICAgICBzY2hlbWFWYWxpZGF0aW9uKHNjaGVtZSwgZGVzY3JpcHRvciwgbXNnLmJvZHkudmFsdWUpO1xyXG5cclxuICAgICAgbGV0IG9iamVjdEluZm8gPSB7XHJcbiAgICAgICAgbmFtZTogbXNnLmJvZHkudmFsdWUubmFtZSxcclxuICAgICAgICBzY2hlbWE6IG1zZy5ib2R5LnZhbHVlLnNjaGVtYSxcclxuICAgICAgICByZXBvcnRlcjogbXNnLmJvZHkudmFsdWUucmVwb3J0ZXIsXHJcbiAgICAgICAgcmVzb3VyY2VzOiBtc2cuYm9keS52YWx1ZS5yZXNvdXJjZXNcclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vIHNob3VsZCByZXN1c2UgZGF0YSBvYmplY3QgdXJsIGlmIGl0IHBhc3NlZFxyXG4gICAgICBsZXQgcmV1c2VEYXRhT2JqZWN0ID0gbXNnLmJvZHkudmFsdWUucmVzb3VyY2U7XHJcbiAgICAgIGxldCBudW1PZkFkZHJlc3MgPSAxO1xyXG5cclxuICAgICAgLy9kZWJ1Z2dlcjtcclxuICAgICAgLy9yZXF1ZXN0IGFkZHJlc3MgYWxsb2NhdGlvbiBvZiBhIG5ldyBvYmplY3QgZnJvbSB0aGUgbXNnLW5vZGVcclxuICAgICAgLy9fdGhpcy5fYWxsb2NhdG9yLmNyZWF0ZShkb21haW4sIG51bU9mQWRkcmVzcywgb2JqZWN0SW5mbywgc2NoZW1lLCByZXVzZURhdGFPYmplY3QpLnRoZW4oKGFsbG9jYXRlZCkgPT4ge1xyXG4gICAgICBfdGhpcy5fYWxsb2NhdG9yLmNyZWF0ZShkb21haW4sIG51bU9mQWRkcmVzcywgb2JqZWN0SW5mbywgc2NoZW1lLCByZXVzZURhdGFPYmplY3QpLnRoZW4oKGFsbG9jYXRlZCkgPT4ge1xyXG5cclxuICAgICAgICBsZXQgb2JqZWN0UmVnaXN0cmF0aW9uID0gZGVlcENsb25lKG1zZy5ib2R5LnZhbHVlKTtcclxuICAgICAgICBvYmplY3RSZWdpc3RyYXRpb24udXJsID0gYWxsb2NhdGVkLmFkZHJlc3NbMF07XHJcbiAgICAgICAgb2JqZWN0UmVnaXN0cmF0aW9uLmF1dGhvcmlzZSA9IG1zZy5ib2R5LmF1dGhvcmlzZTtcclxuICAgICAgICBvYmplY3RSZWdpc3RyYXRpb24uY2hpbGRyZW5zID0gY2hpbGRyZW5zO1xyXG5cclxuICAgICAgICAvL29iamVjdFJlZ2lzdHJhdGlvbi5leHBpcmVzID0gMzA7Ly9UT0RPOiBnZXQgaXQgZnJvbSBkYXRhIG9iamVjdCBjb25maWd1cmF0aW9uIGRlc2NyaXB0aW9uIHdoZW4gcHJlc2VudFxyXG5cclxuICAgICAgICBkZWxldGUgb2JqZWN0UmVnaXN0cmF0aW9uLmRhdGE7XHJcblxyXG4gICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5fbmV3Q3JlYXRlXSBBTExPQ0FUT1IgQ1JFQVRFOicsIGFsbG9jYXRlZCk7XHJcblxyXG4gICAgICAgIGxldCBzdWJzY3JpcHRpb25VUkwgPSBvYmplY3RSZWdpc3RyYXRpb24udXJsICsgJy9zdWJzY3JpcHRpb24nO1xyXG5cclxuICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuX25ld0NyZWF0ZV0gU3Vic2NyaXB0aW9uIFVSTCcsIHN1YnNjcmlwdGlvblVSTCk7XHJcblxyXG4gICAgICAgIC8vVG8gcmVnaXN0ZXIgdGhlIGRhdGFPYmplY3QgaW4gdGhlIHJ1bnRpbWVSZWdpc3RyeVxyXG4gICAgICAgIGxvZy5pbmZvKCdbU3luY2hlck1hbmFnZXIuX25ld0NyZWF0ZV0gUmVnaXN0ZXIgT2JqZWN0OiAnLCBvYmplY3RSZWdpc3RyYXRpb24pO1xyXG5cclxuICAgICAgICAvL190aGlzLl9yZWdpc3RyeS5yZWdpc3RlckRhdGFPYmplY3QobXNnLmJvZHkudmFsdWUubmFtZSwgbXNnLmJvZHkudmFsdWUuc2NoZW1hLCBvYmpVUkwsIG1zZy5ib2R5LnZhbHVlLnJlcG9ydGVyLCBtc2cuYm9keS52YWx1ZS5yZXNvdXJjZXMsIGFsbG9jYXRlZCwgbXNnLmJvZHkuYXV0aG9yaXNlKS50aGVuKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgX3RoaXMuX3JlZ2lzdHJ5LnJlZ2lzdGVyRGF0YU9iamVjdChvYmplY3RSZWdpc3RyYXRpb24pLnRoZW4oKHJlZ2lzdGVyZWRPYmplY3QpID0+IHtcclxuICAgICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5fbmV3Q3JlYXRlXSBEYXRhT2JqZWN0IHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkJywgcmVnaXN0ZXJlZE9iamVjdCk7XHJcblxyXG4gICAgICAgICAgLy9hbGwgT0sgLT4gY3JlYXRlIHJlcG9ydGVyIGFuZCByZWdpc3RlciBsaXN0ZW5lcnNcclxuICAgICAgICAgIGxldCByZXBvcnRlcjtcclxuXHJcbiAgICAgICAgICBpZiAoIXRoaXMuX3JlcG9ydGVyc1tvYmplY3RSZWdpc3RyYXRpb24udXJsXSkge1xyXG4gICAgICAgICAgICByZXBvcnRlciA9IG5ldyBSZXBvcnRlck9iamVjdChfdGhpcywgb3duZXIsIG9iamVjdFJlZ2lzdHJhdGlvbi51cmwpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVwb3J0ZXIgPSB0aGlzLl9yZXBvcnRlcnNbb2JqZWN0UmVnaXN0cmF0aW9uLnVybF07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyIC0gbmV3IENyZWF0ZV0gLSAnLCBtc2cpO1xyXG5cclxuICAgICAgICAgIC8vIFN0b3JlIGZvciBlYWNoIHJlcG9ydGVyIGh5cGVydHkgdGhlIGRhdGFPYmplY3RcclxuICAgICAgICAgIGxldCB1c2VyVVJMO1xyXG4gICAgICAgICAgLy8gbGV0IGludGVyd29ya2luZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIGlmIChtc2cuYm9keS5oYXNPd25Qcm9wZXJ0eSgnaWRlbnRpdHknKSAmJiBtc2cuYm9keS5pZGVudGl0eS51c2VyUHJvZmlsZSAmJiBtc2cuYm9keS5pZGVudGl0eS51c2VyUHJvZmlsZS51c2VyVVJMKSB7XHJcbiAgICAgICAgICAgIHVzZXJVUkwgPSBtc2cuYm9keS5pZGVudGl0eS51c2VyUHJvZmlsZS51c2VyVVJMO1xyXG5cclxuICAgICAgICAgICAgLy8gaWYgKCF1c2VyVVJMLmluY2x1ZGVzKCd1c2VyOi8vJykpIHtcclxuICAgICAgICAgICAgLy8gICBpbnRlcndvcmtpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB1c2VyVVJMID0gX3RoaXMuX3JlZ2lzdHJ5LmdldEh5cGVydHlPd25lcihtc2cuZnJvbSk7XHJcblxyXG4gICAgICAgICAgICAvLyBpZiAoIXVzZXJVUkwpIHtcclxuICAgICAgICAgICAgLy8gICBpbnRlcndvcmtpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gc2hvdWxkIHdlIHVzZSB0aGUgbXNnLmJvZHkudmFsdWUgaW5zdGVhZD9cclxuXHJcbiAgICAgICAgICBsZXQgbWV0YWRhdGEgPSBkZWVwQ2xvbmUob2JqZWN0UmVnaXN0cmF0aW9uKTtcclxuICAgICAgICAgIG1ldGFkYXRhLnN1YnNjcmliZXJVc2VyID0gdXNlclVSTDtcclxuICAgICAgICAgIG1ldGFkYXRhLmlzUmVwb3J0ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIC8vIFN0b3JlIHRoZSBkYXRhT2JqZWN0IGluZm9ybWF0aW9uXHJcblxyXG4gICAgICAgICAgLy9pZiAoIWludGVyd29ya2luZykge1xyXG5cclxuICAgICAgICAgIF90aGlzLl9kYXRhT2JqZWN0c1N0b3JhZ2Uuc2V0KG1ldGFkYXRhKTtcclxuXHJcbiAgICAgICAgICBpZiAobXNnLmJvZHkuaGFzT3duUHJvcGVydHkoJ3N0b3JlJykgJiYgbXNnLmJvZHkuc3RvcmUpIHtcclxuICAgICAgICAgICAgcmVwb3J0ZXIuaXNUb1NhdmVEYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgX3RoaXMuX2RhdGFPYmplY3RzU3RvcmFnZS51cGRhdGUodHJ1ZSwgb2JqZWN0UmVnaXN0cmF0aW9uLnVybCwgJ2lzVG9TYXZlRGF0YScsIHRydWUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG1zZy5ib2R5LnZhbHVlLmRhdGEpIHsgX3RoaXMuX2RhdGFPYmplY3RzU3RvcmFnZS5zYXZlRGF0YSh0cnVlLCBvYmplY3RSZWdpc3RyYXRpb24udXJsLCBudWxsLCBtc2cuYm9keS52YWx1ZS5kYXRhKTsgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vfVxyXG5cclxuICAgICAgICAgIC8vIGFkZGluZyBsaXN0ZW5lcnMgdG8gZm9yd2FyZCB0byByZXBvcnRlclxyXG5cclxuICAgICAgICAgIHJlcG9ydGVyLmZvcndhcmRTdWJzY3JpYmUoW29iamVjdFJlZ2lzdHJhdGlvbi51cmwsIHN1YnNjcmlwdGlvblVSTF0pLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICByZXBvcnRlci5hZGRDaGlsZHJlbnMoY2hpbGRyZW5zKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICBfdGhpcy5fcmVwb3J0ZXJzW29iamVjdFJlZ2lzdHJhdGlvbi51cmxdID0gcmVwb3J0ZXI7XHJcblxyXG4gICAgICAgICAgICAgIGxldCByZXNwb25zZU1zZyA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIGZyb206IG1zZy50bywgdG86IG93bmVyLFxyXG4gICAgICAgICAgICAgICAgYm9keTogeyBjb2RlOiAyMDAsIHJlc291cmNlOiBvYmplY3RSZWdpc3RyYXRpb24udXJsLCBjaGlsZHJlblJlc291cmNlczogY2hpbGRyZW5zIH1cclxuICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHJlc3BvbnNlIHRvIFN5bmNoZXIgLT4gY3JlYXRlXHJcbiAgICAgICAgICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShyZXNwb25zZU1zZyk7XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7XHJcbiAgICAgICAgICBsb2cuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSk7XHJcbiAgICB9KS5jYXRjaCgocmVhc29uKSA9PiB7XHJcbiAgICAgIC8vRkxPVy1PVVQ6IGVycm9yIG1lc3NhZ2UgcmVzcG9uc2UgdG8gU3luY2hlciAtPiBjcmVhdGVcclxuICAgICAgbGV0IHJlc3BvbnNlTXNnID0ge1xyXG4gICAgICAgIGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIGZyb206IG1zZy50bywgdG86IG93bmVyLFxyXG4gICAgICAgIGJvZHk6IHsgY29kZTogNTAwLCBkZXNjOiByZWFzb24gfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShyZXNwb25zZU1zZyk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBfcmVzdW1lQ3JlYXRlKG1zZywgc3RvcmVkT2JqZWN0KSB7XHJcblxyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuXHJcbiAgICAgIGxldCBvd25lciA9IG1zZy5mcm9tO1xyXG4gICAgICBsZXQgc2NoZW1hID0gc3RvcmVkT2JqZWN0LnNjaGVtYTtcclxuICAgICAgbGV0IHJlc291cmNlID0gc3RvcmVkT2JqZWN0LnVybDtcclxuICAgICAgbGV0IGluaXRpYWxEYXRhID0gc3RvcmVkT2JqZWN0LmRhdGE7XHJcblxyXG4gICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXJdIC0gcmVzdW1lIGNyZWF0ZScsIG1zZywgc3RvcmVkT2JqZWN0KTtcclxuXHJcbiAgICAgIC8vZ2V0IHNjaGVtYSBmcm9tIGNhdGFsb2d1ZSBhbmQgcGFyc2UgLT4gKHNjaGVtZSwgY2hpbGRyZW4pXHJcbiAgICAgIF90aGlzLl9jYXRhbG9nLmdldERhdGFTY2hlbWFEZXNjcmlwdG9yKHNjaGVtYSkudGhlbigoZGVzY3JpcHRvcikgPT4ge1xyXG5cclxuICAgICAgICBsZXQgcHJvcGVydGllcyA9IGRlc2NyaXB0b3Iuc291cmNlUGFja2FnZS5zb3VyY2VDb2RlLnByb3BlcnRpZXM7XHJcbiAgICAgICAgbGV0IHNjaGVtZSA9IHByb3BlcnRpZXMuc2NoZW1lID8gcHJvcGVydGllcy5zY2hlbWUuY29uc3RhbnQgOiAncmVzb3VyY2UnO1xyXG4gICAgICAgIGxldCBjaGlsZHJlbnMgPSBwcm9wZXJ0aWVzLmNoaWxkcmVuID8gcHJvcGVydGllcy5jaGlsZHJlbi5jb25zdGFudCA6IFtdO1xyXG5cclxuICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXJdIC0gZ2V0RGF0YVNjaGVtYURlc2NyaXB0b3I6ICcsIGRlc2NyaXB0b3IsIGNoaWxkcmVucyk7XHJcblxyXG4gICAgICAgIC8vIERvIHNjaGVtYSB2YWxpZGF0aW9uXHJcbiAgICAgICAgLy8gVE9ETzogY2hlY2sgaWYgaXMgbmVlZCB0byBoYW5kbGUgd2l0aCB0aGUgcmVzdWx0IG9mIHZhbGlkYXRpb25cclxuICAgICAgICBzY2hlbWFWYWxpZGF0aW9uKHNjaGVtZSwgZGVzY3JpcHRvciwgaW5pdGlhbERhdGEpO1xyXG5cclxuICAgICAgICBsZXQgb2JqZWN0UmVnaXN0cmF0aW9uID0gZGVlcENsb25lKG1zZy5ib2R5LnZhbHVlKTtcclxuICAgICAgICBvYmplY3RSZWdpc3RyYXRpb24udXJsID0gc3RvcmVkT2JqZWN0LnVybDtcclxuICAgICAgICBvYmplY3RSZWdpc3RyYXRpb24uZXhwaXJlcyA9IHN0b3JlZE9iamVjdC5leHBpcmVzO1xyXG5cclxuICAgICAgICBkZWxldGUgb2JqZWN0UmVnaXN0cmF0aW9uLmRhdGE7XHJcblxyXG4gICAgICAgIC8vYWxsIE9LIC0+IGNyZWF0ZSByZXBvcnRlciBhbmQgcmVnaXN0ZXIgbGlzdGVuZXJzXHJcbiAgICAgICAgbGV0IHJlcG9ydGVyO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX3JlcG9ydGVyc1tyZXNvdXJjZV0pIHtcclxuICAgICAgICAgIHJlcG9ydGVyID0gbmV3IFJlcG9ydGVyT2JqZWN0KF90aGlzLCBvd25lciwgcmVzb3VyY2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXBvcnRlciA9IHRoaXMuX3JlcG9ydGVyc1tyZXNvdXJjZV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXBvcnRlci5pc1RvU2F2ZURhdGEgPSBzdG9yZWRPYmplY3QuaXNUb1NhdmVEYXRhO1xyXG5cclxuICAgICAgICByZXBvcnRlci5mb3J3YXJkU3Vic2NyaWJlKFtzdG9yZWRPYmplY3QudXJsXSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICByZXBvcnRlci5hZGRDaGlsZHJlbnMoY2hpbGRyZW5zKS50aGVuKCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgIHJlcG9ydGVyLnJlc3VtZVN1YnNjcmlwdGlvbnMoc3RvcmVkT2JqZWN0LnN1YnNjcmlwdGlvbnMpO1xyXG5cclxuICAgICAgICAgICAgX3RoaXMuX3JlcG9ydGVyc1tyZXNvdXJjZV0gPSByZXBvcnRlcjtcclxuXHJcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbU3luY2hlck1hbmFnZXIgLSByZXN1bWUgY3JlYXRlXSAtIHJlc29sdmVkIHJlc3VtZWQ6ICcsIHN0b3JlZE9iamVjdCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuX2RlY3J5cHRDaGlsZHJlbnMoc3RvcmVkT2JqZWN0LCBjaGlsZHJlbnMpO1xyXG4gICAgICAgICAgfSkudGhlbigoZGVjcnlwdGVkT2JqZWN0KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAvLyBsb2cubG9nKCdyZXN1bHQgb2YgcHJldmlvdXMgcHJvbWlzZScpO1xyXG4gICAgICAgICAgICByZXNvbHZlKGRlY3J5cHRlZE9iamVjdCk7XHJcbiAgICAgICAgICB9KS5jYXRjaCgocmVhc29uKSA9PiB7XHJcbiAgICAgICAgICAgIGxvZy5lcnJvcignW1N5bmNoZXJNYW5hZ2VyIC0gcmVzdW1lIGNyZWF0ZV0gLSBmYWlsIG9uIGFkZENoaWxkcmVuczogJywgcmVhc29uKTtcclxuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBsb2cuaW5mbygnW1N5bmNoZXJNYW5hZ2VyLl9yZXN1bWVDcmVhdGVdIFJlZ2lzdGVyIE9iamVjdDogJywgb2JqZWN0UmVnaXN0cmF0aW9uKTtcclxuICAgICAgICBfdGhpcy5fcmVnaXN0cnkucmVnaXN0ZXJEYXRhT2JqZWN0KG9iamVjdFJlZ2lzdHJhdGlvbikudGhlbigocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLl9yZXN1bWVDcmVhdGVdIERhdGFPYmplY3QgcmVnaXN0cmF0aW9uIHN1Y2Nlc3NmdWxseSB1cGRhdGVkJywgcmVzb2x2ZSk7XHJcblxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gIHJlc29sdmUoKTtcclxuICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xyXG4gICAgICAgIGxvZy5lcnJvcignW1N5bmNoZXJNYW5hZ2VyIC0gcmVzdW1lIGNyZWF0ZV0gLSBmYWlsIG9uIGdldERhdGFTY2hlbWFEZXNjcmlwdG9yOiAnLCByZWFzb24pO1xyXG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gdG8gZGVjcnlwdCBEYXRhQ2hpbGRPYmplY3RzIGlmIHRoZXkgYXJlIGVuY3J5cHRlZFxyXG5cclxuICBfZGVjcnlwdENoaWxkcmVucyhzdG9yZWRPYmplY3QsIGNoaWxkcmVucykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG5cclxuICAgICAgaWYgKCFjaGlsZHJlbnMpIHsgcmVzb2x2ZShzdG9yZWRPYmplY3QpOyB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBjaGlsZHJlbnNPYmogPSBPYmplY3Qua2V5cyhzdG9yZWRPYmplY3QuY2hpbGRyZW5PYmplY3RzKTtcclxuXHJcbiAgICAgICAgaWYgKGNoaWxkcmVuc09iai5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHJlc29sdmUoc3RvcmVkT2JqZWN0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNoaWxkcmVucy5mb3JFYWNoKChjaGlsZHJlbik9PntcclxuXHJcbiAgICAgICAgICBsZXQgY2hpbGRPYmplY3RzID0gc3RvcmVkT2JqZWN0LmNoaWxkcmVuT2JqZWN0c1tjaGlsZHJlbl07XHJcblxyXG4gICAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLl9kZWNyeXB0Q2hpbGRyZW5zXSBkYXRhT2JqZWN0Q2hpbGRzIHRvIGRlY3J5cHQgJywgY2hpbGRPYmplY3RzKTtcclxuXHJcbiAgICAgICAgICBsZXQgbGlzdE9mRGVjcnlwdGVkT2JqZWN0cyA9IFtdO1xyXG5cclxuICAgICAgICAgIE9iamVjdC5rZXlzKGNoaWxkT2JqZWN0cykuZm9yRWFjaCgoY2hpbGRJZCk9PntcclxuICAgICAgICAgICAgbGV0IGNoaWxkID0gY2hpbGRPYmplY3RzW2NoaWxkSWRdO1xyXG4gICAgICAgICAgICBsZXQgb3duZXIgPSBjaGlsZElkLnNwbGl0KCcjJylbMF07XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkLnZhbHVlID09PSAnc3RyaW5nJykge1xyXG5cclxuICAgICAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuX2RlY3J5cHRDaGlsZHJlbnNdIGNyZWF0ZWRCeSAnLCAgb3duZXIsICcgb2JqZWN0OiAnLCBjaGlsZC52YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgIGxldCBkZWNyeXB0ZWQgPSBjcnlwdG9NYW5hZ2VyLmRlZmF1bHQuZGVjcnlwdERhdGFPYmplY3QoSlNPTi5wYXJzZShjaGlsZC52YWx1ZSksIHN0b3JlZE9iamVjdC51cmwpO1xyXG5cclxuICAgICAgICAgICAgICBsaXN0T2ZEZWNyeXB0ZWRPYmplY3RzLnB1c2goZGVjcnlwdGVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgUHJvbWlzZS5hbGwobGlzdE9mRGVjcnlwdGVkT2JqZWN0cykudGhlbigoZGVjcnlwdGVkT2JqZWN0cykgPT4ge1xyXG5cclxuICAgICAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLl9kZWNyeXB0Q2hpbGRyZW5zXSByZXR1cm5pbmcgZGVjcnlwdGVkICcsIGRlY3J5cHRlZE9iamVjdHMpO1xyXG5cclxuICAgICAgICAgICAgZGVjcnlwdGVkT2JqZWN0cy5mb3JFYWNoKChkZWNyeXB0ZWRPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBjaGlsZElkID0gZGVjcnlwdGVkT2JqZWN0LnZhbHVlLnVybDtcclxuICAgICAgICAgICAgICBzdG9yZWRPYmplY3QuY2hpbGRyZW5PYmplY3RzW2NoaWxkcmVuXVtjaGlsZElkXS52YWx1ZSA9IGRlY3J5cHRlZE9iamVjdC52YWx1ZTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuX2RlY3J5cHRDaGlsZHJlbnNdIHN0b3JlZE9iamVjdCAnLCBzdG9yZWRPYmplY3QpO1xyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShzdG9yZWRPYmplY3QpO1xyXG5cclxuICAgICAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcclxuICAgICAgICAgICAgbG9nLndhcm4oJ1tTeW5jaGVyTWFuYWdlci5fZGVjcnlwdENoaWxkcmVuc10gZmFpbGVkIDogJywgcmVhc29uKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIFByb2Nlc3MgaW52aXRhdGlvbnMgdG8gb2JzZXJ2ZXJzXHJcblxyXG4gIF9hdXRob3Jpc2UobXNnKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGlmICghbXNnLmJvZHkucmVzb3VyY2UpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbU3luY2hlck1hbmFnZXIuX2F1dGhvcmlzZV0gaW52aXRhdGlvbiByZXF1ZXN0IHdpdGhvdXQgZGF0YSBvYmplY3QgdXJsOicsIG1zZyk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG9ialN1YnNjcmlwdG9yVVJMID0gbXNnLmJvZHkucmVzb3VyY2UgKyAnL3N1YnNjcmlwdGlvbic7XHJcbiAgICBsZXQgcDJwID0gbXNnLmJvZHkucDJwID8gbXNnLmJvZHkucDJwIDogZmFsc2U7XHJcblxyXG4gICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyIC0gIGF1dGhvcmlzZV0gLSAnLCBtc2cpO1xyXG5cclxuICAgIGlmIChtc2cuYm9keS5hdXRob3Jpc2UpIHtcclxuICAgICAgbXNnLmJvZHkuYXV0aG9yaXNlLmZvckVhY2goKGh5cGVydHlVUkwpID0+IHtcclxuICAgICAgICAvL0ZMT1ctT1VUOiBzZW5kIGludml0ZXMgdG8gbGlzdCBvZiByZW1vdGUgU3luY2hlciAtPiBfb25SZW1vdGVDcmVhdGUgLT4gb25Ob3RpZmljYXRpb25cclxuXHJcbiAgICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICB0eXBlOiAnY3JlYXRlJywgZnJvbTogb2JqU3Vic2NyaXB0b3JVUkwsIHRvOiBoeXBlcnR5VVJMLFxyXG4gICAgICAgICAgYm9keTogeyBwMnA6IHAycCwgaWRlbnRpdHk6IG1zZy5ib2R5LmlkZW50aXR5LCBzb3VyY2U6IG1zZy5mcm9tLCB2YWx1ZTogbXNnLmJvZHkudmFsdWUsIHNjaGVtYTogbXNnLmJvZHkuc2NoZW1hIH1cclxuICAgICAgICB9LCAocmVwbHkpID0+IHsgLy8gbGV0cyBmb3J3YXJkIHRoZSBpbnZpdGF0aW9uIHJlc3BvbnNlXHJcbiAgICAgICAgICBsZXQgcmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgIGZyb206IG1zZy50byxcclxuICAgICAgICAgICAgdG86IG1zZy5mcm9tLFxyXG4gICAgICAgICAgICBpZDogbXNnLmlkLFxyXG4gICAgICAgICAgICB0eXBlOiByZXBseS50eXBlLFxyXG4gICAgICAgICAgICBib2R5OiByZXBseS5ib2R5XHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRkxPVy1JTjogbWVzc2FnZSByZWNlaXZlZCBmcm9tIERhdGFPYmplY3RSZXBvcnRlciAtPiBkZWxldGVcclxuICBfb25EZWxldGUobXNnKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBvYmpVUkwgPSBtc2cuYm9keS5yZXNvdXJjZTtcclxuXHJcbiAgICBsZXQgb2JqZWN0ID0gX3RoaXMuX3JlcG9ydGVyc1tvYmpVUkxdO1xyXG4gICAgaWYgKG9iamVjdCkge1xyXG4gICAgICAvL1RPRE86IGlzIHRoZXJlIGFueSBwb2xpY3kgdmVyaWZpY2F0aW9uIGJlZm9yZSBkZWxldGU/XHJcblxyXG4gICAgICBvYmplY3QuZGVsZXRlKCk7XHJcblxyXG4gICAgICB0aGlzLl9kYXRhT2JqZWN0c1N0b3JhZ2UuZGVsZXRlUmVzb3VyY2Uob2JqVVJMKS50aGVuKChyZXN1bHQpID0+IHtcclxuXHJcblxyXG4gICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlciAtIG9uRGVsZXRlXSAtIGRlbGV0ZVJlc291cmNlOiAnLCByZXN1bHQpO1xyXG5cclxuICAgICAgICBfdGhpcy5fcmVnaXN0cnkudW5yZWdpc3RlckRhdGFPYmplY3Qob2JqVVJMKTtcclxuXHJcbiAgICAgICAgLy9UT0RPOiB1bnJlZ2lzdGVyIG9iamVjdD9cclxuICAgICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHtcclxuICAgICAgICAgIGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIGZyb206IG1zZy50bywgdG86IG1zZy5mcm9tLFxyXG4gICAgICAgICAgYm9keTogeyBjb2RlOiAyMDAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vRkxPVy1JTjogbWVzc2FnZSByZWNlaXZlZCBmcm9tIGxvY2FsIFN5bmNoZXIgLT4gc3Vic2NyaWJlXHJcbiAgX29uTG9jYWxTdWJzY3JpYmUobXNnKSB7XHJcbiAgICAvL2RlYnVnZ2VyO1xyXG4gICAgdGhpcy5fZGF0YU9iamVjdHNTdG9yYWdlLmdldFJlc291cmNlc0J5Q3JpdGVyaWEobXNnLCBmYWxzZSkudGhlbigocmVzdWx0KSA9PiB7XHJcblxyXG4gICAgICBsb2cuaW5mbygnW1N5bmNoZXJNYW5hZ2VyIC0gU3Vic2NyaWJlXSAtIFJlc291cmNlc0J5Q3JpdGVyaWEgfCBNZXNzYWdlOiAnLCBtc2csICcgcmVzdWx0OiAnLCByZXN1bHQpO1xyXG5cclxuICAgICAgaWYgKHJlc3VsdCAmJiBPYmplY3Qua2V5cyhyZXN1bHQpLmxlbmd0aCA+IDApIHtcclxuXHJcbiAgICAgICAgbGV0IGxpc3RPZk9ic2VydmVycyA9IFtdO1xyXG5cclxuICAgICAgICAvLyBUT0RPOiBzaG91bGQgcmV1c2UgdGhlIHN0b3JhZ2VkIGluZm9ybWF0aW9uXHJcbiAgICAgICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKChvYmpVUkwpID0+IHtcclxuICAgICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlciAtIHJlc3VtZSBTdWJzY3JpYmVdIC0gcmV1c2UgY3VycmVudCBvYmplY3QgdXJsOiAnLCByZXN1bHRbb2JqVVJMXSk7XHJcbiAgICAgICAgICBsaXN0T2ZPYnNlcnZlcnMucHVzaCh0aGlzLl9yZXN1bWVTdWJzY3JpcHRpb24obXNnLCByZXN1bHRbb2JqVVJMXSkpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBQcm9taXNlLmFsbChsaXN0T2ZPYnNlcnZlcnMpLnRoZW4oKHJlc3VtZWRPYnNlcnZlcnMpID0+IHtcclxuICAgICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlciAtIE9ic2VydmVycyBSZXN1bWVkXScsIHJlc3VtZWRPYnNlcnZlcnMpO1xyXG5cclxuICAgICAgICAgIC8vIFRPRE86IHNob3VkIHNlbmQgdGhlIGluZm9ybWF0aW9uIGlmIHNvbWUgb2JqZWN0IHdhcyBmYWlsO1xyXG4gICAgICAgICAgbGV0IHN1Y2Nlc3NmdWxseVJlc3VtZWQgPSBPYmplY3QudmFsdWVzKHJlc3VtZWRPYnNlcnZlcnMpLmZpbHRlcigob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG9ic2VydmVyICE9PSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIC8vRkxPVy1PVVQ6IG1lc3NhZ2UgcmVzcG9uc2UgdG8gU3luY2hlciAtPiBjcmVhdGVcclxuICAgICAgICAgIHRoaXMuX2J1cy5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgIGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIGZyb206IG1zZy50bywgdG86IG1zZy5mcm9tLFxyXG4gICAgICAgICAgICBib2R5OiB7IGNvZGU6IDIwMCwgdmFsdWU6IHN1Y2Nlc3NmdWxseVJlc3VtZWQgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSBlbHNlIGlmIChtc2cuYm9keS5zY2hlbWEgJiYgbXNnLmJvZHkucmVzb3VyY2UpIHtcclxuICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIub25Mb2NhbFN1YnNjcmliZSAtIG5ldyBTdWJzY3JpYmVdIC0gJywgbXNnLmJvZHkuc2NoZW1hLCBtc2cuYm9keS5yZXNvdXJjZSk7XHJcbiAgICAgICAgdGhpcy5fbmV3U3Vic2NyaXB0aW9uKG1zZyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy9mb3J3YXJkIHRvIGh5cGVydHk6XHJcbiAgICAgICAgbGV0IHJlcGx5ID0ge307XHJcbiAgICAgICAgcmVwbHkuaWQgPSBtc2cuaWQ7XHJcbiAgICAgICAgcmVwbHkuZnJvbSA9IG1zZy50bztcclxuICAgICAgICByZXBseS50byA9IG1zZy5mcm9tO1xyXG4gICAgICAgIHJlcGx5LnR5cGUgPSAncmVzcG9uc2UnO1xyXG4gICAgICAgIHJlcGx5LmJvZHkgPSB7XHJcbiAgICAgICAgICBjb2RlOiA0MDQsXHJcbiAgICAgICAgICBkZXNjOiAnTm8gZGF0YSBvYmplY3RzIG9ic2VydmVycyB0byBiZSByZXN1bWVkJ1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHJlcGx5KTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIF9uZXdTdWJzY3JpcHRpb24obXNnKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBvYmpVUkwgPSBtc2cuYm9keS5yZXNvdXJjZTtcclxuXHJcbiAgICBsZXQgaHlwZXJ0eVVSTCA9IG1zZy5mcm9tO1xyXG4gICAgbGV0IGRvbWFpbiA9IGRpdmlkZVVSTChvYmpVUkwpLmRvbWFpbjtcclxuICAgIGxldCBvYmpVUkxTdWJzY3JpcHRpb24gPSBvYmpVUkwgKyAnL3N1YnNjcmlwdGlvbic7XHJcblxyXG4gICAgbGV0IGNoaWxkQmFzZVVSTCA9IG9ialVSTCArICcvY2hpbGRyZW4vJztcclxuXHJcbiAgICAvL2dldCBzY2hlbWEgZnJvbSBjYXRhbG9ndWUgYW5kIHBhcnNlIC0+IChjaGlsZHJlbilcclxuICAgIF90aGlzLl9jYXRhbG9nLmdldERhdGFTY2hlbWFEZXNjcmlwdG9yKG1zZy5ib2R5LnNjaGVtYSkudGhlbigoZGVzY3JpcHRvcikgPT4ge1xyXG4gICAgICBsZXQgcHJvcGVydGllcyA9IGRlc2NyaXB0b3Iuc291cmNlUGFja2FnZS5zb3VyY2VDb2RlLnByb3BlcnRpZXM7XHJcbiAgICAgIGxldCBjaGlsZHJlbnMgPSBwcm9wZXJ0aWVzLmNoaWxkcmVuID8gcHJvcGVydGllcy5jaGlsZHJlbi5jb25zdGFudCA6IFtdO1xyXG5cclxuICAgICAgbGV0IHN1YnNjcmlwdGlvbnMgPSBbXTtcclxuICAgICAgc3Vic2NyaXB0aW9ucy5wdXNoKG9ialVSTCArICcvY2hhbmdlcycpO1xyXG5cclxuICAgICAgY2hpbGRyZW5zLmZvckVhY2goKGNoaWxkKSA9PiBzdWJzY3JpcHRpb25zLnB1c2goY2hpbGRCYXNlVVJMICsgY2hpbGQpKTtcclxuXHJcbiAgICAgIC8vY2hpbGRyZW4gYWRkcmVzc2VzXHJcblxyXG4gICAgICAvL0ZMT1ctT1VUOiBzdWJzY3JpYmUgbWVzc2FnZSB0byB0aGUgbXNnLW5vZGUsIHJlZ2lzdGVyaW5nIGxpc3RlbmVycyBvbiB0aGUgYnJva2VyXHJcbiAgICAgIGxldCBub2RlU3Vic2NyaWJlTXNnID0ge1xyXG4gICAgICAgIHR5cGU6ICdzdWJzY3JpYmUnLCBmcm9tOiBfdGhpcy5fdXJsLCB0bzogJ2RvbWFpbjovL21zZy1ub2RlLicgKyBkb21haW4gKyAnL3NtJyxcclxuICAgICAgICBib2R5OiB7IGlkZW50aXR5OiBtc2cuYm9keS5pZGVudGl0eSwgcmVzb3VyY2VzOiBzdWJzY3JpcHRpb25zLCBzb3VyY2U6IGh5cGVydHlVUkwgfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy9zdWJzY3JpYmUgaW4gbXNnLW5vZGVcclxuICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShub2RlU3Vic2NyaWJlTXNnLCAocmVwbHkpID0+IHtcclxuICAgICAgICBsb2cubG9nKCdub2RlLXN1YnNjcmliZS1yZXNwb25zZShvYnNlcnZlcik6ICcsIHJlcGx5KTtcclxuICAgICAgICBjb25zb2xlLmxvZygnUkVVU0VURVNUIFN5bmNoZXJNYW5hZ2VyIC0gbm9kZS1zdWJzY3JpYmUtcmVzcG9uc2Uob2JzZXJ2ZXIpOiAnLCByZXBseSk7XHJcbiAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gMjAwKSB7XHJcblxyXG4gICAgICAgICAgLy9GTE9XLU9VVDogcmVwbHkgd2l0aCBwcm92aXNpb25hbCByZXNwb25zZVxyXG4gICAgICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgIGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIGZyb206IG1zZy50bywgdG86IGh5cGVydHlVUkwsXHJcbiAgICAgICAgICAgIGJvZHk6IHsgY29kZTogMTAwLCBjaGlsZHJlblJlc291cmNlczogY2hpbGRyZW5zLCBzY2hlbWE6IG1zZy5ib2R5LnNjaGVtYSwgcmVzb3VyY2U6IG1zZy5ib2R5LnJlc291cmNlIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIC8vRkxPVy1PVVQ6IHN1YnNjcmliZSBtZXNzYWdlIHRvIHJlbW90ZSBSZXBvcnRlck9iamVjdCAtPiBfb25SZW1vdGVTdWJzY3JpYmVcclxuICAgICAgICAgIGxldCBvYmpTdWJzY3JpYmVNc2cgPSB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdzdWJzY3JpYmUnLCBmcm9tOiBfdGhpcy5fdXJsLCB0bzogb2JqVVJMU3Vic2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBib2R5OiB7IGlkZW50aXR5OiBub2RlU3Vic2NyaWJlTXNnLmJvZHkuaWRlbnRpdHksIHN1YnNjcmliZXI6IGh5cGVydHlVUkwgfVxyXG4gICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAvL1RPRE86IEZvciBGdXJ0aGVyIFN0dWR5XHJcbiAgICAgICAgICBpZiAobXNnLmJvZHkuaGFzT3duUHJvcGVydHkoJ211dHVhbCcpKSBvYmpTdWJzY3JpYmVNc2cuYm9keS5tdXR1YWwgPSBtc2cuYm9keS5tdXR1YWw7XHJcbiAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuX25ld1N1YnNjcmlwdGlvbl0nLCBvYmpTdWJzY3JpYmVNc2csIG1zZyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnUkVVU0VURVNUIFN5bmNoZXJNYW5hZ2VyIC0gW1N5bmNoZXJNYW5hZ2VyLl9uZXdTdWJzY3JpcHRpb25dJywgb2JqU3Vic2NyaWJlTXNnLCBtc2cpO1xyXG4gICAgICAgICAgLy9zdWJzY3JpYmUgdG8gcmVwb3J0ZXIgU01cclxuICAgICAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2Uob2JqU3Vic2NyaWJlTXNnLCAocmVwbHkpID0+IHtcclxuICAgICAgICAgICAgbG9nLmxvZygncmVwb3J0ZXItc3Vic2NyaWJlLXJlc3BvbnNlLW5ldzogJywgcmVwbHkpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUkVVU0VURVNUIFN5bmNoZXJNYW5hZ2VyIC0gcmVwb3J0ZXItc3Vic2NyaWJlLXJlc3BvbnNlLW5ldzogJywgcmVwbHkpO1xyXG4gICAgICAgICAgICBpZiAocmVwbHkuYm9keS5jb2RlID09PSAyMDApIHtcclxuXHJcbiAgICAgICAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLl9uZXdTdWJzY3JpcHRpb25dIC0gb2JzZXJ2ZXJzOiAnLCBfdGhpcy5fb2JzZXJ2ZXJzLCBvYmpVUkwsIF90aGlzLl9vYnNlcnZlcnNbb2JqVVJMXSk7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1JFVVNFVEVTVCBTeW5jaGVyTWFuYWdlciAtIDIwMCBjb2RlW1N5bmNoZXJNYW5hZ2VyLl9uZXdTdWJzY3JpcHRpb25dIC0gb2JzZXJ2ZXJzOiAnLCBfdGhpcy5fb2JzZXJ2ZXJzLCBvYmpVUkwsIF90aGlzLl9vYnNlcnZlcnNbb2JqVVJMXSk7XHJcbiAgICAgICAgICAgICAgbGV0IG9ic2VydmVyID0gX3RoaXMuX29ic2VydmVyc1tvYmpVUkxdO1xyXG4gICAgICAgICAgICAgIGlmICghb2JzZXJ2ZXIpIHtcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyID0gbmV3IE9ic2VydmVyT2JqZWN0KF90aGlzLCBvYmpVUkwsIGNoaWxkcmVucyk7XHJcbiAgICAgICAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuX25ld1N1YnNjcmlwdGlvbl0gLSBvYnNlcnZlcnM6IGNyZWF0ZSBuZXcgT2JzZXJ2ZXJPYmplY3Q6ICcsIG9ic2VydmVyKTtcclxuICAgICAgICAgICAgICAgIF90aGlzLl9vYnNlcnZlcnNbb2JqVVJMXSA9IG9ic2VydmVyO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIG5ldyBoeXBlcnR5IHN1YnNjcmlwdGlvblxyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuYWRkU3Vic2NyaXB0aW9uKGh5cGVydHlVUkwpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGFkZCBjaGlsZHJlbnMgYW5kIGxpc3RlbmVycyB0byBzYXZlIGRhdGEgaWYgbmVjZXNzYXJ5XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5hZGRDaGlsZHJlbnMoY2hpbGRyZW5zKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGxldCBpbnRlcndvcmtpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgICAgLy9kZWJ1Z2dlcjtcclxuXHJcbiAgICAgICAgICAgICAgLy8gU3RvcmUgZm9yIGVhY2ggcmVwb3J0ZXIgaHlwZXJ0eSB0aGUgZGF0YU9iamVjdFxyXG4gICAgICAgICAgICAgIGxldCB1c2VyVVJMO1xyXG4gICAgICAgICAgICAgIGlmIChtc2cuYm9keS5oYXNPd25Qcm9wZXJ0eSgnaWRlbnRpdHknKSAmJiBtc2cuYm9keS5pZGVudGl0eS51c2VyUHJvZmlsZSAmJiBtc2cuYm9keS5pZGVudGl0eS51c2VyUHJvZmlsZS51c2VyVVJMKSB7XHJcbiAgICAgICAgICAgICAgICB1c2VyVVJMID0gbXNnLmJvZHkuaWRlbnRpdHkudXNlclByb2ZpbGUudXNlclVSTDtcclxuICAgICAgICAgICAgICAgIGlmICghdXNlclVSTC5pbmNsdWRlcygndXNlcjovLycpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGludGVyd29ya2luZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHVzZXJVUkwgPSBfdGhpcy5fcmVnaXN0cnkuZ2V0SHlwZXJ0eU93bmVyKG1zZy5mcm9tKTtcclxuICAgICAgICAgICAgICAgIGlmICghdXNlclVSTCkgaW50ZXJ3b3JraW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGxldCBtZXRhZGF0YSA9IGRlZXBDbG9uZShyZXBseS5ib2R5LnZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gbGV0IGNoaWxkcmVuT2JqZWN0cyA9IG1ldGFkYXRhLmNoaWxkcmVuT2JqZWN0cyB8fCB7fTtcclxuXHJcbiAgICAgICAgICAgICAgZGVsZXRlIG1ldGFkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgZGVsZXRlIG1ldGFkYXRhLmNoaWxkcmVuT2JqZWN0cztcclxuXHJcbiAgICAgICAgICAgICAgbWV0YWRhdGEuY2hpbGRyZW5zID0gY2hpbGRyZW5zO1xyXG4gICAgICAgICAgICAgIG1ldGFkYXRhLnN1YnNjcmliZXJVc2VyID0gdXNlclVSTDtcclxuICAgICAgICAgICAgICBtZXRhZGF0YS5pc1JlcG9ydGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgbWV0YWRhdGEuc3Vic2NyaWJlckh5cGVydHkgPSBoeXBlcnR5VVJMO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoIWludGVyd29ya2luZykge1xyXG4gICAgICAgICAgICAgIC8vX3RoaXMuX2RhdGFPYmplY3RzU3RvcmFnZS5zZXQob2JqVVJMLCBmYWxzZSwgbXNnLmJvZHkuc2NoZW1hLCAnb24nLCByZXBseS5ib2R5Lm93bmVyLCBoeXBlcnR5VVJMLCBjaGlsZHJlbnMsIHVzZXJVUkwpO1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuX2RhdGFPYmplY3RzU3RvcmFnZS5zZXQobWV0YWRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChtZXRhZGF0YS5oYXNPd25Qcm9wZXJ0eSgnc3RvcmUnKSAmJiBtZXRhZGF0YS5zdG9yZSkgfHwgKG1ldGFkYXRhLmhhc093blByb3BlcnR5KCdpc1RvU2F2ZURhdGEnKSAmJiBtZXRhZGF0YS5pc1RvU2F2ZURhdGEpKSB7XHJcbiAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmlzVG9TYXZlRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLl9kYXRhT2JqZWN0c1N0b3JhZ2UudXBkYXRlKGZhbHNlLCBvYmpVUkwsICdpc1RvU2F2ZURhdGEnLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgX3RoaXMuX2RhdGFPYmplY3RzU3RvcmFnZS5zYXZlRGF0YShmYWxzZSwgb2JqVVJMLCBudWxsLCByZXBseS5ib2R5LnZhbHVlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgLy9mb3J3YXJkIHRvIGh5cGVydHk6XHJcbiAgICAgICAgICAgICAgcmVwbHkuaWQgPSBtc2cuaWQ7XHJcbiAgICAgICAgICAgICAgcmVwbHkuZnJvbSA9IF90aGlzLl91cmw7XHJcbiAgICAgICAgICAgICAgcmVwbHkudG8gPSBoeXBlcnR5VVJMO1xyXG4gICAgICAgICAgICAgIHJlcGx5LmJvZHkuc2NoZW1hID0gbXNnLmJvZHkuc2NoZW1hO1xyXG4gICAgICAgICAgICAgIHJlcGx5LmJvZHkucmVzb3VyY2UgPSBtc2cuYm9keS5yZXNvdXJjZTtcclxuXHJcbiAgICAgICAgICAgICAgLy9UT0RPOiBGb3IgRnVydGhlciBTdHVkeVxyXG4gICAgICAgICAgICAgIGlmIChtc2cuYm9keS5oYXNPd25Qcm9wZXJ0eSgnbXV0dWFsJykpIHJlcGx5LmJvZHkubXV0dWFsID0gbXNnLmJvZHkubXV0dWFsO1xyXG4gICAgICAgICAgICAgIGxvZy5sb2coJ1tzdWJzY3JpYmVdIC0gbmV3IHN1YnNjcmlwdGlvbjogJywgbXNnLCByZXBseSwgb2JzZXJ2ZXIpO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLl9idXMucG9zdE1lc3NhZ2UocmVwbHkpO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvL2xpc3RlbmVyIHJlamVjdGVkXHJcbiAgICAgICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHtcclxuICAgICAgICAgICAgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgZnJvbTogbXNnLnRvLCB0bzogaHlwZXJ0eVVSTCxcclxuICAgICAgICAgICAgYm9keTogcmVwbHkuYm9keVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBfcmVzdW1lU3Vic2NyaXB0aW9uKG1zZywgc3RvcmVkT2JqZWN0KSB7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcblxyXG4gICAgICBsZXQgb2JqVVJMID0gc3RvcmVkT2JqZWN0LnVybDtcclxuICAgICAgbGV0IHNjaGVtYSA9IHN0b3JlZE9iamVjdC5zY2hlbWE7XHJcblxyXG4gICAgICBsZXQgaHlwZXJ0eVVSTCA9IG1zZy5mcm9tO1xyXG5cclxuICAgICAgLy8gbGV0IG9ialVSTFN1YnNjcmlwdGlvbiA9IG9ialVSTCArICcvc3Vic2NyaXB0aW9uJztcclxuXHJcbiAgICAgIGxldCBjaGlsZEJhc2VVUkwgPSBvYmpVUkwgKyAnL2NoaWxkcmVuLyc7XHJcblxyXG4gICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIgLSBSZXVzZVN1YnNjcmlwdGlvbl0gLSBvYmpVUkw6ICcsIG9ialVSTCwgJyAtIHNjaGVtYTonLCBzY2hlbWEpO1xyXG5cclxuICAgICAgLy9nZXQgc2NoZW1hIGZyb20gY2F0YWxvZ3VlIGFuZCBwYXJzZSAtPiAoY2hpbGRyZW4pXHJcbiAgICAgIC8vIFRPRE86IHJlbW92ZSB0aGlzIHNpbmNlIGNoaWxkcmVuIHJlc291cmNlcyBzaG91bGQgYmUgYXZhaWxhYmxlIGluIHRoZSBEYXRhT2JqZWN0c1N0b3JhZ2VcclxuICAgICAgdGhpcy5fY2F0YWxvZy5nZXREYXRhU2NoZW1hRGVzY3JpcHRvcihzY2hlbWEpLnRoZW4oKGRlc2NyaXB0b3IpID0+IHtcclxuICAgICAgICBsZXQgcHJvcGVydGllcyA9IGRlc2NyaXB0b3Iuc291cmNlUGFja2FnZS5zb3VyY2VDb2RlLnByb3BlcnRpZXM7XHJcbiAgICAgICAgbGV0IGNoaWxkcmVucyA9IHByb3BlcnRpZXMuY2hpbGRyZW4gPyBwcm9wZXJ0aWVzLmNoaWxkcmVuLmNvbnN0YW50IDogW107XHJcblxyXG4gICAgICAgIC8vY2hpbGRyZW4gYWRkcmVzc2VzXHJcbiAgICAgICAgbGV0IHN1YnNjcmlwdGlvbnMgPSBbXTtcclxuICAgICAgICBzdWJzY3JpcHRpb25zLnB1c2gob2JqVVJMICsgJy9jaGFuZ2VzJyk7XHJcbiAgICAgICAgY2hpbGRyZW5zLmZvckVhY2goKGNoaWxkKSA9PiBzdWJzY3JpcHRpb25zLnB1c2goY2hpbGRCYXNlVVJMICsgY2hpbGQpKTtcclxuXHJcbiAgICAgICAgLy9GTE9XLU9VVDogcmVwbHkgd2l0aCBwcm92aXNpb25hbCByZXNwb25zZVxyXG4gICAgICAgIHRoaXMuX2J1cy5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCBmcm9tOiBtc2cudG8sIHRvOiBoeXBlcnR5VVJMLFxyXG4gICAgICAgICAgYm9keTogeyBjb2RlOiAxMDAsIGNoaWxkcmVuUmVzb3VyY2VzOiBjaGlsZHJlbnMsIHNjaGVtYTogc2NoZW1hLCByZXNvdXJjZTogb2JqVVJMIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy9GTE9XLU9VVDogc3Vic2NyaWJlIG1lc3NhZ2UgdG8gcmVtb3RlIFJlcG9ydGVyT2JqZWN0IC0+IF9vblJlbW90ZVN1YnNjcmliZVxyXG4gICAgICAgIC8qbGV0IG9ialN1YnNjcmliZU1zZyA9IHtcclxuICAgICAgICAgIHR5cGU6ICdzdWJzY3JpYmUnLCBmcm9tOiB0aGlzLl91cmwsIHRvOiBvYmpVUkxTdWJzY3JpcHRpb24sXHJcbiAgICAgICAgICBib2R5OiB7IHN1YnNjcmliZXI6IGh5cGVydHlVUkwsIGlkZW50aXR5OiBtc2cuYm9keS5pZGVudGl0eSB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy9zdWJzY3JpYmUgdG8gcmVwb3J0ZXIgU01cclxuICAgICAgICB0aGlzLl9idXMucG9zdE1lc3NhZ2Uob2JqU3Vic2NyaWJlTXNnLCAocmVwbHkpID0+IHsqL1xyXG5cclxuICAgICAgICBsZXQgb2JzZXJ2ZXIgPSB0aGlzLl9vYnNlcnZlcnNbb2JqVVJMXTtcclxuICAgICAgICBpZiAoIW9ic2VydmVyKSB7XHJcbiAgICAgICAgICBvYnNlcnZlciA9IG5ldyBPYnNlcnZlck9iamVjdCh0aGlzLCBvYmpVUkwsIGNoaWxkcmVucyk7XHJcbiAgICAgICAgICBvYnNlcnZlci5pc1RvU2F2ZURhdGEgPSBzdG9yZWRPYmplY3QuaXNUb1NhdmVEYXRhO1xyXG4gICAgICAgICAgdGhpcy5fb2JzZXJ2ZXJzW29ialVSTF0gPSBvYnNlcnZlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vcmVnaXN0ZXIgbmV3IGh5cGVydHkgc3Vic2NyaXB0aW9uXHJcbiAgICAgICAgb2JzZXJ2ZXIuYWRkU3Vic2NyaXB0aW9uKGh5cGVydHlVUkwpO1xyXG4gICAgICAgIG9ic2VydmVyLmFkZENoaWxkcmVucyhjaGlsZHJlbnMpO1xyXG5cclxuICAgICAgICAvLyBPYmplY3QuYXNzaWduKHN0b3JlZE9iamVjdC5kYXRhLCByZXBseS5ib2R5LnZhbHVlLmRhdGEpO1xyXG4gICAgICAgIC8vIE9iamVjdC5hc3NpZ24oc3RvcmVkT2JqZWN0LmNoaWxkcmVucywgcmVwbHkuYm9keS52YWx1ZS5jaGlsZHJlbnMpO1xyXG5cclxuICAgICAgICAvL2xvZy5sb2coJ1tzdWJzY3JpYmVdIC0gcmVzdW1lIHN1YnNjcmlwdGlvbjogJywgbXNnLCByZXBseSwgc3RvcmVkT2JqZWN0LCBvYnNlcnZlcik7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWNyeXB0Q2hpbGRyZW5zKHN0b3JlZE9iamVjdCwgY2hpbGRyZW5zKTtcclxuICAgICAgfSkudGhlbigoZGVjcnlwdGVkT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgLy8gbG9nLmxvZygncmVzdWx0IG9mIHByZXZpb3VzIHByb21pc2UnKTtcclxuICAgICAgICByZXNvbHZlKGRlY3J5cHRlZE9iamVjdCk7XHJcbiAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcclxuICAgICAgICBsb2cuZXJyb3IoJ1tTeW5jaGVyTWFuYWdlciAtIHJlc3VtZSBzdWJzY3JpcHRpb25dIC0gZmFpbCBvbiBnZXREYXRhU2NoZW1hRGVzY3JpcHRvcjogJywgcmVhc29uKTtcclxuICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vRkxPVy1JTjogbWVzc2FnZSByZWNlaXZlZCBmcm9tIGxvY2FsIERhdGFPYmplY3RPYnNlcnZlciAtPiB1bnN1YnNjcmliZVxyXG4gIF9vbkxvY2FsVW5TdWJzY3JpYmUobXNnKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBoeXBlcnR5VVJMID0gbXNnLmZyb207XHJcbiAgICBsZXQgb2JqVVJMID0gbXNnLmJvZHkucmVzb3VyY2U7XHJcblxyXG4gICAgbGV0IG9ic2VydmVyID0gX3RoaXMuX29ic2VydmVyc1tvYmpVUkxdO1xyXG4gICAgaWYgKG9ic2VydmVyKSB7XHJcbiAgICAgIC8vVE9ETzogaXMgdGhlcmUgYW55IHBvbGljeSB2ZXJpZmljYXRpb24gYmVmb3JlIGRlbGV0ZT9cclxuICAgICAgb2JzZXJ2ZXIucmVtb3ZlU3Vic2NyaXB0aW9uKG1zZyk7XHJcblxyXG4gICAgICAvL1RPRE86IGRlc3Ryb3kgb2JqZWN0IGluIHRoZSByZWdpc3RyeT9cclxuICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgZnJvbTogbXNnLnRvLCB0bzogbXNnLmZyb20sXHJcbiAgICAgICAgYm9keTogeyBjb2RlOiAyMDAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuX2RhdGFPYmplY3RzU3RvcmFnZS5kZWxldGVSZXNvdXJjZShvYmpVUkwpO1xyXG5cclxuICAgICAgLy9UT0RPOiByZW1vdmUgT2JqZWN0IGlmIG5vIG1vcmUgc3Vic2NyaXB0aW9uP1xyXG4gICAgICBkZWxldGUgX3RoaXMuX29ic2VydmVyc1tvYmpVUkxdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFN5bmNoZXJNYW5hZ2VyO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3N5bmNoZXIvU3luY2hlck1hbmFnZXIuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBO0FBREE7QUFDQTs7Ozs7QUFUQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFGQTtBQUNBO0FBV0E7Ozs7QUFJQTtBQUNBOzs7Ozs7Ozs7QUFVQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUpBO0FBTUE7QUFFQTtBQUNBOzs7OztBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFFQTs7O0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBRUE7QUFFQTs7O0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFFQTtBQUVBOzs7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQWx0QkE7QUFBQTtBQUFBOzs7OztBQXN0QkE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///506\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(508);\nmodule.exports = __webpack_require__(13).Object.values;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvdmFsdWVzLmpzPzRlNjUiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcub2JqZWN0LnZhbHVlcycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LnZhbHVlcztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvdmFsdWVzLmpzXG4vLyBtb2R1bGUgaWQgPSA1MDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///507\n")},function(module,exports,__webpack_require__){eval("// https://github.com/tc39/proposal-object-values-entries\nvar $export = __webpack_require__(21);\nvar $values = __webpack_require__(509)(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5vYmplY3QudmFsdWVzLmpzPzdkOTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JqZWN0LXZhbHVlcy1lbnRyaWVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICR2YWx1ZXMgPSByZXF1aXJlKCcuL19vYmplY3QtdG8tYXJyYXknKShmYWxzZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0Jywge1xuICB2YWx1ZXM6IGZ1bmN0aW9uIHZhbHVlcyhpdCkge1xuICAgIHJldHVybiAkdmFsdWVzKGl0KTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcub2JqZWN0LnZhbHVlcy5qc1xuLy8gbW9kdWxlIGlkID0gNTA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///508\n")},function(module,exports,__webpack_require__){eval("var getKeys = __webpack_require__(67);\nvar toIObject = __webpack_require__(45);\nvar isEnum = __webpack_require__(77).f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtdG8tYXJyYXkuanM/OTliNyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGlzRW51bSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKS5mO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXNFbnRyaWVzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdChpdCk7XG4gICAgdmFyIGtleXMgPSBnZXRLZXlzKE8pO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGkpIGlmIChpc0VudW0uY2FsbChPLCBrZXkgPSBrZXlzW2krK10pKSB7XG4gICAgICByZXN1bHQucHVzaChpc0VudHJpZXMgPyBba2V5LCBPW2tleV1dIDogT1trZXldKTtcbiAgICB9IHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC10by1hcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gNTA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///509\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(46);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nexports.schemaValidation = schemaValidation;\n\nvar _tv = __webpack_require__(511);\n\nvar _tv2 = _interopRequireDefault(_tv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction schemaValidation(scheme, descriptor, value) {\n\n console.log('Scheme: ', scheme);\n\n // schema validation\n console.log('Running object validation...');\n try {\n var obj = value;\n var schema = descriptor.sourcePackage.sourceCode;\n\n // add support for schema referencing itself\n _tv2.default.addSchema(schema.id, schema);\n\n // validate\n var result = _tv2.default.validateMultiple(obj, schema);\n\n // delete error stacks to improve logging\n result.errors.forEach(function (error) {\n delete error.stack;\n });\n\n // print more details about validation if it fails or schema contains $refs\n if (!result.valid || result.missing.length > 0) {\n console.warn('Object validation ' + (result.valid ? 'succeeded, but schema contained references:' : 'failed:'), (0, _stringify2.default)(result, null, 2));\n console.debug('Object:', (0, _stringify2.default)(obj, null, 2), '\\r\\nSchema:', (0, _stringify2.default)(schema, null, 2));\n } else {\n console.log('Object validation succeeded');\n }\n } catch (e) {\n console.warn('Error during object validation:', e);\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy91dGlscy9zY2hlbWFWYWxpZGF0aW9uLmpzP2JkODkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR2NCBmcm9tICcuL3R2NCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2NoZW1hVmFsaWRhdGlvbihzY2hlbWUsIGRlc2NyaXB0b3IsIHZhbHVlKSB7XHJcblxyXG4gIGNvbnNvbGUubG9nKCdTY2hlbWU6ICcsIHNjaGVtZSk7XHJcblxyXG4gIC8vIHNjaGVtYSB2YWxpZGF0aW9uXHJcbiAgY29uc29sZS5sb2coJ1J1bm5pbmcgb2JqZWN0IHZhbGlkYXRpb24uLi4nKTtcclxuICB0cnkge1xyXG4gICAgbGV0IG9iaiA9IHZhbHVlO1xyXG4gICAgbGV0IHNjaGVtYSA9IGRlc2NyaXB0b3Iuc291cmNlUGFja2FnZS5zb3VyY2VDb2RlO1xyXG5cclxuICAgIC8vIGFkZCBzdXBwb3J0IGZvciBzY2hlbWEgcmVmZXJlbmNpbmcgaXRzZWxmXHJcbiAgICB0djQuYWRkU2NoZW1hKHNjaGVtYS5pZCwgc2NoZW1hKTtcclxuXHJcbiAgICAvLyB2YWxpZGF0ZVxyXG4gICAgbGV0IHJlc3VsdCA9IHR2NC52YWxpZGF0ZU11bHRpcGxlKG9iaiwgc2NoZW1hKTtcclxuXHJcbiAgICAvLyBkZWxldGUgZXJyb3Igc3RhY2tzIHRvIGltcHJvdmUgbG9nZ2luZ1xyXG4gICAgcmVzdWx0LmVycm9ycy5mb3JFYWNoKChlcnJvcikgPT4ge1xyXG4gICAgICBkZWxldGUgZXJyb3Iuc3RhY2s7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBwcmludCBtb3JlIGRldGFpbHMgYWJvdXQgdmFsaWRhdGlvbiBpZiBpdCBmYWlscyBvciBzY2hlbWEgY29udGFpbnMgJHJlZnNcclxuICAgIGlmICghcmVzdWx0LnZhbGlkIHx8IChyZXN1bHQubWlzc2luZy5sZW5ndGggPiAwKSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ09iamVjdCB2YWxpZGF0aW9uICcgKyAocmVzdWx0LnZhbGlkID8gJ3N1Y2NlZWRlZCwgYnV0IHNjaGVtYSBjb250YWluZWQgcmVmZXJlbmNlczonIDogJ2ZhaWxlZDonKSwgSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKSk7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcoJ09iamVjdDonLCBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsIDIpLCAnXFxyXFxuU2NoZW1hOicsIEpTT04uc3RyaW5naWZ5KHNjaGVtYSwgbnVsbCwgMikpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5sb2coJ09iamVjdCB2YWxpZGF0aW9uIHN1Y2NlZWRlZCcpO1xyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKGUpIHtcclxuICAgIGNvbnNvbGUud2FybignRXJyb3IgZHVyaW5nIG9iamVjdCB2YWxpZGF0aW9uOicsIGUpO1xyXG4gIH1cclxuXHJcbn1cclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy91dGlscy9zY2hlbWFWYWxpZGF0aW9uLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRUE7QUFDQTtBQUhBO0FBQ0E7Ozs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///510\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(46);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _defineProperty = __webpack_require__(200);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nvar _isFrozen = __webpack_require__(512);\n\nvar _isFrozen2 = _interopRequireDefault(_isFrozen);\n\nvar _create = __webpack_require__(203);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(78);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\r\n Author: Geraint Luff and others\r\n Year: 2013\r\n\r\n This code is released into the \"public domain\" by its author(s). Anybody may use, alter and distribute the code without restriction. The author makes no guarantees, and takes no liability of any kind for use of this code.\r\n\r\n If you find a bug or make an improvement, it would be courteous to let the author know, but it is not compulsory.\r\n */\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FObject%2Fkeys\nif (!_keys2.default) {\n Object.keys = function () {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n hasDontEnumBug = !{ toString: null }.propertyIsEnumerable('toString'),\n dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor'],\n dontEnumsLength = dontEnums.length;\n\n return function (obj) {\n if ((typeof obj === 'undefined' ? 'undefined' : (0, _typeof3.default)(obj)) !== 'object' && typeof obj !== 'function' || obj === null) {\n throw new TypeError('Object.keys called on non-object');\n }\n\n var result = [];\n\n for (var prop in obj) {\n if (hasOwnProperty.call(obj, prop)) {\n result.push(prop);\n }\n }\n\n if (hasDontEnumBug) {\n for (var i = 0; i < dontEnumsLength; i++) {\n if (hasOwnProperty.call(obj, dontEnums[i])) {\n result.push(dontEnums[i]);\n }\n }\n }\n return result;\n };\n }();\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create\nif (!_create2.default) {\n Object.create = function () {\n function F() {}\n\n return function (o) {\n if (arguments.length !== 1) {\n throw new Error('Object.create implementation only accepts one parameter.');\n }\n F.prototype = o;\n return new F();\n };\n }();\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FArray%2FisArray\nif (!Array.isArray) {\n Array.isArray = function (vArg) {\n return Object.prototype.toString.call(vArg) === \"[object Array]\";\n };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FArray%2FindexOf\nif (!Array.prototype.indexOf) {\n Array.prototype.indexOf = function (searchElement /*, fromIndex */) {\n if (this === null) {\n throw new TypeError();\n }\n var t = Object(this);\n var len = t.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n var n = 0;\n if (arguments.length > 1) {\n n = Number(arguments[1]);\n if (n !== n) {\n // shortcut for verifying if it's NaN\n n = 0;\n } else if (n !== 0 && n !== Infinity && n !== -Infinity) {\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\n }\n }\n if (n >= len) {\n return -1;\n }\n var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);\n for (; k < len; k++) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n return -1;\n };\n}\n\n// Grungey Object.isFrozen hack\nif (!_isFrozen2.default) {\n Object.isFrozen = function (obj) {\n var key = \"tv4_test_frozen_key\";\n while (obj.hasOwnProperty(key)) {\n key += Math.random();\n }\n try {\n obj[key] = true;\n delete obj[key];\n return false;\n } catch (e) {\n return true;\n }\n };\n}\n// Based on: https://github.com/geraintluff/uri-templates, but with all the de-substitution stuff removed\n\nvar uriTemplateGlobalModifiers = {\n \"+\": true,\n \"#\": true,\n \".\": true,\n \"/\": true,\n \";\": true,\n \"?\": true,\n \"&\": true\n};\nvar uriTemplateSuffices = {\n \"*\": true\n};\n\nfunction notReallyPercentEncode(string) {\n return encodeURI(string).replace(/%25[0-9][0-9]/g, function (doubleEncoded) {\n return \"%\" + doubleEncoded.substring(3);\n });\n}\n\nfunction uriTemplateSubstitution(spec) {\n var modifier = \"\";\n if (uriTemplateGlobalModifiers[spec.charAt(0)]) {\n modifier = spec.charAt(0);\n spec = spec.substring(1);\n }\n var separator = \"\";\n var prefix = \"\";\n var shouldEscape = true;\n var showVariables = false;\n var trimEmptyString = false;\n if (modifier === '+') {\n shouldEscape = false;\n } else if (modifier === \".\") {\n prefix = \".\";\n separator = \".\";\n } else if (modifier === \"/\") {\n prefix = \"/\";\n separator = \"/\";\n } else if (modifier === '#') {\n prefix = \"#\";\n shouldEscape = false;\n } else if (modifier === ';') {\n prefix = \";\";\n separator = \";\";\n showVariables = true;\n trimEmptyString = true;\n } else if (modifier === '?') {\n prefix = \"?\";\n separator = \"&\";\n showVariables = true;\n } else if (modifier === '&') {\n prefix = \"&\";\n separator = \"&\";\n showVariables = true;\n }\n\n var varNames = [];\n var varList = spec.split(\",\");\n var varSpecs = [];\n var varSpecMap = {};\n for (var i = 0; i < varList.length; i++) {\n var varName = varList[i];\n var truncate = null;\n if (varName.indexOf(\":\") !== -1) {\n var parts = varName.split(\":\");\n varName = parts[0];\n truncate = parseInt(parts[1], 10);\n }\n var suffices = {};\n while (uriTemplateSuffices[varName.charAt(varName.length - 1)]) {\n suffices[varName.charAt(varName.length - 1)] = true;\n varName = varName.substring(0, varName.length - 1);\n }\n var varSpec = {\n truncate: truncate,\n name: varName,\n suffices: suffices\n };\n varSpecs.push(varSpec);\n varSpecMap[varName] = varSpec;\n varNames.push(varName);\n }\n var subFunction = function subFunction(valueFunction) {\n var result = \"\";\n var startIndex = 0;\n for (var i = 0; i < varSpecs.length; i++) {\n var varSpec = varSpecs[i];\n var value = valueFunction(varSpec.name);\n if (value === null || value === undefined || Array.isArray(value) && value.length === 0 || (typeof value === 'undefined' ? 'undefined' : (0, _typeof3.default)(value)) === 'object' && (0, _keys2.default)(value).length === 0) {\n startIndex++;\n continue;\n }\n if (i === startIndex) {\n result += prefix;\n } else {\n result += separator || \",\";\n }\n if (Array.isArray(value)) {\n if (showVariables) {\n result += varSpec.name + \"=\";\n }\n for (var j = 0; j < value.length; j++) {\n if (j > 0) {\n result += varSpec.suffices['*'] ? separator || \",\" : \",\";\n if (varSpec.suffices['*'] && showVariables) {\n result += varSpec.name + \"=\";\n }\n }\n result += shouldEscape ? encodeURIComponent(value[j]).replace(/!/g, \"%21\") : notReallyPercentEncode(value[j]);\n }\n } else if ((typeof value === 'undefined' ? 'undefined' : (0, _typeof3.default)(value)) === \"object\") {\n if (showVariables && !varSpec.suffices['*']) {\n result += varSpec.name + \"=\";\n }\n var first = true;\n for (var key in value) {\n if (!first) {\n result += varSpec.suffices['*'] ? separator || \",\" : \",\";\n }\n first = false;\n result += shouldEscape ? encodeURIComponent(key).replace(/!/g, \"%21\") : notReallyPercentEncode(key);\n result += varSpec.suffices['*'] ? '=' : \",\";\n result += shouldEscape ? encodeURIComponent(value[key]).replace(/!/g, \"%21\") : notReallyPercentEncode(value[key]);\n }\n } else {\n if (showVariables) {\n result += varSpec.name;\n if (!trimEmptyString || value !== \"\") {\n result += \"=\";\n }\n }\n if (varSpec.truncate != null) {\n value = value.substring(0, varSpec.truncate);\n }\n result += shouldEscape ? encodeURIComponent(value).replace(/!/g, \"%21\") : notReallyPercentEncode(value);\n }\n }\n return result;\n };\n subFunction.varNames = varNames;\n return {\n prefix: prefix,\n substitution: subFunction\n };\n}\n\nfunction UriTemplate(template) {\n if (!(this instanceof UriTemplate)) {\n return new UriTemplate(template);\n }\n var parts = template.split(\"{\");\n var textParts = [parts.shift()];\n var prefixes = [];\n var substitutions = [];\n var varNames = [];\n while (parts.length > 0) {\n var part = parts.shift();\n var spec = part.split(\"}\")[0];\n var remainder = part.substring(spec.length + 1);\n var funcs = uriTemplateSubstitution(spec);\n substitutions.push(funcs.substitution);\n prefixes.push(funcs.prefix);\n textParts.push(remainder);\n varNames = varNames.concat(funcs.substitution.varNames);\n }\n this.fill = function (valueFunction) {\n var result = textParts[0];\n for (var i = 0; i < substitutions.length; i++) {\n var substitution = substitutions[i];\n result += substitution(valueFunction);\n result += textParts[i + 1];\n }\n return result;\n };\n this.varNames = varNames;\n this.template = template;\n}\n\nUriTemplate.prototype = {\n toString: function toString() {\n return this.template;\n },\n fillFromObject: function fillFromObject(obj) {\n return this.fill(function (varName) {\n return obj[varName];\n });\n }\n};\nvar ValidatorContext = function ValidatorContext(parent, collectMultiple, errorReporter, checkRecursive, trackUnknownProperties) {\n this.missing = [];\n this.missingMap = {};\n this.formatValidators = parent ? (0, _create2.default)(parent.formatValidators) : {};\n this.schemas = parent ? (0, _create2.default)(parent.schemas) : {};\n this.collectMultiple = collectMultiple;\n this.errors = [];\n this.handleError = collectMultiple ? this.collectError : this.returnError;\n if (checkRecursive) {\n this.checkRecursive = true;\n this.scanned = [];\n this.scannedFrozen = [];\n this.scannedFrozenSchemas = [];\n this.scannedFrozenValidationErrors = [];\n this.validatedSchemasKey = 'tv4_validation_id';\n this.validationErrorsKey = 'tv4_validation_errors_id';\n }\n if (trackUnknownProperties) {\n this.trackUnknownProperties = true;\n this.knownPropertyPaths = {};\n this.unknownPropertyPaths = {};\n }\n this.errorReporter = errorReporter || defaultErrorReporter('en');\n if (typeof this.errorReporter === 'string') {\n throw new Error('debug');\n }\n this.definedKeywords = {};\n if (parent) {\n for (var key in parent.definedKeywords) {\n this.definedKeywords[key] = parent.definedKeywords[key].slice(0);\n }\n }\n};\nValidatorContext.prototype.defineKeyword = function (keyword, keywordFunction) {\n this.definedKeywords[keyword] = this.definedKeywords[keyword] || [];\n this.definedKeywords[keyword].push(keywordFunction);\n};\nValidatorContext.prototype.createError = function (code, messageParams, dataPath, schemaPath, subErrors, data, schema) {\n var error = new ValidationError(code, messageParams, dataPath, schemaPath, subErrors);\n error.message = this.errorReporter(error, data, schema);\n return error;\n};\nValidatorContext.prototype.returnError = function (error) {\n return error;\n};\nValidatorContext.prototype.collectError = function (error) {\n if (error) {\n this.errors.push(error);\n }\n return null;\n};\nValidatorContext.prototype.prefixErrors = function (startIndex, dataPath, schemaPath) {\n for (var i = startIndex; i < this.errors.length; i++) {\n this.errors[i] = this.errors[i].prefixWith(dataPath, schemaPath);\n }\n return this;\n};\nValidatorContext.prototype.banUnknownProperties = function (data, schema) {\n for (var unknownPath in this.unknownPropertyPaths) {\n var error = this.createError(ErrorCodes.UNKNOWN_PROPERTY, { path: unknownPath }, unknownPath, \"\", null, data, schema);\n var result = this.handleError(error);\n if (result) {\n return result;\n }\n }\n return null;\n};\n\nValidatorContext.prototype.addFormat = function (format, validator) {\n if ((typeof format === 'undefined' ? 'undefined' : (0, _typeof3.default)(format)) === 'object') {\n for (var key in format) {\n this.addFormat(key, format[key]);\n }\n return this;\n }\n this.formatValidators[format] = validator;\n};\nValidatorContext.prototype.resolveRefs = function (schema, urlHistory) {\n if (schema['$ref'] !== undefined) {\n urlHistory = urlHistory || {};\n if (urlHistory[schema['$ref']]) {\n return this.createError(ErrorCodes.CIRCULAR_REFERENCE, { urls: (0, _keys2.default)(urlHistory).join(', ') }, '', '', null, undefined, schema);\n }\n urlHistory[schema['$ref']] = true;\n schema = this.getSchema(schema['$ref'], urlHistory);\n }\n return schema;\n};\nValidatorContext.prototype.getSchema = function (url, urlHistory) {\n var schema;\n if (this.schemas[url] !== undefined) {\n schema = this.schemas[url];\n return this.resolveRefs(schema, urlHistory);\n }\n var baseUrl = url;\n var fragment = \"\";\n if (url.indexOf('#') !== -1) {\n fragment = url.substring(url.indexOf(\"#\") + 1);\n baseUrl = url.substring(0, url.indexOf(\"#\"));\n }\n if ((0, _typeof3.default)(this.schemas[baseUrl]) === 'object') {\n schema = this.schemas[baseUrl];\n var pointerPath = decodeURIComponent(fragment);\n if (pointerPath === \"\") {\n return this.resolveRefs(schema, urlHistory);\n } else if (pointerPath.charAt(0) !== \"/\") {\n return undefined;\n }\n var parts = pointerPath.split(\"/\").slice(1);\n for (var i = 0; i < parts.length; i++) {\n var component = parts[i].replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n if (schema[component] === undefined) {\n schema = undefined;\n break;\n }\n schema = schema[component];\n }\n if (schema !== undefined) {\n return this.resolveRefs(schema, urlHistory);\n }\n }\n if (this.missing[baseUrl] === undefined) {\n this.missing.push(baseUrl);\n this.missing[baseUrl] = baseUrl;\n this.missingMap[baseUrl] = baseUrl;\n }\n};\nValidatorContext.prototype.searchSchemas = function (schema, url) {\n if (Array.isArray(schema)) {\n for (var i = 0; i < schema.length; i++) {\n this.searchSchemas(schema[i], url);\n }\n } else if (schema && (typeof schema === 'undefined' ? 'undefined' : (0, _typeof3.default)(schema)) === \"object\") {\n if (typeof schema.id === \"string\") {\n if (isTrustedUrl(url, schema.id)) {\n if (this.schemas[schema.id] === undefined) {\n this.schemas[schema.id] = schema;\n }\n }\n }\n for (var key in schema) {\n if (key !== \"enum\") {\n if ((0, _typeof3.default)(schema[key]) === \"object\") {\n this.searchSchemas(schema[key], url);\n } else if (key === \"$ref\") {\n var uri = getDocumentUri(schema[key]);\n if (uri && this.schemas[uri] === undefined && this.missingMap[uri] === undefined) {\n this.missingMap[uri] = uri;\n }\n }\n }\n }\n }\n};\nValidatorContext.prototype.addSchema = function (url, schema) {\n //overload\n if (typeof url !== 'string' || typeof schema === 'undefined') {\n if ((typeof url === 'undefined' ? 'undefined' : (0, _typeof3.default)(url)) === 'object' && typeof url.id === 'string') {\n schema = url;\n url = schema.id;\n } else {\n return;\n }\n }\n if (url === getDocumentUri(url) + \"#\") {\n // Remove empty fragment\n url = getDocumentUri(url);\n }\n this.schemas[url] = schema;\n delete this.missingMap[url];\n normSchema(schema, url);\n this.searchSchemas(schema, url);\n};\n\nValidatorContext.prototype.getSchemaMap = function () {\n var map = {};\n for (var key in this.schemas) {\n map[key] = this.schemas[key];\n }\n return map;\n};\n\nValidatorContext.prototype.getSchemaUris = function (filterRegExp) {\n var list = [];\n for (var key in this.schemas) {\n if (!filterRegExp || filterRegExp.test(key)) {\n list.push(key);\n }\n }\n return list;\n};\n\nValidatorContext.prototype.getMissingUris = function (filterRegExp) {\n var list = [];\n for (var key in this.missingMap) {\n if (!filterRegExp || filterRegExp.test(key)) {\n list.push(key);\n }\n }\n return list;\n};\n\nValidatorContext.prototype.dropSchemas = function () {\n this.schemas = {};\n this.reset();\n};\nValidatorContext.prototype.reset = function () {\n this.missing = [];\n this.missingMap = {};\n this.errors = [];\n};\n\nValidatorContext.prototype.validateAll = function (data, schema, dataPathParts, schemaPathParts, dataPointerPath) {\n var topLevel;\n schema = this.resolveRefs(schema);\n if (!schema) {\n return null;\n } else if (schema instanceof ValidationError) {\n this.errors.push(schema);\n return schema;\n }\n\n var startErrorCount = this.errors.length;\n var frozenIndex,\n scannedFrozenSchemaIndex = null,\n scannedSchemasIndex = null;\n if (this.checkRecursive && data && (typeof data === 'undefined' ? 'undefined' : (0, _typeof3.default)(data)) === 'object') {\n topLevel = !this.scanned.length;\n if (data[this.validatedSchemasKey]) {\n var schemaIndex = data[this.validatedSchemasKey].indexOf(schema);\n if (schemaIndex !== -1) {\n this.errors = this.errors.concat(data[this.validationErrorsKey][schemaIndex]);\n return null;\n }\n }\n if ((0, _isFrozen2.default)(data)) {\n frozenIndex = this.scannedFrozen.indexOf(data);\n if (frozenIndex !== -1) {\n var frozenSchemaIndex = this.scannedFrozenSchemas[frozenIndex].indexOf(schema);\n if (frozenSchemaIndex !== -1) {\n this.errors = this.errors.concat(this.scannedFrozenValidationErrors[frozenIndex][frozenSchemaIndex]);\n return null;\n }\n }\n }\n this.scanned.push(data);\n if ((0, _isFrozen2.default)(data)) {\n if (frozenIndex === -1) {\n frozenIndex = this.scannedFrozen.length;\n this.scannedFrozen.push(data);\n this.scannedFrozenSchemas.push([]);\n }\n scannedFrozenSchemaIndex = this.scannedFrozenSchemas[frozenIndex].length;\n this.scannedFrozenSchemas[frozenIndex][scannedFrozenSchemaIndex] = schema;\n this.scannedFrozenValidationErrors[frozenIndex][scannedFrozenSchemaIndex] = [];\n } else {\n if (!data[this.validatedSchemasKey]) {\n try {\n (0, _defineProperty2.default)(data, this.validatedSchemasKey, {\n value: [],\n configurable: true\n });\n (0, _defineProperty2.default)(data, this.validationErrorsKey, {\n value: [],\n configurable: true\n });\n } catch (e) {\n //IE 7/8 workaround\n data[this.validatedSchemasKey] = [];\n data[this.validationErrorsKey] = [];\n }\n }\n scannedSchemasIndex = data[this.validatedSchemasKey].length;\n data[this.validatedSchemasKey][scannedSchemasIndex] = schema;\n data[this.validationErrorsKey][scannedSchemasIndex] = [];\n }\n }\n\n var errorCount = this.errors.length;\n var error = this.validateBasic(data, schema, dataPointerPath) || this.validateNumeric(data, schema, dataPointerPath) || this.validateString(data, schema, dataPointerPath) || this.validateArray(data, schema, dataPointerPath) || this.validateObject(data, schema, dataPointerPath) || this.validateCombinations(data, schema, dataPointerPath) || this.validateHypermedia(data, schema, dataPointerPath) || this.validateFormat(data, schema, dataPointerPath) || this.validateDefinedKeywords(data, schema, dataPointerPath) || null;\n\n if (topLevel) {\n while (this.scanned.length) {\n var item = this.scanned.pop();\n delete item[this.validatedSchemasKey];\n }\n this.scannedFrozen = [];\n this.scannedFrozenSchemas = [];\n }\n\n if (error || errorCount !== this.errors.length) {\n while (dataPathParts && dataPathParts.length || schemaPathParts && schemaPathParts.length) {\n var dataPart = dataPathParts && dataPathParts.length ? \"\" + dataPathParts.pop() : null;\n var schemaPart = schemaPathParts && schemaPathParts.length ? \"\" + schemaPathParts.pop() : null;\n if (error) {\n error = error.prefixWith(dataPart, schemaPart);\n }\n this.prefixErrors(errorCount, dataPart, schemaPart);\n }\n }\n\n if (scannedFrozenSchemaIndex !== null) {\n this.scannedFrozenValidationErrors[frozenIndex][scannedFrozenSchemaIndex] = this.errors.slice(startErrorCount);\n } else if (scannedSchemasIndex !== null) {\n data[this.validationErrorsKey][scannedSchemasIndex] = this.errors.slice(startErrorCount);\n }\n\n return this.handleError(error);\n};\nValidatorContext.prototype.validateFormat = function (data, schema) {\n if (typeof schema.format !== 'string' || !this.formatValidators[schema.format]) {\n return null;\n }\n var errorMessage = this.formatValidators[schema.format].call(null, data, schema);\n if (typeof errorMessage === 'string' || typeof errorMessage === 'number') {\n return this.createError(ErrorCodes.FORMAT_CUSTOM, { message: errorMessage }, '', '/format', null, data, schema);\n } else if (errorMessage && (typeof errorMessage === 'undefined' ? 'undefined' : (0, _typeof3.default)(errorMessage)) === 'object') {\n return this.createError(ErrorCodes.FORMAT_CUSTOM, { message: errorMessage.message || \"?\" }, errorMessage.dataPath || '', errorMessage.schemaPath || \"/format\", null, data, schema);\n }\n return null;\n};\nValidatorContext.prototype.validateDefinedKeywords = function (data, schema, dataPointerPath) {\n for (var key in this.definedKeywords) {\n if (typeof schema[key] === 'undefined') {\n continue;\n }\n var validationFunctions = this.definedKeywords[key];\n for (var i = 0; i < validationFunctions.length; i++) {\n var func = validationFunctions[i];\n var result = func(data, schema[key], schema, dataPointerPath);\n if (typeof result === 'string' || typeof result === 'number') {\n return this.createError(ErrorCodes.KEYWORD_CUSTOM, {\n key: key,\n message: result\n }, '', '', null, data, schema).prefixWith(null, key);\n } else if (result && (typeof result === 'undefined' ? 'undefined' : (0, _typeof3.default)(result)) === 'object') {\n var code = result.code;\n if (typeof code === 'string') {\n if (!ErrorCodes[code]) {\n throw new Error('Undefined error code (use defineError): ' + code);\n }\n code = ErrorCodes[code];\n } else if (typeof code !== 'number') {\n code = ErrorCodes.KEYWORD_CUSTOM;\n }\n var messageParams = (0, _typeof3.default)(result.message) === 'object' ? result.message : {\n key: key,\n message: result.message || \"?\"\n };\n var schemaPath = result.schemaPath || \"/\" + key.replace(/~/g, '~0').replace(/\\//g, '~1');\n return this.createError(code, messageParams, result.dataPath || null, schemaPath, null, data, schema);\n }\n }\n }\n return null;\n};\n\nfunction recursiveCompare(A, B) {\n if (A === B) {\n return true;\n }\n if (A && B && (typeof A === 'undefined' ? 'undefined' : (0, _typeof3.default)(A)) === \"object\" && (typeof B === 'undefined' ? 'undefined' : (0, _typeof3.default)(B)) === \"object\") {\n if (Array.isArray(A) !== Array.isArray(B)) {\n return false;\n } else if (Array.isArray(A)) {\n if (A.length !== B.length) {\n return false;\n }\n for (var i = 0; i < A.length; i++) {\n if (!recursiveCompare(A[i], B[i])) {\n return false;\n }\n }\n } else {\n var key;\n for (key in A) {\n if (B[key] === undefined && A[key] !== undefined) {\n return false;\n }\n }\n for (key in B) {\n if (A[key] === undefined && B[key] !== undefined) {\n return false;\n }\n }\n for (key in A) {\n if (!recursiveCompare(A[key], B[key])) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n}\n\nValidatorContext.prototype.validateBasic = function validateBasic(data, schema, dataPointerPath) {\n var error;\n if (error = this.validateType(data, schema, dataPointerPath)) {\n return error.prefixWith(null, \"type\");\n }\n if (error = this.validateEnum(data, schema, dataPointerPath)) {\n return error.prefixWith(null, \"type\");\n }\n return null;\n};\n\nValidatorContext.prototype.validateType = function validateType(data, schema) {\n if (schema.type === undefined) {\n return null;\n }\n var dataType = typeof data === 'undefined' ? 'undefined' : (0, _typeof3.default)(data);\n if (data === null) {\n dataType = \"null\";\n } else if (Array.isArray(data)) {\n dataType = \"array\";\n }\n var allowedTypes = schema.type;\n if (!Array.isArray(allowedTypes)) {\n allowedTypes = [allowedTypes];\n }\n\n for (var i = 0; i < allowedTypes.length; i++) {\n var type = allowedTypes[i];\n if (type === dataType || type === \"integer\" && dataType === \"number\" && data % 1 === 0) {\n return null;\n }\n }\n return this.createError(ErrorCodes.INVALID_TYPE, {\n type: dataType,\n expected: allowedTypes.join(\"/\")\n }, '', '', null, data, schema);\n};\n\nValidatorContext.prototype.validateEnum = function validateEnum(data, schema) {\n if (schema[\"enum\"] === undefined) {\n return null;\n }\n for (var i = 0; i < schema[\"enum\"].length; i++) {\n var enumVal = schema[\"enum\"][i];\n if (recursiveCompare(data, enumVal)) {\n return null;\n }\n }\n return this.createError(ErrorCodes.ENUM_MISMATCH, { value: typeof JSON !== 'undefined' ? (0, _stringify2.default)(data) : data }, '', '', null, data, schema);\n};\n\nValidatorContext.prototype.validateNumeric = function validateNumeric(data, schema, dataPointerPath) {\n return this.validateMultipleOf(data, schema, dataPointerPath) || this.validateMinMax(data, schema, dataPointerPath) || this.validateNaN(data, schema, dataPointerPath) || null;\n};\n\nvar CLOSE_ENOUGH_LOW = Math.pow(2, -51);\nvar CLOSE_ENOUGH_HIGH = 1 - CLOSE_ENOUGH_LOW;\nValidatorContext.prototype.validateMultipleOf = function validateMultipleOf(data, schema) {\n var multipleOf = schema.multipleOf || schema.divisibleBy;\n if (multipleOf === undefined) {\n return null;\n }\n if (typeof data === \"number\") {\n var remainder = data / multipleOf % 1;\n if (remainder >= CLOSE_ENOUGH_LOW && remainder < CLOSE_ENOUGH_HIGH) {\n return this.createError(ErrorCodes.NUMBER_MULTIPLE_OF, {\n value: data,\n multipleOf: multipleOf\n }, '', '', null, data, schema);\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateMinMax = function validateMinMax(data, schema) {\n if (typeof data !== \"number\") {\n return null;\n }\n if (schema.minimum !== undefined) {\n if (data < schema.minimum) {\n return this.createError(ErrorCodes.NUMBER_MINIMUM, {\n value: data,\n minimum: schema.minimum\n }, '', '/minimum', null, data, schema);\n }\n if (schema.exclusiveMinimum && data === schema.minimum) {\n return this.createError(ErrorCodes.NUMBER_MINIMUM_EXCLUSIVE, {\n value: data,\n minimum: schema.minimum\n }, '', '/exclusiveMinimum', null, data, schema);\n }\n }\n if (schema.maximum !== undefined) {\n if (data > schema.maximum) {\n return this.createError(ErrorCodes.NUMBER_MAXIMUM, {\n value: data,\n maximum: schema.maximum\n }, '', '/maximum', null, data, schema);\n }\n if (schema.exclusiveMaximum && data === schema.maximum) {\n return this.createError(ErrorCodes.NUMBER_MAXIMUM_EXCLUSIVE, {\n value: data,\n maximum: schema.maximum\n }, '', '/exclusiveMaximum', null, data, schema);\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateNaN = function validateNaN(data, schema) {\n if (typeof data !== \"number\") {\n return null;\n }\n if (isNaN(data) === true || data === Infinity || data === -Infinity) {\n return this.createError(ErrorCodes.NUMBER_NOT_A_NUMBER, { value: data }, '', '/type', null, data, schema);\n }\n return null;\n};\n\nValidatorContext.prototype.validateString = function validateString(data, schema, dataPointerPath) {\n return this.validateStringLength(data, schema, dataPointerPath) || this.validateStringPattern(data, schema, dataPointerPath) || null;\n};\n\nValidatorContext.prototype.validateStringLength = function validateStringLength(data, schema) {\n if (typeof data !== \"string\") {\n return null;\n }\n if (schema.minLength !== undefined) {\n if (data.length < schema.minLength) {\n return this.createError(ErrorCodes.STRING_LENGTH_SHORT, {\n length: data.length,\n minimum: schema.minLength\n }, '', '/minLength', null, data, schema);\n }\n }\n if (schema.maxLength !== undefined) {\n if (data.length > schema.maxLength) {\n return this.createError(ErrorCodes.STRING_LENGTH_LONG, {\n length: data.length,\n maximum: schema.maxLength\n }, '', '/maxLength', null, data, schema);\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateStringPattern = function validateStringPattern(data, schema) {\n if (typeof data !== \"string\" || typeof schema.pattern !== \"string\" && !(schema.pattern instanceof RegExp)) {\n return null;\n }\n var regexp;\n if (schema.pattern instanceof RegExp) {\n regexp = schema.pattern;\n } else {\n var body,\n flags = '';\n // Check for regular expression literals\n // @see http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.5\n var literal = schema.pattern.match(/^\\/(.+)\\/([img]*)$/);\n if (literal) {\n body = literal[1];\n flags = literal[2];\n } else {\n body = schema.pattern;\n }\n regexp = new RegExp(body, flags);\n }\n if (!regexp.test(data)) {\n return this.createError(ErrorCodes.STRING_PATTERN, { pattern: schema.pattern }, '', '/pattern', null, data, schema);\n }\n return null;\n};\n\nValidatorContext.prototype.validateArray = function validateArray(data, schema, dataPointerPath) {\n if (!Array.isArray(data)) {\n return null;\n }\n return this.validateArrayLength(data, schema, dataPointerPath) || this.validateArrayUniqueItems(data, schema, dataPointerPath) || this.validateArrayItems(data, schema, dataPointerPath) || null;\n};\n\nValidatorContext.prototype.validateArrayLength = function validateArrayLength(data, schema) {\n var error;\n if (schema.minItems !== undefined) {\n if (data.length < schema.minItems) {\n error = this.createError(ErrorCodes.ARRAY_LENGTH_SHORT, {\n length: data.length,\n minimum: schema.minItems\n }, '', '/minItems', null, data, schema);\n if (this.handleError(error)) {\n return error;\n }\n }\n }\n if (schema.maxItems !== undefined) {\n if (data.length > schema.maxItems) {\n error = this.createError(ErrorCodes.ARRAY_LENGTH_LONG, {\n length: data.length,\n maximum: schema.maxItems\n }, '', '/maxItems', null, data, schema);\n if (this.handleError(error)) {\n return error;\n }\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateArrayUniqueItems = function validateArrayUniqueItems(data, schema) {\n if (schema.uniqueItems) {\n for (var i = 0; i < data.length; i++) {\n for (var j = i + 1; j < data.length; j++) {\n if (recursiveCompare(data[i], data[j])) {\n var error = this.createError(ErrorCodes.ARRAY_UNIQUE, {\n match1: i,\n match2: j\n }, '', '/uniqueItems', null, data, schema);\n if (this.handleError(error)) {\n return error;\n }\n }\n }\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateArrayItems = function validateArrayItems(data, schema, dataPointerPath) {\n if (schema.items === undefined) {\n return null;\n }\n var error, i;\n if (Array.isArray(schema.items)) {\n for (i = 0; i < data.length; i++) {\n if (i < schema.items.length) {\n if (error = this.validateAll(data[i], schema.items[i], [i], [\"items\", i], dataPointerPath + \"/\" + i)) {\n return error;\n }\n } else if (schema.additionalItems !== undefined) {\n if (typeof schema.additionalItems === \"boolean\") {\n if (!schema.additionalItems) {\n error = this.createError(ErrorCodes.ARRAY_ADDITIONAL_ITEMS, {}, '/' + i, '/additionalItems', null, data, schema);\n if (this.handleError(error)) {\n return error;\n }\n }\n } else if (error = this.validateAll(data[i], schema.additionalItems, [i], [\"additionalItems\"], dataPointerPath + \"/\" + i)) {\n return error;\n }\n }\n }\n } else {\n for (i = 0; i < data.length; i++) {\n if (error = this.validateAll(data[i], schema.items, [i], [\"items\"], dataPointerPath + \"/\" + i)) {\n return error;\n }\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateObject = function validateObject(data, schema, dataPointerPath) {\n if ((typeof data === 'undefined' ? 'undefined' : (0, _typeof3.default)(data)) !== \"object\" || data === null || Array.isArray(data)) {\n return null;\n }\n return this.validateObjectMinMaxProperties(data, schema, dataPointerPath) || this.validateObjectRequiredProperties(data, schema, dataPointerPath) || this.validateObjectProperties(data, schema, dataPointerPath) || this.validateObjectDependencies(data, schema, dataPointerPath) || null;\n};\n\nValidatorContext.prototype.validateObjectMinMaxProperties = function validateObjectMinMaxProperties(data, schema) {\n var keys = (0, _keys2.default)(data);\n var error;\n if (schema.minProperties !== undefined) {\n if (keys.length < schema.minProperties) {\n error = this.createError(ErrorCodes.OBJECT_PROPERTIES_MINIMUM, {\n propertyCount: keys.length,\n minimum: schema.minProperties\n }, '', '/minProperties', null, data, schema);\n if (this.handleError(error)) {\n return error;\n }\n }\n }\n if (schema.maxProperties !== undefined) {\n if (keys.length > schema.maxProperties) {\n error = this.createError(ErrorCodes.OBJECT_PROPERTIES_MAXIMUM, {\n propertyCount: keys.length,\n maximum: schema.maxProperties\n }, '', '/maxProperties', null, data, schema);\n if (this.handleError(error)) {\n return error;\n }\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateObjectRequiredProperties = function validateObjectRequiredProperties(data, schema) {\n if (schema.required !== undefined) {\n for (var i = 0; i < schema.required.length; i++) {\n var key = schema.required[i];\n if (data[key] === undefined) {\n var error = this.createError(ErrorCodes.OBJECT_REQUIRED, { key: key }, '', '/required/' + i, null, data, schema);\n if (this.handleError(error)) {\n return error;\n }\n }\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateObjectProperties = function validateObjectProperties(data, schema, dataPointerPath) {\n var error;\n for (var key in data) {\n var keyPointerPath = dataPointerPath + \"/\" + key.replace(/~/g, '~0').replace(/\\//g, '~1');\n var foundMatch = false;\n if (schema.properties !== undefined && schema.properties[key] !== undefined) {\n foundMatch = true;\n if (error = this.validateAll(data[key], schema.properties[key], [key], [\"properties\", key], keyPointerPath)) {\n return error;\n }\n }\n if (schema.patternProperties !== undefined) {\n for (var patternKey in schema.patternProperties) {\n var regexp = new RegExp(patternKey);\n if (regexp.test(key)) {\n foundMatch = true;\n if (error = this.validateAll(data[key], schema.patternProperties[patternKey], [key], [\"patternProperties\", patternKey], keyPointerPath)) {\n return error;\n }\n }\n }\n }\n if (!foundMatch) {\n if (schema.additionalProperties !== undefined) {\n if (this.trackUnknownProperties) {\n this.knownPropertyPaths[keyPointerPath] = true;\n delete this.unknownPropertyPaths[keyPointerPath];\n }\n if (typeof schema.additionalProperties === \"boolean\") {\n if (!schema.additionalProperties) {\n error = this.createError(ErrorCodes.OBJECT_ADDITIONAL_PROPERTIES, { key: key }, '', '/additionalProperties', null, data, schema).prefixWith(key, null);\n if (this.handleError(error)) {\n return error;\n }\n }\n } else {\n if (error = this.validateAll(data[key], schema.additionalProperties, [key], [\"additionalProperties\"], keyPointerPath)) {\n return error;\n }\n }\n } else if (this.trackUnknownProperties && !this.knownPropertyPaths[keyPointerPath]) {\n this.unknownPropertyPaths[keyPointerPath] = true;\n }\n } else if (this.trackUnknownProperties) {\n this.knownPropertyPaths[keyPointerPath] = true;\n delete this.unknownPropertyPaths[keyPointerPath];\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateObjectDependencies = function validateObjectDependencies(data, schema, dataPointerPath) {\n var error;\n if (schema.dependencies !== undefined) {\n for (var depKey in schema.dependencies) {\n if (data[depKey] !== undefined) {\n var dep = schema.dependencies[depKey];\n if (typeof dep === \"string\") {\n if (data[dep] === undefined) {\n error = this.createError(ErrorCodes.OBJECT_DEPENDENCY_KEY, {\n key: depKey,\n missing: dep\n }, '', '', null, data, schema).prefixWith(null, depKey).prefixWith(null, \"dependencies\");\n if (this.handleError(error)) {\n return error;\n }\n }\n } else if (Array.isArray(dep)) {\n for (var i = 0; i < dep.length; i++) {\n var requiredKey = dep[i];\n if (data[requiredKey] === undefined) {\n error = this.createError(ErrorCodes.OBJECT_DEPENDENCY_KEY, {\n key: depKey,\n missing: requiredKey\n }, '', '/' + i, null, data, schema).prefixWith(null, depKey).prefixWith(null, \"dependencies\");\n if (this.handleError(error)) {\n return error;\n }\n }\n }\n } else {\n if (error = this.validateAll(data, dep, [], [\"dependencies\", depKey], dataPointerPath)) {\n return error;\n }\n }\n }\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateCombinations = function validateCombinations(data, schema, dataPointerPath) {\n return this.validateAllOf(data, schema, dataPointerPath) || this.validateAnyOf(data, schema, dataPointerPath) || this.validateOneOf(data, schema, dataPointerPath) || this.validateNot(data, schema, dataPointerPath) || null;\n};\n\nValidatorContext.prototype.validateAllOf = function validateAllOf(data, schema, dataPointerPath) {\n if (schema.allOf === undefined) {\n return null;\n }\n var error;\n for (var i = 0; i < schema.allOf.length; i++) {\n var subSchema = schema.allOf[i];\n if (error = this.validateAll(data, subSchema, [], [\"allOf\", i], dataPointerPath)) {\n return error;\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateAnyOf = function validateAnyOf(data, schema, dataPointerPath) {\n if (schema.anyOf === undefined) {\n return null;\n }\n var errors = [];\n var startErrorCount = this.errors.length;\n var oldUnknownPropertyPaths, oldKnownPropertyPaths;\n if (this.trackUnknownProperties) {\n oldUnknownPropertyPaths = this.unknownPropertyPaths;\n oldKnownPropertyPaths = this.knownPropertyPaths;\n }\n var errorAtEnd = true;\n for (var i = 0; i < schema.anyOf.length; i++) {\n if (this.trackUnknownProperties) {\n this.unknownPropertyPaths = {};\n this.knownPropertyPaths = {};\n }\n var subSchema = schema.anyOf[i];\n\n var errorCount = this.errors.length;\n var error = this.validateAll(data, subSchema, [], [\"anyOf\", i], dataPointerPath);\n\n if (error === null && errorCount === this.errors.length) {\n this.errors = this.errors.slice(0, startErrorCount);\n\n if (this.trackUnknownProperties) {\n for (var knownKey in this.knownPropertyPaths) {\n oldKnownPropertyPaths[knownKey] = true;\n delete oldUnknownPropertyPaths[knownKey];\n }\n for (var unknownKey in this.unknownPropertyPaths) {\n if (!oldKnownPropertyPaths[unknownKey]) {\n oldUnknownPropertyPaths[unknownKey] = true;\n }\n }\n // We need to continue looping so we catch all the property definitions, but we don't want to return an error\n errorAtEnd = false;\n continue;\n }\n\n return null;\n }\n if (error) {\n errors.push(error.prefixWith(null, \"\" + i).prefixWith(null, \"anyOf\"));\n }\n }\n if (this.trackUnknownProperties) {\n this.unknownPropertyPaths = oldUnknownPropertyPaths;\n this.knownPropertyPaths = oldKnownPropertyPaths;\n }\n if (errorAtEnd) {\n errors = errors.concat(this.errors.slice(startErrorCount));\n this.errors = this.errors.slice(0, startErrorCount);\n return this.createError(ErrorCodes.ANY_OF_MISSING, {}, \"\", \"/anyOf\", errors, data, schema);\n }\n};\n\nValidatorContext.prototype.validateOneOf = function validateOneOf(data, schema, dataPointerPath) {\n if (schema.oneOf === undefined) {\n return null;\n }\n var validIndex = null;\n var errors = [];\n var startErrorCount = this.errors.length;\n var oldUnknownPropertyPaths, oldKnownPropertyPaths;\n if (this.trackUnknownProperties) {\n oldUnknownPropertyPaths = this.unknownPropertyPaths;\n oldKnownPropertyPaths = this.knownPropertyPaths;\n }\n for (var i = 0; i < schema.oneOf.length; i++) {\n if (this.trackUnknownProperties) {\n this.unknownPropertyPaths = {};\n this.knownPropertyPaths = {};\n }\n var subSchema = schema.oneOf[i];\n\n var errorCount = this.errors.length;\n var error = this.validateAll(data, subSchema, [], [\"oneOf\", i], dataPointerPath);\n\n if (error === null && errorCount === this.errors.length) {\n if (validIndex === null) {\n validIndex = i;\n } else {\n this.errors = this.errors.slice(0, startErrorCount);\n return this.createError(ErrorCodes.ONE_OF_MULTIPLE, {\n index1: validIndex,\n index2: i\n }, \"\", \"/oneOf\", null, data, schema);\n }\n if (this.trackUnknownProperties) {\n for (var knownKey in this.knownPropertyPaths) {\n oldKnownPropertyPaths[knownKey] = true;\n delete oldUnknownPropertyPaths[knownKey];\n }\n for (var unknownKey in this.unknownPropertyPaths) {\n if (!oldKnownPropertyPaths[unknownKey]) {\n oldUnknownPropertyPaths[unknownKey] = true;\n }\n }\n }\n } else if (error) {\n errors.push(error);\n }\n }\n if (this.trackUnknownProperties) {\n this.unknownPropertyPaths = oldUnknownPropertyPaths;\n this.knownPropertyPaths = oldKnownPropertyPaths;\n }\n if (validIndex === null) {\n errors = errors.concat(this.errors.slice(startErrorCount));\n this.errors = this.errors.slice(0, startErrorCount);\n return this.createError(ErrorCodes.ONE_OF_MISSING, {}, \"\", \"/oneOf\", errors, data, schema);\n } else {\n this.errors = this.errors.slice(0, startErrorCount);\n }\n return null;\n};\n\nValidatorContext.prototype.validateNot = function validateNot(data, schema, dataPointerPath) {\n if (schema.not === undefined) {\n return null;\n }\n var oldErrorCount = this.errors.length;\n var oldUnknownPropertyPaths, oldKnownPropertyPaths;\n if (this.trackUnknownProperties) {\n oldUnknownPropertyPaths = this.unknownPropertyPaths;\n oldKnownPropertyPaths = this.knownPropertyPaths;\n this.unknownPropertyPaths = {};\n this.knownPropertyPaths = {};\n }\n var error = this.validateAll(data, schema.not, null, null, dataPointerPath);\n var notErrors = this.errors.slice(oldErrorCount);\n this.errors = this.errors.slice(0, oldErrorCount);\n if (this.trackUnknownProperties) {\n this.unknownPropertyPaths = oldUnknownPropertyPaths;\n this.knownPropertyPaths = oldKnownPropertyPaths;\n }\n if (error === null && notErrors.length === 0) {\n return this.createError(ErrorCodes.NOT_PASSED, {}, \"\", \"/not\", null, data, schema);\n }\n return null;\n};\n\nValidatorContext.prototype.validateHypermedia = function validateCombinations(data, schema, dataPointerPath) {\n if (!schema.links) {\n return null;\n }\n var error;\n for (var i = 0; i < schema.links.length; i++) {\n var ldo = schema.links[i];\n if (ldo.rel === \"describedby\") {\n var template = new UriTemplate(ldo.href);\n var allPresent = true;\n for (var j = 0; j < template.varNames.length; j++) {\n if (!(template.varNames[j] in data)) {\n allPresent = false;\n break;\n }\n }\n if (allPresent) {\n var schemaUrl = template.fillFromObject(data);\n var subSchema = { \"$ref\": schemaUrl };\n if (error = this.validateAll(data, subSchema, [], [\"links\", i], dataPointerPath)) {\n return error;\n }\n }\n }\n }\n};\n\n// parseURI() and resolveUrl() are from https://gist.github.com/1088850\n// - released as public domain by author (\"Yaffle\") - see comments on gist\n\nfunction parseURI(url) {\n var m = String(url).replace(/^\\s+|\\s+$/g, '').match(/^([^:\\/?#]+:)?(\\/\\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\\/?#]*)(?::(\\d*))?))?([^?#]*)(\\?[^#]*)?(#[\\s\\S]*)?/);\n // authority = '//' + user + ':' + pass '@' + hostname + ':' port\n return m ? {\n href: m[0] || '',\n protocol: m[1] || '',\n authority: m[2] || '',\n host: m[3] || '',\n hostname: m[4] || '',\n port: m[5] || '',\n pathname: m[6] || '',\n search: m[7] || '',\n hash: m[8] || ''\n } : null;\n}\n\nfunction resolveUrl(base, href) {\n // RFC 3986\n\n function removeDotSegments(input) {\n var output = [];\n input.replace(/^(\\.\\.?(\\/|$))+/, '').replace(/\\/(\\.(\\/|$))+/g, '/').replace(/\\/\\.\\.$/, '/../').replace(/\\/?[^\\/]*/g, function (p) {\n if (p === '/..') {\n output.pop();\n } else {\n output.push(p);\n }\n });\n return output.join('').replace(/^\\//, input.charAt(0) === '/' ? '/' : '');\n }\n\n href = parseURI(href || '');\n base = parseURI(base || '');\n\n return !href || !base ? null : (href.protocol || base.protocol) + (href.protocol || href.authority ? href.authority : base.authority) + removeDotSegments(href.protocol || href.authority || href.pathname.charAt(0) === '/' ? href.pathname : href.pathname ? (base.authority && !base.pathname ? '/' : '') + base.pathname.slice(0, base.pathname.lastIndexOf('/') + 1) + href.pathname : base.pathname) + (href.protocol || href.authority || href.pathname ? href.search : href.search || base.search) + href.hash;\n}\n\nfunction getDocumentUri(uri) {\n return uri.split('#')[0];\n}\n\nfunction normSchema(schema, baseUri) {\n if (schema && (typeof schema === 'undefined' ? 'undefined' : (0, _typeof3.default)(schema)) === \"object\") {\n if (baseUri === undefined) {\n baseUri = schema.id;\n } else if (typeof schema.id === \"string\") {\n baseUri = resolveUrl(baseUri, schema.id);\n schema.id = baseUri;\n }\n if (Array.isArray(schema)) {\n for (var i = 0; i < schema.length; i++) {\n normSchema(schema[i], baseUri);\n }\n } else {\n if (typeof schema['$ref'] === \"string\") {\n schema['$ref'] = resolveUrl(baseUri, schema['$ref']);\n }\n for (var key in schema) {\n if (key !== \"enum\") {\n normSchema(schema[key], baseUri);\n }\n }\n }\n }\n}\n\nfunction defaultErrorReporter(language) {\n language = language || 'en';\n\n var errorMessages = languages[language];\n\n return function (error) {\n var messageTemplate = errorMessages[error.code] || ErrorMessagesDefault[error.code];\n if (typeof messageTemplate !== 'string') {\n return \"Unknown error code \" + error.code + \": \" + (0, _stringify2.default)(error.messageParams);\n }\n var messageParams = error.params;\n // Adapted from Crockford's supplant()\n return messageTemplate.replace(/\\{([^{}]*)\\}/g, function (whole, varName) {\n var subValue = messageParams[varName];\n return typeof subValue === 'string' || typeof subValue === 'number' ? subValue : whole;\n });\n };\n}\n\nvar ErrorCodes = {\n INVALID_TYPE: 0,\n ENUM_MISMATCH: 1,\n ANY_OF_MISSING: 10,\n ONE_OF_MISSING: 11,\n ONE_OF_MULTIPLE: 12,\n NOT_PASSED: 13,\n // Numeric errors\n NUMBER_MULTIPLE_OF: 100,\n NUMBER_MINIMUM: 101,\n NUMBER_MINIMUM_EXCLUSIVE: 102,\n NUMBER_MAXIMUM: 103,\n NUMBER_MAXIMUM_EXCLUSIVE: 104,\n NUMBER_NOT_A_NUMBER: 105,\n // String errors\n STRING_LENGTH_SHORT: 200,\n STRING_LENGTH_LONG: 201,\n STRING_PATTERN: 202,\n // Object errors\n OBJECT_PROPERTIES_MINIMUM: 300,\n OBJECT_PROPERTIES_MAXIMUM: 301,\n OBJECT_REQUIRED: 302,\n OBJECT_ADDITIONAL_PROPERTIES: 303,\n OBJECT_DEPENDENCY_KEY: 304,\n // Array errors\n ARRAY_LENGTH_SHORT: 400,\n ARRAY_LENGTH_LONG: 401,\n ARRAY_UNIQUE: 402,\n ARRAY_ADDITIONAL_ITEMS: 403,\n // Custom/user-defined errors\n FORMAT_CUSTOM: 500,\n KEYWORD_CUSTOM: 501,\n // Schema structure\n CIRCULAR_REFERENCE: 600,\n // Non-standard validation options\n UNKNOWN_PROPERTY: 1000\n};\nvar ErrorCodeLookup = {};\nfor (var key in ErrorCodes) {\n ErrorCodeLookup[ErrorCodes[key]] = key;\n}\nvar ErrorMessagesDefault = {\n INVALID_TYPE: \"Invalid type: {type} (expected {expected})\",\n ENUM_MISMATCH: \"No enum match for: {value}\",\n ANY_OF_MISSING: \"Data does not match any schemas from \\\"anyOf\\\"\",\n ONE_OF_MISSING: \"Data does not match any schemas from \\\"oneOf\\\"\",\n ONE_OF_MULTIPLE: \"Data is valid against more than one schema from \\\"oneOf\\\": indices {index1} and {index2}\",\n NOT_PASSED: \"Data matches schema from \\\"not\\\"\",\n // Numeric errors\n NUMBER_MULTIPLE_OF: \"Value {value} is not a multiple of {multipleOf}\",\n NUMBER_MINIMUM: \"Value {value} is less than minimum {minimum}\",\n NUMBER_MINIMUM_EXCLUSIVE: \"Value {value} is equal to exclusive minimum {minimum}\",\n NUMBER_MAXIMUM: \"Value {value} is greater than maximum {maximum}\",\n NUMBER_MAXIMUM_EXCLUSIVE: \"Value {value} is equal to exclusive maximum {maximum}\",\n NUMBER_NOT_A_NUMBER: \"Value {value} is not a valid number\",\n // String errors\n STRING_LENGTH_SHORT: \"String is too short ({length} chars), minimum {minimum}\",\n STRING_LENGTH_LONG: \"String is too long ({length} chars), maximum {maximum}\",\n STRING_PATTERN: \"String does not match pattern: {pattern}\",\n // Object errors\n OBJECT_PROPERTIES_MINIMUM: \"Too few properties defined ({propertyCount}), minimum {minimum}\",\n OBJECT_PROPERTIES_MAXIMUM: \"Too many properties defined ({propertyCount}), maximum {maximum}\",\n OBJECT_REQUIRED: \"Missing required property: {key}\",\n OBJECT_ADDITIONAL_PROPERTIES: \"Additional properties not allowed\",\n OBJECT_DEPENDENCY_KEY: \"Dependency failed - key must exist: {missing} (due to key: {key})\",\n // Array errors\n ARRAY_LENGTH_SHORT: \"Array is too short ({length}), minimum {minimum}\",\n ARRAY_LENGTH_LONG: \"Array is too long ({length}), maximum {maximum}\",\n ARRAY_UNIQUE: \"Array items are not unique (indices {match1} and {match2})\",\n ARRAY_ADDITIONAL_ITEMS: \"Additional items not allowed\",\n // Format errors\n FORMAT_CUSTOM: \"Format validation failed ({message})\",\n KEYWORD_CUSTOM: \"Keyword failed: {key} ({message})\",\n // Schema structure\n CIRCULAR_REFERENCE: \"Circular $refs: {urls}\",\n // Non-standard validation options\n UNKNOWN_PROPERTY: \"Unknown property (not in schema)\"\n};\n\nfunction ValidationError(code, params, dataPath, schemaPath, subErrors) {\n Error.call(this);\n if (code === undefined) {\n throw new Error(\"No error code supplied: \" + schemaPath);\n }\n this.message = '';\n this.params = params;\n this.code = code;\n this.dataPath = dataPath || \"\";\n this.schemaPath = schemaPath || \"\";\n this.subErrors = subErrors || null;\n\n var err = new Error(this.message);\n this.stack = err.stack || err.stacktrace;\n if (!this.stack) {\n try {\n throw err;\n } catch (err) {\n this.stack = err.stack || err.stacktrace;\n }\n }\n}\n\nValidationError.prototype = (0, _create2.default)(Error.prototype);\nValidationError.prototype.constructor = ValidationError;\nValidationError.prototype.name = 'ValidationError';\n\nValidationError.prototype.prefixWith = function (dataPrefix, schemaPrefix) {\n if (dataPrefix !== null) {\n dataPrefix = dataPrefix.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n this.dataPath = \"/\" + dataPrefix + this.dataPath;\n }\n if (schemaPrefix !== null) {\n schemaPrefix = schemaPrefix.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n this.schemaPath = \"/\" + schemaPrefix + this.schemaPath;\n }\n if (this.subErrors !== null) {\n for (var i = 0; i < this.subErrors.length; i++) {\n this.subErrors[i].prefixWith(dataPrefix, schemaPrefix);\n }\n }\n return this;\n};\n\nfunction isTrustedUrl(baseUrl, testUrl) {\n if (testUrl.substring(0, baseUrl.length) === baseUrl) {\n var remainder = testUrl.substring(baseUrl.length);\n if (testUrl.length > 0 && testUrl.charAt(baseUrl.length - 1) === \"/\" || remainder.charAt(0) === \"#\" || remainder.charAt(0) === \"?\") {\n return true;\n }\n }\n return false;\n}\n\nvar languages = {};\n\nfunction createApi(language) {\n var globalContext = new ValidatorContext();\n var currentLanguage;\n var customErrorReporter;\n var api = {\n setErrorReporter: function setErrorReporter(reporter) {\n if (typeof reporter === 'string') {\n return this.language(reporter);\n }\n customErrorReporter = reporter;\n return true;\n },\n addFormat: function addFormat() {\n globalContext.addFormat.apply(globalContext, arguments);\n },\n language: function language(code) {\n if (!code) {\n return currentLanguage;\n }\n if (!languages[code]) {\n code = code.split('-')[0]; // fall back to base language\n }\n if (languages[code]) {\n currentLanguage = code;\n return code; // so you can tell if fall-back has happened\n }\n return false;\n },\n addLanguage: function addLanguage(code, messageMap) {\n var key;\n for (key in ErrorCodes) {\n if (messageMap[key] && !messageMap[ErrorCodes[key]]) {\n messageMap[ErrorCodes[key]] = messageMap[key];\n }\n }\n var rootCode = code.split('-')[0];\n if (!languages[rootCode]) {\n // use for base language if not yet defined\n languages[code] = messageMap;\n languages[rootCode] = messageMap;\n } else {\n languages[code] = (0, _create2.default)(languages[rootCode]);\n for (key in messageMap) {\n if (typeof languages[rootCode][key] === 'undefined') {\n languages[rootCode][key] = messageMap[key];\n }\n languages[code][key] = messageMap[key];\n }\n }\n return this;\n },\n freshApi: function freshApi(language) {\n var result = createApi();\n if (language) {\n result.language(language);\n }\n return result;\n },\n validate: function validate(data, schema, checkRecursive, banUnknownProperties) {\n var def = defaultErrorReporter(currentLanguage);\n var errorReporter = customErrorReporter ? function (error, data, schema) {\n return customErrorReporter(error, data, schema) || def(error, data, schema);\n } : def;\n var context = new ValidatorContext(globalContext, false, errorReporter, checkRecursive, banUnknownProperties);\n if (typeof schema === \"string\") {\n schema = { \"$ref\": schema };\n }\n context.addSchema(\"\", schema);\n var error = context.validateAll(data, schema, null, null, \"\");\n if (!error && banUnknownProperties) {\n error = context.banUnknownProperties(data, schema);\n }\n this.error = error;\n this.missing = context.missing;\n this.valid = error === null;\n return this.valid;\n },\n validateResult: function validateResult() {\n var result = {};\n this.validate.apply(result, arguments);\n return result;\n },\n validateMultiple: function validateMultiple(data, schema, checkRecursive, banUnknownProperties) {\n var def = defaultErrorReporter(currentLanguage);\n var errorReporter = customErrorReporter ? function (error, data, schema) {\n return customErrorReporter(error, data, schema) || def(error, data, schema);\n } : def;\n var context = new ValidatorContext(globalContext, true, errorReporter, checkRecursive, banUnknownProperties);\n if (typeof schema === \"string\") {\n schema = { \"$ref\": schema };\n }\n context.addSchema(\"\", schema);\n context.validateAll(data, schema, null, null, \"\");\n if (banUnknownProperties) {\n context.banUnknownProperties(data, schema);\n }\n var result = {};\n result.errors = context.errors;\n result.missing = context.missing;\n result.valid = result.errors.length === 0;\n return result;\n },\n addSchema: function addSchema() {\n return globalContext.addSchema.apply(globalContext, arguments);\n },\n getSchema: function getSchema() {\n return globalContext.getSchema.apply(globalContext, arguments);\n },\n getSchemaMap: function getSchemaMap() {\n return globalContext.getSchemaMap.apply(globalContext, arguments);\n },\n getSchemaUris: function getSchemaUris() {\n return globalContext.getSchemaUris.apply(globalContext, arguments);\n },\n getMissingUris: function getMissingUris() {\n return globalContext.getMissingUris.apply(globalContext, arguments);\n },\n dropSchemas: function dropSchemas() {\n globalContext.dropSchemas.apply(globalContext, arguments);\n },\n defineKeyword: function defineKeyword() {\n globalContext.defineKeyword.apply(globalContext, arguments);\n },\n defineError: function defineError(codeName, codeNumber, defaultMessage) {\n if (typeof codeName !== 'string' || !/^[A-Z]+(_[A-Z]+)*$/.test(codeName)) {\n throw new Error('Code name must be a string in UPPER_CASE_WITH_UNDERSCORES');\n }\n if (typeof codeNumber !== 'number' || codeNumber % 1 !== 0 || codeNumber < 10000) {\n throw new Error('Code number must be an integer > 10000');\n }\n if (typeof ErrorCodes[codeName] !== 'undefined') {\n throw new Error('Error already defined: ' + codeName + ' as ' + ErrorCodes[codeName]);\n }\n if (typeof ErrorCodeLookup[codeNumber] !== 'undefined') {\n throw new Error('Error code already used: ' + ErrorCodeLookup[codeNumber] + ' as ' + codeNumber);\n }\n ErrorCodes[codeName] = codeNumber;\n ErrorCodeLookup[codeNumber] = codeName;\n ErrorMessagesDefault[codeName] = ErrorMessagesDefault[codeNumber] = defaultMessage;\n for (var langCode in languages) {\n var language = languages[langCode];\n if (language[codeName]) {\n language[codeNumber] = language[codeNumber] || language[codeName];\n }\n }\n },\n reset: function reset() {\n globalContext.reset();\n this.error = null;\n this.missing = [];\n this.valid = true;\n },\n missing: [],\n error: null,\n valid: true,\n normSchema: normSchema,\n resolveUrl: resolveUrl,\n getDocumentUri: getDocumentUri,\n errorCodes: ErrorCodes\n };\n api.language(language || 'en');\n return api;\n}\n\n//export function validator() {\nvar tv4 = createApi();\ntv4.addLanguage('en-gb', ErrorMessagesDefault);\n\n//legacy property\ntv4.tv4 = tv4;\n//return tv4;\nexports.default = tv4;\n//}\n\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy91dGlscy90djQuanM/NzkwOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gQXV0aG9yOiBHZXJhaW50IEx1ZmYgYW5kIG90aGVyc1xyXG4gWWVhcjogMjAxM1xyXG5cclxuIFRoaXMgY29kZSBpcyByZWxlYXNlZCBpbnRvIHRoZSBcInB1YmxpYyBkb21haW5cIiBieSBpdHMgYXV0aG9yKHMpLiAgQW55Ym9keSBtYXkgdXNlLCBhbHRlciBhbmQgZGlzdHJpYnV0ZSB0aGUgY29kZSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgVGhlIGF1dGhvciBtYWtlcyBubyBndWFyYW50ZWVzLCBhbmQgdGFrZXMgbm8gbGlhYmlsaXR5IG9mIGFueSBraW5kIGZvciB1c2Ugb2YgdGhpcyBjb2RlLlxyXG5cclxuIElmIHlvdSBmaW5kIGEgYnVnIG9yIG1ha2UgYW4gaW1wcm92ZW1lbnQsIGl0IHdvdWxkIGJlIGNvdXJ0ZW91cyB0byBsZXQgdGhlIGF1dGhvciBrbm93LCBidXQgaXQgaXMgbm90IGNvbXB1bHNvcnkuXHJcbiAqL1xyXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3Qva2V5cz9yZWRpcmVjdGxvY2FsZT1lbi1VUyZyZWRpcmVjdHNsdWc9SmF2YVNjcmlwdCUyRlJlZmVyZW5jZSUyRkdsb2JhbF9PYmplY3RzJTJGT2JqZWN0JTJGa2V5c1xyXG5pZiAoIU9iamVjdC5rZXlzKSB7XHJcbiAgICBPYmplY3Qua2V5cyA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxcclxuICAgICAgICAgICAgaGFzRG9udEVudW1CdWcgPSAhKHt0b1N0cmluZzogbnVsbH0pLnByb3BlcnR5SXNFbnVtZXJhYmxlKCd0b1N0cmluZycpLFxyXG4gICAgICAgICAgICBkb250RW51bXMgPSBbXHJcbiAgICAgICAgICAgICAgICAndG9TdHJpbmcnLFxyXG4gICAgICAgICAgICAgICAgJ3RvTG9jYWxlU3RyaW5nJyxcclxuICAgICAgICAgICAgICAgICd2YWx1ZU9mJyxcclxuICAgICAgICAgICAgICAgICdoYXNPd25Qcm9wZXJ0eScsXHJcbiAgICAgICAgICAgICAgICAnaXNQcm90b3R5cGVPZicsXHJcbiAgICAgICAgICAgICAgICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxyXG4gICAgICAgICAgICAgICAgJ2NvbnN0cnVjdG9yJ1xyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBkb250RW51bXNMZW5ndGggPSBkb250RW51bXMubGVuZ3RoO1xyXG5cclxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG9iaikge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIG9iaiAhPT0gJ2Z1bmN0aW9uJyB8fCBvYmogPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5rZXlzIGNhbGxlZCBvbiBub24tb2JqZWN0Jyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXTtcclxuXHJcbiAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gb2JqKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocHJvcCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChoYXNEb250RW51bUJ1Zykge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkb250RW51bXNMZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgZG9udEVudW1zW2ldKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChkb250RW51bXNbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH07XHJcbiAgICB9KSgpO1xyXG59XHJcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9jcmVhdGVcclxuaWYgKCFPYmplY3QuY3JlYXRlKSB7XHJcbiAgICBPYmplY3QuY3JlYXRlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBmdW5jdGlvbiBGKCkge1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChvKSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ09iamVjdC5jcmVhdGUgaW1wbGVtZW50YXRpb24gb25seSBhY2NlcHRzIG9uZSBwYXJhbWV0ZXIuJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgRi5wcm90b3R5cGUgPSBvO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEYoKTtcclxuICAgICAgICB9O1xyXG4gICAgfSkoKTtcclxufVxyXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9BcnJheS9pc0FycmF5P3JlZGlyZWN0bG9jYWxlPWVuLVVTJnJlZGlyZWN0c2x1Zz1KYXZhU2NyaXB0JTJGUmVmZXJlbmNlJTJGR2xvYmFsX09iamVjdHMlMkZBcnJheSUyRmlzQXJyYXlcclxuaWYgKCFBcnJheS5pc0FycmF5KSB7XHJcbiAgICBBcnJheS5pc0FycmF5ID0gZnVuY3Rpb24gKHZBcmcpIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZBcmcpID09PSBcIltvYmplY3QgQXJyYXldXCI7XHJcbiAgICB9O1xyXG59XHJcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0FycmF5L2luZGV4T2Y/cmVkaXJlY3Rsb2NhbGU9ZW4tVVMmcmVkaXJlY3RzbHVnPUphdmFTY3JpcHQlMkZSZWZlcmVuY2UlMkZHbG9iYWxfT2JqZWN0cyUyRkFycmF5JTJGaW5kZXhPZlxyXG5pZiAoIUFycmF5LnByb3RvdHlwZS5pbmRleE9mKSB7XHJcbiAgICBBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIChzZWFyY2hFbGVtZW50IC8qLCBmcm9tSW5kZXggKi8pIHtcclxuICAgICAgICBpZiAodGhpcyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciB0ID0gT2JqZWN0KHRoaXMpO1xyXG4gICAgICAgIHZhciBsZW4gPSB0Lmxlbmd0aCA+Pj4gMDtcclxuXHJcbiAgICAgICAgaWYgKGxlbiA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBuID0gMDtcclxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgbiA9IE51bWJlcihhcmd1bWVudHNbMV0pO1xyXG4gICAgICAgICAgICBpZiAobiAhPT0gbikgeyAvLyBzaG9ydGN1dCBmb3IgdmVyaWZ5aW5nIGlmIGl0J3MgTmFOXHJcbiAgICAgICAgICAgICAgICBuID0gMDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChuICE9PSAwICYmIG4gIT09IEluZmluaXR5ICYmIG4gIT09IC1JbmZpbml0eSkge1xyXG4gICAgICAgICAgICAgICAgbiA9IChuID4gMCB8fCAtMSkgKiBNYXRoLmZsb29yKE1hdGguYWJzKG4pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobiA+PSBsZW4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgayA9IG4gPj0gMCA/IG4gOiBNYXRoLm1heChsZW4gLSBNYXRoLmFicyhuKSwgMCk7XHJcbiAgICAgICAgZm9yICg7IGsgPCBsZW47IGsrKykge1xyXG4gICAgICAgICAgICBpZiAoayBpbiB0ICYmIHRba10gPT09IHNlYXJjaEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgIH07XHJcbn1cclxuXHJcbi8vIEdydW5nZXkgT2JqZWN0LmlzRnJvemVuIGhhY2tcclxuaWYgKCFPYmplY3QuaXNGcm96ZW4pIHtcclxuICAgIE9iamVjdC5pc0Zyb3plbiA9IGZ1bmN0aW9uIChvYmopIHtcclxuICAgICAgICB2YXIga2V5ID0gXCJ0djRfdGVzdF9mcm96ZW5fa2V5XCI7XHJcbiAgICAgICAgd2hpbGUgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgIGtleSArPSBNYXRoLnJhbmRvbSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBvYmpba2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBvYmpba2V5XTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG4vLyBCYXNlZCBvbjogaHR0cHM6Ly9naXRodWIuY29tL2dlcmFpbnRsdWZmL3VyaS10ZW1wbGF0ZXMsIGJ1dCB3aXRoIGFsbCB0aGUgZGUtc3Vic3RpdHV0aW9uIHN0dWZmIHJlbW92ZWRcclxuXHJcbnZhciB1cmlUZW1wbGF0ZUdsb2JhbE1vZGlmaWVycyA9IHtcclxuICAgIFwiK1wiOiB0cnVlLFxyXG4gICAgXCIjXCI6IHRydWUsXHJcbiAgICBcIi5cIjogdHJ1ZSxcclxuICAgIFwiL1wiOiB0cnVlLFxyXG4gICAgXCI7XCI6IHRydWUsXHJcbiAgICBcIj9cIjogdHJ1ZSxcclxuICAgIFwiJlwiOiB0cnVlXHJcbn07XHJcbnZhciB1cmlUZW1wbGF0ZVN1ZmZpY2VzID0ge1xyXG4gICAgXCIqXCI6IHRydWVcclxufTtcclxuXHJcbmZ1bmN0aW9uIG5vdFJlYWxseVBlcmNlbnRFbmNvZGUoc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZW5jb2RlVVJJKHN0cmluZykucmVwbGFjZSgvJTI1WzAtOV1bMC05XS9nLCBmdW5jdGlvbiAoZG91YmxlRW5jb2RlZCkge1xyXG4gICAgICAgIHJldHVybiBcIiVcIiArIGRvdWJsZUVuY29kZWQuc3Vic3RyaW5nKDMpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHVyaVRlbXBsYXRlU3Vic3RpdHV0aW9uKHNwZWMpIHtcclxuICAgIHZhciBtb2RpZmllciA9IFwiXCI7XHJcbiAgICBpZiAodXJpVGVtcGxhdGVHbG9iYWxNb2RpZmllcnNbc3BlYy5jaGFyQXQoMCldKSB7XHJcbiAgICAgICAgbW9kaWZpZXIgPSBzcGVjLmNoYXJBdCgwKTtcclxuICAgICAgICBzcGVjID0gc3BlYy5zdWJzdHJpbmcoMSk7XHJcbiAgICB9XHJcbiAgICB2YXIgc2VwYXJhdG9yID0gXCJcIjtcclxuICAgIHZhciBwcmVmaXggPSBcIlwiO1xyXG4gICAgdmFyIHNob3VsZEVzY2FwZSA9IHRydWU7XHJcbiAgICB2YXIgc2hvd1ZhcmlhYmxlcyA9IGZhbHNlO1xyXG4gICAgdmFyIHRyaW1FbXB0eVN0cmluZyA9IGZhbHNlO1xyXG4gICAgaWYgKG1vZGlmaWVyID09PSAnKycpIHtcclxuICAgICAgICBzaG91bGRFc2NhcGUgPSBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAobW9kaWZpZXIgPT09IFwiLlwiKSB7XHJcbiAgICAgICAgcHJlZml4ID0gXCIuXCI7XHJcbiAgICAgICAgc2VwYXJhdG9yID0gXCIuXCI7XHJcbiAgICB9IGVsc2UgaWYgKG1vZGlmaWVyID09PSBcIi9cIikge1xyXG4gICAgICAgIHByZWZpeCA9IFwiL1wiO1xyXG4gICAgICAgIHNlcGFyYXRvciA9IFwiL1wiO1xyXG4gICAgfSBlbHNlIGlmIChtb2RpZmllciA9PT0gJyMnKSB7XHJcbiAgICAgICAgcHJlZml4ID0gXCIjXCI7XHJcbiAgICAgICAgc2hvdWxkRXNjYXBlID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKG1vZGlmaWVyID09PSAnOycpIHtcclxuICAgICAgICBwcmVmaXggPSBcIjtcIjtcclxuICAgICAgICBzZXBhcmF0b3IgPSBcIjtcIjtcclxuICAgICAgICBzaG93VmFyaWFibGVzID0gdHJ1ZTtcclxuICAgICAgICB0cmltRW1wdHlTdHJpbmcgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmIChtb2RpZmllciA9PT0gJz8nKSB7XHJcbiAgICAgICAgcHJlZml4ID0gXCI/XCI7XHJcbiAgICAgICAgc2VwYXJhdG9yID0gXCImXCI7XHJcbiAgICAgICAgc2hvd1ZhcmlhYmxlcyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKG1vZGlmaWVyID09PSAnJicpIHtcclxuICAgICAgICBwcmVmaXggPSBcIiZcIjtcclxuICAgICAgICBzZXBhcmF0b3IgPSBcIiZcIjtcclxuICAgICAgICBzaG93VmFyaWFibGVzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgdmFyTmFtZXMgPSBbXTtcclxuICAgIHZhciB2YXJMaXN0ID0gc3BlYy5zcGxpdChcIixcIik7XHJcbiAgICB2YXIgdmFyU3BlY3MgPSBbXTtcclxuICAgIHZhciB2YXJTcGVjTWFwID0ge307XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhckxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgdmFyTmFtZSA9IHZhckxpc3RbaV07XHJcbiAgICAgICAgdmFyIHRydW5jYXRlID0gbnVsbDtcclxuICAgICAgICBpZiAodmFyTmFtZS5pbmRleE9mKFwiOlwiKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgdmFyIHBhcnRzID0gdmFyTmFtZS5zcGxpdChcIjpcIik7XHJcbiAgICAgICAgICAgIHZhck5hbWUgPSBwYXJ0c1swXTtcclxuICAgICAgICAgICAgdHJ1bmNhdGUgPSBwYXJzZUludChwYXJ0c1sxXSwgMTApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgc3VmZmljZXMgPSB7fTtcclxuICAgICAgICB3aGlsZSAodXJpVGVtcGxhdGVTdWZmaWNlc1t2YXJOYW1lLmNoYXJBdCh2YXJOYW1lLmxlbmd0aCAtIDEpXSkge1xyXG4gICAgICAgICAgICBzdWZmaWNlc1t2YXJOYW1lLmNoYXJBdCh2YXJOYW1lLmxlbmd0aCAtIDEpXSA9IHRydWU7XHJcbiAgICAgICAgICAgIHZhck5hbWUgPSB2YXJOYW1lLnN1YnN0cmluZygwLCB2YXJOYW1lLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgdmFyU3BlYyA9IHtcclxuICAgICAgICAgICAgdHJ1bmNhdGU6IHRydW5jYXRlLFxyXG4gICAgICAgICAgICBuYW1lOiB2YXJOYW1lLFxyXG4gICAgICAgICAgICBzdWZmaWNlczogc3VmZmljZXNcclxuICAgICAgICB9O1xyXG4gICAgICAgIHZhclNwZWNzLnB1c2godmFyU3BlYyk7XHJcbiAgICAgICAgdmFyU3BlY01hcFt2YXJOYW1lXSA9IHZhclNwZWM7XHJcbiAgICAgICAgdmFyTmFtZXMucHVzaCh2YXJOYW1lKTtcclxuICAgIH1cclxuICAgIHZhciBzdWJGdW5jdGlvbiA9IGZ1bmN0aW9uICh2YWx1ZUZ1bmN0aW9uKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IFwiXCI7XHJcbiAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSAwO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFyU3BlY3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIHZhclNwZWMgPSB2YXJTcGVjc1tpXTtcclxuICAgICAgICAgICAgdmFyIHZhbHVlID0gdmFsdWVGdW5jdGlvbih2YXJTcGVjLm5hbWUpO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB8fCAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKSkge1xyXG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGkgPT09IHN0YXJ0SW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBwcmVmaXg7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gKHNlcGFyYXRvciB8fCBcIixcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hvd1ZhcmlhYmxlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB2YXJTcGVjLm5hbWUgKyBcIj1cIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsdWUubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaiA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHZhclNwZWMuc3VmZmljZXNbJyonXSA/IChzZXBhcmF0b3IgfHwgXCIsXCIpIDogXCIsXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJTcGVjLnN1ZmZpY2VzWycqJ10gJiYgc2hvd1ZhcmlhYmxlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHZhclNwZWMubmFtZSArIFwiPVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzaG91bGRFc2NhcGUgPyBlbmNvZGVVUklDb21wb25lbnQodmFsdWVbal0pLnJlcGxhY2UoLyEvZywgXCIlMjFcIikgOiBub3RSZWFsbHlQZXJjZW50RW5jb2RlKHZhbHVlW2pdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzaG93VmFyaWFibGVzICYmICF2YXJTcGVjLnN1ZmZpY2VzWycqJ10pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gdmFyU3BlYy5uYW1lICsgXCI9XCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgZmlyc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gdmFyU3BlYy5zdWZmaWNlc1snKiddID8gKHNlcGFyYXRvciB8fCBcIixcIikgOiBcIixcIjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gc2hvdWxkRXNjYXBlID8gZW5jb2RlVVJJQ29tcG9uZW50KGtleSkucmVwbGFjZSgvIS9nLCBcIiUyMVwiKSA6IG5vdFJlYWxseVBlcmNlbnRFbmNvZGUoa2V5KTtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gdmFyU3BlYy5zdWZmaWNlc1snKiddID8gJz0nIDogXCIsXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHNob3VsZEVzY2FwZSA/IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZVtrZXldKS5yZXBsYWNlKC8hL2csIFwiJTIxXCIpIDogbm90UmVhbGx5UGVyY2VudEVuY29kZSh2YWx1ZVtrZXldKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChzaG93VmFyaWFibGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHZhclNwZWMubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRyaW1FbXB0eVN0cmluZyB8fCB2YWx1ZSAhPT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCI9XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHZhclNwZWMudHJ1bmNhdGUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIHZhclNwZWMudHJ1bmNhdGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IHNob3VsZEVzY2FwZSA/IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkucmVwbGFjZSgvIS9nLCBcIiUyMVwiKSA6IG5vdFJlYWxseVBlcmNlbnRFbmNvZGUodmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG4gICAgc3ViRnVuY3Rpb24udmFyTmFtZXMgPSB2YXJOYW1lcztcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcHJlZml4OiBwcmVmaXgsXHJcbiAgICAgICAgc3Vic3RpdHV0aW9uOiBzdWJGdW5jdGlvblxyXG4gICAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gVXJpVGVtcGxhdGUodGVtcGxhdGUpIHtcclxuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBVcmlUZW1wbGF0ZSkpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFVyaVRlbXBsYXRlKHRlbXBsYXRlKTtcclxuICAgIH1cclxuICAgIHZhciBwYXJ0cyA9IHRlbXBsYXRlLnNwbGl0KFwie1wiKTtcclxuICAgIHZhciB0ZXh0UGFydHMgPSBbcGFydHMuc2hpZnQoKV07XHJcbiAgICB2YXIgcHJlZml4ZXMgPSBbXTtcclxuICAgIHZhciBzdWJzdGl0dXRpb25zID0gW107XHJcbiAgICB2YXIgdmFyTmFtZXMgPSBbXTtcclxuICAgIHdoaWxlIChwYXJ0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdmFyIHBhcnQgPSBwYXJ0cy5zaGlmdCgpO1xyXG4gICAgICAgIHZhciBzcGVjID0gcGFydC5zcGxpdChcIn1cIilbMF07XHJcbiAgICAgICAgdmFyIHJlbWFpbmRlciA9IHBhcnQuc3Vic3RyaW5nKHNwZWMubGVuZ3RoICsgMSk7XHJcbiAgICAgICAgdmFyIGZ1bmNzID0gdXJpVGVtcGxhdGVTdWJzdGl0dXRpb24oc3BlYyk7XHJcbiAgICAgICAgc3Vic3RpdHV0aW9ucy5wdXNoKGZ1bmNzLnN1YnN0aXR1dGlvbik7XHJcbiAgICAgICAgcHJlZml4ZXMucHVzaChmdW5jcy5wcmVmaXgpO1xyXG4gICAgICAgIHRleHRQYXJ0cy5wdXNoKHJlbWFpbmRlcik7XHJcbiAgICAgICAgdmFyTmFtZXMgPSB2YXJOYW1lcy5jb25jYXQoZnVuY3Muc3Vic3RpdHV0aW9uLnZhck5hbWVzKTtcclxuICAgIH1cclxuICAgIHRoaXMuZmlsbCA9IGZ1bmN0aW9uICh2YWx1ZUZ1bmN0aW9uKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRleHRQYXJ0c1swXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YnN0aXR1dGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIHN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbnNbaV07XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSBzdWJzdGl0dXRpb24odmFsdWVGdW5jdGlvbik7XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSB0ZXh0UGFydHNbaSArIDFdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuICAgIHRoaXMudmFyTmFtZXMgPSB2YXJOYW1lcztcclxuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcclxufVxyXG5cclxuVXJpVGVtcGxhdGUucHJvdG90eXBlID0ge1xyXG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZTtcclxuICAgIH0sXHJcbiAgICBmaWxsRnJvbU9iamVjdDogZnVuY3Rpb24gKG9iaikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpbGwoZnVuY3Rpb24gKHZhck5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9ialt2YXJOYW1lXTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufTtcclxudmFyIFZhbGlkYXRvckNvbnRleHQgPSBmdW5jdGlvbiBWYWxpZGF0b3JDb250ZXh0KHBhcmVudCwgY29sbGVjdE11bHRpcGxlLCBlcnJvclJlcG9ydGVyLCBjaGVja1JlY3Vyc2l2ZSwgdHJhY2tVbmtub3duUHJvcGVydGllcykge1xyXG4gICAgdGhpcy5taXNzaW5nID0gW107XHJcbiAgICB0aGlzLm1pc3NpbmdNYXAgPSB7fTtcclxuICAgIHRoaXMuZm9ybWF0VmFsaWRhdG9ycyA9IHBhcmVudCA/IE9iamVjdC5jcmVhdGUocGFyZW50LmZvcm1hdFZhbGlkYXRvcnMpIDoge307XHJcbiAgICB0aGlzLnNjaGVtYXMgPSBwYXJlbnQgPyBPYmplY3QuY3JlYXRlKHBhcmVudC5zY2hlbWFzKSA6IHt9O1xyXG4gICAgdGhpcy5jb2xsZWN0TXVsdGlwbGUgPSBjb2xsZWN0TXVsdGlwbGU7XHJcbiAgICB0aGlzLmVycm9ycyA9IFtdO1xyXG4gICAgdGhpcy5oYW5kbGVFcnJvciA9IGNvbGxlY3RNdWx0aXBsZSA/IHRoaXMuY29sbGVjdEVycm9yIDogdGhpcy5yZXR1cm5FcnJvcjtcclxuICAgIGlmIChjaGVja1JlY3Vyc2l2ZSkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tSZWN1cnNpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2Nhbm5lZCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2Nhbm5lZEZyb3plbiA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2Nhbm5lZEZyb3plblNjaGVtYXMgPSBbXTtcclxuICAgICAgICB0aGlzLnNjYW5uZWRGcm96ZW5WYWxpZGF0aW9uRXJyb3JzID0gW107XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZWRTY2hlbWFzS2V5ID0gJ3R2NF92YWxpZGF0aW9uX2lkJztcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnNLZXkgPSAndHY0X3ZhbGlkYXRpb25fZXJyb3JzX2lkJztcclxuICAgIH1cclxuICAgIGlmICh0cmFja1Vua25vd25Qcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgdGhpcy50cmFja1Vua25vd25Qcm9wZXJ0aWVzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmtub3duUHJvcGVydHlQYXRocyA9IHt9O1xyXG4gICAgICAgIHRoaXMudW5rbm93blByb3BlcnR5UGF0aHMgPSB7fTtcclxuICAgIH1cclxuICAgIHRoaXMuZXJyb3JSZXBvcnRlciA9IGVycm9yUmVwb3J0ZXIgfHwgZGVmYXVsdEVycm9yUmVwb3J0ZXIoJ2VuJyk7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuZXJyb3JSZXBvcnRlciA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlYnVnJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRlZmluZWRLZXl3b3JkcyA9IHt9O1xyXG4gICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBwYXJlbnQuZGVmaW5lZEtleXdvcmRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVmaW5lZEtleXdvcmRzW2tleV0gPSBwYXJlbnQuZGVmaW5lZEtleXdvcmRzW2tleV0uc2xpY2UoMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS5kZWZpbmVLZXl3b3JkID0gZnVuY3Rpb24gKGtleXdvcmQsIGtleXdvcmRGdW5jdGlvbikge1xyXG4gICAgdGhpcy5kZWZpbmVkS2V5d29yZHNba2V5d29yZF0gPSB0aGlzLmRlZmluZWRLZXl3b3Jkc1trZXl3b3JkXSB8fCBbXTtcclxuICAgIHRoaXMuZGVmaW5lZEtleXdvcmRzW2tleXdvcmRdLnB1c2goa2V5d29yZEZ1bmN0aW9uKTtcclxufTtcclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUuY3JlYXRlRXJyb3IgPSBmdW5jdGlvbiAoY29kZSwgbWVzc2FnZVBhcmFtcywgZGF0YVBhdGgsIHNjaGVtYVBhdGgsIHN1YkVycm9ycywgZGF0YSwgc2NoZW1hKSB7XHJcbiAgICB2YXIgZXJyb3IgPSBuZXcgVmFsaWRhdGlvbkVycm9yKGNvZGUsIG1lc3NhZ2VQYXJhbXMsIGRhdGFQYXRoLCBzY2hlbWFQYXRoLCBzdWJFcnJvcnMpO1xyXG4gICAgZXJyb3IubWVzc2FnZSA9IHRoaXMuZXJyb3JSZXBvcnRlcihlcnJvciwgZGF0YSwgc2NoZW1hKTtcclxuICAgIHJldHVybiBlcnJvcjtcclxufTtcclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUucmV0dXJuRXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IpIHtcclxuICAgIHJldHVybiBlcnJvcjtcclxufTtcclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUuY29sbGVjdEVycm9yID0gZnVuY3Rpb24gKGVycm9yKSB7XHJcbiAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICB0aGlzLmVycm9ycy5wdXNoKGVycm9yKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS5wcmVmaXhFcnJvcnMgPSBmdW5jdGlvbiAoc3RhcnRJbmRleCwgZGF0YVBhdGgsIHNjaGVtYVBhdGgpIHtcclxuICAgIGZvciAodmFyIGkgPSBzdGFydEluZGV4OyBpIDwgdGhpcy5lcnJvcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmVycm9yc1tpXSA9IHRoaXMuZXJyb3JzW2ldLnByZWZpeFdpdGgoZGF0YVBhdGgsIHNjaGVtYVBhdGgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbn07XHJcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLmJhblVua25vd25Qcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGRhdGEsIHNjaGVtYSkge1xyXG4gICAgZm9yICh2YXIgdW5rbm93blBhdGggaW4gdGhpcy51bmtub3duUHJvcGVydHlQYXRocykge1xyXG4gICAgICAgIHZhciBlcnJvciA9IHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5VTktOT1dOX1BST1BFUlRZLCB7cGF0aDogdW5rbm93blBhdGh9LCB1bmtub3duUGF0aCwgXCJcIiwgbnVsbCwgZGF0YSwgc2NoZW1hKTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUuYWRkRm9ybWF0ID0gZnVuY3Rpb24gKGZvcm1hdCwgdmFsaWRhdG9yKSB7XHJcbiAgICBpZiAodHlwZW9mIGZvcm1hdCA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gZm9ybWF0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRm9ybWF0KGtleSwgZm9ybWF0W2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybWF0VmFsaWRhdG9yc1tmb3JtYXRdID0gdmFsaWRhdG9yO1xyXG59O1xyXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS5yZXNvbHZlUmVmcyA9IGZ1bmN0aW9uIChzY2hlbWEsIHVybEhpc3RvcnkpIHtcclxuICAgIGlmIChzY2hlbWFbJyRyZWYnXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdXJsSGlzdG9yeSA9IHVybEhpc3RvcnkgfHwge307XHJcbiAgICAgICAgaWYgKHVybEhpc3Rvcnlbc2NoZW1hWyckcmVmJ11dKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuQ0lSQ1VMQVJfUkVGRVJFTkNFLCB7dXJsczogT2JqZWN0LmtleXModXJsSGlzdG9yeSkuam9pbignLCAnKX0sICcnLCAnJywgbnVsbCwgdW5kZWZpbmVkLCBzY2hlbWEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB1cmxIaXN0b3J5W3NjaGVtYVsnJHJlZiddXSA9IHRydWU7XHJcbiAgICAgICAgc2NoZW1hID0gdGhpcy5nZXRTY2hlbWEoc2NoZW1hWyckcmVmJ10sIHVybEhpc3RvcnkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNjaGVtYTtcclxufTtcclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUuZ2V0U2NoZW1hID0gZnVuY3Rpb24gKHVybCwgdXJsSGlzdG9yeSkge1xyXG4gICAgdmFyIHNjaGVtYTtcclxuICAgIGlmICh0aGlzLnNjaGVtYXNbdXJsXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgc2NoZW1hID0gdGhpcy5zY2hlbWFzW3VybF07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZVJlZnMoc2NoZW1hLCB1cmxIaXN0b3J5KTtcclxuICAgIH1cclxuICAgIHZhciBiYXNlVXJsID0gdXJsO1xyXG4gICAgdmFyIGZyYWdtZW50ID0gXCJcIjtcclxuICAgIGlmICh1cmwuaW5kZXhPZignIycpICE9PSAtMSkge1xyXG4gICAgICAgIGZyYWdtZW50ID0gdXJsLnN1YnN0cmluZyh1cmwuaW5kZXhPZihcIiNcIikgKyAxKTtcclxuICAgICAgICBiYXNlVXJsID0gdXJsLnN1YnN0cmluZygwLCB1cmwuaW5kZXhPZihcIiNcIikpO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnNjaGVtYXNbYmFzZVVybF0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgc2NoZW1hID0gdGhpcy5zY2hlbWFzW2Jhc2VVcmxdO1xyXG4gICAgICAgIHZhciBwb2ludGVyUGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudChmcmFnbWVudCk7XHJcbiAgICAgICAgaWYgKHBvaW50ZXJQYXRoID09PSBcIlwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVSZWZzKHNjaGVtYSwgdXJsSGlzdG9yeSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwb2ludGVyUGF0aC5jaGFyQXQoMCkgIT09IFwiL1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBwYXJ0cyA9IHBvaW50ZXJQYXRoLnNwbGl0KFwiL1wiKS5zbGljZSgxKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBjb21wb25lbnQgPSBwYXJ0c1tpXS5yZXBsYWNlKC9+MS9nLCBcIi9cIikucmVwbGFjZSgvfjAvZywgXCJ+XCIpO1xyXG4gICAgICAgICAgICBpZiAoc2NoZW1hW2NvbXBvbmVudF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgc2NoZW1hID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2NoZW1hID0gc2NoZW1hW2NvbXBvbmVudF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzY2hlbWEgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlUmVmcyhzY2hlbWEsIHVybEhpc3RvcnkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1pc3NpbmdbYmFzZVVybF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMubWlzc2luZy5wdXNoKGJhc2VVcmwpO1xyXG4gICAgICAgIHRoaXMubWlzc2luZ1tiYXNlVXJsXSA9IGJhc2VVcmw7XHJcbiAgICAgICAgdGhpcy5taXNzaW5nTWFwW2Jhc2VVcmxdID0gYmFzZVVybDtcclxuICAgIH1cclxufTtcclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUuc2VhcmNoU2NoZW1hcyA9IGZ1bmN0aW9uIChzY2hlbWEsIHVybCkge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NoZW1hLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoU2NoZW1hcyhzY2hlbWFbaV0sIHVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChzY2hlbWEgJiYgdHlwZW9mIHNjaGVtYSA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLmlkID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIGlmIChpc1RydXN0ZWRVcmwodXJsLCBzY2hlbWEuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zY2hlbWFzW3NjaGVtYS5pZF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2NoZW1hc1tzY2hlbWEuaWRdID0gc2NoZW1hO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBzY2hlbWEpIHtcclxuICAgICAgICAgICAgaWYgKGtleSAhPT0gXCJlbnVtXCIpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hW2tleV0gPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFNjaGVtYXMoc2NoZW1hW2tleV0sIHVybCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCIkcmVmXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdXJpID0gZ2V0RG9jdW1lbnRVcmkoc2NoZW1hW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh1cmkgJiYgdGhpcy5zY2hlbWFzW3VyaV0gPT09IHVuZGVmaW5lZCAmJiB0aGlzLm1pc3NpbmdNYXBbdXJpXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWlzc2luZ01hcFt1cmldID0gdXJpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUuYWRkU2NoZW1hID0gZnVuY3Rpb24gKHVybCwgc2NoZW1hKSB7XHJcbiAgICAvL292ZXJsb2FkXHJcbiAgICBpZiAodHlwZW9mIHVybCAhPT0gJ3N0cmluZycgfHwgdHlwZW9mIHNjaGVtYSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHVybCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHVybC5pZCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgc2NoZW1hID0gdXJsO1xyXG4gICAgICAgICAgICB1cmwgPSBzY2hlbWEuaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHVybCA9PT0gZ2V0RG9jdW1lbnRVcmkodXJsKSArIFwiI1wiKSB7XHJcbiAgICAgICAgLy8gUmVtb3ZlIGVtcHR5IGZyYWdtZW50XHJcbiAgICAgICAgdXJsID0gZ2V0RG9jdW1lbnRVcmkodXJsKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2NoZW1hc1t1cmxdID0gc2NoZW1hO1xyXG4gICAgZGVsZXRlIHRoaXMubWlzc2luZ01hcFt1cmxdO1xyXG4gICAgbm9ybVNjaGVtYShzY2hlbWEsIHVybCk7XHJcbiAgICB0aGlzLnNlYXJjaFNjaGVtYXMoc2NoZW1hLCB1cmwpO1xyXG59O1xyXG5cclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUuZ2V0U2NoZW1hTWFwID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIG1hcCA9IHt9O1xyXG4gICAgZm9yICh2YXIga2V5IGluIHRoaXMuc2NoZW1hcykge1xyXG4gICAgICAgIG1hcFtrZXldID0gdGhpcy5zY2hlbWFzW2tleV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWFwO1xyXG59O1xyXG5cclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUuZ2V0U2NoZW1hVXJpcyA9IGZ1bmN0aW9uIChmaWx0ZXJSZWdFeHApIHtcclxuICAgIHZhciBsaXN0ID0gW107XHJcbiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5zY2hlbWFzKSB7XHJcbiAgICAgICAgaWYgKCFmaWx0ZXJSZWdFeHAgfHwgZmlsdGVyUmVnRXhwLnRlc3Qoa2V5KSkge1xyXG4gICAgICAgICAgICBsaXN0LnB1c2goa2V5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGlzdDtcclxufTtcclxuXHJcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLmdldE1pc3NpbmdVcmlzID0gZnVuY3Rpb24gKGZpbHRlclJlZ0V4cCkge1xyXG4gICAgdmFyIGxpc3QgPSBbXTtcclxuICAgIGZvciAodmFyIGtleSBpbiB0aGlzLm1pc3NpbmdNYXApIHtcclxuICAgICAgICBpZiAoIWZpbHRlclJlZ0V4cCB8fCBmaWx0ZXJSZWdFeHAudGVzdChrZXkpKSB7XHJcbiAgICAgICAgICAgIGxpc3QucHVzaChrZXkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBsaXN0O1xyXG59O1xyXG5cclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUuZHJvcFNjaGVtYXMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB0aGlzLnNjaGVtYXMgPSB7fTtcclxuICAgIHRoaXMucmVzZXQoKTtcclxufTtcclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB0aGlzLm1pc3NpbmcgPSBbXTtcclxuICAgIHRoaXMubWlzc2luZ01hcCA9IHt9O1xyXG4gICAgdGhpcy5lcnJvcnMgPSBbXTtcclxufTtcclxuXHJcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlQWxsID0gZnVuY3Rpb24gKGRhdGEsIHNjaGVtYSwgZGF0YVBhdGhQYXJ0cywgc2NoZW1hUGF0aFBhcnRzLCBkYXRhUG9pbnRlclBhdGgpIHtcclxuICAgIHZhciB0b3BMZXZlbDtcclxuICAgIHNjaGVtYSA9IHRoaXMucmVzb2x2ZVJlZnMoc2NoZW1hKTtcclxuICAgIGlmICghc2NoZW1hKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFZhbGlkYXRpb25FcnJvcikge1xyXG4gICAgICAgIHRoaXMuZXJyb3JzLnB1c2goc2NoZW1hKTtcclxuICAgICAgICByZXR1cm4gc2NoZW1hO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBzdGFydEVycm9yQ291bnQgPSB0aGlzLmVycm9ycy5sZW5ndGg7XHJcbiAgICB2YXIgZnJvemVuSW5kZXgsIHNjYW5uZWRGcm96ZW5TY2hlbWFJbmRleCA9IG51bGwsIHNjYW5uZWRTY2hlbWFzSW5kZXggPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuY2hlY2tSZWN1cnNpdmUgJiYgZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICB0b3BMZXZlbCA9ICF0aGlzLnNjYW5uZWQubGVuZ3RoO1xyXG4gICAgICAgIGlmIChkYXRhW3RoaXMudmFsaWRhdGVkU2NoZW1hc0tleV0pIHtcclxuICAgICAgICAgICAgdmFyIHNjaGVtYUluZGV4ID0gZGF0YVt0aGlzLnZhbGlkYXRlZFNjaGVtYXNLZXldLmluZGV4T2Yoc2NoZW1hKTtcclxuICAgICAgICAgICAgaWYgKHNjaGVtYUluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvcnMgPSB0aGlzLmVycm9ycy5jb25jYXQoZGF0YVt0aGlzLnZhbGlkYXRpb25FcnJvcnNLZXldW3NjaGVtYUluZGV4XSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoT2JqZWN0LmlzRnJvemVuKGRhdGEpKSB7XHJcbiAgICAgICAgICAgIGZyb3plbkluZGV4ID0gdGhpcy5zY2FubmVkRnJvemVuLmluZGV4T2YoZGF0YSk7XHJcbiAgICAgICAgICAgIGlmIChmcm96ZW5JbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHZhciBmcm96ZW5TY2hlbWFJbmRleCA9IHRoaXMuc2Nhbm5lZEZyb3plblNjaGVtYXNbZnJvemVuSW5kZXhdLmluZGV4T2Yoc2NoZW1hKTtcclxuICAgICAgICAgICAgICAgIGlmIChmcm96ZW5TY2hlbWFJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ycyA9IHRoaXMuZXJyb3JzLmNvbmNhdCh0aGlzLnNjYW5uZWRGcm96ZW5WYWxpZGF0aW9uRXJyb3JzW2Zyb3plbkluZGV4XVtmcm96ZW5TY2hlbWFJbmRleF0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2Nhbm5lZC5wdXNoKGRhdGEpO1xyXG4gICAgICAgIGlmIChPYmplY3QuaXNGcm96ZW4oZGF0YSkpIHtcclxuICAgICAgICAgICAgaWYgKGZyb3plbkluZGV4ID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgZnJvemVuSW5kZXggPSB0aGlzLnNjYW5uZWRGcm96ZW4ubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2FubmVkRnJvemVuLnB1c2goZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjYW5uZWRGcm96ZW5TY2hlbWFzLnB1c2goW10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNjYW5uZWRGcm96ZW5TY2hlbWFJbmRleCA9IHRoaXMuc2Nhbm5lZEZyb3plblNjaGVtYXNbZnJvemVuSW5kZXhdLmxlbmd0aDtcclxuICAgICAgICAgICAgdGhpcy5zY2FubmVkRnJvemVuU2NoZW1hc1tmcm96ZW5JbmRleF1bc2Nhbm5lZEZyb3plblNjaGVtYUluZGV4XSA9IHNjaGVtYTtcclxuICAgICAgICAgICAgdGhpcy5zY2FubmVkRnJvemVuVmFsaWRhdGlvbkVycm9yc1tmcm96ZW5JbmRleF1bc2Nhbm5lZEZyb3plblNjaGVtYUluZGV4XSA9IFtdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICghZGF0YVt0aGlzLnZhbGlkYXRlZFNjaGVtYXNLZXldKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkYXRhLCB0aGlzLnZhbGlkYXRlZFNjaGVtYXNLZXksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGF0YSwgdGhpcy52YWxpZGF0aW9uRXJyb3JzS2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9JRSA3Lzggd29ya2Fyb3VuZFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFbdGhpcy52YWxpZGF0ZWRTY2hlbWFzS2V5XSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFbdGhpcy52YWxpZGF0aW9uRXJyb3JzS2V5XSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNjYW5uZWRTY2hlbWFzSW5kZXggPSBkYXRhW3RoaXMudmFsaWRhdGVkU2NoZW1hc0tleV0ubGVuZ3RoO1xyXG4gICAgICAgICAgICBkYXRhW3RoaXMudmFsaWRhdGVkU2NoZW1hc0tleV1bc2Nhbm5lZFNjaGVtYXNJbmRleF0gPSBzY2hlbWE7XHJcbiAgICAgICAgICAgIGRhdGFbdGhpcy52YWxpZGF0aW9uRXJyb3JzS2V5XVtzY2FubmVkU2NoZW1hc0luZGV4XSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgZXJyb3JDb3VudCA9IHRoaXMuZXJyb3JzLmxlbmd0aDtcclxuICAgIHZhciBlcnJvciA9IHRoaXMudmFsaWRhdGVCYXNpYyhkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcclxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlTnVtZXJpYyhkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcclxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlU3RyaW5nKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxyXG4gICAgICAgIHx8IHRoaXMudmFsaWRhdGVBcnJheShkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcclxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlT2JqZWN0KGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxyXG4gICAgICAgIHx8IHRoaXMudmFsaWRhdGVDb21iaW5hdGlvbnMoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpXHJcbiAgICAgICAgfHwgdGhpcy52YWxpZGF0ZUh5cGVybWVkaWEoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpXHJcbiAgICAgICAgfHwgdGhpcy52YWxpZGF0ZUZvcm1hdChkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcclxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlRGVmaW5lZEtleXdvcmRzKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxyXG4gICAgICAgIHx8IG51bGw7XHJcblxyXG4gICAgaWYgKHRvcExldmVsKSB7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMuc2Nhbm5lZC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLnNjYW5uZWQucG9wKCk7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBpdGVtW3RoaXMudmFsaWRhdGVkU2NoZW1hc0tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2Nhbm5lZEZyb3plbiA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2Nhbm5lZEZyb3plblNjaGVtYXMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXJyb3IgfHwgZXJyb3JDb3VudCAhPT0gdGhpcy5lcnJvcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgd2hpbGUgKChkYXRhUGF0aFBhcnRzICYmIGRhdGFQYXRoUGFydHMubGVuZ3RoKSB8fCAoc2NoZW1hUGF0aFBhcnRzICYmIHNjaGVtYVBhdGhQYXJ0cy5sZW5ndGgpKSB7XHJcbiAgICAgICAgICAgIHZhciBkYXRhUGFydCA9IChkYXRhUGF0aFBhcnRzICYmIGRhdGFQYXRoUGFydHMubGVuZ3RoKSA/IFwiXCIgKyBkYXRhUGF0aFBhcnRzLnBvcCgpIDogbnVsbDtcclxuICAgICAgICAgICAgdmFyIHNjaGVtYVBhcnQgPSAoc2NoZW1hUGF0aFBhcnRzICYmIHNjaGVtYVBhdGhQYXJ0cy5sZW5ndGgpID8gXCJcIiArIHNjaGVtYVBhdGhQYXJ0cy5wb3AoKSA6IG51bGw7XHJcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvci5wcmVmaXhXaXRoKGRhdGFQYXJ0LCBzY2hlbWFQYXJ0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnByZWZpeEVycm9ycyhlcnJvckNvdW50LCBkYXRhUGFydCwgc2NoZW1hUGFydCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChzY2FubmVkRnJvemVuU2NoZW1hSW5kZXggIT09IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNjYW5uZWRGcm96ZW5WYWxpZGF0aW9uRXJyb3JzW2Zyb3plbkluZGV4XVtzY2FubmVkRnJvemVuU2NoZW1hSW5kZXhdID0gdGhpcy5lcnJvcnMuc2xpY2Uoc3RhcnRFcnJvckNvdW50KTtcclxuICAgIH0gZWxzZSBpZiAoc2Nhbm5lZFNjaGVtYXNJbmRleCAhPT0gbnVsbCkge1xyXG4gICAgICAgIGRhdGFbdGhpcy52YWxpZGF0aW9uRXJyb3JzS2V5XVtzY2FubmVkU2NoZW1hc0luZGV4XSA9IHRoaXMuZXJyb3JzLnNsaWNlKHN0YXJ0RXJyb3JDb3VudCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG59O1xyXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIChkYXRhLCBzY2hlbWEpIHtcclxuICAgIGlmICh0eXBlb2Ygc2NoZW1hLmZvcm1hdCAhPT0gJ3N0cmluZycgfHwgIXRoaXMuZm9ybWF0VmFsaWRhdG9yc1tzY2hlbWEuZm9ybWF0XSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgdmFyIGVycm9yTWVzc2FnZSA9IHRoaXMuZm9ybWF0VmFsaWRhdG9yc1tzY2hlbWEuZm9ybWF0XS5jYWxsKG51bGwsIGRhdGEsIHNjaGVtYSk7XHJcbiAgICBpZiAodHlwZW9mIGVycm9yTWVzc2FnZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGVycm9yTWVzc2FnZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLkZPUk1BVF9DVVNUT00sIHttZXNzYWdlOiBlcnJvck1lc3NhZ2V9LCAnJywgJy9mb3JtYXQnLCBudWxsLCBkYXRhLCBzY2hlbWEpO1xyXG4gICAgfSBlbHNlIGlmIChlcnJvck1lc3NhZ2UgJiYgdHlwZW9mIGVycm9yTWVzc2FnZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLkZPUk1BVF9DVVNUT00sIHttZXNzYWdlOiBlcnJvck1lc3NhZ2UubWVzc2FnZSB8fCBcIj9cIn0sIGVycm9yTWVzc2FnZS5kYXRhUGF0aCB8fCAnJywgZXJyb3JNZXNzYWdlLnNjaGVtYVBhdGggfHwgXCIvZm9ybWF0XCIsIG51bGwsIGRhdGEsIHNjaGVtYSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVEZWZpbmVkS2V5d29yZHMgPSBmdW5jdGlvbiAoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpIHtcclxuICAgIGZvciAodmFyIGtleSBpbiB0aGlzLmRlZmluZWRLZXl3b3Jkcykge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hW2tleV0gPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgdmFsaWRhdGlvbkZ1bmN0aW9ucyA9IHRoaXMuZGVmaW5lZEtleXdvcmRzW2tleV07XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWxpZGF0aW9uRnVuY3Rpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBmdW5jID0gdmFsaWRhdGlvbkZ1bmN0aW9uc1tpXTtcclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGZ1bmMoZGF0YSwgc2NoZW1hW2tleV0sIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiByZXN1bHQgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLktFWVdPUkRfQ1VTVE9NLCB7XHJcbiAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzdWx0XHJcbiAgICAgICAgICAgICAgICB9LCAnJywgJycsIG51bGwsIGRhdGEsIHNjaGVtYSkucHJlZml4V2l0aChudWxsLCBrZXkpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGNvZGUgPSByZXN1bHQuY29kZTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29kZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIUVycm9yQ29kZXNbY29kZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmRlZmluZWQgZXJyb3IgY29kZSAodXNlIGRlZmluZUVycm9yKTogJyArIGNvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb2RlID0gRXJyb3JDb2Rlc1tjb2RlXTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvZGUgIT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29kZSA9IEVycm9yQ29kZXMuS0VZV09SRF9DVVNUT007XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZVBhcmFtcyA9ICh0eXBlb2YgcmVzdWx0Lm1lc3NhZ2UgPT09ICdvYmplY3QnKSA/IHJlc3VsdC5tZXNzYWdlIDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3VsdC5tZXNzYWdlIHx8IFwiP1wiXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgdmFyIHNjaGVtYVBhdGggPSByZXN1bHQuc2NoZW1hUGF0aCB8fCAoXCIvXCIgKyBrZXkucmVwbGFjZSgvfi9nLCAnfjAnKS5yZXBsYWNlKC9cXC8vZywgJ34xJykpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3IoY29kZSwgbWVzc2FnZVBhcmFtcywgcmVzdWx0LmRhdGFQYXRoIHx8IG51bGwsIHNjaGVtYVBhdGgsIG51bGwsIGRhdGEsIHNjaGVtYSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbmZ1bmN0aW9uIHJlY3Vyc2l2ZUNvbXBhcmUoQSwgQikge1xyXG4gICAgaWYgKEEgPT09IEIpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChBICYmIEIgJiYgdHlwZW9mIEEgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIEIgPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShBKSAhPT0gQXJyYXkuaXNBcnJheShCKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KEEpKSB7XHJcbiAgICAgICAgICAgIGlmIChBLmxlbmd0aCAhPT0gQi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IEEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICghcmVjdXJzaXZlQ29tcGFyZShBW2ldLCBCW2ldKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBrZXk7XHJcbiAgICAgICAgICAgIGZvciAoa2V5IGluIEEpIHtcclxuICAgICAgICAgICAgICAgIGlmIChCW2tleV0gPT09IHVuZGVmaW5lZCAmJiBBW2tleV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKGtleSBpbiBCKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoQVtrZXldID09PSB1bmRlZmluZWQgJiYgQltrZXldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChrZXkgaW4gQSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyZWN1cnNpdmVDb21wYXJlKEFba2V5XSwgQltrZXldKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVCYXNpYyA9IGZ1bmN0aW9uIHZhbGlkYXRlQmFzaWMoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpIHtcclxuICAgIHZhciBlcnJvcjtcclxuICAgIGlmIChlcnJvciA9IHRoaXMudmFsaWRhdGVUeXBlKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKSkge1xyXG4gICAgICAgIHJldHVybiBlcnJvci5wcmVmaXhXaXRoKG51bGwsIFwidHlwZVwiKTtcclxuICAgIH1cclxuICAgIGlmIChlcnJvciA9IHRoaXMudmFsaWRhdGVFbnVtKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKSkge1xyXG4gICAgICAgIHJldHVybiBlcnJvci5wcmVmaXhXaXRoKG51bGwsIFwidHlwZVwiKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVUeXBlID0gZnVuY3Rpb24gdmFsaWRhdGVUeXBlKGRhdGEsIHNjaGVtYSkge1xyXG4gICAgaWYgKHNjaGVtYS50eXBlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHZhciBkYXRhVHlwZSA9IHR5cGVvZiBkYXRhO1xyXG4gICAgaWYgKGRhdGEgPT09IG51bGwpIHtcclxuICAgICAgICBkYXRhVHlwZSA9IFwibnVsbFwiO1xyXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgZGF0YVR5cGUgPSBcImFycmF5XCI7XHJcbiAgICB9XHJcbiAgICB2YXIgYWxsb3dlZFR5cGVzID0gc2NoZW1hLnR5cGU7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYWxsb3dlZFR5cGVzKSkge1xyXG4gICAgICAgIGFsbG93ZWRUeXBlcyA9IFthbGxvd2VkVHlwZXNdO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsb3dlZFR5cGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFyIHR5cGUgPSBhbGxvd2VkVHlwZXNbaV07XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IGRhdGFUeXBlIHx8ICh0eXBlID09PSBcImludGVnZXJcIiAmJiBkYXRhVHlwZSA9PT0gXCJudW1iZXJcIiAmJiAoZGF0YSAlIDEgPT09IDApKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLklOVkFMSURfVFlQRSwge1xyXG4gICAgICAgIHR5cGU6IGRhdGFUeXBlLFxyXG4gICAgICAgIGV4cGVjdGVkOiBhbGxvd2VkVHlwZXMuam9pbihcIi9cIilcclxuICAgIH0sICcnLCAnJywgbnVsbCwgZGF0YSwgc2NoZW1hKTtcclxufTtcclxuXHJcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlRW51bSA9IGZ1bmN0aW9uIHZhbGlkYXRlRW51bShkYXRhLCBzY2hlbWEpIHtcclxuICAgIGlmIChzY2hlbWFbXCJlbnVtXCJdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NoZW1hW1wiZW51bVwiXS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBlbnVtVmFsID0gc2NoZW1hW1wiZW51bVwiXVtpXTtcclxuICAgICAgICBpZiAocmVjdXJzaXZlQ29tcGFyZShkYXRhLCBlbnVtVmFsKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLkVOVU1fTUlTTUFUQ0gsIHt2YWx1ZTogKHR5cGVvZiBKU09OICE9PSAndW5kZWZpbmVkJykgPyBKU09OLnN0cmluZ2lmeShkYXRhKSA6IGRhdGF9LCAnJywgJycsIG51bGwsIGRhdGEsIHNjaGVtYSk7XHJcbn07XHJcblxyXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZU51bWVyaWMgPSBmdW5jdGlvbiB2YWxpZGF0ZU51bWVyaWMoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpIHtcclxuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlTXVsdGlwbGVPZihkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcclxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlTWluTWF4KGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxyXG4gICAgICAgIHx8IHRoaXMudmFsaWRhdGVOYU4oZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpXHJcbiAgICAgICAgfHwgbnVsbDtcclxufTtcclxuXHJcbnZhciBDTE9TRV9FTk9VR0hfTE9XID0gTWF0aC5wb3coMiwgLTUxKTtcclxudmFyIENMT1NFX0VOT1VHSF9ISUdIID0gMSAtIENMT1NFX0VOT1VHSF9MT1c7XHJcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlTXVsdGlwbGVPZiA9IGZ1bmN0aW9uIHZhbGlkYXRlTXVsdGlwbGVPZihkYXRhLCBzY2hlbWEpIHtcclxuICAgIHZhciBtdWx0aXBsZU9mID0gc2NoZW1hLm11bHRpcGxlT2YgfHwgc2NoZW1hLmRpdmlzaWJsZUJ5O1xyXG4gICAgaWYgKG11bHRpcGxlT2YgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgdmFyIHJlbWFpbmRlciA9IChkYXRhIC8gbXVsdGlwbGVPZikgJSAxO1xyXG4gICAgICAgIGlmIChyZW1haW5kZXIgPj0gQ0xPU0VfRU5PVUdIX0xPVyAmJiByZW1haW5kZXIgPCBDTE9TRV9FTk9VR0hfSElHSCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLk5VTUJFUl9NVUxUSVBMRV9PRiwge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZU9mOiBtdWx0aXBsZU9mXHJcbiAgICAgICAgICAgIH0sICcnLCAnJywgbnVsbCwgZGF0YSwgc2NoZW1hKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlTWluTWF4ID0gZnVuY3Rpb24gdmFsaWRhdGVNaW5NYXgoZGF0YSwgc2NoZW1hKSB7XHJcbiAgICBpZiAodHlwZW9mIGRhdGEgIT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGlmIChzY2hlbWEubWluaW11bSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgaWYgKGRhdGEgPCBzY2hlbWEubWluaW11bSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLk5VTUJFUl9NSU5JTVVNLCB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogZGF0YSxcclxuICAgICAgICAgICAgICAgIG1pbmltdW06IHNjaGVtYS5taW5pbXVtXHJcbiAgICAgICAgICAgIH0sICcnLCAnL21pbmltdW0nLCBudWxsLCBkYXRhLCBzY2hlbWEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2NoZW1hLmV4Y2x1c2l2ZU1pbmltdW0gJiYgZGF0YSA9PT0gc2NoZW1hLm1pbmltdW0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5OVU1CRVJfTUlOSU1VTV9FWENMVVNJVkUsIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgbWluaW11bTogc2NoZW1hLm1pbmltdW1cclxuICAgICAgICAgICAgfSwgJycsICcvZXhjbHVzaXZlTWluaW11bScsIG51bGwsIGRhdGEsIHNjaGVtYSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHNjaGVtYS5tYXhpbXVtICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAoZGF0YSA+IHNjaGVtYS5tYXhpbXVtKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuTlVNQkVSX01BWElNVU0sIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgbWF4aW11bTogc2NoZW1hLm1heGltdW1cclxuICAgICAgICAgICAgfSwgJycsICcvbWF4aW11bScsIG51bGwsIGRhdGEsIHNjaGVtYSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzY2hlbWEuZXhjbHVzaXZlTWF4aW11bSAmJiBkYXRhID09PSBzY2hlbWEubWF4aW11bSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLk5VTUJFUl9NQVhJTVVNX0VYQ0xVU0lWRSwge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICBtYXhpbXVtOiBzY2hlbWEubWF4aW11bVxyXG4gICAgICAgICAgICB9LCAnJywgJy9leGNsdXNpdmVNYXhpbXVtJywgbnVsbCwgZGF0YSwgc2NoZW1hKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlTmFOID0gZnVuY3Rpb24gdmFsaWRhdGVOYU4oZGF0YSwgc2NoZW1hKSB7XHJcbiAgICBpZiAodHlwZW9mIGRhdGEgIT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGlmIChpc05hTihkYXRhKSA9PT0gdHJ1ZSB8fCBkYXRhID09PSBJbmZpbml0eSB8fCBkYXRhID09PSAtSW5maW5pdHkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLk5VTUJFUl9OT1RfQV9OVU1CRVIsIHt2YWx1ZTogZGF0YX0sICcnLCAnL3R5cGUnLCBudWxsLCBkYXRhLCBzY2hlbWEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZVN0cmluZyA9IGZ1bmN0aW9uIHZhbGlkYXRlU3RyaW5nKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKSB7XHJcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVN0cmluZ0xlbmd0aChkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcclxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlU3RyaW5nUGF0dGVybihkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcclxuICAgICAgICB8fCBudWxsO1xyXG59O1xyXG5cclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVTdHJpbmdMZW5ndGggPSBmdW5jdGlvbiB2YWxpZGF0ZVN0cmluZ0xlbmd0aChkYXRhLCBzY2hlbWEpIHtcclxuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHNjaGVtYS5taW5MZW5ndGggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCA8IHNjaGVtYS5taW5MZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5TVFJJTkdfTEVOR1RIX1NIT1JULCB7XHJcbiAgICAgICAgICAgICAgICBsZW5ndGg6IGRhdGEubGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgbWluaW11bTogc2NoZW1hLm1pbkxlbmd0aFxyXG4gICAgICAgICAgICB9LCAnJywgJy9taW5MZW5ndGgnLCBudWxsLCBkYXRhLCBzY2hlbWEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChzY2hlbWEubWF4TGVuZ3RoICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAoZGF0YS5sZW5ndGggPiBzY2hlbWEubWF4TGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuU1RSSU5HX0xFTkdUSF9MT05HLCB7XHJcbiAgICAgICAgICAgICAgICBsZW5ndGg6IGRhdGEubGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgbWF4aW11bTogc2NoZW1hLm1heExlbmd0aFxyXG4gICAgICAgICAgICB9LCAnJywgJy9tYXhMZW5ndGgnLCBudWxsLCBkYXRhLCBzY2hlbWEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVTdHJpbmdQYXR0ZXJuID0gZnVuY3Rpb24gdmFsaWRhdGVTdHJpbmdQYXR0ZXJuKGRhdGEsIHNjaGVtYSkge1xyXG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiIHx8ICh0eXBlb2Ygc2NoZW1hLnBhdHRlcm4gIT09IFwic3RyaW5nXCIgJiYgIShzY2hlbWEucGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cCkpKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB2YXIgcmVnZXhwO1xyXG4gICAgaWYgKHNjaGVtYS5wYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwKSB7XHJcbiAgICAgICAgcmVnZXhwID0gc2NoZW1hLnBhdHRlcm47XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB2YXIgYm9keSwgZmxhZ3MgPSAnJztcclxuICAgICAgICAvLyBDaGVjayBmb3IgcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWxzXHJcbiAgICAgICAgLy8gQHNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNS4xLyNzZWMtNy44LjVcclxuICAgICAgICB2YXIgbGl0ZXJhbCA9IHNjaGVtYS5wYXR0ZXJuLm1hdGNoKC9eXFwvKC4rKVxcLyhbaW1nXSopJC8pO1xyXG4gICAgICAgIGlmIChsaXRlcmFsKSB7XHJcbiAgICAgICAgICAgIGJvZHkgPSBsaXRlcmFsWzFdO1xyXG4gICAgICAgICAgICBmbGFncyA9IGxpdGVyYWxbMl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBib2R5ID0gc2NoZW1hLnBhdHRlcm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlZ2V4cCA9IG5ldyBSZWdFeHAoYm9keSwgZmxhZ3MpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFyZWdleHAudGVzdChkYXRhKSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuU1RSSU5HX1BBVFRFUk4sIHtwYXR0ZXJuOiBzY2hlbWEucGF0dGVybn0sICcnLCAnL3BhdHRlcm4nLCBudWxsLCBkYXRhLCBzY2hlbWEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZUFycmF5ID0gZnVuY3Rpb24gdmFsaWRhdGVBcnJheShkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aCkge1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUFycmF5TGVuZ3RoKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxyXG4gICAgICAgIHx8IHRoaXMudmFsaWRhdGVBcnJheVVuaXF1ZUl0ZW1zKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxyXG4gICAgICAgIHx8IHRoaXMudmFsaWRhdGVBcnJheUl0ZW1zKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxyXG4gICAgICAgIHx8IG51bGw7XHJcbn07XHJcblxyXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZUFycmF5TGVuZ3RoID0gZnVuY3Rpb24gdmFsaWRhdGVBcnJheUxlbmd0aChkYXRhLCBzY2hlbWEpIHtcclxuICAgIHZhciBlcnJvcjtcclxuICAgIGlmIChzY2hlbWEubWluSXRlbXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCA8IHNjaGVtYS5taW5JdGVtcykge1xyXG4gICAgICAgICAgICBlcnJvciA9IHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5BUlJBWV9MRU5HVEhfU0hPUlQsIHtcclxuICAgICAgICAgICAgICAgIGxlbmd0aDogZGF0YS5sZW5ndGgsXHJcbiAgICAgICAgICAgICAgICBtaW5pbXVtOiBzY2hlbWEubWluSXRlbXNcclxuICAgICAgICAgICAgfSwgJycsICcvbWluSXRlbXMnLCBudWxsLCBkYXRhLCBzY2hlbWEpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5oYW5kbGVFcnJvcihlcnJvcikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChzY2hlbWEubWF4SXRlbXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCA+IHNjaGVtYS5tYXhJdGVtcykge1xyXG4gICAgICAgICAgICBlcnJvciA9IHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5BUlJBWV9MRU5HVEhfTE9ORywge1xyXG4gICAgICAgICAgICAgICAgbGVuZ3RoOiBkYXRhLmxlbmd0aCxcclxuICAgICAgICAgICAgICAgIG1heGltdW06IHNjaGVtYS5tYXhJdGVtc1xyXG4gICAgICAgICAgICB9LCAnJywgJy9tYXhJdGVtcycsIG51bGwsIGRhdGEsIHNjaGVtYSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhhbmRsZUVycm9yKGVycm9yKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZUFycmF5VW5pcXVlSXRlbXMgPSBmdW5jdGlvbiB2YWxpZGF0ZUFycmF5VW5pcXVlSXRlbXMoZGF0YSwgc2NoZW1hKSB7XHJcbiAgICBpZiAoc2NoZW1hLnVuaXF1ZUl0ZW1zKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGogPSBpICsgMTsgaiA8IGRhdGEubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZWN1cnNpdmVDb21wYXJlKGRhdGFbaV0sIGRhdGFbal0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9yID0gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLkFSUkFZX1VOSVFVRSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaDE6IGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoMjogalxyXG4gICAgICAgICAgICAgICAgICAgIH0sICcnLCAnL3VuaXF1ZUl0ZW1zJywgbnVsbCwgZGF0YSwgc2NoZW1hKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oYW5kbGVFcnJvcihlcnJvcikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVBcnJheUl0ZW1zID0gZnVuY3Rpb24gdmFsaWRhdGVBcnJheUl0ZW1zKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKSB7XHJcbiAgICBpZiAoc2NoZW1hLml0ZW1zID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHZhciBlcnJvciwgaTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykpIHtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoaSA8IHNjaGVtYS5pdGVtcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvciA9IHRoaXMudmFsaWRhdGVBbGwoZGF0YVtpXSwgc2NoZW1hLml0ZW1zW2ldLCBbaV0sIFtcIml0ZW1zXCIsIGldLCBkYXRhUG9pbnRlclBhdGggKyBcIi9cIiArIGkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zID09PSBcImJvb2xlYW5cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghc2NoZW1hLmFkZGl0aW9uYWxJdGVtcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9ICh0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuQVJSQVlfQURESVRJT05BTF9JVEVNUywge30sICcvJyArIGksICcvYWRkaXRpb25hbEl0ZW1zJywgbnVsbCwgZGF0YSwgc2NoZW1hKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhbmRsZUVycm9yKGVycm9yKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcnJvciA9IHRoaXMudmFsaWRhdGVBbGwoZGF0YVtpXSwgc2NoZW1hLmFkZGl0aW9uYWxJdGVtcywgW2ldLCBbXCJhZGRpdGlvbmFsSXRlbXNcIl0sIGRhdGFQb2ludGVyUGF0aCArIFwiL1wiICsgaSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvciA9IHRoaXMudmFsaWRhdGVBbGwoZGF0YVtpXSwgc2NoZW1hLml0ZW1zLCBbaV0sIFtcIml0ZW1zXCJdLCBkYXRhUG9pbnRlclBhdGggKyBcIi9cIiArIGkpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlT2JqZWN0ID0gZnVuY3Rpb24gdmFsaWRhdGVPYmplY3QoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpIHtcclxuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gXCJvYmplY3RcIiB8fCBkYXRhID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlT2JqZWN0TWluTWF4UHJvcGVydGllcyhkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcclxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlT2JqZWN0UmVxdWlyZWRQcm9wZXJ0aWVzKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxyXG4gICAgICAgIHx8IHRoaXMudmFsaWRhdGVPYmplY3RQcm9wZXJ0aWVzKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxyXG4gICAgICAgIHx8IHRoaXMudmFsaWRhdGVPYmplY3REZXBlbmRlbmNpZXMoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpXHJcbiAgICAgICAgfHwgbnVsbDtcclxufTtcclxuXHJcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlT2JqZWN0TWluTWF4UHJvcGVydGllcyA9IGZ1bmN0aW9uIHZhbGlkYXRlT2JqZWN0TWluTWF4UHJvcGVydGllcyhkYXRhLCBzY2hlbWEpIHtcclxuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZGF0YSk7XHJcbiAgICB2YXIgZXJyb3I7XHJcbiAgICBpZiAoc2NoZW1hLm1pblByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA8IHNjaGVtYS5taW5Qcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgIGVycm9yID0gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLk9CSkVDVF9QUk9QRVJUSUVTX01JTklNVU0sIHtcclxuICAgICAgICAgICAgICAgIHByb3BlcnR5Q291bnQ6IGtleXMubGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgbWluaW11bTogc2NoZW1hLm1pblByb3BlcnRpZXNcclxuICAgICAgICAgICAgfSwgJycsICcvbWluUHJvcGVydGllcycsIG51bGwsIGRhdGEsIHNjaGVtYSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhhbmRsZUVycm9yKGVycm9yKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHNjaGVtYS5tYXhQcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPiBzY2hlbWEubWF4UHJvcGVydGllcykge1xyXG4gICAgICAgICAgICBlcnJvciA9IHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5PQkpFQ1RfUFJPUEVSVElFU19NQVhJTVVNLCB7XHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUNvdW50OiBrZXlzLmxlbmd0aCxcclxuICAgICAgICAgICAgICAgIG1heGltdW06IHNjaGVtYS5tYXhQcm9wZXJ0aWVzXHJcbiAgICAgICAgICAgIH0sICcnLCAnL21heFByb3BlcnRpZXMnLCBudWxsLCBkYXRhLCBzY2hlbWEpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5oYW5kbGVFcnJvcihlcnJvcikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVPYmplY3RSZXF1aXJlZFByb3BlcnRpZXMgPSBmdW5jdGlvbiB2YWxpZGF0ZU9iamVjdFJlcXVpcmVkUHJvcGVydGllcyhkYXRhLCBzY2hlbWEpIHtcclxuICAgIGlmIChzY2hlbWEucmVxdWlyZWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NoZW1hLnJlcXVpcmVkLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBrZXkgPSBzY2hlbWEucmVxdWlyZWRbaV07XHJcbiAgICAgICAgICAgIGlmIChkYXRhW2tleV0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVycm9yID0gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLk9CSkVDVF9SRVFVSVJFRCwge2tleToga2V5fSwgJycsICcvcmVxdWlyZWQvJyArIGksIG51bGwsIGRhdGEsIHNjaGVtYSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5oYW5kbGVFcnJvcihlcnJvcikpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlT2JqZWN0UHJvcGVydGllcyA9IGZ1bmN0aW9uIHZhbGlkYXRlT2JqZWN0UHJvcGVydGllcyhkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aCkge1xyXG4gICAgdmFyIGVycm9yO1xyXG4gICAgZm9yICh2YXIga2V5IGluIGRhdGEpIHtcclxuICAgICAgICB2YXIga2V5UG9pbnRlclBhdGggPSBkYXRhUG9pbnRlclBhdGggKyBcIi9cIiArIGtleS5yZXBsYWNlKC9+L2csICd+MCcpLnJlcGxhY2UoL1xcLy9nLCAnfjEnKTtcclxuICAgICAgICB2YXIgZm91bmRNYXRjaCA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChzY2hlbWEucHJvcGVydGllcyAhPT0gdW5kZWZpbmVkICYmIHNjaGVtYS5wcm9wZXJ0aWVzW2tleV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBmb3VuZE1hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKGVycm9yID0gdGhpcy52YWxpZGF0ZUFsbChkYXRhW2tleV0sIHNjaGVtYS5wcm9wZXJ0aWVzW2tleV0sIFtrZXldLCBbXCJwcm9wZXJ0aWVzXCIsIGtleV0sIGtleVBvaW50ZXJQYXRoKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzY2hlbWEucGF0dGVyblByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwYXR0ZXJuS2V5IGluIHNjaGVtYS5wYXR0ZXJuUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlZ2V4cCA9IG5ldyBSZWdFeHAocGF0dGVybktleSk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVnZXhwLnRlc3Qoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvdW5kTWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciA9IHRoaXMudmFsaWRhdGVBbGwoZGF0YVtrZXldLCBzY2hlbWEucGF0dGVyblByb3BlcnRpZXNbcGF0dGVybktleV0sIFtrZXldLCBbXCJwYXR0ZXJuUHJvcGVydGllc1wiLCBwYXR0ZXJuS2V5XSwga2V5UG9pbnRlclBhdGgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFmb3VuZE1hdGNoKSB7XHJcbiAgICAgICAgICAgIGlmIChzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudHJhY2tVbmtub3duUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMua25vd25Qcm9wZXJ0eVBhdGhzW2tleVBvaW50ZXJQYXRoXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMudW5rbm93blByb3BlcnR5UGF0aHNba2V5UG9pbnRlclBhdGhdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgPT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuT0JKRUNUX0FERElUSU9OQUxfUFJPUEVSVElFUywge2tleToga2V5fSwgJycsICcvYWRkaXRpb25hbFByb3BlcnRpZXMnLCBudWxsLCBkYXRhLCBzY2hlbWEpLnByZWZpeFdpdGgoa2V5LCBudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciA9IHRoaXMudmFsaWRhdGVBbGwoZGF0YVtrZXldLCBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMsIFtrZXldLCBbXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiXSwga2V5UG9pbnRlclBhdGgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50cmFja1Vua25vd25Qcm9wZXJ0aWVzICYmICF0aGlzLmtub3duUHJvcGVydHlQYXRoc1trZXlQb2ludGVyUGF0aF0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudW5rbm93blByb3BlcnR5UGF0aHNba2V5UG9pbnRlclBhdGhdID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50cmFja1Vua25vd25Qcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMua25vd25Qcm9wZXJ0eVBhdGhzW2tleVBvaW50ZXJQYXRoXSA9IHRydWU7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnVua25vd25Qcm9wZXJ0eVBhdGhzW2tleVBvaW50ZXJQYXRoXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlT2JqZWN0RGVwZW5kZW5jaWVzID0gZnVuY3Rpb24gdmFsaWRhdGVPYmplY3REZXBlbmRlbmNpZXMoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpIHtcclxuICAgIHZhciBlcnJvcjtcclxuICAgIGlmIChzY2hlbWEuZGVwZW5kZW5jaWVzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBmb3IgKHZhciBkZXBLZXkgaW4gc2NoZW1hLmRlcGVuZGVuY2llcykge1xyXG4gICAgICAgICAgICBpZiAoZGF0YVtkZXBLZXldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkZXAgPSBzY2hlbWEuZGVwZW5kZW5jaWVzW2RlcEtleV07XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRlcCA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2RlcF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5PQkpFQ1RfREVQRU5ERU5DWV9LRVksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogZGVwS2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZzogZGVwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sICcnLCAnJywgbnVsbCwgZGF0YSwgc2NoZW1hKS5wcmVmaXhXaXRoKG51bGwsIGRlcEtleSkucHJlZml4V2l0aChudWxsLCBcImRlcGVuZGVuY2llc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGVwKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXF1aXJlZEtleSA9IGRlcFtpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbcmVxdWlyZWRLZXldID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLk9CSkVDVF9ERVBFTkRFTkNZX0tFWSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogZGVwS2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc3Npbmc6IHJlcXVpcmVkS2V5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAnJywgJy8nICsgaSwgbnVsbCwgZGF0YSwgc2NoZW1hKS5wcmVmaXhXaXRoKG51bGwsIGRlcEtleSkucHJlZml4V2l0aChudWxsLCBcImRlcGVuZGVuY2llc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhbmRsZUVycm9yKGVycm9yKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yID0gdGhpcy52YWxpZGF0ZUFsbChkYXRhLCBkZXAsIFtdLCBbXCJkZXBlbmRlbmNpZXNcIiwgZGVwS2V5XSwgZGF0YVBvaW50ZXJQYXRoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZUNvbWJpbmF0aW9ucyA9IGZ1bmN0aW9uIHZhbGlkYXRlQ29tYmluYXRpb25zKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKSB7XHJcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUFsbE9mKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxyXG4gICAgICAgIHx8IHRoaXMudmFsaWRhdGVBbnlPZihkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcclxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlT25lT2YoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpXHJcbiAgICAgICAgfHwgdGhpcy52YWxpZGF0ZU5vdChkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcclxuICAgICAgICB8fCBudWxsO1xyXG59O1xyXG5cclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVBbGxPZiA9IGZ1bmN0aW9uIHZhbGlkYXRlQWxsT2YoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpIHtcclxuICAgIGlmIChzY2hlbWEuYWxsT2YgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgdmFyIGVycm9yO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY2hlbWEuYWxsT2YubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgc3ViU2NoZW1hID0gc2NoZW1hLmFsbE9mW2ldO1xyXG4gICAgICAgIGlmIChlcnJvciA9IHRoaXMudmFsaWRhdGVBbGwoZGF0YSwgc3ViU2NoZW1hLCBbXSwgW1wiYWxsT2ZcIiwgaV0sIGRhdGFQb2ludGVyUGF0aCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVBbnlPZiA9IGZ1bmN0aW9uIHZhbGlkYXRlQW55T2YoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpIHtcclxuICAgIGlmIChzY2hlbWEuYW55T2YgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgdmFyIGVycm9ycyA9IFtdO1xyXG4gICAgdmFyIHN0YXJ0RXJyb3JDb3VudCA9IHRoaXMuZXJyb3JzLmxlbmd0aDtcclxuICAgIHZhciBvbGRVbmtub3duUHJvcGVydHlQYXRocywgb2xkS25vd25Qcm9wZXJ0eVBhdGhzO1xyXG4gICAgaWYgKHRoaXMudHJhY2tVbmtub3duUHJvcGVydGllcykge1xyXG4gICAgICAgIG9sZFVua25vd25Qcm9wZXJ0eVBhdGhzID0gdGhpcy51bmtub3duUHJvcGVydHlQYXRocztcclxuICAgICAgICBvbGRLbm93blByb3BlcnR5UGF0aHMgPSB0aGlzLmtub3duUHJvcGVydHlQYXRocztcclxuICAgIH1cclxuICAgIHZhciBlcnJvckF0RW5kID0gdHJ1ZTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NoZW1hLmFueU9mLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJhY2tVbmtub3duUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICB0aGlzLnVua25vd25Qcm9wZXJ0eVBhdGhzID0ge307XHJcbiAgICAgICAgICAgIHRoaXMua25vd25Qcm9wZXJ0eVBhdGhzID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzdWJTY2hlbWEgPSBzY2hlbWEuYW55T2ZbaV07XHJcblxyXG4gICAgICAgIHZhciBlcnJvckNvdW50ID0gdGhpcy5lcnJvcnMubGVuZ3RoO1xyXG4gICAgICAgIHZhciBlcnJvciA9IHRoaXMudmFsaWRhdGVBbGwoZGF0YSwgc3ViU2NoZW1hLCBbXSwgW1wiYW55T2ZcIiwgaV0sIGRhdGFQb2ludGVyUGF0aCk7XHJcblxyXG4gICAgICAgIGlmIChlcnJvciA9PT0gbnVsbCAmJiBlcnJvckNvdW50ID09PSB0aGlzLmVycm9ycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5lcnJvcnMgPSB0aGlzLmVycm9ycy5zbGljZSgwLCBzdGFydEVycm9yQ291bnQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMudHJhY2tVbmtub3duUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIga25vd25LZXkgaW4gdGhpcy5rbm93blByb3BlcnR5UGF0aHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBvbGRLbm93blByb3BlcnR5UGF0aHNba25vd25LZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgb2xkVW5rbm93blByb3BlcnR5UGF0aHNba25vd25LZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgdW5rbm93bktleSBpbiB0aGlzLnVua25vd25Qcm9wZXJ0eVBhdGhzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvbGRLbm93blByb3BlcnR5UGF0aHNbdW5rbm93bktleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2xkVW5rbm93blByb3BlcnR5UGF0aHNbdW5rbm93bktleV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY29udGludWUgbG9vcGluZyBzbyB3ZSBjYXRjaCBhbGwgdGhlIHByb3BlcnR5IGRlZmluaXRpb25zLCBidXQgd2UgZG9uJ3Qgd2FudCB0byByZXR1cm4gYW4gZXJyb3JcclxuICAgICAgICAgICAgICAgIGVycm9yQXRFbmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGVycm9yLnByZWZpeFdpdGgobnVsbCwgXCJcIiArIGkpLnByZWZpeFdpdGgobnVsbCwgXCJhbnlPZlwiKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJhY2tVbmtub3duUHJvcGVydGllcykge1xyXG4gICAgICAgIHRoaXMudW5rbm93blByb3BlcnR5UGF0aHMgPSBvbGRVbmtub3duUHJvcGVydHlQYXRocztcclxuICAgICAgICB0aGlzLmtub3duUHJvcGVydHlQYXRocyA9IG9sZEtub3duUHJvcGVydHlQYXRocztcclxuICAgIH1cclxuICAgIGlmIChlcnJvckF0RW5kKSB7XHJcbiAgICAgICAgZXJyb3JzID0gZXJyb3JzLmNvbmNhdCh0aGlzLmVycm9ycy5zbGljZShzdGFydEVycm9yQ291bnQpKTtcclxuICAgICAgICB0aGlzLmVycm9ycyA9IHRoaXMuZXJyb3JzLnNsaWNlKDAsIHN0YXJ0RXJyb3JDb3VudCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5BTllfT0ZfTUlTU0lORywge30sIFwiXCIsIFwiL2FueU9mXCIsIGVycm9ycywgZGF0YSwgc2NoZW1hKTtcclxuICAgIH1cclxufTtcclxuXHJcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlT25lT2YgPSBmdW5jdGlvbiB2YWxpZGF0ZU9uZU9mKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKSB7XHJcbiAgICBpZiAoc2NoZW1hLm9uZU9mID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHZhciB2YWxpZEluZGV4ID0gbnVsbDtcclxuICAgIHZhciBlcnJvcnMgPSBbXTtcclxuICAgIHZhciBzdGFydEVycm9yQ291bnQgPSB0aGlzLmVycm9ycy5sZW5ndGg7XHJcbiAgICB2YXIgb2xkVW5rbm93blByb3BlcnR5UGF0aHMsIG9sZEtub3duUHJvcGVydHlQYXRocztcclxuICAgIGlmICh0aGlzLnRyYWNrVW5rbm93blByb3BlcnRpZXMpIHtcclxuICAgICAgICBvbGRVbmtub3duUHJvcGVydHlQYXRocyA9IHRoaXMudW5rbm93blByb3BlcnR5UGF0aHM7XHJcbiAgICAgICAgb2xkS25vd25Qcm9wZXJ0eVBhdGhzID0gdGhpcy5rbm93blByb3BlcnR5UGF0aHM7XHJcbiAgICB9XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjaGVtYS5vbmVPZi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLnRyYWNrVW5rbm93blByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgdGhpcy51bmtub3duUHJvcGVydHlQYXRocyA9IHt9O1xyXG4gICAgICAgICAgICB0aGlzLmtub3duUHJvcGVydHlQYXRocyA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgc3ViU2NoZW1hID0gc2NoZW1hLm9uZU9mW2ldO1xyXG5cclxuICAgICAgICB2YXIgZXJyb3JDb3VudCA9IHRoaXMuZXJyb3JzLmxlbmd0aDtcclxuICAgICAgICB2YXIgZXJyb3IgPSB0aGlzLnZhbGlkYXRlQWxsKGRhdGEsIHN1YlNjaGVtYSwgW10sIFtcIm9uZU9mXCIsIGldLCBkYXRhUG9pbnRlclBhdGgpO1xyXG5cclxuICAgICAgICBpZiAoZXJyb3IgPT09IG51bGwgJiYgZXJyb3JDb3VudCA9PT0gdGhpcy5lcnJvcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWxpZEluZGV4ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZEluZGV4ID0gaTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzID0gdGhpcy5lcnJvcnMuc2xpY2UoMCwgc3RhcnRFcnJvckNvdW50KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuT05FX09GX01VTFRJUExFLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgxOiB2YWxpZEluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIGluZGV4MjogaVxyXG4gICAgICAgICAgICAgICAgfSwgXCJcIiwgXCIvb25lT2ZcIiwgbnVsbCwgZGF0YSwgc2NoZW1hKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy50cmFja1Vua25vd25Qcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrbm93bktleSBpbiB0aGlzLmtub3duUHJvcGVydHlQYXRocykge1xyXG4gICAgICAgICAgICAgICAgICAgIG9sZEtub3duUHJvcGVydHlQYXRoc1trbm93bktleV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvbGRVbmtub3duUHJvcGVydHlQYXRoc1trbm93bktleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciB1bmtub3duS2V5IGluIHRoaXMudW5rbm93blByb3BlcnR5UGF0aHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW9sZEtub3duUHJvcGVydHlQYXRoc1t1bmtub3duS2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbGRVbmtub3duUHJvcGVydHlQYXRoc1t1bmtub3duS2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICBlcnJvcnMucHVzaChlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJhY2tVbmtub3duUHJvcGVydGllcykge1xyXG4gICAgICAgIHRoaXMudW5rbm93blByb3BlcnR5UGF0aHMgPSBvbGRVbmtub3duUHJvcGVydHlQYXRocztcclxuICAgICAgICB0aGlzLmtub3duUHJvcGVydHlQYXRocyA9IG9sZEtub3duUHJvcGVydHlQYXRocztcclxuICAgIH1cclxuICAgIGlmICh2YWxpZEluZGV4ID09PSBudWxsKSB7XHJcbiAgICAgICAgZXJyb3JzID0gZXJyb3JzLmNvbmNhdCh0aGlzLmVycm9ycy5zbGljZShzdGFydEVycm9yQ291bnQpKTtcclxuICAgICAgICB0aGlzLmVycm9ycyA9IHRoaXMuZXJyb3JzLnNsaWNlKDAsIHN0YXJ0RXJyb3JDb3VudCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5PTkVfT0ZfTUlTU0lORywge30sIFwiXCIsIFwiL29uZU9mXCIsIGVycm9ycywgZGF0YSwgc2NoZW1hKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5lcnJvcnMgPSB0aGlzLmVycm9ycy5zbGljZSgwLCBzdGFydEVycm9yQ291bnQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZU5vdCA9IGZ1bmN0aW9uIHZhbGlkYXRlTm90KGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKSB7XHJcbiAgICBpZiAoc2NoZW1hLm5vdCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB2YXIgb2xkRXJyb3JDb3VudCA9IHRoaXMuZXJyb3JzLmxlbmd0aDtcclxuICAgIHZhciBvbGRVbmtub3duUHJvcGVydHlQYXRocywgb2xkS25vd25Qcm9wZXJ0eVBhdGhzO1xyXG4gICAgaWYgKHRoaXMudHJhY2tVbmtub3duUHJvcGVydGllcykge1xyXG4gICAgICAgIG9sZFVua25vd25Qcm9wZXJ0eVBhdGhzID0gdGhpcy51bmtub3duUHJvcGVydHlQYXRocztcclxuICAgICAgICBvbGRLbm93blByb3BlcnR5UGF0aHMgPSB0aGlzLmtub3duUHJvcGVydHlQYXRocztcclxuICAgICAgICB0aGlzLnVua25vd25Qcm9wZXJ0eVBhdGhzID0ge307XHJcbiAgICAgICAgdGhpcy5rbm93blByb3BlcnR5UGF0aHMgPSB7fTtcclxuICAgIH1cclxuICAgIHZhciBlcnJvciA9IHRoaXMudmFsaWRhdGVBbGwoZGF0YSwgc2NoZW1hLm5vdCwgbnVsbCwgbnVsbCwgZGF0YVBvaW50ZXJQYXRoKTtcclxuICAgIHZhciBub3RFcnJvcnMgPSB0aGlzLmVycm9ycy5zbGljZShvbGRFcnJvckNvdW50KTtcclxuICAgIHRoaXMuZXJyb3JzID0gdGhpcy5lcnJvcnMuc2xpY2UoMCwgb2xkRXJyb3JDb3VudCk7XHJcbiAgICBpZiAodGhpcy50cmFja1Vua25vd25Qcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgdGhpcy51bmtub3duUHJvcGVydHlQYXRocyA9IG9sZFVua25vd25Qcm9wZXJ0eVBhdGhzO1xyXG4gICAgICAgIHRoaXMua25vd25Qcm9wZXJ0eVBhdGhzID0gb2xkS25vd25Qcm9wZXJ0eVBhdGhzO1xyXG4gICAgfVxyXG4gICAgaWYgKGVycm9yID09PSBudWxsICYmIG5vdEVycm9ycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLk5PVF9QQVNTRUQsIHt9LCBcIlwiLCBcIi9ub3RcIiwgbnVsbCwgZGF0YSwgc2NoZW1hKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVIeXBlcm1lZGlhID0gZnVuY3Rpb24gdmFsaWRhdGVDb21iaW5hdGlvbnMoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpIHtcclxuICAgIGlmICghc2NoZW1hLmxpbmtzKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB2YXIgZXJyb3I7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjaGVtYS5saW5rcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBsZG8gPSBzY2hlbWEubGlua3NbaV07XHJcbiAgICAgICAgaWYgKGxkby5yZWwgPT09IFwiZGVzY3JpYmVkYnlcIikge1xyXG4gICAgICAgICAgICB2YXIgdGVtcGxhdGUgPSBuZXcgVXJpVGVtcGxhdGUobGRvLmhyZWYpO1xyXG4gICAgICAgICAgICB2YXIgYWxsUHJlc2VudCA9IHRydWU7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGVtcGxhdGUudmFyTmFtZXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICghKHRlbXBsYXRlLnZhck5hbWVzW2pdIGluIGRhdGEpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxsUHJlc2VudCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChhbGxQcmVzZW50KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2NoZW1hVXJsID0gdGVtcGxhdGUuZmlsbEZyb21PYmplY3QoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3ViU2NoZW1hID0ge1wiJHJlZlwiOiBzY2hlbWFVcmx9O1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yID0gdGhpcy52YWxpZGF0ZUFsbChkYXRhLCBzdWJTY2hlbWEsIFtdLCBbXCJsaW5rc1wiLCBpXSwgZGF0YVBvaW50ZXJQYXRoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbi8vIHBhcnNlVVJJKCkgYW5kIHJlc29sdmVVcmwoKSBhcmUgZnJvbSBodHRwczovL2dpc3QuZ2l0aHViLmNvbS8xMDg4ODUwXHJcbi8vICAgLSAgcmVsZWFzZWQgYXMgcHVibGljIGRvbWFpbiBieSBhdXRob3IgKFwiWWFmZmxlXCIpIC0gc2VlIGNvbW1lbnRzIG9uIGdpc3RcclxuXHJcbmZ1bmN0aW9uIHBhcnNlVVJJKHVybCkge1xyXG4gICAgdmFyIG0gPSBTdHJpbmcodXJsKS5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJykubWF0Y2goL14oW146XFwvPyNdKzopPyhcXC9cXC8oPzpbXjpAXSooPzo6W146QF0qKT9AKT8oKFteOlxcLz8jXSopKD86OihcXGQqKSk/KSk/KFtePyNdKikoXFw/W14jXSopPygjW1xcc1xcU10qKT8vKTtcclxuICAgIC8vIGF1dGhvcml0eSA9ICcvLycgKyB1c2VyICsgJzonICsgcGFzcyAnQCcgKyBob3N0bmFtZSArICc6JyBwb3J0XHJcbiAgICByZXR1cm4gKG0gPyB7XHJcbiAgICAgICAgaHJlZjogbVswXSB8fCAnJyxcclxuICAgICAgICBwcm90b2NvbDogbVsxXSB8fCAnJyxcclxuICAgICAgICBhdXRob3JpdHk6IG1bMl0gfHwgJycsXHJcbiAgICAgICAgaG9zdDogbVszXSB8fCAnJyxcclxuICAgICAgICBob3N0bmFtZTogbVs0XSB8fCAnJyxcclxuICAgICAgICBwb3J0OiBtWzVdIHx8ICcnLFxyXG4gICAgICAgIHBhdGhuYW1lOiBtWzZdIHx8ICcnLFxyXG4gICAgICAgIHNlYXJjaDogbVs3XSB8fCAnJyxcclxuICAgICAgICBoYXNoOiBtWzhdIHx8ICcnXHJcbiAgICB9IDogbnVsbCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlc29sdmVVcmwoYmFzZSwgaHJlZikgey8vIFJGQyAzOTg2XHJcblxyXG4gICAgZnVuY3Rpb24gcmVtb3ZlRG90U2VnbWVudHMoaW5wdXQpIHtcclxuICAgICAgICB2YXIgb3V0cHV0ID0gW107XHJcbiAgICAgICAgaW5wdXQucmVwbGFjZSgvXihcXC5cXC4/KFxcL3wkKSkrLywgJycpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXC8oXFwuKFxcL3wkKSkrL2csICcvJylcclxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcL1xcLlxcLiQvLCAnLy4uLycpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXC8/W15cXC9dKi9nLCBmdW5jdGlvbiAocCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHAgPT09ICcvLi4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHVzaChwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG91dHB1dC5qb2luKCcnKS5yZXBsYWNlKC9eXFwvLywgaW5wdXQuY2hhckF0KDApID09PSAnLycgPyAnLycgOiAnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaHJlZiA9IHBhcnNlVVJJKGhyZWYgfHwgJycpO1xyXG4gICAgYmFzZSA9IHBhcnNlVVJJKGJhc2UgfHwgJycpO1xyXG5cclxuICAgIHJldHVybiAhaHJlZiB8fCAhYmFzZSA/IG51bGwgOiAoaHJlZi5wcm90b2NvbCB8fCBiYXNlLnByb3RvY29sKSArXHJcbiAgICAoaHJlZi5wcm90b2NvbCB8fCBocmVmLmF1dGhvcml0eSA/IGhyZWYuYXV0aG9yaXR5IDogYmFzZS5hdXRob3JpdHkpICtcclxuICAgIHJlbW92ZURvdFNlZ21lbnRzKGhyZWYucHJvdG9jb2wgfHwgaHJlZi5hdXRob3JpdHkgfHwgaHJlZi5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJyA/IGhyZWYucGF0aG5hbWUgOiAoaHJlZi5wYXRobmFtZSA/ICgoYmFzZS5hdXRob3JpdHkgJiYgIWJhc2UucGF0aG5hbWUgPyAnLycgOiAnJykgKyBiYXNlLnBhdGhuYW1lLnNsaWNlKDAsIGJhc2UucGF0aG5hbWUubGFzdEluZGV4T2YoJy8nKSArIDEpICsgaHJlZi5wYXRobmFtZSkgOiBiYXNlLnBhdGhuYW1lKSkgK1xyXG4gICAgKGhyZWYucHJvdG9jb2wgfHwgaHJlZi5hdXRob3JpdHkgfHwgaHJlZi5wYXRobmFtZSA/IGhyZWYuc2VhcmNoIDogKGhyZWYuc2VhcmNoIHx8IGJhc2Uuc2VhcmNoKSkgK1xyXG4gICAgaHJlZi5oYXNoO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXREb2N1bWVudFVyaSh1cmkpIHtcclxuICAgIHJldHVybiB1cmkuc3BsaXQoJyMnKVswXTtcclxufVxyXG5cclxuZnVuY3Rpb24gbm9ybVNjaGVtYShzY2hlbWEsIGJhc2VVcmkpIHtcclxuICAgIGlmIChzY2hlbWEgJiYgdHlwZW9mIHNjaGVtYSA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGlmIChiYXNlVXJpID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgYmFzZVVyaSA9IHNjaGVtYS5pZDtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzY2hlbWEuaWQgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgYmFzZVVyaSA9IHJlc29sdmVVcmwoYmFzZVVyaSwgc2NoZW1hLmlkKTtcclxuICAgICAgICAgICAgc2NoZW1hLmlkID0gYmFzZVVyaTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjaGVtYS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbm9ybVNjaGVtYShzY2hlbWFbaV0sIGJhc2VVcmkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWFbJyRyZWYnXSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICAgICAgc2NoZW1hWyckcmVmJ10gPSByZXNvbHZlVXJsKGJhc2VVcmksIHNjaGVtYVsnJHJlZiddKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gc2NoZW1hKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSBcImVudW1cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIG5vcm1TY2hlbWEoc2NoZW1hW2tleV0sIGJhc2VVcmkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkZWZhdWx0RXJyb3JSZXBvcnRlcihsYW5ndWFnZSkge1xyXG4gICAgbGFuZ3VhZ2UgPSBsYW5ndWFnZSB8fCAnZW4nO1xyXG5cclxuICAgIHZhciBlcnJvck1lc3NhZ2VzID0gbGFuZ3VhZ2VzW2xhbmd1YWdlXTtcclxuXHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGVycm9yKSB7XHJcbiAgICAgICAgdmFyIG1lc3NhZ2VUZW1wbGF0ZSA9IGVycm9yTWVzc2FnZXNbZXJyb3IuY29kZV0gfHwgRXJyb3JNZXNzYWdlc0RlZmF1bHRbZXJyb3IuY29kZV07XHJcbiAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlVGVtcGxhdGUgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlVua25vd24gZXJyb3IgY29kZSBcIiArIGVycm9yLmNvZGUgKyBcIjogXCIgKyBKU09OLnN0cmluZ2lmeShlcnJvci5tZXNzYWdlUGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG1lc3NhZ2VQYXJhbXMgPSBlcnJvci5wYXJhbXM7XHJcbiAgICAgICAgLy8gQWRhcHRlZCBmcm9tIENyb2NrZm9yZCdzIHN1cHBsYW50KClcclxuICAgICAgICByZXR1cm4gbWVzc2FnZVRlbXBsYXRlLnJlcGxhY2UoL1xceyhbXnt9XSopXFx9L2csIGZ1bmN0aW9uICh3aG9sZSwgdmFyTmFtZSkge1xyXG4gICAgICAgICAgICB2YXIgc3ViVmFsdWUgPSBtZXNzYWdlUGFyYW1zW3Zhck5hbWVdO1xyXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHN1YlZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygc3ViVmFsdWUgPT09ICdudW1iZXInID8gc3ViVmFsdWUgOiB3aG9sZTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbn1cclxuXHJcbnZhciBFcnJvckNvZGVzID0ge1xyXG4gICAgSU5WQUxJRF9UWVBFOiAwLFxyXG4gICAgRU5VTV9NSVNNQVRDSDogMSxcclxuICAgIEFOWV9PRl9NSVNTSU5HOiAxMCxcclxuICAgIE9ORV9PRl9NSVNTSU5HOiAxMSxcclxuICAgIE9ORV9PRl9NVUxUSVBMRTogMTIsXHJcbiAgICBOT1RfUEFTU0VEOiAxMyxcclxuICAgIC8vIE51bWVyaWMgZXJyb3JzXHJcbiAgICBOVU1CRVJfTVVMVElQTEVfT0Y6IDEwMCxcclxuICAgIE5VTUJFUl9NSU5JTVVNOiAxMDEsXHJcbiAgICBOVU1CRVJfTUlOSU1VTV9FWENMVVNJVkU6IDEwMixcclxuICAgIE5VTUJFUl9NQVhJTVVNOiAxMDMsXHJcbiAgICBOVU1CRVJfTUFYSU1VTV9FWENMVVNJVkU6IDEwNCxcclxuICAgIE5VTUJFUl9OT1RfQV9OVU1CRVI6IDEwNSxcclxuICAgIC8vIFN0cmluZyBlcnJvcnNcclxuICAgIFNUUklOR19MRU5HVEhfU0hPUlQ6IDIwMCxcclxuICAgIFNUUklOR19MRU5HVEhfTE9ORzogMjAxLFxyXG4gICAgU1RSSU5HX1BBVFRFUk46IDIwMixcclxuICAgIC8vIE9iamVjdCBlcnJvcnNcclxuICAgIE9CSkVDVF9QUk9QRVJUSUVTX01JTklNVU06IDMwMCxcclxuICAgIE9CSkVDVF9QUk9QRVJUSUVTX01BWElNVU06IDMwMSxcclxuICAgIE9CSkVDVF9SRVFVSVJFRDogMzAyLFxyXG4gICAgT0JKRUNUX0FERElUSU9OQUxfUFJPUEVSVElFUzogMzAzLFxyXG4gICAgT0JKRUNUX0RFUEVOREVOQ1lfS0VZOiAzMDQsXHJcbiAgICAvLyBBcnJheSBlcnJvcnNcclxuICAgIEFSUkFZX0xFTkdUSF9TSE9SVDogNDAwLFxyXG4gICAgQVJSQVlfTEVOR1RIX0xPTkc6IDQwMSxcclxuICAgIEFSUkFZX1VOSVFVRTogNDAyLFxyXG4gICAgQVJSQVlfQURESVRJT05BTF9JVEVNUzogNDAzLFxyXG4gICAgLy8gQ3VzdG9tL3VzZXItZGVmaW5lZCBlcnJvcnNcclxuICAgIEZPUk1BVF9DVVNUT006IDUwMCxcclxuICAgIEtFWVdPUkRfQ1VTVE9NOiA1MDEsXHJcbiAgICAvLyBTY2hlbWEgc3RydWN0dXJlXHJcbiAgICBDSVJDVUxBUl9SRUZFUkVOQ0U6IDYwMCxcclxuICAgIC8vIE5vbi1zdGFuZGFyZCB2YWxpZGF0aW9uIG9wdGlvbnNcclxuICAgIFVOS05PV05fUFJPUEVSVFk6IDEwMDBcclxufTtcclxudmFyIEVycm9yQ29kZUxvb2t1cCA9IHt9O1xyXG5mb3IgKHZhciBrZXkgaW4gRXJyb3JDb2Rlcykge1xyXG4gICAgRXJyb3JDb2RlTG9va3VwW0Vycm9yQ29kZXNba2V5XV0gPSBrZXk7XHJcbn1cclxudmFyIEVycm9yTWVzc2FnZXNEZWZhdWx0ID0ge1xyXG4gICAgSU5WQUxJRF9UWVBFOiBcIkludmFsaWQgdHlwZToge3R5cGV9IChleHBlY3RlZCB7ZXhwZWN0ZWR9KVwiLFxyXG4gICAgRU5VTV9NSVNNQVRDSDogXCJObyBlbnVtIG1hdGNoIGZvcjoge3ZhbHVlfVwiLFxyXG4gICAgQU5ZX09GX01JU1NJTkc6IFwiRGF0YSBkb2VzIG5vdCBtYXRjaCBhbnkgc2NoZW1hcyBmcm9tIFxcXCJhbnlPZlxcXCJcIixcclxuICAgIE9ORV9PRl9NSVNTSU5HOiBcIkRhdGEgZG9lcyBub3QgbWF0Y2ggYW55IHNjaGVtYXMgZnJvbSBcXFwib25lT2ZcXFwiXCIsXHJcbiAgICBPTkVfT0ZfTVVMVElQTEU6IFwiRGF0YSBpcyB2YWxpZCBhZ2FpbnN0IG1vcmUgdGhhbiBvbmUgc2NoZW1hIGZyb20gXFxcIm9uZU9mXFxcIjogaW5kaWNlcyB7aW5kZXgxfSBhbmQge2luZGV4Mn1cIixcclxuICAgIE5PVF9QQVNTRUQ6IFwiRGF0YSBtYXRjaGVzIHNjaGVtYSBmcm9tIFxcXCJub3RcXFwiXCIsXHJcbiAgICAvLyBOdW1lcmljIGVycm9yc1xyXG4gICAgTlVNQkVSX01VTFRJUExFX09GOiBcIlZhbHVlIHt2YWx1ZX0gaXMgbm90IGEgbXVsdGlwbGUgb2Yge211bHRpcGxlT2Z9XCIsXHJcbiAgICBOVU1CRVJfTUlOSU1VTTogXCJWYWx1ZSB7dmFsdWV9IGlzIGxlc3MgdGhhbiBtaW5pbXVtIHttaW5pbXVtfVwiLFxyXG4gICAgTlVNQkVSX01JTklNVU1fRVhDTFVTSVZFOiBcIlZhbHVlIHt2YWx1ZX0gaXMgZXF1YWwgdG8gZXhjbHVzaXZlIG1pbmltdW0ge21pbmltdW19XCIsXHJcbiAgICBOVU1CRVJfTUFYSU1VTTogXCJWYWx1ZSB7dmFsdWV9IGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtIHttYXhpbXVtfVwiLFxyXG4gICAgTlVNQkVSX01BWElNVU1fRVhDTFVTSVZFOiBcIlZhbHVlIHt2YWx1ZX0gaXMgZXF1YWwgdG8gZXhjbHVzaXZlIG1heGltdW0ge21heGltdW19XCIsXHJcbiAgICBOVU1CRVJfTk9UX0FfTlVNQkVSOiBcIlZhbHVlIHt2YWx1ZX0gaXMgbm90IGEgdmFsaWQgbnVtYmVyXCIsXHJcbiAgICAvLyBTdHJpbmcgZXJyb3JzXHJcbiAgICBTVFJJTkdfTEVOR1RIX1NIT1JUOiBcIlN0cmluZyBpcyB0b28gc2hvcnQgKHtsZW5ndGh9IGNoYXJzKSwgbWluaW11bSB7bWluaW11bX1cIixcclxuICAgIFNUUklOR19MRU5HVEhfTE9ORzogXCJTdHJpbmcgaXMgdG9vIGxvbmcgKHtsZW5ndGh9IGNoYXJzKSwgbWF4aW11bSB7bWF4aW11bX1cIixcclxuICAgIFNUUklOR19QQVRURVJOOiBcIlN0cmluZyBkb2VzIG5vdCBtYXRjaCBwYXR0ZXJuOiB7cGF0dGVybn1cIixcclxuICAgIC8vIE9iamVjdCBlcnJvcnNcclxuICAgIE9CSkVDVF9QUk9QRVJUSUVTX01JTklNVU06IFwiVG9vIGZldyBwcm9wZXJ0aWVzIGRlZmluZWQgKHtwcm9wZXJ0eUNvdW50fSksIG1pbmltdW0ge21pbmltdW19XCIsXHJcbiAgICBPQkpFQ1RfUFJPUEVSVElFU19NQVhJTVVNOiBcIlRvbyBtYW55IHByb3BlcnRpZXMgZGVmaW5lZCAoe3Byb3BlcnR5Q291bnR9KSwgbWF4aW11bSB7bWF4aW11bX1cIixcclxuICAgIE9CSkVDVF9SRVFVSVJFRDogXCJNaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5OiB7a2V5fVwiLFxyXG4gICAgT0JKRUNUX0FERElUSU9OQUxfUFJPUEVSVElFUzogXCJBZGRpdGlvbmFsIHByb3BlcnRpZXMgbm90IGFsbG93ZWRcIixcclxuICAgIE9CSkVDVF9ERVBFTkRFTkNZX0tFWTogXCJEZXBlbmRlbmN5IGZhaWxlZCAtIGtleSBtdXN0IGV4aXN0OiB7bWlzc2luZ30gKGR1ZSB0byBrZXk6IHtrZXl9KVwiLFxyXG4gICAgLy8gQXJyYXkgZXJyb3JzXHJcbiAgICBBUlJBWV9MRU5HVEhfU0hPUlQ6IFwiQXJyYXkgaXMgdG9vIHNob3J0ICh7bGVuZ3RofSksIG1pbmltdW0ge21pbmltdW19XCIsXHJcbiAgICBBUlJBWV9MRU5HVEhfTE9ORzogXCJBcnJheSBpcyB0b28gbG9uZyAoe2xlbmd0aH0pLCBtYXhpbXVtIHttYXhpbXVtfVwiLFxyXG4gICAgQVJSQVlfVU5JUVVFOiBcIkFycmF5IGl0ZW1zIGFyZSBub3QgdW5pcXVlIChpbmRpY2VzIHttYXRjaDF9IGFuZCB7bWF0Y2gyfSlcIixcclxuICAgIEFSUkFZX0FERElUSU9OQUxfSVRFTVM6IFwiQWRkaXRpb25hbCBpdGVtcyBub3QgYWxsb3dlZFwiLFxyXG4gICAgLy8gRm9ybWF0IGVycm9yc1xyXG4gICAgRk9STUFUX0NVU1RPTTogXCJGb3JtYXQgdmFsaWRhdGlvbiBmYWlsZWQgKHttZXNzYWdlfSlcIixcclxuICAgIEtFWVdPUkRfQ1VTVE9NOiBcIktleXdvcmQgZmFpbGVkOiB7a2V5fSAoe21lc3NhZ2V9KVwiLFxyXG4gICAgLy8gU2NoZW1hIHN0cnVjdHVyZVxyXG4gICAgQ0lSQ1VMQVJfUkVGRVJFTkNFOiBcIkNpcmN1bGFyICRyZWZzOiB7dXJsc31cIixcclxuICAgIC8vIE5vbi1zdGFuZGFyZCB2YWxpZGF0aW9uIG9wdGlvbnNcclxuICAgIFVOS05PV05fUFJPUEVSVFk6IFwiVW5rbm93biBwcm9wZXJ0eSAobm90IGluIHNjaGVtYSlcIlxyXG59O1xyXG5cclxuZnVuY3Rpb24gVmFsaWRhdGlvbkVycm9yKGNvZGUsIHBhcmFtcywgZGF0YVBhdGgsIHNjaGVtYVBhdGgsIHN1YkVycm9ycykge1xyXG4gICAgRXJyb3IuY2FsbCh0aGlzKTtcclxuICAgIGlmIChjb2RlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBlcnJvciBjb2RlIHN1cHBsaWVkOiBcIiArIHNjaGVtYVBhdGgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tZXNzYWdlID0gJyc7XHJcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcclxuICAgIHRoaXMuY29kZSA9IGNvZGU7XHJcbiAgICB0aGlzLmRhdGFQYXRoID0gZGF0YVBhdGggfHwgXCJcIjtcclxuICAgIHRoaXMuc2NoZW1hUGF0aCA9IHNjaGVtYVBhdGggfHwgXCJcIjtcclxuICAgIHRoaXMuc3ViRXJyb3JzID0gc3ViRXJyb3JzIHx8IG51bGw7XHJcblxyXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpO1xyXG4gICAgdGhpcy5zdGFjayA9IGVyci5zdGFjayB8fCBlcnIuc3RhY2t0cmFjZTtcclxuICAgIGlmICghdGhpcy5zdGFjaykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLnN0YWNrID0gZXJyLnN0YWNrIHx8IGVyci5zdGFja3RyYWNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuVmFsaWRhdGlvbkVycm9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcclxuVmFsaWRhdGlvbkVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFZhbGlkYXRpb25FcnJvcjtcclxuVmFsaWRhdGlvbkVycm9yLnByb3RvdHlwZS5uYW1lID0gJ1ZhbGlkYXRpb25FcnJvcic7XHJcblxyXG5WYWxpZGF0aW9uRXJyb3IucHJvdG90eXBlLnByZWZpeFdpdGggPSBmdW5jdGlvbiAoZGF0YVByZWZpeCwgc2NoZW1hUHJlZml4KSB7XHJcbiAgICBpZiAoZGF0YVByZWZpeCAhPT0gbnVsbCkge1xyXG4gICAgICAgIGRhdGFQcmVmaXggPSBkYXRhUHJlZml4LnJlcGxhY2UoL34vZywgXCJ+MFwiKS5yZXBsYWNlKC9cXC8vZywgXCJ+MVwiKTtcclxuICAgICAgICB0aGlzLmRhdGFQYXRoID0gXCIvXCIgKyBkYXRhUHJlZml4ICsgdGhpcy5kYXRhUGF0aDtcclxuICAgIH1cclxuICAgIGlmIChzY2hlbWFQcmVmaXggIT09IG51bGwpIHtcclxuICAgICAgICBzY2hlbWFQcmVmaXggPSBzY2hlbWFQcmVmaXgucmVwbGFjZSgvfi9nLCBcIn4wXCIpLnJlcGxhY2UoL1xcLy9nLCBcIn4xXCIpO1xyXG4gICAgICAgIHRoaXMuc2NoZW1hUGF0aCA9IFwiL1wiICsgc2NoZW1hUHJlZml4ICsgdGhpcy5zY2hlbWFQYXRoO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc3ViRXJyb3JzICE9PSBudWxsKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnN1YkVycm9ycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB0aGlzLnN1YkVycm9yc1tpXS5wcmVmaXhXaXRoKGRhdGFQcmVmaXgsIHNjaGVtYVByZWZpeCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbn07XHJcblxyXG5mdW5jdGlvbiBpc1RydXN0ZWRVcmwoYmFzZVVybCwgdGVzdFVybCkge1xyXG4gICAgaWYgKHRlc3RVcmwuc3Vic3RyaW5nKDAsIGJhc2VVcmwubGVuZ3RoKSA9PT0gYmFzZVVybCkge1xyXG4gICAgICAgIHZhciByZW1haW5kZXIgPSB0ZXN0VXJsLnN1YnN0cmluZyhiYXNlVXJsLmxlbmd0aCk7XHJcbiAgICAgICAgaWYgKCh0ZXN0VXJsLmxlbmd0aCA+IDAgJiYgdGVzdFVybC5jaGFyQXQoYmFzZVVybC5sZW5ndGggLSAxKSA9PT0gXCIvXCIpXHJcbiAgICAgICAgICAgIHx8IHJlbWFpbmRlci5jaGFyQXQoMCkgPT09IFwiI1wiXHJcbiAgICAgICAgICAgIHx8IHJlbWFpbmRlci5jaGFyQXQoMCkgPT09IFwiP1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxudmFyIGxhbmd1YWdlcyA9IHt9O1xyXG5cclxuZnVuY3Rpb24gY3JlYXRlQXBpKGxhbmd1YWdlKSB7XHJcbiAgICB2YXIgZ2xvYmFsQ29udGV4dCA9IG5ldyBWYWxpZGF0b3JDb250ZXh0KCk7XHJcbiAgICB2YXIgY3VycmVudExhbmd1YWdlO1xyXG4gICAgdmFyIGN1c3RvbUVycm9yUmVwb3J0ZXI7XHJcbiAgICB2YXIgYXBpID0ge1xyXG4gICAgICAgIHNldEVycm9yUmVwb3J0ZXI6IGZ1bmN0aW9uIChyZXBvcnRlcikge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlcG9ydGVyID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2UocmVwb3J0ZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN1c3RvbUVycm9yUmVwb3J0ZXIgPSByZXBvcnRlcjtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBhZGRGb3JtYXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgZ2xvYmFsQ29udGV4dC5hZGRGb3JtYXQuYXBwbHkoZ2xvYmFsQ29udGV4dCwgYXJndW1lbnRzKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxhbmd1YWdlOiBmdW5jdGlvbiAoY29kZSkge1xyXG4gICAgICAgICAgICBpZiAoIWNvZGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50TGFuZ3VhZ2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFsYW5ndWFnZXNbY29kZV0pIHtcclxuICAgICAgICAgICAgICAgIGNvZGUgPSBjb2RlLnNwbGl0KCctJylbMF07IC8vIGZhbGwgYmFjayB0byBiYXNlIGxhbmd1YWdlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGxhbmd1YWdlc1tjb2RlXSkge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudExhbmd1YWdlID0gY29kZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb2RlOyAvLyBzbyB5b3UgY2FuIHRlbGwgaWYgZmFsbC1iYWNrIGhhcyBoYXBwZW5lZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFkZExhbmd1YWdlOiBmdW5jdGlvbiAoY29kZSwgbWVzc2FnZU1hcCkge1xyXG4gICAgICAgICAgICB2YXIga2V5O1xyXG4gICAgICAgICAgICBmb3IgKGtleSBpbiBFcnJvckNvZGVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobWVzc2FnZU1hcFtrZXldICYmICFtZXNzYWdlTWFwW0Vycm9yQ29kZXNba2V5XV0pIHtcclxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlTWFwW0Vycm9yQ29kZXNba2V5XV0gPSBtZXNzYWdlTWFwW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIHJvb3RDb2RlID0gY29kZS5zcGxpdCgnLScpWzBdO1xyXG4gICAgICAgICAgICBpZiAoIWxhbmd1YWdlc1tyb290Q29kZV0pIHsgLy8gdXNlIGZvciBiYXNlIGxhbmd1YWdlIGlmIG5vdCB5ZXQgZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VzW2NvZGVdID0gbWVzc2FnZU1hcDtcclxuICAgICAgICAgICAgICAgIGxhbmd1YWdlc1tyb290Q29kZV0gPSBtZXNzYWdlTWFwO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VzW2NvZGVdID0gT2JqZWN0LmNyZWF0ZShsYW5ndWFnZXNbcm9vdENvZGVdKTtcclxuICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIG1lc3NhZ2VNYXApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGxhbmd1YWdlc1tyb290Q29kZV1ba2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzW3Jvb3RDb2RlXVtrZXldID0gbWVzc2FnZU1hcFtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZXNbY29kZV1ba2V5XSA9IG1lc3NhZ2VNYXBba2V5XTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZyZXNoQXBpOiBmdW5jdGlvbiAobGFuZ3VhZ2UpIHtcclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZUFwaSgpO1xyXG4gICAgICAgICAgICBpZiAobGFuZ3VhZ2UpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5sYW5ndWFnZShsYW5ndWFnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAoZGF0YSwgc2NoZW1hLCBjaGVja1JlY3Vyc2l2ZSwgYmFuVW5rbm93blByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgdmFyIGRlZiA9IGRlZmF1bHRFcnJvclJlcG9ydGVyKGN1cnJlbnRMYW5ndWFnZSk7XHJcbiAgICAgICAgICAgIHZhciBlcnJvclJlcG9ydGVyID0gY3VzdG9tRXJyb3JSZXBvcnRlciA/IGZ1bmN0aW9uIChlcnJvciwgZGF0YSwgc2NoZW1hKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VzdG9tRXJyb3JSZXBvcnRlcihlcnJvciwgZGF0YSwgc2NoZW1hKSB8fCBkZWYoZXJyb3IsIGRhdGEsIHNjaGVtYSk7XHJcbiAgICAgICAgICAgIH0gOiBkZWY7XHJcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gbmV3IFZhbGlkYXRvckNvbnRleHQoZ2xvYmFsQ29udGV4dCwgZmFsc2UsIGVycm9yUmVwb3J0ZXIsIGNoZWNrUmVjdXJzaXZlLCBiYW5Vbmtub3duUHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgICAgICBzY2hlbWEgPSB7XCIkcmVmXCI6IHNjaGVtYX07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5hZGRTY2hlbWEoXCJcIiwgc2NoZW1hKTtcclxuICAgICAgICAgICAgdmFyIGVycm9yID0gY29udGV4dC52YWxpZGF0ZUFsbChkYXRhLCBzY2hlbWEsIG51bGwsIG51bGwsIFwiXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWVycm9yICYmIGJhblVua25vd25Qcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgICAgICBlcnJvciA9IGNvbnRleHQuYmFuVW5rbm93blByb3BlcnRpZXMoZGF0YSwgc2NoZW1hKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XHJcbiAgICAgICAgICAgIHRoaXMubWlzc2luZyA9IGNvbnRleHQubWlzc2luZztcclxuICAgICAgICAgICAgdGhpcy52YWxpZCA9IChlcnJvciA9PT0gbnVsbCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbGlkO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdmFsaWRhdGVSZXN1bHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlLmFwcGx5KHJlc3VsdCwgYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZhbGlkYXRlTXVsdGlwbGU6IGZ1bmN0aW9uIChkYXRhLCBzY2hlbWEsIGNoZWNrUmVjdXJzaXZlLCBiYW5Vbmtub3duUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICB2YXIgZGVmID0gZGVmYXVsdEVycm9yUmVwb3J0ZXIoY3VycmVudExhbmd1YWdlKTtcclxuICAgICAgICAgICAgdmFyIGVycm9yUmVwb3J0ZXIgPSBjdXN0b21FcnJvclJlcG9ydGVyID8gZnVuY3Rpb24gKGVycm9yLCBkYXRhLCBzY2hlbWEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjdXN0b21FcnJvclJlcG9ydGVyKGVycm9yLCBkYXRhLCBzY2hlbWEpIHx8IGRlZihlcnJvciwgZGF0YSwgc2NoZW1hKTtcclxuICAgICAgICAgICAgfSA6IGRlZjtcclxuICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBuZXcgVmFsaWRhdG9yQ29udGV4dChnbG9iYWxDb250ZXh0LCB0cnVlLCBlcnJvclJlcG9ydGVyLCBjaGVja1JlY3Vyc2l2ZSwgYmFuVW5rbm93blByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICAgICAgc2NoZW1hID0ge1wiJHJlZlwiOiBzY2hlbWF9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQuYWRkU2NoZW1hKFwiXCIsIHNjaGVtYSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQudmFsaWRhdGVBbGwoZGF0YSwgc2NoZW1hLCBudWxsLCBudWxsLCBcIlwiKTtcclxuICAgICAgICAgICAgaWYgKGJhblVua25vd25Qcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmJhblVua25vd25Qcm9wZXJ0aWVzKGRhdGEsIHNjaGVtYSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgICAgICAgICByZXN1bHQuZXJyb3JzID0gY29udGV4dC5lcnJvcnM7XHJcbiAgICAgICAgICAgIHJlc3VsdC5taXNzaW5nID0gY29udGV4dC5taXNzaW5nO1xyXG4gICAgICAgICAgICByZXN1bHQudmFsaWQgPSAocmVzdWx0LmVycm9ycy5sZW5ndGggPT09IDApO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYWRkU2NoZW1hOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnbG9iYWxDb250ZXh0LmFkZFNjaGVtYS5hcHBseShnbG9iYWxDb250ZXh0LCBhcmd1bWVudHMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0U2NoZW1hOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnbG9iYWxDb250ZXh0LmdldFNjaGVtYS5hcHBseShnbG9iYWxDb250ZXh0LCBhcmd1bWVudHMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0U2NoZW1hTWFwOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnbG9iYWxDb250ZXh0LmdldFNjaGVtYU1hcC5hcHBseShnbG9iYWxDb250ZXh0LCBhcmd1bWVudHMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0U2NoZW1hVXJpczogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2xvYmFsQ29udGV4dC5nZXRTY2hlbWFVcmlzLmFwcGx5KGdsb2JhbENvbnRleHQsIGFyZ3VtZW50cyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXRNaXNzaW5nVXJpczogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2xvYmFsQ29udGV4dC5nZXRNaXNzaW5nVXJpcy5hcHBseShnbG9iYWxDb250ZXh0LCBhcmd1bWVudHMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZHJvcFNjaGVtYXM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgZ2xvYmFsQ29udGV4dC5kcm9wU2NoZW1hcy5hcHBseShnbG9iYWxDb250ZXh0LCBhcmd1bWVudHMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGVmaW5lS2V5d29yZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBnbG9iYWxDb250ZXh0LmRlZmluZUtleXdvcmQuYXBwbHkoZ2xvYmFsQ29udGV4dCwgYXJndW1lbnRzKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRlZmluZUVycm9yOiBmdW5jdGlvbiAoY29kZU5hbWUsIGNvZGVOdW1iZXIsIGRlZmF1bHRNZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29kZU5hbWUgIT09ICdzdHJpbmcnIHx8ICEvXltBLVpdKyhfW0EtWl0rKSokLy50ZXN0KGNvZGVOYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2RlIG5hbWUgbXVzdCBiZSBhIHN0cmluZyBpbiBVUFBFUl9DQVNFX1dJVEhfVU5ERVJTQ09SRVMnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvZGVOdW1iZXIgIT09ICdudW1iZXInIHx8IGNvZGVOdW1iZXIgJSAxICE9PSAwIHx8IGNvZGVOdW1iZXIgPCAxMDAwMCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2RlIG51bWJlciBtdXN0IGJlIGFuIGludGVnZXIgPiAxMDAwMCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgRXJyb3JDb2Rlc1tjb2RlTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGFscmVhZHkgZGVmaW5lZDogJyArIGNvZGVOYW1lICsgJyBhcyAnICsgRXJyb3JDb2Rlc1tjb2RlTmFtZV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgRXJyb3JDb2RlTG9va3VwW2NvZGVOdW1iZXJdICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBjb2RlIGFscmVhZHkgdXNlZDogJyArIEVycm9yQ29kZUxvb2t1cFtjb2RlTnVtYmVyXSArICcgYXMgJyArIGNvZGVOdW1iZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEVycm9yQ29kZXNbY29kZU5hbWVdID0gY29kZU51bWJlcjtcclxuICAgICAgICAgICAgRXJyb3JDb2RlTG9va3VwW2NvZGVOdW1iZXJdID0gY29kZU5hbWU7XHJcbiAgICAgICAgICAgIEVycm9yTWVzc2FnZXNEZWZhdWx0W2NvZGVOYW1lXSA9IEVycm9yTWVzc2FnZXNEZWZhdWx0W2NvZGVOdW1iZXJdID0gZGVmYXVsdE1lc3NhZ2U7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGxhbmdDb2RlIGluIGxhbmd1YWdlcykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGxhbmd1YWdlID0gbGFuZ3VhZ2VzW2xhbmdDb2RlXTtcclxuICAgICAgICAgICAgICAgIGlmIChsYW5ndWFnZVtjb2RlTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZVtjb2RlTnVtYmVyXSA9IGxhbmd1YWdlW2NvZGVOdW1iZXJdIHx8IGxhbmd1YWdlW2NvZGVOYW1lXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgZ2xvYmFsQ29udGV4dC5yZXNldCgpO1xyXG4gICAgICAgICAgICB0aGlzLmVycm9yID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5taXNzaW5nID0gW107XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWQgPSB0cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWlzc2luZzogW10sXHJcbiAgICAgICAgZXJyb3I6IG51bGwsXHJcbiAgICAgICAgdmFsaWQ6IHRydWUsXHJcbiAgICAgICAgbm9ybVNjaGVtYTogbm9ybVNjaGVtYSxcclxuICAgICAgICByZXNvbHZlVXJsOiByZXNvbHZlVXJsLFxyXG4gICAgICAgIGdldERvY3VtZW50VXJpOiBnZXREb2N1bWVudFVyaSxcclxuICAgICAgICBlcnJvckNvZGVzOiBFcnJvckNvZGVzXHJcbiAgICB9O1xyXG4gICAgYXBpLmxhbmd1YWdlKGxhbmd1YWdlIHx8ICdlbicpO1xyXG4gICAgcmV0dXJuIGFwaTtcclxufVxyXG5cclxuLy9leHBvcnQgZnVuY3Rpb24gdmFsaWRhdG9yKCkge1xyXG52YXIgdHY0ID0gY3JlYXRlQXBpKCk7XHJcbnR2NC5hZGRMYW5ndWFnZSgnZW4tZ2InLCBFcnJvck1lc3NhZ2VzRGVmYXVsdCk7XHJcblxyXG4vL2xlZ2FjeSBwcm9wZXJ0eVxyXG50djQudHY0ID0gdHY0O1xyXG4vL3JldHVybiB0djQ7XHJcbmV4cG9ydCBkZWZhdWx0IHR2NDtcclxuLy99XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy91dGlscy90djQuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBU0E7QUFDQTtBQURBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFuQ0E7QUFxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFuQ0E7QUFDQTtBQXFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBekpBO0FBMkpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///511\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(513), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvaXMtZnJvemVuLmpzP2Q5ZmEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9pcy1mcm96ZW5cIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2lzLWZyb3plbi5qc1xuLy8gbW9kdWxlIGlkID0gNTEyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///512\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(514);\nmodule.exports = __webpack_require__(13).Object.isFrozen;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvaXMtZnJvemVuLmpzPzVmZDMiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmlzLWZyb3plbicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmlzRnJvemVuO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9pcy1mcm96ZW4uanNcbi8vIG1vZHVsZSBpZCA9IDUxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///513\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.12 Object.isFrozen(O)\nvar isObject = __webpack_require__(36);\n\n__webpack_require__(98)('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuaXMtZnJvemVuLmpzP2M5MTIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjEyIE9iamVjdC5pc0Zyb3plbihPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnaXNGcm96ZW4nLCBmdW5jdGlvbiAoJGlzRnJvemVuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBpc0Zyb3plbihpdCkge1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNGcm96ZW4gPyAkaXNGcm96ZW4oaXQpIDogZmFsc2UgOiB0cnVlO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmlzLWZyb3plbi5qc1xuLy8gbW9kdWxlIGlkID0gNTE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///514\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(46);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(14);\n\nvar _Subscription = __webpack_require__(212);\n\nvar _Subscription2 = _interopRequireDefault(_Subscription);\n\nvar _CryptoManager = __webpack_require__(100);\n\nvar cryptoManager = _interopRequireWildcard(_CryptoManager);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('ReporterObject'); // Log System\n\nvar ReporterObject = function () {\n function ReporterObject(parent, owner, url) {\n (0, _classCallCheck3.default)(this, ReporterObject);\n\n var _this = this;\n\n _this._parent = parent;\n _this._owner = owner;\n _this._url = url;\n\n _this._bus = parent._bus;\n\n _this._domain = (0, _utils.divideURL)(url).domain;\n _this._objSubscriptorURL = _this._url + '/subscription';\n\n _this._subscriptions = {};\n _this._childrens = [];\n _this._childrenListeners = [];\n\n _this._forwards = {};\n\n _this._isToSaveData = false;\n\n _this._allocateListeners();\n }\n\n (0, _createClass3.default)(ReporterObject, [{\n key: '_allocateListeners',\n value: function _allocateListeners() {\n var _this2 = this;\n\n var _this = this;\n\n //add subscription listener...\n _this._subscriptionListener = _this._bus.addListener(_this._objSubscriptorURL, function (msg) {\n log.info('[SyncherManager.ReporterObject received ]', msg);\n switch (msg.type) {\n case 'subscribe':\n _this._onRemoteSubscribe(msg);break;\n case 'unsubscribe':\n _this._onRemoteUnSubscribe(msg);break;\n case 'response':\n _this._onRemoteResponse(msg);break;\n }\n });\n\n var changeURL = _this._url + '/changes';\n _this._changeListener = _this._bus.addListener(changeURL, function (msg) {\n\n log.info('[SyncherManager.ReporterObject ] SyncherManager-' + changeURL + '-RCV: ', msg);\n\n //TODO: what todo here? Save changes?\n if (_this2._isToSaveData && msg.body.attribute) {\n log.log('[SyncherManager.ReporterObject ] SyncherManager - save data: ', msg);\n _this._parent._dataObjectsStorage.update(true, _this._url, 'version', msg.body.version);\n _this._parent._dataObjectsStorage.update(true, _this._url, 'lastModified', msg.body.lastModified);\n _this._parent._dataObjectsStorage.saveData(true, _this._url, msg.body.attribute, msg.body.value);\n }\n });\n }\n }, {\n key: '_releaseListeners',\n value: function _releaseListeners() {\n var _this = this;\n\n _this._subscriptionListener.remove();\n\n _this._changeListener.remove();\n\n _this._childrenListeners.forEach(function (cl) {\n cl.remove();\n });\n\n (0, _keys2.default)(_this._forwards).forEach(function (key) {\n _this.forwardUnSubscribe(key);\n });\n\n //remove all subscriptions\n (0, _keys2.default)(_this._subscriptions).forEach(function (key) {\n _this._subscriptions[key]._releaseListeners();\n });\n }\n }, {\n key: 'resumeSubscriptions',\n value: function resumeSubscriptions(subscriptions) {\n var _this = this;\n\n if (!subscriptions) return;\n\n (0, _keys2.default)(subscriptions).forEach(function (key) {\n var hypertyURL = subscriptions[key];\n\n log.log('[SyncherManager.ReporterObject] - resume subscriptions', _this, hypertyURL, _this._childrens);\n\n if (!_this._subscriptions[hypertyURL]) {\n _this._subscriptions[hypertyURL] = new _Subscription2.default(_this._bus, _this._owner, _this._url, _this._childrens, true);\n }\n });\n }\n\n /**\r\n * Register a listener in the msg-node and in the local MessageBus, so that messages on this address are forwarded to the reporter object\r\n * @param {string} address - URL to register the listeners\r\n * @return {Promise} Return Promise OK or error\r\n */\n\n }, {\n key: 'forwardSubscribe',\n value: function forwardSubscribe(addresses) {\n var _this = this;\n\n //FLOW-OUT: message sent to the msg-node SubscriptionManager component\n var nodeSubscribeMsg = {\n type: 'subscribe', from: _this._parent._url, to: 'domain://msg-node.' + _this._domain + '/sm',\n body: { resources: addresses, source: _this._owner }\n };\n\n return new _promise2.default(function (resolve, reject) {\n _this._bus.postMessage(nodeSubscribeMsg, function (reply) {\n log.log('[SyncherManager.ReporterObject ]forward-subscribe-response(reporter): ', reply);\n if (reply.body.code === 200) {\n var newForward = _this._bus.addForward(_this._url, _this._owner);\n _this._forwards[addresses[0]] = newForward;\n resolve();\n } else {\n reject('Error on msg-node subscription: ' + reply.body.desc);\n }\n });\n });\n }\n\n /**\r\n * UnRegister a listener in the msg-node and in the local MessageBus, so that messages on this address are removed from forward\r\n * @param {string} address - URL to un-register the listeners\r\n */\n\n }, {\n key: 'forwardUnSubscribe',\n value: function forwardUnSubscribe(address) {\n var _this = this;\n\n _this._forwards[address].remove();\n delete _this._forwards[address];\n\n //FLOW-OUT: message sent to the msg-node SubscriptionManager component\n var nodeUnSubscribeMsg = {\n type: 'unsubscribe', from: _this._parent._url, to: 'domain://msg-node.' + _this._domain + '/sm',\n body: { resources: [address], source: _this._owner }\n };\n\n _this._bus.postMessage(nodeUnSubscribeMsg);\n }\n\n /**\r\n * Register listeners for a list of childrens. Public channels used to transmit messages.\r\n * @param {string[]} childrens - channels to register\r\n * @return {Promise} Return Promise OK or error\r\n */\n\n }, {\n key: 'addChildrens',\n value: function addChildrens(childrens) {\n var _this3 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n if (childrens.length === 0) {\n resolve();\n return;\n }\n\n var childBaseURL = _this._url + '/children/';\n log.log('[SyncherManager.ReporterObject - addChildrens] - childrens: ', childrens, childBaseURL);\n\n childrens.forEach(function (child) {\n _this._childrens.push(child);\n });\n\n /*\r\n _this._childrens.forEach((child) => {\r\n let childId = childBaseURL + child;\r\n let selfForward = _this._bus.addForward(childId, owner);\r\n _this._childrenListeners.push(selfForward);\r\n });*/\n\n var subscriptions = [];\n childrens.forEach(function (child) {\n return subscriptions.push(childBaseURL + child);\n });\n\n //_this._storageSubscriptions[_this._objSubscriptorURL] = {url: _this._url, owner: _this._owner, childrens: _this._childrens};\n\n //FLOW-OUT: message sent to the msg-node SubscriptionManager component\n var nodeSubscribeMsg = {\n type: 'subscribe', from: _this._parent._url, to: 'domain://msg-node.' + _this._domain + '/sm',\n body: { resources: subscriptions, source: _this._owner }\n };\n\n _this._bus.postMessage(nodeSubscribeMsg, function (reply) {\n log.log('[SyncherManager.ReporterObject ]node-subscribe-response(reporter):', reply);\n if (reply.body.code === 200) {\n\n //add children listeners on local ...\n subscriptions.forEach(function (childURL) {\n var childListener = _this._bus.addListener(childURL, function (msg) {\n //TODO: what todo here? Save childrens?\n log.log('[SyncherManager.ReporterObject received]', msg);\n\n if (msg.type === 'create' && msg.to.includes('children') && _this3._isToSaveData) {\n\n // if the value is not encrypted lets encrypt it\n // todo: should be subject to some policy\n var splitedReporterURL = (0, _utils.splitObjectURL)(msg.to);\n\n var url = splitedReporterURL.url;\n\n //remove false when mutualAuthentication is enabled\n if (!(typeof msg.body.value === 'string')) {\n\n log.log('[SyncherManager.ReporterObject] encrypting received data ', msg.body.value);\n\n cryptoManager.default.encryptDataObject(msg.body.value, url).then(function (encryptedValue) {\n log.log('[SyncherManager.ReporterObject] encrypted data ', encryptedValue);\n\n _this._storeChildObject(msg, (0, _stringify2.default)(encryptedValue));\n }).catch(function (reason) {\n log.warn('[SyncherManager._decryptChildrens] failed : ', reason, ' Storing unencrypted');\n _this._storeChildObject(msg, msg.body.value);\n });\n } else {\n _this._storeChildObject(msg, msg.body.value);\n }\n }\n });\n _this._childrenListeners.push(childListener);\n\n var selfForward = _this._bus.addForward(childURL, _this._owner);\n _this._childrenListeners.push(selfForward);\n });\n\n resolve();\n } else {\n reject('Error on msg-node subscription: ' + reply.body.desc);\n }\n });\n });\n }\n\n // store childObject\n\n }, {\n key: '_storeChildObject',\n value: function _storeChildObject(msg, data) {\n var _this = this;\n\n var splitedReporterURL = (0, _utils.splitObjectURL)(msg.to);\n\n var url = splitedReporterURL.url;\n\n var resource = splitedReporterURL.resource;\n var value = {\n identity: msg.body.identity,\n value: data\n };\n\n var objectURLResource = msg.body.resource;\n var attribute = resource;\n\n if (objectURLResource) attribute += '.' + objectURLResource;\n\n // this identity data is not needed to be stored\n delete value.identity.assertion;\n delete value.identity.expires;\n\n console.log('[SyncherManager.ReporterObject._storeChildObject] : ', url, attribute, value);\n\n _this._parent._dataObjectsStorage.saveChildrens(true, url, attribute, value);\n }\n }, {\n key: 'delete',\n value: function _delete() {\n var _this = this;\n var domain = (0, _utils.divideURL)(_this._owner).domain;\n\n //FLOW-OUT: message sent directly to all subscribers of the reporter\n _this._bus.postMessage({\n type: 'delete', from: _this._objSubscriptorURL, to: _this._url + '/changes'\n });\n\n //FLOW-OUT: message sent to the msg-node ObjectAllocationManager component\n _this._bus.postMessage({\n type: 'delete', from: _this._parent._url, to: 'domain://msg-node.' + domain + '/object-address-allocation',\n body: { resource: _this._url, childrenResources: _this._childrens }\n });\n\n _this._releaseListeners();\n delete _this._parent._reporters[_this._url];\n }\n }, {\n key: '_onRemoteResponse',\n value: function _onRemoteResponse(msg) {\n var _this = this;\n\n _this._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: _this._url,\n body: { code: msg.body.code, identity: msg.body.identity, source: msg.from }\n });\n }\n\n //FLOW-IN: message received from Syncher -> subscribe\n\n }, {\n key: '_onRemoteSubscribe',\n value: function _onRemoteSubscribe(msg) {\n var _this = this;\n var hypertyURL = msg.body.subscriber;\n\n //validate if subscription already exists?\n if (_this._subscriptions[hypertyURL]) {\n // let errorMsg = {\n // id: msg.id, type: 'response', from: msg.to, to: hypertyURL,\n // body: { code: 500, desc: 'Subscription for (' + _this._url + ' : ' + hypertyURL + ') already exists!' }\n // };\n //\n // _this._bus.postMessage(errorMsg);\n // return;\n\n // new version because of reusage\n _this._subscriptions[hypertyURL]._releaseListeners();\n }\n\n //ask to subscribe to Syncher? (depends on the operation mode)\n //TODO: get mode from object!\n var mode = 'sub/pub';\n\n if (mode === 'sub/pub') {\n //FLOW-OUT: message sent to local hyperty address Syncher -> _onForward\n var forwardMsg = {\n type: 'forward', from: _this._url, to: _this._owner,\n body: { type: msg.type, from: hypertyURL, to: _this._url, identity: msg.body.identity }\n };\n\n //TODO: For Further Study\n if (msg.body.hasOwnProperty('mutual')) forwardMsg.body.mutual = msg.body.mutual;\n\n _this._bus.postMessage(forwardMsg, function (reply) {\n log.log('[SyncherManager.ReporterObject ]forward-reply: ', reply);\n if (reply.body.code === 200) {\n if (!_this._subscriptions[hypertyURL]) {\n log.log('[SyncherManager.ReporterObject] - _onRemoteSubscribe:', _this._childrens);\n _this._subscriptions[hypertyURL] = new _Subscription2.default(_this._bus, _this._owner, _this._url, _this._childrens, true);\n }\n }\n\n //TODO: atualizar mutual no storage e tb na sessionKeys\n\n // Store for each reporter hyperty the dataObject\n var userURL = void 0;\n if (msg.body.identity && msg.body.identity.userProfile.userURL) {\n userURL = msg.body.identity.userProfile.userURL;\n _this._parent._dataObjectsStorage.update(true, _this._url, 'subscriberUsers', userURL);\n }\n\n if (msg.body.hasOwnProperty('mutual')) {\n // _this._parent._identityModule.updateIsToEncryptForDataObjectSessionKey(_this._url, msg.body.mutual).then(()=>{\n _this._parent._dataObjectsStorage.update(true, _this._url, 'mutual', msg.body.mutual);\n // });\n }\n\n _this._parent._dataObjectsStorage.update(true, _this._url, 'subscriptions', hypertyURL);\n\n reply.body.owner = _this._owner;\n\n //FLOW-OUT: subscription response sent (forward from internal Hyperty)\n _this._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: msg.from,\n body: reply.body\n });\n });\n }\n }\n\n //FLOW-IN: message received from remote ObserverObject -> removeSubscription\n\n }, {\n key: '_onRemoteUnSubscribe',\n value: function _onRemoteUnSubscribe(msg) {\n var _this = this;\n var unsubscriber = msg.body.source;\n\n var subscription = _this._subscriptions[unsubscriber];\n if (subscription) {\n subscription._releaseListeners();\n delete _this._subscriptions[unsubscriber];\n\n var forwardMsg = {\n type: 'forward', from: _this._url, to: _this._owner,\n body: { type: msg.type, from: unsubscriber, to: _this._url, identity: msg.body.identity }\n };\n\n _this._bus.postMessage(forwardMsg);\n }\n }\n }, {\n key: 'isToSaveData',\n set: function set(value) {\n this._isToSaveData = value;\n }\n }]);\n return ReporterObject;\n}();\n\nexports.default = ReporterObject;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zeW5jaGVyL1JlcG9ydGVyT2JqZWN0LmpzP2M3Y2IiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9nIFN5c3RlbVxyXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xyXG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignUmVwb3J0ZXJPYmplY3QnKTtcclxuXHJcbmltcG9ydCB7IGRpdmlkZVVSTCwgc3BsaXRPYmplY3RVUkwgfSBmcm9tICcuLi91dGlscy91dGlscyc7XHJcbmltcG9ydCBTdWJzY3JpcHRpb24gZnJvbSAnLi9TdWJzY3JpcHRpb24nO1xyXG5pbXBvcnQgKiBhcyBjcnlwdG9NYW5hZ2VyIGZyb20gJy4uL2NyeXB0b01hbmFnZXIvQ3J5cHRvTWFuYWdlcic7XHJcblxyXG5jbGFzcyBSZXBvcnRlck9iamVjdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHBhcmVudCwgb3duZXIsIHVybCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBfdGhpcy5fcGFyZW50ID0gcGFyZW50O1xyXG4gICAgX3RoaXMuX293bmVyID0gb3duZXI7XHJcbiAgICBfdGhpcy5fdXJsID0gdXJsO1xyXG5cclxuICAgIF90aGlzLl9idXMgPSBwYXJlbnQuX2J1cztcclxuXHJcbiAgICBfdGhpcy5fZG9tYWluID0gZGl2aWRlVVJMKHVybCkuZG9tYWluO1xyXG4gICAgX3RoaXMuX29ialN1YnNjcmlwdG9yVVJMID0gX3RoaXMuX3VybCArICcvc3Vic2NyaXB0aW9uJztcclxuXHJcbiAgICBfdGhpcy5fc3Vic2NyaXB0aW9ucyA9IHt9O1xyXG4gICAgX3RoaXMuX2NoaWxkcmVucyA9IFtdO1xyXG4gICAgX3RoaXMuX2NoaWxkcmVuTGlzdGVuZXJzID0gW107XHJcblxyXG4gICAgX3RoaXMuX2ZvcndhcmRzID0ge307XHJcblxyXG4gICAgX3RoaXMuX2lzVG9TYXZlRGF0YSA9IGZhbHNlO1xyXG5cclxuICAgIF90aGlzLl9hbGxvY2F0ZUxpc3RlbmVycygpO1xyXG4gIH1cclxuXHJcbiAgX2FsbG9jYXRlTGlzdGVuZXJzKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICAvL2FkZCBzdWJzY3JpcHRpb24gbGlzdGVuZXIuLi5cclxuICAgIF90aGlzLl9zdWJzY3JpcHRpb25MaXN0ZW5lciA9IF90aGlzLl9idXMuYWRkTGlzdGVuZXIoX3RoaXMuX29ialN1YnNjcmlwdG9yVVJMLCAobXNnKSA9PiB7XHJcbiAgICAgIGxvZy5pbmZvKCdbU3luY2hlck1hbmFnZXIuUmVwb3J0ZXJPYmplY3QgcmVjZWl2ZWQgXScsIG1zZyk7XHJcbiAgICAgIHN3aXRjaCAobXNnLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdzdWJzY3JpYmUnOiBfdGhpcy5fb25SZW1vdGVTdWJzY3JpYmUobXNnKTsgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAndW5zdWJzY3JpYmUnOiBfdGhpcy5fb25SZW1vdGVVblN1YnNjcmliZShtc2cpOyBicmVhaztcclxuICAgICAgICBjYXNlICdyZXNwb25zZSc6IF90aGlzLl9vblJlbW90ZVJlc3BvbnNlKG1zZyk7IGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgY2hhbmdlVVJMID0gX3RoaXMuX3VybCArICcvY2hhbmdlcyc7XHJcbiAgICBfdGhpcy5fY2hhbmdlTGlzdGVuZXIgPSBfdGhpcy5fYnVzLmFkZExpc3RlbmVyKGNoYW5nZVVSTCwgKG1zZykgPT4ge1xyXG5cclxuICAgICAgbG9nLmluZm8oJ1tTeW5jaGVyTWFuYWdlci5SZXBvcnRlck9iamVjdCBdIFN5bmNoZXJNYW5hZ2VyLScgKyBjaGFuZ2VVUkwgKyAnLVJDVjogJywgbXNnKTtcclxuXHJcbiAgICAgIC8vVE9ETzogd2hhdCB0b2RvIGhlcmU/IFNhdmUgY2hhbmdlcz9cclxuICAgICAgaWYgKHRoaXMuX2lzVG9TYXZlRGF0YSAmJiBtc2cuYm9keS5hdHRyaWJ1dGUpIHtcclxuICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuUmVwb3J0ZXJPYmplY3QgXSBTeW5jaGVyTWFuYWdlciAtIHNhdmUgZGF0YTogJywgbXNnKTtcclxuICAgICAgICBfdGhpcy5fcGFyZW50Ll9kYXRhT2JqZWN0c1N0b3JhZ2UudXBkYXRlKHRydWUsIF90aGlzLl91cmwsICd2ZXJzaW9uJywgbXNnLmJvZHkudmVyc2lvbik7XHJcbiAgICAgICAgX3RoaXMuX3BhcmVudC5fZGF0YU9iamVjdHNTdG9yYWdlLnVwZGF0ZSh0cnVlLCBfdGhpcy5fdXJsLCAnbGFzdE1vZGlmaWVkJywgbXNnLmJvZHkubGFzdE1vZGlmaWVkKTtcclxuICAgICAgICBfdGhpcy5fcGFyZW50Ll9kYXRhT2JqZWN0c1N0b3JhZ2Uuc2F2ZURhdGEodHJ1ZSwgX3RoaXMuX3VybCwgbXNnLmJvZHkuYXR0cmlidXRlLCBtc2cuYm9keS52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0IGlzVG9TYXZlRGF0YSh2YWx1ZSkge1xyXG4gICAgdGhpcy5faXNUb1NhdmVEYXRhID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBfcmVsZWFzZUxpc3RlbmVycygpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgX3RoaXMuX3N1YnNjcmlwdGlvbkxpc3RlbmVyLnJlbW92ZSgpO1xyXG5cclxuICAgIF90aGlzLl9jaGFuZ2VMaXN0ZW5lci5yZW1vdmUoKTtcclxuXHJcbiAgICBfdGhpcy5fY2hpbGRyZW5MaXN0ZW5lcnMuZm9yRWFjaCgoY2wpID0+IHtcclxuICAgICAgY2wucmVtb3ZlKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyhfdGhpcy5fZm9yd2FyZHMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICBfdGhpcy5mb3J3YXJkVW5TdWJzY3JpYmUoa2V5KTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vcmVtb3ZlIGFsbCBzdWJzY3JpcHRpb25zXHJcbiAgICBPYmplY3Qua2V5cyhfdGhpcy5fc3Vic2NyaXB0aW9ucykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIF90aGlzLl9zdWJzY3JpcHRpb25zW2tleV0uX3JlbGVhc2VMaXN0ZW5lcnMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzdW1lU3Vic2NyaXB0aW9ucyhzdWJzY3JpcHRpb25zKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGlmICghc3Vic2NyaXB0aW9ucylcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIE9iamVjdC5rZXlzKHN1YnNjcmlwdGlvbnMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICBsZXQgaHlwZXJ0eVVSTCA9IHN1YnNjcmlwdGlvbnNba2V5XTtcclxuXHJcbiAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5SZXBvcnRlck9iamVjdF0gLSByZXN1bWUgc3Vic2NyaXB0aW9ucycsIF90aGlzLCBoeXBlcnR5VVJMLCBfdGhpcy5fY2hpbGRyZW5zKTtcclxuXHJcbiAgICAgIGlmICghX3RoaXMuX3N1YnNjcmlwdGlvbnNbaHlwZXJ0eVVSTF0pIHtcclxuICAgICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1toeXBlcnR5VVJMXSA9IG5ldyBTdWJzY3JpcHRpb24oX3RoaXMuX2J1cywgX3RoaXMuX293bmVyLCBfdGhpcy5fdXJsLCBfdGhpcy5fY2hpbGRyZW5zLCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXIgYSBsaXN0ZW5lciBpbiB0aGUgbXNnLW5vZGUgYW5kIGluIHRoZSBsb2NhbCBNZXNzYWdlQnVzLCBzbyB0aGF0IG1lc3NhZ2VzIG9uIHRoaXMgYWRkcmVzcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSByZXBvcnRlciBvYmplY3RcclxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IGFkZHJlc3MgLSBVUkwgdG8gcmVnaXN0ZXIgdGhlIGxpc3RlbmVyc1xyXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IFJldHVybiBQcm9taXNlIE9LIG9yIGVycm9yXHJcbiAgICovXHJcbiAgZm9yd2FyZFN1YnNjcmliZShhZGRyZXNzZXMpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgLy9GTE9XLU9VVDogbWVzc2FnZSBzZW50IHRvIHRoZSBtc2ctbm9kZSBTdWJzY3JpcHRpb25NYW5hZ2VyIGNvbXBvbmVudFxyXG4gICAgbGV0IG5vZGVTdWJzY3JpYmVNc2cgPSB7XHJcbiAgICAgIHR5cGU6ICdzdWJzY3JpYmUnLCBmcm9tOiBfdGhpcy5fcGFyZW50Ll91cmwsIHRvOiAnZG9tYWluOi8vbXNnLW5vZGUuJyArIF90aGlzLl9kb21haW4gKyAnL3NtJyxcclxuICAgICAgYm9keTogeyByZXNvdXJjZXM6IGFkZHJlc3Nlcywgc291cmNlOiBfdGhpcy5fb3duZXIgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKG5vZGVTdWJzY3JpYmVNc2csIChyZXBseSkgPT4ge1xyXG4gICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5SZXBvcnRlck9iamVjdCBdZm9yd2FyZC1zdWJzY3JpYmUtcmVzcG9uc2UocmVwb3J0ZXIpOiAnLCByZXBseSk7XHJcbiAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICBsZXQgbmV3Rm9yd2FyZCA9IF90aGlzLl9idXMuYWRkRm9yd2FyZChfdGhpcy5fdXJsLCBfdGhpcy5fb3duZXIpO1xyXG4gICAgICAgICAgX3RoaXMuX2ZvcndhcmRzW2FkZHJlc3Nlc1swXV0gPSBuZXdGb3J3YXJkO1xyXG4gICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWplY3QoJ0Vycm9yIG9uIG1zZy1ub2RlIHN1YnNjcmlwdGlvbjogJyArIHJlcGx5LmJvZHkuZGVzYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVW5SZWdpc3RlciBhIGxpc3RlbmVyIGluIHRoZSBtc2ctbm9kZSBhbmQgaW4gdGhlIGxvY2FsIE1lc3NhZ2VCdXMsIHNvIHRoYXQgbWVzc2FnZXMgb24gdGhpcyBhZGRyZXNzIGFyZSByZW1vdmVkIGZyb20gZm9yd2FyZFxyXG4gICAqIEBwYXJhbSAge3N0cmluZ30gYWRkcmVzcyAtIFVSTCB0byB1bi1yZWdpc3RlciB0aGUgbGlzdGVuZXJzXHJcbiAgICovXHJcbiAgZm9yd2FyZFVuU3Vic2NyaWJlKGFkZHJlc3MpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgX3RoaXMuX2ZvcndhcmRzW2FkZHJlc3NdLnJlbW92ZSgpO1xyXG4gICAgZGVsZXRlIF90aGlzLl9mb3J3YXJkc1thZGRyZXNzXTtcclxuXHJcbiAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHNlbnQgdG8gdGhlIG1zZy1ub2RlIFN1YnNjcmlwdGlvbk1hbmFnZXIgY29tcG9uZW50XHJcbiAgICBsZXQgbm9kZVVuU3Vic2NyaWJlTXNnID0ge1xyXG4gICAgICB0eXBlOiAndW5zdWJzY3JpYmUnLCBmcm9tOiBfdGhpcy5fcGFyZW50Ll91cmwsIHRvOiAnZG9tYWluOi8vbXNnLW5vZGUuJyArIF90aGlzLl9kb21haW4gKyAnL3NtJyxcclxuICAgICAgYm9keTogeyByZXNvdXJjZXM6IFthZGRyZXNzXSwgc291cmNlOiBfdGhpcy5fb3duZXIgfVxyXG4gICAgfTtcclxuXHJcbiAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKG5vZGVVblN1YnNjcmliZU1zZyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RlciBsaXN0ZW5lcnMgZm9yIGEgbGlzdCBvZiBjaGlsZHJlbnMuIFB1YmxpYyBjaGFubmVscyB1c2VkIHRvIHRyYW5zbWl0IG1lc3NhZ2VzLlxyXG4gICAqIEBwYXJhbSAge3N0cmluZ1tdfSBjaGlsZHJlbnMgLSBjaGFubmVscyB0byByZWdpc3RlclxyXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IFJldHVybiBQcm9taXNlIE9LIG9yIGVycm9yXHJcbiAgICovXHJcbiAgYWRkQ2hpbGRyZW5zKGNoaWxkcmVucykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAoY2hpbGRyZW5zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBjaGlsZEJhc2VVUkwgPSBfdGhpcy5fdXJsICsgJy9jaGlsZHJlbi8nO1xyXG4gICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuUmVwb3J0ZXJPYmplY3QgLSBhZGRDaGlsZHJlbnNdIC0gY2hpbGRyZW5zOiAnLCBjaGlsZHJlbnMsIGNoaWxkQmFzZVVSTCk7XHJcblxyXG4gICAgICBjaGlsZHJlbnMuZm9yRWFjaCgoY2hpbGQpID0+IHtcclxuICAgICAgICBfdGhpcy5fY2hpbGRyZW5zLnB1c2goY2hpbGQpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8qXHJcbiAgICAgIF90aGlzLl9jaGlsZHJlbnMuZm9yRWFjaCgoY2hpbGQpID0+IHtcclxuICAgICAgICBsZXQgY2hpbGRJZCA9IGNoaWxkQmFzZVVSTCArIGNoaWxkO1xyXG5cclxuICAgICAgICBsZXQgc2VsZkZvcndhcmQgPSBfdGhpcy5fYnVzLmFkZEZvcndhcmQoY2hpbGRJZCwgb3duZXIpO1xyXG4gICAgICAgIF90aGlzLl9jaGlsZHJlbkxpc3RlbmVycy5wdXNoKHNlbGZGb3J3YXJkKTtcclxuICAgICAgfSk7Ki9cclxuXHJcbiAgICAgIGxldCBzdWJzY3JpcHRpb25zID0gW107XHJcbiAgICAgIGNoaWxkcmVucy5mb3JFYWNoKChjaGlsZCkgPT4gc3Vic2NyaXB0aW9ucy5wdXNoKGNoaWxkQmFzZVVSTCArIGNoaWxkKSk7XHJcblxyXG4gICAgICAvL190aGlzLl9zdG9yYWdlU3Vic2NyaXB0aW9uc1tfdGhpcy5fb2JqU3Vic2NyaXB0b3JVUkxdID0ge3VybDogX3RoaXMuX3VybCwgb3duZXI6IF90aGlzLl9vd25lciwgY2hpbGRyZW5zOiBfdGhpcy5fY2hpbGRyZW5zfTtcclxuXHJcbiAgICAgIC8vRkxPVy1PVVQ6IG1lc3NhZ2Ugc2VudCB0byB0aGUgbXNnLW5vZGUgU3Vic2NyaXB0aW9uTWFuYWdlciBjb21wb25lbnRcclxuICAgICAgbGV0IG5vZGVTdWJzY3JpYmVNc2cgPSB7XHJcbiAgICAgICAgdHlwZTogJ3N1YnNjcmliZScsIGZyb206IF90aGlzLl9wYXJlbnQuX3VybCwgdG86ICdkb21haW46Ly9tc2ctbm9kZS4nICsgX3RoaXMuX2RvbWFpbiArICcvc20nLFxyXG4gICAgICAgIGJvZHk6IHsgcmVzb3VyY2VzOiBzdWJzY3JpcHRpb25zLCBzb3VyY2U6IF90aGlzLl9vd25lciB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKG5vZGVTdWJzY3JpYmVNc2csIChyZXBseSkgPT4ge1xyXG4gICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5SZXBvcnRlck9iamVjdCBdbm9kZS1zdWJzY3JpYmUtcmVzcG9uc2UocmVwb3J0ZXIpOicsIHJlcGx5KTtcclxuICAgICAgICBpZiAocmVwbHkuYm9keS5jb2RlID09PSAyMDApIHtcclxuXHJcbiAgICAgICAgICAvL2FkZCBjaGlsZHJlbiBsaXN0ZW5lcnMgb24gbG9jYWwgLi4uXHJcbiAgICAgICAgICBzdWJzY3JpcHRpb25zLmZvckVhY2goKGNoaWxkVVJMKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjaGlsZExpc3RlbmVyID0gX3RoaXMuX2J1cy5hZGRMaXN0ZW5lcihjaGlsZFVSTCwgKG1zZykgPT4ge1xyXG4gICAgICAgICAgICAgIC8vVE9ETzogd2hhdCB0b2RvIGhlcmU/IFNhdmUgY2hpbGRyZW5zP1xyXG4gICAgICAgICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5SZXBvcnRlck9iamVjdCByZWNlaXZlZF0nLCBtc2cpO1xyXG5cclxuICAgICAgICAgICAgICBpZiAobXNnLnR5cGUgPT09ICdjcmVhdGUnICYmIG1zZy50by5pbmNsdWRlcygnY2hpbGRyZW4nKSAmJiB0aGlzLl9pc1RvU2F2ZURhdGEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgdmFsdWUgaXMgbm90IGVuY3J5cHRlZCBsZXRzIGVuY3J5cHQgaXRcclxuICAgICAgICAgICAgICAgIC8vIHRvZG86IHNob3VsZCBiZSBzdWJqZWN0IHRvIHNvbWUgcG9saWN5XHJcbiAgICAgICAgICAgICAgICBsZXQgc3BsaXRlZFJlcG9ydGVyVVJMID0gc3BsaXRPYmplY3RVUkwobXNnLnRvKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgdXJsID0gc3BsaXRlZFJlcG9ydGVyVVJMLnVybDtcclxuXHJcbiAgICAgICAgICAgICAgICAvL3JlbW92ZSBmYWxzZSB3aGVuIG11dHVhbEF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWRcclxuICAgICAgICAgICAgICAgIGlmICghKHR5cGVvZiBtc2cuYm9keS52YWx1ZSA9PT0gJ3N0cmluZycpKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuUmVwb3J0ZXJPYmplY3RdIGVuY3J5cHRpbmcgcmVjZWl2ZWQgZGF0YSAnLCBtc2cuYm9keS52YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICBjcnlwdG9NYW5hZ2VyLmRlZmF1bHQuZW5jcnlwdERhdGFPYmplY3QobXNnLmJvZHkudmFsdWUsIHVybCkudGhlbigoZW5jcnlwdGVkVmFsdWUpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLlJlcG9ydGVyT2JqZWN0XSBlbmNyeXB0ZWQgZGF0YSAnLCAgZW5jcnlwdGVkVmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5fc3RvcmVDaGlsZE9iamVjdChtc2csIEpTT04uc3RyaW5naWZ5KGVuY3J5cHRlZFZhbHVlKSk7XHJcbiAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsb2cud2FybignW1N5bmNoZXJNYW5hZ2VyLl9kZWNyeXB0Q2hpbGRyZW5zXSBmYWlsZWQgOiAnLCByZWFzb24sICcgU3RvcmluZyB1bmVuY3J5cHRlZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9zdG9yZUNoaWxkT2JqZWN0KG1zZywgbXNnLmJvZHkudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLl9zdG9yZUNoaWxkT2JqZWN0KG1zZywgbXNnLmJvZHkudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBfdGhpcy5fY2hpbGRyZW5MaXN0ZW5lcnMucHVzaChjaGlsZExpc3RlbmVyKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBzZWxmRm9yd2FyZCA9IF90aGlzLl9idXMuYWRkRm9yd2FyZChjaGlsZFVSTCwgX3RoaXMuX293bmVyKTtcclxuICAgICAgICAgICAgX3RoaXMuX2NoaWxkcmVuTGlzdGVuZXJzLnB1c2goc2VsZkZvcndhcmQpO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWplY3QoJ0Vycm9yIG9uIG1zZy1ub2RlIHN1YnNjcmlwdGlvbjogJyArIHJlcGx5LmJvZHkuZGVzYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gc3RvcmUgY2hpbGRPYmplY3RcclxuXHJcbiAgX3N0b3JlQ2hpbGRPYmplY3QobXNnLCBkYXRhKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBzcGxpdGVkUmVwb3J0ZXJVUkwgPSBzcGxpdE9iamVjdFVSTChtc2cudG8pO1xyXG5cclxuICAgIGxldCB1cmwgPSBzcGxpdGVkUmVwb3J0ZXJVUkwudXJsO1xyXG5cclxuICAgIGxldCByZXNvdXJjZSA9IHNwbGl0ZWRSZXBvcnRlclVSTC5yZXNvdXJjZTtcclxuICAgIGxldCB2YWx1ZSA9IHtcclxuICAgICAgaWRlbnRpdHk6IG1zZy5ib2R5LmlkZW50aXR5LFxyXG4gICAgICB2YWx1ZTogZGF0YVxyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgb2JqZWN0VVJMUmVzb3VyY2UgPSBtc2cuYm9keS5yZXNvdXJjZTtcclxuICAgIGxldCBhdHRyaWJ1dGUgPSByZXNvdXJjZTtcclxuXHJcbiAgICBpZiAob2JqZWN0VVJMUmVzb3VyY2UpIGF0dHJpYnV0ZSArPSAnLicgKyBvYmplY3RVUkxSZXNvdXJjZTtcclxuXHJcbiAgICAvLyB0aGlzIGlkZW50aXR5IGRhdGEgaXMgbm90IG5lZWRlZCB0byBiZSBzdG9yZWRcclxuICAgIGRlbGV0ZSB2YWx1ZS5pZGVudGl0eS5hc3NlcnRpb247XHJcbiAgICBkZWxldGUgdmFsdWUuaWRlbnRpdHkuZXhwaXJlcztcclxuXHJcblxyXG4gICAgY29uc29sZS5sb2coJ1tTeW5jaGVyTWFuYWdlci5SZXBvcnRlck9iamVjdC5fc3RvcmVDaGlsZE9iamVjdF0gOiAnLCB1cmwsIGF0dHJpYnV0ZSwgdmFsdWUpO1xyXG5cclxuICAgIF90aGlzLl9wYXJlbnQuX2RhdGFPYmplY3RzU3RvcmFnZS5zYXZlQ2hpbGRyZW5zKHRydWUsIHVybCwgYXR0cmlidXRlLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGUoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IGRvbWFpbiA9IGRpdmlkZVVSTChfdGhpcy5fb3duZXIpLmRvbWFpbjtcclxuXHJcbiAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHNlbnQgZGlyZWN0bHkgdG8gYWxsIHN1YnNjcmliZXJzIG9mIHRoZSByZXBvcnRlclxyXG4gICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZSh7XHJcbiAgICAgIHR5cGU6ICdkZWxldGUnLCBmcm9tOiBfdGhpcy5fb2JqU3Vic2NyaXB0b3JVUkwsIHRvOiBfdGhpcy5fdXJsICsgJy9jaGFuZ2VzJ1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy9GTE9XLU9VVDogbWVzc2FnZSBzZW50IHRvIHRoZSBtc2ctbm9kZSBPYmplY3RBbGxvY2F0aW9uTWFuYWdlciBjb21wb25lbnRcclxuICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICB0eXBlOiAnZGVsZXRlJywgZnJvbTogX3RoaXMuX3BhcmVudC5fdXJsLCB0bzogJ2RvbWFpbjovL21zZy1ub2RlLicgKyBkb21haW4gKyAnL29iamVjdC1hZGRyZXNzLWFsbG9jYXRpb24nLFxyXG4gICAgICBib2R5OiB7IHJlc291cmNlOiBfdGhpcy5fdXJsLCBjaGlsZHJlblJlc291cmNlczogX3RoaXMuX2NoaWxkcmVucyB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBfdGhpcy5fcmVsZWFzZUxpc3RlbmVycygpO1xyXG4gICAgZGVsZXRlIF90aGlzLl9wYXJlbnQuX3JlcG9ydGVyc1tfdGhpcy5fdXJsXTtcclxuICB9XHJcblxyXG4gIF9vblJlbW90ZVJlc3BvbnNlKG1zZykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHtcclxuICAgICAgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgZnJvbTogbXNnLnRvLCB0bzogX3RoaXMuX3VybCxcclxuICAgICAgYm9keTogeyBjb2RlOiBtc2cuYm9keS5jb2RlLCBpZGVudGl0eTogbXNnLmJvZHkuaWRlbnRpdHksIHNvdXJjZTogbXNnLmZyb20gfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL0ZMT1ctSU46IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBTeW5jaGVyIC0+IHN1YnNjcmliZVxyXG4gIF9vblJlbW90ZVN1YnNjcmliZShtc2cpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgaHlwZXJ0eVVSTCA9IG1zZy5ib2R5LnN1YnNjcmliZXI7XHJcblxyXG4gICAgLy92YWxpZGF0ZSBpZiBzdWJzY3JpcHRpb24gYWxyZWFkeSBleGlzdHM/XHJcbiAgICBpZiAoX3RoaXMuX3N1YnNjcmlwdGlvbnNbaHlwZXJ0eVVSTF0pIHtcclxuICAgICAgLy8gbGV0IGVycm9yTXNnID0ge1xyXG4gICAgICAvLyAgIGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIGZyb206IG1zZy50bywgdG86IGh5cGVydHlVUkwsXHJcbiAgICAgIC8vICAgYm9keTogeyBjb2RlOiA1MDAsIGRlc2M6ICdTdWJzY3JpcHRpb24gZm9yICgnICsgX3RoaXMuX3VybCArICcgOiAnICsgIGh5cGVydHlVUkwgKyAnKSBhbHJlYWR5IGV4aXN0cyEnIH1cclxuICAgICAgLy8gfTtcclxuICAgICAgLy9cclxuICAgICAgLy8gX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShlcnJvck1zZyk7XHJcbiAgICAgIC8vIHJldHVybjtcclxuXHJcbiAgICAgIC8vIG5ldyB2ZXJzaW9uIGJlY2F1c2Ugb2YgcmV1c2FnZVxyXG4gICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1toeXBlcnR5VVJMXS5fcmVsZWFzZUxpc3RlbmVycygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vYXNrIHRvIHN1YnNjcmliZSB0byBTeW5jaGVyPyAoZGVwZW5kcyBvbiB0aGUgb3BlcmF0aW9uIG1vZGUpXHJcbiAgICAvL1RPRE86IGdldCBtb2RlIGZyb20gb2JqZWN0IVxyXG4gICAgbGV0IG1vZGUgPSAnc3ViL3B1Yic7XHJcblxyXG4gICAgaWYgKG1vZGUgPT09ICdzdWIvcHViJykge1xyXG4gICAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHNlbnQgdG8gbG9jYWwgaHlwZXJ0eSBhZGRyZXNzIFN5bmNoZXIgLT4gX29uRm9yd2FyZFxyXG4gICAgICBsZXQgZm9yd2FyZE1zZyA9IHtcclxuICAgICAgICB0eXBlOiAnZm9yd2FyZCcsIGZyb206IF90aGlzLl91cmwsIHRvOiBfdGhpcy5fb3duZXIsXHJcbiAgICAgICAgYm9keTogeyB0eXBlOiBtc2cudHlwZSwgZnJvbTogaHlwZXJ0eVVSTCwgdG86IF90aGlzLl91cmwsIGlkZW50aXR5OiBtc2cuYm9keS5pZGVudGl0eSB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICAvL1RPRE86IEZvciBGdXJ0aGVyIFN0dWR5XHJcbiAgICAgIGlmIChtc2cuYm9keS5oYXNPd25Qcm9wZXJ0eSgnbXV0dWFsJykpIGZvcndhcmRNc2cuYm9keS5tdXR1YWwgPSBtc2cuYm9keS5tdXR1YWw7XHJcblxyXG4gICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKGZvcndhcmRNc2csIChyZXBseSkgPT4ge1xyXG4gICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5SZXBvcnRlck9iamVjdCBdZm9yd2FyZC1yZXBseTogJywgcmVwbHkpO1xyXG4gICAgICAgIGlmIChyZXBseS5ib2R5LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgaWYgKCFfdGhpcy5fc3Vic2NyaXB0aW9uc1toeXBlcnR5VVJMXSkge1xyXG4gICAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuUmVwb3J0ZXJPYmplY3RdIC0gX29uUmVtb3RlU3Vic2NyaWJlOicsIF90aGlzLl9jaGlsZHJlbnMpO1xyXG4gICAgICAgICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1toeXBlcnR5VVJMXSA9IG5ldyBTdWJzY3JpcHRpb24oX3RoaXMuX2J1cywgX3RoaXMuX293bmVyLCBfdGhpcy5fdXJsLCBfdGhpcy5fY2hpbGRyZW5zLCB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vVE9ETzogYXR1YWxpemFyIG11dHVhbCBubyBzdG9yYWdlIGUgdGIgbmEgc2Vzc2lvbktleXNcclxuXHJcbiAgICAgICAgLy8gU3RvcmUgZm9yIGVhY2ggcmVwb3J0ZXIgaHlwZXJ0eSB0aGUgZGF0YU9iamVjdFxyXG4gICAgICAgIGxldCB1c2VyVVJMO1xyXG4gICAgICAgIGlmIChtc2cuYm9keS5pZGVudGl0eSAmJiBtc2cuYm9keS5pZGVudGl0eS51c2VyUHJvZmlsZS51c2VyVVJMKSB7XHJcbiAgICAgICAgICB1c2VyVVJMID0gbXNnLmJvZHkuaWRlbnRpdHkudXNlclByb2ZpbGUudXNlclVSTDtcclxuICAgICAgICAgIF90aGlzLl9wYXJlbnQuX2RhdGFPYmplY3RzU3RvcmFnZS51cGRhdGUodHJ1ZSwgX3RoaXMuX3VybCwgJ3N1YnNjcmliZXJVc2VycycsIHVzZXJVUkwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG1zZy5ib2R5Lmhhc093blByb3BlcnR5KCdtdXR1YWwnKSkge1xyXG4vLyAgICAgICAgICBfdGhpcy5fcGFyZW50Ll9pZGVudGl0eU1vZHVsZS51cGRhdGVJc1RvRW5jcnlwdEZvckRhdGFPYmplY3RTZXNzaW9uS2V5KF90aGlzLl91cmwsIG1zZy5ib2R5Lm11dHVhbCkudGhlbigoKT0+e1xyXG4gICAgICAgICAgICBfdGhpcy5fcGFyZW50Ll9kYXRhT2JqZWN0c1N0b3JhZ2UudXBkYXRlKHRydWUsIF90aGlzLl91cmwsICdtdXR1YWwnLCBtc2cuYm9keS5tdXR1YWwpO1xyXG4vLyAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIF90aGlzLl9wYXJlbnQuX2RhdGFPYmplY3RzU3RvcmFnZS51cGRhdGUodHJ1ZSwgX3RoaXMuX3VybCwgJ3N1YnNjcmlwdGlvbnMnLCBoeXBlcnR5VVJMKTtcclxuXHJcbiAgICAgICAgcmVwbHkuYm9keS5vd25lciA9IF90aGlzLl9vd25lcjtcclxuXHJcbiAgICAgICAgLy9GTE9XLU9VVDogc3Vic2NyaXB0aW9uIHJlc3BvbnNlIHNlbnQgKGZvcndhcmQgZnJvbSBpbnRlcm5hbCBIeXBlcnR5KVxyXG4gICAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgZnJvbTogbXNnLnRvLCB0bzogbXNnLmZyb20sXHJcbiAgICAgICAgICBib2R5OiByZXBseS5ib2R5XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvL0ZMT1ctSU46IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSByZW1vdGUgT2JzZXJ2ZXJPYmplY3QgLT4gcmVtb3ZlU3Vic2NyaXB0aW9uXHJcbiAgX29uUmVtb3RlVW5TdWJzY3JpYmUobXNnKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IHVuc3Vic2NyaWJlciA9IG1zZy5ib2R5LnNvdXJjZTtcclxuXHJcbiAgICBsZXQgc3Vic2NyaXB0aW9uID0gX3RoaXMuX3N1YnNjcmlwdGlvbnNbdW5zdWJzY3JpYmVyXTtcclxuICAgIGlmIChzdWJzY3JpcHRpb24pIHtcclxuICAgICAgc3Vic2NyaXB0aW9uLl9yZWxlYXNlTGlzdGVuZXJzKCk7XHJcbiAgICAgIGRlbGV0ZSBfdGhpcy5fc3Vic2NyaXB0aW9uc1t1bnN1YnNjcmliZXJdO1xyXG5cclxuICAgICAgbGV0IGZvcndhcmRNc2cgPSB7XHJcbiAgICAgICAgdHlwZTogJ2ZvcndhcmQnLCBmcm9tOiBfdGhpcy5fdXJsLCB0bzogX3RoaXMuX293bmVyLFxyXG4gICAgICAgIGJvZHk6IHsgdHlwZTogbXNnLnR5cGUsIGZyb206IHVuc3Vic2NyaWJlciwgdG86IF90aGlzLl91cmwsIGlkZW50aXR5OiBtc2cuYm9keS5pZGVudGl0eSB9XHJcbiAgICAgIH07XHJcblxyXG5cclxuICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShmb3J3YXJkTXNnKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUmVwb3J0ZXJPYmplY3Q7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvc3luY2hlci9SZXBvcnRlck9iamVjdC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBOzs7QUFBQTtBQUNBO0FBREE7QUFDQTs7Ozs7QUFMQTtBQUNBO0FBS0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQVFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUtBO0FBQ0E7QUFFQTs7O0FBMVVBO0FBQ0E7QUFDQTs7Ozs7QUE0VUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///515\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(46);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(14);\n\nvar _Subscription = __webpack_require__(212);\n\nvar _Subscription2 = _interopRequireDefault(_Subscription);\n\nvar _CryptoManager = __webpack_require__(100);\n\nvar cryptoManager = _interopRequireWildcard(_CryptoManager);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('ObserverObject'); // Log System\n\nvar ObserverObject = function () {\n function ObserverObject(parent, url, childrens) {\n var _this2 = this;\n\n (0, _classCallCheck3.default)(this, ObserverObject);\n\n var _this = this;\n\n _this._parent = parent;\n _this._url = url;\n _this._childrens = childrens;\n\n _this._bus = parent._bus;\n\n _this._subscriptions = {};\n _this._storageSubscriptions = {};\n _this._childrenListeners = [];\n\n this._isToSaveData = false;\n\n var changeURL = _this._url + '/changes';\n _this._changeListener = _this._bus.addListener(changeURL, function (msg) {\n\n log.log('[SyncherManager.ObserverObject ] SyncherManager-' + changeURL + '-RCV: ', msg);\n\n //TODO: what todo here? Save changes?\n if (_this2._isToSaveData && msg.body.attribute) {\n log.log('[SyncherManager.ObserverObject ] SyncherManager - save data: ', msg);\n _this._parent._dataObjectsStorage.update(false, _this._url, 'version', msg.body.version);\n _this._parent._dataObjectsStorage.update(false, _this._url, 'lastModified', msg.body.lastModified);\n _this._parent._dataObjectsStorage.saveData(false, _this._url, msg.body.attribute, msg.body.value);\n }\n });\n }\n\n (0, _createClass3.default)(ObserverObject, [{\n key: '_newSubscription',\n value: function _newSubscription(hyperty) {\n var _this = this;\n\n var subscription = _this._subscriptions[hyperty];\n log.log('[Observer Object - new subscription] - ', _this._subscriptions, hyperty, _this._subscriptions.hasOwnProperty(hyperty));\n if (!subscription) {\n _this._subscriptions[hyperty] = new _Subscription2.default(_this._bus, hyperty, _this._url, _this._childrens, false);\n }\n }\n }, {\n key: 'addSubscription',\n value: function addSubscription(hyperty) {\n var _this = this;\n\n _this._newSubscription(hyperty);\n }\n }, {\n key: 'addChildrens',\n value: function addChildrens(childrens) {\n var _this3 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve) {\n if (childrens.length === 0) {\n return resolve();\n }\n\n var childBaseURL = _this._url + '/children/';\n log.log('[SyncherManager.ObserverObject - addChildrens] - childrens: ', childrens, childBaseURL);\n\n childrens.forEach(function (child) {\n\n var childListener = _this._bus.addListener(childBaseURL + child, function (msg) {\n //TODO: what todo here? Save childrens?\n log.log('[SyncherManager.ObserverObject received]', msg);\n\n if (msg.type === 'create' && msg.to.includes('children') && _this3._isToSaveData) {\n var splitedReporterURL = (0, _utils.splitObjectURL)(msg.to);\n\n var url = splitedReporterURL.url;\n\n //remove false when mutualAuthentication is enabled\n if (!(typeof msg.body.value === 'string')) {\n\n log.log('[SyncherManager.ObserverObject] encrypting received data ', msg.body.value);\n\n cryptoManager.default.encryptDataObject(msg.body.value, url).then(function (encryptedValue) {\n log.log('[SyncherManager.ObserverObject] encrypted data ', encryptedValue);\n\n _this._storeChildObject(msg, (0, _stringify2.default)(encryptedValue));\n }).catch(function (reason) {\n log.warn('[SyncherManager.ObserverObject._encryptChild] failed, storing unencrypted ', reason);\n _this._storeChildObject(msg, msg.body.value);\n });\n } else {\n _this._storeChildObject(msg, msg.body.value);\n }\n }\n\n log.log('[SyncherManager.ObserverObject children Listeners]', _this._childrenListeners, childListener);\n if (_this._childrenListeners.indexOf(childListener) === -1) {\n _this._childrenListeners.push(childListener);\n }\n });\n });\n });\n }\n\n // store childObject\n\n }, {\n key: '_storeChildObject',\n value: function _storeChildObject(msg, data) {\n var _this = this;\n\n var splitedReporterURL = (0, _utils.splitObjectURL)(msg.to);\n\n var url = splitedReporterURL.url;\n\n var resource = splitedReporterURL.resource;\n var value = {\n identity: msg.body.identity,\n value: data\n };\n\n // this identity data is not needed to be stored\n delete value.identity.assertion;\n delete value.identity.expires;\n\n var objectURLResource = msg.body.resource;\n var attribute = resource;\n\n if (objectURLResource) attribute += '.' + objectURLResource;\n\n log.log('[SyncherManager.ObserverObject._storeChildObject] : ', url, attribute, value);\n\n _this._parent._dataObjectsStorage.saveChildrens(false, url, attribute, value);\n }\n }, {\n key: 'removeSubscription',\n value: function removeSubscription(msg) {\n var _this = this;\n\n var hyperty = msg.from;\n\n var domain = (0, _utils.divideURL)(hyperty).domain;\n var objURLSubscription = _this._url + '/subscription';\n\n var subscription = _this._subscriptions[hyperty];\n if (subscription) {\n //FLOW-OUT: message sent to remote ReporterObject -> _onRemoteUnSubscribe\n _this._bus.postMessage({\n type: 'unsubscribe', from: _this._parent._url, to: objURLSubscription,\n body: { source: hyperty, identity: msg.body.identity }\n });\n\n //TODO: should I wait for response before unsubscribe on msg-node\n //FLOW-OUT: message sent to msg-node SubscriptionManager component\n _this._bus.postMessage({\n type: 'unsubscribe', from: _this._parent._url, to: 'domain://msg-node.' + domain + '/sm',\n body: { resource: _this._url, childrenResources: _this._childrens }\n });\n\n subscription._releaseListeners();\n delete _this._subscriptions[hyperty];\n }\n }\n }, {\n key: 'isToSaveData',\n set: function set(value) {\n this._isToSaveData = value;\n }\n }]);\n return ObserverObject;\n}();\n\nexports.default = ObserverObject;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zeW5jaGVyL09ic2VydmVyT2JqZWN0LmpzPzFiNTUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9nIFN5c3RlbVxyXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xyXG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignT2JzZXJ2ZXJPYmplY3QnKTtcclxuXHJcbmltcG9ydCB7IGRpdmlkZVVSTCwgc3BsaXRPYmplY3RVUkwgfSBmcm9tICcuLi91dGlscy91dGlscyc7XHJcbmltcG9ydCBTdWJzY3JpcHRpb24gZnJvbSAnLi9TdWJzY3JpcHRpb24nO1xyXG5pbXBvcnQgKiBhcyBjcnlwdG9NYW5hZ2VyIGZyb20gJy4uL2NyeXB0b01hbmFnZXIvQ3J5cHRvTWFuYWdlcic7XHJcblxyXG5jbGFzcyBPYnNlcnZlck9iamVjdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHBhcmVudCwgdXJsLCBjaGlsZHJlbnMpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgX3RoaXMuX3BhcmVudCA9IHBhcmVudDtcclxuICAgIF90aGlzLl91cmwgPSB1cmw7XHJcbiAgICBfdGhpcy5fY2hpbGRyZW5zID0gY2hpbGRyZW5zO1xyXG5cclxuICAgIF90aGlzLl9idXMgPSBwYXJlbnQuX2J1cztcclxuXHJcbiAgICBfdGhpcy5fc3Vic2NyaXB0aW9ucyA9IHt9O1xyXG4gICAgX3RoaXMuX3N0b3JhZ2VTdWJzY3JpcHRpb25zID0ge307XHJcbiAgICBfdGhpcy5fY2hpbGRyZW5MaXN0ZW5lcnMgPSBbXTtcclxuXHJcbiAgICB0aGlzLl9pc1RvU2F2ZURhdGEgPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgY2hhbmdlVVJMID0gX3RoaXMuX3VybCArICcvY2hhbmdlcyc7XHJcbiAgICBfdGhpcy5fY2hhbmdlTGlzdGVuZXIgPSBfdGhpcy5fYnVzLmFkZExpc3RlbmVyKGNoYW5nZVVSTCwgKG1zZykgPT4ge1xyXG5cclxuICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLk9ic2VydmVyT2JqZWN0IF0gU3luY2hlck1hbmFnZXItJyArIGNoYW5nZVVSTCArICctUkNWOiAnLCBtc2cpO1xyXG5cclxuICAgICAgLy9UT0RPOiB3aGF0IHRvZG8gaGVyZT8gU2F2ZSBjaGFuZ2VzP1xyXG4gICAgICBpZiAodGhpcy5faXNUb1NhdmVEYXRhICYmIG1zZy5ib2R5LmF0dHJpYnV0ZSkge1xyXG4gICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5PYnNlcnZlck9iamVjdCBdIFN5bmNoZXJNYW5hZ2VyIC0gc2F2ZSBkYXRhOiAnLCBtc2cpO1xyXG4gICAgICAgIF90aGlzLl9wYXJlbnQuX2RhdGFPYmplY3RzU3RvcmFnZS51cGRhdGUoZmFsc2UsIF90aGlzLl91cmwsICd2ZXJzaW9uJywgbXNnLmJvZHkudmVyc2lvbik7XHJcbiAgICAgICAgX3RoaXMuX3BhcmVudC5fZGF0YU9iamVjdHNTdG9yYWdlLnVwZGF0ZShmYWxzZSwgX3RoaXMuX3VybCwgJ2xhc3RNb2RpZmllZCcsIG1zZy5ib2R5Lmxhc3RNb2RpZmllZCk7XHJcbiAgICAgICAgX3RoaXMuX3BhcmVudC5fZGF0YU9iamVjdHNTdG9yYWdlLnNhdmVEYXRhKGZhbHNlLCBfdGhpcy5fdXJsLCBtc2cuYm9keS5hdHRyaWJ1dGUsIG1zZy5ib2R5LnZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0IGlzVG9TYXZlRGF0YSh2YWx1ZSkge1xyXG4gICAgdGhpcy5faXNUb1NhdmVEYXRhID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBfbmV3U3Vic2NyaXB0aW9uKGh5cGVydHkpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IHN1YnNjcmlwdGlvbiA9IF90aGlzLl9zdWJzY3JpcHRpb25zW2h5cGVydHldO1xyXG4gICAgbG9nLmxvZygnW09ic2VydmVyIE9iamVjdCAtIG5ldyBzdWJzY3JpcHRpb25dIC0gJywgIF90aGlzLl9zdWJzY3JpcHRpb25zLCBoeXBlcnR5LCBfdGhpcy5fc3Vic2NyaXB0aW9ucy5oYXNPd25Qcm9wZXJ0eShoeXBlcnR5KSk7XHJcbiAgICBpZiAoIXN1YnNjcmlwdGlvbikge1xyXG4gICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1toeXBlcnR5XSA9IG5ldyBTdWJzY3JpcHRpb24oX3RoaXMuX2J1cywgaHlwZXJ0eSwgX3RoaXMuX3VybCwgX3RoaXMuX2NoaWxkcmVucywgZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkU3Vic2NyaXB0aW9uKGh5cGVydHkpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgX3RoaXMuX25ld1N1YnNjcmlwdGlvbihoeXBlcnR5KTtcclxuICB9XHJcblxyXG4gIGFkZENoaWxkcmVucyhjaGlsZHJlbnMpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIGlmIChjaGlsZHJlbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGNoaWxkQmFzZVVSTCA9IF90aGlzLl91cmwgKyAnL2NoaWxkcmVuLyc7XHJcbiAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5PYnNlcnZlck9iamVjdCAtIGFkZENoaWxkcmVuc10gLSBjaGlsZHJlbnM6ICcsIGNoaWxkcmVucywgY2hpbGRCYXNlVVJMKTtcclxuXHJcbiAgICAgIGNoaWxkcmVucy5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG5cclxuICAgICAgICBsZXQgY2hpbGRMaXN0ZW5lciA9IF90aGlzLl9idXMuYWRkTGlzdGVuZXIoY2hpbGRCYXNlVVJMICsgY2hpbGQsIChtc2cpID0+IHtcclxuICAgICAgICAgIC8vVE9ETzogd2hhdCB0b2RvIGhlcmU/IFNhdmUgY2hpbGRyZW5zP1xyXG4gICAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLk9ic2VydmVyT2JqZWN0IHJlY2VpdmVkXScsIG1zZyk7XHJcblxyXG4gICAgICAgICAgaWYgKG1zZy50eXBlID09PSAnY3JlYXRlJyAmJiBtc2cudG8uaW5jbHVkZXMoJ2NoaWxkcmVuJykgJiYgdGhpcy5faXNUb1NhdmVEYXRhKSB7XHJcbiAgICAgICAgICAgIGxldCBzcGxpdGVkUmVwb3J0ZXJVUkwgPSBzcGxpdE9iamVjdFVSTChtc2cudG8pO1xyXG5cclxuICAgICAgICAgICAgbGV0IHVybCA9IHNwbGl0ZWRSZXBvcnRlclVSTC51cmw7XHJcblxyXG4gICAgICAgICAgICAvL3JlbW92ZSBmYWxzZSB3aGVuIG11dHVhbEF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWRcclxuICAgICAgICAgICAgaWYgKCEodHlwZW9mIG1zZy5ib2R5LnZhbHVlID09PSAnc3RyaW5nJykpIHtcclxuXHJcbiAgICAgICAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLk9ic2VydmVyT2JqZWN0XSBlbmNyeXB0aW5nIHJlY2VpdmVkIGRhdGEgJywgbXNnLmJvZHkudmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgICBjcnlwdG9NYW5hZ2VyLmRlZmF1bHQuZW5jcnlwdERhdGFPYmplY3QobXNnLmJvZHkudmFsdWUsIHVybCkudGhlbigoZW5jcnlwdGVkVmFsdWUpPT57XHJcbiAgICAgICAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuT2JzZXJ2ZXJPYmplY3RdIGVuY3J5cHRlZCBkYXRhICcsICBlbmNyeXB0ZWRWYWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgX3RoaXMuX3N0b3JlQ2hpbGRPYmplY3QobXNnLCBKU09OLnN0cmluZ2lmeShlbmNyeXB0ZWRWYWx1ZSkpO1xyXG4gICAgICAgICAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcclxuICAgICAgICAgICAgICAgIGxvZy53YXJuKCdbU3luY2hlck1hbmFnZXIuT2JzZXJ2ZXJPYmplY3QuX2VuY3J5cHRDaGlsZF0gZmFpbGVkLCBzdG9yaW5nIHVuZW5jcnlwdGVkICcsIHJlYXNvbik7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5fc3RvcmVDaGlsZE9iamVjdChtc2csIG1zZy5ib2R5LnZhbHVlKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBfdGhpcy5fc3RvcmVDaGlsZE9iamVjdChtc2csIG1zZy5ib2R5LnZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5PYnNlcnZlck9iamVjdCBjaGlsZHJlbiBMaXN0ZW5lcnNdJywgX3RoaXMuX2NoaWxkcmVuTGlzdGVuZXJzLCBjaGlsZExpc3RlbmVyKTtcclxuICAgICAgICAgIGlmIChfdGhpcy5fY2hpbGRyZW5MaXN0ZW5lcnMuaW5kZXhPZihjaGlsZExpc3RlbmVyKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgX3RoaXMuX2NoaWxkcmVuTGlzdGVuZXJzLnB1c2goY2hpbGRMaXN0ZW5lcik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBzdG9yZSBjaGlsZE9iamVjdFxyXG5cclxuICBfc3RvcmVDaGlsZE9iamVjdChtc2csIGRhdGEpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IHNwbGl0ZWRSZXBvcnRlclVSTCA9IHNwbGl0T2JqZWN0VVJMKG1zZy50byk7XHJcblxyXG4gICAgbGV0IHVybCA9IHNwbGl0ZWRSZXBvcnRlclVSTC51cmw7XHJcblxyXG4gICAgbGV0IHJlc291cmNlID0gc3BsaXRlZFJlcG9ydGVyVVJMLnJlc291cmNlO1xyXG4gICAgbGV0IHZhbHVlID0ge1xyXG4gICAgICBpZGVudGl0eTogbXNnLmJvZHkuaWRlbnRpdHksXHJcbiAgICAgIHZhbHVlOiBkYXRhXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIHRoaXMgaWRlbnRpdHkgZGF0YSBpcyBub3QgbmVlZGVkIHRvIGJlIHN0b3JlZFxyXG4gICAgZGVsZXRlIHZhbHVlLmlkZW50aXR5LmFzc2VydGlvbjtcclxuICAgIGRlbGV0ZSB2YWx1ZS5pZGVudGl0eS5leHBpcmVzO1xyXG5cclxuICAgIGxldCBvYmplY3RVUkxSZXNvdXJjZSA9IG1zZy5ib2R5LnJlc291cmNlO1xyXG4gICAgbGV0IGF0dHJpYnV0ZSA9IHJlc291cmNlO1xyXG5cclxuICAgIGlmIChvYmplY3RVUkxSZXNvdXJjZSkgYXR0cmlidXRlICs9ICcuJyArIG9iamVjdFVSTFJlc291cmNlO1xyXG5cclxuICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5PYnNlcnZlck9iamVjdC5fc3RvcmVDaGlsZE9iamVjdF0gOiAnLCB1cmwsIGF0dHJpYnV0ZSwgdmFsdWUpO1xyXG5cclxuICAgIF90aGlzLl9wYXJlbnQuX2RhdGFPYmplY3RzU3RvcmFnZS5zYXZlQ2hpbGRyZW5zKGZhbHNlLCB1cmwsIGF0dHJpYnV0ZSwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU3Vic2NyaXB0aW9uKG1zZykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBsZXQgaHlwZXJ0eSA9IG1zZy5mcm9tO1xyXG5cclxuICAgIGxldCBkb21haW4gPSBkaXZpZGVVUkwoaHlwZXJ0eSkuZG9tYWluO1xyXG4gICAgbGV0IG9ialVSTFN1YnNjcmlwdGlvbiA9IF90aGlzLl91cmwgKyAnL3N1YnNjcmlwdGlvbic7XHJcblxyXG4gICAgbGV0IHN1YnNjcmlwdGlvbiA9IF90aGlzLl9zdWJzY3JpcHRpb25zW2h5cGVydHldO1xyXG4gICAgaWYgKHN1YnNjcmlwdGlvbikge1xyXG4gICAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHNlbnQgdG8gcmVtb3RlIFJlcG9ydGVyT2JqZWN0IC0+IF9vblJlbW90ZVVuU3Vic2NyaWJlXHJcbiAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgIHR5cGU6ICd1bnN1YnNjcmliZScsIGZyb206IF90aGlzLl9wYXJlbnQuX3VybCwgdG86IG9ialVSTFN1YnNjcmlwdGlvbixcclxuICAgICAgICBib2R5OiB7IHNvdXJjZTogaHlwZXJ0eSwgaWRlbnRpdHk6IG1zZy5ib2R5LmlkZW50aXR5IH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvL1RPRE86IHNob3VsZCBJIHdhaXQgZm9yIHJlc3BvbnNlIGJlZm9yZSB1bnN1YnNjcmliZSBvbiBtc2ctbm9kZVxyXG4gICAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHNlbnQgdG8gbXNnLW5vZGUgU3Vic2NyaXB0aW9uTWFuYWdlciBjb21wb25lbnRcclxuICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgdHlwZTogJ3Vuc3Vic2NyaWJlJywgZnJvbTogX3RoaXMuX3BhcmVudC5fdXJsLCB0bzogJ2RvbWFpbjovL21zZy1ub2RlLicgKyBkb21haW4gKyAnL3NtJyxcclxuICAgICAgICBib2R5OiB7IHJlc291cmNlOiBfdGhpcy5fdXJsLCBjaGlsZHJlblJlc291cmNlczogX3RoaXMuX2NoaWxkcmVucyB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgc3Vic2NyaXB0aW9uLl9yZWxlYXNlTGlzdGVuZXJzKCk7XHJcbiAgICAgIGRlbGV0ZSBfdGhpcy5fc3Vic2NyaXB0aW9uc1toeXBlcnR5XTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBPYnNlcnZlck9iamVjdDtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9zeW5jaGVyL09ic2VydmVyT2JqZWN0LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTs7O0FBQUE7QUFDQTtBQURBO0FBQ0E7Ozs7O0FBTEE7QUFDQTtBQUtBO0FBRUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBOzs7QUEvSEE7QUFDQTtBQUNBOzs7OztBQWlJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///516\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _values = __webpack_require__(211);\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(14);\n\nvar _Subscription = __webpack_require__(518);\n\nvar _Subscription2 = _interopRequireDefault(_Subscription);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('SubscriptionManager'); /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\n// Log System\n\n/**\r\n * @author paulo-g-chainho@alticelabs.com\r\n * Subscription Manager used to manage routing paths at the runtime.\r\n */\n\nvar SubscriptionManager = function () {\n function SubscriptionManager(runtimeURL, bus, storage) {\n (0, _classCallCheck3.default)(this, SubscriptionManager);\n\n if (!runtimeURL) throw new Error('[SubscriptionManager] - needs the runtimeURL parameter');\n if (!bus) throw new Error('[SubscriptionManager] - needs the MessageBus instance');\n\n var _this = this;\n\n _this._bus = bus;\n _this._storage = storage;\n\n _this._subscriptions = {};\n\n _this._subscriptionsStorage = {};\n\n //TODO: these should be saved in persistence engine?\n _this.runtimeURL = runtimeURL;\n _this._url = runtimeURL + '/subscriptions';\n\n //TODO: this should not be hardcoded!\n _this._domain = (0, _utils.divideURL)(runtimeURL).domain;\n\n bus.addListener(_this._url, function (msg) {\n log.info('[SubscriptionManager] RCV: ', msg);\n switch (msg.type) {\n case 'subscribe':\n _this._onSubscribe(msg);break;\n case 'unsubscribe':\n _this._onUnSubscribe(msg);break;\n case 'read':\n _this._onRead(msg);break;\n }\n });\n }\n\n (0, _createClass3.default)(SubscriptionManager, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n return new _promise2.default(function (resolve) {\n\n _this._storage.get('subscriptions').then(function (subscriptions) {\n log.log('[SubscriptionManager.init] resume subscriptions: ', subscriptions);\n if (subscriptions) {\n\n _this._subscriptionsStorage = subscriptions;\n\n (0, _values2.default)(subscriptions).forEach(function (subscription) {\n _this._createSubscription(subscription.domain, subscription.resources, subscription.subscriber, subscription.identity);\n });\n }\n resolve();\n });\n });\n }\n }, {\n key: '_onSubscribe',\n\n\n //message received to set a routing path\n value: function _onSubscribe(msg) {\n\n var _this = this;\n\n var resources = msg.body.resources;\n\n var subscriber = msg.from;\n var domain = (0, _utils.divideURL)(resources[0]).domain; //we are assuming resources are all from the same domain\n\n var identity = msg.body.identity;\n\n _this._createSubscription(domain, resources, subscriber, identity).then(function (reply) {\n //forward to hyperty:\n reply.id = msg.id;\n reply.from = _this._url;\n reply.to = subscriber;\n reply.body = msg.body;\n reply.body.code = 200;\n\n log.log('[SubscriptionManager] - craeteSubscription: ', msg, reply, subscriber);\n\n _this._bus.postMessage(reply);\n\n if (!_this._subscriptionsStorage[subscriber]) {\n\n _this._subscriptionsStorage[subscriber] = {\n domain: domain,\n resources: resources,\n subscriber: subscriber,\n identity: identity\n };\n } else {\n resources.forEach(function (resource) {\n if (!_this._subscriptionsStorage[subscriber].resources.includes(resource)) {\n _this._subscriptionsStorage[subscriber].resources.push(resource);\n }\n });\n }\n\n _this._storage.set('subscriptions', 1, _this._subscriptionsStorage);\n });\n }\n }, {\n key: '_createSubscription',\n value: function _createSubscription(domain, resources, subscriber, identity) {\n\n var _this = this;\n //debugger;\n return new _promise2.default(function (resolve) {\n //FLOW-OUT: subscribe message to the msg-node, registering listeners on the broker\n\n var nodeSubscribeMsg = {\n type: 'subscribe', from: _this._url, to: 'domain://msg-node.' + domain + '/sm',\n body: { identity: identity, resources: resources, source: subscriber }\n };\n\n //subscribe in msg-node\n _this._bus.postMessage(nodeSubscribeMsg, function (reply) {\n log.log('[SubscriptionManager] node-subscribe-response: ', reply);\n\n //if (reply.body.code === 200) {//TODO: uncomment when MN replies with correct response body code\n\n //TODO: support multiple routes for multiple resources\n\n var subscription = _this._subscriptions[subscriber];\n log.log('[SubscriptionManager] - ', _this._subscriptions, resources, _this._subscriptions.hasOwnProperty(subscriber));\n if (!subscription) {\n _this._subscriptions[subscriber] = {};\n }\n\n resources.forEach(function (resource) {\n _this._subscriptions[subscriber][resource] = new _Subscription2.default(_this._bus, subscriber, resource);\n });\n\n resolve(reply);\n });\n });\n }\n\n // message received to remove routing path\n\n }, {\n key: '_onUnSubscribe',\n value: function _onUnSubscribe(msg) {\n var _this = this;\n\n var unsubscriber = msg.from;\n var resource = msg.body.resource;\n\n if (_this._subscriptions[unsubscriber] && _this._subscriptions[unsubscriber][resource]) {\n var domain = (0, _utils.divideURL)(resource).domain;\n var subscription = _this._subscriptions[unsubscriber][resource];\n\n //FLOW-OUT: message sent to msg-node SubscriptionManager component\n _this._bus.postMessage({\n type: 'unsubscribe', from: _this._url, to: 'domain://msg-node.' + domain + '/sm',\n body: { resources: [resource], source: unsubscriber }\n });\n\n subscription._releaseListeners();\n delete _this._subscriptions[unsubscriber][resource];\n\n if (_this._subscriptionsStorage[unsubscriber]) {\n var i = _this._subscriptionsStorage[unsubscriber].resources.indexOf(resource);\n if (i != -1) {\n _this._subscriptionsStorage[unsubscriber].resources.splice(i, 1);\n }\n _this._storage.set('subscriptions', 1, _this._subscriptionsStorage);\n }\n }\n\n _this._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: msg.from,\n body: { code: 200 }\n });\n }\n\n //message received to read existing routing paths. At this point limited to read all existing routing paths set for one listener\n\n }, {\n key: '_onRead',\n value: function _onRead(msg) {\n\n var _this = this;\n\n var listenerAddress = msg.body.resource;\n var reply = void 0;\n\n log.log('[SubscriptionManager] - request to read Subscriptions: ', msg);\n\n _this._storage.get('subscriptions').then(function (subscriptions) {\n if (subscriptions && subscriptions[listenerAddress]) {\n var resources = subscriptions[listenerAddress].resources;\n\n reply = {\n id: msg.id, type: 'response', from: msg.to, to: msg.from,\n body: { code: 200, value: resources }\n };\n } else {\n reply = {\n id: msg.id, type: 'response', from: msg.to, to: msg.from,\n body: { code: 404, description: 'Not Found' }\n };\n }\n _this._bus.postMessage(reply);\n });\n }\n }, {\n key: 'url',\n get: function get() {\n return this._url;\n }\n }]);\n return SubscriptionManager;\n}();\n\nexports.default = SubscriptionManager;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTE3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zdWJzY3JpcHRpb25NYW5hZ2VyL1N1YnNjcmlwdGlvbk1hbmFnZXIuanM/ZGE4MiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxyXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxyXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXHJcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xyXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxyXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXHJcbipcclxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuKlxyXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbipcclxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKiovXHJcblxyXG4vLyBMb2cgU3lzdGVtXHJcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XHJcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdTdWJzY3JpcHRpb25NYW5hZ2VyJyk7XHJcblxyXG5pbXBvcnQgeyBkaXZpZGVVUkwgfSBmcm9tICcuLi91dGlscy91dGlscyc7XHJcbmltcG9ydCBTdWJzY3JpcHRpb24gZnJvbSAnLi9TdWJzY3JpcHRpb24nO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBAYXV0aG9yIHBhdWxvLWctY2hhaW5ob0BhbHRpY2VsYWJzLmNvbVxyXG4gKiBTdWJzY3JpcHRpb24gTWFuYWdlciB1c2VkIHRvIG1hbmFnZSByb3V0aW5nIHBhdGhzIGF0IHRoZSBydW50aW1lLlxyXG4gKi9cclxuXHJcbmNsYXNzIFN1YnNjcmlwdGlvbk1hbmFnZXIge1xyXG5cclxuICBjb25zdHJ1Y3RvcihydW50aW1lVVJMLCBidXMsIHN0b3JhZ2UpIHtcclxuICAgIGlmICghcnVudGltZVVSTCkgdGhyb3cgbmV3IEVycm9yKCdbU3Vic2NyaXB0aW9uTWFuYWdlcl0gLSBuZWVkcyB0aGUgcnVudGltZVVSTCBwYXJhbWV0ZXInKTtcclxuICAgIGlmICghYnVzKSB0aHJvdyBuZXcgRXJyb3IoJ1tTdWJzY3JpcHRpb25NYW5hZ2VyXSAtIG5lZWRzIHRoZSBNZXNzYWdlQnVzIGluc3RhbmNlJyk7XHJcblxyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBfdGhpcy5fYnVzID0gYnVzO1xyXG4gICAgX3RoaXMuX3N0b3JhZ2UgPSBzdG9yYWdlO1xyXG5cclxuICAgIF90aGlzLl9zdWJzY3JpcHRpb25zID0ge307XHJcblxyXG4gICAgX3RoaXMuX3N1YnNjcmlwdGlvbnNTdG9yYWdlID0ge307XHJcblxyXG4gICAgLy9UT0RPOiB0aGVzZSBzaG91bGQgYmUgc2F2ZWQgaW4gcGVyc2lzdGVuY2UgZW5naW5lP1xyXG4gICAgX3RoaXMucnVudGltZVVSTCA9IHJ1bnRpbWVVUkw7XHJcbiAgICBfdGhpcy5fdXJsID0gcnVudGltZVVSTCArICcvc3Vic2NyaXB0aW9ucyc7XHJcblxyXG4gICAgLy9UT0RPOiB0aGlzIHNob3VsZCBub3QgYmUgaGFyZGNvZGVkIVxyXG4gICAgX3RoaXMuX2RvbWFpbiA9IGRpdmlkZVVSTChydW50aW1lVVJMKS5kb21haW47XHJcblxyXG4gICAgYnVzLmFkZExpc3RlbmVyKF90aGlzLl91cmwsIChtc2cpID0+IHtcclxuICAgICAgbG9nLmluZm8oJ1tTdWJzY3JpcHRpb25NYW5hZ2VyXSBSQ1Y6ICcsIG1zZyk7XHJcbiAgICAgIHN3aXRjaCAobXNnLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdzdWJzY3JpYmUnOiBfdGhpcy5fb25TdWJzY3JpYmUobXNnKTsgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAndW5zdWJzY3JpYmUnOiBfdGhpcy5fb25VblN1YnNjcmliZShtc2cpOyBicmVhaztcclxuICAgICAgICBjYXNlICdyZWFkJzogX3RoaXMuX29uUmVhZChtc2cpOyBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgaW5pdCgpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcblxyXG4gICAgICBfdGhpcy5fc3RvcmFnZS5nZXQoJ3N1YnNjcmlwdGlvbnMnKS50aGVuKChzdWJzY3JpcHRpb25zKSA9PiB7XHJcbiAgICAgICAgbG9nLmxvZygnW1N1YnNjcmlwdGlvbk1hbmFnZXIuaW5pdF0gcmVzdW1lIHN1YnNjcmlwdGlvbnM6ICcsIHN1YnNjcmlwdGlvbnMpO1xyXG4gICAgICAgIGlmIChzdWJzY3JpcHRpb25zKSB7XHJcblxyXG4gICAgICAgICAgX3RoaXMuX3N1YnNjcmlwdGlvbnNTdG9yYWdlID0gc3Vic2NyaXB0aW9ucztcclxuXHJcbiAgICAgICAgICBPYmplY3QudmFsdWVzKHN1YnNjcmlwdGlvbnMpLmZvckVhY2goKHN1YnNjcmlwdGlvbik9PntcclxuICAgICAgICAgICAgX3RoaXMuX2NyZWF0ZVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24uZG9tYWluLCBzdWJzY3JpcHRpb24ucmVzb3VyY2VzLCBzdWJzY3JpcHRpb24uc3Vic2NyaWJlciwgc3Vic2NyaXB0aW9uLmlkZW50aXR5KTtcclxuXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcblxyXG5cclxuICB9XHJcblxyXG4gIGdldCB1cmwoKSB7IHJldHVybiB0aGlzLl91cmw7IH1cclxuXHJcblxyXG4gIC8vbWVzc2FnZSByZWNlaXZlZCB0byBzZXQgYSByb3V0aW5nIHBhdGhcclxuICBfb25TdWJzY3JpYmUobXNnKSB7XHJcblxyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBsZXQgcmVzb3VyY2VzID0gbXNnLmJvZHkucmVzb3VyY2VzO1xyXG5cclxuICAgIGxldCBzdWJzY3JpYmVyID0gbXNnLmZyb207XHJcbiAgICBsZXQgZG9tYWluID0gZGl2aWRlVVJMKHJlc291cmNlc1swXSkuZG9tYWluOyAvL3dlIGFyZSBhc3N1bWluZyByZXNvdXJjZXMgYXJlIGFsbCBmcm9tIHRoZSBzYW1lIGRvbWFpblxyXG5cclxuICAgIGxldCBpZGVudGl0eSA9IG1zZy5ib2R5LmlkZW50aXR5O1xyXG5cclxuICAgIF90aGlzLl9jcmVhdGVTdWJzY3JpcHRpb24oZG9tYWluLCByZXNvdXJjZXMsIHN1YnNjcmliZXIsIGlkZW50aXR5KS50aGVuKChyZXBseSk9PntcclxuICAgICAgLy9mb3J3YXJkIHRvIGh5cGVydHk6XHJcbiAgICAgIHJlcGx5LmlkID0gbXNnLmlkO1xyXG4gICAgICByZXBseS5mcm9tID0gX3RoaXMuX3VybDtcclxuICAgICAgcmVwbHkudG8gPSBzdWJzY3JpYmVyO1xyXG4gICAgICByZXBseS5ib2R5ID0gbXNnLmJvZHk7XHJcbiAgICAgIHJlcGx5LmJvZHkuY29kZSA9IDIwMDtcclxuXHJcbiAgICAgIGxvZy5sb2coJ1tTdWJzY3JpcHRpb25NYW5hZ2VyXSAtIGNyYWV0ZVN1YnNjcmlwdGlvbjogJywgbXNnLCByZXBseSwgc3Vic2NyaWJlcik7XHJcblxyXG4gICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHJlcGx5KTtcclxuXHJcblxyXG4gICAgICBpZiAoIV90aGlzLl9zdWJzY3JpcHRpb25zU3RvcmFnZVtzdWJzY3JpYmVyXSkge1xyXG5cclxuXHJcbiAgICAgICAgX3RoaXMuX3N1YnNjcmlwdGlvbnNTdG9yYWdlW3N1YnNjcmliZXJdID0ge1xyXG4gICAgICAgICAgZG9tYWluOiBkb21haW4sXHJcbiAgICAgICAgICByZXNvdXJjZXM6IHJlc291cmNlcyxcclxuICAgICAgICAgIHN1YnNjcmliZXI6IHN1YnNjcmliZXIsXHJcbiAgICAgICAgICBpZGVudGl0eTogaWRlbnRpdHlcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvdXJjZXMuZm9yRWFjaCgocmVzb3VyY2UpID0+IHtcclxuICAgICAgICAgIGlmICghKF90aGlzLl9zdWJzY3JpcHRpb25zU3RvcmFnZVtzdWJzY3JpYmVyXS5yZXNvdXJjZXMuaW5jbHVkZXMocmVzb3VyY2UpKSkge1xyXG4gICAgICAgICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1N0b3JhZ2Vbc3Vic2NyaWJlcl0ucmVzb3VyY2VzLnB1c2gocmVzb3VyY2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBfdGhpcy5fc3RvcmFnZS5zZXQoJ3N1YnNjcmlwdGlvbnMnLCAxLCBfdGhpcy5fc3Vic2NyaXB0aW9uc1N0b3JhZ2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBfY3JlYXRlU3Vic2NyaXB0aW9uKGRvbWFpbiwgcmVzb3VyY2VzLCBzdWJzY3JpYmVyLCBpZGVudGl0eSkge1xyXG5cclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICAvL2RlYnVnZ2VyO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIC8vRkxPVy1PVVQ6IHN1YnNjcmliZSBtZXNzYWdlIHRvIHRoZSBtc2ctbm9kZSwgcmVnaXN0ZXJpbmcgbGlzdGVuZXJzIG9uIHRoZSBicm9rZXJcclxuXHJcbiAgICAgIGxldCBub2RlU3Vic2NyaWJlTXNnID0ge1xyXG4gICAgICAgIHR5cGU6ICdzdWJzY3JpYmUnLCBmcm9tOiBfdGhpcy5fdXJsLCB0bzogJ2RvbWFpbjovL21zZy1ub2RlLicgKyBkb21haW4gKyAnL3NtJyxcclxuICAgICAgICBib2R5OiB7IGlkZW50aXR5OiBpZGVudGl0eSwgcmVzb3VyY2VzOiByZXNvdXJjZXMsIHNvdXJjZTogc3Vic2NyaWJlciB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICAvL3N1YnNjcmliZSBpbiBtc2ctbm9kZVxyXG4gICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKG5vZGVTdWJzY3JpYmVNc2csIChyZXBseSkgPT4ge1xyXG4gICAgICAgIGxvZy5sb2coJ1tTdWJzY3JpcHRpb25NYW5hZ2VyXSBub2RlLXN1YnNjcmliZS1yZXNwb25zZTogJywgcmVwbHkpO1xyXG5cclxuICAgICAgICAvL2lmIChyZXBseS5ib2R5LmNvZGUgPT09IDIwMCkgey8vVE9ETzogdW5jb21tZW50IHdoZW4gIE1OIHJlcGxpZXMgd2l0aCBjb3JyZWN0IHJlc3BvbnNlIGJvZHkgY29kZVxyXG5cclxuICAgICAgICAvL1RPRE86IHN1cHBvcnQgbXVsdGlwbGUgcm91dGVzIGZvciBtdWx0aXBsZSByZXNvdXJjZXNcclxuXHJcbiAgICAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IF90aGlzLl9zdWJzY3JpcHRpb25zW3N1YnNjcmliZXJdO1xyXG4gICAgICAgIGxvZy5sb2coJ1tTdWJzY3JpcHRpb25NYW5hZ2VyXSAtICcsICBfdGhpcy5fc3Vic2NyaXB0aW9ucywgcmVzb3VyY2VzLCBfdGhpcy5fc3Vic2NyaXB0aW9ucy5oYXNPd25Qcm9wZXJ0eShzdWJzY3JpYmVyKSk7XHJcbiAgICAgICAgaWYgKCFzdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgIF90aGlzLl9zdWJzY3JpcHRpb25zW3N1YnNjcmliZXJdID0ge307XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXNvdXJjZXMuZm9yRWFjaCgocmVzb3VyY2UpPT57XHJcbiAgICAgICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1tzdWJzY3JpYmVyXVtyZXNvdXJjZV0gPSBuZXcgU3Vic2NyaXB0aW9uKF90aGlzLl9idXMsIHN1YnNjcmliZXIsIHJlc291cmNlKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmVzb2x2ZShyZXBseSk7XHJcblxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvLyBtZXNzYWdlIHJlY2VpdmVkIHRvIHJlbW92ZSByb3V0aW5nIHBhdGhcclxuICBfb25VblN1YnNjcmliZShtc2cpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IHVuc3Vic2NyaWJlciA9IG1zZy5mcm9tO1xyXG4gICAgbGV0IHJlc291cmNlID0gbXNnLmJvZHkucmVzb3VyY2U7XHJcblxyXG4gICAgaWYgKF90aGlzLl9zdWJzY3JpcHRpb25zW3Vuc3Vic2NyaWJlcl0gJiYgX3RoaXMuX3N1YnNjcmlwdGlvbnNbdW5zdWJzY3JpYmVyXVtyZXNvdXJjZV0pIHtcclxuICAgICAgbGV0IGRvbWFpbiA9IGRpdmlkZVVSTChyZXNvdXJjZSkuZG9tYWluO1xyXG4gICAgICBsZXQgc3Vic2NyaXB0aW9uID0gX3RoaXMuX3N1YnNjcmlwdGlvbnNbdW5zdWJzY3JpYmVyXVtyZXNvdXJjZV07XHJcblxyXG4gICAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHNlbnQgdG8gbXNnLW5vZGUgU3Vic2NyaXB0aW9uTWFuYWdlciBjb21wb25lbnRcclxuICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgdHlwZTogJ3Vuc3Vic2NyaWJlJywgZnJvbTogX3RoaXMuX3VybCwgdG86ICdkb21haW46Ly9tc2ctbm9kZS4nICsgZG9tYWluICsgJy9zbScsXHJcbiAgICAgICAgYm9keTogeyByZXNvdXJjZXM6IFtyZXNvdXJjZV0sIHNvdXJjZTogdW5zdWJzY3JpYmVyIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBzdWJzY3JpcHRpb24uX3JlbGVhc2VMaXN0ZW5lcnMoKTtcclxuICAgICAgZGVsZXRlIF90aGlzLl9zdWJzY3JpcHRpb25zW3Vuc3Vic2NyaWJlcl1bcmVzb3VyY2VdO1xyXG5cclxuICAgICAgaWYgKF90aGlzLl9zdWJzY3JpcHRpb25zU3RvcmFnZVt1bnN1YnNjcmliZXJdKSB7XHJcbiAgICAgICAgbGV0IGkgPSBfdGhpcy5fc3Vic2NyaXB0aW9uc1N0b3JhZ2VbdW5zdWJzY3JpYmVyXS5yZXNvdXJjZXMuaW5kZXhPZihyZXNvdXJjZSk7XHJcbiAgICAgICAgaWYgKGkgIT0gLTEpIHtcclxuICAgICAgICAgIF90aGlzLl9zdWJzY3JpcHRpb25zU3RvcmFnZVt1bnN1YnNjcmliZXJdLnJlc291cmNlcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF90aGlzLl9zdG9yYWdlLnNldCgnc3Vic2NyaXB0aW9ucycsIDEsIF90aGlzLl9zdWJzY3JpcHRpb25zU3RvcmFnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHtcclxuICAgICAgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgZnJvbTogbXNnLnRvLCB0bzogbXNnLmZyb20sXHJcbiAgICAgIGJvZHk6IHsgY29kZTogMjAwIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIC8vbWVzc2FnZSByZWNlaXZlZCB0byByZWFkIGV4aXN0aW5nIHJvdXRpbmcgcGF0aHMuIEF0IHRoaXMgcG9pbnQgbGltaXRlZCB0byByZWFkIGFsbCBleGlzdGluZyByb3V0aW5nIHBhdGhzIHNldCBmb3Igb25lIGxpc3RlbmVyXHJcbiAgX29uUmVhZChtc2cpIHtcclxuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCBsaXN0ZW5lckFkZHJlc3MgPSBtc2cuYm9keS5yZXNvdXJjZTtcclxuICAgIGxldCByZXBseTtcclxuXHJcbiAgICBsb2cubG9nKCdbU3Vic2NyaXB0aW9uTWFuYWdlcl0gLSByZXF1ZXN0IHRvIHJlYWQgU3Vic2NyaXB0aW9uczogJywgbXNnKTtcclxuXHJcbiAgICBfdGhpcy5fc3RvcmFnZS5nZXQoJ3N1YnNjcmlwdGlvbnMnKS50aGVuKChzdWJzY3JpcHRpb25zKT0+e1xyXG4gICAgICBpZiAoc3Vic2NyaXB0aW9ucyAmJiBzdWJzY3JpcHRpb25zW2xpc3RlbmVyQWRkcmVzc10pIHtcclxuICAgICAgICBsZXQgcmVzb3VyY2VzID0gc3Vic2NyaXB0aW9uc1tsaXN0ZW5lckFkZHJlc3NdLnJlc291cmNlcztcclxuXHJcbiAgICAgICAgcmVwbHkgPSB7XHJcbiAgICAgICAgICBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCBmcm9tOiBtc2cudG8sIHRvOiBtc2cuZnJvbSxcclxuICAgICAgICAgIGJvZHk6IHsgY29kZTogMjAwLCB2YWx1ZTogcmVzb3VyY2VzIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXBseSA9IHtcclxuICAgICAgICAgIGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIGZyb206IG1zZy50bywgdG86IG1zZy5mcm9tLFxyXG4gICAgICAgICAgYm9keTogeyBjb2RlOiA0MDQsIGRlc2NyaXB0aW9uOiAnTm90IEZvdW5kJyB9XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHJlcGx5KTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgU3Vic2NyaXB0aW9uTWFuYWdlcjtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9zdWJzY3JpcHRpb25NYW5hZ2VyL1N1YnNjcmlwdGlvbk1hbmFnZXIuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkE7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTs7Ozs7OztBQUpBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUZBO0FBQ0E7QUFPQTs7Ozs7QUFLQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBSEE7QUFLQTtBQUVBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUdBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBOzs7QUF2SkE7QUFBQTtBQUFBOzs7OztBQTBKQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///517\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('Subscription'); // Log System\n\nvar Subscription = function () {\n function Subscription(bus, subscriber, resource) {\n (0, _classCallCheck3.default)(this, Subscription);\n\n var _this = this;\n _this._subscriber = subscriber;\n _this.resource = resource;\n\n log.log('[SubscriptionManager.Subscription] new: ', subscriber, resource);\n\n //add forward\n _this._listener = bus.addForward(resource, subscriber);\n }\n\n (0, _createClass3.default)(Subscription, [{\n key: '_releaseListeners',\n value: function _releaseListeners() {\n var _this = this;\n\n _this._listener.remove();\n }\n }]);\n return Subscription;\n}();\n\nexports.default = Subscription;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTE4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zdWJzY3JpcHRpb25NYW5hZ2VyL1N1YnNjcmlwdGlvbi5qcz85NDk1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIExvZyBTeXN0ZW1cclxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcclxubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1N1YnNjcmlwdGlvbicpO1xyXG5cclxuY2xhc3MgU3Vic2NyaXB0aW9uIHtcclxuXHJcbiAgY29uc3RydWN0b3IoYnVzLCBzdWJzY3JpYmVyLCByZXNvdXJjZSkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIF90aGlzLl9zdWJzY3JpYmVyID0gc3Vic2NyaWJlcjtcclxuICAgIF90aGlzLnJlc291cmNlID0gcmVzb3VyY2U7XHJcblxyXG4gICAgbG9nLmxvZygnW1N1YnNjcmlwdGlvbk1hbmFnZXIuU3Vic2NyaXB0aW9uXSBuZXc6ICcsIHN1YnNjcmliZXIsIHJlc291cmNlKVxyXG5cclxuICAgIC8vYWRkIGZvcndhcmRcclxuICAgIF90aGlzLl9saXN0ZW5lciA9IGJ1cy5hZGRGb3J3YXJkKHJlc291cmNlLCBzdWJzY3JpYmVyKTtcclxuXHJcbiAgfVxyXG5cclxuICBfcmVsZWFzZUxpc3RlbmVycygpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgX3RoaXMuX2xpc3RlbmVyLnJlbW92ZSgpO1xyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTdWJzY3JpcHRpb247XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvc3Vic2NyaXB0aW9uTWFuYWdlci9TdWJzY3JpcHRpb24uanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7O0FBSUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///518\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(46);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = __webpack_require__(9);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _getPrototypeOf = __webpack_require__(60);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(68);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(69);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _AllowOverrides = __webpack_require__(207);\n\nvar _AllowOverrides2 = _interopRequireDefault(_AllowOverrides);\n\nvar _BlockOverrides = __webpack_require__(208);\n\nvar _BlockOverrides2 = _interopRequireDefault(_BlockOverrides);\n\nvar _utils = __webpack_require__(14);\n\nvar _FirstApplicable = __webpack_require__(209);\n\nvar _FirstApplicable2 = _interopRequireDefault(_FirstApplicable);\n\nvar _ReThinkCtx2 = __webpack_require__(520);\n\nvar _ReThinkCtx3 = _interopRequireDefault(_ReThinkCtx2);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('PEP');\n\nvar RuntimeCoreCtx = function (_ReThinkCtx) {\n (0, _inherits3.default)(RuntimeCoreCtx, _ReThinkCtx);\n\n function RuntimeCoreCtx(runtimeURL, idModule, runtimeRegistry, storageManager, runtimeCapabilities) {\n (0, _classCallCheck3.default)(this, RuntimeCoreCtx);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (RuntimeCoreCtx.__proto__ || (0, _getPrototypeOf2.default)(RuntimeCoreCtx)).call(this));\n\n _this2._runtimeURL = runtimeURL;\n _this2._pepURL = _this2._runtimeURL + '/pep';\n _this2._guiURL = _this2._runtimeURL + '/policy-gui';\n _this2.idModule = idModule;\n _this2.runtimeRegistry = runtimeRegistry;\n _this2.activeUserPolicy = undefined;\n _this2.serviceProviderPolicy = {};\n _this2.userPolicies = {};\n _this2.storageManager = storageManager;\n _this2.runtimeCapabilities = runtimeCapabilities;\n return _this2;\n }\n\n (0, _createClass3.default)(RuntimeCoreCtx, [{\n key: 'loadConfigurations',\n value: function loadConfigurations() {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n console.log(_this.storageManager);\n\n _this.storageManager.get('rethink:activePolicy').then(function (value) {\n _this.activeUserPolicy = value;\n\n return _this.storageManager.get('rethink:groups');\n }).then(function (groupInfo) {\n var groups = groupInfo;\n _this.groups = groups === undefined ? {} : groups;\n\n return _this.storageManager.get('rethink:spPolicies');\n }).then(function (policiesInfo) {\n var spPolicies = policiesInfo;\n _this.serviceProviderPolicy = spPolicies === undefined ? {} : spPolicies;\n\n _this._loadUserPolicies().then(function () {\n resolve();\n });\n });\n });\n }\n }, {\n key: 'getPolicies',\n value: function getPolicies(message, isIncomingMessage) {\n var policies = {};\n\n if (this.activeUserPolicy !== undefined) {\n policies.userPolicy = this.userPolicies[this.activeUserPolicy];\n }\n\n policies.serviceProviderPolicy = this.getServiceProviderPolicy(message, isIncomingMessage);\n\n return policies;\n }\n }, {\n key: '_isValidUpdate',\n value: function _isValidUpdate(message) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n if (message.from.split('://').length > 1) {\n _this.idModule._getHypertyFromDataObject(message.from).then(function (hypertyURL) {\n if (hypertyURL === message.body.source) {\n resolve(message);\n } else {\n reject('The source of the message is not valid.');\n }\n }, function (error) {\n reject(error);\n });\n } else {\n resolve(message);\n }\n });\n }\n }, {\n key: 'getMyEmails',\n value: function getMyEmails() {\n var identities = this.idModule.getIdentities();\n var emails = [];\n\n for (var i in identities) {\n emails.push((0, _utils.getUserEmailFromURL)(identities[i].identity));\n }\n\n return emails;\n }\n }, {\n key: 'getMyHyperties',\n value: function getMyHyperties() {\n var hyperties = this.runtimeRegistry.hypertiesList;\n var hypertiesNames = [];\n\n for (var i in hyperties) {\n var hypertyName = hyperties[i].objectName;\n if (hypertiesNames.indexOf(hypertyName) === -1) {\n hypertiesNames.push(hypertyName);\n }\n }\n\n return hypertiesNames;\n }\n }, {\n key: 'getServiceProviderPolicy',\n value: function getServiceProviderPolicy(message, isIncoming) {\n var policy = void 0;\n\n if (isIncoming) {\n var toHyperty = this.runtimeRegistry.getHypertyName(message.to);\n policy = this.serviceProviderPolicy[toHyperty];\n } else {\n var fromHyperty = this.runtimeRegistry.getHypertyName(message.from);\n policy = this.serviceProviderPolicy[fromHyperty];\n }\n return policy;\n }\n }, {\n key: 'getURL',\n value: function getURL(url) {\n var splitURL = url.split('/');\n return splitURL[0] + '//' + splitURL[2] + '/' + splitURL[3];\n }\n\n /**\r\n * Creates a group with the given name.\r\n * @param {String} groupName\r\n */\n\n }, {\n key: '_loadUserPolicies',\n value: function _loadUserPolicies() {\n var _this3 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this.storageManager.get('rethink:userPolicies').then(function (value) {\n var policies = value;\n if (policies !== undefined) {\n for (var i in policies) {\n _this3.pep.addPolicy('USER', i, policies[i]);\n }\n }\n resolve();\n });\n });\n }\n }, {\n key: '_getLastComponentOfURL',\n value: function _getLastComponentOfURL(url) {\n var split = url.split('/');\n return split[split.length - 1];\n }\n }, {\n key: '_getPoliciesJSON',\n value: function _getPoliciesJSON(policies) {\n for (var i in policies) {\n var combiningAlgorithm = policies[i].combiningAlgorithm;\n if (combiningAlgorithm instanceof _BlockOverrides2.default) {\n policies[i].combiningAlgorithm = 'blockOverrides';\n } else {\n if (combiningAlgorithm instanceof _AllowOverrides2.default) {\n policies[i].combiningAlgorithm = 'allowOverrides';\n } else {\n if (combiningAlgorithm instanceof _FirstApplicable2.default) {\n policies[i].combiningAlgorithm = 'firstApplicable';\n } else {\n policies[i].combiningAlgorithm = undefined;\n }\n }\n }\n }\n\n return policies;\n }\n }, {\n key: 'saveActivePolicy',\n value: function saveActivePolicy() {\n var _this4 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this.storageManager.set('rethink:activePolicy', 0, _this4.activeUserPolicy).then(function () {\n resolve();\n });\n });\n }\n }, {\n key: 'saveGroups',\n value: function saveGroups() {\n var _this5 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this.storageManager.set('rethink:groups', 0, _this5.groups).then(function () {\n resolve();\n });\n });\n }\n }, {\n key: 'savePolicies',\n value: function savePolicies(source, policy, key) {\n var policiesJson = void 0;\n\n switch (source) {\n case 'USER':\n policiesJson = (0, _stringify2.default)(this.userPolicies);\n policiesJson = this._getPoliciesJSON(JSON.parse(policiesJson));\n this.storageManager.set('rethink:userPolicies', 0, policiesJson);\n break;\n case 'SERVICE_PROVIDER':\n if (policy !== undefined & key !== undefined) {\n this.serviceProviderPolicy[key] = policy;\n }\n policiesJson = (0, _stringify2.default)(this.serviceProviderPolicy);\n policiesJson = this._getPoliciesJSON(JSON.parse(policiesJson));\n this.storageManager.set('rethink:spPolicies', 0, policiesJson);\n break;\n default:\n throw Error('Unknown policy source: ' + source);\n }\n }\n }, {\n key: 'getGroupsNames',\n value: function getGroupsNames() {\n var myGroups = this.groups;\n var groupsNames = [];\n if (myGroups !== undefined) {\n for (var groupName in myGroups) {\n groupsNames.push(groupName);\n }\n }\n return groupsNames;\n }\n }, {\n key: 'getGroup',\n value: function getGroup(groupName, destination) {\n var members = [];\n\n if (groupName === 'preauthorised') {\n var dataObjectURL = destination.split('/');\n dataObjectURL.pop();\n dataObjectURL = dataObjectURL[0] + '//' + dataObjectURL[2];\n members = this.runtimeRegistry.getPreAuthSubscribers(dataObjectURL);\n } else {\n if (this.groups[groupName] !== undefined) {\n members = this.groups[groupName];\n }\n }\n\n return members;\n }\n\n /**\r\n * Creates a group with the given name.\r\n * @param {String} groupName\r\n */\n\n }, {\n key: 'createGroup',\n value: function createGroup(groupName) {\n this.groups[groupName] = [];\n this.saveGroups();\n }\n }, {\n key: 'deleteGroup',\n value: function deleteGroup(groupName) {\n delete this.groups[groupName];\n this.saveGroups();\n }\n\n /**\r\n * Adds the given user email to the group with the given name.\r\n * @param {String} userEmail\r\n * @param {String} groupName\r\n */\n\n }, {\n key: 'addToGroup',\n value: function addToGroup(groupName, userEmail) {\n var myGroups = this.groups;\n if (myGroups[groupName] !== undefined) {\n if (myGroups[groupName].indexOf(userEmail) === -1) {\n myGroups[groupName].push(userEmail);\n this.saveGroups();\n }\n } else {\n throw Error('Group \"' + groupName + '\" does not exist!');\n }\n }\n }, {\n key: 'removeFromGroup',\n value: function removeFromGroup(groupName, userEmail) {\n var group = this.groups[groupName];\n\n group.splice(group.indexOf(userEmail), 1);\n this.saveGroups();\n }\n }, {\n key: 'pepURL',\n get: function get() {\n var _this = this;\n return _this._pepURL;\n }\n }, {\n key: 'guiURL',\n get: function get() {\n var _this = this;\n return _this._guiURL;\n }\n }, {\n key: 'runtimeURL',\n get: function get() {\n var _this = this;\n return _this._runtimeURL;\n }\n\n /**\r\n * return the messageBus in this Registry\r\n * @param {MessageBus} messageBus\r\n */\n\n }, {\n key: 'messageBus',\n get: function get() {\n var _this = this;\n return _this._messageBus;\n }\n\n /**\r\n * Set the messageBus in this Registry\r\n * @param {MessageBus} messageBus\r\n */\n ,\n set: function set(messageBus) {\n var _this = this;\n _this._messageBus = messageBus;\n }\n }, {\n key: 'subscription',\n get: function get() {\n return this._subscription;\n },\n set: function set(params) {\n this._subscription = params.message.body.subscriber;\n }\n }]);\n return RuntimeCoreCtx;\n}(_ReThinkCtx3.default);\n\nexports.default = RuntimeCoreCtx;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTE5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29udGV4dC9SdW50aW1lQ29yZUN0eC5qcz85NWRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XHJcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdQRVAnKTtcclxuXHJcbmltcG9ydCBBbGxvd092ZXJyaWRlcyBmcm9tICcuLi9jb21iaW5pbmdBbGdvcml0aG1zL0FsbG93T3ZlcnJpZGVzJztcclxuaW1wb3J0IEJsb2NrT3ZlcnJpZGVzIGZyb20gJy4uL2NvbWJpbmluZ0FsZ29yaXRobXMvQmxvY2tPdmVycmlkZXMnO1xyXG5pbXBvcnQge2RpdmlkZVVSTCwgZ2V0VXNlckVtYWlsRnJvbVVSTCwgaXNEYXRhT2JqZWN0VVJMfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XHJcbmltcG9ydCBGaXJzdEFwcGxpY2FibGUgZnJvbSAnLi4vY29tYmluaW5nQWxnb3JpdGhtcy9GaXJzdEFwcGxpY2FibGUnO1xyXG5pbXBvcnQgUmVUaGlua0N0eCBmcm9tICcuLi9SZVRoaW5rQ3R4JztcclxuXHJcbmNsYXNzIFJ1bnRpbWVDb3JlQ3R4IGV4dGVuZHMgUmVUaGlua0N0eCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHJ1bnRpbWVVUkwsIGlkTW9kdWxlLCBydW50aW1lUmVnaXN0cnksIHN0b3JhZ2VNYW5hZ2VyLCBydW50aW1lQ2FwYWJpbGl0aWVzKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5fcnVudGltZVVSTCA9IHJ1bnRpbWVVUkw7XHJcbiAgICB0aGlzLl9wZXBVUkwgPSB0aGlzLl9ydW50aW1lVVJMICsgJy9wZXAnO1xyXG4gICAgdGhpcy5fZ3VpVVJMID0gdGhpcy5fcnVudGltZVVSTCArICcvcG9saWN5LWd1aSc7XHJcbiAgICB0aGlzLmlkTW9kdWxlID0gaWRNb2R1bGU7XHJcbiAgICB0aGlzLnJ1bnRpbWVSZWdpc3RyeSA9IHJ1bnRpbWVSZWdpc3RyeTtcclxuICAgIHRoaXMuYWN0aXZlVXNlclBvbGljeSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2VydmljZVByb3ZpZGVyUG9saWN5ID0ge307XHJcbiAgICB0aGlzLnVzZXJQb2xpY2llcyA9IHt9O1xyXG4gICAgdGhpcy5zdG9yYWdlTWFuYWdlciA9IHN0b3JhZ2VNYW5hZ2VyO1xyXG4gICAgdGhpcy5ydW50aW1lQ2FwYWJpbGl0aWVzID0gcnVudGltZUNhcGFiaWxpdGllcztcclxuICB9XHJcblxyXG4gIGdldCBwZXBVUkwoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIF90aGlzLl9wZXBVUkw7XHJcbiAgfVxyXG5cclxuICBnZXQgZ3VpVVJMKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBfdGhpcy5fZ3VpVVJMO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJ1bnRpbWVVUkwoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIF90aGlzLl9ydW50aW1lVVJMO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiByZXR1cm4gdGhlIG1lc3NhZ2VCdXMgaW4gdGhpcyBSZWdpc3RyeVxyXG4gICogQHBhcmFtIHtNZXNzYWdlQnVzfSAgICAgICAgICAgbWVzc2FnZUJ1c1xyXG4gICovXHJcbiAgZ2V0IG1lc3NhZ2VCdXMoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIF90aGlzLl9tZXNzYWdlQnVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBTZXQgdGhlIG1lc3NhZ2VCdXMgaW4gdGhpcyBSZWdpc3RyeVxyXG4gICogQHBhcmFtIHtNZXNzYWdlQnVzfSAgICAgICAgICAgbWVzc2FnZUJ1c1xyXG4gICovXHJcbiAgc2V0IG1lc3NhZ2VCdXMobWVzc2FnZUJ1cykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIF90aGlzLl9tZXNzYWdlQnVzID0gbWVzc2FnZUJ1cztcclxuICB9XHJcblxyXG4gIGdldCBzdWJzY3JpcHRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3Vic2NyaXB0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0IHN1YnNjcmlwdGlvbihwYXJhbXMpIHtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IHBhcmFtcy5tZXNzYWdlLmJvZHkuc3Vic2NyaWJlcjtcclxuICB9XHJcblxyXG4gIGxvYWRDb25maWd1cmF0aW9ucygpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKF90aGlzLnN0b3JhZ2VNYW5hZ2VyKTtcclxuXHJcbiAgICAgIF90aGlzLnN0b3JhZ2VNYW5hZ2VyLmdldCgncmV0aGluazphY3RpdmVQb2xpY3knKS50aGVuKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIF90aGlzLmFjdGl2ZVVzZXJQb2xpY3kgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIF90aGlzLnN0b3JhZ2VNYW5hZ2VyLmdldCgncmV0aGluazpncm91cHMnKTtcclxuICAgICAgfSkudGhlbigoZ3JvdXBJbmZvKSA9PiB7XHJcbiAgICAgICAgbGV0IGdyb3VwcyA9IGdyb3VwSW5mbztcclxuICAgICAgICBfdGhpcy5ncm91cHMgPSAoZ3JvdXBzID09PSB1bmRlZmluZWQpID8ge30gOiBncm91cHM7XHJcblxyXG4gICAgICAgIHJldHVybiBfdGhpcy5zdG9yYWdlTWFuYWdlci5nZXQoJ3JldGhpbms6c3BQb2xpY2llcycpO1xyXG4gICAgICB9KS50aGVuKChwb2xpY2llc0luZm8pID0+IHtcclxuICAgICAgICBsZXQgc3BQb2xpY2llcyA9IHBvbGljaWVzSW5mbztcclxuICAgICAgICBfdGhpcy5zZXJ2aWNlUHJvdmlkZXJQb2xpY3kgPSAoc3BQb2xpY2llcyA9PT0gdW5kZWZpbmVkKSA/IHt9IDogc3BQb2xpY2llcztcclxuXHJcbiAgICAgICAgX3RoaXMuX2xvYWRVc2VyUG9saWNpZXMoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBnZXRQb2xpY2llcyhtZXNzYWdlLCBpc0luY29taW5nTWVzc2FnZSkge1xyXG4gICAgbGV0IHBvbGljaWVzID0ge307XHJcblxyXG4gICAgaWYgKHRoaXMuYWN0aXZlVXNlclBvbGljeSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHBvbGljaWVzLnVzZXJQb2xpY3kgPSB0aGlzLnVzZXJQb2xpY2llc1t0aGlzLmFjdGl2ZVVzZXJQb2xpY3ldO1xyXG4gICAgfVxyXG5cclxuICAgIHBvbGljaWVzLnNlcnZpY2VQcm92aWRlclBvbGljeSA9IHRoaXMuZ2V0U2VydmljZVByb3ZpZGVyUG9saWN5KG1lc3NhZ2UsIGlzSW5jb21pbmdNZXNzYWdlKTtcclxuXHJcbiAgICByZXR1cm4gcG9saWNpZXM7XHJcbiAgfVxyXG5cclxuICBfaXNWYWxpZFVwZGF0ZShtZXNzYWdlKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKG1lc3NhZ2UuZnJvbS5zcGxpdCgnOi8vJykubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIF90aGlzLmlkTW9kdWxlLl9nZXRIeXBlcnR5RnJvbURhdGFPYmplY3QobWVzc2FnZS5mcm9tKS50aGVuKGh5cGVydHlVUkwgPT4ge1xyXG4gICAgICAgICAgaWYgKGh5cGVydHlVUkwgPT09IG1lc3NhZ2UuYm9keS5zb3VyY2UpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlamVjdCgnVGhlIHNvdXJjZSBvZiB0aGUgbWVzc2FnZSBpcyBub3QgdmFsaWQuJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUobWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBnZXRNeUVtYWlscygpIHtcclxuICAgIGxldCBpZGVudGl0aWVzID0gdGhpcy5pZE1vZHVsZS5nZXRJZGVudGl0aWVzKCk7XHJcbiAgICBsZXQgZW1haWxzID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgaSBpbiBpZGVudGl0aWVzKSB7XHJcbiAgICAgIGVtYWlscy5wdXNoKGdldFVzZXJFbWFpbEZyb21VUkwoaWRlbnRpdGllc1tpXS5pZGVudGl0eSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBlbWFpbHM7XHJcbiAgfVxyXG5cclxuICBnZXRNeUh5cGVydGllcygpIHtcclxuICAgIGxldCBoeXBlcnRpZXMgPSB0aGlzLnJ1bnRpbWVSZWdpc3RyeS5oeXBlcnRpZXNMaXN0O1xyXG4gICAgbGV0IGh5cGVydGllc05hbWVzID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgaSBpbiBoeXBlcnRpZXMpIHtcclxuICAgICAgbGV0IGh5cGVydHlOYW1lID0gaHlwZXJ0aWVzW2ldLm9iamVjdE5hbWU7XHJcbiAgICAgIGlmIChoeXBlcnRpZXNOYW1lcy5pbmRleE9mKGh5cGVydHlOYW1lKSA9PT0gLTEpIHtcclxuICAgICAgICBoeXBlcnRpZXNOYW1lcy5wdXNoKGh5cGVydHlOYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBoeXBlcnRpZXNOYW1lcztcclxuICB9XHJcblxyXG4gIGdldFNlcnZpY2VQcm92aWRlclBvbGljeShtZXNzYWdlLCBpc0luY29taW5nKSB7XHJcbiAgICBsZXQgcG9saWN5O1xyXG5cclxuICAgIGlmIChpc0luY29taW5nKSB7XHJcbiAgICAgIGxldCB0b0h5cGVydHkgPSB0aGlzLnJ1bnRpbWVSZWdpc3RyeS5nZXRIeXBlcnR5TmFtZShtZXNzYWdlLnRvKTtcclxuICAgICAgcG9saWN5ID0gdGhpcy5zZXJ2aWNlUHJvdmlkZXJQb2xpY3lbdG9IeXBlcnR5XTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBmcm9tSHlwZXJ0eSA9IHRoaXMucnVudGltZVJlZ2lzdHJ5LmdldEh5cGVydHlOYW1lKG1lc3NhZ2UuZnJvbSk7XHJcbiAgICAgIHBvbGljeSA9IHRoaXMuc2VydmljZVByb3ZpZGVyUG9saWN5W2Zyb21IeXBlcnR5XTtcclxuICAgIH1cclxuICAgIHJldHVybiBwb2xpY3k7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0VVJMKHVybCkge1xyXG4gICAgbGV0IHNwbGl0VVJMID0gdXJsLnNwbGl0KCcvJyk7XHJcbiAgICByZXR1cm4gc3BsaXRVUkxbMF0gKyAnLy8nICsgc3BsaXRVUkxbMl0gKyAnLycgKyBzcGxpdFVSTFszXTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAqIENyZWF0ZXMgYSBncm91cCB3aXRoIHRoZSBnaXZlbiBuYW1lLlxyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgZ3JvdXBOYW1lXHJcbiAgKi9cclxuICBfbG9hZFVzZXJQb2xpY2llcygpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHJcbiAgICAgIF90aGlzLnN0b3JhZ2VNYW5hZ2VyLmdldCgncmV0aGluazp1c2VyUG9saWNpZXMnKS50aGVuKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIGxldCBwb2xpY2llcyA9IHZhbHVlO1xyXG4gICAgICAgIGlmIChwb2xpY2llcyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpIGluIHBvbGljaWVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGVwLmFkZFBvbGljeSgnVVNFUicsIGksIHBvbGljaWVzW2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIF9nZXRMYXN0Q29tcG9uZW50T2ZVUkwodXJsKSB7XHJcbiAgICBsZXQgc3BsaXQgPSB1cmwuc3BsaXQoJy8nKTtcclxuICAgIHJldHVybiBzcGxpdFtzcGxpdC5sZW5ndGggLSAxXTtcclxuICB9XHJcblxyXG4gIF9nZXRQb2xpY2llc0pTT04ocG9saWNpZXMpIHtcclxuICAgIGZvciAobGV0IGkgaW4gcG9saWNpZXMpIHtcclxuICAgICAgbGV0IGNvbWJpbmluZ0FsZ29yaXRobSA9IHBvbGljaWVzW2ldLmNvbWJpbmluZ0FsZ29yaXRobTtcclxuICAgICAgaWYgKGNvbWJpbmluZ0FsZ29yaXRobSBpbnN0YW5jZW9mIEJsb2NrT3ZlcnJpZGVzKSB7XHJcbiAgICAgICAgcG9saWNpZXNbaV0uY29tYmluaW5nQWxnb3JpdGhtID0gJ2Jsb2NrT3ZlcnJpZGVzJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY29tYmluaW5nQWxnb3JpdGhtIGluc3RhbmNlb2YgQWxsb3dPdmVycmlkZXMpIHtcclxuICAgICAgICAgIHBvbGljaWVzW2ldLmNvbWJpbmluZ0FsZ29yaXRobSA9ICdhbGxvd092ZXJyaWRlcyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChjb21iaW5pbmdBbGdvcml0aG0gaW5zdGFuY2VvZiBGaXJzdEFwcGxpY2FibGUpIHtcclxuICAgICAgICAgICAgcG9saWNpZXNbaV0uY29tYmluaW5nQWxnb3JpdGhtID0gJ2ZpcnN0QXBwbGljYWJsZSc7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBwb2xpY2llc1tpXS5jb21iaW5pbmdBbGdvcml0aG0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBvbGljaWVzO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUFjdGl2ZVBvbGljeSgpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgX3RoaXMuc3RvcmFnZU1hbmFnZXIuc2V0KCdyZXRoaW5rOmFjdGl2ZVBvbGljeScsIDAsIHRoaXMuYWN0aXZlVXNlclBvbGljeSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUdyb3VwcygpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgX3RoaXMuc3RvcmFnZU1hbmFnZXIuc2V0KCdyZXRoaW5rOmdyb3VwcycsIDAsIHRoaXMuZ3JvdXBzKS50aGVuKCgpID0+IHtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzYXZlUG9saWNpZXMoc291cmNlLCBwb2xpY3ksIGtleSkge1xyXG4gICAgbGV0IHBvbGljaWVzSnNvbjtcclxuXHJcbiAgICBzd2l0Y2ggKHNvdXJjZSkge1xyXG4gICAgICBjYXNlICdVU0VSJzpcclxuICAgICAgICBwb2xpY2llc0pzb24gPSBKU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJQb2xpY2llcyk7XHJcbiAgICAgICAgcG9saWNpZXNKc29uID0gdGhpcy5fZ2V0UG9saWNpZXNKU09OKEpTT04ucGFyc2UocG9saWNpZXNKc29uKSk7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlTWFuYWdlci5zZXQoJ3JldGhpbms6dXNlclBvbGljaWVzJywgMCwgcG9saWNpZXNKc29uKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnU0VSVklDRV9QUk9WSURFUic6XHJcbiAgICAgICAgaWYgKHBvbGljeSAhPT0gdW5kZWZpbmVkICYga2V5ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMuc2VydmljZVByb3ZpZGVyUG9saWN5W2tleV0gPSBwb2xpY3k7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBvbGljaWVzSnNvbiA9IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VydmljZVByb3ZpZGVyUG9saWN5KTtcclxuICAgICAgICBwb2xpY2llc0pzb24gPSB0aGlzLl9nZXRQb2xpY2llc0pTT04oSlNPTi5wYXJzZShwb2xpY2llc0pzb24pKTtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VNYW5hZ2VyLnNldCgncmV0aGluazpzcFBvbGljaWVzJywgMCwgcG9saWNpZXNKc29uKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBFcnJvcignVW5rbm93biBwb2xpY3kgc291cmNlOiAnICsgc291cmNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEdyb3Vwc05hbWVzKCkge1xyXG4gICAgbGV0IG15R3JvdXBzID0gdGhpcy5ncm91cHM7XHJcbiAgICBsZXQgZ3JvdXBzTmFtZXMgPSBbXTtcclxuICAgIGlmIChteUdyb3VwcyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGZvciAobGV0IGdyb3VwTmFtZSBpbiBteUdyb3Vwcykge1xyXG4gICAgICAgIGdyb3Vwc05hbWVzLnB1c2goZ3JvdXBOYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdyb3Vwc05hbWVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0R3JvdXAoZ3JvdXBOYW1lLCBkZXN0aW5hdGlvbikge1xyXG4gICAgbGV0IG1lbWJlcnMgPSBbXTtcclxuXHJcbiAgICBpZiAoZ3JvdXBOYW1lID09PSAncHJlYXV0aG9yaXNlZCcpIHtcclxuICAgICAgbGV0IGRhdGFPYmplY3RVUkwgPSBkZXN0aW5hdGlvbi5zcGxpdCgnLycpO1xyXG4gICAgICBkYXRhT2JqZWN0VVJMLnBvcCgpO1xyXG4gICAgICBkYXRhT2JqZWN0VVJMID0gZGF0YU9iamVjdFVSTFswXSArICcvLycgKyBkYXRhT2JqZWN0VVJMWzJdO1xyXG4gICAgICBtZW1iZXJzID0gdGhpcy5ydW50aW1lUmVnaXN0cnkuZ2V0UHJlQXV0aFN1YnNjcmliZXJzKGRhdGFPYmplY3RVUkwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZ3JvdXBzW2dyb3VwTmFtZV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIG1lbWJlcnMgPSB0aGlzLmdyb3Vwc1tncm91cE5hbWVdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1lbWJlcnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIENyZWF0ZXMgYSBncm91cCB3aXRoIHRoZSBnaXZlbiBuYW1lLlxyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgZ3JvdXBOYW1lXHJcbiAgKi9cclxuICBjcmVhdGVHcm91cChncm91cE5hbWUpIHtcclxuICAgIHRoaXMuZ3JvdXBzW2dyb3VwTmFtZV0gPSBbXTtcclxuICAgIHRoaXMuc2F2ZUdyb3VwcygpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlR3JvdXAoZ3JvdXBOYW1lKSB7XHJcbiAgICBkZWxldGUgdGhpcy5ncm91cHNbZ3JvdXBOYW1lXTtcclxuICAgIHRoaXMuc2F2ZUdyb3VwcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBBZGRzIHRoZSBnaXZlbiB1c2VyIGVtYWlsIHRvIHRoZSBncm91cCB3aXRoIHRoZSBnaXZlbiBuYW1lLlxyXG4gICogQHBhcmFtICB7U3RyaW5nfSAgdXNlckVtYWlsXHJcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICBncm91cE5hbWVcclxuICAqL1xyXG4gIGFkZFRvR3JvdXAoZ3JvdXBOYW1lLCB1c2VyRW1haWwpIHtcclxuICAgIGxldCBteUdyb3VwcyA9IHRoaXMuZ3JvdXBzO1xyXG4gICAgaWYgKG15R3JvdXBzW2dyb3VwTmFtZV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAobXlHcm91cHNbZ3JvdXBOYW1lXS5pbmRleE9mKHVzZXJFbWFpbCkgPT09IC0xKSB7XHJcbiAgICAgICAgbXlHcm91cHNbZ3JvdXBOYW1lXS5wdXNoKHVzZXJFbWFpbCk7XHJcbiAgICAgICAgdGhpcy5zYXZlR3JvdXBzKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdHcm91cCBcIicgKyBncm91cE5hbWUgKyAnXCIgZG9lcyBub3QgZXhpc3QhJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVGcm9tR3JvdXAoZ3JvdXBOYW1lLCB1c2VyRW1haWwpIHtcclxuICAgIGxldCBncm91cCA9IHRoaXMuZ3JvdXBzW2dyb3VwTmFtZV07XHJcblxyXG4gICAgZ3JvdXAuc3BsaWNlKGdyb3VwLmluZGV4T2YodXNlckVtYWlsKSwgMSk7XHJcbiAgICB0aGlzLnNhdmVHcm91cHMoKTtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBSdW50aW1lQ29yZUN0eDtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvY29udGV4dC9SdW50aW1lQ29yZUN0eC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7QUFQQTtBQUNBO0FBT0E7OztBQUVBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVhBO0FBWUE7QUFDQTs7O0FBMENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7OztBQUlBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZkE7QUFpQkE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBN1NBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7O0FBMFFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///519\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _utils = __webpack_require__(14);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ReThinkCtx = function () {\n function ReThinkCtx() {\n (0, _classCallCheck3.default)(this, ReThinkCtx);\n\n this.defaultBehaviour = true;\n this.groups = {};\n }\n\n (0, _createClass3.default)(ReThinkCtx, [{\n key: 'scheme',\n get: function get() {\n return this._scheme;\n },\n set: function set(params) {\n var from = params.message.from;\n if ((0, _utils.isDataObjectURL)(from)) {\n this._scheme = (0, _utils.divideURL)(from).type;\n } else {\n this._scheme = undefined;\n }\n }\n }, {\n key: 'date',\n get: function get() {\n return this._date;\n },\n set: function set(now) {\n var date = new Date();\n var day = String(date.getDate());\n if (day.length === 1) {\n day = '0' + day;\n }\n var month = String(date.getMonth() + 1);\n if (month.length === 1) {\n month = '0' + month;\n }\n this._date = day + '/' + month + '/' + date.getFullYear();\n }\n }, {\n key: 'domain',\n get: function get() {\n return this._domain;\n },\n set: function set(params) {\n if (params.message.body.identity !== undefined) {\n this._domain = (0, _utils.divideEmail)(params.message.body.identity.userProfile.username).domain;\n }\n }\n }, {\n key: 'type',\n get: function get() {\n return this._type;\n },\n set: function set(params) {\n var message = params.message;\n if (message.body.value !== undefined) {\n this._type = message.body.value.resourceType;\n }\n }\n }, {\n key: 'source',\n get: function get() {\n return this._source;\n },\n set: function set(params) {\n if (params.message.body.identity !== undefined) {\n this._source = params.message.body.identity.userProfile.username;\n }\n }\n }, {\n key: 'time',\n get: function get() {\n return this._time;\n },\n set: function set(now) {\n now = new Date();\n var minutes = String(now.getMinutes());\n if (minutes.length === 1) {\n minutes = '0' + minutes;\n }\n this._time = parseInt(String(now.getHours()) + minutes);\n }\n }, {\n key: 'weekday',\n get: function get() {\n return this._weekday;\n },\n set: function set(now) {\n this._weekday = String(new Date().getDay());\n }\n }]);\n return ReThinkCtx;\n}();\n\nexports.default = ReThinkCtx;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUmVUaGlua0N0eC5qcz82ZmRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGl2aWRlRW1haWwsIGRpdmlkZVVSTCwgaXNEYXRhT2JqZWN0VVJMfSBmcm9tICcuLi91dGlscy91dGlscyc7XHJcblxyXG5jbGFzcyBSZVRoaW5rQ3R4IHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmRlZmF1bHRCZWhhdmlvdXIgPSB0cnVlO1xyXG4gICAgdGhpcy5ncm91cHMgPSB7fTtcclxuICB9XHJcblxyXG4gIGdldCBzY2hlbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2NoZW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcclxuICB9XHJcblxyXG4gIGdldCBkb21haW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZG9tYWluO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcclxuICB9XHJcblxyXG4gIGdldCBzb3VyY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc291cmNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRpbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGltZTtcclxuICB9XHJcblxyXG4gIGdldCB3ZWVrZGF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dlZWtkYXk7XHJcbiAgfVxyXG5cclxuICBzZXQgc2NoZW1lKHBhcmFtcykge1xyXG4gICAgbGV0IGZyb20gPSBwYXJhbXMubWVzc2FnZS5mcm9tO1xyXG4gICAgaWYgKGlzRGF0YU9iamVjdFVSTChmcm9tKSkge1xyXG4gICAgICB0aGlzLl9zY2hlbWUgPSBkaXZpZGVVUkwoZnJvbSkudHlwZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3NjaGVtZSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldCBkYXRlKG5vdykge1xyXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgbGV0IGRheSA9IFN0cmluZyhkYXRlLmdldERhdGUoKSk7XHJcbiAgICBpZiAoZGF5Lmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICBkYXkgPSAnMCcgKyBkYXk7XHJcbiAgICB9XHJcbiAgICBsZXQgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSk7XHJcbiAgICBpZiAobW9udGgubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIG1vbnRoID0gJzAnICsgbW9udGg7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kYXRlID0gZGF5ICsgJy8nICsgbW9udGggKyAnLycgKyBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgfVxyXG5cclxuICBzZXQgZG9tYWluKHBhcmFtcykge1xyXG4gICAgaWYgKHBhcmFtcy5tZXNzYWdlLmJvZHkuaWRlbnRpdHkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLl9kb21haW4gPSBkaXZpZGVFbWFpbChwYXJhbXMubWVzc2FnZS5ib2R5LmlkZW50aXR5LnVzZXJQcm9maWxlLnVzZXJuYW1lKS5kb21haW47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXQgdHlwZShwYXJhbXMpIHtcclxuICAgIGxldCBtZXNzYWdlID0gcGFyYW1zLm1lc3NhZ2U7XHJcbiAgICBpZiAobWVzc2FnZS5ib2R5LnZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5fdHlwZSA9IG1lc3NhZ2UuYm9keS52YWx1ZS5yZXNvdXJjZVR5cGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXQgc291cmNlKHBhcmFtcykge1xyXG4gICAgaWYgKHBhcmFtcy5tZXNzYWdlLmJvZHkuaWRlbnRpdHkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLl9zb3VyY2UgPSBwYXJhbXMubWVzc2FnZS5ib2R5LmlkZW50aXR5LnVzZXJQcm9maWxlLnVzZXJuYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0IHRpbWUobm93KSB7XHJcbiAgICBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgbGV0IG1pbnV0ZXMgPSBTdHJpbmcobm93LmdldE1pbnV0ZXMoKSk7XHJcbiAgICBpZiAobWludXRlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgbWludXRlcyA9ICcwJyArIG1pbnV0ZXM7XHJcbiAgICB9XHJcbiAgICB0aGlzLl90aW1lID0gcGFyc2VJbnQoU3RyaW5nKG5vdy5nZXRIb3VycygpKSArIG1pbnV0ZXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0IHdlZWtkYXkobm93KSB7XHJcbiAgICB0aGlzLl93ZWVrZGF5ID0gU3RyaW5nKG5ldyBEYXRlKCkuZ2V0RGF5KCkpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFJlVGhpbmtDdHg7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L1JlVGhpbmtDdHguanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBMEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQS9CQTtBQUNBO0FBQ0E7QUErQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUF4Q0E7QUFDQTtBQUNBO0FBd0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQTFDQTtBQUNBO0FBQ0E7QUEwQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUE3Q0E7QUFDQTtBQUNBO0FBNkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQS9DQTtBQUNBO0FBQ0E7QUErQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBcERBO0FBQ0E7QUFDQTtBQW9EQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///520\n")}])}); \ No newline at end of file +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("Runtime",[],n):"object"==typeof exports?exports.Runtime=n():e.Runtime=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function c(t){if(n[t])return n[t].exports;var g=n[t]={i:t,l:!1,exports:{}};return e[t].call(g.exports,g,g.exports,c),g.l=!0,g.exports}return c.m=e,c.c=n,c.d=function(e,n,t){c.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},c.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(n,"a",n),n},c.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},c.p="",c(c.s=213)}([function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar core = __webpack_require__(27);\nvar hide = __webpack_require__(18);\nvar redefine = __webpack_require__(19);\nvar ctx = __webpack_require__(28);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2V4cG9ydC5qcz8wZWNlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG52YXIgJGV4cG9ydCA9IGZ1bmN0aW9uICh0eXBlLCBuYW1lLCBzb3VyY2UpIHtcbiAgdmFyIElTX0ZPUkNFRCA9IHR5cGUgJiAkZXhwb3J0LkY7XG4gIHZhciBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HO1xuICB2YXIgSVNfU1RBVElDID0gdHlwZSAmICRleHBvcnQuUztcbiAgdmFyIElTX1BST1RPID0gdHlwZSAmICRleHBvcnQuUDtcbiAgdmFyIElTX0JJTkQgPSB0eXBlICYgJGV4cG9ydC5CO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIHx8IChnbG9iYWxbbmFtZV0gPSB7fSkgOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV0gfHwgKGV4cG9ydHNbUFJPVE9UWVBFXSA9IHt9KTtcbiAgdmFyIGtleSwgb3duLCBvdXQsIGV4cDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IChvd24gPyB0YXJnZXQgOiBzb3VyY2UpW2tleV07XG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICBleHAgPSBJU19CSU5EICYmIG93biA/IGN0eChvdXQsIGdsb2JhbCkgOiBJU19QUk9UTyAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcbiAgICAvLyBleHRlbmQgZ2xvYmFsXG4gICAgaWYgKHRhcmdldCkgcmVkZWZpbmUodGFyZ2V0LCBrZXksIG91dCwgdHlwZSAmICRleHBvcnQuVSk7XG4gICAgLy8gZXhwb3J0XG4gICAgaWYgKGV4cG9ydHNba2V5XSAhPSBvdXQpIGhpZGUoZXhwb3J0cywga2V5LCBleHApO1xuICAgIGlmIChJU19QUk9UTyAmJiBleHBQcm90b1trZXldICE9IG91dCkgZXhwUHJvdG9ba2V5XSA9IG91dDtcbiAgfVxufTtcbmdsb2JhbC5jb3JlID0gY29yZTtcbi8vIHR5cGUgYml0bWFwXG4kZXhwb3J0LkYgPSAxOyAgIC8vIGZvcmNlZFxuJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWxcbiRleHBvcnQuUyA9IDQ7ICAgLy8gc3RhdGljXG4kZXhwb3J0LlAgPSA4OyAgIC8vIHByb3RvXG4kZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmRcbiRleHBvcnQuVyA9IDMyOyAgLy8gd3JhcFxuJGV4cG9ydC5VID0gNjQ7ICAvLyBzYWZlXG4kZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWBcbm1vZHVsZS5leHBvcnRzID0gJGV4cG9ydDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanM/NjZiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(200);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanM/YzMxMCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIik7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVmaW5lUHJvcGVydHkpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgICAgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgICBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICAgIGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfTtcbn0oKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2\n')},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FuLW9iamVjdC5qcz8wYzg1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYW4tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n")},function(module,exports){eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2dsb2JhbC5qcz8zYjMyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZ2xvYmFsLmpzXG4vLyBtb2R1bGUgaWQgPSA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZhaWxzLmpzP2NlMDIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mYWlscy5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n")},function(module,exports){eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLW9iamVjdC5qcz81MGEzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1vYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///6\n")},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n "use strict";\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof module === \'object\' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n "use strict";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = "undefined";\n\n var logMethods = [\n "trace",\n "debug",\n "info",\n "warn",\n "error"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === \'function\') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === \'debug\') {\n methodName = \'log\';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, \'log\');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn\'t present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = "loglevel";\n if (name) {\n storageKey += ":" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || \'silent\').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + "=" + levelName + ";";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + "=");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { "TRACE": 0, "DEBUG": 1, "INFO": 2, "WARN": 3,\n "ERROR": 4, "SILENT": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return "No console available for logging";\n }\n } else {\n throw "log.setLevel() called with invalid level: " + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? "WARN" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== "string" || name === "") {\n throw new TypeError("You must supply a name when creating a logger.");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2dsZXZlbC9saWIvbG9nbGV2ZWwuanM/MDZmYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuKiBsb2dsZXZlbCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9waW10ZXJyeS9sb2dsZXZlbFxuKlxuKiBDb3B5cmlnaHQgKGMpIDIwMTMgVGltIFBlcnJ5XG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiovXG4oZnVuY3Rpb24gKHJvb3QsIGRlZmluaXRpb24pIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICAgIGRlZmluZShkZWZpbml0aW9uKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgICAgIG1vZHVsZS5leHBvcnRzID0gZGVmaW5pdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJvb3QubG9nID0gZGVmaW5pdGlvbigpO1xuICAgIH1cbn0odGhpcywgZnVuY3Rpb24gKCkge1xuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgLy8gU2xpZ2h0bHkgZHViaW91cyB0cmlja3MgdG8gY3V0IGRvd24gbWluaW1pemVkIGZpbGUgc2l6ZVxuICAgIHZhciBub29wID0gZnVuY3Rpb24oKSB7fTtcbiAgICB2YXIgdW5kZWZpbmVkVHlwZSA9IFwidW5kZWZpbmVkXCI7XG5cbiAgICB2YXIgbG9nTWV0aG9kcyA9IFtcbiAgICAgICAgXCJ0cmFjZVwiLFxuICAgICAgICBcImRlYnVnXCIsXG4gICAgICAgIFwiaW5mb1wiLFxuICAgICAgICBcIndhcm5cIixcbiAgICAgICAgXCJlcnJvclwiXG4gICAgXTtcblxuICAgIC8vIENyb3NzLWJyb3dzZXIgYmluZCBlcXVpdmFsZW50IHRoYXQgd29ya3MgYXQgbGVhc3QgYmFjayB0byBJRTZcbiAgICBmdW5jdGlvbiBiaW5kTWV0aG9kKG9iaiwgbWV0aG9kTmFtZSkge1xuICAgICAgICB2YXIgbWV0aG9kID0gb2JqW21ldGhvZE5hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIG1ldGhvZC5iaW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gbWV0aG9kLmJpbmQob2JqKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmNhbGwobWV0aG9kLCBvYmopO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIE1pc3NpbmcgYmluZCBzaGltIG9yIElFOCArIE1vZGVybml6ciwgZmFsbGJhY2sgdG8gd3JhcHBpbmdcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuYXBwbHkobWV0aG9kLCBbb2JqLCBhcmd1bWVudHNdKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgdGhlIGJlc3QgbG9nZ2luZyBtZXRob2QgcG9zc2libGUgZm9yIHRoaXMgZW52XG4gICAgLy8gV2hlcmV2ZXIgcG9zc2libGUgd2Ugd2FudCB0byBiaW5kLCBub3Qgd3JhcCwgdG8gcHJlc2VydmUgc3RhY2sgdHJhY2VzXG4gICAgZnVuY3Rpb24gcmVhbE1ldGhvZChtZXRob2ROYW1lKSB7XG4gICAgICAgIGlmIChtZXRob2ROYW1lID09PSAnZGVidWcnKSB7XG4gICAgICAgICAgICBtZXRob2ROYW1lID0gJ2xvZyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgPT09IHVuZGVmaW5lZFR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gTm8gbWV0aG9kIHBvc3NpYmxlLCBmb3Igbm93IC0gZml4ZWQgbGF0ZXIgYnkgZW5hYmxlTG9nZ2luZ1doZW5Db25zb2xlQXJyaXZlc1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnNvbGVbbWV0aG9kTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGJpbmRNZXRob2QoY29uc29sZSwgbWV0aG9kTmFtZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29uc29sZS5sb2cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGJpbmRNZXRob2QoY29uc29sZSwgJ2xvZycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGVzZSBwcml2YXRlIGZ1bmN0aW9ucyBhbHdheXMgbmVlZCBgdGhpc2AgdG8gYmUgc2V0IHByb3Blcmx5XG5cbiAgICBmdW5jdGlvbiByZXBsYWNlTG9nZ2luZ01ldGhvZHMobGV2ZWwsIGxvZ2dlck5hbWUpIHtcbiAgICAgICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsb2dNZXRob2RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgbWV0aG9kTmFtZSA9IGxvZ01ldGhvZHNbaV07XG4gICAgICAgICAgICB0aGlzW21ldGhvZE5hbWVdID0gKGkgPCBsZXZlbCkgP1xuICAgICAgICAgICAgICAgIG5vb3AgOlxuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kRmFjdG9yeShtZXRob2ROYW1lLCBsZXZlbCwgbG9nZ2VyTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWZpbmUgbG9nLmxvZyBhcyBhbiBhbGlhcyBmb3IgbG9nLmRlYnVnXG4gICAgICAgIHRoaXMubG9nID0gdGhpcy5kZWJ1ZztcbiAgICB9XG5cbiAgICAvLyBJbiBvbGQgSUUgdmVyc2lvbnMsIHRoZSBjb25zb2xlIGlzbid0IHByZXNlbnQgdW50aWwgeW91IGZpcnN0IG9wZW4gaXQuXG4gICAgLy8gV2UgYnVpbGQgcmVhbE1ldGhvZCgpIHJlcGxhY2VtZW50cyBoZXJlIHRoYXQgcmVnZW5lcmF0ZSBsb2dnaW5nIG1ldGhvZHNcbiAgICBmdW5jdGlvbiBlbmFibGVMb2dnaW5nV2hlbkNvbnNvbGVBcnJpdmVzKG1ldGhvZE5hbWUsIGxldmVsLCBsb2dnZXJOYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09IHVuZGVmaW5lZFR5cGUpIHtcbiAgICAgICAgICAgICAgICByZXBsYWNlTG9nZ2luZ01ldGhvZHMuY2FsbCh0aGlzLCBsZXZlbCwgbG9nZ2VyTmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpc1ttZXRob2ROYW1lXS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIEJ5IGRlZmF1bHQsIHdlIHVzZSBjbG9zZWx5IGJvdW5kIHJlYWwgbWV0aG9kcyB3aGVyZXZlciBwb3NzaWJsZSwgYW5kXG4gICAgLy8gb3RoZXJ3aXNlIHdlIHdhaXQgZm9yIGEgY29uc29sZSB0byBhcHBlYXIsIGFuZCB0aGVuIHRyeSBhZ2Fpbi5cbiAgICBmdW5jdGlvbiBkZWZhdWx0TWV0aG9kRmFjdG9yeShtZXRob2ROYW1lLCBsZXZlbCwgbG9nZ2VyTmFtZSkge1xuICAgICAgICAvKmpzaGludCB2YWxpZHRoaXM6dHJ1ZSAqL1xuICAgICAgICByZXR1cm4gcmVhbE1ldGhvZChtZXRob2ROYW1lKSB8fFxuICAgICAgICAgICAgICAgZW5hYmxlTG9nZ2luZ1doZW5Db25zb2xlQXJyaXZlcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIExvZ2dlcihuYW1lLCBkZWZhdWx0TGV2ZWwsIGZhY3RvcnkpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBjdXJyZW50TGV2ZWw7XG4gICAgICB2YXIgc3RvcmFnZUtleSA9IFwibG9nbGV2ZWxcIjtcbiAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgIHN0b3JhZ2VLZXkgKz0gXCI6XCIgKyBuYW1lO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBwZXJzaXN0TGV2ZWxJZlBvc3NpYmxlKGxldmVsTnVtKSB7XG4gICAgICAgICAgdmFyIGxldmVsTmFtZSA9IChsb2dNZXRob2RzW2xldmVsTnVtXSB8fCAnc2lsZW50JykudG9VcHBlckNhc2UoKTtcblxuICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSB1bmRlZmluZWRUeXBlKSByZXR1cm47XG5cbiAgICAgICAgICAvLyBVc2UgbG9jYWxTdG9yYWdlIGlmIGF2YWlsYWJsZVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV0gPSBsZXZlbE5hbWU7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG5cbiAgICAgICAgICAvLyBVc2Ugc2Vzc2lvbiBjb29raWUgYXMgZmFsbGJhY2tcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQuY29va2llID1cbiAgICAgICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoc3RvcmFnZUtleSkgKyBcIj1cIiArIGxldmVsTmFtZSArIFwiO1wiO1xuICAgICAgICAgIH0gY2F0Y2ggKGlnbm9yZSkge31cbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZ2V0UGVyc2lzdGVkTGV2ZWwoKSB7XG4gICAgICAgICAgdmFyIHN0b3JlZExldmVsO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IHVuZGVmaW5lZFR5cGUpIHJldHVybjtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHN0b3JlZExldmVsID0gd2luZG93LmxvY2FsU3RvcmFnZVtzdG9yYWdlS2V5XTtcbiAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG5cbiAgICAgICAgICAvLyBGYWxsYmFjayB0byBjb29raWVzIGlmIGxvY2FsIHN0b3JhZ2UgZ2l2ZXMgdXMgbm90aGluZ1xuICAgICAgICAgIGlmICh0eXBlb2Ygc3RvcmVkTGV2ZWwgPT09IHVuZGVmaW5lZFR5cGUpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIHZhciBjb29raWUgPSB3aW5kb3cuZG9jdW1lbnQuY29va2llO1xuICAgICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gY29va2llLmluZGV4T2YoXG4gICAgICAgICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHN0b3JhZ2VLZXkpICsgXCI9XCIpO1xuICAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgIHN0b3JlZExldmVsID0gL14oW147XSspLy5leGVjKGNvb2tpZS5zbGljZShsb2NhdGlvbikpWzFdO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSWYgdGhlIHN0b3JlZCBsZXZlbCBpcyBub3QgdmFsaWQsIHRyZWF0IGl0IGFzIGlmIG5vdGhpbmcgd2FzIHN0b3JlZC5cbiAgICAgICAgICBpZiAoc2VsZi5sZXZlbHNbc3RvcmVkTGV2ZWxdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgc3RvcmVkTGV2ZWwgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHN0b3JlZExldmVsO1xuICAgICAgfVxuXG4gICAgICAvKlxuICAgICAgICpcbiAgICAgICAqIFB1YmxpYyBsb2dnZXIgQVBJIC0gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9waW10ZXJyeS9sb2dsZXZlbCBmb3IgZGV0YWlsc1xuICAgICAgICpcbiAgICAgICAqL1xuXG4gICAgICBzZWxmLm5hbWUgPSBuYW1lO1xuXG4gICAgICBzZWxmLmxldmVscyA9IHsgXCJUUkFDRVwiOiAwLCBcIkRFQlVHXCI6IDEsIFwiSU5GT1wiOiAyLCBcIldBUk5cIjogMyxcbiAgICAgICAgICBcIkVSUk9SXCI6IDQsIFwiU0lMRU5UXCI6IDV9O1xuXG4gICAgICBzZWxmLm1ldGhvZEZhY3RvcnkgPSBmYWN0b3J5IHx8IGRlZmF1bHRNZXRob2RGYWN0b3J5O1xuXG4gICAgICBzZWxmLmdldExldmVsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBjdXJyZW50TGV2ZWw7XG4gICAgICB9O1xuXG4gICAgICBzZWxmLnNldExldmVsID0gZnVuY3Rpb24gKGxldmVsLCBwZXJzaXN0KSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBsZXZlbCA9PT0gXCJzdHJpbmdcIiAmJiBzZWxmLmxldmVsc1tsZXZlbC50b1VwcGVyQ2FzZSgpXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGxldmVsID0gc2VsZi5sZXZlbHNbbGV2ZWwudG9VcHBlckNhc2UoKV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09IFwibnVtYmVyXCIgJiYgbGV2ZWwgPj0gMCAmJiBsZXZlbCA8PSBzZWxmLmxldmVscy5TSUxFTlQpIHtcbiAgICAgICAgICAgICAgY3VycmVudExldmVsID0gbGV2ZWw7XG4gICAgICAgICAgICAgIGlmIChwZXJzaXN0ICE9PSBmYWxzZSkgeyAgLy8gZGVmYXVsdHMgdG8gdHJ1ZVxuICAgICAgICAgICAgICAgICAgcGVyc2lzdExldmVsSWZQb3NzaWJsZShsZXZlbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmVwbGFjZUxvZ2dpbmdNZXRob2RzLmNhbGwoc2VsZiwgbGV2ZWwsIG5hbWUpO1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgPT09IHVuZGVmaW5lZFR5cGUgJiYgbGV2ZWwgPCBzZWxmLmxldmVscy5TSUxFTlQpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBcIk5vIGNvbnNvbGUgYXZhaWxhYmxlIGZvciBsb2dnaW5nXCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aHJvdyBcImxvZy5zZXRMZXZlbCgpIGNhbGxlZCB3aXRoIGludmFsaWQgbGV2ZWw6IFwiICsgbGV2ZWw7XG4gICAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgc2VsZi5zZXREZWZhdWx0TGV2ZWwgPSBmdW5jdGlvbiAobGV2ZWwpIHtcbiAgICAgICAgICBpZiAoIWdldFBlcnNpc3RlZExldmVsKCkpIHtcbiAgICAgICAgICAgICAgc2VsZi5zZXRMZXZlbChsZXZlbCwgZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHNlbGYuZW5hYmxlQWxsID0gZnVuY3Rpb24ocGVyc2lzdCkge1xuICAgICAgICAgIHNlbGYuc2V0TGV2ZWwoc2VsZi5sZXZlbHMuVFJBQ0UsIHBlcnNpc3QpO1xuICAgICAgfTtcblxuICAgICAgc2VsZi5kaXNhYmxlQWxsID0gZnVuY3Rpb24ocGVyc2lzdCkge1xuICAgICAgICAgIHNlbGYuc2V0TGV2ZWwoc2VsZi5sZXZlbHMuU0lMRU5ULCBwZXJzaXN0KTtcbiAgICAgIH07XG5cbiAgICAgIC8vIEluaXRpYWxpemUgd2l0aCB0aGUgcmlnaHQgbGV2ZWxcbiAgICAgIHZhciBpbml0aWFsTGV2ZWwgPSBnZXRQZXJzaXN0ZWRMZXZlbCgpO1xuICAgICAgaWYgKGluaXRpYWxMZXZlbCA9PSBudWxsKSB7XG4gICAgICAgICAgaW5pdGlhbExldmVsID0gZGVmYXVsdExldmVsID09IG51bGwgPyBcIldBUk5cIiA6IGRlZmF1bHRMZXZlbDtcbiAgICAgIH1cbiAgICAgIHNlbGYuc2V0TGV2ZWwoaW5pdGlhbExldmVsLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKlxuICAgICAqIFRvcC1sZXZlbCBBUElcbiAgICAgKlxuICAgICAqL1xuXG4gICAgdmFyIGRlZmF1bHRMb2dnZXIgPSBuZXcgTG9nZ2VyKCk7XG5cbiAgICB2YXIgX2xvZ2dlcnNCeU5hbWUgPSB7fTtcbiAgICBkZWZhdWx0TG9nZ2VyLmdldExvZ2dlciA9IGZ1bmN0aW9uIGdldExvZ2dlcihuYW1lKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gXCJzdHJpbmdcIiB8fCBuYW1lID09PSBcIlwiKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIllvdSBtdXN0IHN1cHBseSBhIG5hbWUgd2hlbiBjcmVhdGluZyBhIGxvZ2dlci5cIik7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbG9nZ2VyID0gX2xvZ2dlcnNCeU5hbWVbbmFtZV07XG4gICAgICAgIGlmICghbG9nZ2VyKSB7XG4gICAgICAgICAgbG9nZ2VyID0gX2xvZ2dlcnNCeU5hbWVbbmFtZV0gPSBuZXcgTG9nZ2VyKFxuICAgICAgICAgICAgbmFtZSwgZGVmYXVsdExvZ2dlci5nZXRMZXZlbCgpLCBkZWZhdWx0TG9nZ2VyLm1ldGhvZEZhY3RvcnkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2dnZXI7XG4gICAgfTtcblxuICAgIC8vIEdyYWIgdGhlIGN1cnJlbnQgZ2xvYmFsIGxvZyB2YXJpYWJsZSBpbiBjYXNlIG9mIG92ZXJ3cml0ZVxuICAgIHZhciBfbG9nID0gKHR5cGVvZiB3aW5kb3cgIT09IHVuZGVmaW5lZFR5cGUpID8gd2luZG93LmxvZyA6IHVuZGVmaW5lZDtcbiAgICBkZWZhdWx0TG9nZ2VyLm5vQ29uZmxpY3QgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IHVuZGVmaW5lZFR5cGUgJiZcbiAgICAgICAgICAgICAgIHdpbmRvdy5sb2cgPT09IGRlZmF1bHRMb2dnZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2cgPSBfbG9nO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlZmF1bHRMb2dnZXI7XG4gICAgfTtcblxuICAgIGRlZmF1bHRMb2dnZXIuZ2V0TG9nZ2VycyA9IGZ1bmN0aW9uIGdldExvZ2dlcnMoKSB7XG4gICAgICAgIHJldHVybiBfbG9nZ2Vyc0J5TmFtZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlZmF1bHRMb2dnZXI7XG59KSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9sb2dsZXZlbC9saWIvbG9nbGV2ZWwuanNcbi8vIG1vZHVsZSBpZCA9IDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///7\n')},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(417), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvcHJvbWlzZS5qcz9mZmYxIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3Byb21pc2UuanNcbi8vIG1vZHVsZSBpZCA9IDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///8\n')},function(module,exports,__webpack_require__){eval("var store = __webpack_require__(80)('wks');\nvar uid = __webpack_require__(49);\nvar Symbol = __webpack_require__(4).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3drcy5qcz85MjQwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBzdG9yZSA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCd3a3MnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5TeW1ib2w7XG52YXIgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcblxudmFyICRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cbiAgICBVU0VfU1lNQk9MICYmIFN5bWJvbFtuYW1lXSB8fCAoVVNFX1NZTUJPTCA/IFN5bWJvbCA6IHVpZCkoJ1N5bWJvbC4nICsgbmFtZSkpO1xufTtcblxuJGV4cG9ydHMuc3RvcmUgPSBzdG9yZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fd2tzLmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9\n")},function(module,exports){eval("var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanM/MTVlMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi41LjcnIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///10\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(42);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.divideURL = divideURL;\nexports.emptyObject = emptyObject;\nexports.secondsSinceEpoch = secondsSinceEpoch;\nexports.deepClone = deepClone;\nexports.removePathFromURL = removePathFromURL;\nexports.getUserURLFromEmail = getUserURLFromEmail;\nexports.getUserEmailFromURL = getUserEmailFromURL;\nexports.convertToUserURL = convertToUserURL;\nexports.isDataObjectURL = isDataObjectURL;\nexports.isLegacy = isLegacy;\nexports.isURL = isURL;\nexports.isUserURL = isUserURL;\nexports.isHypertyURL = isHypertyURL;\nexports.getConfigurationResources = getConfigurationResources;\nexports.buildURL = buildURL;\nexports.generateGUID = generateGUID;\nexports.getUserIdentityDomain = getUserIdentityDomain;\nexports.isBackendServiceURL = isBackendServiceURL;\nexports.divideEmail = divideEmail;\nexports.assign = assign;\nexports.splitObjectURL = splitObjectURL;\nexports.checkAttribute = checkAttribute;\nexports.parseAttributes = parseAttributes;\nexports.isEmpty = isEmpty;\nexports.chatkeysToStringCloner = chatkeysToStringCloner;\nexports.chatkeysToArrayCloner = chatkeysToArrayCloner;\nexports.parseMessageURL = parseMessageURL;\nexports.availableSpace = availableSpace;\nexports.encode = encode;\nexports.decode = decode;\nexports.decodeToUint8Array = decodeToUint8Array;\nexports.stringify = stringify;\nexports.parse = parse;\nexports.parseToUint8Array = parseToUint8Array;\nexports.filterMessageToHash = filterMessageToHash;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n/**\n * Support module with some functions will be useful\n * @module utils\n */\n\n/**\n * @typedef divideURL\n * @type Object\n * @property {string} type The type of URL\n * @property {string} domain The domain of URL\n * @property {string} identity The identity of URL\n */\n\n/**\n * Divide an url in type, domain and identity\n * @param {URL.URL} url - url address\n * @return {divideURL} the result of divideURL\n */\nfunction divideURL(url) {\n\n function recurse(value) {\n var regex = /([a-zA-Z-]*)(:\\/\\/(?:\\.)?|:)([-a-zA-Z0-9@:%._+~#=]{2,256})([-a-zA-Z0-9@:%._+~#=/]*)/gi;\n var subst = '$1,$3,$4';\n var parts = value.replace(regex, subst).split(',');\n return parts;\n }\n\n var parts = recurse(url);\n\n // If the url has no scheme\n if (parts[0] === url && !parts[0].includes('@')) {\n\n var _result = {\n type: '',\n domain: url,\n identity: ''\n };\n\n console.warn('[DivideURL] DivideURL don\\'t support url without scheme. Please review your url address', url);\n\n return _result;\n }\n\n // check if the url has the scheme and includes an @\n if (parts[0] === url && parts[0].includes('@')) {\n var scheme = parts[0] === url ? 'smtp' : parts[0];\n parts = recurse(scheme + '://' + parts[0]);\n }\n\n // if the domain includes an @, divide it to domain and identity respectively\n if (parts[1].includes('@')) {\n parts[2] = parts[0] + '://' + parts[1];\n parts[1] = parts[1].substr(parts[1].indexOf('@') + 1);\n } /*else if (parts[2].includes('/')) {\n parts[2] = parts[2].substr(parts[2].lastIndexOf('/')+1);\n }*/\n\n var result = {\n type: parts[0],\n domain: parts[1],\n identity: parts[2]\n };\n\n return result;\n}\n\n/**\n * Check if an Object is empty\n * @param {Object} object Object to be checked\n * @return {Boolean} status of Object, empty or not (true|false);\n */\nfunction emptyObject(object) {\n return (0, _keys2.default)(object).length > 0 ? false : true;\n}\n\nfunction secondsSinceEpoch() {\n return Math.floor(Date.now() / 1000);\n}\n\n/**\n * Make a COPY of the original data\n * @param {Object} obj - object to be cloned\n * @return {Object}\n */\nfunction deepClone(obj) {\n //TODO: simple but inefficient JSON deep clone...\n if (obj) return JSON.parse((0, _stringify2.default)(obj));\n}\n\nfunction removePathFromURL(url) {\n var splitURL = url.split('/');\n return splitURL[0] + '//' + splitURL[2] + '/' + splitURL[3];\n}\n\n/**\n * Obtains the user URL that corresponds to a given email\n * @param {string} userEmail The user email\n * @return {URL.URL} userURL The user URL\n */\nfunction getUserURLFromEmail(userEmail) {\n var indexOfAt = userEmail.indexOf('@');\n return 'user://' + userEmail.substring(indexOfAt + 1, userEmail.length) + '/' + userEmail.substring(0, indexOfAt);\n}\n\n/**\n * Obtains the user email that corresponds to a given URL\n * @param {URL.URL} userURL The user URL\n * @return {string} userEmail The user email\n */\nfunction getUserEmailFromURL(userURL) {\n var url = divideURL(userURL);\n return url.identity.replace('/', '') + '@' + url.domain; // identity field has '/exampleID' instead of 'exampleID'\n}\n\n/**\n * Check if the user identifier is already in the URL format, if not, convert to URL format\n * @param {string} identifier user identifier\n * @return {string} userURL the user URL\n */\nfunction convertToUserURL(identifier) {\n\n // check if the identifier is already in the url format\n if (identifier.substring(0, 7) === 'user://') {\n var dividedURL = divideURL(identifier);\n\n //check if the url is well formated\n if (dividedURL.domain && dividedURL.identity) {\n return identifier;\n } else {\n throw 'userURL with wrong format';\n }\n\n //if not, convert the user email to URL format\n } else {\n return getUserURLFromEmail(identifier);\n }\n}\n\nfunction isDataObjectURL(url) {\n var schemasToIgnore = ['domain-idp', 'runtime', 'domain', 'hyperty'];\n var splitURL = url.split('://');\n var urlSchema = splitURL[0];\n\n return schemasToIgnore.indexOf(urlSchema) === -1;\n}\n\nfunction isLegacy(url) {\n if (url.split('@').length > 1) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction isURL(url) {\n return url.split('/').length >= 3;\n}\n\nfunction isUserURL(url) {\n return divideURL(url).type === 'user';\n}\n\nfunction isHypertyURL(url) {\n return divideURL(url).type === 'hyperty';\n}\n\n/**\n * get information relative each component configured on runtime configuration;\n * @param {object} configuration object with all configuration\n * @param {string} component string with the component to get the configuration, like, runtimeURLS, catalogueURLs, msgNodeURL, domainRegistryURL;\n * @param {string} resource type of resource to get, like, catalogue, runtimeUA, protocolstub, idpProxy\n * @return {object} return an object with all configurations;\n */\nfunction getConfigurationResources(configuration, component, resource) {\n var objectResource = configuration[component];\n var resourceType = objectResource[resource];\n\n return resourceType;\n}\n\n/**\n * Build a full url with the runtime configuration;\n * @param {object} configuration object with all configuration\n * @param {string} component string with the component to get the configuration, like, runtimeURLS, catalogueURLs, msgNodeURL, domainRegistryURL;\n * @param {string} resource type of resource to get, like, catalogue, runtimeUA, protocolstub, idpProxy\n * @param {string} type resource to get, like a hyperty name or protocolstub name;\n * @param {boolean} useFallback if true the function will check if have a fallback url;\n * @return {string} partial url to contact the resource;\n */\nfunction buildURL(configuration, component, resource, type) {\n var useFallback = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n var objectResource = configuration[component];\n var url = void 0;\n\n if (!objectResource.hasOwnProperty(resource)) {\n throw Error('The configuration ' + (0, _stringify2.default)(objectResource, '', 2) + ' don\\'t have the ' + resource + ' resource you are looking for');\n }\n\n var resourceType = objectResource[resource];\n\n if (type) {\n url = resourceType.prefix + configuration.domain + resourceType.suffix + type;\n if (resourceType.hasOwnProperty('fallback') && useFallback) {\n if (resourceType.fallback.indexOf('%domain%')) {\n url = resourceType.fallback.replace(/(%domain%)/g, configuration.domain) + type;\n } else {\n url = resourceType.fallback + type;\n }\n }\n } else {\n url = resourceType.prefix + configuration.domain + resourceType.suffix;\n }\n\n // console.log(url);\n\n return url;\n}\n\n/**\n * Generate a Global Unique ID\n *\n * @returns String;\n */\nfunction generateGUID() {\n\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n\nfunction getUserIdentityDomain(url) {\n var dividedURL = divideURL(url);\n var splitedDomain = dividedURL.domain.split('.');\n var splitedLength = splitedDomain.length;\n if (splitedLength == 1) {\n return splitedDomain[splitedLength - 1];\n }\n var domain = splitedDomain[splitedLength - 2] + '.' + splitedDomain[splitedLength - 1];\n return domain;\n}\n\n/**\n * Check if URL is from a backend service\n * @param {string} url URL to be processed\n * @return {boolean}\n */\n\nfunction isBackendServiceURL(url) {\n var dividedURL = divideURL(url);\n var splitedDomain = dividedURL.domain.split('.');\n var backendSchemes = ['domain', 'global', 'domain-idp']; // should be defined in the runtime configuration\n var backendSubDomains = ['registry', 'msg-node']; // should be defined in the runtime configuration\n var subDomain = void 0;\n\n if (splitedDomain.length > 1) {\n subDomain = splitedDomain.filter(function (item) {\n return backendSubDomains.indexOf(item) !== -1;\n })[0];\n }\n\n if (subDomain && backendSubDomains.indexOf(subDomain) !== -1) {\n return true;\n }\n\n if (dividedURL.type) {\n return backendSchemes.indexOf(dividedURL.type) !== -1;\n }\n\n return false;\n}\n\nfunction divideEmail(email) {\n var indexOfAt = email.indexOf('@');\n\n var result = {\n username: email.substring(0, indexOfAt),\n domain: email.substring(indexOfAt + 1, email.length)\n };\n\n return result;\n}\n\nfunction assign(obj, keyPath, value) {\n\n if (!obj) obj = {};\n if (typeof keyPath === 'string') keyPath = parseAttributes(keyPath);\n\n var lastKeyIndex = keyPath.length - 1;\n\n for (var i = 0; i < lastKeyIndex; ++i) {\n var key = keyPath[i];\n if (!(key in obj)) {\n obj[key] = {};\n }\n\n obj = obj[key];\n }\n\n obj[keyPath[lastKeyIndex]] = value;\n}\n\nfunction splitObjectURL(dataObjectURL) {\n console.info('[utils - splitObjectURL]: ', dataObjectURL);\n\n var splitedURL = dataObjectURL.split('/');\n var url = splitedURL[0] + '//' + splitedURL[2] + '/' + splitedURL[3];\n var resource = splitedURL[5];\n\n var result = {\n url: url,\n resource: resource\n };\n\n console.info('[utils - splitObjectURL]: ', result);\n\n return result;\n}\n\nfunction checkAttribute(path) {\n\n var regex = /((([a-zA-Z]+):\\/\\/([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})\\/[a-zA-Z0-9.]+@[a-zA-Z0-9]+(-)?[a-zA-Z0-9]+(\\.)?[a-zA-Z0-9]{2,10}?\\.[a-zA-Z]{2,10})(.+(?=.identity))?/gm;\n\n var list = [];\n var final = [];\n var test = path.match(regex);\n\n if (test == null) {\n final = path.split('.');\n } else {\n var m = void 0;\n while ((m = regex.exec(path)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (m.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n\n // The result can be accessed through the `m`-variable.\n m.forEach(function (match, groupIndex) {\n if (groupIndex === 0) {\n list.push(match);\n }\n });\n }\n var result = void 0;\n list.forEach(function (url) {\n\n result = path.replace(url, '*-*');\n final = result.split('.').map(function (item) {\n\n if (item === '*-*') {\n return url;\n }\n\n return item;\n });\n });\n }\n\n console.log('[RuntimeCore.Utils.checkAttribute]', final);\n return final;\n}\n\nfunction parseAttributes(path) {\n var regex = /([0-9a-zA-Z][-\\w]*):\\/\\//g;\n\n var string3 = 'identity';\n\n if (!path.includes('://')) {\n return path.split('.');\n } else {\n var string1 = path.split(regex)[0];\n\n var array1 = string1.split('.');\n\n var string2 = path.replace(string1, '');\n\n if (path.includes(string3)) {\n\n var array2 = string2.split(string3 + '.');\n\n console.log('array2 ' + array2);\n\n string2 = array2[0].slice('.', -1);\n\n array2 = array2[1].split('.');\n\n array1.push(string2, string3);\n\n array1 = array1.concat(array2);\n } else {\n array1.push(string2);\n }\n\n return array1.filter(Boolean);\n }\n}\n\nfunction isEmpty(obj) {\n for (var prop in obj) {\n\n if (obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n\n return (0, _stringify2.default)(obj) === (0, _stringify2.default)({});\n}\n\nfunction chatkeysToStringCloner(sessionKeys) {\n var dataObjectSessionKeysClone = {};\n var fields = (0, _keys2.default)(sessionKeys);\n if (fields) {\n try {\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n dataObjectSessionKeysClone[field] = {};\n dataObjectSessionKeysClone[field].sessionKey = sessionKeys[field].sessionKey.toString();\n dataObjectSessionKeysClone[field].isToEncrypt = sessionKeys[field].isToEncrypt;\n }\n } catch (err) {\n console.error('_chatkeysToStringCloner:err', err);\n }\n }\n return dataObjectSessionKeysClone;\n}\n\nfunction chatkeysToArrayCloner(sessionKeys) {\n var dataObjectSessionKeysClone = {};\n var fields = (0, _keys2.default)(sessionKeys);\n if (fields) {\n try {\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n dataObjectSessionKeysClone[field] = {};\n var arrayValues = JSON.parse('[' + sessionKeys[field].sessionKey + ']');\n dataObjectSessionKeysClone[field].sessionKey = new Uint8Array(arrayValues);\n dataObjectSessionKeysClone[field].isToEncrypt = sessionKeys[field].isToEncrypt;\n }\n } catch (err) {\n console.error('_chatkeysToArrayCloner:err', err);\n }\n }\n return dataObjectSessionKeysClone;\n}\n\nfunction parseMessageURL(URL) {\n var splitedToURL = URL.split('/');\n if (splitedToURL.length <= 6) {\n return splitedToURL[0] + '//' + splitedToURL[2] + '/' + splitedToURL[3];\n } else {\n return splitedToURL[0] + '//' + splitedToURL[2] + '/' + splitedToURL[3] + '/' + splitedToURL[4];\n }\n}\n\nfunction availableSpace(usage, quota) {\n var available = (usage / quota).toFixed(2);\n return {\n quota: quota,\n usage: usage,\n percent: Number(available)\n };\n}\n\n/**\n* Encodes a JS object to base 64 encode\n* @param {Object} value byteArray value\n* @return {string} encoded value\n*/\nfunction encode(value) {\n try {\n var stringValue = stringify(value);\n return btoa(stringValue);\n } catch (err) {\n console.error('[Utils.encode:err] ' + err);\n throw err;\n }\n}\n\n/**\n * Decode a base64 string to object\n * @param {string_b64} value value encoded in base 64\n * @return {Object} decodedValue\n */\nfunction decode(value) {\n try {\n return JSON.parse(atob(value));\n } catch (err) {\n console.log('[Utils.decode:err] ' + err);\n throw err;\n }\n}\n\n/**\n* Decode a base64 string to Uint8Array\n* @param {string_b64} value byteArray value\n* @return {Uint8Array} encoded value\n*/\nfunction decodeToUint8Array(value) {\n try {\n return new Uint8Array(decode(value));\n } catch (err) {\n console.error('[Utils.decodeToUint8Array:err] ' + err);\n throw err;\n }\n}\n\n/**\n* Converts a JS object to string\n* NOTE: Special conversion for Uint8Arrays\n* @param {Object} value byteArray value\n* @return {Uint8Array} encoded value\n*/\nfunction stringify(value) {\n try {\n var stringValue = void 0;\n if (value.constructor === Uint8Array) {\n stringValue = '[' + value.toString() + ']'; // the [] is for JSON.parse compatibility\n } else {\n stringValue = (0, _stringify2.default)(value);\n }\n return stringValue;\n } catch (err) {\n console.error('[Utils.stringify:err] ' + err);\n throw err;\n }\n}\n\n/**\n* Converts a stringified object to object\n* @param {String} value byteArray value\n* @return {Object} encoded value\n*/\nfunction parse(value) {\n try {\n return JSON.parse(value);\n } catch (err) {\n console.error('[Utils.parse:err]' + err);\n console.trace();\n console.error('The value that cause the error:', value);\n throw err;\n }\n}\n\n/**\n* Converts a stringified object to object\n* @param {String} value byteArray value\n* @return {Uint8Array} encoded value\n*/\nfunction parseToUint8Array(value) {\n try {\n return new Uint8Array(parse(value));\n } catch (err) {\n console.error('[Utils.parseToUint8Array:err]' + err);\n throw err;\n }\n}\n\n/**\n * filter the messages to hash, by removing some fields not generated by the runtime core\n * @param {Message} message message\n * @param {String} decryptedValue (Optional) value from body.value in case it originally comes encrypted\n * @param {JSON} identity(Optional) add the hyperty identity associated in case is not added to the initial message\n * @return {Message} new message filtered\n */\nfunction filterMessageToHash(message, decryptedValue, identity) {\n return {\n type: message.type,\n from: message.from,\n to: message.to,\n body: {\n identity: identity || message.body.identity,\n value: decryptedValue || message.body.value,\n handshakePhase: message.body.handshakePhase\n }\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL3V0aWxzL3V0aWxzLmpzP2JlNzMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXG4qXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4qXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4qXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbioqL1xuLyoqXG4gKiBTdXBwb3J0IG1vZHVsZSB3aXRoIHNvbWUgZnVuY3Rpb25zIHdpbGwgYmUgdXNlZnVsXG4gKiBAbW9kdWxlIHV0aWxzXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBkaXZpZGVVUkxcbiAqIEB0eXBlIE9iamVjdFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHR5cGUgVGhlIHR5cGUgb2YgVVJMXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZG9tYWluIFRoZSBkb21haW4gb2YgVVJMXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaWRlbnRpdHkgVGhlIGlkZW50aXR5IG9mIFVSTFxuICovXG5cbi8qKlxuICogRGl2aWRlIGFuIHVybCBpbiB0eXBlLCBkb21haW4gYW5kIGlkZW50aXR5XG4gKiBAcGFyYW0gIHtVUkwuVVJMfSB1cmwgLSB1cmwgYWRkcmVzc1xuICogQHJldHVybiB7ZGl2aWRlVVJMfSB0aGUgcmVzdWx0IG9mIGRpdmlkZVVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGl2aWRlVVJMKHVybCkge1xuXG4gIGZ1bmN0aW9uIHJlY3Vyc2UodmFsdWUpIHtcbiAgICBjb25zdCByZWdleCA9IC8oW2EtekEtWi1dKikoOlxcL1xcLyg/OlxcLik/fDopKFstYS16QS1aMC05QDolLl8rfiM9XXsyLDI1Nn0pKFstYS16QS1aMC05QDolLl8rfiM9L10qKS9naTtcbiAgICBjb25zdCBzdWJzdCA9ICckMSwkMywkNCc7XG4gICAgbGV0IHBhcnRzID0gdmFsdWUucmVwbGFjZShyZWdleCwgc3Vic3QpLnNwbGl0KCcsJyk7XG4gICAgcmV0dXJuIHBhcnRzO1xuICB9XG5cbiAgbGV0IHBhcnRzID0gcmVjdXJzZSh1cmwpO1xuXG4gIC8vIElmIHRoZSB1cmwgaGFzIG5vIHNjaGVtZVxuICBpZiAocGFydHNbMF0gPT09IHVybCAmJiAhcGFydHNbMF0uaW5jbHVkZXMoJ0AnKSkge1xuXG4gICAgbGV0IHJlc3VsdCA9IHtcbiAgICAgIHR5cGU6ICcnLFxuICAgICAgZG9tYWluOiB1cmwsXG4gICAgICBpZGVudGl0eTogJydcbiAgICB9O1xuXG4gICAgY29uc29sZS53YXJuKCdbRGl2aWRlVVJMXSBEaXZpZGVVUkwgZG9uXFwndCBzdXBwb3J0IHVybCB3aXRob3V0IHNjaGVtZS4gUGxlYXNlIHJldmlldyB5b3VyIHVybCBhZGRyZXNzJywgdXJsKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBjaGVjayBpZiB0aGUgdXJsIGhhcyB0aGUgc2NoZW1lIGFuZCBpbmNsdWRlcyBhbiBAXG4gIGlmIChwYXJ0c1swXSA9PT0gdXJsICYmIHBhcnRzWzBdLmluY2x1ZGVzKCdAJykpIHtcbiAgICBsZXQgc2NoZW1lID0gcGFydHNbMF0gPT09IHVybCA/ICdzbXRwJyA6IHBhcnRzWzBdO1xuICAgIHBhcnRzID0gcmVjdXJzZShzY2hlbWUgKyAnOi8vJyArIHBhcnRzWzBdKTtcbiAgfVxuXG4gIC8vIGlmIHRoZSBkb21haW4gaW5jbHVkZXMgYW4gQCwgZGl2aWRlIGl0IHRvIGRvbWFpbiBhbmQgaWRlbnRpdHkgcmVzcGVjdGl2ZWx5XG4gIGlmIChwYXJ0c1sxXS5pbmNsdWRlcygnQCcpKSB7XG4gICAgcGFydHNbMl0gPSBwYXJ0c1swXSArICc6Ly8nICsgcGFydHNbMV07XG4gICAgcGFydHNbMV0gPSBwYXJ0c1sxXS5zdWJzdHIocGFydHNbMV0uaW5kZXhPZignQCcpICsgMSk7XG4gIH0gXHQvKmVsc2UgaWYgKHBhcnRzWzJdLmluY2x1ZGVzKCcvJykpIHtcbiAgICBwYXJ0c1syXSA9IHBhcnRzWzJdLnN1YnN0cihwYXJ0c1syXS5sYXN0SW5kZXhPZignLycpKzEpO1xuICB9Ki9cblxuICBsZXQgcmVzdWx0ID0ge1xuICAgIHR5cGU6IHBhcnRzWzBdLFxuICAgIGRvbWFpbjogcGFydHNbMV0sXG4gICAgaWRlbnRpdHk6IHBhcnRzWzJdXG4gIH07XG5cbiAgcmV0dXJuIHJlc3VsdDtcblxufVxuXG4vKipcbiAqIENoZWNrIGlmIGFuIE9iamVjdCBpcyBlbXB0eVxuICogQHBhcmFtICB7T2JqZWN0fSBvYmplY3QgT2JqZWN0IHRvIGJlIGNoZWNrZWRcbiAqIEByZXR1cm4ge0Jvb2xlYW59ICAgICAgIHN0YXR1cyBvZiBPYmplY3QsIGVtcHR5IG9yIG5vdCAodHJ1ZXxmYWxzZSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoID4gMCA/IGZhbHNlIDogdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlY29uZHNTaW5jZUVwb2NoKCkge1xuICByZXR1cm4gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XG59XG5cblxuLyoqXG4gKiBNYWtlIGEgQ09QWSBvZiB0aGUgb3JpZ2luYWwgZGF0YVxuICogQHBhcmFtICB7T2JqZWN0fSAgb2JqIC0gb2JqZWN0IHRvIGJlIGNsb25lZFxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcENsb25lKG9iaikge1xuICAvL1RPRE86IHNpbXBsZSBidXQgaW5lZmZpY2llbnQgSlNPTiBkZWVwIGNsb25lLi4uXG4gIGlmIChvYmopIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlUGF0aEZyb21VUkwodXJsKSB7XG4gIGxldCBzcGxpdFVSTCA9IHVybC5zcGxpdCgnLycpO1xuICByZXR1cm4gc3BsaXRVUkxbMF0gKyAnLy8nICsgc3BsaXRVUkxbMl0gKyAnLycgKyBzcGxpdFVSTFszXTtcbn1cblxuLyoqXG4gKiBPYnRhaW5zIHRoZSB1c2VyIFVSTCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEgZ2l2ZW4gZW1haWxcbiAqIEBwYXJhbSAge3N0cmluZ30gdXNlckVtYWlsIFRoZSB1c2VyIGVtYWlsXG4gKiBAcmV0dXJuIHtVUkwuVVJMfSB1c2VyVVJMIFRoZSB1c2VyIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlclVSTEZyb21FbWFpbCh1c2VyRW1haWwpIHtcbiAgbGV0IGluZGV4T2ZBdCA9IHVzZXJFbWFpbC5pbmRleE9mKCdAJyk7XG4gIHJldHVybiAndXNlcjovLycgKyB1c2VyRW1haWwuc3Vic3RyaW5nKGluZGV4T2ZBdCArIDEsIHVzZXJFbWFpbC5sZW5ndGgpICsgJy8nICsgdXNlckVtYWlsLnN1YnN0cmluZygwLCBpbmRleE9mQXQpO1xufVxuXG4vKipcbiAqIE9idGFpbnMgdGhlIHVzZXIgZW1haWwgdGhhdCBjb3JyZXNwb25kcyB0byBhIGdpdmVuIFVSTFxuICogQHBhcmFtICB7VVJMLlVSTH0gdXNlclVSTCBUaGUgdXNlciBVUkxcbiAqIEByZXR1cm4ge3N0cmluZ30gdXNlckVtYWlsIFRoZSB1c2VyIGVtYWlsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRVc2VyRW1haWxGcm9tVVJMKHVzZXJVUkwpIHtcbiAgbGV0IHVybCA9IGRpdmlkZVVSTCh1c2VyVVJMKTtcbiAgcmV0dXJuIHVybC5pZGVudGl0eS5yZXBsYWNlKCcvJywgJycpICsgJ0AnICsgdXJsLmRvbWFpbjsgLy8gaWRlbnRpdHkgZmllbGQgaGFzICcvZXhhbXBsZUlEJyBpbnN0ZWFkIG9mICdleGFtcGxlSUQnXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHVzZXIgaWRlbnRpZmllciBpcyBhbHJlYWR5IGluIHRoZSBVUkwgZm9ybWF0LCBpZiBub3QsIGNvbnZlcnQgdG8gVVJMIGZvcm1hdFxuICogQHBhcmFtICB7c3RyaW5nfSAgIGlkZW50aWZpZXIgIHVzZXIgaWRlbnRpZmllclxuICogQHJldHVybiB7c3RyaW5nfSAgIHVzZXJVUkwgICAgdGhlIHVzZXIgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9Vc2VyVVJMKGlkZW50aWZpZXIpIHtcblxuICAvLyBjaGVjayBpZiB0aGUgaWRlbnRpZmllciBpcyBhbHJlYWR5IGluIHRoZSB1cmwgZm9ybWF0XG4gIGlmIChpZGVudGlmaWVyLnN1YnN0cmluZygwLCA3KSA9PT0gJ3VzZXI6Ly8nKSB7XG4gICAgbGV0IGRpdmlkZWRVUkwgPSBkaXZpZGVVUkwoaWRlbnRpZmllcik7XG5cbiAgICAvL2NoZWNrIGlmIHRoZSB1cmwgaXMgd2VsbCBmb3JtYXRlZFxuICAgIGlmIChkaXZpZGVkVVJMLmRvbWFpbiAmJiBkaXZpZGVkVVJMLmlkZW50aXR5KSB7XG4gICAgICByZXR1cm4gaWRlbnRpZmllcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgJ3VzZXJVUkwgd2l0aCB3cm9uZyBmb3JtYXQnO1xuICAgIH1cblxuICAvL2lmIG5vdCwgY29udmVydCB0aGUgdXNlciBlbWFpbCB0byBVUkwgZm9ybWF0XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdldFVzZXJVUkxGcm9tRW1haWwoaWRlbnRpZmllcik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0YU9iamVjdFVSTCh1cmwpIHtcbiAgbGV0IHNjaGVtYXNUb0lnbm9yZSA9IFsnZG9tYWluLWlkcCcsICdydW50aW1lJywgJ2RvbWFpbicsICdoeXBlcnR5J107XG4gIGxldCBzcGxpdFVSTCA9ICh1cmwpLnNwbGl0KCc6Ly8nKTtcbiAgbGV0IHVybFNjaGVtYSA9IHNwbGl0VVJMWzBdO1xuXG4gIHJldHVybiBzY2hlbWFzVG9JZ25vcmUuaW5kZXhPZih1cmxTY2hlbWEpID09PSAtMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGVnYWN5KHVybCkge1xuICBpZiAodXJsLnNwbGl0KCdAJykubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVUkwodXJsKSB7XG4gIHJldHVybiAodXJsKS5zcGxpdCgnLycpLmxlbmd0aCA+PSAzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVc2VyVVJMKHVybCkge1xuICByZXR1cm4gZGl2aWRlVVJMKHVybCkudHlwZSA9PT0gJ3VzZXInO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIeXBlcnR5VVJMKHVybCkge1xuICByZXR1cm4gZGl2aWRlVVJMKHVybCkudHlwZSA9PT0gJ2h5cGVydHknO1xufVxuXG4vKipcbiAqIGdldCBpbmZvcm1hdGlvbiByZWxhdGl2ZSBlYWNoIGNvbXBvbmVudCBjb25maWd1cmVkIG9uIHJ1bnRpbWUgY29uZmlndXJhdGlvbjtcbiAqIEBwYXJhbSAge29iamVjdH0gY29uZmlndXJhdGlvbiBvYmplY3Qgd2l0aCBhbGwgY29uZmlndXJhdGlvblxuICogQHBhcmFtICB7c3RyaW5nfSBjb21wb25lbnQgICAgIHN0cmluZyB3aXRoIHRoZSBjb21wb25lbnQgdG8gZ2V0IHRoZSBjb25maWd1cmF0aW9uLCBsaWtlLCBydW50aW1lVVJMUywgY2F0YWxvZ3VlVVJMcywgbXNnTm9kZVVSTCwgZG9tYWluUmVnaXN0cnlVUkw7XG4gKiBAcGFyYW0gIHtzdHJpbmd9IHJlc291cmNlICAgICAgdHlwZSBvZiByZXNvdXJjZSB0byBnZXQsIGxpa2UsIGNhdGFsb2d1ZSwgcnVudGltZVVBLCBwcm90b2NvbHN0dWIsIGlkcFByb3h5XG4gKiBAcmV0dXJuIHtvYmplY3R9ICAgICAgICAgICAgICAgcmV0dXJuIGFuIG9iamVjdCB3aXRoIGFsbCBjb25maWd1cmF0aW9ucztcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ3VyYXRpb25SZXNvdXJjZXMoY29uZmlndXJhdGlvbiwgY29tcG9uZW50LCByZXNvdXJjZSkge1xuICBsZXQgb2JqZWN0UmVzb3VyY2UgPSBjb25maWd1cmF0aW9uW2NvbXBvbmVudF07XG4gIGxldCByZXNvdXJjZVR5cGUgPSBvYmplY3RSZXNvdXJjZVtyZXNvdXJjZV07XG5cbiAgcmV0dXJuIHJlc291cmNlVHlwZTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIGZ1bGwgdXJsIHdpdGggdGhlIHJ1bnRpbWUgY29uZmlndXJhdGlvbjtcbiAqIEBwYXJhbSAge29iamVjdH0gY29uZmlndXJhdGlvbiBvYmplY3Qgd2l0aCBhbGwgY29uZmlndXJhdGlvblxuICogQHBhcmFtICB7c3RyaW5nfSBjb21wb25lbnQgICAgIHN0cmluZyB3aXRoIHRoZSBjb21wb25lbnQgdG8gZ2V0IHRoZSBjb25maWd1cmF0aW9uLCBsaWtlLCBydW50aW1lVVJMUywgY2F0YWxvZ3VlVVJMcywgbXNnTm9kZVVSTCwgZG9tYWluUmVnaXN0cnlVUkw7XG4gKiBAcGFyYW0gIHtzdHJpbmd9IHJlc291cmNlICAgICAgdHlwZSBvZiByZXNvdXJjZSB0byBnZXQsIGxpa2UsIGNhdGFsb2d1ZSwgcnVudGltZVVBLCBwcm90b2NvbHN0dWIsIGlkcFByb3h5XG4gKiBAcGFyYW0gIHtzdHJpbmd9IHR5cGUgICAgICAgICAgcmVzb3VyY2UgdG8gZ2V0LCBsaWtlIGEgaHlwZXJ0eSBuYW1lIG9yIHByb3RvY29sc3R1YiBuYW1lO1xuICogQHBhcmFtICB7Ym9vbGVhbn0gdXNlRmFsbGJhY2sgIGlmIHRydWUgdGhlIGZ1bmN0aW9uIHdpbGwgY2hlY2sgaWYgaGF2ZSBhIGZhbGxiYWNrIHVybDtcbiAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgICAgICAgICBwYXJ0aWFsIHVybCB0byBjb250YWN0IHRoZSByZXNvdXJjZTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVVJMKGNvbmZpZ3VyYXRpb24sIGNvbXBvbmVudCwgcmVzb3VyY2UsIHR5cGUsIHVzZUZhbGxiYWNrID0gZmFsc2UpIHtcbiAgbGV0IG9iamVjdFJlc291cmNlID0gY29uZmlndXJhdGlvbltjb21wb25lbnRdO1xuICBsZXQgdXJsO1xuXG4gIGlmICghb2JqZWN0UmVzb3VyY2UuaGFzT3duUHJvcGVydHkocmVzb3VyY2UpKSB7XG4gICAgdGhyb3cgRXJyb3IoJ1RoZSBjb25maWd1cmF0aW9uICcgKyBKU09OLnN0cmluZ2lmeShvYmplY3RSZXNvdXJjZSwgJycsIDIpICsgJyBkb25cXCd0IGhhdmUgdGhlICcgKyByZXNvdXJjZSArICcgcmVzb3VyY2UgeW91IGFyZSBsb29raW5nIGZvcicpO1xuICB9XG5cbiAgbGV0IHJlc291cmNlVHlwZSA9IG9iamVjdFJlc291cmNlW3Jlc291cmNlXTtcblxuICBpZiAodHlwZSkge1xuICAgIHVybCA9IHJlc291cmNlVHlwZS5wcmVmaXggKyBjb25maWd1cmF0aW9uLmRvbWFpbiArIHJlc291cmNlVHlwZS5zdWZmaXggKyB0eXBlO1xuICAgIGlmIChyZXNvdXJjZVR5cGUuaGFzT3duUHJvcGVydHkoJ2ZhbGxiYWNrJykgJiYgdXNlRmFsbGJhY2spIHtcbiAgICAgIGlmIChyZXNvdXJjZVR5cGUuZmFsbGJhY2suaW5kZXhPZignJWRvbWFpbiUnKSkge1xuICAgICAgICB1cmwgPSByZXNvdXJjZVR5cGUuZmFsbGJhY2sucmVwbGFjZSgvKCVkb21haW4lKS9nLCBjb25maWd1cmF0aW9uLmRvbWFpbikgKyB0eXBlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXJsID0gcmVzb3VyY2VUeXBlLmZhbGxiYWNrICsgdHlwZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdXJsID0gcmVzb3VyY2VUeXBlLnByZWZpeCArIGNvbmZpZ3VyYXRpb24uZG9tYWluICsgcmVzb3VyY2VUeXBlLnN1ZmZpeDtcbiAgfVxuXG4gIC8vIGNvbnNvbGUubG9nKHVybCk7XG5cbiAgcmV0dXJuIHVybDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIEdsb2JhbCBVbmlxdWUgSURcbiAqXG4gKiBAcmV0dXJucyBTdHJpbmc7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUdVSUQoKSB7XG5cbiAgZnVuY3Rpb24gczQoKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoKDEgKyBNYXRoLnJhbmRvbSgpKSAqIDB4MTAwMDApXG4gICAgICAudG9TdHJpbmcoMTYpXG4gICAgICAuc3Vic3RyaW5nKDEpO1xuICB9XG5cbiAgcmV0dXJuIHM0KCkgKyBzNCgpICsgJy0nICsgczQoKSArICctJyArIHM0KCkgKyAnLScgKyBzNCgpICsgJy0nICsgczQoKSArIHM0KCkgKyBzNCgpO1xuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVc2VySWRlbnRpdHlEb21haW4odXJsKSB7XG4gIGxldCBkaXZpZGVkVVJMID0gZGl2aWRlVVJMKHVybCk7XG4gIGxldCBzcGxpdGVkRG9tYWluID0gZGl2aWRlZFVSTC5kb21haW4uc3BsaXQoJy4nKTtcbiAgbGV0IHNwbGl0ZWRMZW5ndGggPSBzcGxpdGVkRG9tYWluLmxlbmd0aDtcbiAgaWYgKHNwbGl0ZWRMZW5ndGggPT0gMSkge1xuICAgIHJldHVybiBzcGxpdGVkRG9tYWluW3NwbGl0ZWRMZW5ndGggLSAxXTtcbiAgfVxuICBsZXQgZG9tYWluID0gc3BsaXRlZERvbWFpbltzcGxpdGVkTGVuZ3RoIC0gMl0gKyAnLicgKyBzcGxpdGVkRG9tYWluW3NwbGl0ZWRMZW5ndGggLSAxXTtcbiAgcmV0dXJuIGRvbWFpbjtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBVUkwgaXMgZnJvbSBhIGJhY2tlbmQgc2VydmljZVxuICogQHBhcmFtICB7c3RyaW5nfSB1cmwgICAgIFVSTCB0byBiZSBwcm9jZXNzZWRcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQmFja2VuZFNlcnZpY2VVUkwodXJsKSB7XG4gIGxldCBkaXZpZGVkVVJMID0gZGl2aWRlVVJMKHVybCk7XG4gIGxldCBzcGxpdGVkRG9tYWluID0gZGl2aWRlZFVSTC5kb21haW4uc3BsaXQoJy4nKTtcbiAgbGV0IGJhY2tlbmRTY2hlbWVzID0gWydkb21haW4nLCAnZ2xvYmFsJywgJ2RvbWFpbi1pZHAnXTsgLy8gc2hvdWxkIGJlIGRlZmluZWQgaW4gdGhlIHJ1bnRpbWUgY29uZmlndXJhdGlvblxuICBsZXQgYmFja2VuZFN1YkRvbWFpbnMgPSBbJ3JlZ2lzdHJ5JywgJ21zZy1ub2RlJ107IC8vIHNob3VsZCBiZSBkZWZpbmVkIGluIHRoZSBydW50aW1lIGNvbmZpZ3VyYXRpb25cbiAgbGV0IHN1YkRvbWFpbjtcblxuICBpZiAoc3BsaXRlZERvbWFpbi5sZW5ndGggPiAxKSB7XG4gICAgc3ViRG9tYWluID0gc3BsaXRlZERvbWFpbi5maWx0ZXIoaXRlbSA9PiBiYWNrZW5kU3ViRG9tYWlucy5pbmRleE9mKGl0ZW0pICE9PSAtMSlbMF07XG4gIH1cblxuICBpZiAoc3ViRG9tYWluICYmIGJhY2tlbmRTdWJEb21haW5zLmluZGV4T2Yoc3ViRG9tYWluKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChkaXZpZGVkVVJMLnR5cGUpIHtcbiAgICByZXR1cm4gKGJhY2tlbmRTY2hlbWVzLmluZGV4T2YoZGl2aWRlZFVSTC50eXBlKSAhPT0gLTEpO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGl2aWRlRW1haWwoZW1haWwpIHtcbiAgbGV0IGluZGV4T2ZBdCA9IGVtYWlsLmluZGV4T2YoJ0AnKTtcblxuICBsZXQgcmVzdWx0ID0ge1xuICAgIHVzZXJuYW1lOiBlbWFpbC5zdWJzdHJpbmcoMCwgaW5kZXhPZkF0KSxcbiAgICBkb21haW46IGVtYWlsLnN1YnN0cmluZyhpbmRleE9mQXQgKyAxLCBlbWFpbC5sZW5ndGgpXG4gIH07XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduKG9iaiwga2V5UGF0aCwgdmFsdWUpIHtcblxuICBpZiAoIW9iaikgb2JqID0ge307XG4gIGlmICh0eXBlb2Yoa2V5UGF0aCkgPT09ICdzdHJpbmcnKSBrZXlQYXRoID0gcGFyc2VBdHRyaWJ1dGVzKGtleVBhdGgpO1xuXG4gIGxldCBsYXN0S2V5SW5kZXggPSBrZXlQYXRoLmxlbmd0aCAtIDE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0S2V5SW5kZXg7ICsraSkge1xuICAgIGxldCBrZXkgPSBrZXlQYXRoW2ldO1xuICAgIGlmICghKGtleSBpbiBvYmopKSB7XG4gICAgICBvYmpba2V5XSA9IHt9O1xuICAgIH1cblxuICAgIG9iaiA9IG9ialtrZXldO1xuXG4gIH1cblxuICBvYmpba2V5UGF0aFtsYXN0S2V5SW5kZXhdXSA9IHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRPYmplY3RVUkwoZGF0YU9iamVjdFVSTCkge1xuICBjb25zb2xlLmluZm8oJ1t1dGlscyAtIHNwbGl0T2JqZWN0VVJMXTogJywgZGF0YU9iamVjdFVSTCk7XG5cbiAgbGV0IHNwbGl0ZWRVUkwgPSBkYXRhT2JqZWN0VVJMLnNwbGl0KCcvJyk7XG4gIGxldCB1cmwgPSBzcGxpdGVkVVJMWzBdICsgJy8vJyArIHNwbGl0ZWRVUkxbMl0gKyAnLycgKyBzcGxpdGVkVVJMWzNdO1xuICBsZXQgcmVzb3VyY2UgPSBzcGxpdGVkVVJMWzVdO1xuXG4gIGxldCByZXN1bHQgPSB7XG4gICAgdXJsOiB1cmwsXG4gICAgcmVzb3VyY2U6IHJlc291cmNlXG4gIH07XG5cbiAgY29uc29sZS5pbmZvKCdbdXRpbHMgLSBzcGxpdE9iamVjdFVSTF06ICcsIHJlc3VsdCk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQXR0cmlidXRlKHBhdGgpIHtcblxuICBsZXQgcmVnZXggPSAvKCgoW2EtekEtWl0rKTpcXC9cXC8oWzAtOWEtekEtWl1bLVxcd10qWzAtOWEtekEtWl1cXC4pK1thLXpBLVpdezIsOX0pXFwvW2EtekEtWjAtOS5dK0BbYS16QS1aMC05XSsoLSk/W2EtekEtWjAtOV0rKFxcLik/W2EtekEtWjAtOV17MiwxMH0/XFwuW2EtekEtWl17MiwxMH0pKC4rKD89LmlkZW50aXR5KSk/L2dtO1xuXG4gIGxldCBsaXN0ID0gW107XG4gIGxldCBmaW5hbCA9IFtdO1xuICBsZXQgdGVzdCA9IHBhdGgubWF0Y2gocmVnZXgpO1xuXG4gIGlmICh0ZXN0ID09IG51bGwpIHtcbiAgICBmaW5hbCA9IHBhdGguc3BsaXQoJy4nKTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgbTtcbiAgICB3aGlsZSAoKG0gPSByZWdleC5leGVjKHBhdGgpKSAhPT0gbnVsbCkge1xuICAgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgaW5maW5pdGUgbG9vcHMgd2l0aCB6ZXJvLXdpZHRoIG1hdGNoZXNcbiAgICAgIGlmIChtLmluZGV4ID09PSByZWdleC5sYXN0SW5kZXgpIHtcbiAgICAgICAgcmVnZXgubGFzdEluZGV4Kys7XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSByZXN1bHQgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGBtYC12YXJpYWJsZS5cbiAgICAgIG0uZm9yRWFjaCgobWF0Y2gsIGdyb3VwSW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGdyb3VwSW5kZXggPT09IDApIHtcbiAgICAgICAgICBsaXN0LnB1c2gobWF0Y2gpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdDtcbiAgICBsaXN0LmZvckVhY2goKHVybCkgPT4ge1xuXG4gICAgICByZXN1bHQgPSBwYXRoLnJlcGxhY2UodXJsLCAnKi0qJyk7XG4gICAgICBmaW5hbCA9IHJlc3VsdC5zcGxpdCgnLicpLm1hcCgoaXRlbSkgPT4ge1xuXG4gICAgICAgIGlmIChpdGVtID09PSAnKi0qJykgeyByZXR1cm4gdXJsOyB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKCdbUnVudGltZUNvcmUuVXRpbHMuY2hlY2tBdHRyaWJ1dGVdJywgZmluYWwpO1xuICByZXR1cm4gZmluYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUF0dHJpYnV0ZXMocGF0aCkge1xuICBsZXQgcmVnZXggPSAvKFswLTlhLXpBLVpdWy1cXHddKik6XFwvXFwvL2c7XG5cbiAgbGV0IHN0cmluZzMgPSAnaWRlbnRpdHknO1xuXG4gIGlmICghcGF0aC5pbmNsdWRlcygnOi8vJykpIHtcbiAgICByZXR1cm4gKHBhdGguc3BsaXQoJy4nKSk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IHN0cmluZzEgPSBwYXRoLnNwbGl0KHJlZ2V4KVswXTtcblxuICAgIGxldCBhcnJheTEgPSBzdHJpbmcxLnNwbGl0KCcuJyk7XG5cbiAgICBsZXQgc3RyaW5nMiA9IHBhdGgucmVwbGFjZShzdHJpbmcxLCAnJyk7XG5cbiAgICBpZiAocGF0aC5pbmNsdWRlcyhzdHJpbmczKSkge1xuXG4gICAgICBsZXQgYXJyYXkyID0gc3RyaW5nMi5zcGxpdChzdHJpbmczICsgJy4nKTtcblxuICAgICAgY29uc29sZS5sb2coJ2FycmF5MiAnICsgYXJyYXkyKTtcblxuICAgICAgc3RyaW5nMiA9IGFycmF5MlswXS5zbGljZSgnLicsIC0xKTtcblxuICAgICAgYXJyYXkyID0gYXJyYXkyWzFdLnNwbGl0KCcuJyk7XG5cbiAgICAgIGFycmF5MS5wdXNoKHN0cmluZzIsIHN0cmluZzMpO1xuXG4gICAgICBhcnJheTEgPSBhcnJheTEuY29uY2F0KGFycmF5Mik7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgYXJyYXkxLnB1c2goc3RyaW5nMik7XG5cbiAgICB9XG5cbiAgICByZXR1cm4gKGFycmF5MS5maWx0ZXIoQm9vbGVhbikpO1xuXG4gIH1cblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eShvYmopIHtcbiAgZm9yICh2YXIgcHJvcCBpbiBvYmopIHtcblxuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmopID09PSBKU09OLnN0cmluZ2lmeSh7fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGF0a2V5c1RvU3RyaW5nQ2xvbmVyKHNlc3Npb25LZXlzKSB7XG4gIGxldCBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZSA9IHt9O1xuICBsZXQgZmllbGRzID0gT2JqZWN0LmtleXMoc2Vzc2lvbktleXMpO1xuICBpZiAoZmllbGRzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgIGZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgZmllbGQgPSBmaWVsZHNbaV07XG4gICAgICAgIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lW2ZpZWxkXSA9IHt9O1xuICAgICAgICBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZVtmaWVsZF0uc2Vzc2lvbktleSA9IHNlc3Npb25LZXlzW2ZpZWxkXS5zZXNzaW9uS2V5LnRvU3RyaW5nKCk7XG4gICAgICAgIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lW2ZpZWxkXS5pc1RvRW5jcnlwdCA9IHNlc3Npb25LZXlzW2ZpZWxkXS5pc1RvRW5jcnlwdDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ19jaGF0a2V5c1RvU3RyaW5nQ2xvbmVyOmVycicsIGVycik7XG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoYXRrZXlzVG9BcnJheUNsb25lcihzZXNzaW9uS2V5cykge1xuICBsZXQgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmUgPSB7fTtcbiAgbGV0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHNlc3Npb25LZXlzKTtcbiAgaWYgKGZpZWxkcykge1xuICAgIHRyeSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICBmaWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGZpZWxkID0gZmllbGRzW2ldO1xuICAgICAgICBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZVtmaWVsZF0gPSB7fTtcbiAgICAgICAgbGV0IGFycmF5VmFsdWVzID0gSlNPTi5wYXJzZSgnWycgKyBzZXNzaW9uS2V5c1tmaWVsZF0uc2Vzc2lvbktleSArICddJyk7XG4gICAgICAgIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lW2ZpZWxkXS5zZXNzaW9uS2V5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlWYWx1ZXMpO1xuICAgICAgICBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZVtmaWVsZF0uaXNUb0VuY3J5cHQgPSBzZXNzaW9uS2V5c1tmaWVsZF0uaXNUb0VuY3J5cHQ7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdfY2hhdGtleXNUb0FycmF5Q2xvbmVyOmVycicsIGVycik7XG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhT2JqZWN0U2Vzc2lvbktleXNDbG9uZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTWVzc2FnZVVSTChVUkwpIHtcbiAgbGV0IHNwbGl0ZWRUb1VSTCA9IFVSTC5zcGxpdCgnLycpO1xuICBpZiAoc3BsaXRlZFRvVVJMLmxlbmd0aCA8PSA2KSB7XG4gICAgcmV0dXJuIHNwbGl0ZWRUb1VSTFswXSArICcvLycgKyBzcGxpdGVkVG9VUkxbMl0gKyAnLycgKyBzcGxpdGVkVG9VUkxbM107XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHNwbGl0ZWRUb1VSTFswXSArICcvLycgKyBzcGxpdGVkVG9VUkxbMl0gKyAnLycgKyBzcGxpdGVkVG9VUkxbM10gKyAnLycgKyBzcGxpdGVkVG9VUkxbNF07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF2YWlsYWJsZVNwYWNlKHVzYWdlLCBxdW90YSkge1xuICBjb25zdCBhdmFpbGFibGUgPSAodXNhZ2UgLyBxdW90YSkudG9GaXhlZCgyKTtcbiAgcmV0dXJuIHtcbiAgICBxdW90YTogcXVvdGEsXG4gICAgdXNhZ2U6IHVzYWdlLFxuICAgIHBlcmNlbnQ6IE51bWJlcihhdmFpbGFibGUpXG4gIH07XG59XG5cbi8qKlxuKiBFbmNvZGVzIGEgSlMgb2JqZWN0IHRvIGJhc2UgNjQgZW5jb2RlXG4qIEBwYXJhbSAgIHtPYmplY3R9ICAgIHZhbHVlICAgIGJ5dGVBcnJheSB2YWx1ZVxuKiBAcmV0dXJuICB7c3RyaW5nfSAgIGVuY29kZWQgdmFsdWVcbiovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlKHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgbGV0IHN0cmluZ1ZhbHVlID0gc3RyaW5naWZ5KHZhbHVlKTtcbiAgICByZXR1cm4gYnRvYShzdHJpbmdWYWx1ZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1tVdGlscy5lbmNvZGU6ZXJyXSAnICsgZXJyKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLyoqXG4gICogRGVjb2RlIGEgYmFzZTY0IHN0cmluZyB0byBvYmplY3RcbiAgKiBAcGFyYW0gICB7c3RyaW5nX2I2NH0gICAgdmFsdWUgICAgdmFsdWUgZW5jb2RlZCBpbiBiYXNlIDY0XG4gICogQHJldHVybiAge09iamVjdH0gZGVjb2RlZFZhbHVlXG4gICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlKHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXRvYih2YWx1ZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmxvZygnW1V0aWxzLmRlY29kZTplcnJdICcgKyBlcnIpO1xuICAgIHRocm93IGVycjtcbiAgfVxufVxuXG4vKipcbiogRGVjb2RlIGEgYmFzZTY0IHN0cmluZyB0byBVaW50OEFycmF5XG4qIEBwYXJhbSAgIHtzdHJpbmdfYjY0fSAgICB2YWx1ZSAgICBieXRlQXJyYXkgdmFsdWVcbiogQHJldHVybiAge1VpbnQ4QXJyYXl9ICAgZW5jb2RlZCB2YWx1ZVxuKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVUb1VpbnQ4QXJyYXkodmFsdWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZGVjb2RlKHZhbHVlKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1tVdGlscy5kZWNvZGVUb1VpbnQ4QXJyYXk6ZXJyXSAnICsgZXJyKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLyoqXG4qIENvbnZlcnRzIGEgSlMgb2JqZWN0IHRvIHN0cmluZ1xuKiBOT1RFOiBTcGVjaWFsIGNvbnZlcnNpb24gZm9yIFVpbnQ4QXJyYXlzXG4qIEBwYXJhbSAgIHtPYmplY3R9ICAgIHZhbHVlICAgIGJ5dGVBcnJheSB2YWx1ZVxuKiBAcmV0dXJuICB7VWludDhBcnJheX0gICBlbmNvZGVkIHZhbHVlXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeSh2YWx1ZSkge1xuICB0cnkge1xuICAgIGxldCBzdHJpbmdWYWx1ZTtcbiAgICBpZiAodmFsdWUuY29uc3RydWN0b3IgPT09IFVpbnQ4QXJyYXkpIHtcbiAgICAgIHN0cmluZ1ZhbHVlID0gJ1snICsgdmFsdWUudG9TdHJpbmcoKSArICddJzsgLy8gdGhlIFtdIGlzIGZvciBKU09OLnBhcnNlIGNvbXBhdGliaWxpdHlcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyaW5nVmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmdWYWx1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcignW1V0aWxzLnN0cmluZ2lmeTplcnJdICcgKyBlcnIpO1xuICAgIHRocm93IGVycjtcbiAgfVxufVxuXG4vKipcbiogQ29udmVydHMgYSBzdHJpbmdpZmllZCBvYmplY3QgdG8gb2JqZWN0XG4qIEBwYXJhbSAgIHtTdHJpbmd9ICAgIHZhbHVlICAgIGJ5dGVBcnJheSB2YWx1ZVxuKiBAcmV0dXJuICB7T2JqZWN0fSAgIGVuY29kZWQgdmFsdWVcbiovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UodmFsdWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1tVdGlscy5wYXJzZTplcnJdJyArIGVycik7XG4gICAgY29uc29sZS50cmFjZSgpO1xuICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSB2YWx1ZSB0aGF0IGNhdXNlIHRoZSBlcnJvcjonLCB2YWx1ZSk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbi8qKlxuKiBDb252ZXJ0cyBhIHN0cmluZ2lmaWVkIG9iamVjdCB0byBvYmplY3RcbiogQHBhcmFtICAge1N0cmluZ30gICAgdmFsdWUgICAgYnl0ZUFycmF5IHZhbHVlXG4qIEByZXR1cm4gIHtVaW50OEFycmF5fSAgIGVuY29kZWQgdmFsdWVcbiovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUb1VpbnQ4QXJyYXkodmFsdWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkocGFyc2UodmFsdWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcignW1V0aWxzLnBhcnNlVG9VaW50OEFycmF5OmVycl0nICsgZXJyKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLyoqXG4gICogZmlsdGVyIHRoZSBtZXNzYWdlcyB0byBoYXNoLCBieSByZW1vdmluZyBzb21lIGZpZWxkcyBub3QgZ2VuZXJhdGVkIGJ5IHRoZSBydW50aW1lIGNvcmVcbiAgKiBAcGFyYW0ge01lc3NhZ2V9ICBtZXNzYWdlICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVxuICAqIEBwYXJhbSB7U3RyaW5nfSAgZGVjcnlwdGVkVmFsdWUgKE9wdGlvbmFsKSAgICB2YWx1ZSBmcm9tIGJvZHkudmFsdWUgaW4gY2FzZSBpdCBvcmlnaW5hbGx5IGNvbWVzIGVuY3J5cHRlZFxuICAqIEBwYXJhbSB7SlNPTn0gIGlkZW50aXR5KE9wdGlvbmFsKSAgICBhZGQgdGhlIGh5cGVydHkgaWRlbnRpdHkgYXNzb2NpYXRlZCBpbiBjYXNlIGlzIG5vdCBhZGRlZCB0byB0aGUgaW5pdGlhbCBtZXNzYWdlXG4gICogQHJldHVybiB7TWVzc2FnZX0gIG5ldyBtZXNzYWdlIGZpbHRlcmVkXG4gICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlLCBkZWNyeXB0ZWRWYWx1ZSwgaWRlbnRpdHkpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBtZXNzYWdlLnR5cGUsXG4gICAgZnJvbTogbWVzc2FnZS5mcm9tLFxuICAgIHRvOiBtZXNzYWdlLnRvLFxuICAgIGJvZHk6IHtcbiAgICAgIGlkZW50aXR5OiBpZGVudGl0eSB8fCBtZXNzYWdlLmJvZHkuaWRlbnRpdHksXG4gICAgICB2YWx1ZTogZGVjcnlwdGVkVmFsdWUgfHwgbWVzc2FnZS5ib2R5LnZhbHVlLFxuICAgICAgaGFuZHNoYWtlUGhhc2U6IG1lc3NhZ2UuYm9keS5oYW5kc2hha2VQaGFzZVxuICAgIH1cbiAgfTtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvdXRpbHMvdXRpbHMuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBd0NBO0FBc0RBO0FBSUE7QUFVQTtBQUtBO0FBVUE7QUFVQTtBQVVBO0FBbUJBO0FBUUE7QUFRQTtBQUlBO0FBSUE7QUFXQTtBQWdCQTtBQWlDQTtBQVlBO0FBaUJBO0FBc0JBO0FBWUE7QUFvQkE7QUFpQkE7QUEwQ0E7QUF1Q0E7QUFZQTtBQWtCQTtBQW1CQTtBQVNBO0FBY0E7QUFlQTtBQWNBO0FBZUE7QUFvQkE7QUFnQkE7QUFnQkE7QUFDQTs7O0FBcGxCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTs7Ozs7QUFLQTs7Ozs7Ozs7QUFRQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFLQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQVNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFKQTtBQVVBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///11\n")},function(module,exports,__webpack_require__){eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(5)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcz82ZDRhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gMTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///12\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(3);\nvar IE8_DOM_DEFINE = __webpack_require__(148);\nvar toPrimitive = __webpack_require__(31);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(12) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZHAuanM/OTQzMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBkUCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIScpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZHAuanNcbi8vIG1vZHVsZSBpZCA9IDEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///13\n")},function(module,exports,__webpack_require__){eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(33);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1sZW5ndGguanM/MDViYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzXG4vLyBtb2R1bGUgaWQgPSAxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n")},function(module,exports,__webpack_require__){eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(32);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1vYmplY3QuanM/MTZiYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMTMgVG9PYmplY3QoYXJndW1lbnQpXG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///15\n")},function(module,exports){eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzPzVkMjMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///16\n")},function(module,exports){eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcz9lY2FiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDE3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///17\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(13);\nvar createDesc = __webpack_require__(48);\nmodule.exports = __webpack_require__(12) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oaWRlLmpzP2RhOWQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRQLmYob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSAxOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///18\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar hide = __webpack_require__(18);\nvar has = __webpack_require__(23);\nvar SRC = __webpack_require__(49)('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(27).inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZWRlZmluZS5qcz80NzcwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFNSQyA9IHJlcXVpcmUoJy4vX3VpZCcpKCdzcmMnKTtcbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyICR0b1N0cmluZyA9IEZ1bmN0aW9uW1RPX1NUUklOR107XG52YXIgVFBMID0gKCcnICsgJHRvU3RyaW5nKS5zcGxpdChUT19TVFJJTkcpO1xuXG5yZXF1aXJlKCcuL19jb3JlJykuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gJHRvU3RyaW5nLmNhbGwoaXQpO1xufTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsLCBzYWZlKSB7XG4gIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIHZhbCA9PSAnZnVuY3Rpb24nO1xuICBpZiAoaXNGdW5jdGlvbikgaGFzKHZhbCwgJ25hbWUnKSB8fCBoaWRlKHZhbCwgJ25hbWUnLCBrZXkpO1xuICBpZiAoT1trZXldID09PSB2YWwpIHJldHVybjtcbiAgaWYgKGlzRnVuY3Rpb24pIGhhcyh2YWwsIFNSQykgfHwgaGlkZSh2YWwsIFNSQywgT1trZXldID8gJycgKyBPW2tleV0gOiBUUEwuam9pbihTdHJpbmcoa2V5KSkpO1xuICBpZiAoTyA9PT0gZ2xvYmFsKSB7XG4gICAgT1trZXldID0gdmFsO1xuICB9IGVsc2UgaWYgKCFzYWZlKSB7XG4gICAgZGVsZXRlIE9ba2V5XTtcbiAgICBoaWRlKE8sIGtleSwgdmFsKTtcbiAgfSBlbHNlIGlmIChPW2tleV0pIHtcbiAgICBPW2tleV0gPSB2YWw7XG4gIH0gZWxzZSB7XG4gICAgaGlkZShPLCBrZXksIHZhbCk7XG4gIH1cbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxufSkoRnVuY3Rpb24ucHJvdG90eXBlLCBUT19TVFJJTkcsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiB0aGlzW1NSQ10gfHwgJHRvU3RyaW5nLmNhbGwodGhpcyk7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcmVkZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDE5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///19\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar fails = __webpack_require__(5);\nvar defined = __webpack_require__(32);\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctaHRtbC5qcz9jYjdkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG52YXIgcXVvdCA9IC9cIi9nO1xuLy8gQi4yLjMuMi4xIENyZWF0ZUhUTUwoc3RyaW5nLCB0YWcsIGF0dHJpYnV0ZSwgdmFsdWUpXG52YXIgY3JlYXRlSFRNTCA9IGZ1bmN0aW9uIChzdHJpbmcsIHRhZywgYXR0cmlidXRlLCB2YWx1ZSkge1xuICB2YXIgUyA9IFN0cmluZyhkZWZpbmVkKHN0cmluZykpO1xuICB2YXIgcDEgPSAnPCcgKyB0YWc7XG4gIGlmIChhdHRyaWJ1dGUgIT09ICcnKSBwMSArPSAnICcgKyBhdHRyaWJ1dGUgKyAnPVwiJyArIFN0cmluZyh2YWx1ZSkucmVwbGFjZShxdW90LCAnJnF1b3Q7JykgKyAnXCInO1xuICByZXR1cm4gcDEgKyAnPicgKyBTICsgJzwvJyArIHRhZyArICc+Jztcbn07XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChOQU1FLCBleGVjKSB7XG4gIHZhciBPID0ge307XG4gIE9bTkFNRV0gPSBleGVjKGNyZWF0ZUhUTUwpO1xuICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGVzdCA9ICcnW05BTUVdKCdcIicpO1xuICAgIHJldHVybiB0ZXN0ICE9PSB0ZXN0LnRvTG93ZXJDYXNlKCkgfHwgdGVzdC5zcGxpdCgnXCInKS5sZW5ndGggPiAzO1xuICB9KSwgJ1N0cmluZycsIE8pO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWh0bWwuanNcbi8vIG1vZHVsZSBpZCA9IDIwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///20\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(17);\nvar core = __webpack_require__(10);\nvar ctx = __webpack_require__(65);\nvar hide = __webpack_require__(58);\nvar has = __webpack_require__(59);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qcz85MGNkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVztcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGtleSwgb3duLCBvdXQ7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG93biAmJiBoYXMoZXhwb3J0cywga2V5KSkgY29udGludWU7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKVxuICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG4gICAgOiBJU19XUkFQICYmIHRhcmdldFtrZXldID09IG91dCA/IChmdW5jdGlvbiAoQykge1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEMpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmIChJU19QUk9UTykge1xuICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0O1xuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcbiAgICAgIGlmICh0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKSBoaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qc1xuLy8gbW9kdWxlIGlkID0gMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///21\n")},function(module,exports,__webpack_require__){eval("var store = __webpack_require__(136)('wks');\nvar uid = __webpack_require__(96);\nvar Symbol = __webpack_require__(17).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qcz83NTJjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBzdG9yZSA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCd3a3MnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5TeW1ib2w7XG52YXIgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcblxudmFyICRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cbiAgICBVU0VfU1lNQk9MICYmIFN5bWJvbFtuYW1lXSB8fCAoVVNFX1NZTUJPTCA/IFN5bWJvbCA6IHVpZCkoJ1N5bWJvbC4nICsgbmFtZSkpO1xufTtcblxuJGV4cG9ydHMuc3RvcmUgPSBzdG9yZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MuanNcbi8vIG1vZHVsZSBpZCA9IDIyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///22\n")},function(module,exports){eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oYXMuanM/NTgxNyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oYXMuanNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///23\n")},function(module,exports,__webpack_require__){eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(70);\nvar defined = __webpack_require__(32);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1pb2JqZWN0LmpzPzNjN2EiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gdG8gaW5kZXhlZCBvYmplY3QsIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIElPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8taW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///24\n")},function(module,exports,__webpack_require__){eval("var pIE = __webpack_require__(71);\nvar createDesc = __webpack_require__(48);\nvar toIObject = __webpack_require__(24);\nvar toPrimitive = __webpack_require__(31);\nvar has = __webpack_require__(23);\nvar IE8_DOM_DEFINE = __webpack_require__(148);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(12) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wZC5qcz9jN2RjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBnT1BEIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSU9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGdPUEQoTywgUCk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzKE8sIFApKSByZXR1cm4gY3JlYXRlRGVzYyghcElFLmYuY2FsbChPLCBQKSwgT1tQXSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wZC5qc1xuLy8gbW9kdWxlIGlkID0gMjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///25\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(23);\nvar toObject = __webpack_require__(15);\nvar IE_PROTO = __webpack_require__(104)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ3BvLmpzPzI4ZWEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvIDogbnVsbDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1ncG8uanNcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///26\n")},function(module,exports){eval("var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb3JlLmpzP2VlMDUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHsgdmVyc2lvbjogJzIuNS43JyB9O1xuaWYgKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpIF9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29yZS5qc1xuLy8gbW9kdWxlIGlkID0gMjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///27\n")},function(module,exports,__webpack_require__){eval("// optional / simple context binding\nvar aFunction = __webpack_require__(16);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jdHguanM/YWM1YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2N0eC5qc1xuLy8gbW9kdWxlIGlkID0gMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///28\n")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2YuanM/YzlkMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvZi5qc1xuLy8gbW9kdWxlIGlkID0gMjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar fails = __webpack_require__(5);\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpY3QtbWV0aG9kLmpzPzM0ZGEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobWV0aG9kLCBhcmcpIHtcbiAgcmV0dXJuICEhbWV0aG9kICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jYWxsXG4gICAgYXJnID8gbWV0aG9kLmNhbGwobnVsbCwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAxKSA6IG1ldGhvZC5jYWxsKG51bGwpO1xuICB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmljdC1tZXRob2QuanNcbi8vIG1vZHVsZSBpZCA9IDMwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n")},function(module,exports,__webpack_require__){eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(6);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1wcmltaXRpdmUuanM/YjM4OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMSBUb1ByaW1pdGl2ZShpbnB1dCBbLCBQcmVmZXJyZWRUeXBlXSlcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///31\n")},function(module,exports){eval('// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError("Can\'t call method on " + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kZWZpbmVkLmpzP2ZmMDgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGVmaW5lZC5qc1xuLy8gbW9kdWxlIGlkID0gMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///32\n')},function(module,exports){eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1pbnRlZ2VyLmpzP2ExZTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWludGVnZXIuanNcbi8vIG1vZHVsZSBpZCA9IDMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///33\n")},function(module,exports,__webpack_require__){eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(0);\nvar core = __webpack_require__(27);\nvar fails = __webpack_require__(5);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qtc2FwLmpzP2RlMmUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBleGVjKSB7XG4gIHZhciBmbiA9IChjb3JlLk9iamVjdCB8fCB7fSlbS0VZXSB8fCBPYmplY3RbS0VZXTtcbiAgdmFyIGV4cCA9IHt9O1xuICBleHBbS0VZXSA9IGV4ZWMoZm4pO1xuICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHsgZm4oMSk7IH0pLCAnT2JqZWN0JywgZXhwKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1zYXAuanNcbi8vIG1vZHVsZSBpZCA9IDM0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///34\n")},function(module,exports,__webpack_require__){eval("// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = __webpack_require__(28);\nvar IObject = __webpack_require__(70);\nvar toObject = __webpack_require__(15);\nvar toLength = __webpack_require__(14);\nvar asc = __webpack_require__(121);\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1tZXRob2RzLmpzPzJlMTQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMCAtPiBBcnJheSNmb3JFYWNoXG4vLyAxIC0+IEFycmF5I21hcFxuLy8gMiAtPiBBcnJheSNmaWx0ZXJcbi8vIDMgLT4gQXJyYXkjc29tZVxuLy8gNCAtPiBBcnJheSNldmVyeVxuLy8gNSAtPiBBcnJheSNmaW5kXG4vLyA2IC0+IEFycmF5I2ZpbmRJbmRleFxudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFzYyA9IHJlcXVpcmUoJy4vX2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUWVBFLCAkY3JlYXRlKSB7XG4gIHZhciBJU19NQVAgPSBUWVBFID09IDE7XG4gIHZhciBJU19GSUxURVIgPSBUWVBFID09IDI7XG4gIHZhciBJU19TT01FID0gVFlQRSA9PSAzO1xuICB2YXIgSVNfRVZFUlkgPSBUWVBFID09IDQ7XG4gIHZhciBJU19GSU5EX0lOREVYID0gVFlQRSA9PSA2O1xuICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDtcbiAgdmFyIGNyZWF0ZSA9ICRjcmVhdGUgfHwgYXNjO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7XG4gICAgdmFyIHNlbGYgPSBJT2JqZWN0KE8pO1xuICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSID8gY3JlYXRlKCR0aGlzLCAwKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdmFsLCByZXM7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWwgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlcyA9IGYodmFsLCBpbmRleCwgTyk7XG4gICAgICBpZiAoVFlQRSkge1xuICAgICAgICBpZiAoSVNfTUFQKSByZXN1bHRbaW5kZXhdID0gcmVzOyAgIC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXMpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWw7ICAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiByZXN1bHQucHVzaCh2YWwpOyAgICAgICAgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHJldHVybiBmYWxzZTsgLy8gZXZlcnlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfSU5ERVggPyAtMSA6IElTX1NPTUUgfHwgSVNfRVZFUlkgPyBJU19FVkVSWSA6IHJlc3VsdDtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LW1ldGhvZHMuanNcbi8vIG1vZHVsZSBpZCA9IDM1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///35\n")},function(module,exports){eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcz8xMmE4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///36\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(453), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9rZXlzLmpzPzdkOTgiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9rZXlzXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAzN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///37\n')},function(module,exports,__webpack_require__){"use strict";eval("\nif (__webpack_require__(12)) {\n var LIBRARY = __webpack_require__(44);\n var global = __webpack_require__(4);\n var fails = __webpack_require__(5);\n var $export = __webpack_require__(0);\n var $typed = __webpack_require__(91);\n var $buffer = __webpack_require__(127);\n var ctx = __webpack_require__(28);\n var anInstance = __webpack_require__(55);\n var propertyDesc = __webpack_require__(48);\n var hide = __webpack_require__(18);\n var redefineAll = __webpack_require__(57);\n var toInteger = __webpack_require__(33);\n var toLength = __webpack_require__(14);\n var toIndex = __webpack_require__(174);\n var toAbsoluteIndex = __webpack_require__(51);\n var toPrimitive = __webpack_require__(31);\n var has = __webpack_require__(23);\n var classof = __webpack_require__(72);\n var isObject = __webpack_require__(6);\n var toObject = __webpack_require__(15);\n var isArrayIter = __webpack_require__(118);\n var create = __webpack_require__(52);\n var getPrototypeOf = __webpack_require__(26);\n var gOPN = __webpack_require__(53).f;\n var getIterFn = __webpack_require__(120);\n var uid = __webpack_require__(49);\n var wks = __webpack_require__(9);\n var createArrayMethod = __webpack_require__(35);\n var createArrayIncludes = __webpack_require__(81);\n var speciesConstructor = __webpack_require__(88);\n var ArrayIterators = __webpack_require__(123);\n var Iterators = __webpack_require__(63);\n var $iterDetect = __webpack_require__(85);\n var setSpecies = __webpack_require__(54);\n var arrayFill = __webpack_require__(122);\n var arrayCopyWithin = __webpack_require__(164);\n var $DP = __webpack_require__(13);\n var $GOPD = __webpack_require__(25);\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190eXBlZC1hcnJheS5qcz9lZmI1Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbmlmIChyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpKSB7XG4gIHZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xuICB2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG4gIHZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG4gIHZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4gIHZhciAkdHlwZWQgPSByZXF1aXJlKCcuL190eXBlZCcpO1xuICB2YXIgJGJ1ZmZlciA9IHJlcXVpcmUoJy4vX3R5cGVkLWJ1ZmZlcicpO1xuICB2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG4gIHZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbiAgdmFyIHByb3BlcnR5RGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbiAgdmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG4gIHZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xuICB2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xuICB2YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbiAgdmFyIHRvSW5kZXggPSByZXF1aXJlKCcuL190by1pbmRleCcpO1xuICB2YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbiAgdmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG4gIHZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbiAgdmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG4gIHZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuICB2YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbiAgdmFyIGlzQXJyYXlJdGVyID0gcmVxdWlyZSgnLi9faXMtYXJyYXktaXRlcicpO1xuICB2YXIgY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xuICB2YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG4gIHZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xuICB2YXIgZ2V0SXRlckZuID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcbiAgdmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xuICB2YXIgd2tzID0gcmVxdWlyZSgnLi9fd2tzJyk7XG4gIHZhciBjcmVhdGVBcnJheU1ldGhvZCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKTtcbiAgdmFyIGNyZWF0ZUFycmF5SW5jbHVkZXMgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpO1xuICB2YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuICB2YXIgQXJyYXlJdGVyYXRvcnMgPSByZXF1aXJlKCcuL2VzNi5hcnJheS5pdGVyYXRvcicpO1xuICB2YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG4gIHZhciAkaXRlckRldGVjdCA9IHJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0Jyk7XG4gIHZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKTtcbiAgdmFyIGFycmF5RmlsbCA9IHJlcXVpcmUoJy4vX2FycmF5LWZpbGwnKTtcbiAgdmFyIGFycmF5Q29weVdpdGhpbiA9IHJlcXVpcmUoJy4vX2FycmF5LWNvcHktd2l0aGluJyk7XG4gIHZhciAkRFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbiAgdmFyICRHT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbiAgdmFyIGRQID0gJERQLmY7XG4gIHZhciBnT1BEID0gJEdPUEQuZjtcbiAgdmFyIFJhbmdlRXJyb3IgPSBnbG9iYWwuUmFuZ2VFcnJvcjtcbiAgdmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG4gIHZhciBVaW50OEFycmF5ID0gZ2xvYmFsLlVpbnQ4QXJyYXk7XG4gIHZhciBBUlJBWV9CVUZGRVIgPSAnQXJyYXlCdWZmZXInO1xuICB2YXIgU0hBUkVEX0JVRkZFUiA9ICdTaGFyZWQnICsgQVJSQVlfQlVGRkVSO1xuICB2YXIgQllURVNfUEVSX0VMRU1FTlQgPSAnQllURVNfUEVSX0VMRU1FTlQnO1xuICB2YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG4gIHZhciBBcnJheVByb3RvID0gQXJyYXlbUFJPVE9UWVBFXTtcbiAgdmFyICRBcnJheUJ1ZmZlciA9ICRidWZmZXIuQXJyYXlCdWZmZXI7XG4gIHZhciAkRGF0YVZpZXcgPSAkYnVmZmVyLkRhdGFWaWV3O1xuICB2YXIgYXJyYXlGb3JFYWNoID0gY3JlYXRlQXJyYXlNZXRob2QoMCk7XG4gIHZhciBhcnJheUZpbHRlciA9IGNyZWF0ZUFycmF5TWV0aG9kKDIpO1xuICB2YXIgYXJyYXlTb21lID0gY3JlYXRlQXJyYXlNZXRob2QoMyk7XG4gIHZhciBhcnJheUV2ZXJ5ID0gY3JlYXRlQXJyYXlNZXRob2QoNCk7XG4gIHZhciBhcnJheUZpbmQgPSBjcmVhdGVBcnJheU1ldGhvZCg1KTtcbiAgdmFyIGFycmF5RmluZEluZGV4ID0gY3JlYXRlQXJyYXlNZXRob2QoNik7XG4gIHZhciBhcnJheUluY2x1ZGVzID0gY3JlYXRlQXJyYXlJbmNsdWRlcyh0cnVlKTtcbiAgdmFyIGFycmF5SW5kZXhPZiA9IGNyZWF0ZUFycmF5SW5jbHVkZXMoZmFsc2UpO1xuICB2YXIgYXJyYXlWYWx1ZXMgPSBBcnJheUl0ZXJhdG9ycy52YWx1ZXM7XG4gIHZhciBhcnJheUtleXMgPSBBcnJheUl0ZXJhdG9ycy5rZXlzO1xuICB2YXIgYXJyYXlFbnRyaWVzID0gQXJyYXlJdGVyYXRvcnMuZW50cmllcztcbiAgdmFyIGFycmF5TGFzdEluZGV4T2YgPSBBcnJheVByb3RvLmxhc3RJbmRleE9mO1xuICB2YXIgYXJyYXlSZWR1Y2UgPSBBcnJheVByb3RvLnJlZHVjZTtcbiAgdmFyIGFycmF5UmVkdWNlUmlnaHQgPSBBcnJheVByb3RvLnJlZHVjZVJpZ2h0O1xuICB2YXIgYXJyYXlKb2luID0gQXJyYXlQcm90by5qb2luO1xuICB2YXIgYXJyYXlTb3J0ID0gQXJyYXlQcm90by5zb3J0O1xuICB2YXIgYXJyYXlTbGljZSA9IEFycmF5UHJvdG8uc2xpY2U7XG4gIHZhciBhcnJheVRvU3RyaW5nID0gQXJyYXlQcm90by50b1N0cmluZztcbiAgdmFyIGFycmF5VG9Mb2NhbGVTdHJpbmcgPSBBcnJheVByb3RvLnRvTG9jYWxlU3RyaW5nO1xuICB2YXIgSVRFUkFUT1IgPSB3a3MoJ2l0ZXJhdG9yJyk7XG4gIHZhciBUQUcgPSB3a3MoJ3RvU3RyaW5nVGFnJyk7XG4gIHZhciBUWVBFRF9DT05TVFJVQ1RPUiA9IHVpZCgndHlwZWRfY29uc3RydWN0b3InKTtcbiAgdmFyIERFRl9DT05TVFJVQ1RPUiA9IHVpZCgnZGVmX2NvbnN0cnVjdG9yJyk7XG4gIHZhciBBTExfQ09OU1RSVUNUT1JTID0gJHR5cGVkLkNPTlNUUjtcbiAgdmFyIFRZUEVEX0FSUkFZID0gJHR5cGVkLlRZUEVEO1xuICB2YXIgVklFVyA9ICR0eXBlZC5WSUVXO1xuICB2YXIgV1JPTkdfTEVOR1RIID0gJ1dyb25nIGxlbmd0aCEnO1xuXG4gIHZhciAkbWFwID0gY3JlYXRlQXJyYXlNZXRob2QoMSwgZnVuY3Rpb24gKE8sIGxlbmd0aCkge1xuICAgIHJldHVybiBhbGxvY2F0ZShzcGVjaWVzQ29uc3RydWN0b3IoTywgT1tERUZfQ09OU1RSVUNUT1JdKSwgbGVuZ3RoKTtcbiAgfSk7XG5cbiAgdmFyIExJVFRMRV9FTkRJQU4gPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KG5ldyBVaW50MTZBcnJheShbMV0pLmJ1ZmZlcilbMF0gPT09IDE7XG4gIH0pO1xuXG4gIHZhciBGT1JDRURfU0VUID0gISFVaW50OEFycmF5ICYmICEhVWludDhBcnJheVtQUk9UT1RZUEVdLnNldCAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgbmV3IFVpbnQ4QXJyYXkoMSkuc2V0KHt9KTtcbiAgfSk7XG5cbiAgdmFyIHRvT2Zmc2V0ID0gZnVuY3Rpb24gKGl0LCBCWVRFUykge1xuICAgIHZhciBvZmZzZXQgPSB0b0ludGVnZXIoaXQpO1xuICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCAlIEJZVEVTKSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBvZmZzZXQhJyk7XG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfTtcblxuICB2YXIgdmFsaWRhdGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICBpZiAoaXNPYmplY3QoaXQpICYmIFRZUEVEX0FSUkFZIGluIGl0KSByZXR1cm4gaXQ7XG4gICAgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSB0eXBlZCBhcnJheSEnKTtcbiAgfTtcblxuICB2YXIgYWxsb2NhdGUgPSBmdW5jdGlvbiAoQywgbGVuZ3RoKSB7XG4gICAgaWYgKCEoaXNPYmplY3QoQykgJiYgVFlQRURfQ09OU1RSVUNUT1IgaW4gQykpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignSXQgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IhJyk7XG4gICAgfSByZXR1cm4gbmV3IEMobGVuZ3RoKTtcbiAgfTtcblxuICB2YXIgc3BlY2llc0Zyb21MaXN0ID0gZnVuY3Rpb24gKE8sIGxpc3QpIHtcbiAgICByZXR1cm4gZnJvbUxpc3Qoc3BlY2llc0NvbnN0cnVjdG9yKE8sIE9bREVGX0NPTlNUUlVDVE9SXSksIGxpc3QpO1xuICB9O1xuXG4gIHZhciBmcm9tTGlzdCA9IGZ1bmN0aW9uIChDLCBsaXN0KSB7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gbGlzdC5sZW5ndGg7XG4gICAgdmFyIHJlc3VsdCA9IGFsbG9jYXRlKEMsIGxlbmd0aCk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSByZXN1bHRbaW5kZXhdID0gbGlzdFtpbmRleCsrXTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHZhciBhZGRHZXR0ZXIgPSBmdW5jdGlvbiAoaXQsIGtleSwgaW50ZXJuYWwpIHtcbiAgICBkUChpdCwga2V5LCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fZFtpbnRlcm5hbF07IH0gfSk7XG4gIH07XG5cbiAgdmFyICRmcm9tID0gZnVuY3Rpb24gZnJvbShzb3VyY2UgLyogLCBtYXBmbiwgdGhpc0FyZyAqLykge1xuICAgIHZhciBPID0gdG9PYmplY3Qoc291cmNlKTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIG1hcGZuID0gYUxlbiA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciBpdGVyRm4gPSBnZXRJdGVyRm4oTyk7XG4gICAgdmFyIGksIGxlbmd0aCwgdmFsdWVzLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmIChpdGVyRm4gIT0gdW5kZWZpbmVkICYmICFpc0FycmF5SXRlcihpdGVyRm4pKSB7XG4gICAgICBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoTyksIHZhbHVlcyA9IFtdLCBpID0gMDsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyBpKyspIHtcbiAgICAgICAgdmFsdWVzLnB1c2goc3RlcC52YWx1ZSk7XG4gICAgICB9IE8gPSB2YWx1ZXM7XG4gICAgfVxuICAgIGlmIChtYXBwaW5nICYmIGFMZW4gPiAyKSBtYXBmbiA9IGN0eChtYXBmbiwgYXJndW1lbnRzWzJdLCAyKTtcbiAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCksIHJlc3VsdCA9IGFsbG9jYXRlKHRoaXMsIGxlbmd0aCk7IGxlbmd0aCA+IGk7IGkrKykge1xuICAgICAgcmVzdWx0W2ldID0gbWFwcGluZyA/IG1hcGZuKE9baV0sIGkpIDogT1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICB2YXIgJG9mID0gZnVuY3Rpb24gb2YoLyogLi4uaXRlbXMgKi8pIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciByZXN1bHQgPSBhbGxvY2F0ZSh0aGlzLCBsZW5ndGgpO1xuICAgIHdoaWxlIChsZW5ndGggPiBpbmRleCkgcmVzdWx0W2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleCsrXTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIGlPUyBTYWZhcmkgNi54IGZhaWxzIGhlcmVcbiAgdmFyIFRPX0xPQ0FMRV9CVUcgPSAhIVVpbnQ4QXJyYXkgJiYgZmFpbHMoZnVuY3Rpb24gKCkgeyBhcnJheVRvTG9jYWxlU3RyaW5nLmNhbGwobmV3IFVpbnQ4QXJyYXkoMSkpOyB9KTtcblxuICB2YXIgJHRvTG9jYWxlU3RyaW5nID0gZnVuY3Rpb24gdG9Mb2NhbGVTdHJpbmcoKSB7XG4gICAgcmV0dXJuIGFycmF5VG9Mb2NhbGVTdHJpbmcuYXBwbHkoVE9fTE9DQUxFX0JVRyA/IGFycmF5U2xpY2UuY2FsbCh2YWxpZGF0ZSh0aGlzKSkgOiB2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgfTtcblxuICB2YXIgcHJvdG8gPSB7XG4gICAgY29weVdpdGhpbjogZnVuY3Rpb24gY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0IC8qICwgZW5kICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlDb3B5V2l0aGluLmNhbGwodmFsaWRhdGUodGhpcyksIHRhcmdldCwgc3RhcnQsIGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgcmV0dXJuIGFycmF5RXZlcnkodmFsaWRhdGUodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGZpbGw6IGZ1bmN0aW9uIGZpbGwodmFsdWUgLyogLCBzdGFydCwgZW5kICovKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIHJldHVybiBhcnJheUZpbGwuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgcmV0dXJuIHNwZWNpZXNGcm9tTGlzdCh0aGlzLCBhcnJheUZpbHRlcih2YWxpZGF0ZSh0aGlzKSwgY2FsbGJhY2tmbixcbiAgICAgICAgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpKTtcbiAgICB9LFxuICAgIGZpbmQ6IGZ1bmN0aW9uIGZpbmQocHJlZGljYXRlIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgcmV0dXJuIGFycmF5RmluZCh2YWxpZGF0ZSh0aGlzKSwgcHJlZGljYXRlLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBmaW5kSW5kZXg6IGZ1bmN0aW9uIGZpbmRJbmRleChwcmVkaWNhdGUgLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlGaW5kSW5kZXgodmFsaWRhdGUodGhpcyksIHByZWRpY2F0ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgYXJyYXlGb3JFYWNoKHZhbGlkYXRlKHRoaXMpLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBpbmRleE9mOiBmdW5jdGlvbiBpbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggKi8pIHtcbiAgICAgIHJldHVybiBhcnJheUluZGV4T2YodmFsaWRhdGUodGhpcyksIHNlYXJjaEVsZW1lbnQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlJbmNsdWRlcyh2YWxpZGF0ZSh0aGlzKSwgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgam9pbjogZnVuY3Rpb24gam9pbihzZXBhcmF0b3IpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5Sm9pbi5hcHBseSh2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGxhc3RJbmRleE9mOiBmdW5jdGlvbiBsYXN0SW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ICovKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIHJldHVybiBhcnJheUxhc3RJbmRleE9mLmFwcGx5KHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgbWFwOiBmdW5jdGlvbiBtYXAobWFwZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gJG1hcCh2YWxpZGF0ZSh0aGlzKSwgbWFwZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIHJlZHVjZTogZnVuY3Rpb24gcmVkdWNlKGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5UmVkdWNlLmFwcGx5KHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgcmVkdWNlUmlnaHQ6IGZ1bmN0aW9uIHJlZHVjZVJpZ2h0KGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5UmVkdWNlUmlnaHQuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICByZXZlcnNlOiBmdW5jdGlvbiByZXZlcnNlKCkge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgdmFyIGxlbmd0aCA9IHZhbGlkYXRlKHRoYXQpLmxlbmd0aDtcbiAgICAgIHZhciBtaWRkbGUgPSBNYXRoLmZsb29yKGxlbmd0aCAvIDIpO1xuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIHZhciB2YWx1ZTtcbiAgICAgIHdoaWxlIChpbmRleCA8IG1pZGRsZSkge1xuICAgICAgICB2YWx1ZSA9IHRoYXRbaW5kZXhdO1xuICAgICAgICB0aGF0W2luZGV4KytdID0gdGhhdFstLWxlbmd0aF07XG4gICAgICAgIHRoYXRbbGVuZ3RoXSA9IHZhbHVlO1xuICAgICAgfSByZXR1cm4gdGhhdDtcbiAgICB9LFxuICAgIHNvbWU6IGZ1bmN0aW9uIHNvbWUoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICAgIHJldHVybiBhcnJheVNvbWUodmFsaWRhdGUodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIHNvcnQ6IGZ1bmN0aW9uIHNvcnQoY29tcGFyZWZuKSB7XG4gICAgICByZXR1cm4gYXJyYXlTb3J0LmNhbGwodmFsaWRhdGUodGhpcyksIGNvbXBhcmVmbik7XG4gICAgfSxcbiAgICBzdWJhcnJheTogZnVuY3Rpb24gc3ViYXJyYXkoYmVnaW4sIGVuZCkge1xuICAgICAgdmFyIE8gPSB2YWxpZGF0ZSh0aGlzKTtcbiAgICAgIHZhciBsZW5ndGggPSBPLmxlbmd0aDtcbiAgICAgIHZhciAkYmVnaW4gPSB0b0Fic29sdXRlSW5kZXgoYmVnaW4sIGxlbmd0aCk7XG4gICAgICByZXR1cm4gbmV3IChzcGVjaWVzQ29uc3RydWN0b3IoTywgT1tERUZfQ09OU1RSVUNUT1JdKSkoXG4gICAgICAgIE8uYnVmZmVyLFxuICAgICAgICBPLmJ5dGVPZmZzZXQgKyAkYmVnaW4gKiBPLkJZVEVTX1BFUl9FTEVNRU5ULFxuICAgICAgICB0b0xlbmd0aCgoZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiB0b0Fic29sdXRlSW5kZXgoZW5kLCBsZW5ndGgpKSAtICRiZWdpbilcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIHZhciAkc2xpY2UgPSBmdW5jdGlvbiBzbGljZShzdGFydCwgZW5kKSB7XG4gICAgcmV0dXJuIHNwZWNpZXNGcm9tTGlzdCh0aGlzLCBhcnJheVNsaWNlLmNhbGwodmFsaWRhdGUodGhpcyksIHN0YXJ0LCBlbmQpKTtcbiAgfTtcblxuICB2YXIgJHNldCA9IGZ1bmN0aW9uIHNldChhcnJheUxpa2UgLyogLCBvZmZzZXQgKi8pIHtcbiAgICB2YWxpZGF0ZSh0aGlzKTtcbiAgICB2YXIgb2Zmc2V0ID0gdG9PZmZzZXQoYXJndW1lbnRzWzFdLCAxKTtcbiAgICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgdmFyIHNyYyA9IHRvT2JqZWN0KGFycmF5TGlrZSk7XG4gICAgdmFyIGxlbiA9IHRvTGVuZ3RoKHNyYy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgaWYgKGxlbiArIG9mZnNldCA+IGxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgIHdoaWxlIChpbmRleCA8IGxlbikgdGhpc1tvZmZzZXQgKyBpbmRleF0gPSBzcmNbaW5kZXgrK107XG4gIH07XG5cbiAgdmFyICRpdGVyYXRvcnMgPSB7XG4gICAgZW50cmllczogZnVuY3Rpb24gZW50cmllcygpIHtcbiAgICAgIHJldHVybiBhcnJheUVudHJpZXMuY2FsbCh2YWxpZGF0ZSh0aGlzKSk7XG4gICAgfSxcbiAgICBrZXlzOiBmdW5jdGlvbiBrZXlzKCkge1xuICAgICAgcmV0dXJuIGFycmF5S2V5cy5jYWxsKHZhbGlkYXRlKHRoaXMpKTtcbiAgICB9LFxuICAgIHZhbHVlczogZnVuY3Rpb24gdmFsdWVzKCkge1xuICAgICAgcmV0dXJuIGFycmF5VmFsdWVzLmNhbGwodmFsaWRhdGUodGhpcykpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgaXNUQUluZGV4ID0gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7XG4gICAgcmV0dXJuIGlzT2JqZWN0KHRhcmdldClcbiAgICAgICYmIHRhcmdldFtUWVBFRF9BUlJBWV1cbiAgICAgICYmIHR5cGVvZiBrZXkgIT0gJ3N5bWJvbCdcbiAgICAgICYmIGtleSBpbiB0YXJnZXRcbiAgICAgICYmIFN0cmluZygra2V5KSA9PSBTdHJpbmcoa2V5KTtcbiAgfTtcbiAgdmFyICRnZXREZXNjID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSB7XG4gICAgcmV0dXJuIGlzVEFJbmRleCh0YXJnZXQsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpXG4gICAgICA/IHByb3BlcnR5RGVzYygyLCB0YXJnZXRba2V5XSlcbiAgICAgIDogZ09QRCh0YXJnZXQsIGtleSk7XG4gIH07XG4gIHZhciAkc2V0RGVzYyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjKSB7XG4gICAgaWYgKGlzVEFJbmRleCh0YXJnZXQsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpXG4gICAgICAmJiBpc09iamVjdChkZXNjKVxuICAgICAgJiYgaGFzKGRlc2MsICd2YWx1ZScpXG4gICAgICAmJiAhaGFzKGRlc2MsICdnZXQnKVxuICAgICAgJiYgIWhhcyhkZXNjLCAnc2V0JylcbiAgICAgIC8vIFRPRE86IGFkZCB2YWxpZGF0aW9uIGRlc2NyaXB0b3Igdy9vIGNhbGxpbmcgYWNjZXNzb3JzXG4gICAgICAmJiAhZGVzYy5jb25maWd1cmFibGVcbiAgICAgICYmICghaGFzKGRlc2MsICd3cml0YWJsZScpIHx8IGRlc2Mud3JpdGFibGUpXG4gICAgICAmJiAoIWhhcyhkZXNjLCAnZW51bWVyYWJsZScpIHx8IGRlc2MuZW51bWVyYWJsZSlcbiAgICApIHtcbiAgICAgIHRhcmdldFtrZXldID0gZGVzYy52YWx1ZTtcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfSByZXR1cm4gZFAodGFyZ2V0LCBrZXksIGRlc2MpO1xuICB9O1xuXG4gIGlmICghQUxMX0NPTlNUUlVDVE9SUykge1xuICAgICRHT1BELmYgPSAkZ2V0RGVzYztcbiAgICAkRFAuZiA9ICRzZXREZXNjO1xuICB9XG5cbiAgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhQUxMX0NPTlNUUlVDVE9SUywgJ09iamVjdCcsIHtcbiAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICRnZXREZXNjLFxuICAgIGRlZmluZVByb3BlcnR5OiAkc2V0RGVzY1xuICB9KTtcblxuICBpZiAoZmFpbHMoZnVuY3Rpb24gKCkgeyBhcnJheVRvU3RyaW5nLmNhbGwoe30pOyB9KSkge1xuICAgIGFycmF5VG9TdHJpbmcgPSBhcnJheVRvTG9jYWxlU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gYXJyYXlKb2luLmNhbGwodGhpcyk7XG4gICAgfTtcbiAgfVxuXG4gIHZhciAkVHlwZWRBcnJheVByb3RvdHlwZSQgPSByZWRlZmluZUFsbCh7fSwgcHJvdG8pO1xuICByZWRlZmluZUFsbCgkVHlwZWRBcnJheVByb3RvdHlwZSQsICRpdGVyYXRvcnMpO1xuICBoaWRlKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgSVRFUkFUT1IsICRpdGVyYXRvcnMudmFsdWVzKTtcbiAgcmVkZWZpbmVBbGwoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCB7XG4gICAgc2xpY2U6ICRzbGljZSxcbiAgICBzZXQ6ICRzZXQsXG4gICAgY29uc3RydWN0b3I6IGZ1bmN0aW9uICgpIHsgLyogbm9vcCAqLyB9LFxuICAgIHRvU3RyaW5nOiBhcnJheVRvU3RyaW5nLFxuICAgIHRvTG9jYWxlU3RyaW5nOiAkdG9Mb2NhbGVTdHJpbmdcbiAgfSk7XG4gIGFkZEdldHRlcigkVHlwZWRBcnJheVByb3RvdHlwZSQsICdidWZmZXInLCAnYicpO1xuICBhZGRHZXR0ZXIoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCAnYnl0ZU9mZnNldCcsICdvJyk7XG4gIGFkZEdldHRlcigkVHlwZWRBcnJheVByb3RvdHlwZSQsICdieXRlTGVuZ3RoJywgJ2wnKTtcbiAgYWRkR2V0dGVyKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJ2xlbmd0aCcsICdlJyk7XG4gIGRQKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgVEFHLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzW1RZUEVEX0FSUkFZXTsgfVxuICB9KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXN0YXRlbWVudHNcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBCWVRFUywgd3JhcHBlciwgQ0xBTVBFRCkge1xuICAgIENMQU1QRUQgPSAhIUNMQU1QRUQ7XG4gICAgdmFyIE5BTUUgPSBLRVkgKyAoQ0xBTVBFRCA/ICdDbGFtcGVkJyA6ICcnKSArICdBcnJheSc7XG4gICAgdmFyIEdFVFRFUiA9ICdnZXQnICsgS0VZO1xuICAgIHZhciBTRVRURVIgPSAnc2V0JyArIEtFWTtcbiAgICB2YXIgVHlwZWRBcnJheSA9IGdsb2JhbFtOQU1FXTtcbiAgICB2YXIgQmFzZSA9IFR5cGVkQXJyYXkgfHwge307XG4gICAgdmFyIFRBQyA9IFR5cGVkQXJyYXkgJiYgZ2V0UHJvdG90eXBlT2YoVHlwZWRBcnJheSk7XG4gICAgdmFyIEZPUkNFRCA9ICFUeXBlZEFycmF5IHx8ICEkdHlwZWQuQUJWO1xuICAgIHZhciBPID0ge307XG4gICAgdmFyIFR5cGVkQXJyYXlQcm90b3R5cGUgPSBUeXBlZEFycmF5ICYmIFR5cGVkQXJyYXlbUFJPVE9UWVBFXTtcbiAgICB2YXIgZ2V0dGVyID0gZnVuY3Rpb24gKHRoYXQsIGluZGV4KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoYXQuX2Q7XG4gICAgICByZXR1cm4gZGF0YS52W0dFVFRFUl0oaW5kZXggKiBCWVRFUyArIGRhdGEubywgTElUVExFX0VORElBTik7XG4gICAgfTtcbiAgICB2YXIgc2V0dGVyID0gZnVuY3Rpb24gKHRoYXQsIGluZGV4LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGF0Ll9kO1xuICAgICAgaWYgKENMQU1QRUQpIHZhbHVlID0gKHZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZSkpIDwgMCA/IDAgOiB2YWx1ZSA+IDB4ZmYgPyAweGZmIDogdmFsdWUgJiAweGZmO1xuICAgICAgZGF0YS52W1NFVFRFUl0oaW5kZXggKiBCWVRFUyArIGRhdGEubywgdmFsdWUsIExJVFRMRV9FTkRJQU4pO1xuICAgIH07XG4gICAgdmFyIGFkZEVsZW1lbnQgPSBmdW5jdGlvbiAodGhhdCwgaW5kZXgpIHtcbiAgICAgIGRQKHRoYXQsIGluZGV4LCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBnZXR0ZXIodGhpcywgaW5kZXgpO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBzZXR0ZXIodGhpcywgaW5kZXgsIHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSB7XG4gICAgICBUeXBlZEFycmF5ID0gd3JhcHBlcihmdW5jdGlvbiAodGhhdCwgZGF0YSwgJG9mZnNldCwgJGxlbmd0aCkge1xuICAgICAgICBhbkluc3RhbmNlKHRoYXQsIFR5cGVkQXJyYXksIE5BTUUsICdfZCcpO1xuICAgICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICAgICAgdmFyIGJ1ZmZlciwgYnl0ZUxlbmd0aCwgbGVuZ3RoLCBrbGFzcztcbiAgICAgICAgaWYgKCFpc09iamVjdChkYXRhKSkge1xuICAgICAgICAgIGxlbmd0aCA9IHRvSW5kZXgoZGF0YSk7XG4gICAgICAgICAgYnl0ZUxlbmd0aCA9IGxlbmd0aCAqIEJZVEVTO1xuICAgICAgICAgIGJ1ZmZlciA9IG5ldyAkQXJyYXlCdWZmZXIoYnl0ZUxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mICRBcnJheUJ1ZmZlciB8fCAoa2xhc3MgPSBjbGFzc29mKGRhdGEpKSA9PSBBUlJBWV9CVUZGRVIgfHwga2xhc3MgPT0gU0hBUkVEX0JVRkZFUikge1xuICAgICAgICAgIGJ1ZmZlciA9IGRhdGE7XG4gICAgICAgICAgb2Zmc2V0ID0gdG9PZmZzZXQoJG9mZnNldCwgQllURVMpO1xuICAgICAgICAgIHZhciAkbGVuID0gZGF0YS5ieXRlTGVuZ3RoO1xuICAgICAgICAgIGlmICgkbGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICgkbGVuICUgQllURVMpIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICAgICAgICAgIGJ5dGVMZW5ndGggPSAkbGVuIC0gb2Zmc2V0O1xuICAgICAgICAgICAgaWYgKGJ5dGVMZW5ndGggPCAwKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ5dGVMZW5ndGggPSB0b0xlbmd0aCgkbGVuZ3RoKSAqIEJZVEVTO1xuICAgICAgICAgICAgaWYgKGJ5dGVMZW5ndGggKyBvZmZzZXQgPiAkbGVuKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxlbmd0aCA9IGJ5dGVMZW5ndGggLyBCWVRFUztcbiAgICAgICAgfSBlbHNlIGlmIChUWVBFRF9BUlJBWSBpbiBkYXRhKSB7XG4gICAgICAgICAgcmV0dXJuIGZyb21MaXN0KFR5cGVkQXJyYXksIGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiAkZnJvbS5jYWxsKFR5cGVkQXJyYXksIGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGhpZGUodGhhdCwgJ19kJywge1xuICAgICAgICAgIGI6IGJ1ZmZlcixcbiAgICAgICAgICBvOiBvZmZzZXQsXG4gICAgICAgICAgbDogYnl0ZUxlbmd0aCxcbiAgICAgICAgICBlOiBsZW5ndGgsXG4gICAgICAgICAgdjogbmV3ICREYXRhVmlldyhidWZmZXIpXG4gICAgICAgIH0pO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIGFkZEVsZW1lbnQodGhhdCwgaW5kZXgrKyk7XG4gICAgICB9KTtcbiAgICAgIFR5cGVkQXJyYXlQcm90b3R5cGUgPSBUeXBlZEFycmF5W1BST1RPVFlQRV0gPSBjcmVhdGUoJFR5cGVkQXJyYXlQcm90b3R5cGUkKTtcbiAgICAgIGhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgJ2NvbnN0cnVjdG9yJywgVHlwZWRBcnJheSk7XG4gICAgfSBlbHNlIGlmICghZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgICAgVHlwZWRBcnJheSgxKTtcbiAgICB9KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgICAgbmV3IFR5cGVkQXJyYXkoLTEpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIH0pIHx8ICEkaXRlckRldGVjdChmdW5jdGlvbiAoaXRlcikge1xuICAgICAgbmV3IFR5cGVkQXJyYXkoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICAgIG5ldyBUeXBlZEFycmF5KG51bGwpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgICAgbmV3IFR5cGVkQXJyYXkoMS41KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICAgIG5ldyBUeXBlZEFycmF5KGl0ZXIpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIH0sIHRydWUpKSB7XG4gICAgICBUeXBlZEFycmF5ID0gd3JhcHBlcihmdW5jdGlvbiAodGhhdCwgZGF0YSwgJG9mZnNldCwgJGxlbmd0aCkge1xuICAgICAgICBhbkluc3RhbmNlKHRoYXQsIFR5cGVkQXJyYXksIE5BTUUpO1xuICAgICAgICB2YXIga2xhc3M7XG4gICAgICAgIC8vIGB3c2AgbW9kdWxlIGJ1ZywgdGVtcG9yYXJpbHkgcmVtb3ZlIHZhbGlkYXRpb24gbGVuZ3RoIGZvciBVaW50OEFycmF5XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJzb2NrZXRzL3dzL3B1bGwvNjQ1XG4gICAgICAgIGlmICghaXNPYmplY3QoZGF0YSkpIHJldHVybiBuZXcgQmFzZSh0b0luZGV4KGRhdGEpKTtcbiAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiAkQXJyYXlCdWZmZXIgfHwgKGtsYXNzID0gY2xhc3NvZihkYXRhKSkgPT0gQVJSQVlfQlVGRkVSIHx8IGtsYXNzID09IFNIQVJFRF9CVUZGRVIpIHtcbiAgICAgICAgICByZXR1cm4gJGxlbmd0aCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IG5ldyBCYXNlKGRhdGEsIHRvT2Zmc2V0KCRvZmZzZXQsIEJZVEVTKSwgJGxlbmd0aClcbiAgICAgICAgICAgIDogJG9mZnNldCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gbmV3IEJhc2UoZGF0YSwgdG9PZmZzZXQoJG9mZnNldCwgQllURVMpKVxuICAgICAgICAgICAgICA6IG5ldyBCYXNlKGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChUWVBFRF9BUlJBWSBpbiBkYXRhKSByZXR1cm4gZnJvbUxpc3QoVHlwZWRBcnJheSwgZGF0YSk7XG4gICAgICAgIHJldHVybiAkZnJvbS5jYWxsKFR5cGVkQXJyYXksIGRhdGEpO1xuICAgICAgfSk7XG4gICAgICBhcnJheUZvckVhY2goVEFDICE9PSBGdW5jdGlvbi5wcm90b3R5cGUgPyBnT1BOKEJhc2UpLmNvbmNhdChnT1BOKFRBQykpIDogZ09QTihCYXNlKSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoIShrZXkgaW4gVHlwZWRBcnJheSkpIGhpZGUoVHlwZWRBcnJheSwga2V5LCBCYXNlW2tleV0pO1xuICAgICAgfSk7XG4gICAgICBUeXBlZEFycmF5W1BST1RPVFlQRV0gPSBUeXBlZEFycmF5UHJvdG90eXBlO1xuICAgICAgaWYgKCFMSUJSQVJZKSBUeXBlZEFycmF5UHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVHlwZWRBcnJheTtcbiAgICB9XG4gICAgdmFyICRuYXRpdmVJdGVyYXRvciA9IFR5cGVkQXJyYXlQcm90b3R5cGVbSVRFUkFUT1JdO1xuICAgIHZhciBDT1JSRUNUX0lURVJfTkFNRSA9ICEhJG5hdGl2ZUl0ZXJhdG9yXG4gICAgICAmJiAoJG5hdGl2ZUl0ZXJhdG9yLm5hbWUgPT0gJ3ZhbHVlcycgfHwgJG5hdGl2ZUl0ZXJhdG9yLm5hbWUgPT0gdW5kZWZpbmVkKTtcbiAgICB2YXIgJGl0ZXJhdG9yID0gJGl0ZXJhdG9ycy52YWx1ZXM7XG4gICAgaGlkZShUeXBlZEFycmF5LCBUWVBFRF9DT05TVFJVQ1RPUiwgdHJ1ZSk7XG4gICAgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBUWVBFRF9BUlJBWSwgTkFNRSk7XG4gICAgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBWSUVXLCB0cnVlKTtcbiAgICBoaWRlKFR5cGVkQXJyYXlQcm90b3R5cGUsIERFRl9DT05TVFJVQ1RPUiwgVHlwZWRBcnJheSk7XG5cbiAgICBpZiAoQ0xBTVBFRCA/IG5ldyBUeXBlZEFycmF5KDEpW1RBR10gIT0gTkFNRSA6ICEoVEFHIGluIFR5cGVkQXJyYXlQcm90b3R5cGUpKSB7XG4gICAgICBkUChUeXBlZEFycmF5UHJvdG90eXBlLCBUQUcsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBOQU1FOyB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBPW05BTUVdID0gVHlwZWRBcnJheTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogKFR5cGVkQXJyYXkgIT0gQmFzZSksIE8pO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlMsIE5BTUUsIHtcbiAgICAgIEJZVEVTX1BFUl9FTEVNRU5UOiBCWVRFU1xuICAgIH0pO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiBmYWlscyhmdW5jdGlvbiAoKSB7IEJhc2Uub2YuY2FsbChUeXBlZEFycmF5LCAxKTsgfSksIE5BTUUsIHtcbiAgICAgIGZyb206ICRmcm9tLFxuICAgICAgb2Y6ICRvZlxuICAgIH0pO1xuXG4gICAgaWYgKCEoQllURVNfUEVSX0VMRU1FTlQgaW4gVHlwZWRBcnJheVByb3RvdHlwZSkpIGhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgQllURVNfUEVSX0VMRU1FTlQsIEJZVEVTKTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5QLCBOQU1FLCBwcm90byk7XG5cbiAgICBzZXRTcGVjaWVzKE5BTUUpO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBGT1JDRURfU0VULCBOQU1FLCB7IHNldDogJHNldCB9KTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIUNPUlJFQ1RfSVRFUl9OQU1FLCBOQU1FLCAkaXRlcmF0b3JzKTtcblxuICAgIGlmICghTElCUkFSWSAmJiBUeXBlZEFycmF5UHJvdG90eXBlLnRvU3RyaW5nICE9IGFycmF5VG9TdHJpbmcpIFR5cGVkQXJyYXlQcm90b3R5cGUudG9TdHJpbmcgPSBhcnJheVRvU3RyaW5nO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICBuZXcgVHlwZWRBcnJheSgxKS5zbGljZSgpO1xuICAgIH0pLCBOQU1FLCB7IHNsaWNlOiAkc2xpY2UgfSk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gWzEsIDJdLnRvTG9jYWxlU3RyaW5nKCkgIT0gbmV3IFR5cGVkQXJyYXkoWzEsIDJdKS50b0xvY2FsZVN0cmluZygpO1xuICAgIH0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICBUeXBlZEFycmF5UHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsIDJdKTtcbiAgICB9KSksIE5BTUUsIHsgdG9Mb2NhbGVTdHJpbmc6ICR0b0xvY2FsZVN0cmluZyB9KTtcblxuICAgIEl0ZXJhdG9yc1tOQU1FXSA9IENPUlJFQ1RfSVRFUl9OQU1FID8gJG5hdGl2ZUl0ZXJhdG9yIDogJGl0ZXJhdG9yO1xuICAgIGlmICghTElCUkFSWSAmJiAhQ09SUkVDVF9JVEVSX05BTUUpIGhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgSVRFUkFUT1IsICRpdGVyYXRvcik7XG4gIH07XG59IGVsc2UgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3R5cGVkLWFycmF5LmpzXG4vLyBtb2R1bGUgaWQgPSAzOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///38\n")},function(module,exports,__webpack_require__){eval("var Map = __webpack_require__(169);\nvar $export = __webpack_require__(0);\nvar shared = __webpack_require__(80)('metadata');\nvar store = shared.store || (shared.store = new (__webpack_require__(172))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhZGF0YS5qcz9jMDJiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBNYXAgPSByZXF1aXJlKCcuL2VzNi5tYXAnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ21ldGFkYXRhJyk7XG52YXIgc3RvcmUgPSBzaGFyZWQuc3RvcmUgfHwgKHNoYXJlZC5zdG9yZSA9IG5ldyAocmVxdWlyZSgnLi9lczYud2Vhay1tYXAnKSkoKSk7XG5cbnZhciBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwID0gZnVuY3Rpb24gKHRhcmdldCwgdGFyZ2V0S2V5LCBjcmVhdGUpIHtcbiAgdmFyIHRhcmdldE1ldGFkYXRhID0gc3RvcmUuZ2V0KHRhcmdldCk7XG4gIGlmICghdGFyZ2V0TWV0YWRhdGEpIHtcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBzdG9yZS5zZXQodGFyZ2V0LCB0YXJnZXRNZXRhZGF0YSA9IG5ldyBNYXAoKSk7XG4gIH1cbiAgdmFyIGtleU1ldGFkYXRhID0gdGFyZ2V0TWV0YWRhdGEuZ2V0KHRhcmdldEtleSk7XG4gIGlmICgha2V5TWV0YWRhdGEpIHtcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB0YXJnZXRNZXRhZGF0YS5zZXQodGFyZ2V0S2V5LCBrZXlNZXRhZGF0YSA9IG5ldyBNYXAoKSk7XG4gIH0gcmV0dXJuIGtleU1ldGFkYXRhO1xufTtcbnZhciBvcmRpbmFyeUhhc093bk1ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gIHZhciBtZXRhZGF0YU1hcCA9IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgZmFsc2UpO1xuICByZXR1cm4gbWV0YWRhdGFNYXAgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogbWV0YWRhdGFNYXAuaGFzKE1ldGFkYXRhS2V5KTtcbn07XG52YXIgb3JkaW5hcnlHZXRPd25NZXRhZGF0YSA9IGZ1bmN0aW9uIChNZXRhZGF0YUtleSwgTywgUCkge1xuICB2YXIgbWV0YWRhdGFNYXAgPSBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIGZhbHNlKTtcbiAgcmV0dXJuIG1ldGFkYXRhTWFwID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBtZXRhZGF0YU1hcC5nZXQoTWV0YWRhdGFLZXkpO1xufTtcbnZhciBvcmRpbmFyeURlZmluZU93bk1ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlLCBPLCBQKSB7XG4gIGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgdHJ1ZSkuc2V0KE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlKTtcbn07XG52YXIgb3JkaW5hcnlPd25NZXRhZGF0YUtleXMgPSBmdW5jdGlvbiAodGFyZ2V0LCB0YXJnZXRLZXkpIHtcbiAgdmFyIG1ldGFkYXRhTWFwID0gZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCh0YXJnZXQsIHRhcmdldEtleSwgZmFsc2UpO1xuICB2YXIga2V5cyA9IFtdO1xuICBpZiAobWV0YWRhdGFNYXApIG1ldGFkYXRhTWFwLmZvckVhY2goZnVuY3Rpb24gKF8sIGtleSkgeyBrZXlzLnB1c2goa2V5KTsgfSk7XG4gIHJldHVybiBrZXlzO1xufTtcbnZhciB0b01ldGFLZXkgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGl0ID09ICdzeW1ib2wnID8gaXQgOiBTdHJpbmcoaXQpO1xufTtcbnZhciBleHAgPSBmdW5jdGlvbiAoTykge1xuICAkZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCBPKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzdG9yZTogc3RvcmUsXG4gIG1hcDogZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCxcbiAgaGFzOiBvcmRpbmFyeUhhc093bk1ldGFkYXRhLFxuICBnZXQ6IG9yZGluYXJ5R2V0T3duTWV0YWRhdGEsXG4gIHNldDogb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSxcbiAga2V5czogb3JkaW5hcnlPd25NZXRhZGF0YUtleXMsXG4gIGtleTogdG9NZXRhS2V5LFxuICBleHA6IGV4cFxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWV0YWRhdGEuanNcbi8vIG1vZHVsZSBpZCA9IDM5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///39\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(41);\nvar IE8_DOM_DEFINE = __webpack_require__(184);\nvar toPrimitive = __webpack_require__(132);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(46) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcz83YWYwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGRQID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzXG4vLyBtb2R1bGUgaWQgPSA0MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///40\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(36);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcz9lZmIzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1vYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDQxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///41\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(466), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2pzb24vc3RyaW5naWZ5LmpzPzlhZjEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5XCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2pzb24vc3RyaW5naWZ5LmpzXG4vLyBtb2R1bGUgaWQgPSA0MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///42\n')},function(module,exports,__webpack_require__){eval("var META = __webpack_require__(49)('meta');\nvar isObject = __webpack_require__(6);\nvar has = __webpack_require__(23);\nvar setDesc = __webpack_require__(13).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(5)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhLmpzP2Q1YTAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIE1FVEEgPSByZXF1aXJlKCcuL191aWQnKSgnbWV0YScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgc2V0RGVzYyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaWQgPSAwO1xudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgRlJFRVpFID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpO1xufSk7XG52YXIgc2V0TWV0YSA9IGZ1bmN0aW9uIChpdCkge1xuICBzZXREZXNjKGl0LCBNRVRBLCB7IHZhbHVlOiB7XG4gICAgaTogJ08nICsgKytpZCwgLy8gb2JqZWN0IElEXG4gICAgdzoge30gICAgICAgICAgLy8gd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSB9KTtcbn07XG52YXIgZmFzdEtleSA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7XG4gIC8vIHJldHVybiBwcmltaXRpdmUgd2l0aCBwcmVmaXhcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG4gIGlmICghaGFzKGl0LCBNRVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gJ0YnO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiAnRSc7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIG9iamVjdCBJRFxuICB9IHJldHVybiBpdFtNRVRBXS5pO1xufTtcbnZhciBnZXRXZWFrID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiB0cnVlO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiBmYWxzZTtcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gaGFzaCB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IHJldHVybiBpdFtNRVRBXS53O1xufTtcbi8vIGFkZCBtZXRhZGF0YSBvbiBmcmVlemUtZmFtaWx5IG1ldGhvZHMgY2FsbGluZ1xudmFyIG9uRnJlZXplID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChGUkVFWkUgJiYgbWV0YS5ORUVEICYmIGlzRXh0ZW5zaWJsZShpdCkgJiYgIWhhcyhpdCwgTUVUQSkpIHNldE1ldGEoaXQpO1xuICByZXR1cm4gaXQ7XG59O1xudmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgS0VZOiBNRVRBLFxuICBORUVEOiBmYWxzZSxcbiAgZmFzdEtleTogZmFzdEtleSxcbiAgZ2V0V2VhazogZ2V0V2VhayxcbiAgb25GcmVlemU6IG9uRnJlZXplXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhLmpzXG4vLyBtb2R1bGUgaWQgPSA0M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///43\n")},function(module,exports){eval("module.exports = false;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19saWJyYXJ5LmpzPzU3NzkiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbGlicmFyeS5qc1xuLy8gbW9kdWxlIGlkID0gNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///44\n")},function(module,exports,__webpack_require__){eval("// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(9)('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(18)(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanM/NDYxMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMi4xLjMuMzEgQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG52YXIgVU5TQ09QQUJMRVMgPSByZXF1aXJlKCcuL193a3MnKSgndW5zY29wYWJsZXMnKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuaWYgKEFycmF5UHJvdG9bVU5TQ09QQUJMRVNdID09IHVuZGVmaW5lZCkgcmVxdWlyZSgnLi9faGlkZScpKEFycmF5UHJvdG8sIFVOU0NPUEFCTEVTLCB7fSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgQXJyYXlQcm90b1tVTlNDT1BBQkxFU11ba2V5XSA9IHRydWU7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanNcbi8vIG1vZHVsZSBpZCA9IDQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///45\n")},function(module,exports,__webpack_require__){eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(66)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzP2Y4NGQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanNcbi8vIG1vZHVsZSBpZCA9IDQ2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n")},function(module,exports,__webpack_require__){eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(187);\nvar defined = __webpack_require__(130);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NGRjNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDQ3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///47\n")},function(module,exports){eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzPzdkNGQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcHJvcGVydHktZGVzYy5qc1xuLy8gbW9kdWxlIGlkID0gNDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///48\n")},function(module,exports){eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL191aWQuanM/YmE1NCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaWQgPSAwO1xudmFyIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdWlkLmpzXG4vLyBtb2R1bGUgaWQgPSA0OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///49\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(150);\nvar enumBugKeys = __webpack_require__(105);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qta2V5cy5qcz80MjFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSA1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///50\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(33);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcz9jZThmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///51\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(3);\nvar dPs = __webpack_require__(151);\nvar enumBugKeys = __webpack_require__(105);\nvar IE_PROTO = __webpack_require__(104)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(102)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(106).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzP2VmMjkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBkUHMgPSByZXF1aXJlKCcuL19vYmplY3QtZHBzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgRW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBjcmVhdGVEaWN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdpZnJhbWUnKTtcbiAgdmFyIGkgPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIGd0ID0gJz4nO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICByZXF1aXJlKCcuL19odG1sJykuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGktLSkgZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tpXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZFBzKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA1MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///52\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(150);\nvar hiddenKeys = __webpack_require__(105).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wbi5qcz81OWMzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi43IC8gMTUuMi4zLjQgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKS5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BuLmpzXG4vLyBtb2R1bGUgaWQgPSA1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///53\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(4);\nvar dP = __webpack_require__(13);\nvar DESCRIPTORS = __webpack_require__(12);\nvar SPECIES = __webpack_require__(9)('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtc3BlY2llcy5qcz8wODQ5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZKSB7XG4gIHZhciBDID0gZ2xvYmFsW0tFWV07XG4gIGlmIChERVNDUklQVE9SUyAmJiBDICYmICFDW1NQRUNJRVNdKSBkUC5mKEMsIFNQRUNJRVMsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9XG4gIH0pO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDU0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///54\n")},function(module,exports){eval("module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hbi1pbnN0YW5jZS5qcz9mNDZhIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSwgZm9yYmlkZGVuRmllbGQpIHtcbiAgaWYgKCEoaXQgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikgfHwgKGZvcmJpZGRlbkZpZWxkICE9PSB1bmRlZmluZWQgJiYgZm9yYmlkZGVuRmllbGQgaW4gaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKG5hbWUgKyAnOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hbi1pbnN0YW5jZS5qc1xuLy8gbW9kdWxlIGlkID0gNTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///55\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(28);\nvar call = __webpack_require__(162);\nvar isArrayIter = __webpack_require__(118);\nvar anObject = __webpack_require__(3);\nvar toLength = __webpack_require__(14);\nvar getIterFn = __webpack_require__(120);\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mb3Itb2YuanM/YmU2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4vX2l0ZXItY2FsbCcpO1xudmFyIGlzQXJyYXlJdGVyID0gcmVxdWlyZSgnLi9faXMtYXJyYXktaXRlcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBnZXRJdGVyRm4gPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIEJSRUFLID0ge307XG52YXIgUkVUVVJOID0ge307XG52YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCBlbnRyaWVzLCBmbiwgdGhhdCwgSVRFUkFUT1IpIHtcbiAgdmFyIGl0ZXJGbiA9IElURVJBVE9SID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcmFibGU7IH0gOiBnZXRJdGVyRm4oaXRlcmFibGUpO1xuICB2YXIgZiA9IGN0eChmbiwgdGhhdCwgZW50cmllcyA/IDIgOiAxKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCwgc3RlcCwgaXRlcmF0b3IsIHJlc3VsdDtcbiAgaWYgKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ZXJhYmxlICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvclxuICBpZiAoaXNBcnJheUl0ZXIoaXRlckZuKSkgZm9yIChsZW5ndGggPSB0b0xlbmd0aChpdGVyYWJsZS5sZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgIHJlc3VsdCA9IGVudHJpZXMgPyBmKGFuT2JqZWN0KHN0ZXAgPSBpdGVyYWJsZVtpbmRleF0pWzBdLCBzdGVwWzFdKSA6IGYoaXRlcmFibGVbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIGZvciAoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChpdGVyYWJsZSk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTspIHtcbiAgICByZXN1bHQgPSBjYWxsKGl0ZXJhdG9yLCBmLCBzdGVwLnZhbHVlLCBlbnRyaWVzKTtcbiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcbmV4cG9ydHMuQlJFQUsgPSBCUkVBSztcbmV4cG9ydHMuUkVUVVJOID0gUkVUVVJOO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mb3Itb2YuanNcbi8vIG1vZHVsZSBpZCA9IDU2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n")},function(module,exports,__webpack_require__){eval("var redefine = __webpack_require__(19);\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZWRlZmluZS1hbGwuanM/MDM1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNyY1trZXldLCBzYWZlKTtcbiAgcmV0dXJuIHRhcmdldDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qc1xuLy8gbW9kdWxlIGlkID0gNTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///57\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(40);\nvar createDesc = __webpack_require__(74);\nmodule.exports = __webpack_require__(46) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanM/ODQ5YyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qc1xuLy8gbW9kdWxlIGlkID0gNThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///58\n")},function(module,exports){eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcz8wZjYyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzXG4vLyBtb2R1bGUgaWQgPSA1OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///59\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(456), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzY3MWUiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA2MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///60\n')},function(module,exports,__webpack_require__){eval("var def = __webpack_require__(13).f;\nvar has = __webpack_require__(23);\nvar TAG = __webpack_require__(9)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qcz9jOThiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkZWYgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgdGFnLCBzdGF0KSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKSBkZWYoaXQsIFRBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWcgfSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qc1xuLy8gbW9kdWxlIGlkID0gNjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///61\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar defined = __webpack_require__(32);\nvar fails = __webpack_require__(5);\nvar spaces = __webpack_require__(108);\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctdHJpbS5qcz82MjY3Il0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgc3BhY2VzID0gcmVxdWlyZSgnLi9fc3RyaW5nLXdzJyk7XG52YXIgc3BhY2UgPSAnWycgKyBzcGFjZXMgKyAnXSc7XG52YXIgbm9uID0gJ1xcdTIwMGJcXHUwMDg1JztcbnZhciBsdHJpbSA9IFJlZ0V4cCgnXicgKyBzcGFjZSArIHNwYWNlICsgJyonKTtcbnZhciBydHJpbSA9IFJlZ0V4cChzcGFjZSArIHNwYWNlICsgJyokJyk7XG5cbnZhciBleHBvcnRlciA9IGZ1bmN0aW9uIChLRVksIGV4ZWMsIEFMSUFTKSB7XG4gIHZhciBleHAgPSB7fTtcbiAgdmFyIEZPUkNFID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhIXNwYWNlc1tLRVldKCkgfHwgbm9uW0tFWV0oKSAhPSBub247XG4gIH0pO1xuICB2YXIgZm4gPSBleHBbS0VZXSA9IEZPUkNFID8gZXhlYyh0cmltKSA6IHNwYWNlc1tLRVldO1xuICBpZiAoQUxJQVMpIGV4cFtBTElBU10gPSBmbjtcbiAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBGT1JDRSwgJ1N0cmluZycsIGV4cCk7XG59O1xuXG4vLyAxIC0+IFN0cmluZyN0cmltTGVmdFxuLy8gMiAtPiBTdHJpbmcjdHJpbVJpZ2h0XG4vLyAzIC0+IFN0cmluZyN0cmltXG52YXIgdHJpbSA9IGV4cG9ydGVyLnRyaW0gPSBmdW5jdGlvbiAoc3RyaW5nLCBUWVBFKSB7XG4gIHN0cmluZyA9IFN0cmluZyhkZWZpbmVkKHN0cmluZykpO1xuICBpZiAoVFlQRSAmIDEpIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKGx0cmltLCAnJyk7XG4gIGlmIChUWVBFICYgMikgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UocnRyaW0sICcnKTtcbiAgcmV0dXJuIHN0cmluZztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0ZXI7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy10cmltLmpzXG4vLyBtb2R1bGUgaWQgPSA2MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///62\n")},function(module,exports){eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyYXRvcnMuanM/NmNkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyYXRvcnMuanNcbi8vIG1vZHVsZSBpZCA9IDYzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///63\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL192YWxpZGF0ZS1jb2xsZWN0aW9uLmpzP2NlYWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgVFlQRSkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSB8fCBpdC5fdCAhPT0gVFlQRSkgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdmFsaWRhdGUtY29sbGVjdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gNjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///64\n")},function(module,exports,__webpack_require__){eval("// optional / simple context binding\nvar aFunction = __webpack_require__(95);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanNcbi8vIG1vZHVsZSBpZCA9IDY1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///65\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzXG4vLyBtb2R1bGUgaWQgPSA2NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///66\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(186);\nvar enumBugKeys = __webpack_require__(137);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gNjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///67\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(79);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n }\n\n return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanM/Y2YwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHNlbGYsIGNhbGwpIHtcbiAgaWYgKCFzZWxmKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNhbGwgJiYgKCh0eXBlb2YgY2FsbCA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoY2FsbCkpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzXG4vLyBtb2R1bGUgaWQgPSA2OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///68\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(458);\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(203);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(79);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== "function" && superClass !== null) {\n throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzPzNkZmQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKTtcblxudmFyIF9zZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXRQcm90b3R5cGVPZik7XG5cbnZhciBfY3JlYXRlID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2NyZWF0ZVwiKTtcblxudmFyIF9jcmVhdGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlKTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArICh0eXBlb2Ygc3VwZXJDbGFzcyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoc3VwZXJDbGFzcykpKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9ICgwLCBfY3JlYXRlMi5kZWZhdWx0KShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mMi5kZWZhdWx0ID8gKDAsIF9zZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzcztcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzXG4vLyBtb2R1bGUgaWQgPSA2OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///69\n')},function(module,exports,__webpack_require__){eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(29);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pb2JqZWN0LmpzPzQzYTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///70\n")},function(module,exports){eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtcGllLmpzPzYzNTYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1waWUuanNcbi8vIG1vZHVsZSBpZCA9IDcxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///71\n")},function(module,exports,__webpack_require__){eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(29);\nvar TAG = __webpack_require__(9)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jbGFzc29mLmpzP2MwMmQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jbGFzc29mLmpzXG4vLyBtb2R1bGUgaWQgPSA3MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///72\n")},function(module,exports){eval("module.exports = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qc1xuLy8gbW9kdWxlIGlkID0gNzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///73\n")},function(module,exports){eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanNcbi8vIG1vZHVsZSBpZCA9IDc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///74\n")},function(module,exports){eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcz9mZGI0Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzXG4vLyBtb2R1bGUgaWQgPSA3NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///75\n")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanNcbi8vIG1vZHVsZSBpZCA9IDc2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///76\n")},function(module,exports,__webpack_require__){eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(130);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNzdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///77\n")},function(module,exports){eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanM/MzY5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtcGllLmpzXG4vLyBtb2R1bGUgaWQgPSA3OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///78\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(442);\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(444);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {\n return typeof obj === "undefined" ? "undefined" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcz9hNDU2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2l0ZXJhdG9yID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yXCIpO1xuXG52YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTtcblxudmFyIF9zeW1ib2wgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9zeW1ib2xcIik7XG5cbnZhciBfc3ltYm9sMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N5bWJvbCk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgX2l0ZXJhdG9yMi5kZWZhdWx0ID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgX3R5cGVvZihfaXRlcmF0b3IyLmRlZmF1bHQpID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YuanNcbi8vIG1vZHVsZSBpZCA9IDc5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///79\n')},function(module,exports,__webpack_require__){eval("var core = __webpack_require__(27);\nvar global = __webpack_require__(4);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(44) ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zaGFyZWQuanM/NTU2OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246IGNvcmUudmVyc2lvbixcbiAgbW9kZTogcmVxdWlyZSgnLi9fbGlicmFyeScpID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTggRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2hhcmVkLmpzXG4vLyBtb2R1bGUgaWQgPSA4MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///80\n")},function(module,exports,__webpack_require__){eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(24);\nvar toLength = __webpack_require__(14);\nvar toAbsoluteIndex = __webpack_require__(51);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qcz9hMmRlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qc1xuLy8gbW9kdWxlIGlkID0gODFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///81\n")},function(module,exports){eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wcy5qcz82MzUzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BzLmpzXG4vLyBtb2R1bGUgaWQgPSA4MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///82\n")},function(module,exports,__webpack_require__){eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(29);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1hcnJheS5qcz81Y2VkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMi4yIElzQXJyYXkoYXJndW1lbnQpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIGNvZihhcmcpID09ICdBcnJheSc7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1hcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gODNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///83\n")},function(module,exports,__webpack_require__){eval("// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(6);\nvar cof = __webpack_require__(29);\nvar MATCH = __webpack_require__(9)('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1yZWdleHAuanM/YmI0MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuOCBJc1JlZ0V4cChhcmd1bWVudClcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIE1BVENIID0gcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXNSZWdFeHA7XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgKChpc1JlZ0V4cCA9IGl0W01BVENIXSkgIT09IHVuZGVmaW5lZCA/ICEhaXNSZWdFeHAgOiBjb2YoaXQpID09ICdSZWdFeHAnKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLXJlZ2V4cC5qc1xuLy8gbW9kdWxlIGlkID0gODRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///84\n")},function(module,exports,__webpack_require__){eval("var ITERATOR = __webpack_require__(9)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWRldGVjdC5qcz9hYTRjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uICgpIHsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBza2lwQ2xvc2luZykge1xuICBpZiAoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNhZmUgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gWzddO1xuICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpO1xuICAgIGl0ZXIubmV4dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgZG9uZTogc2FmZSA9IHRydWUgfTsgfTtcbiAgICBhcnJbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcjsgfTtcbiAgICBleGVjKGFycik7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA4NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///85\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(3);\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mbGFncy5qcz9kMjkxIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDIxLjIuNS4zIGdldCBSZWdFeHAucHJvdG90eXBlLmZsYWdzXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IGFuT2JqZWN0KHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIGlmICh0aGF0Lmdsb2JhbCkgcmVzdWx0ICs9ICdnJztcbiAgaWYgKHRoYXQuaWdub3JlQ2FzZSkgcmVzdWx0ICs9ICdpJztcbiAgaWYgKHRoYXQubXVsdGlsaW5lKSByZXN1bHQgKz0gJ20nO1xuICBpZiAodGhhdC51bmljb2RlKSByZXN1bHQgKz0gJ3UnO1xuICBpZiAodGhhdC5zdGlja3kpIHJlc3VsdCArPSAneSc7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mbGFncy5qc1xuLy8gbW9kdWxlIGlkID0gODZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///86\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar hide = __webpack_require__(18);\nvar redefine = __webpack_require__(19);\nvar fails = __webpack_require__(5);\nvar defined = __webpack_require__(32);\nvar wks = __webpack_require__(9);\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n var fns = exec(defined, SYMBOL, ''[KEY]);\n var strfn = fns[0];\n var rxfn = fns[1];\n if (fails(function () {\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n })) {\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19maXgtcmUtd2tzLmpzPzU2MGQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xudmFyIHdrcyA9IHJlcXVpcmUoJy4vX3drcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGxlbmd0aCwgZXhlYykge1xuICB2YXIgU1lNQk9MID0gd2tzKEtFWSk7XG4gIHZhciBmbnMgPSBleGVjKGRlZmluZWQsIFNZTUJPTCwgJydbS0VZXSk7XG4gIHZhciBzdHJmbiA9IGZuc1swXTtcbiAgdmFyIHJ4Zm4gPSBmbnNbMV07XG4gIGlmIChmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIE8gPSB7fTtcbiAgICBPW1NZTUJPTF0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9O1xuICAgIHJldHVybiAnJ1tLRVldKE8pICE9IDc7XG4gIH0pKSB7XG4gICAgcmVkZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgS0VZLCBzdHJmbik7XG4gICAgaGlkZShSZWdFeHAucHJvdG90eXBlLCBTWU1CT0wsIGxlbmd0aCA9PSAyXG4gICAgICAvLyAyMS4yLjUuOCBSZWdFeHAucHJvdG90eXBlW0BAcmVwbGFjZV0oc3RyaW5nLCByZXBsYWNlVmFsdWUpXG4gICAgICAvLyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KVxuICAgICAgPyBmdW5jdGlvbiAoc3RyaW5nLCBhcmcpIHsgcmV0dXJuIHJ4Zm4uY2FsbChzdHJpbmcsIHRoaXMsIGFyZyk7IH1cbiAgICAgIC8vIDIxLjIuNS42IFJlZ0V4cC5wcm90b3R5cGVbQEBtYXRjaF0oc3RyaW5nKVxuICAgICAgLy8gMjEuMi41LjkgUmVnRXhwLnByb3RvdHlwZVtAQHNlYXJjaF0oc3RyaW5nKVxuICAgICAgOiBmdW5jdGlvbiAoc3RyaW5nKSB7IHJldHVybiByeGZuLmNhbGwoc3RyaW5nLCB0aGlzKTsgfVxuICAgICk7XG4gIH1cbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZpeC1yZS13a3MuanNcbi8vIG1vZHVsZSBpZCA9IDg3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///87\n")},function(module,exports,__webpack_require__){eval("// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(3);\nvar aFunction = __webpack_require__(16);\nvar SPECIES = __webpack_require__(9)('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zcGVjaWVzLWNvbnN0cnVjdG9yLmpzP2VjZWQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4zLjIwIFNwZWNpZXNDb25zdHJ1Y3RvcihPLCBkZWZhdWx0Q29uc3RydWN0b3IpXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBEKSB7XG4gIHZhciBDID0gYW5PYmplY3QoTykuY29uc3RydWN0b3I7XG4gIHZhciBTO1xuICByZXR1cm4gQyA9PT0gdW5kZWZpbmVkIHx8IChTID0gYW5PYmplY3QoQylbU1BFQ0lFU10pID09IHVuZGVmaW5lZCA/IEQgOiBhRnVuY3Rpb24oUyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zcGVjaWVzLWNvbnN0cnVjdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA4OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///88\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL191c2VyLWFnZW50LmpzP2UzNWMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIG5hdmlnYXRvciA9IGdsb2JhbC5uYXZpZ2F0b3I7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF2aWdhdG9yICYmIG5hdmlnYXRvci51c2VyQWdlbnQgfHwgJyc7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3VzZXItYWdlbnQuanNcbi8vIG1vZHVsZSBpZCA9IDg5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///89\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(4);\nvar $export = __webpack_require__(0);\nvar redefine = __webpack_require__(19);\nvar redefineAll = __webpack_require__(57);\nvar meta = __webpack_require__(43);\nvar forOf = __webpack_require__(56);\nvar anInstance = __webpack_require__(55);\nvar isObject = __webpack_require__(6);\nvar fails = __webpack_require__(5);\nvar $iterDetect = __webpack_require__(85);\nvar setToStringTag = __webpack_require__(61);\nvar inheritIfRequired = __webpack_require__(109);\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2xsZWN0aW9uLmpzP2QxMTgiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBtZXRhID0gcmVxdWlyZSgnLi9fbWV0YScpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgJGl0ZXJEZXRlY3QgPSByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4vX2luaGVyaXQtaWYtcmVxdWlyZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTkFNRSwgd3JhcHBlciwgbWV0aG9kcywgY29tbW9uLCBJU19NQVAsIElTX1dFQUspIHtcbiAgdmFyIEJhc2UgPSBnbG9iYWxbTkFNRV07XG4gIHZhciBDID0gQmFzZTtcbiAgdmFyIEFEREVSID0gSVNfTUFQID8gJ3NldCcgOiAnYWRkJztcbiAgdmFyIHByb3RvID0gQyAmJiBDLnByb3RvdHlwZTtcbiAgdmFyIE8gPSB7fTtcbiAgdmFyIGZpeE1ldGhvZCA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgICB2YXIgZm4gPSBwcm90b1tLRVldO1xuICAgIHJlZGVmaW5lKHByb3RvLCBLRVksXG4gICAgICBLRVkgPT0gJ2RlbGV0ZScgPyBmdW5jdGlvbiAoYSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3QoYSkgPyBmYWxzZSA6IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhKTtcbiAgICAgIH0gOiBLRVkgPT0gJ2hhcycgPyBmdW5jdGlvbiBoYXMoYSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3QoYSkgPyBmYWxzZSA6IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhKTtcbiAgICAgIH0gOiBLRVkgPT0gJ2dldCcgPyBmdW5jdGlvbiBnZXQoYSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3QoYSkgPyB1bmRlZmluZWQgOiBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSk7XG4gICAgICB9IDogS0VZID09ICdhZGQnID8gZnVuY3Rpb24gYWRkKGEpIHsgZm4uY2FsbCh0aGlzLCBhID09PSAwID8gMCA6IGEpOyByZXR1cm4gdGhpczsgfVxuICAgICAgICA6IGZ1bmN0aW9uIHNldChhLCBiKSB7IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhLCBiKTsgcmV0dXJuIHRoaXM7IH1cbiAgICApO1xuICB9O1xuICBpZiAodHlwZW9mIEMgIT0gJ2Z1bmN0aW9uJyB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIG5ldyBDKCkuZW50cmllcygpLm5leHQoKTtcbiAgfSkpKSB7XG4gICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3JcbiAgICBDID0gY29tbW9uLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpO1xuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCBtZXRob2RzKTtcbiAgICBtZXRhLk5FRUQgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHZhciBpbnN0YW5jZSA9IG5ldyBDKCk7XG4gICAgLy8gZWFybHkgaW1wbGVtZW50YXRpb25zIG5vdCBzdXBwb3J0cyBjaGFpbmluZ1xuICAgIHZhciBIQVNOVF9DSEFJTklORyA9IGluc3RhbmNlW0FEREVSXShJU19XRUFLID8ge30gOiAtMCwgMSkgIT0gaW5zdGFuY2U7XG4gICAgLy8gVjggfiAgQ2hyb21pdW0gNDAtIHdlYWstY29sbGVjdGlvbnMgdGhyb3dzIG9uIHByaW1pdGl2ZXMsIGJ1dCBzaG91bGQgcmV0dXJuIGZhbHNlXG4gICAgdmFyIFRIUk9XU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24gKCkgeyBpbnN0YW5jZS5oYXMoMSk7IH0pO1xuICAgIC8vIG1vc3QgZWFybHkgaW1wbGVtZW50YXRpb25zIGRvZXNuJ3Qgc3VwcG9ydHMgaXRlcmFibGVzLCBtb3N0IG1vZGVybiAtIG5vdCBjbG9zZSBpdCBjb3JyZWN0bHlcbiAgICB2YXIgQUNDRVBUX0lURVJBQkxFUyA9ICRpdGVyRGV0ZWN0KGZ1bmN0aW9uIChpdGVyKSB7IG5ldyBDKGl0ZXIpOyB9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICAvLyBmb3IgZWFybHkgaW1wbGVtZW50YXRpb25zIC0wIGFuZCArMCBub3QgdGhlIHNhbWVcbiAgICB2YXIgQlVHR1lfWkVSTyA9ICFJU19XRUFLICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFY4IH4gQ2hyb21pdW0gNDItIGZhaWxzIG9ubHkgd2l0aCA1KyBlbGVtZW50c1xuICAgICAgdmFyICRpbnN0YW5jZSA9IG5ldyBDKCk7XG4gICAgICB2YXIgaW5kZXggPSA1O1xuICAgICAgd2hpbGUgKGluZGV4LS0pICRpbnN0YW5jZVtBRERFUl0oaW5kZXgsIGluZGV4KTtcbiAgICAgIHJldHVybiAhJGluc3RhbmNlLmhhcygtMCk7XG4gICAgfSk7XG4gICAgaWYgKCFBQ0NFUFRfSVRFUkFCTEVTKSB7XG4gICAgICBDID0gd3JhcHBlcihmdW5jdGlvbiAodGFyZ2V0LCBpdGVyYWJsZSkge1xuICAgICAgICBhbkluc3RhbmNlKHRhcmdldCwgQywgTkFNRSk7XG4gICAgICAgIHZhciB0aGF0ID0gaW5oZXJpdElmUmVxdWlyZWQobmV3IEJhc2UoKSwgdGFyZ2V0LCBDKTtcbiAgICAgICAgaWYgKGl0ZXJhYmxlICE9IHVuZGVmaW5lZCkgZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGhhdFtBRERFUl0sIHRoYXQpO1xuICAgICAgICByZXR1cm4gdGhhdDtcbiAgICAgIH0pO1xuICAgICAgQy5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgIHByb3RvLmNvbnN0cnVjdG9yID0gQztcbiAgICB9XG4gICAgaWYgKFRIUk9XU19PTl9QUklNSVRJVkVTIHx8IEJVR0dZX1pFUk8pIHtcbiAgICAgIGZpeE1ldGhvZCgnZGVsZXRlJyk7XG4gICAgICBmaXhNZXRob2QoJ2hhcycpO1xuICAgICAgSVNfTUFQICYmIGZpeE1ldGhvZCgnZ2V0Jyk7XG4gICAgfVxuICAgIGlmIChCVUdHWV9aRVJPIHx8IEhBU05UX0NIQUlOSU5HKSBmaXhNZXRob2QoQURERVIpO1xuICAgIC8vIHdlYWsgY29sbGVjdGlvbnMgc2hvdWxkIG5vdCBjb250YWlucyAuY2xlYXIgbWV0aG9kXG4gICAgaWYgKElTX1dFQUsgJiYgcHJvdG8uY2xlYXIpIGRlbGV0ZSBwcm90by5jbGVhcjtcbiAgfVxuXG4gIHNldFRvU3RyaW5nVGFnKEMsIE5BTUUpO1xuXG4gIE9bTkFNRV0gPSBDO1xuICAkZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqIChDICE9IEJhc2UpLCBPKTtcblxuICBpZiAoIUlTX1dFQUspIGNvbW1vbi5zZXRTdHJvbmcoQywgTkFNRSwgSVNfTUFQKTtcblxuICByZXR1cm4gQztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24uanNcbi8vIG1vZHVsZSBpZCA9IDkwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///90\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar hide = __webpack_require__(18);\nvar uid = __webpack_require__(49);\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190eXBlZC5qcz9kM2I5Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFRZUEVEID0gdWlkKCd0eXBlZF9hcnJheScpO1xudmFyIFZJRVcgPSB1aWQoJ3ZpZXcnKTtcbnZhciBBQlYgPSAhIShnbG9iYWwuQXJyYXlCdWZmZXIgJiYgZ2xvYmFsLkRhdGFWaWV3KTtcbnZhciBDT05TVFIgPSBBQlY7XG52YXIgaSA9IDA7XG52YXIgbCA9IDk7XG52YXIgVHlwZWQ7XG5cbnZhciBUeXBlZEFycmF5Q29uc3RydWN0b3JzID0gKFxuICAnSW50OEFycmF5LFVpbnQ4QXJyYXksVWludDhDbGFtcGVkQXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXknXG4pLnNwbGl0KCcsJyk7XG5cbndoaWxlIChpIDwgbCkge1xuICBpZiAoVHlwZWQgPSBnbG9iYWxbVHlwZWRBcnJheUNvbnN0cnVjdG9yc1tpKytdXSkge1xuICAgIGhpZGUoVHlwZWQucHJvdG90eXBlLCBUWVBFRCwgdHJ1ZSk7XG4gICAgaGlkZShUeXBlZC5wcm90b3R5cGUsIFZJRVcsIHRydWUpO1xuICB9IGVsc2UgQ09OU1RSID0gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBBQlY6IEFCVixcbiAgQ09OU1RSOiBDT05TVFIsXG4gIFRZUEVEOiBUWVBFRCxcbiAgVklFVzogVklFV1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdHlwZWQuanNcbi8vIG1vZHVsZSBpZCA9IDkxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///91\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// Forced replacement prototype accessors methods\nmodule.exports = __webpack_require__(44) || !__webpack_require__(5)(function () {\n var K = Math.random();\n // In FF throws only define methods\n // eslint-disable-next-line no-undef, no-useless-call\n __defineSetter__.call(null, K, function () { /* empty */ });\n delete __webpack_require__(4)[K];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZm9yY2VkLXBhbS5qcz83NjZlIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEZvcmNlZCByZXBsYWNlbWVudCBwcm90b3R5cGUgYWNjZXNzb3JzIG1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fbGlicmFyeScpIHx8ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgdmFyIEsgPSBNYXRoLnJhbmRvbSgpO1xuICAvLyBJbiBGRiB0aHJvd3Mgb25seSBkZWZpbmUgbWV0aG9kc1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWYsIG5vLXVzZWxlc3MtY2FsbFxuICBfX2RlZmluZVNldHRlcl9fLmNhbGwobnVsbCwgSywgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbiAgZGVsZXRlIHJlcXVpcmUoJy4vX2dsb2JhbCcpW0tdO1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1mb3JjZWQtcGFtLmpzXG4vLyBtb2R1bGUgaWQgPSA5MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///92\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = __webpack_require__(0);\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtY29sbGVjdGlvbi1vZi5qcz9kMjNkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTExFQ1RJT04pIHtcbiAgJGV4cG9ydCgkZXhwb3J0LlMsIENPTExFQ1RJT04sIHsgb2Y6IGZ1bmN0aW9uIG9mKCkge1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBBID0gbmV3IEFycmF5KGxlbmd0aCk7XG4gICAgd2hpbGUgKGxlbmd0aC0tKSBBW2xlbmd0aF0gPSBhcmd1bWVudHNbbGVuZ3RoXTtcbiAgICByZXR1cm4gbmV3IHRoaXMoQSk7XG4gIH0gfSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtY29sbGVjdGlvbi1vZi5qc1xuLy8gbW9kdWxlIGlkID0gOTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///93\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = __webpack_require__(0);\nvar aFunction = __webpack_require__(16);\nvar ctx = __webpack_require__(28);\nvar forOf = __webpack_require__(56);\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtY29sbGVjdGlvbi1mcm9tLmpzPzg4YWEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09MTEVDVElPTikge1xuICAkZXhwb3J0KCRleHBvcnQuUywgQ09MTEVDVElPTiwgeyBmcm9tOiBmdW5jdGlvbiBmcm9tKHNvdXJjZSAvKiAsIG1hcEZuLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIG1hcEZuID0gYXJndW1lbnRzWzFdO1xuICAgIHZhciBtYXBwaW5nLCBBLCBuLCBjYjtcbiAgICBhRnVuY3Rpb24odGhpcyk7XG4gICAgbWFwcGluZyA9IG1hcEZuICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG1hcHBpbmcpIGFGdW5jdGlvbihtYXBGbik7XG4gICAgaWYgKHNvdXJjZSA9PSB1bmRlZmluZWQpIHJldHVybiBuZXcgdGhpcygpO1xuICAgIEEgPSBbXTtcbiAgICBpZiAobWFwcGluZykge1xuICAgICAgbiA9IDA7XG4gICAgICBjYiA9IGN0eChtYXBGbiwgYXJndW1lbnRzWzJdLCAyKTtcbiAgICAgIGZvck9mKHNvdXJjZSwgZmFsc2UsIGZ1bmN0aW9uIChuZXh0SXRlbSkge1xuICAgICAgICBBLnB1c2goY2IobmV4dEl0ZW0sIG4rKykpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvck9mKHNvdXJjZSwgZmFsc2UsIEEucHVzaCwgQSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgdGhpcyhBKTtcbiAgfSB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NldC1jb2xsZWN0aW9uLWZyb20uanNcbi8vIG1vZHVsZSBpZCA9IDk0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///94\n")},function(module,exports){eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gOTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///95\n")},function(module,exports){eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qc1xuLy8gbW9kdWxlIGlkID0gOTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///96\n")},function(module,exports,__webpack_require__){eval("var def = __webpack_require__(40).f;\nvar has = __webpack_require__(59);\nvar TAG = __webpack_require__(22)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdiYTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanNcbi8vIG1vZHVsZSBpZCA9IDk3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///97\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(436), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9hc3NpZ24uanM/YzI4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2Fzc2lnblwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvYXNzaWduLmpzXG4vLyBtb2R1bGUgaWQgPSA5OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///98\n')},function(module,exports,__webpack_require__){eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(21);\nvar core = __webpack_require__(10);\nvar fails = __webpack_require__(66);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanM/YmFhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qtc2FwLmpzXG4vLyBtb2R1bGUgaWQgPSA5OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///99\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(11);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('address-allocation'); /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\n// Log system\n\n\n// TODO: this could not be the best way to do a Singleton but at this moment it works;\n\nvar instance = void 0;\n\n/**\n * Class will ask to the message node for addresses\n */\n\nvar AddressAllocation = function () {\n /* private\n _url: URL\n _bus: MiniBus\n */\n\n /**\n * Create an Address Allocation\n * @param {URL.URL} url - url from who is sending the message\n * @param {MiniBus} bus - MiniBus used for address allocation\n */\n function AddressAllocation(url, bus, registry) {\n (0, _classCallCheck3.default)(this, AddressAllocation);\n\n\n if (!instance) {\n this._url = url + '/address-allocation';\n this._bus = bus;\n this._registry = registry;\n instance = this;\n } else {\n return instance;\n }\n }\n\n (0, _createClass3.default)(AddressAllocation, [{\n key: 'create',\n\n\n /**\n *\n * Ask for creation of a number of Hyperty addresses, to the domain message node.\n *\n * @param {Domain} domain - domain of the message node\n * @param {Number} number - number of address to be allocated\n * @param {Descriptor} info - descriptor to search for the hyperty (TODO:// this should be confirmed)\n * @see https://github.com/reTHINK-project/specs/blob/master/datamodel/core/hyperty-catalogue/readme.md#catalogue-data-model\n * @param {scheme} scheme - scheme of address to be created or reused, like: hyperty, comm, context, etc;\n * @param {boolean|URL.HypertyURL} reuseURL - reuseURL is used to reuse the hypertyURL previously registred;\n * @returns {Promise} this is Promise and returns an object with the address information\n *\n * @memberOf AddressAllocation\n */\n value: function create(domain, number, info, scheme, reuseURL) {\n\n // // console.log('typeof(reuseURL)', typeof(reuseURL), reuseURL);\n //debugger;\n if (reuseURL) {\n\n if (typeof reuseURL === 'boolean') {\n\n if (reuseURL) {\n return this._reuseAllocatedAddress(domain, number, info, scheme, reuseURL);\n } else {\n return this._allocateNewAddress(domain, scheme, number);\n }\n }\n\n if (typeof reuseURL === 'string' && (0, _utils.isURL)(reuseURL)) {\n //return this._reuseAllocatedAddress(domain, number, info, scheme, reuseURL);\n return new _promise2.default(function (resolve, reject) {\n var value = { newAddress: false, address: [reuseURL] };\n return resolve(value);\n });\n }\n } else {\n log.info('[AddressAllocation] - new address will be allocated');\n\n // if there is no URL saved request a new URL\n return this._allocateNewAddress(domain, scheme, number);\n }\n }\n }, {\n key: '_reuseAllocatedAddress',\n value: function _reuseAllocatedAddress(domain, number, info, scheme, reuseURL) {\n var _this2 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n console.log('REUSETEST - _reuseAllocatedAddress', domain, number, info, scheme, reuseURL);\n _this2._registry.checkRegisteredURLs(info, reuseURL).then(function (urls) {\n console.log('REUSETEST - registeredurls', urls);\n if (urls) {\n log.info('[AddressAllocation - ' + scheme + '] - Reuse URL');\n var value = { newAddress: false, address: urls };\n resolve(value);\n } else {\n\n if (typeof reuseURL === 'string') {\n log.info('[AddressAllocation - reuseURL] - Object ' + reuseURL + ' not found');\n reject('URL Not Found');\n } else if (typeof reuseURL === 'boolean') {\n _this2._allocateNewAddress(domain, scheme, number).then(resolve).catch(reject);\n } else {\n reject('URL Not Found');\n }\n }\n });\n });\n }\n }, {\n key: '_allocateNewAddress',\n value: function _allocateNewAddress(domain, scheme, number) {\n var _this3 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var msg = {\n type: 'create', from: _this3._url, to: 'domain://msg-node.' + domain + '/address-allocation',\n body: { value: { number: number } }\n };\n\n if (scheme !== 'hyperty') msg.body.scheme = scheme;\n\n log.info('[AddressAllocation - ' + scheme + '] - Request new URL');\n\n _this3._bus.postMessage(msg, function (reply) {\n if (reply.body.code === 200) {\n var result = { newAddress: true, address: reply.body.value.allocated };\n resolve(result);\n } else {\n reject(reply.body.desc);\n }\n });\n });\n }\n\n /**\n * Send a request to the domain message node, to deallocate one or more addresses\n * @param {Domain} domain - Domain of the message node.\n * @param {addresses} addresses to request the deallocation\n * @returns {Promise} the response by the message node\n */\n\n }, {\n key: 'delete',\n value: function _delete(domain, addresses) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var message = {\n type: 'delete', from: _this._url, to: 'domain://msg-node.' + domain + '/address-allocation',\n body: { childrenResources: addresses }\n };\n\n _this._bus.postMessage(message, function (reply) {\n if (reply.body.code === 200) {\n resolve(reply.body.code);\n } else {\n reject(reply.body.desc);\n }\n });\n });\n }\n }, {\n key: 'url',\n\n\n /**\n * get the URL value\n * @return {string} The url value;\n */\n get: function get() {\n return this._url;\n }\n }], [{\n key: 'instance',\n get: function get() {\n if (!instance) {\n throw new Error('The address allocation was not instantiated');\n }\n\n return instance;\n }\n }]);\n return AddressAllocation;\n}();\n\nexports.default = AddressAllocation;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9hbGxvY2F0aW9uL0FkZHJlc3NBbGxvY2F0aW9uLmpzPzFlNmEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXG4qXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4qXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4qXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbioqL1xuXG4vLyBMb2cgc3lzdGVtXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ2FkZHJlc3MtYWxsb2NhdGlvbicpO1xuXG5cbmltcG9ydCB7aXNVUkx9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcblxuLy8gVE9ETzogdGhpcyBjb3VsZCBub3QgYmUgdGhlIGJlc3Qgd2F5IHRvIGRvIGEgU2luZ2xldG9uIGJ1dCBhdCB0aGlzIG1vbWVudCBpdCB3b3JrcztcblxubGV0IGluc3RhbmNlO1xuXG4vKipcbiAqIENsYXNzIHdpbGwgYXNrIHRvIHRoZSBtZXNzYWdlIG5vZGUgZm9yIGFkZHJlc3Nlc1xuICovXG5jbGFzcyBBZGRyZXNzQWxsb2NhdGlvbiB7XG4gIC8qIHByaXZhdGVcbiAgX3VybDogVVJMXG4gIF9idXM6IE1pbmlCdXNcbiAgKi9cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEFkZHJlc3MgQWxsb2NhdGlvblxuICAgKiBAcGFyYW0gIHtVUkwuVVJMfSAgICAgIHVybCAtIHVybCBmcm9tIHdobyBpcyBzZW5kaW5nIHRoZSBtZXNzYWdlXG4gICAqIEBwYXJhbSAge01pbmlCdXN9ICAgICAgYnVzIC0gTWluaUJ1cyB1c2VkIGZvciBhZGRyZXNzIGFsbG9jYXRpb25cbiAgICovXG4gIGNvbnN0cnVjdG9yKHVybCwgYnVzLCByZWdpc3RyeSkge1xuXG4gICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAgdGhpcy5fdXJsID0gdXJsICsgJy9hZGRyZXNzLWFsbG9jYXRpb24nO1xuICAgICAgdGhpcy5fYnVzID0gYnVzO1xuICAgICAgdGhpcy5fcmVnaXN0cnkgPSByZWdpc3RyeTtcbiAgICAgIGluc3RhbmNlID0gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXQgaW5zdGFuY2UoKSB7XG4gICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYWRkcmVzcyBhbGxvY2F0aW9uIHdhcyBub3QgaW5zdGFudGlhdGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbmNlXG4gIH1cblxuICAvKipcbiAgICogZ2V0IHRoZSBVUkwgdmFsdWVcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgdXJsIHZhbHVlO1xuICAgKi9cbiAgZ2V0IHVybCgpIHsgcmV0dXJuIHRoaXMuX3VybDsgfVxuXG5cbiAgLyoqXG4gICAqXG4gICAqIEFzayBmb3IgY3JlYXRpb24gb2YgYSBudW1iZXIgb2YgSHlwZXJ0eSBhZGRyZXNzZXMsIHRvIHRoZSBkb21haW4gbWVzc2FnZSBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RvbWFpbn0gZG9tYWluIC0gZG9tYWluIG9mIHRoZSBtZXNzYWdlIG5vZGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IG51bWJlciAtIG51bWJlciBvZiBhZGRyZXNzIHRvIGJlIGFsbG9jYXRlZFxuICAgKiBAcGFyYW0ge0Rlc2NyaXB0b3J9IGluZm8gLSBkZXNjcmlwdG9yIHRvIHNlYXJjaCBmb3IgdGhlIGh5cGVydHkgKFRPRE86Ly8gdGhpcyBzaG91bGQgYmUgY29uZmlybWVkKVxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3Qvc3BlY3MvYmxvYi9tYXN0ZXIvZGF0YW1vZGVsL2NvcmUvaHlwZXJ0eS1jYXRhbG9ndWUvcmVhZG1lLm1kI2NhdGFsb2d1ZS1kYXRhLW1vZGVsXG4gICAqIEBwYXJhbSB7c2NoZW1lfSBzY2hlbWUgLSBzY2hlbWUgb2YgYWRkcmVzcyB0byBiZSBjcmVhdGVkIG9yIHJldXNlZCwgbGlrZTogaHlwZXJ0eSwgY29tbSwgY29udGV4dCwgZXRjO1xuICAgKiBAcGFyYW0ge2Jvb2xlYW58VVJMLkh5cGVydHlVUkx9IHJldXNlVVJMIC0gcmV1c2VVUkwgaXMgdXNlZCB0byByZXVzZSB0aGUgaHlwZXJ0eVVSTCBwcmV2aW91c2x5IHJlZ2lzdHJlZDtcbiAgICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0LCBFcnJvcj59IHRoaXMgaXMgUHJvbWlzZSBhbmQgcmV0dXJucyBhbiBvYmplY3Qgd2l0aCB0aGUgYWRkcmVzcyBpbmZvcm1hdGlvblxuICAgKlxuICAgKiBAbWVtYmVyT2YgQWRkcmVzc0FsbG9jYXRpb25cbiAgICovXG4gIGNyZWF0ZShkb21haW4sIG51bWJlciwgaW5mbywgc2NoZW1lLCByZXVzZVVSTCkge1xuXG4gICAgLy8gLy8gY29uc29sZS5sb2coJ3R5cGVvZihyZXVzZVVSTCknLCB0eXBlb2YocmV1c2VVUkwpLCByZXVzZVVSTCk7XG4gICAgLy9kZWJ1Z2dlcjtcbiAgICBpZiAocmV1c2VVUkwpIHtcblxuICAgICAgaWYgKHR5cGVvZihyZXVzZVVSTCkgPT09ICdib29sZWFuJykge1xuXG4gICAgICAgIGlmIChyZXVzZVVSTCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9yZXVzZUFsbG9jYXRlZEFkZHJlc3MoZG9tYWluLCBudW1iZXIsIGluZm8sIHNjaGVtZSwgcmV1c2VVUkwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9hbGxvY2F0ZU5ld0FkZHJlc3MoZG9tYWluLCBzY2hlbWUsIG51bWJlcik7XG4gICAgICAgIH1cblxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mKHJldXNlVVJMKSA9PT0gJ3N0cmluZycgJiYgaXNVUkwocmV1c2VVUkwpKSB7XG4gICAgICAgIC8vcmV0dXJuIHRoaXMuX3JldXNlQWxsb2NhdGVkQWRkcmVzcyhkb21haW4sIG51bWJlciwgaW5mbywgc2NoZW1lLCByZXVzZVVSTCk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0geyBuZXdBZGRyZXNzOiBmYWxzZSwgYWRkcmVzczogW3JldXNlVVJMXSB9O1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmluZm8oJ1tBZGRyZXNzQWxsb2NhdGlvbl0gLSBuZXcgYWRkcmVzcyB3aWxsIGJlIGFsbG9jYXRlZCcpO1xuXG4gICAgICAvLyBpZiB0aGVyZSBpcyBubyBVUkwgc2F2ZWQgcmVxdWVzdCBhIG5ldyBVUkxcbiAgICAgIHJldHVybiB0aGlzLl9hbGxvY2F0ZU5ld0FkZHJlc3MoZG9tYWluLCBzY2hlbWUsIG51bWJlcik7XG4gICAgfVxuXG4gIH1cblxuICBfcmV1c2VBbGxvY2F0ZWRBZGRyZXNzKGRvbWFpbiwgbnVtYmVyLCBpbmZvLCBzY2hlbWUsIHJldXNlVVJMKSB7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBjb25zb2xlLmxvZygnUkVVU0VURVNUIC0gIF9yZXVzZUFsbG9jYXRlZEFkZHJlc3MnLCBkb21haW4sIG51bWJlciwgaW5mbywgc2NoZW1lLCByZXVzZVVSTCk7XG4gICAgICB0aGlzLl9yZWdpc3RyeS5jaGVja1JlZ2lzdGVyZWRVUkxzKGluZm8sIHJldXNlVVJMKS50aGVuKCh1cmxzKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdSRVVTRVRFU1QgLSAgcmVnaXN0ZXJlZHVybHMnLCB1cmxzKTtcbiAgICAgICAgaWYgKHVybHMpIHtcbiAgICAgICAgICBsb2cuaW5mbygnW0FkZHJlc3NBbGxvY2F0aW9uIC0gJyArIHNjaGVtZSArICddIC0gUmV1c2UgVVJMJyk7XG4gICAgICAgICAgbGV0IHZhbHVlID0ge25ld0FkZHJlc3M6IGZhbHNlLCBhZGRyZXNzOiB1cmxzfTtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgIGlmICh0eXBlb2YocmV1c2VVUkwpID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgbG9nLmluZm8oJ1tBZGRyZXNzQWxsb2NhdGlvbiAtIHJldXNlVVJMXSAtIE9iamVjdCAnICsgcmV1c2VVUkwgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgcmVqZWN0KCdVUkwgTm90IEZvdW5kJyk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YocmV1c2VVUkwpID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHRoaXMuX2FsbG9jYXRlTmV3QWRkcmVzcyhkb21haW4sIHNjaGVtZSwgbnVtYmVyKS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdCgnVVJMIE5vdCBGb3VuZCcpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH1cblxuICBfYWxsb2NhdGVOZXdBZGRyZXNzKGRvbWFpbiwgc2NoZW1lLCBudW1iZXIpIHtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgIGxldCBtc2cgPSB7XG4gICAgICAgIHR5cGU6ICdjcmVhdGUnLCBmcm9tOiB0aGlzLl91cmwsIHRvOiAnZG9tYWluOi8vbXNnLW5vZGUuJyArIGRvbWFpbiArICcvYWRkcmVzcy1hbGxvY2F0aW9uJyxcbiAgICAgICAgYm9keToge3ZhbHVlOiB7IG51bWJlcjogbnVtYmVyIH0gfVxuICAgICAgfTtcblxuICAgICAgaWYgKHNjaGVtZSAhPT0gJ2h5cGVydHknKSBtc2cuYm9keS5zY2hlbWUgPSBzY2hlbWU7XG5cbiAgICAgIGxvZy5pbmZvKCdbQWRkcmVzc0FsbG9jYXRpb24gLSAnICsgc2NoZW1lICsgJ10gLSBSZXF1ZXN0IG5ldyBVUkwnKTtcblxuICAgICAgdGhpcy5fYnVzLnBvc3RNZXNzYWdlKG1zZywgKHJlcGx5KSA9PiB7XG4gICAgICAgIGlmIChyZXBseS5ib2R5LmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgIGxldCByZXN1bHQgPSB7bmV3QWRkcmVzczogdHJ1ZSwgYWRkcmVzczogcmVwbHkuYm9keS52YWx1ZS5hbGxvY2F0ZWR9O1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QocmVwbHkuYm9keS5kZXNjKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB9KTtcblxuICB9XG5cbiAgLyoqXG4gICogU2VuZCBhIHJlcXVlc3QgdG8gdGhlIGRvbWFpbiBtZXNzYWdlIG5vZGUsIHRvIGRlYWxsb2NhdGUgb25lIG9yIG1vcmUgYWRkcmVzc2VzXG4gICogQHBhcmFtICB7RG9tYWlufSBkb21haW4gLSBEb21haW4gb2YgdGhlIG1lc3NhZ2Ugbm9kZS5cbiAgKiBAcGFyYW0gIHthZGRyZXNzZXN9IGFkZHJlc3NlcyB0byByZXF1ZXN0IHRoZSBkZWFsbG9jYXRpb25cbiAgKiBAcmV0dXJucyB7UHJvbWlzZX0gIHRoZSByZXNwb25zZSBieSB0aGUgbWVzc2FnZSBub2RlXG4gICovXG4gIGRlbGV0ZShkb21haW4sIGFkZHJlc3Nlcykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBsZXQgbWVzc2FnZSA9IHtcbiAgICAgICAgdHlwZTogJ2RlbGV0ZScsIGZyb206IF90aGlzLl91cmwsIHRvOiAnZG9tYWluOi8vbXNnLW5vZGUuJyArIGRvbWFpbiArICcvYWRkcmVzcy1hbGxvY2F0aW9uJyxcbiAgICAgICAgYm9keToge2NoaWxkcmVuUmVzb3VyY2VzOiBhZGRyZXNzZXN9XG4gICAgICB9O1xuXG4gICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKG1lc3NhZ2UsIChyZXBseSkgPT4ge1xuICAgICAgICBpZiAocmVwbHkuYm9keS5jb2RlID09PSAyMDApIHtcbiAgICAgICAgICByZXNvbHZlKHJlcGx5LmJvZHkuY29kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KHJlcGx5LmJvZHkuZGVzYyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQWRkcmVzc0FsbG9jYXRpb247XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2FsbG9jYXRpb24vQWRkcmVzc0FsbG9jYXRpb24uanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCQTtBQUNBO0FBREE7QUFDQTtBQUdBO0FBQ0E7Ozs7O0FBSkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRkE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQ0E7Ozs7O0FBS0E7Ozs7O0FBS0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFnQkE7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7O0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTs7O0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7O0FBdElBOzs7O0FBSUE7QUFBQTtBQUFBOzs7QUFaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUEySUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///100\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _HandShakeProtocol = __webpack_require__(491);\n\nvar _HandShakeProtocol2 = _interopRequireDefault(_HandShakeProtocol);\n\nvar _utils = __webpack_require__(11);\n\nvar _MessageEncryptionHandling = __webpack_require__(492);\n\nvar _MessageEncryptionHandling2 = _interopRequireDefault(_MessageEncryptionHandling);\n\nvar _Crypto = __webpack_require__(493);\n\nvar _Crypto2 = _interopRequireDefault(_Crypto);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('CryptoManager'); // Log System\n\n/**\n* The Crypto Manager provides manages cryptographic features for the runtime including:\n* - Mutual Authentication between peers\n* - Crypto Keys\n* - e2e encryption and decription of communication between Hyperties and dta objects\n*\n*/\nvar CryptoManager = function () {\n\n /**\n * This is the constructor to initialise the CryptoManager, it does not require any input.\n * The init() must called in order to set mandatories attributes\n */\n\n function CryptoManager() {\n (0, _classCallCheck3.default)(this, CryptoManager);\n\n var _this = this;\n _this.userDefaultKeyRef = 'userAsymmetricKey';\n }\n\n (0, _createClass3.default)(CryptoManager, [{\n key: 'init',\n value: function init(runtimeURL, runtimeCapabilities, storageManager, dataObjectsStorage, registry, coreDiscovery, idm, runtimeFactory) {\n var _this = this;\n\n if (!runtimeURL) throw new Error('[] runtimeURL is missing.');\n if (!storageManager) throw new Error('storageManager is missing');\n if (!runtimeFactory) throw new Error('runtimeFactory is missing');\n\n _this._runtimeURL = runtimeURL;\n _this._cryptoManagerURL = _this._runtimeURL + '/cryptoManager';\n\n //_this._myURL = _this._runtimeURL + '/crypto';\n _this.storageManager = storageManager;\n _this.dataObjectsStorage = dataObjectsStorage;\n _this.runtimeCapabilities = runtimeCapabilities;\n\n _this._runtimeFactory = runtimeFactory;\n _this._domain = (0, _utils.divideURL)(_this._runtimeURL).domain;\n _this.chatKeys = {};\n _this._idm = idm;\n\n _this.dataObjectSessionKeys = {};\n _this.crypto = new _Crypto2.default(_this._runtimeFactory);\n _this.handShakeProtocol = new _HandShakeProtocol2.default(_this.chatKeys, _this.crypto, _this._idm, _this.dataObjectSessionKeys, _this.storageManager);\n\n //failsafe to enable/disable all the criptographic functions\n _this.isToUseEncryption = true;\n\n _this._registry = registry;\n _this._coreDiscovery = coreDiscovery;\n\n _this._messageEncryptionHandling = new _MessageEncryptionHandling2.default(_this._registry, _this.chatKeys, _this.crypto, _this.storageManager, _this.dataObjectsStorage, _this._idm);\n }\n\n //******************* GET AND SET METHODS *******************\n\n /**\n * return the messageBus in this Registry\n * @param {MessageBus} messageBus\n */\n\n }, {\n key: 'loadSessionKeys',\n\n\n // to be used to initialise IDM with SessionKeys used in previous session\n\n value: function loadSessionKeys() {\n var _this = this;\n return new _promise2.default(function (resolve) {\n\n _this.storageManager.get('dataObjectSessionKeys').then(function (sessionKeys) {\n if (sessionKeys) _this.dataObjectSessionKeys = sessionKeys;else _this.dataObjectSessionKeys = {};\n resolve();\n });\n });\n }\n }, {\n key: '_isFromRemoteSM',\n value: function _isFromRemoteSM(from) {\n var splitFrom = from.split('://');\n return splitFrom[0] === 'runtime' && from !== this._runtimeURL + '/sm';\n }\n }, {\n key: 'addCryptoGUIListeners',\n value: function addCryptoGUIListeners() {\n //TODO: Change the GUI invocation of this method\n var _this = this;\n\n _this._messageBus.addListener(_this._cryptoManagerURL, function (msg) {\n var funcName = msg.body.method;\n\n //let returnedValue;\n if (funcName === 'generateRSAKeyPair') {\n _this._crypto.getMyPublicKey().then(function (key) {\n var value = { type: 'execute', value: key, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if generateRSAKeyPair method postMessage error: ' + err);\n }\n });\n return;\n }\n });\n }\n\n //******************* ENCRYPTION METHODS *******************\n /**\n * Identifies the messages to be encrypted\n * @param {Message} message\n * @returns {boolean} returns true if the message requires encryption\n */\n\n }, {\n key: '_isToEncrypt',\n value: function _isToEncrypt(message) {\n var _this = this;\n log.info('[CryptoManager.istoChyperModule]', message);\n var isCreate = message.type === 'create';\n var isFromHyperty = message.from.includes('hyperty://');\n var isToHyperty = message.to.includes('hyperty://');\n var isToDataObject = (0, _utils.isDataObjectURL)(message.to);\n var reporter = _this.registry.getDataObjectReporter(message.to);\n\n var doMutualAuthentication = message.body.hasOwnProperty('mutual') ? message.body.mutual : true;\n\n if (!doMutualAuthentication) return false;\n if (reporter !== null && (0, _utils.isLegacy)(reporter)) {\n return false;\n }\n\n //if is not to apply encryption, then returns resolve\n if (!this.isToUseEncryption && !(message.type === 'handshake')) {\n log.info('not handshake: encryption disabled');\n return false;\n }\n\n if (message.type === 'update') {\n log.info('update:encryption disabled');\n return false;\n }\n\n if ((0, _utils.isLegacy)(message.to)) return false;\n\n return isCreate && isFromHyperty && isToHyperty || isCreate && isFromHyperty && isToDataObject && doMutualAuthentication || message.type === 'handshake' || message.type === 'update' && doMutualAuthentication;\n }\n }, {\n key: '_isToDecrypt',\n value: function _isToDecrypt(message) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n // For sybscribe message let's start the mutualAuthentication\n var isSubscription = message.type === 'subscribe';\n var isFromRemoteSM = _this._isFromRemoteSM(message.from);\n\n if (isSubscription & isFromRemoteSM) {\n log.log('_doMutualAuthenticationPhase1');\n console.log('istoDecrypt', message);\n var reporter = _this.registry.getDataObjectReporter(message.to);\n if (reporter !== null && (0, _utils.isLegacy)(reporter)) {\n return resolve(false);\n }\n\n _this._doMutualAuthenticationPhase1(message).then(function () {\n resolve(false);\n }, function (error) {\n reject(error);\n });\n } else if (message.hasOwnProperty('body') && message.body.hasOwnProperty('value') && typeof message.body.value === 'string') {\n log.log('_isToDecrypt:true');\n resolve(true);\n } else {\n log.log('_isToDecrypt:false');\n resolve(false);\n }\n }).catch(function (error) {\n log.error('[CryptoManager._isToDecrypt]', error);\n });\n }\n }, {\n key: 'encryptMessage',\n value: function encryptMessage(message) {\n //log.info('encryptMessage:message', message);\n var _this = this;\n\n log.log('encrypt message ');\n\n return new _promise2.default(function (resolve, reject) {\n\n //if is not to apply encryption, then returns resolve\n if (!_this._isToEncrypt(message)) {\n return resolve(message);\n }\n\n var dataObjectURL = (0, _utils.parseMessageURL)(message.to);\n var isToDataObject = (0, _utils.isDataObjectURL)(dataObjectURL);\n var isToLegacyIdentity = (0, _utils.isLegacy)(message.to);\n var isFromHyperty = (0, _utils.divideURL)(message.from).type === 'hyperty';\n var isToHyperty = (0, _utils.divideURL)(message.to).type === 'hyperty';\n\n if (message.type === 'update') {\n log.log('encrypt message: message type update');\n return resolve(message);\n }\n\n //------------\x3e Needs tests!\n if (isToLegacyIdentity) {\n resolve(message);\n } else if (isFromHyperty && isToHyperty) {\n _this._messageEncryptionHandling.encryptBetweenHyperties(message).then(function (result) {\n if (!result.isHandShakeNeeded) {\n resolve(result.message);\n } else {\n _this._doHandShakePhase(result.message, result.chatKeys).then(function (value) {\n _this.chatKeys[message.from + '<->' + message.to] = value.chatKeys;\n\n _this._messageBus.postMessage(value.message);\n reject('encrypt handshake protocol phase ');\n });\n }\n });\n\n //if from hyperty to a dataObjectURL\n } else if (isFromHyperty && isToDataObject) {\n _this._messageEncryptionHandling.encryptBetweenHypertyDataObject(message).then(function (result) {\n resolve(result);\n }).catch(function (err) {\n reject('On encryptMessage from method _messageEncryptionHandling error: ' + err);\n });\n }\n });\n }\n }, {\n key: 'encryptDataObject',\n value: function encryptDataObject(dataObject, sender) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n log.info('dataObject value to encrypt: ', dataObject);\n\n var dataObjectURL = (0, _utils.parseMessageURL)(sender);\n\n _this.storageManager.get('dataObjectSessionKeys').then(function (sessionKeys) {\n sessionKeys = (0, _utils.chatkeysToArrayCloner)(sessionKeys || {});\n var dataObjectKey = sessionKeys ? sessionKeys[dataObjectURL] : null;\n\n //check if there is already a session key for the chat room\n if (dataObjectKey) {\n\n // and if is to apply encryption, encrypt the messages\n if (dataObjectKey.isToEncrypt) {\n var iv = _this.crypto.generateIV();\n\n _this.crypto.encryptAES(dataObjectKey.sessionKey, (0, _utils.stringify)(dataObject), iv).then(function (encryptedValue) {\n var newValue = { value: (0, _utils.encode)(encryptedValue), iv: (0, _utils.encode)(iv) };\n\n //log.log('encrypted dataObject', newValue);\n return resolve(newValue);\n }).catch(function (err) {\n reject('On encryptDataObject from method encryptAES error: ' + err);\n });\n\n // if not, just send the message\n } else {\n log.info('The dataObject is not encrypted');\n return resolve(dataObject);\n }\n\n // start the generation of a new session Key\n } else {\n return reject('No dataObjectKey for this dataObjectURL:', dataObjectURL);\n }\n }).catch(function (err) {\n reject('On encryptDataObject from method storageManager.get error: ' + err);\n });\n });\n }\n }, {\n key: 'decryptMessage',\n value: function decryptMessage(message) {\n var _this = this;\n\n // log.log('decryptMessage:message', message);\n\n return new _promise2.default(function (resolve, reject) {\n _this._isToDecrypt(message).then(function (isToDecrypt) {\n\n //if is not to apply encryption, then returns resolve\n if (!isToDecrypt) return resolve(message);\n\n var dataObjectURL = (0, _utils.parseMessageURL)(message.to);\n\n var isToDataObject = (0, _utils.isDataObjectURL)(dataObjectURL);\n var isFromHyperty = (0, _utils.divideURL)(message.from).type === 'hyperty';\n var isToHyperty = (0, _utils.divideURL)(message.to).type === 'hyperty';\n\n if (message.type === 'update') {\n return resolve(message);\n }\n\n //is is hyperty to hyperty communication\n if (isFromHyperty && isToHyperty) {\n\n _this._messageEncryptionHandling.decryptBetweenHyperties(message).then(function (result) {\n if (!result.isHandShakeNeeded) {\n resolve(result.message);\n } else {\n _this._doHandShakePhase(result.message, result.chatKeys).then(function (value) {\n //if it was started by doMutualAuthentication then ends the protocol\n if (value === 'handShakeEnd') {\n //reject('decrypt handshake protocol phase');\n\n // if was started by a message, then resend that message\n } else {\n _this.chatKeys[message.to + '<->' + message.from] = value.chatKeys;\n _this._messageBus.postMessage(value.message);\n\n //reject('decrypt handshake protocol phase '); TODO: Check why is this commented?\n }\n }).catch(function (err) {\n reject('Error on decrypting message handshake in decryptBetweenHyperties: ', err);\n });\n }\n }).catch(function (err) {\n reject('Error on decrypting message in decryptBetweenHyperties: ', err);\n });\n\n //if from hyperty to a dataObjectURL\n } else if (isFromHyperty && isToDataObject) {\n // log.log('dataObject value to decrypt: ', message.body);\n _this._messageEncryptionHandling.decryptBetweenHypertyDataObject(message).then(function (result) {\n resolve(result);\n }).catch(function (err) {\n reject('Error on decrypting message in decryptBetweenHyperties: ', err);\n });\n } else {\n reject('wrong message to decrypt');\n }\n });\n });\n }\n }, {\n key: 'decryptDataObject',\n value: function decryptDataObject(dataObject, sender) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n //if is not to apply encryption, then returns resolve\n if (!_this.isToUseEncryption) {\n // log.log('decryption disabled');\n return resolve(dataObject);\n }\n\n var dataObjectURL = (0, _utils.parseMessageURL)(sender);\n\n // log.log('dataObject value to decrypt: ', dataObject);\n\n _this.storageManager.get('dataObjectSessionKeys').then(function (sessionKeys) {\n sessionKeys = (0, _utils.chatkeysToArrayCloner)(sessionKeys);\n var dataObjectKey = sessionKeys ? sessionKeys[dataObjectURL] : null;\n\n if (dataObjectKey) {\n\n //check if is to apply encryption\n if (dataObjectKey.isToEncrypt) {\n var iv = (0, _utils.decodeToUint8Array)(dataObject.iv);\n var encryptedValue = (0, _utils.decodeToUint8Array)(dataObject.value);\n\n _this.crypto.decryptAES(dataObjectKey.sessionKey, encryptedValue, iv).then(function (decryptedValue) {\n var parsedValue = (0, _utils.parse)(decryptedValue);\n var newValue = { value: parsedValue, iv: (0, _utils.encode)(iv) };\n\n // log.log('decrypted dataObject,', newValue);\n\n return resolve(newValue);\n }).catch(function (err) {\n reject('On decryptDataObject from method encryptAES error: ' + err);\n });\n\n //if not, just return the dataObject\n } else {\n // log.log('The dataObject is not encrypted');\n return resolve(dataObject);\n }\n } else {\n return reject('No dataObjectKey for this dataObjectURL:', dataObjectURL);\n }\n });\n });\n }\n }, {\n key: '_doMutualAuthenticationPhase1',\n value: function _doMutualAuthenticationPhase1(message) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n var to = message.to.split('/');\n\n //let subsIndex = to.indexOf('subscription');\n //let isDataObjectSubscription = subsIndex !== -1;\n to.pop();\n var dataObjectURL = to[0] + '//' + to[2] + '/' + to[3];\n _this._doMutualAuthenticationPhase2(dataObjectURL, message.body.subscriber).then(function () {\n _this._registry.registerSubscriber(dataObjectURL, message.body.subscriber);\n resolve();\n }, function (error) {\n reject(error);\n });\n });\n }\n }, {\n key: '_doMutualAuthenticationPhase2',\n value: function _doMutualAuthenticationPhase2(sender, receiver) {\n log.info('doMutualAuthentication:sender ', sender);\n log.info('doMutualAuthentication:receiver ', receiver);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var dataObjectURL = void 0;\n\n // check if the sender is a dataObject and if so stores that value\n var reporterURL = _this._registry.getReporterURLSynchonous(sender);\n if (reporterURL) {\n dataObjectURL = sender;\n sender = reporterURL;\n }\n\n var msg = {\n to: receiver,\n from: sender,\n callback: undefined,\n body: { handshakePhase: 'startHandShake', ignore: 'ignoreMessage' }\n };\n\n if (!sender || !receiver) {\n return reject('sender or receiver missing on doMutualAuthentication');\n }\n\n var chatKeys = _this.chatKeys[sender + '<->' + receiver];\n var userURL = _this._registry.getHypertyOwner(sender);\n\n if (userURL) {\n\n if (!chatKeys) {\n // callback to resolve when finish the mutual authentication\n var resolved = function resolved(value) {\n // log.log('callback value:', value);\n resolve(value);\n };\n msg.callback = resolved;\n msg.dataObjectURL = dataObjectURL;\n\n chatKeys = _this._messageEncryptionHandling.newChatCrypto(msg, userURL);\n _this.chatKeys[sender + '<->' + receiver] = chatKeys;\n }\n\n if (chatKeys.authenticated) {\n\n var startSessionKeyExchange = {\n to: sender,\n from: receiver\n };\n chatKeys.dataObjectURL = dataObjectURL;\n _this._sendReporterSessionKey(startSessionKeyExchange, chatKeys).then(function (value) {\n\n _this._messageBus.postMessage(value.message);\n resolve('exchange of chat sessionKey initiated');\n }).catch(function (err) {\n reject('On doMutualAuthentication from method _sendReporterSessionKey error: ' + err);\n });\n } else {\n _this._doHandShakePhase(msg, chatKeys);\n }\n } else {\n reject('Mutual authentication error: Hyperty owner could not be resolved');\n }\n });\n }\n\n /**\n * returns the reporter associated to the dataObject URL\n * @param {String} dataObjectURL dataObject url\n * @return {String} reporter dataObject url reporter\n */\n /* _getHypertyFromDataObject(dataObjectURL) {\n log.info('_getHypertyFromDataObject:dataObjectURL', dataObjectURL);\n let _this = this;\n return new Promise(function(resolve, reject) {\n let splitedURL = divideURL(dataObjectURL);\n let domain = splitedURL.domain;\n let finalURL = _this._parseMessageURL(dataObjectURL);\n // check if is the creator of the hyperty\n let reporterURL = _this.registry.getReporterURLSynchonous(finalURL);\n log.info('_getHypertyFromDataObject:reporterURL', reporterURL);\n if (reporterURL) {\n resolve(reporterURL);\n } else {\n // check if there is already an association from an hypertyURL to the dataObject\n let storedReporterURL = _this.dataObjectsIdentity[finalURL];\n log.info('_getHypertyFromDataObject:storedReporterURL', storedReporterURL);\n if (storedReporterURL) {\n resolve(storedReporterURL);\n } else {\n // check if there is any hyperty that subscribed the dataObjectURL\n let subscriberHyperty = _this.registry.getDataObjectSubscriberHyperty(dataObjectURL);\n log.info('_getHypertyFromDataObject:subscriberHyperty', subscriberHyperty);\n if (subscriberHyperty) {\n resolve(subscriberHyperty);\n } else {\n // search in domain registry for the hyperty associated to the dataObject\n // search in case is a subscriber who wants to know the reporter\n _this._coreDiscovery.discoverDataObjectPerURL(finalURL, domain).then(dataObject => {\n log.info('_getHypertyFromDataObject:dataObject', dataObject);\n _this.dataObjectsIdentity[finalURL] = dataObject.reporter;\n log.info('_getHypertyFromDataObject:dataObject.reporter', dataObject.reporter);\n resolve(dataObject.reporter);\n }, err => {\n reject(err);\n });\n }\n }\n }\n });\n }*/\n\n }, {\n key: '_sendReporterSessionKey',\n value: function _sendReporterSessionKey(message, chatKeys) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var sessionKeyBundle = _this.dataObjectSessionKeys[chatKeys.dataObjectURL];\n var reporterSessionKeyMsg = void 0;\n var valueToEncrypt = void 0;\n var sessionKey = void 0;\n var iv = void 0;\n var value = {};\n\n //if there is not yet a session Key, generates a new one\n if (!sessionKeyBundle) {\n sessionKey = _this.crypto.generateRandom();\n _this.dataObjectSessionKeys[chatKeys.dataObjectURL] = { sessionKey: sessionKey, isToEncrypt: true };\n\n var dataObjectSessionKeysClone = (0, _utils.chatkeysToStringCloner)(_this.dataObjectSessionKeys);\n\n _this.storageManager.set('dataObjectSessionKeys', 0, dataObjectSessionKeysClone).catch(function (err) {\n reject('On _sendReporterSessionKey from method storageManager.set(dataObjectSessionKeys...) error: ' + err);\n });\n } else {\n sessionKey = sessionKeyBundle.sessionKey;\n }\n\n try {\n valueToEncrypt = (0, _utils.encode)({ value: (0, _utils.encode)(sessionKey), dataObjectURL: chatKeys.dataObjectURL });\n } catch (err) {\n return reject('On _sendReporterSessionKey from method storageManager.set error valueToEncrypt: ' + err);\n }\n\n iv = _this.crypto.generateIV();\n value.iv = (0, _utils.encode)(iv);\n _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, valueToEncrypt, iv).then(function (encryptedValue) {\n\n reporterSessionKeyMsg = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'reporterSessionKey',\n value: (0, _utils.encode)(encryptedValue)\n }\n };\n\n var filteredMessage = (0, _utils.filterMessageToHash)(reporterSessionKeyMsg, valueToEncrypt + iv, chatKeys.hypertyFrom.messageInfo);\n\n return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage);\n }).then(function (hashedMessage) {\n var valueWithHash = (0, _utils.encode)({ value: reporterSessionKeyMsg.body.value, hash: (0, _utils.encode)(hashedMessage), iv: value.iv });\n\n reporterSessionKeyMsg.body.value = valueWithHash;\n\n resolve({ message: reporterSessionKeyMsg, chatKeys: chatKeys });\n }).catch(function (err) {\n reject('On _sendReporterSessionKey from chained promises encryptAES error: ' + err);\n });\n });\n }\n\n /**\n * Function that resolve and create the domainURL in case it is provided one. If not, resolve the default domainURL\n * @param {String} idpDomain idpDomain (Optional)\n */\n\n }, {\n key: '_resolveDomain',\n value: function _resolveDomain(idpDomain) {\n if (!idpDomain) {\n return 'domain-idp://google.com';\n } else {\n return 'domain-idp://' + idpDomain;\n }\n }\n }, {\n key: '_doHandShakePhase',\n value: function _doHandShakePhase(message, chatKeys) {\n // log('_doHandShakePhase:dataObject', message);\n //\tlog('_doHandShakePhase:chatKeys', chatKeys);\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var handshakeType = message.body.handshakePhase;\n\n log.info('handshake phase: ', handshakeType);\n\n switch (handshakeType) {\n\n case 'startHandShake':\n _this.handShakeProtocol.startHandShake(message, chatKeys).then(function (result) {\n if (result.postToBus) {\n _this._messageBus.postMessage(result.message);\n } else {\n resolve({ message: result.message, chatKeys: result.chatKeys });\n }\n });\n break;\n\n case 'senderHello':\n _this.handShakeProtocol.senderHello(message, chatKeys).then(function (result) {\n resolve(result);\n });\n break;\n\n case 'receiverHello':\n _this.getMyPrivateKey().then(function (privateKey) {\n _this.handShakeProtocol.receiverHello(message, chatKeys, privateKey).then(function (result) {\n resolve(result);\n }).catch(function (err) {\n reject(err);\n });\n });\n break;\n\n case 'senderCertificate':\n _this.getMyPrivateKey().then(function (privateKey) {\n _this.handShakeProtocol.senderCertificate(message, chatKeys, privateKey).then(function (result) {\n resolve(result);\n }).catch(function (err) {\n reject(err);\n });\n });\n break;\n\n case 'receiverFinishedMessage':\n _this.handShakeProtocol.receiverFinishedMessage(message, chatKeys).then(function (result) {\n if (result.sendReporterSessionKey) {\n _this._sendReporterSessionKey(result.message, result.chatKeys).then(function (value) {\n resolve(value);\n });\n } else {\n resolve({ message: result.message, chatKeys: result.chatKeys });\n }\n }).catch(function (err) {\n reject(err);\n });\n break;\n\n case 'reporterSessionKey':\n {\n _this.handShakeProtocol.reporterSessionKey(message, chatKeys).then(function (result) {\n resolve(result);\n }).catch(function (err) {\n reject(err);\n });\n break;\n }\n\n case 'receiverAcknowledge':\n {\n _this.handShakeProtocol.receiverAcknowledge(message, chatKeys).then(function (result) {\n resolve(result);\n }).catch(function (err) {\n reject(err);\n });\n break;\n }\n\n default:\n reject(message);\n }\n });\n }\n\n /**\n * Retrieves a public keys given a user refrence. If no key is found,\n generates a new key asymmetric key and retrieves the public keys.\n * @param {userRef} String user reference for the key pair\n * @return {Array} public key\n */\n\n }, {\n key: 'getMyPublicKey',\n value: function getMyPublicKey() {\n var userRef = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.userDefaultKeyRef;\n\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n _this.storageManager.get(userRef).then(function (storedKeyPair) {\n if (storedKeyPair) {\n return resolve(storedKeyPair.public);\n }\n _this._generateAndStoreNewAsymetricKey(userRef).then(function (generatedKeyPair) {\n resolve(generatedKeyPair.public);\n }).catch(function (err) {\n log.error('[getMyPublicKey:_generateAndStoreNewAsymetricKey:err]: ' + err.message);\n reject(err);\n });\n }).catch(function (err) {\n log.error('[getMyPublicKey:storageManager:err]: ' + err.message);\n reject(err);\n });\n });\n }\n\n /**\n * Retrieves a private keys given a user refrence. If no key is found,\n generates a new key asymmetric key and retrieves the private key.\n * @param {userRef} String user reference for the key pair\n * @return {Array} private key\n **/\n\n }, {\n key: 'getMyPrivateKey',\n value: function getMyPrivateKey() {\n var userRef = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.userDefaultKeyRef;\n\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n _this.storageManager.get(userRef).then(function (storedKeyPair) {\n if (storedKeyPair) {\n return resolve(storedKeyPair.private);\n }\n _this._generateAndStoreNewAsymetricKey(userRef).then(function (generatedKeyPair) {\n resolve(generatedKeyPair.private);\n }).catch(function (err) {\n log.error('[getMyPrivateKey:_generateAndStoreNewAsymetricKey:err]: ' + err.message);\n reject(err);\n });\n }).catch(function (err) {\n log.error('[getMyPrivateKey:storageManager:err]: ' + err.message);\n reject(err);\n });\n });\n }\n\n /**\n * Generates a new key pair, stores and retrives the key pair.\n * @param {userRef} String user reference for the key pair\n * @return {Array} private key\n **/\n\n }, {\n key: '_generateAndStoreNewAsymetricKey',\n value: function _generateAndStoreNewAsymetricKey(userRef) {\n var _this = this;\n var keyPair = undefined;\n return new _promise2.default(function (resolve, reject) {\n _this.crypto.generateRSAKeyPair().then(function (generatedKeyPair) {\n log.log('_generateAndStoreNewAsymetricKey:userAsymmetricKeyGenerated', generatedKeyPair);\n keyPair = generatedKeyPair;\n return _this.storageManager.set(userRef, 0, generatedKeyPair);\n }).then(function (storedReference) {\n log.log('_generateAndStoreNewAsymetricKey:userAsymmetricKeySuccess', storedReference);\n resolve(keyPair);\n }).catch(function (err) {\n log.error('[_generateAndStoreNewAsymetricKey:err]: ' + err.message);\n reject(err);\n });\n });\n }\n }, {\n key: '_isToDecrypt',\n value: function _isToDecrypt(message) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n // For sybscribe message let's start the mutualAuthentication\n var isSubscription = message.type === 'subscribe';\n var isFromRemoteSM = _this._isFromRemoteSM(message.from);\n\n if (isSubscription & isFromRemoteSM) {\n log.log('_doMutualAuthenticationPhase1');\n\n _this._doMutualAuthenticationPhase1(message).then(function () {\n resolve(false);\n }, function (error) {\n reject(error);\n });\n } else if (message.hasOwnProperty('body') && message.body.hasOwnProperty('value') && typeof message.body.value === 'string') {\n log.log('_isToDecrypt:true');\n resolve(true);\n } else {\n log.log('_isToDecrypt:false');\n resolve(false);\n }\n }).catch(function (error) {\n log.error('[CryptoManager._isToDecrypt]', error);\n });\n }\n\n /**\n * Identifies the messages to be encrypted\n * @param {Message} message\n * @returns {boolean} returns true if the message requires encryption\n */\n\n }, {\n key: '_isToEncrypt',\n value: function _isToEncrypt(message) {\n log.info('[CryptoManager.istoChyperModule]', message);\n var isCreate = message.type === 'create';\n var isFromHyperty = message.from.includes('hyperty://');\n var isToHyperty = message.to.includes('hyperty://');\n var isToDataObject = (0, _utils.isDataObjectURL)(message.to);\n\n var doMutualAuthentication = message.body.hasOwnProperty('mutual') ? message.body.mutual : true;\n\n if (!doMutualAuthentication) return false;\n\n //if is not to apply encryption, then returns resolve\n if (!this.isToUseEncryption && !(message.type === 'handshake')) {\n log.info('not handshake: encryption disabled');\n return false;\n }\n\n if (message.type === 'update') {\n log.info('update:encryption disabled');\n return false;\n }\n\n if ((0, _utils.isLegacy)(message.to)) return false;\n\n return isCreate && isFromHyperty && isToHyperty || isCreate && isFromHyperty && isToDataObject && doMutualAuthentication || message.type === 'handshake' || message.type === 'update' && doMutualAuthentication;\n }\n }, {\n key: 'messageBus',\n get: function get() {\n var _this = this;\n return _this._messageBus;\n }\n\n /**\n * Set the messageBus in this Registry\n * @param {MessageBus} messageBus\n */\n ,\n set: function set(messageBus) {\n var _this = this;\n _this._messageBus = messageBus;\n\n _this.addCryptoGUIListeners();\n }\n\n /**\n * return the coreDiscovery component\n */\n\n }, {\n key: 'coreDiscovery',\n get: function get() {\n var _this = this;\n return _this._coreDiscovery;\n }\n\n /**\n * return user's public key\n */\n\n /* getMyPublicKey() {\n // to be implemented\n return new Promise((resolve)=> {\n resolve('mypublickey');\n });\n }\n */\n /**\n * Set the coreDiscovery component\n * @param {coreDiscovery} coreDiscovery\n */\n ,\n set: function set(coreDiscovery) {\n var _this = this;\n _this._coreDiscovery = coreDiscovery;\n }\n\n /**\n * return the registry in this idModule\n * @param {registry} registry\n */\n\n }, {\n key: 'registry',\n get: function get() {\n var _this = this;\n return _this._registry;\n }\n\n /**\n * Set the registry in this idModule\n * @param {registry} reg\n */\n ,\n set: function set(registry) {\n var _this = this;\n _this._registry = registry;\n }\n }]);\n return CryptoManager;\n}();\n\n/*\nconst nodeJSKeyPairPopulate = { public: [48, 130, 1, 34, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0, 3, 130, 1, 15, 0, 48, 130, 1, 10, 2, 130, 1, 1, 0, 228, 43, 101, 12, 121, 7, 157, 71, 81, 58, 219, 32, 10, 108, 193, 179, 212, 116, 255, 59, 217, 32, 161, 201, 53, 171, 226, 199, 137, 202, 171, 60, 82, 53, 125, 62, 177, 126, 165, 24, 141, 30, 15, 226, 59, 107, 34, 7, 13, 149, 112, 125, 10, 230, 191, 156, 164, 177, 10, 185, 13, 66, 3, 217, 166, 244, 90, 119, 111, 27, 145, 104, 71, 189, 166, 226, 255, 133, 83, 151, 231, 101, 151, 89, 22, 19, 65, 154, 10, 53, 208, 218, 252, 219, 37, 50, 212, 86, 145, 107, 132, 90, 233, 202, 227, 108, 114, 141, 29, 73, 187, 31, 13, 234, 0, 232, 24, 191, 35, 149, 179, 138, 214, 159, 245, 162, 148, 221, 118, 17, 105, 89, 151, 146, 209, 55, 236, 61, 143, 233, 228, 10, 115, 8, 81, 197, 45, 123, 187, 223, 176, 254, 165, 69, 143, 29, 100, 114, 17, 130, 226, 223, 33, 11, 240, 81, 61, 172, 191, 157, 246, 202, 87, 131, 221, 88, 48, 127, 159, 119, 160, 152, 117, 61, 253, 174, 65, 214, 203, 218, 63, 50, 78, 160, 181, 221, 211, 128, 70, 178, 191, 170, 0, 13, 122, 173, 12, 203, 252, 4, 184, 225, 252, 7, 62, 96, 116, 15, 216, 158, 55, 85, 48, 16, 9, 206, 119, 74, 112, 243, 136, 84, 184, 223, 254, 101, 91, 61, 10, 91, 85, 192, 147, 144, 57, 29, 66, 238, 199, 244, 193, 194, 150, 232, 200, 107, 2, 3, 1, 0, 1],\n private: [48, 130, 4, 191, 2, 1, 0, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0, 4, 130, 4, 169, 48, 130, 4, 165, 2, 1, 0, 2, 130, 1, 1, 0, 228, 43, 101, 12, 121, 7, 157, 71, 81, 58, 219, 32, 10, 108, 193, 179, 212, 116, 255, 59, 217, 32, 161, 201, 53, 171, 226, 199, 137, 202, 171, 60, 82, 53, 125, 62, 177, 126, 165, 24, 141, 30, 15, 226, 59, 107, 34, 7, 13, 149, 112, 125, 10, 230, 191, 156, 164, 177, 10, 185, 13, 66, 3, 217, 166, 244, 90, 119, 111, 27, 145, 104, 71, 189, 166, 226, 255, 133, 83, 151, 231, 101, 151, 89, 22, 19, 65, 154, 10, 53, 208, 218, 252, 219, 37, 50, 212, 86, 145, 107, 132, 90, 233, 202, 227, 108, 114, 141, 29, 73, 187, 31, 13, 234, 0, 232, 24, 191, 35, 149, 179, 138, 214, 159, 245, 162, 148, 221, 118, 17, 105, 89, 151, 146, 209, 55, 236, 61, 143, 233, 228, 10, 115, 8, 81, 197, 45, 123, 187, 223, 176, 254, 165, 69, 143, 29, 100, 114, 17, 130, 226, 223, 33, 11, 240, 81, 61, 172, 191, 157, 246, 202, 87, 131, 221, 88, 48, 127, 159, 119, 160, 152, 117, 61, 253, 174, 65, 214, 203, 218, 63, 50, 78, 160, 181, 221, 211, 128, 70, 178, 191, 170, 0, 13, 122, 173, 12, 203, 252, 4, 184, 225, 252, 7, 62, 96, 116, 15, 216, 158, 55, 85, 48, 16, 9, 206, 119, 74, 112, 243, 136, 84, 184, 223, 254, 101, 91, 61, 10, 91, 85, 192, 147, 144, 57, 29, 66, 238, 199, 244, 193, 194, 150, 232, 200, 107, 2, 3, 1, 0, 1, 2, 130, 1, 0, 103, 244, 137, 118, 116, 82, 14, 203, 102, 107, 253, 88, 12, 199, 222, 60, 243, 136, 86, 157, 74, 224, 190, 53, 113, 57, 157, 250, 49, 130, 96, 31, 252, 136, 152, 70, 143, 17, 215, 96, 103, 51, 18, 35, 141, 212, 210, 205, 9, 216, 83, 70, 245, 71, 138, 119, 112, 229, 164, 176, 9, 37, 81, 161, 193, 154, 68, 249, 115, 106, 201, 6, 12, 225, 144, 126, 141, 210, 141, 242, 128, 159, 221, 163, 222, 21, 233, 230, 167, 206, 59, 24, 250, 233, 81, 122, 102, 26, 6, 233, 72, 133, 47, 77, 155, 238, 86, 6, 139, 24, 131, 163, 179, 112, 48, 247, 142, 6, 207, 204, 173, 223, 140, 199, 150, 95, 123, 152, 202, 155, 131, 238, 62, 96, 133, 4, 217, 51, 121, 30, 38, 178, 189, 216, 44, 35, 241, 93, 7, 62, 90, 111, 216, 66, 209, 243, 128, 234, 141, 84, 135, 181, 13, 38, 220, 114, 245, 240, 178, 95, 220, 206, 11, 186, 234, 213, 66, 121, 83, 68, 89, 75, 46, 183, 145, 183, 147, 160, 215, 118, 198, 125, 181, 146, 30, 251, 58, 87, 47, 209, 237, 97, 24, 47, 179, 6, 110, 242, 99, 150, 226, 148, 198, 174, 146, 101, 213, 87, 178, 10, 223, 105, 18, 56, 53, 22, 212, 158, 170, 176, 51, 86, 145, 125, 124, 44, 9, 85, 19, 144, 246, 170, 78, 124, 30, 32, 12, 166, 174, 139, 77, 63, 173, 82, 10, 153, 2, 129, 129, 0, 248, 18, 143, 246, 137, 136, 145, 219, 178, 39, 27, 94, 64, 90, 47, 163, 114, 60, 63, 187, 131, 143, 244, 16, 42, 128, 231, 117, 92, 98, 219, 155, 62, 107, 252, 17, 245, 45, 160, 225, 103, 142, 72, 36, 193, 150, 235, 214, 175, 62, 212, 56, 45, 9, 0, 60, 114, 107, 134, 228, 204, 131, 131, 214, 94, 201, 148, 159, 99, 139, 181, 13, 119, 38, 30, 107, 166, 165, 203, 43, 34, 20, 207, 171, 32, 58, 167, 62, 196, 153, 103, 204, 213, 247, 48, 111, 227, 59, 95, 97, 194, 187, 53, 10, 247, 108, 58, 86, 28, 29, 113, 8, 110, 171, 220, 245, 11, 82, 233, 223, 91, 68, 166, 117, 174, 187, 62, 77, 2, 129, 129, 0, 235, 118, 2, 105, 239, 212, 30, 104, 157, 41, 109, 11, 248, 152, 22, 236, 97, 40, 153, 131, 228, 5, 86, 187, 113, 126, 144, 76, 141, 79, 110, 250, 146, 152, 49, 58, 156, 201, 176, 92, 189, 209, 30, 112, 108, 175, 204, 204, 247, 164, 46, 129, 239, 98, 127, 49, 145, 218, 63, 193, 124, 174, 18, 98, 201, 99, 154, 162, 138, 78, 159, 253, 3, 248, 3, 209, 36, 239, 193, 155, 193, 5, 19, 236, 37, 78, 118, 135, 250, 199, 7, 141, 248, 120, 36, 136, 93, 98, 174, 60, 18, 215, 93, 174, 107, 141, 116, 145, 167, 221, 210, 169, 247, 67, 254, 222, 161, 134, 63, 221, 90, 87, 42, 99, 227, 81, 173, 151, 2, 129, 129, 0, 133, 23, 168, 103, 83, 232, 146, 160, 181, 23, 40, 38, 204, 13, 214, 203, 49, 41, 195, 227, 189, 181, 8, 243, 119, 106, 75, 67, 250, 250, 10, 234, 98, 118, 26, 250, 35, 121, 132, 124, 10, 76, 26, 198, 165, 154, 108, 19, 117, 88, 23, 17, 192, 143, 184, 177, 181, 141, 157, 4, 185, 248, 193, 77, 204, 243, 7, 170, 240, 4, 111, 113, 183, 0, 27, 136, 20, 19, 149, 74, 33, 241, 218, 108, 236, 80, 171, 148, 16, 116, 97, 109, 83, 74, 88, 145, 94, 239, 102, 192, 19, 114, 207, 5, 128, 51, 111, 164, 237, 86, 154, 99, 52, 197, 62, 57, 182, 6, 152, 245, 61, 137, 58, 105, 159, 2, 84, 109, 2, 129, 129, 0, 226, 67, 111, 132, 95, 91, 101, 177, 63, 189, 44, 53, 193, 184, 92, 230, 223, 98, 133, 74, 209, 86, 52, 7, 65, 195, 206, 100, 81, 178, 144, 65, 167, 151, 42, 79, 89, 149, 18, 173, 188, 21, 244, 251, 49, 230, 41, 150, 153, 46, 35, 38, 231, 99, 174, 56, 115, 32, 215, 253, 85, 147, 108, 197, 147, 34, 236, 216, 222, 177, 57, 90, 136, 114, 207, 48, 46, 31, 90, 220, 18, 58, 143, 239, 111, 214, 27, 95, 6, 36, 53, 229, 62, 108, 45, 39, 1, 30, 47, 178, 56, 164, 206, 56, 42, 208, 46, 193, 61, 31, 147, 45, 147, 23, 187, 22, 50, 255, 111, 229, 132, 199, 152, 75, 142, 136, 209, 151, 2, 129, 129, 0, 165, 56, 232, 76, 55, 57, 240, 159, 92, 207, 220, 143, 130, 30, 57, 234, 251, 172, 171, 180, 54, 159, 229, 96, 246, 73, 112, 146, 75, 157, 242, 201, 161, 218, 37, 176, 35, 170, 50, 90, 148, 102, 191, 199, 239, 174, 78, 72, 67, 85, 199, 45, 149, 145, 132, 161, 212, 33, 157, 75, 216, 79, 39, 233, 18, 210, 255, 26, 72, 229, 239, 44, 12, 147, 158, 176, 192, 95, 126, 32, 175, 23, 226, 131, 139, 197, 175, 193, 62, 8, 151, 252, 68, 154, 94, 89, 189, 125, 90, 30, 36, 175, 73, 230, 194, 13, 233, 247, 123, 60, 241, 47, 171, 51, 189, 112, 111, 213, 141, 89, 70, 249, 236, 63, 236, 110, 115, 208]};\n*/\n\nexports.default = new CryptoManager();\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9jcnlwdG9NYW5hZ2VyL0NyeXB0b01hbmFnZXIuanM/ZDliYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMb2cgU3lzdGVtXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0NyeXB0b01hbmFnZXInKTtcbmltcG9ydCBIYW5kU2hha2VQcm90b2NvbCBmcm9tICcuL0hhbmRTaGFrZVByb3RvY29sJztcblxuaW1wb3J0IHtkaXZpZGVVUkwsIGlzRGF0YU9iamVjdFVSTCwgaXNMZWdhY3ksIGNoYXRrZXlzVG9TdHJpbmdDbG9uZXIsIGNoYXRrZXlzVG9BcnJheUNsb25lciwgcGFyc2VNZXNzYWdlVVJMLFxuICBwYXJzZSwgc3RyaW5naWZ5LCBlbmNvZGUsIGRlY29kZVRvVWludDhBcnJheSwgZmlsdGVyTWVzc2FnZVRvSGFzaH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMuanMnO1xuaW1wb3J0IE1lc3NhZ2VFbmNyeXB0aW9uSGFuZGxpbmcgZnJvbSAnLi9NZXNzYWdlRW5jcnlwdGlvbkhhbmRsaW5nLmpzJztcblxuaW1wb3J0IENyeXB0byBmcm9tICcuL0NyeXB0byc7XG5cbi8qKlxuKiAgVGhlIENyeXB0byBNYW5hZ2VyIHByb3ZpZGVzIG1hbmFnZXMgY3J5cHRvZ3JhcGhpYyBmZWF0dXJlcyBmb3IgdGhlIHJ1bnRpbWUgaW5jbHVkaW5nOlxuKiAgLSBNdXR1YWwgQXV0aGVudGljYXRpb24gYmV0d2VlbiBwZWVyc1xuKiAgLSBDcnlwdG8gS2V5c1xuKiAgLSBlMmUgZW5jcnlwdGlvbiBhbmQgZGVjcmlwdGlvbiBvZiBjb21tdW5pY2F0aW9uIGJldHdlZW4gSHlwZXJ0aWVzIGFuZCBkdGEgb2JqZWN0c1xuKlxuKi9cbmNsYXNzIENyeXB0b01hbmFnZXIge1xuXG4gIC8qKlxuICAqIFRoaXMgaXMgdGhlIGNvbnN0cnVjdG9yIHRvIGluaXRpYWxpc2UgdGhlIENyeXB0b01hbmFnZXIsIGl0IGRvZXMgbm90IHJlcXVpcmUgYW55IGlucHV0LlxuICAqIFRoZSBpbml0KCkgbXVzdCBjYWxsZWQgaW4gb3JkZXIgdG8gc2V0IG1hbmRhdG9yaWVzIGF0dHJpYnV0ZXNcbiAgKi9cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIF90aGlzLnVzZXJEZWZhdWx0S2V5UmVmID0gJ3VzZXJBc3ltbWV0cmljS2V5JztcbiAgfVxuXG4gIGluaXQocnVudGltZVVSTCwgcnVudGltZUNhcGFiaWxpdGllcywgc3RvcmFnZU1hbmFnZXIsIGRhdGFPYmplY3RzU3RvcmFnZSwgcmVnaXN0cnksIGNvcmVEaXNjb3ZlcnksIGlkbSwgcnVudGltZUZhY3RvcnkpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKCFydW50aW1lVVJMKSB0aHJvdyBuZXcgRXJyb3IoJ1tdIHJ1bnRpbWVVUkwgaXMgbWlzc2luZy4nKTtcbiAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB0aHJvdyBuZXcgRXJyb3IoJ3N0b3JhZ2VNYW5hZ2VyIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXJ1bnRpbWVGYWN0b3J5KSB0aHJvdyBuZXcgRXJyb3IoJ3J1bnRpbWVGYWN0b3J5IGlzIG1pc3NpbmcnKTtcblxuICAgIF90aGlzLl9ydW50aW1lVVJMID0gcnVudGltZVVSTDtcbiAgICBfdGhpcy5fY3J5cHRvTWFuYWdlclVSTCA9IF90aGlzLl9ydW50aW1lVVJMICsgJy9jcnlwdG9NYW5hZ2VyJztcblxuICAgIC8vX3RoaXMuX215VVJMID0gX3RoaXMuX3J1bnRpbWVVUkwgKyAnL2NyeXB0byc7XG4gICAgX3RoaXMuc3RvcmFnZU1hbmFnZXIgPSBzdG9yYWdlTWFuYWdlcjtcbiAgICBfdGhpcy5kYXRhT2JqZWN0c1N0b3JhZ2UgPSBkYXRhT2JqZWN0c1N0b3JhZ2U7XG4gICAgX3RoaXMucnVudGltZUNhcGFiaWxpdGllcyA9IHJ1bnRpbWVDYXBhYmlsaXRpZXM7XG5cbiAgICBfdGhpcy5fcnVudGltZUZhY3RvcnkgPSBydW50aW1lRmFjdG9yeTtcbiAgICBfdGhpcy5fZG9tYWluID0gZGl2aWRlVVJMKF90aGlzLl9ydW50aW1lVVJMKS5kb21haW47XG4gICAgX3RoaXMuY2hhdEtleXMgPSB7fTtcbiAgICBfdGhpcy5faWRtID0gaWRtO1xuXG4gICAgX3RoaXMuZGF0YU9iamVjdFNlc3Npb25LZXlzID0ge307XG4gICAgX3RoaXMuY3J5cHRvID0gbmV3IENyeXB0byhfdGhpcy5fcnVudGltZUZhY3RvcnkpO1xuICAgIF90aGlzLmhhbmRTaGFrZVByb3RvY29sID0gbmV3IEhhbmRTaGFrZVByb3RvY29sKF90aGlzLmNoYXRLZXlzLCBfdGhpcy5jcnlwdG8sIF90aGlzLl9pZG0sXG4gICAgICBfdGhpcy5kYXRhT2JqZWN0U2Vzc2lvbktleXMsIF90aGlzLnN0b3JhZ2VNYW5hZ2VyKTtcblxuICAgIC8vZmFpbHNhZmUgdG8gZW5hYmxlL2Rpc2FibGUgYWxsIHRoZSBjcmlwdG9ncmFwaGljIGZ1bmN0aW9uc1xuICAgIF90aGlzLmlzVG9Vc2VFbmNyeXB0aW9uID0gdHJ1ZTtcblxuICAgIF90aGlzLl9yZWdpc3RyeSA9IHJlZ2lzdHJ5O1xuICAgIF90aGlzLl9jb3JlRGlzY292ZXJ5ID0gY29yZURpc2NvdmVyeTtcblxuICAgIF90aGlzLl9tZXNzYWdlRW5jcnlwdGlvbkhhbmRsaW5nID0gbmV3IE1lc3NhZ2VFbmNyeXB0aW9uSGFuZGxpbmcoX3RoaXMuX3JlZ2lzdHJ5LFxuICAgICAgX3RoaXMuY2hhdEtleXMsIF90aGlzLmNyeXB0bywgX3RoaXMuc3RvcmFnZU1hbmFnZXIsIF90aGlzLmRhdGFPYmplY3RzU3RvcmFnZSwgX3RoaXMuX2lkbSk7XG4gIH1cblxuICAvLyoqKioqKioqKioqKioqKioqKiogR0VUIEFORCBTRVQgTUVUSE9EUyAqKioqKioqKioqKioqKioqKioqXG5cbiAgLyoqXG4gICogcmV0dXJuIHRoZSBtZXNzYWdlQnVzIGluIHRoaXMgUmVnaXN0cnlcbiAgKiBAcGFyYW0ge01lc3NhZ2VCdXN9ICAgICAgICAgICBtZXNzYWdlQnVzXG4gICovXG4gIGdldCBtZXNzYWdlQnVzKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIF90aGlzLl9tZXNzYWdlQnVzO1xuICB9XG5cbiAgLyoqXG4gICogU2V0IHRoZSBtZXNzYWdlQnVzIGluIHRoaXMgUmVnaXN0cnlcbiAgKiBAcGFyYW0ge01lc3NhZ2VCdXN9ICAgICAgICAgICBtZXNzYWdlQnVzXG4gICovXG4gIHNldCBtZXNzYWdlQnVzKG1lc3NhZ2VCdXMpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIF90aGlzLl9tZXNzYWdlQnVzID0gbWVzc2FnZUJ1cztcblxuICAgIF90aGlzLmFkZENyeXB0b0dVSUxpc3RlbmVycygpO1xuICB9XG5cbiAgLyoqXG4gICogcmV0dXJuIHRoZSBjb3JlRGlzY292ZXJ5IGNvbXBvbmVudFxuICAqL1xuICBnZXQgY29yZURpc2NvdmVyeSgpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBfdGhpcy5fY29yZURpc2NvdmVyeTtcbiAgfVxuXG4gIC8qKlxuICAqIHJldHVybiB1c2VyJ3MgcHVibGljIGtleVxuICAqL1xuXG4gIC8qICBnZXRNeVB1YmxpY0tleSgpIHtcbiAgICAvLyB0byBiZSBpbXBsZW1lbnRlZFxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKT0+IHtcbiAgICAgIHJlc29sdmUoJ215cHVibGlja2V5Jyk7XG5cbiAgICB9KTtcbiAgfVxuKi9cbiAgLyoqXG4gICogU2V0IHRoZSBjb3JlRGlzY292ZXJ5IGNvbXBvbmVudFxuICAqIEBwYXJhbSB7Y29yZURpc2NvdmVyeX0gY29yZURpc2NvdmVyeVxuICAqL1xuICBzZXQgY29yZURpc2NvdmVyeShjb3JlRGlzY292ZXJ5KSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBfdGhpcy5fY29yZURpc2NvdmVyeSA9IGNvcmVEaXNjb3Zlcnk7XG4gIH1cblxuICAvKipcbiAgKiByZXR1cm4gdGhlIHJlZ2lzdHJ5IGluIHRoaXMgaWRNb2R1bGVcbiAgKiBAcGFyYW0ge3JlZ2lzdHJ5fSAgICAgICAgICAgcmVnaXN0cnlcbiAgKi9cbiAgZ2V0IHJlZ2lzdHJ5KCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIF90aGlzLl9yZWdpc3RyeTtcbiAgfVxuXG4gIC8qKlxuICAqIFNldCB0aGUgcmVnaXN0cnkgaW4gdGhpcyBpZE1vZHVsZVxuICAqIEBwYXJhbSB7cmVnaXN0cnl9ICAgICByZWdcbiAgKi9cbiAgc2V0IHJlZ2lzdHJ5KHJlZ2lzdHJ5KSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBfdGhpcy5fcmVnaXN0cnkgPSByZWdpc3RyeTtcbiAgfVxuXG5cbiAgLy8gdG8gYmUgdXNlZCB0byBpbml0aWFsaXNlIElETSB3aXRoIFNlc3Npb25LZXlzIHVzZWQgaW4gcHJldmlvdXMgc2Vzc2lvblxuXG4gIGxvYWRTZXNzaW9uS2V5cygpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXG4gICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5nZXQoJ2RhdGFPYmplY3RTZXNzaW9uS2V5cycpLnRoZW4oKHNlc3Npb25LZXlzKSA9PiB7XG4gICAgICAgIGlmIChzZXNzaW9uS2V5cykgX3RoaXMuZGF0YU9iamVjdFNlc3Npb25LZXlzID0gc2Vzc2lvbktleXM7XG4gICAgICAgIGVsc2UgX3RoaXMuZGF0YU9iamVjdFNlc3Npb25LZXlzID0ge307XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgX2lzRnJvbVJlbW90ZVNNKGZyb20pIHtcbiAgICBsZXQgc3BsaXRGcm9tID0gZnJvbS5zcGxpdCgnOi8vJyk7XG4gICAgcmV0dXJuIHNwbGl0RnJvbVswXSA9PT0gJ3J1bnRpbWUnICYmIGZyb20gIT09IHRoaXMuX3J1bnRpbWVVUkwgKyAnL3NtJztcbiAgfVxuXG4gIGFkZENyeXB0b0dVSUxpc3RlbmVycygpIHtcbiAgICAvL1RPRE86IENoYW5nZSB0aGUgR1VJIGludm9jYXRpb24gb2YgdGhpcyBtZXRob2RcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMuX21lc3NhZ2VCdXMuYWRkTGlzdGVuZXIoX3RoaXMuX2NyeXB0b01hbmFnZXJVUkwsIChtc2cpID0+IHtcbiAgICAgIGxldCBmdW5jTmFtZSA9IG1zZy5ib2R5Lm1ldGhvZDtcblxuICAgICAgLy9sZXQgcmV0dXJuZWRWYWx1ZTtcbiAgICAgIGlmIChmdW5jTmFtZSA9PT0gJ2dlbmVyYXRlUlNBS2V5UGFpcicpIHtcbiAgICAgICAgX3RoaXMuX2NyeXB0by5nZXRNeVB1YmxpY0tleSgpLnRoZW4oKGtleSkgPT4ge1xuICAgICAgICAgIGxldCB2YWx1ZSA9IHt0eXBlOiAnZXhlY3V0ZScsIHZhbHVlOiBrZXksIGNvZGU6IDIwMH07XG4gICAgICAgICAgbGV0IHJlcGx5TXNnID0ge2lkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIHRvOiBtc2cuZnJvbSwgZnJvbTogbXNnLnRvLCBib2R5OiB2YWx1ZX07XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHJlcGx5TXNnKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcignT24gYWRkR1VJTGlzdGVuZXJzIGZyb20gaWYgZ2VuZXJhdGVSU0FLZXlQYWlyIG1ldGhvZCBwb3N0TWVzc2FnZSBlcnJvcjogJyArIGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgfSk7XG4gIH1cblxuXG4gIC8vKioqKioqKioqKioqKioqKioqKiBFTkNSWVBUSU9OIE1FVEhPRFMgKioqKioqKioqKioqKioqKioqKlxuICAvKipcbiogSWRlbnRpZmllcyB0aGUgbWVzc2FnZXMgdG8gYmUgZW5jcnlwdGVkXG4qIEBwYXJhbSB7TWVzc2FnZX0gICAgbWVzc2FnZVxuKiBAcmV0dXJucyB7Ym9vbGVhbn0gIHJldHVybnMgdHJ1ZSBpZiB0aGUgbWVzc2FnZSByZXF1aXJlcyBlbmNyeXB0aW9uXG4qL1xuXG4gIF9pc1RvRW5jcnlwdChtZXNzYWdlKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBsb2cuaW5mbygnW0NyeXB0b01hbmFnZXIuaXN0b0NoeXBlck1vZHVsZV0nLCBtZXNzYWdlKTtcbiAgICBsZXQgaXNDcmVhdGUgPSBtZXNzYWdlLnR5cGUgPT09ICdjcmVhdGUnO1xuICAgIGxldCBpc0Zyb21IeXBlcnR5ID0gbWVzc2FnZS5mcm9tLmluY2x1ZGVzKCdoeXBlcnR5Oi8vJyk7XG4gICAgbGV0IGlzVG9IeXBlcnR5ID0gbWVzc2FnZS50by5pbmNsdWRlcygnaHlwZXJ0eTovLycpO1xuICAgIGxldCBpc1RvRGF0YU9iamVjdCA9IGlzRGF0YU9iamVjdFVSTChtZXNzYWdlLnRvKTtcbiAgICBsZXQgcmVwb3J0ZXIgPSBfdGhpcy5yZWdpc3RyeS5nZXREYXRhT2JqZWN0UmVwb3J0ZXIobWVzc2FnZS50byk7XG5cblxuICAgIGxldCBkb011dHVhbEF1dGhlbnRpY2F0aW9uID0gbWVzc2FnZS5ib2R5Lmhhc093blByb3BlcnR5KCdtdXR1YWwnKSA/IG1lc3NhZ2UuYm9keS5tdXR1YWwgOiB0cnVlO1xuXG4gICAgaWYgKCFkb011dHVhbEF1dGhlbnRpY2F0aW9uKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHJlcG9ydGVyICE9PSBudWxsICYmIGlzTGVnYWN5KHJlcG9ydGVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vaWYgaXMgbm90IHRvIGFwcGx5IGVuY3J5cHRpb24sIHRoZW4gcmV0dXJucyByZXNvbHZlXG4gICAgaWYgKCF0aGlzLmlzVG9Vc2VFbmNyeXB0aW9uICYmICEobWVzc2FnZS50eXBlID09PSAnaGFuZHNoYWtlJykpIHtcbiAgICAgIGxvZy5pbmZvKCdub3QgaGFuZHNoYWtlOiBlbmNyeXB0aW9uIGRpc2FibGVkJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGxvZy5pbmZvKCd1cGRhdGU6ZW5jcnlwdGlvbiBkaXNhYmxlZCcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChpc0xlZ2FjeShtZXNzYWdlLnRvKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuICgoaXNDcmVhdGUgJiYgaXNGcm9tSHlwZXJ0eSAmJiBpc1RvSHlwZXJ0eSkgfHwgKGlzQ3JlYXRlICYmIGlzRnJvbUh5cGVydHkgJiYgaXNUb0RhdGFPYmplY3QgJiYgZG9NdXR1YWxBdXRoZW50aWNhdGlvbikgfHwgbWVzc2FnZS50eXBlID09PSAnaGFuZHNoYWtlJyB8fCAobWVzc2FnZS50eXBlID09PSAndXBkYXRlJyAmJiBkb011dHVhbEF1dGhlbnRpY2F0aW9uKSk7XG4gIH1cblxuXG4gIF9pc1RvRGVjcnlwdChtZXNzYWdlKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIEZvciBzeWJzY3JpYmUgbWVzc2FnZSBsZXQncyBzdGFydCB0aGUgbXV0dWFsQXV0aGVudGljYXRpb25cbiAgICAgIGxldCBpc1N1YnNjcmlwdGlvbiA9IG1lc3NhZ2UudHlwZSA9PT0gJ3N1YnNjcmliZSc7XG4gICAgICBsZXQgaXNGcm9tUmVtb3RlU00gPSBfdGhpcy5faXNGcm9tUmVtb3RlU00obWVzc2FnZS5mcm9tKTtcblxuICAgICAgaWYgKGlzU3Vic2NyaXB0aW9uICYgaXNGcm9tUmVtb3RlU00pIHtcbiAgICAgICAgbG9nLmxvZygnX2RvTXV0dWFsQXV0aGVudGljYXRpb25QaGFzZTEnKTtcbiAgICAgICAgY29uc29sZS5sb2coJ2lzdG9EZWNyeXB0JywgbWVzc2FnZSk7XG4gICAgICAgIGxldCByZXBvcnRlciA9IF90aGlzLnJlZ2lzdHJ5LmdldERhdGFPYmplY3RSZXBvcnRlcihtZXNzYWdlLnRvKTtcbiAgICAgICAgaWYgKHJlcG9ydGVyICE9PSBudWxsICYmIGlzTGVnYWN5KHJlcG9ydGVyKSkge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLl9kb011dHVhbEF1dGhlbnRpY2F0aW9uUGhhc2UxKG1lc3NhZ2UpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KTtcblxuICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLmhhc093blByb3BlcnR5KCdib2R5JykgJiYgbWVzc2FnZS5ib2R5Lmhhc093blByb3BlcnR5KCd2YWx1ZScpICYmIHR5cGVvZiBtZXNzYWdlLmJvZHkudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGxvZy5sb2coJ19pc1RvRGVjcnlwdDp0cnVlJyk7XG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2cubG9nKCdfaXNUb0RlY3J5cHQ6ZmFsc2UnKTtcbiAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICB9XG5cbiAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGxvZy5lcnJvcignW0NyeXB0b01hbmFnZXIuX2lzVG9EZWNyeXB0XScsIGVycm9yKTtcbiAgICB9KTtcblxuICB9XG5cbiAgZW5jcnlwdE1lc3NhZ2UobWVzc2FnZSkge1xuICAgIC8vbG9nLmluZm8oJ2VuY3J5cHRNZXNzYWdlOm1lc3NhZ2UnLCBtZXNzYWdlKTtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbG9nLmxvZygnZW5jcnlwdCBtZXNzYWdlICcpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICAvL2lmIGlzIG5vdCB0byBhcHBseSBlbmNyeXB0aW9uLCB0aGVuIHJldHVybnMgcmVzb2x2ZVxuICAgICAgaWYgKCFfdGhpcy5faXNUb0VuY3J5cHQobWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUobWVzc2FnZSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBkYXRhT2JqZWN0VVJMID0gcGFyc2VNZXNzYWdlVVJMKG1lc3NhZ2UudG8pO1xuICAgICAgbGV0IGlzVG9EYXRhT2JqZWN0ID0gaXNEYXRhT2JqZWN0VVJMKGRhdGFPYmplY3RVUkwpO1xuICAgICAgbGV0IGlzVG9MZWdhY3lJZGVudGl0eSA9IGlzTGVnYWN5KG1lc3NhZ2UudG8pO1xuICAgICAgbGV0IGlzRnJvbUh5cGVydHkgPSBkaXZpZGVVUkwobWVzc2FnZS5mcm9tKS50eXBlID09PSAnaHlwZXJ0eSc7XG4gICAgICBsZXQgaXNUb0h5cGVydHkgPSBkaXZpZGVVUkwobWVzc2FnZS50bykudHlwZSA9PT0gJ2h5cGVydHknO1xuXG4gICAgICBpZiAobWVzc2FnZS50eXBlID09PSAndXBkYXRlJykge1xuICAgICAgICBsb2cubG9nKCdlbmNyeXB0IG1lc3NhZ2U6IG1lc3NhZ2UgdHlwZSB1cGRhdGUnKTtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUobWVzc2FnZSk7XG4gICAgICB9XG5cbiAgICAgIC8vLS0tLS0tLS0tLS0tPiBOZWVkcyB0ZXN0cyFcbiAgICAgIGlmIChpc1RvTGVnYWN5SWRlbnRpdHkpIHtcbiAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcblxuICAgICAgfSBlbHNlIGlmIChpc0Zyb21IeXBlcnR5ICYmIGlzVG9IeXBlcnR5KSB7XG4gICAgICAgIF90aGlzLl9tZXNzYWdlRW5jcnlwdGlvbkhhbmRsaW5nLmVuY3J5cHRCZXR3ZWVuSHlwZXJ0aWVzKG1lc3NhZ2UpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICBpZiAoIXJlc3VsdC5pc0hhbmRTaGFrZU5lZWRlZCkge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQubWVzc2FnZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzLl9kb0hhbmRTaGFrZVBoYXNlKHJlc3VsdC5tZXNzYWdlLCByZXN1bHQuY2hhdEtleXMpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgICAgX3RoaXMuY2hhdEtleXNbbWVzc2FnZS5mcm9tICsgJzwtPicgKyBtZXNzYWdlLnRvXSA9IHZhbHVlLmNoYXRLZXlzO1xuXG4gICAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHZhbHVlLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICByZWplY3QoJ2VuY3J5cHQgaGFuZHNoYWtlIHByb3RvY29sIHBoYXNlICcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgLy9pZiBmcm9tIGh5cGVydHkgdG8gYSBkYXRhT2JqZWN0VVJMXG4gICAgICB9IGVsc2UgaWYgKGlzRnJvbUh5cGVydHkgJiYgaXNUb0RhdGFPYmplY3QpIHtcbiAgICAgICAgX3RoaXMuX21lc3NhZ2VFbmNyeXB0aW9uSGFuZGxpbmcuZW5jcnlwdEJldHdlZW5IeXBlcnR5RGF0YU9iamVjdChtZXNzYWdlKS50aGVuKHJlc3VsdCA9PntcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnT24gZW5jcnlwdE1lc3NhZ2UgZnJvbSBtZXRob2QgX21lc3NhZ2VFbmNyeXB0aW9uSGFuZGxpbmcgZXJyb3I6ICcgKyBlcnIpOyB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cbiAgZW5jcnlwdERhdGFPYmplY3QoZGF0YU9iamVjdCwgc2VuZGVyKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGxvZy5pbmZvKCdkYXRhT2JqZWN0IHZhbHVlIHRvIGVuY3J5cHQ6ICcsIGRhdGFPYmplY3QpO1xuXG4gICAgICBsZXQgZGF0YU9iamVjdFVSTCA9IHBhcnNlTWVzc2FnZVVSTChzZW5kZXIpO1xuXG4gICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5nZXQoJ2RhdGFPYmplY3RTZXNzaW9uS2V5cycpLnRoZW4oKHNlc3Npb25LZXlzKSA9PiB7XG4gICAgICAgIHNlc3Npb25LZXlzID0gY2hhdGtleXNUb0FycmF5Q2xvbmVyKHNlc3Npb25LZXlzIHx8IHt9KTtcbiAgICAgICAgbGV0IGRhdGFPYmplY3RLZXkgPSBzZXNzaW9uS2V5cyA/IHNlc3Npb25LZXlzW2RhdGFPYmplY3RVUkxdIDogbnVsbDtcblxuICAgICAgICAvL2NoZWNrIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBzZXNzaW9uIGtleSBmb3IgdGhlIGNoYXQgcm9vbVxuICAgICAgICBpZiAoZGF0YU9iamVjdEtleSkge1xuXG4gICAgICAgICAgLy8gYW5kIGlmIGlzIHRvIGFwcGx5IGVuY3J5cHRpb24sIGVuY3J5cHQgdGhlIG1lc3NhZ2VzXG4gICAgICAgICAgaWYgKGRhdGFPYmplY3RLZXkuaXNUb0VuY3J5cHQpIHtcbiAgICAgICAgICAgIGxldCBpdiA9IF90aGlzLmNyeXB0by5nZW5lcmF0ZUlWKCk7XG5cbiAgICAgICAgICAgIF90aGlzLmNyeXB0by5lbmNyeXB0QUVTKGRhdGFPYmplY3RLZXkuc2Vzc2lvbktleSwgc3RyaW5naWZ5KGRhdGFPYmplY3QpLCBpdikudGhlbihlbmNyeXB0ZWRWYWx1ZSA9PiB7XG4gICAgICAgICAgICAgIGxldCBuZXdWYWx1ZSA9IHsgdmFsdWU6IGVuY29kZShlbmNyeXB0ZWRWYWx1ZSksIGl2OiBlbmNvZGUoaXYpIH07XG5cbiAgICAgICAgICAgICAgLy9sb2cubG9nKCdlbmNyeXB0ZWQgZGF0YU9iamVjdCcsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUobmV3VmFsdWUpO1xuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHsgcmVqZWN0KCdPbiBlbmNyeXB0RGF0YU9iamVjdCBmcm9tIG1ldGhvZCBlbmNyeXB0QUVTIGVycm9yOiAnICsgZXJyKTsgfSk7XG5cbiAgICAgICAgICAvLyBpZiBub3QsIGp1c3Qgc2VuZCB0aGUgbWVzc2FnZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2cuaW5mbygnVGhlIGRhdGFPYmplY3QgaXMgbm90IGVuY3J5cHRlZCcpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoZGF0YU9iamVjdCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gc3RhcnQgdGhlIGdlbmVyYXRpb24gb2YgYSBuZXcgc2Vzc2lvbiBLZXlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KCdObyBkYXRhT2JqZWN0S2V5IGZvciB0aGlzIGRhdGFPYmplY3RVUkw6JywgZGF0YU9iamVjdFVSTCk7XG4gICAgICAgIH1cbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnT24gZW5jcnlwdERhdGFPYmplY3QgZnJvbSBtZXRob2Qgc3RvcmFnZU1hbmFnZXIuZ2V0IGVycm9yOiAnICsgZXJyKTsgfSk7XG4gICAgfSk7XG4gIH1cblxuICBkZWNyeXB0TWVzc2FnZShtZXNzYWdlKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIC8vICBsb2cubG9nKCdkZWNyeXB0TWVzc2FnZTptZXNzYWdlJywgbWVzc2FnZSk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBfdGhpcy5faXNUb0RlY3J5cHQobWVzc2FnZSkudGhlbigoaXNUb0RlY3J5cHQpID0+IHtcblxuICAgICAgICAvL2lmIGlzIG5vdCB0byBhcHBseSBlbmNyeXB0aW9uLCB0aGVuIHJldHVybnMgcmVzb2x2ZVxuICAgICAgICBpZiAoIWlzVG9EZWNyeXB0KSByZXR1cm4gcmVzb2x2ZShtZXNzYWdlKTtcblxuICAgICAgICBsZXQgZGF0YU9iamVjdFVSTCA9IHBhcnNlTWVzc2FnZVVSTChtZXNzYWdlLnRvKTtcblxuICAgICAgICBsZXQgaXNUb0RhdGFPYmplY3QgPSBpc0RhdGFPYmplY3RVUkwoZGF0YU9iamVjdFVSTCk7XG4gICAgICAgIGxldCBpc0Zyb21IeXBlcnR5ID0gZGl2aWRlVVJMKG1lc3NhZ2UuZnJvbSkudHlwZSA9PT0gJ2h5cGVydHknO1xuICAgICAgICBsZXQgaXNUb0h5cGVydHkgPSBkaXZpZGVVUkwobWVzc2FnZS50bykudHlwZSA9PT0gJ2h5cGVydHknO1xuXG4gICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09ICd1cGRhdGUnKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUobWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvL2lzIGlzIGh5cGVydHkgdG8gaHlwZXJ0eSBjb21tdW5pY2F0aW9uXG4gICAgICAgIGlmIChpc0Zyb21IeXBlcnR5ICYmIGlzVG9IeXBlcnR5KSB7XG5cbiAgICAgICAgICBfdGhpcy5fbWVzc2FnZUVuY3J5cHRpb25IYW5kbGluZy5kZWNyeXB0QmV0d2Vlbkh5cGVydGllcyhtZXNzYWdlKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5pc0hhbmRTaGFrZU5lZWRlZCkge1xuICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIF90aGlzLl9kb0hhbmRTaGFrZVBoYXNlKHJlc3VsdC5tZXNzYWdlLCByZXN1bHQuY2hhdEtleXMpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgICAgICAvL2lmIGl0IHdhcyBzdGFydGVkIGJ5IGRvTXV0dWFsQXV0aGVudGljYXRpb24gdGhlbiBlbmRzIHRoZSBwcm90b2NvbFxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJ2hhbmRTaGFrZUVuZCcpIHtcbiAgICAgICAgICAgICAgICAgIC8vcmVqZWN0KCdkZWNyeXB0IGhhbmRzaGFrZSBwcm90b2NvbCBwaGFzZScpO1xuXG4gICAgICAgICAgICAgICAgICAvLyBpZiB3YXMgc3RhcnRlZCBieSBhIG1lc3NhZ2UsIHRoZW4gcmVzZW5kIHRoYXQgbWVzc2FnZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5jaGF0S2V5c1ttZXNzYWdlLnRvICsgJzwtPicgKyBtZXNzYWdlLmZyb21dID0gdmFsdWUuY2hhdEtleXM7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZSh2YWx1ZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgLy9yZWplY3QoJ2RlY3J5cHQgaGFuZHNoYWtlIHByb3RvY29sIHBoYXNlICcpOyBUT0RPOiBDaGVjayB3aHkgaXMgdGhpcyBjb21tZW50ZWQ/XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4geyByZWplY3QoJ0Vycm9yIG9uIGRlY3J5cHRpbmcgbWVzc2FnZSBoYW5kc2hha2UgaW4gZGVjcnlwdEJldHdlZW5IeXBlcnRpZXM6ICcsIGVycik7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnRXJyb3Igb24gZGVjcnlwdGluZyBtZXNzYWdlIGluIGRlY3J5cHRCZXR3ZWVuSHlwZXJ0aWVzOiAnLCBlcnIpOyB9KTtcblxuICAgICAgICAgIC8vaWYgZnJvbSBoeXBlcnR5IHRvIGEgZGF0YU9iamVjdFVSTFxuICAgICAgICB9IGVsc2UgaWYgKGlzRnJvbUh5cGVydHkgJiYgaXNUb0RhdGFPYmplY3QpIHtcbiAgICAgICAgICAvLyBsb2cubG9nKCdkYXRhT2JqZWN0IHZhbHVlIHRvIGRlY3J5cHQ6ICcsIG1lc3NhZ2UuYm9keSk7XG4gICAgICAgICAgX3RoaXMuX21lc3NhZ2VFbmNyeXB0aW9uSGFuZGxpbmcuZGVjcnlwdEJldHdlZW5IeXBlcnR5RGF0YU9iamVjdChtZXNzYWdlKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHsgcmVqZWN0KCdFcnJvciBvbiBkZWNyeXB0aW5nIG1lc3NhZ2UgaW4gZGVjcnlwdEJldHdlZW5IeXBlcnRpZXM6ICcsIGVycik7IH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdCgnd3JvbmcgbWVzc2FnZSB0byBkZWNyeXB0Jyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH1cblxuICBkZWNyeXB0RGF0YU9iamVjdChkYXRhT2JqZWN0LCBzZW5kZXIpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgLy9pZiBpcyBub3QgdG8gYXBwbHkgZW5jcnlwdGlvbiwgdGhlbiByZXR1cm5zIHJlc29sdmVcbiAgICAgIGlmICghX3RoaXMuaXNUb1VzZUVuY3J5cHRpb24pIHtcbiAgICAgICAgLy8gbG9nLmxvZygnZGVjcnlwdGlvbiBkaXNhYmxlZCcpO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShkYXRhT2JqZWN0KTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRhdGFPYmplY3RVUkwgPSBwYXJzZU1lc3NhZ2VVUkwoc2VuZGVyKTtcblxuICAgICAgLy8gbG9nLmxvZygnZGF0YU9iamVjdCB2YWx1ZSB0byBkZWNyeXB0OiAnLCBkYXRhT2JqZWN0KTtcblxuICAgICAgX3RoaXMuc3RvcmFnZU1hbmFnZXIuZ2V0KCdkYXRhT2JqZWN0U2Vzc2lvbktleXMnKS50aGVuKChzZXNzaW9uS2V5cykgPT4ge1xuICAgICAgICBzZXNzaW9uS2V5cyA9IGNoYXRrZXlzVG9BcnJheUNsb25lcihzZXNzaW9uS2V5cyk7XG4gICAgICAgIGxldCBkYXRhT2JqZWN0S2V5ID0gc2Vzc2lvbktleXMgPyBzZXNzaW9uS2V5c1tkYXRhT2JqZWN0VVJMXSA6IG51bGw7XG5cbiAgICAgICAgaWYgKGRhdGFPYmplY3RLZXkpIHtcblxuICAgICAgICAgIC8vY2hlY2sgaWYgaXMgdG8gYXBwbHkgZW5jcnlwdGlvblxuICAgICAgICAgIGlmIChkYXRhT2JqZWN0S2V5LmlzVG9FbmNyeXB0KSB7XG4gICAgICAgICAgICBsZXQgaXYgPSBkZWNvZGVUb1VpbnQ4QXJyYXkoZGF0YU9iamVjdC5pdik7XG4gICAgICAgICAgICBsZXQgZW5jcnlwdGVkVmFsdWUgPSBkZWNvZGVUb1VpbnQ4QXJyYXkoZGF0YU9iamVjdC52YWx1ZSk7XG5cbiAgICAgICAgICAgIF90aGlzLmNyeXB0by5kZWNyeXB0QUVTKGRhdGFPYmplY3RLZXkuc2Vzc2lvbktleSwgZW5jcnlwdGVkVmFsdWUsIGl2KS50aGVuKGRlY3J5cHRlZFZhbHVlID0+IHtcbiAgICAgICAgICAgICAgbGV0IHBhcnNlZFZhbHVlID0gcGFyc2UoZGVjcnlwdGVkVmFsdWUpO1xuICAgICAgICAgICAgICBsZXQgbmV3VmFsdWUgPSB7IHZhbHVlOiBwYXJzZWRWYWx1ZSwgaXY6IGVuY29kZShpdikgfTtcblxuICAgICAgICAgICAgICAvLyBsb2cubG9nKCdkZWNyeXB0ZWQgZGF0YU9iamVjdCwnLCBuZXdWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUobmV3VmFsdWUpO1xuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHsgcmVqZWN0KCdPbiBkZWNyeXB0RGF0YU9iamVjdCBmcm9tIG1ldGhvZCBlbmNyeXB0QUVTIGVycm9yOiAnICsgZXJyKTsgfSk7XG5cbiAgICAgICAgICAvL2lmIG5vdCwganVzdCByZXR1cm4gdGhlIGRhdGFPYmplY3RcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gbG9nLmxvZygnVGhlIGRhdGFPYmplY3QgaXMgbm90IGVuY3J5cHRlZCcpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoZGF0YU9iamVjdCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdCgnTm8gZGF0YU9iamVjdEtleSBmb3IgdGhpcyBkYXRhT2JqZWN0VVJMOicsIGRhdGFPYmplY3RVUkwpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIF9kb011dHVhbEF1dGhlbnRpY2F0aW9uUGhhc2UxKG1lc3NhZ2UpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGxldCB0byA9IG1lc3NhZ2UudG8uc3BsaXQoJy8nKTtcblxuICAgICAgLy9sZXQgc3Vic0luZGV4ID0gdG8uaW5kZXhPZignc3Vic2NyaXB0aW9uJyk7XG4gICAgICAvL2xldCBpc0RhdGFPYmplY3RTdWJzY3JpcHRpb24gPSBzdWJzSW5kZXggIT09IC0xO1xuICAgICAgdG8ucG9wKCk7XG4gICAgICBsZXQgZGF0YU9iamVjdFVSTCA9IHRvWzBdICsgJy8vJyArIHRvWzJdICsgJy8nICsgdG9bM107XG4gICAgICBfdGhpcy5fZG9NdXR1YWxBdXRoZW50aWNhdGlvblBoYXNlMihkYXRhT2JqZWN0VVJMLCBtZXNzYWdlLmJvZHkuc3Vic2NyaWJlcikudGhlbigoKSA9PiB7XG4gICAgICAgIF90aGlzLl9yZWdpc3RyeS5yZWdpc3RlclN1YnNjcmliZXIoZGF0YU9iamVjdFVSTCwgbWVzc2FnZS5ib2R5LnN1YnNjcmliZXIpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgX2RvTXV0dWFsQXV0aGVudGljYXRpb25QaGFzZTIoc2VuZGVyLCByZWNlaXZlcikge1xuICAgIGxvZy5pbmZvKCdkb011dHVhbEF1dGhlbnRpY2F0aW9uOnNlbmRlciAnLCBzZW5kZXIpO1xuICAgIGxvZy5pbmZvKCdkb011dHVhbEF1dGhlbnRpY2F0aW9uOnJlY2VpdmVyICcsIHJlY2VpdmVyKTtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICBsZXQgZGF0YU9iamVjdFVSTDtcblxuICAgICAgLy8gY2hlY2sgaWYgdGhlIHNlbmRlciBpcyBhIGRhdGFPYmplY3QgYW5kIGlmIHNvIHN0b3JlcyB0aGF0IHZhbHVlXG4gICAgICBsZXQgcmVwb3J0ZXJVUkwgPSBfdGhpcy5fcmVnaXN0cnkuZ2V0UmVwb3J0ZXJVUkxTeW5jaG9ub3VzKHNlbmRlcik7XG4gICAgICBpZiAocmVwb3J0ZXJVUkwpIHtcbiAgICAgICAgZGF0YU9iamVjdFVSTCA9IHNlbmRlcjtcbiAgICAgICAgc2VuZGVyID0gcmVwb3J0ZXJVUkw7XG4gICAgICB9XG5cbiAgICAgIGxldCBtc2cgPSB7XG4gICAgICAgIHRvOiByZWNlaXZlcixcbiAgICAgICAgZnJvbTogc2VuZGVyLFxuICAgICAgICBjYWxsYmFjazogdW5kZWZpbmVkLFxuICAgICAgICBib2R5OiB7aGFuZHNoYWtlUGhhc2U6ICdzdGFydEhhbmRTaGFrZScsIGlnbm9yZTogJ2lnbm9yZU1lc3NhZ2UnfVxuICAgICAgfTtcblxuICAgICAgaWYgKCFzZW5kZXIgfHwgIXJlY2VpdmVyKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoJ3NlbmRlciBvciByZWNlaXZlciBtaXNzaW5nIG9uIGRvTXV0dWFsQXV0aGVudGljYXRpb24nKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGNoYXRLZXlzID0gX3RoaXMuY2hhdEtleXNbc2VuZGVyICsgJzwtPicgKyByZWNlaXZlcl07XG4gICAgICBsZXQgdXNlclVSTCA9IF90aGlzLl9yZWdpc3RyeS5nZXRIeXBlcnR5T3duZXIoc2VuZGVyKTtcblxuICAgICAgaWYgKHVzZXJVUkwpIHtcblxuICAgICAgICBpZiAoIWNoYXRLZXlzKSB7XG4gICAgICAgICAgLy8gY2FsbGJhY2sgdG8gcmVzb2x2ZSB3aGVuIGZpbmlzaCB0aGUgbXV0dWFsIGF1dGhlbnRpY2F0aW9uXG4gICAgICAgICAgbGV0IHJlc29sdmVkID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIC8vIGxvZy5sb2coJ2NhbGxiYWNrIHZhbHVlOicsIHZhbHVlKTtcbiAgICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgbXNnLmNhbGxiYWNrID0gcmVzb2x2ZWQ7XG4gICAgICAgICAgbXNnLmRhdGFPYmplY3RVUkwgPSBkYXRhT2JqZWN0VVJMO1xuXG4gICAgICAgICAgY2hhdEtleXMgPSBfdGhpcy5fbWVzc2FnZUVuY3J5cHRpb25IYW5kbGluZy5uZXdDaGF0Q3J5cHRvKG1zZywgdXNlclVSTCk7XG4gICAgICAgICAgX3RoaXMuY2hhdEtleXNbc2VuZGVyICsgJzwtPicgKyByZWNlaXZlcl0gPSBjaGF0S2V5cztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGF0S2V5cy5hdXRoZW50aWNhdGVkKSB7XG5cbiAgICAgICAgICBsZXQgc3RhcnRTZXNzaW9uS2V5RXhjaGFuZ2UgPSB7XG4gICAgICAgICAgICB0bzogc2VuZGVyLFxuICAgICAgICAgICAgZnJvbTogcmVjZWl2ZXJcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNoYXRLZXlzLmRhdGFPYmplY3RVUkwgPSBkYXRhT2JqZWN0VVJMO1xuICAgICAgICAgIF90aGlzLl9zZW5kUmVwb3J0ZXJTZXNzaW9uS2V5KHN0YXJ0U2Vzc2lvbktleUV4Y2hhbmdlLCBjaGF0S2V5cykudGhlbih2YWx1ZSA9PiB7XG5cbiAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHZhbHVlLm1lc3NhZ2UpO1xuICAgICAgICAgICAgcmVzb2x2ZSgnZXhjaGFuZ2Ugb2YgY2hhdCBzZXNzaW9uS2V5IGluaXRpYXRlZCcpO1xuICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnT24gZG9NdXR1YWxBdXRoZW50aWNhdGlvbiBmcm9tIG1ldGhvZCBfc2VuZFJlcG9ydGVyU2Vzc2lvbktleSBlcnJvcjogJyArIGVycik7IH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzLl9kb0hhbmRTaGFrZVBoYXNlKG1zZywgY2hhdEtleXMpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3QoJ011dHVhbCBhdXRoZW50aWNhdGlvbiBlcnJvcjogSHlwZXJ0eSBvd25lciBjb3VsZCBub3QgYmUgcmVzb2x2ZWQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICB9XG5cblxuICAvKipcbiAgKiByZXR1cm5zIHRoZSByZXBvcnRlciBhc3NvY2lhdGVkIHRvIHRoZSBkYXRhT2JqZWN0IFVSTFxuICAqIEBwYXJhbSAgIHtTdHJpbmd9ICAgZGF0YU9iamVjdFVSTCAgICAgICAgIGRhdGFPYmplY3QgdXJsXG4gICogQHJldHVybiAgIHtTdHJpbmd9ICByZXBvcnRlciAgICAgICAgICAgICAgZGF0YU9iamVjdCB1cmwgcmVwb3J0ZXJcbiAgKi9cbiAgLyogIF9nZXRIeXBlcnR5RnJvbURhdGFPYmplY3QoZGF0YU9iamVjdFVSTCkge1xuICAgIGxvZy5pbmZvKCdfZ2V0SHlwZXJ0eUZyb21EYXRhT2JqZWN0OmRhdGFPYmplY3RVUkwnLCBkYXRhT2JqZWN0VVJMKTtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICBsZXQgc3BsaXRlZFVSTCA9IGRpdmlkZVVSTChkYXRhT2JqZWN0VVJMKTtcbiAgICAgIGxldCBkb21haW4gPSBzcGxpdGVkVVJMLmRvbWFpbjtcbiAgICAgIGxldCBmaW5hbFVSTCA9IF90aGlzLl9wYXJzZU1lc3NhZ2VVUkwoZGF0YU9iamVjdFVSTCk7XG5cbiAgICAgIC8vIGNoZWNrIGlmIGlzIHRoZSBjcmVhdG9yIG9mIHRoZSBoeXBlcnR5XG4gICAgICBsZXQgcmVwb3J0ZXJVUkwgPSBfdGhpcy5yZWdpc3RyeS5nZXRSZXBvcnRlclVSTFN5bmNob25vdXMoZmluYWxVUkwpO1xuICAgICAgbG9nLmluZm8oJ19nZXRIeXBlcnR5RnJvbURhdGFPYmplY3Q6cmVwb3J0ZXJVUkwnLCByZXBvcnRlclVSTCk7XG5cbiAgICAgIGlmIChyZXBvcnRlclVSTCkge1xuICAgICAgICByZXNvbHZlKHJlcG9ydGVyVVJMKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIGFscmVhZHkgYW4gYXNzb2NpYXRpb24gZnJvbSBhbiBoeXBlcnR5VVJMIHRvIHRoZSBkYXRhT2JqZWN0XG4gICAgICAgIGxldCBzdG9yZWRSZXBvcnRlclVSTCA9IF90aGlzLmRhdGFPYmplY3RzSWRlbnRpdHlbZmluYWxVUkxdO1xuICAgICAgICBsb2cuaW5mbygnX2dldEh5cGVydHlGcm9tRGF0YU9iamVjdDpzdG9yZWRSZXBvcnRlclVSTCcsIHN0b3JlZFJlcG9ydGVyVVJMKTtcblxuICAgICAgICBpZiAoc3RvcmVkUmVwb3J0ZXJVUkwpIHtcbiAgICAgICAgICByZXNvbHZlKHN0b3JlZFJlcG9ydGVyVVJMKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhbnkgaHlwZXJ0eSB0aGF0IHN1YnNjcmliZWQgdGhlIGRhdGFPYmplY3RVUkxcbiAgICAgICAgICBsZXQgc3Vic2NyaWJlckh5cGVydHkgPSBfdGhpcy5yZWdpc3RyeS5nZXREYXRhT2JqZWN0U3Vic2NyaWJlckh5cGVydHkoZGF0YU9iamVjdFVSTCk7XG4gICAgICAgICAgbG9nLmluZm8oJ19nZXRIeXBlcnR5RnJvbURhdGFPYmplY3Q6c3Vic2NyaWJlckh5cGVydHknLCBzdWJzY3JpYmVySHlwZXJ0eSk7XG5cbiAgICAgICAgICBpZiAoc3Vic2NyaWJlckh5cGVydHkpIHtcbiAgICAgICAgICAgIHJlc29sdmUoc3Vic2NyaWJlckh5cGVydHkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBzZWFyY2ggaW4gZG9tYWluIHJlZ2lzdHJ5IGZvciB0aGUgaHlwZXJ0eSBhc3NvY2lhdGVkIHRvIHRoZSBkYXRhT2JqZWN0XG4gICAgICAgICAgICAvLyBzZWFyY2ggaW4gY2FzZSBpcyBhIHN1YnNjcmliZXIgd2hvIHdhbnRzIHRvIGtub3cgdGhlIHJlcG9ydGVyXG4gICAgICAgICAgICBfdGhpcy5fY29yZURpc2NvdmVyeS5kaXNjb3ZlckRhdGFPYmplY3RQZXJVUkwoZmluYWxVUkwsIGRvbWFpbikudGhlbihkYXRhT2JqZWN0ID0+IHtcbiAgICAgICAgICAgICAgbG9nLmluZm8oJ19nZXRIeXBlcnR5RnJvbURhdGFPYmplY3Q6ZGF0YU9iamVjdCcsIGRhdGFPYmplY3QpO1xuICAgICAgICAgICAgICBfdGhpcy5kYXRhT2JqZWN0c0lkZW50aXR5W2ZpbmFsVVJMXSA9IGRhdGFPYmplY3QucmVwb3J0ZXI7XG4gICAgICAgICAgICAgIGxvZy5pbmZvKCdfZ2V0SHlwZXJ0eUZyb21EYXRhT2JqZWN0OmRhdGFPYmplY3QucmVwb3J0ZXInLCBkYXRhT2JqZWN0LnJlcG9ydGVyKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhT2JqZWN0LnJlcG9ydGVyKTtcbiAgICAgICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0qL1xuXG4gIF9zZW5kUmVwb3J0ZXJTZXNzaW9uS2V5KG1lc3NhZ2UsIGNoYXRLZXlzKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgbGV0IHNlc3Npb25LZXlCdW5kbGUgPSBfdGhpcy5kYXRhT2JqZWN0U2Vzc2lvbktleXNbY2hhdEtleXMuZGF0YU9iamVjdFVSTF07XG4gICAgICBsZXQgcmVwb3J0ZXJTZXNzaW9uS2V5TXNnO1xuICAgICAgbGV0IHZhbHVlVG9FbmNyeXB0O1xuICAgICAgbGV0IHNlc3Npb25LZXk7XG4gICAgICBsZXQgaXY7XG4gICAgICBsZXQgdmFsdWUgPSB7fTtcblxuICAgICAgLy9pZiB0aGVyZSBpcyBub3QgeWV0IGEgc2Vzc2lvbiBLZXksIGdlbmVyYXRlcyBhIG5ldyBvbmVcbiAgICAgIGlmICghc2Vzc2lvbktleUJ1bmRsZSkge1xuICAgICAgICBzZXNzaW9uS2V5ID0gX3RoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tKCk7XG4gICAgICAgIF90aGlzLmRhdGFPYmplY3RTZXNzaW9uS2V5c1tjaGF0S2V5cy5kYXRhT2JqZWN0VVJMXSA9IHtzZXNzaW9uS2V5OiBzZXNzaW9uS2V5LCBpc1RvRW5jcnlwdDogdHJ1ZX07XG5cbiAgICAgICAgbGV0IGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lID0gY2hhdGtleXNUb1N0cmluZ0Nsb25lcihfdGhpcy5kYXRhT2JqZWN0U2Vzc2lvbktleXMpO1xuXG4gICAgICAgIF90aGlzLnN0b3JhZ2VNYW5hZ2VyLnNldCgnZGF0YU9iamVjdFNlc3Npb25LZXlzJywgMCwgZGF0YU9iamVjdFNlc3Npb25LZXlzQ2xvbmUpLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgcmVqZWN0KCdPbiBfc2VuZFJlcG9ydGVyU2Vzc2lvbktleSBmcm9tIG1ldGhvZCBzdG9yYWdlTWFuYWdlci5zZXQoZGF0YU9iamVjdFNlc3Npb25LZXlzLi4uKSBlcnJvcjogJyArIGVycik7XG4gICAgICAgIH0pO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXNzaW9uS2V5ID0gc2Vzc2lvbktleUJ1bmRsZS5zZXNzaW9uS2V5O1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICB2YWx1ZVRvRW5jcnlwdCA9IGVuY29kZSh7dmFsdWU6IGVuY29kZShzZXNzaW9uS2V5KSwgZGF0YU9iamVjdFVSTDogY2hhdEtleXMuZGF0YU9iamVjdFVSTH0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoJ09uIF9zZW5kUmVwb3J0ZXJTZXNzaW9uS2V5IGZyb20gbWV0aG9kIHN0b3JhZ2VNYW5hZ2VyLnNldCBlcnJvciB2YWx1ZVRvRW5jcnlwdDogJyArIGVycik7XG4gICAgICB9XG5cbiAgICAgIGl2ID0gX3RoaXMuY3J5cHRvLmdlbmVyYXRlSVYoKTtcbiAgICAgIHZhbHVlLml2ID0gZW5jb2RlKGl2KTtcbiAgICAgIF90aGlzLmNyeXB0by5lbmNyeXB0QUVTKGNoYXRLZXlzLmtleXMuaHlwZXJ0eUZyb21TZXNzaW9uS2V5LCB2YWx1ZVRvRW5jcnlwdCwgaXYpLnRoZW4oZW5jcnlwdGVkVmFsdWUgPT4ge1xuXG4gICAgICAgIHJlcG9ydGVyU2Vzc2lvbktleU1zZyA9IHtcbiAgICAgICAgICB0eXBlOiAnaGFuZHNoYWtlJyxcbiAgICAgICAgICB0bzogbWVzc2FnZS5mcm9tLFxuICAgICAgICAgIGZyb206IG1lc3NhZ2UudG8sXG4gICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgaGFuZHNoYWtlUGhhc2U6ICdyZXBvcnRlclNlc3Npb25LZXknLFxuICAgICAgICAgICAgdmFsdWU6IGVuY29kZShlbmNyeXB0ZWRWYWx1ZSlcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGZpbHRlcmVkTWVzc2FnZSA9IGZpbHRlck1lc3NhZ2VUb0hhc2gocmVwb3J0ZXJTZXNzaW9uS2V5TXNnLCB2YWx1ZVRvRW5jcnlwdCArIGl2LCBjaGF0S2V5cy5oeXBlcnR5RnJvbS5tZXNzYWdlSW5mbyk7XG5cbiAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by5oYXNoSE1BQyhjaGF0S2V5cy5rZXlzLmh5cGVydHlGcm9tSGFzaEtleSwgZmlsdGVyZWRNZXNzYWdlKTtcbiAgICAgIH0pLnRoZW4oaGFzaGVkTWVzc2FnZSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZVdpdGhIYXNoID0gZW5jb2RlKHt2YWx1ZTogcmVwb3J0ZXJTZXNzaW9uS2V5TXNnLmJvZHkudmFsdWUsIGhhc2g6IGVuY29kZShoYXNoZWRNZXNzYWdlKSwgaXY6IHZhbHVlLml2fSk7XG5cbiAgICAgICAgcmVwb3J0ZXJTZXNzaW9uS2V5TXNnLmJvZHkudmFsdWUgPSB2YWx1ZVdpdGhIYXNoO1xuXG4gICAgICAgIHJlc29sdmUoe21lc3NhZ2U6IHJlcG9ydGVyU2Vzc2lvbktleU1zZywgY2hhdEtleXM6IGNoYXRLZXlzfSk7XG4gICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICByZWplY3QoJ09uIF9zZW5kUmVwb3J0ZXJTZXNzaW9uS2V5IGZyb20gY2hhaW5lZCBwcm9taXNlcyBlbmNyeXB0QUVTIGVycm9yOiAnICsgZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogRnVuY3Rpb24gdGhhdCByZXNvbHZlIGFuZCBjcmVhdGUgdGhlIGRvbWFpblVSTCBpbiBjYXNlIGl0IGlzIHByb3ZpZGVkIG9uZS4gSWYgbm90LCByZXNvbHZlIHRoZSBkZWZhdWx0IGRvbWFpblVSTFxuICAqIEBwYXJhbSB7U3RyaW5nfSAgICAgaWRwRG9tYWluICAgICBpZHBEb21haW4gKE9wdGlvbmFsKVxuICAqL1xuICBfcmVzb2x2ZURvbWFpbihpZHBEb21haW4pIHtcbiAgICBpZiAoIWlkcERvbWFpbikge1xuICAgICAgcmV0dXJuICdkb21haW4taWRwOi8vZ29vZ2xlLmNvbSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnZG9tYWluLWlkcDovLycgKyBpZHBEb21haW47XG4gICAgfVxuICB9XG5cblxuICBfZG9IYW5kU2hha2VQaGFzZShtZXNzYWdlLCBjaGF0S2V5cykge1xuICAvLyBsb2coJ19kb0hhbmRTaGFrZVBoYXNlOmRhdGFPYmplY3QnLCBtZXNzYWdlKTtcbiAgLy9cdGxvZygnX2RvSGFuZFNoYWtlUGhhc2U6Y2hhdEtleXMnLCBjaGF0S2V5cyk7XG5cbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICBsZXQgaGFuZHNoYWtlVHlwZSA9IG1lc3NhZ2UuYm9keS5oYW5kc2hha2VQaGFzZTtcblxuICAgICAgbG9nLmluZm8oJ2hhbmRzaGFrZSBwaGFzZTogJywgaGFuZHNoYWtlVHlwZSk7XG5cbiAgICAgIHN3aXRjaCAoaGFuZHNoYWtlVHlwZSkge1xuXG4gICAgICAgIGNhc2UgJ3N0YXJ0SGFuZFNoYWtlJzpcbiAgICAgICAgICBfdGhpcy5oYW5kU2hha2VQcm90b2NvbC5zdGFydEhhbmRTaGFrZShtZXNzYWdlLCBjaGF0S2V5cykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5wb3N0VG9CdXMpIHtcbiAgICAgICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UocmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSh7bWVzc2FnZTogcmVzdWx0Lm1lc3NhZ2UsIGNoYXRLZXlzOiByZXN1bHQuY2hhdEtleXN9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzZW5kZXJIZWxsbyc6XG4gICAgICAgICAgX3RoaXMuaGFuZFNoYWtlUHJvdG9jb2wuc2VuZGVySGVsbG8obWVzc2FnZSwgY2hhdEtleXMpLnRoZW4ocmVzdWx0ID0+IHsgcmVzb2x2ZShyZXN1bHQpOyB9KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyZWNlaXZlckhlbGxvJzpcbiAgICAgICAgICBfdGhpcy5nZXRNeVByaXZhdGVLZXkoKS50aGVuKHByaXZhdGVLZXkgPT57XG4gICAgICAgICAgICBfdGhpcy5oYW5kU2hha2VQcm90b2NvbC5yZWNlaXZlckhlbGxvKG1lc3NhZ2UsIGNoYXRLZXlzLCBwcml2YXRlS2V5KS50aGVuKHJlc3VsdCA9PiB7IHJlc29sdmUocmVzdWx0KTsgfSlcbiAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7IHJlamVjdChlcnIpOyB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzZW5kZXJDZXJ0aWZpY2F0ZSc6XG4gICAgICAgICAgX3RoaXMuZ2V0TXlQcml2YXRlS2V5KCkudGhlbihwcml2YXRlS2V5ID0+e1xuICAgICAgICAgICAgX3RoaXMuaGFuZFNoYWtlUHJvdG9jb2wuc2VuZGVyQ2VydGlmaWNhdGUobWVzc2FnZSwgY2hhdEtleXMsIHByaXZhdGVLZXkpLnRoZW4ocmVzdWx0ID0+IHsgcmVzb2x2ZShyZXN1bHQpOyB9KVxuICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHsgcmVqZWN0KGVycik7IH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlY2VpdmVyRmluaXNoZWRNZXNzYWdlJzpcbiAgICAgICAgICBfdGhpcy5oYW5kU2hha2VQcm90b2NvbC5yZWNlaXZlckZpbmlzaGVkTWVzc2FnZShtZXNzYWdlLCBjaGF0S2V5cykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5zZW5kUmVwb3J0ZXJTZXNzaW9uS2V5KSB7XG4gICAgICAgICAgICAgIF90aGlzLl9zZW5kUmVwb3J0ZXJTZXNzaW9uS2V5KHJlc3VsdC5tZXNzYWdlLCByZXN1bHQuY2hhdEtleXMpLnRoZW4odmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoe21lc3NhZ2U6IHJlc3VsdC5tZXNzYWdlLCBjaGF0S2V5czogcmVzdWx0LmNoYXRLZXlzfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHsgcmVqZWN0KGVycik7IH0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlcG9ydGVyU2Vzc2lvbktleSc6IHtcbiAgICAgICAgICBfdGhpcy5oYW5kU2hha2VQcm90b2NvbC5yZXBvcnRlclNlc3Npb25LZXkobWVzc2FnZSwgY2hhdEtleXMpLnRoZW4ocmVzdWx0ID0+IHsgcmVzb2x2ZShyZXN1bHQpOyB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7IHJlamVjdChlcnIpOyB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ3JlY2VpdmVyQWNrbm93bGVkZ2UnOiB7XG4gICAgICAgICAgX3RoaXMuaGFuZFNoYWtlUHJvdG9jb2wucmVjZWl2ZXJBY2tub3dsZWRnZShtZXNzYWdlLCBjaGF0S2V5cykudGhlbihyZXN1bHQgPT4geyByZXNvbHZlKHJlc3VsdCk7IH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHsgcmVqZWN0KGVycik7IH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWplY3QobWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBSZXRyaWV2ZXMgYSBwdWJsaWMga2V5cyBnaXZlbiBhIHVzZXIgcmVmcmVuY2UuIElmIG5vIGtleSBpcyBmb3VuZCxcbiAgZ2VuZXJhdGVzIGEgbmV3IGtleSBhc3ltbWV0cmljIGtleSBhbmQgcmV0cmlldmVzIHRoZSBwdWJsaWMga2V5cy5cbiAgKiBAcGFyYW0gICB7dXNlclJlZn0gICAgU3RyaW5nICAgIHVzZXIgcmVmZXJlbmNlIGZvciB0aGUga2V5IHBhaXJcbiAgKiBAcmV0dXJuICB7QXJyYXl9ICAgcHVibGljIGtleVxuICAqL1xuICBnZXRNeVB1YmxpY0tleSh1c2VyUmVmID0gdGhpcy51c2VyRGVmYXVsdEtleVJlZikge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIF90aGlzLnN0b3JhZ2VNYW5hZ2VyLmdldCh1c2VyUmVmKS50aGVuKHN0b3JlZEtleVBhaXIgPT4ge1xuICAgICAgICBpZiAoc3RvcmVkS2V5UGFpcikge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKHN0b3JlZEtleVBhaXIucHVibGljKTtcbiAgICAgICAgfVxuICAgICAgICBfdGhpcy5fZ2VuZXJhdGVBbmRTdG9yZU5ld0FzeW1ldHJpY0tleSh1c2VyUmVmKS50aGVuKGdlbmVyYXRlZEtleVBhaXIgPT4ge1xuICAgICAgICAgIHJlc29sdmUoZ2VuZXJhdGVkS2V5UGFpci5wdWJsaWMpO1xuICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIGxvZy5lcnJvcignW2dldE15UHVibGljS2V5Ol9nZW5lcmF0ZUFuZFN0b3JlTmV3QXN5bWV0cmljS2V5OmVycl06ICcgKyBlcnIubWVzc2FnZSk7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgbG9nLmVycm9yKCdbZ2V0TXlQdWJsaWNLZXk6c3RvcmFnZU1hbmFnZXI6ZXJyXTogJyArIGVyci5tZXNzYWdlKTtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIFJldHJpZXZlcyBhIHByaXZhdGUga2V5cyBnaXZlbiBhIHVzZXIgcmVmcmVuY2UuIElmIG5vIGtleSBpcyBmb3VuZCxcbiAgZ2VuZXJhdGVzIGEgbmV3IGtleSBhc3ltbWV0cmljIGtleSBhbmQgcmV0cmlldmVzIHRoZSBwcml2YXRlIGtleS5cbiAgKiBAcGFyYW0gICB7dXNlclJlZn0gICAgU3RyaW5nICAgIHVzZXIgcmVmZXJlbmNlIGZvciB0aGUga2V5IHBhaXJcbiAgKiBAcmV0dXJuICB7QXJyYXl9ICAgcHJpdmF0ZSBrZXlcbiAgKiovXG4gIGdldE15UHJpdmF0ZUtleSh1c2VyUmVmID0gdGhpcy51c2VyRGVmYXVsdEtleVJlZikge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIF90aGlzLnN0b3JhZ2VNYW5hZ2VyLmdldCh1c2VyUmVmKS50aGVuKHN0b3JlZEtleVBhaXIgPT4ge1xuICAgICAgICBpZiAoc3RvcmVkS2V5UGFpcikge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKHN0b3JlZEtleVBhaXIucHJpdmF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgX3RoaXMuX2dlbmVyYXRlQW5kU3RvcmVOZXdBc3ltZXRyaWNLZXkodXNlclJlZikudGhlbihnZW5lcmF0ZWRLZXlQYWlyID0+IHtcbiAgICAgICAgICByZXNvbHZlKGdlbmVyYXRlZEtleVBhaXIucHJpdmF0ZSk7XG4gICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgbG9nLmVycm9yKCdbZ2V0TXlQcml2YXRlS2V5Ol9nZW5lcmF0ZUFuZFN0b3JlTmV3QXN5bWV0cmljS2V5OmVycl06ICcgKyBlcnIubWVzc2FnZSk7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgbG9nLmVycm9yKCdbZ2V0TXlQcml2YXRlS2V5OnN0b3JhZ2VNYW5hZ2VyOmVycl06ICcgKyBlcnIubWVzc2FnZSk7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuXG4gIC8qKlxuICAqIEdlbmVyYXRlcyBhIG5ldyBrZXkgcGFpciwgc3RvcmVzIGFuZCByZXRyaXZlcyB0aGUga2V5IHBhaXIuXG4gICogQHBhcmFtICAge3VzZXJSZWZ9ICAgIFN0cmluZyAgICB1c2VyIHJlZmVyZW5jZSBmb3IgdGhlIGtleSBwYWlyXG4gICogQHJldHVybiAge0FycmF5fSAgIHByaXZhdGUga2V5XG4gICoqL1xuICBfZ2VuZXJhdGVBbmRTdG9yZU5ld0FzeW1ldHJpY0tleSh1c2VyUmVmKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBsZXQga2V5UGFpciA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgX3RoaXMuY3J5cHRvLmdlbmVyYXRlUlNBS2V5UGFpcigpLnRoZW4oZ2VuZXJhdGVkS2V5UGFpciA9PiB7XG4gICAgICAgIGxvZy5sb2coJ19nZW5lcmF0ZUFuZFN0b3JlTmV3QXN5bWV0cmljS2V5OnVzZXJBc3ltbWV0cmljS2V5R2VuZXJhdGVkJywgZ2VuZXJhdGVkS2V5UGFpcik7XG4gICAgICAgIGtleVBhaXIgPSBnZW5lcmF0ZWRLZXlQYWlyO1xuICAgICAgICByZXR1cm4gX3RoaXMuc3RvcmFnZU1hbmFnZXIuc2V0KHVzZXJSZWYsIDAsIGdlbmVyYXRlZEtleVBhaXIpO1xuICAgICAgfSkudGhlbihzdG9yZWRSZWZlcmVuY2UgPT4ge1xuICAgICAgICBsb2cubG9nKCdfZ2VuZXJhdGVBbmRTdG9yZU5ld0FzeW1ldHJpY0tleTp1c2VyQXN5bW1ldHJpY0tleVN1Y2Nlc3MnLCBzdG9yZWRSZWZlcmVuY2UpO1xuICAgICAgICByZXNvbHZlKGtleVBhaXIpO1xuICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgbG9nLmVycm9yKCdbX2dlbmVyYXRlQW5kU3RvcmVOZXdBc3ltZXRyaWNLZXk6ZXJyXTogJyArIGVyci5tZXNzYWdlKTtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG5cbiAgX2lzVG9EZWNyeXB0KG1lc3NhZ2UpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIEZvciBzeWJzY3JpYmUgbWVzc2FnZSBsZXQncyBzdGFydCB0aGUgbXV0dWFsQXV0aGVudGljYXRpb25cbiAgICAgIGxldCBpc1N1YnNjcmlwdGlvbiA9IG1lc3NhZ2UudHlwZSA9PT0gJ3N1YnNjcmliZSc7XG4gICAgICBsZXQgaXNGcm9tUmVtb3RlU00gPSBfdGhpcy5faXNGcm9tUmVtb3RlU00obWVzc2FnZS5mcm9tKTtcblxuICAgICAgaWYgKGlzU3Vic2NyaXB0aW9uICYgaXNGcm9tUmVtb3RlU00pIHtcbiAgICAgICAgbG9nLmxvZygnX2RvTXV0dWFsQXV0aGVudGljYXRpb25QaGFzZTEnKTtcblxuICAgICAgICBfdGhpcy5fZG9NdXR1YWxBdXRoZW50aWNhdGlvblBoYXNlMShtZXNzYWdlKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5oYXNPd25Qcm9wZXJ0eSgnYm9keScpICYmIG1lc3NhZ2UuYm9keS5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSAmJiB0eXBlb2YgbWVzc2FnZS5ib2R5LnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBsb2cubG9nKCdfaXNUb0RlY3J5cHQ6dHJ1ZScpO1xuICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmxvZygnX2lzVG9EZWNyeXB0OmZhbHNlJyk7XG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgfVxuXG4gICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBsb2cuZXJyb3IoJ1tDcnlwdG9NYW5hZ2VyLl9pc1RvRGVjcnlwdF0nLCBlcnJvcik7XG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgICogSWRlbnRpZmllcyB0aGUgbWVzc2FnZXMgdG8gYmUgZW5jcnlwdGVkXG4gICAgKiBAcGFyYW0ge01lc3NhZ2V9ICAgIG1lc3NhZ2VcbiAgICAqIEByZXR1cm5zIHtib29sZWFufSAgcmV0dXJucyB0cnVlIGlmIHRoZSBtZXNzYWdlIHJlcXVpcmVzIGVuY3J5cHRpb25cbiAgICAqL1xuXG4gIF9pc1RvRW5jcnlwdChtZXNzYWdlKSB7XG4gICAgbG9nLmluZm8oJ1tDcnlwdG9NYW5hZ2VyLmlzdG9DaHlwZXJNb2R1bGVdJywgbWVzc2FnZSk7XG4gICAgbGV0IGlzQ3JlYXRlID0gbWVzc2FnZS50eXBlID09PSAnY3JlYXRlJztcbiAgICBsZXQgaXNGcm9tSHlwZXJ0eSA9IG1lc3NhZ2UuZnJvbS5pbmNsdWRlcygnaHlwZXJ0eTovLycpO1xuICAgIGxldCBpc1RvSHlwZXJ0eSA9IG1lc3NhZ2UudG8uaW5jbHVkZXMoJ2h5cGVydHk6Ly8nKTtcbiAgICBsZXQgaXNUb0RhdGFPYmplY3QgPSBpc0RhdGFPYmplY3RVUkwobWVzc2FnZS50byk7XG5cbiAgICBsZXQgZG9NdXR1YWxBdXRoZW50aWNhdGlvbiA9IG1lc3NhZ2UuYm9keS5oYXNPd25Qcm9wZXJ0eSgnbXV0dWFsJykgPyBtZXNzYWdlLmJvZHkubXV0dWFsIDogdHJ1ZTtcblxuICAgIGlmICghZG9NdXR1YWxBdXRoZW50aWNhdGlvbikgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy9pZiBpcyBub3QgdG8gYXBwbHkgZW5jcnlwdGlvbiwgdGhlbiByZXR1cm5zIHJlc29sdmVcbiAgICBpZiAoIXRoaXMuaXNUb1VzZUVuY3J5cHRpb24gJiYgIShtZXNzYWdlLnR5cGUgPT09ICdoYW5kc2hha2UnKSkge1xuICAgICAgbG9nLmluZm8oJ25vdCBoYW5kc2hha2U6IGVuY3J5cHRpb24gZGlzYWJsZWQnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAobWVzc2FnZS50eXBlID09PSAndXBkYXRlJykge1xuICAgICAgbG9nLmluZm8oJ3VwZGF0ZTplbmNyeXB0aW9uIGRpc2FibGVkJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGlzTGVnYWN5KG1lc3NhZ2UudG8pKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gKChpc0NyZWF0ZSAmJiBpc0Zyb21IeXBlcnR5ICYmIGlzVG9IeXBlcnR5KSB8fCAoaXNDcmVhdGUgJiYgaXNGcm9tSHlwZXJ0eSAmJiBpc1RvRGF0YU9iamVjdCAmJiBkb011dHVhbEF1dGhlbnRpY2F0aW9uKSB8fCBtZXNzYWdlLnR5cGUgPT09ICdoYW5kc2hha2UnIHx8IChtZXNzYWdlLnR5cGUgPT09ICd1cGRhdGUnICYmIGRvTXV0dWFsQXV0aGVudGljYXRpb24pKTtcbiAgfVxuXG59XG5cbi8qXG5jb25zdCBub2RlSlNLZXlQYWlyUG9wdWxhdGUgPSB7IHB1YmxpYzogWzQ4LCAxMzAsIDEsIDM0LCA0OCwgMTMsIDYsIDksIDQyLCAxMzQsIDcyLCAxMzQsIDI0NywgMTMsIDEsIDEsIDEsIDUsIDAsIDMsIDEzMCwgMSwgMTUsIDAsIDQ4LCAxMzAsIDEsIDEwLCAyLCAxMzAsIDEsIDEsIDAsIDIyOCwgNDMsIDEwMSwgMTIsIDEyMSwgNywgMTU3LCA3MSwgODEsIDU4LCAyMTksIDMyLCAxMCwgMTA4LCAxOTMsIDE3OSwgMjEyLCAxMTYsIDI1NSwgNTksIDIxNywgMzIsIDE2MSwgMjAxLCA1MywgMTcxLCAyMjYsIDE5OSwgMTM3LCAyMDIsIDE3MSwgNjAsIDgyLCA1MywgMTI1LCA2MiwgMTc3LCAxMjYsIDE2NSwgMjQsIDE0MSwgMzAsIDE1LCAyMjYsIDU5LCAxMDcsIDM0LCA3LCAxMywgMTQ5LCAxMTIsIDEyNSwgMTAsIDIzMCwgMTkxLCAxNTYsIDE2NCwgMTc3LCAxMCwgMTg1LCAxMywgNjYsIDMsIDIxNywgMTY2LCAyNDQsIDkwLCAxMTksIDExMSwgMjcsIDE0NSwgMTA0LCA3MSwgMTg5LCAxNjYsIDIyNiwgMjU1LCAxMzMsIDgzLCAxNTEsIDIzMSwgMTAxLCAxNTEsIDg5LCAyMiwgMTksIDY1LCAxNTQsIDEwLCA1MywgMjA4LCAyMTgsIDI1MiwgMjE5LCAzNywgNTAsIDIxMiwgODYsIDE0NSwgMTA3LCAxMzIsIDkwLCAyMzMsIDIwMiwgMjI3LCAxMDgsIDExNCwgMTQxLCAyOSwgNzMsIDE4NywgMzEsIDEzLCAyMzQsIDAsIDIzMiwgMjQsIDE5MSwgMzUsIDE0OSwgMTc5LCAxMzgsIDIxNCwgMTU5LCAyNDUsIDE2MiwgMTQ4LCAyMjEsIDExOCwgMTcsIDEwNSwgODksIDE1MSwgMTQ2LCAyMDksIDU1LCAyMzYsIDYxLCAxNDMsIDIzMywgMjI4LCAxMCwgMTE1LCA4LCA4MSwgMTk3LCA0NSwgMTIzLCAxODcsIDIyMywgMTc2LCAyNTQsIDE2NSwgNjksIDE0MywgMjksIDEwMCwgMTE0LCAxNywgMTMwLCAyMjYsIDIyMywgMzMsIDExLCAyNDAsIDgxLCA2MSwgMTcyLCAxOTEsIDE1NywgMjQ2LCAyMDIsIDg3LCAxMzEsIDIyMSwgODgsIDQ4LCAxMjcsIDE1OSwgMTE5LCAxNjAsIDE1MiwgMTE3LCA2MSwgMjUzLCAxNzQsIDY1LCAyMTQsIDIwMywgMjE4LCA2MywgNTAsIDc4LCAxNjAsIDE4MSwgMjIxLCAyMTEsIDEyOCwgNzAsIDE3OCwgMTkxLCAxNzAsIDAsIDEzLCAxMjIsIDE3MywgMTIsIDIwMywgMjUyLCA0LCAxODQsIDIyNSwgMjUyLCA3LCA2MiwgOTYsIDExNiwgMTUsIDIxNiwgMTU4LCA1NSwgODUsIDQ4LCAxNiwgOSwgMjA2LCAxMTksIDc0LCAxMTIsIDI0MywgMTM2LCA4NCwgMTg0LCAyMjMsIDI1NCwgMTAxLCA5MSwgNjEsIDEwLCA5MSwgODUsIDE5MiwgMTQ3LCAxNDQsIDU3LCAyOSwgNjYsIDIzOCwgMTk5LCAyNDQsIDE5MywgMTk0LCAxNTAsIDIzMiwgMjAwLCAxMDcsIDIsIDMsIDEsIDAsIDFdLFxuICBwcml2YXRlOiBbNDgsIDEzMCwgNCwgMTkxLCAyLCAxLCAwLCA0OCwgMTMsIDYsIDksIDQyLCAxMzQsIDcyLCAxMzQsIDI0NywgMTMsIDEsIDEsIDEsIDUsIDAsIDQsIDEzMCwgNCwgMTY5LCA0OCwgMTMwLCA0LCAxNjUsIDIsIDEsIDAsIDIsIDEzMCwgMSwgMSwgMCwgMjI4LCA0MywgMTAxLCAxMiwgMTIxLCA3LCAxNTcsIDcxLCA4MSwgNTgsIDIxOSwgMzIsIDEwLCAxMDgsIDE5MywgMTc5LCAyMTIsIDExNiwgMjU1LCA1OSwgMjE3LCAzMiwgMTYxLCAyMDEsIDUzLCAxNzEsIDIyNiwgMTk5LCAxMzcsIDIwMiwgMTcxLCA2MCwgODIsIDUzLCAxMjUsIDYyLCAxNzcsIDEyNiwgMTY1LCAyNCwgMTQxLCAzMCwgMTUsIDIyNiwgNTksIDEwNywgMzQsIDcsIDEzLCAxNDksIDExMiwgMTI1LCAxMCwgMjMwLCAxOTEsIDE1NiwgMTY0LCAxNzcsIDEwLCAxODUsIDEzLCA2NiwgMywgMjE3LCAxNjYsIDI0NCwgOTAsIDExOSwgMTExLCAyNywgMTQ1LCAxMDQsIDcxLCAxODksIDE2NiwgMjI2LCAyNTUsIDEzMywgODMsIDE1MSwgMjMxLCAxMDEsIDE1MSwgODksIDIyLCAxOSwgNjUsIDE1NCwgMTAsIDUzLCAyMDgsIDIxOCwgMjUyLCAyMTksIDM3LCA1MCwgMjEyLCA4NiwgMTQ1LCAxMDcsIDEzMiwgOTAsIDIzMywgMjAyLCAyMjcsIDEwOCwgMTE0LCAxNDEsIDI5LCA3MywgMTg3LCAzMSwgMTMsIDIzNCwgMCwgMjMyLCAyNCwgMTkxLCAzNSwgMTQ5LCAxNzksIDEzOCwgMjE0LCAxNTksIDI0NSwgMTYyLCAxNDgsIDIyMSwgMTE4LCAxNywgMTA1LCA4OSwgMTUxLCAxNDYsIDIwOSwgNTUsIDIzNiwgNjEsIDE0MywgMjMzLCAyMjgsIDEwLCAxMTUsIDgsIDgxLCAxOTcsIDQ1LCAxMjMsIDE4NywgMjIzLCAxNzYsIDI1NCwgMTY1LCA2OSwgMTQzLCAyOSwgMTAwLCAxMTQsIDE3LCAxMzAsIDIyNiwgMjIzLCAzMywgMTEsIDI0MCwgODEsIDYxLCAxNzIsIDE5MSwgMTU3LCAyNDYsIDIwMiwgODcsIDEzMSwgMjIxLCA4OCwgNDgsIDEyNywgMTU5LCAxMTksIDE2MCwgMTUyLCAxMTcsIDYxLCAyNTMsIDE3NCwgNjUsIDIxNCwgMjAzLCAyMTgsIDYzLCA1MCwgNzgsIDE2MCwgMTgxLCAyMjEsIDIxMSwgMTI4LCA3MCwgMTc4LCAxOTEsIDE3MCwgMCwgMTMsIDEyMiwgMTczLCAxMiwgMjAzLCAyNTIsIDQsIDE4NCwgMjI1LCAyNTIsIDcsIDYyLCA5NiwgMTE2LCAxNSwgMjE2LCAxNTgsIDU1LCA4NSwgNDgsIDE2LCA5LCAyMDYsIDExOSwgNzQsIDExMiwgMjQzLCAxMzYsIDg0LCAxODQsIDIyMywgMjU0LCAxMDEsIDkxLCA2MSwgMTAsIDkxLCA4NSwgMTkyLCAxNDcsIDE0NCwgNTcsIDI5LCA2NiwgMjM4LCAxOTksIDI0NCwgMTkzLCAxOTQsIDE1MCwgMjMyLCAyMDAsIDEwNywgMiwgMywgMSwgMCwgMSwgMiwgMTMwLCAxLCAwLCAxMDMsIDI0NCwgMTM3LCAxMTgsIDExNiwgODIsIDE0LCAyMDMsIDEwMiwgMTA3LCAyNTMsIDg4LCAxMiwgMTk5LCAyMjIsIDYwLCAyNDMsIDEzNiwgODYsIDE1NywgNzQsIDIyNCwgMTkwLCA1MywgMTEzLCA1NywgMTU3LCAyNTAsIDQ5LCAxMzAsIDk2LCAzMSwgMjUyLCAxMzYsIDE1MiwgNzAsIDE0MywgMTcsIDIxNSwgOTYsIDEwMywgNTEsIDE4LCAzNSwgMTQxLCAyMTIsIDIxMCwgMjA1LCA5LCAyMTYsIDgzLCA3MCwgMjQ1LCA3MSwgMTM4LCAxMTksIDExMiwgMjI5LCAxNjQsIDE3NiwgOSwgMzcsIDgxLCAxNjEsIDE5MywgMTU0LCA2OCwgMjQ5LCAxMTUsIDEwNiwgMjAxLCA2LCAxMiwgMjI1LCAxNDQsIDEyNiwgMTQxLCAyMTAsIDE0MSwgMjQyLCAxMjgsIDE1OSwgMjIxLCAxNjMsIDIyMiwgMjEsIDIzMywgMjMwLCAxNjcsIDIwNiwgNTksIDI0LCAyNTAsIDIzMywgODEsIDEyMiwgMTAyLCAyNiwgNiwgMjMzLCA3MiwgMTMzLCA0NywgNzcsIDE1NSwgMjM4LCA4NiwgNiwgMTM5LCAyNCwgMTMxLCAxNjMsIDE3OSwgMTEyLCA0OCwgMjQ3LCAxNDIsIDYsIDIwNywgMjA0LCAxNzMsIDIyMywgMTQwLCAxOTksIDE1MCwgOTUsIDEyMywgMTUyLCAyMDIsIDE1NSwgMTMxLCAyMzgsIDYyLCA5NiwgMTMzLCA0LCAyMTcsIDUxLCAxMjEsIDMwLCAzOCwgMTc4LCAxODksIDIxNiwgNDQsIDM1LCAyNDEsIDkzLCA3LCA2MiwgOTAsIDExMSwgMjE2LCA2NiwgMjA5LCAyNDMsIDEyOCwgMjM0LCAxNDEsIDg0LCAxMzUsIDE4MSwgMTMsIDM4LCAyMjAsIDExNCwgMjQ1LCAyNDAsIDE3OCwgOTUsIDIyMCwgMjA2LCAxMSwgMTg2LCAyMzQsIDIxMywgNjYsIDEyMSwgODMsIDY4LCA4OSwgNzUsIDQ2LCAxODMsIDE0NSwgMTgzLCAxNDcsIDE2MCwgMjE1LCAxMTgsIDE5OCwgMTI1LCAxODEsIDE0NiwgMzAsIDI1MSwgNTgsIDg3LCA0NywgMjA5LCAyMzcsIDk3LCAyNCwgNDcsIDE3OSwgNiwgMTEwLCAyNDIsIDk5LCAxNTAsIDIyNiwgMTQ4LCAxOTgsIDE3NCwgMTQ2LCAxMDEsIDIxMywgODcsIDE3OCwgMTAsIDIyMywgMTA1LCAxOCwgNTYsIDUzLCAyMiwgMjEyLCAxNTgsIDE3MCwgMTc2LCA1MSwgODYsIDE0NSwgMTI1LCAxMjQsIDQ0LCA5LCA4NSwgMTksIDE0NCwgMjQ2LCAxNzAsIDc4LCAxMjQsIDMwLCAzMiwgMTIsIDE2NiwgMTc0LCAxMzksIDc3LCA2MywgMTczLCA4MiwgMTAsIDE1MywgMiwgMTI5LCAxMjksIDAsIDI0OCwgMTgsIDE0MywgMjQ2LCAxMzcsIDEzNiwgMTQ1LCAyMTksIDE3OCwgMzksIDI3LCA5NCwgNjQsIDkwLCA0NywgMTYzLCAxMTQsIDYwLCA2MywgMTg3LCAxMzEsIDE0MywgMjQ0LCAxNiwgNDIsIDEyOCwgMjMxLCAxMTcsIDkyLCA5OCwgMjE5LCAxNTUsIDYyLCAxMDcsIDI1MiwgMTcsIDI0NSwgNDUsIDE2MCwgMjI1LCAxMDMsIDE0MiwgNzIsIDM2LCAxOTMsIDE1MCwgMjM1LCAyMTQsIDE3NSwgNjIsIDIxMiwgNTYsIDQ1LCA5LCAwLCA2MCwgMTE0LCAxMDcsIDEzNCwgMjI4LCAyMDQsIDEzMSwgMTMxLCAyMTQsIDk0LCAyMDEsIDE0OCwgMTU5LCA5OSwgMTM5LCAxODEsIDEzLCAxMTksIDM4LCAzMCwgMTA3LCAxNjYsIDE2NSwgMjAzLCA0MywgMzQsIDIwLCAyMDcsIDE3MSwgMzIsIDU4LCAxNjcsIDYyLCAxOTYsIDE1MywgMTAzLCAyMDQsIDIxMywgMjQ3LCA0OCwgMTExLCAyMjcsIDU5LCA5NSwgOTcsIDE5NCwgMTg3LCA1MywgMTAsIDI0NywgMTA4LCA1OCwgODYsIDI4LCAyOSwgMTEzLCA4LCAxMTAsIDE3MSwgMjIwLCAyNDUsIDExLCA4MiwgMjMzLCAyMjMsIDkxLCA2OCwgMTY2LCAxMTcsIDE3NCwgMTg3LCA2MiwgNzcsIDIsIDEyOSwgMTI5LCAwLCAyMzUsIDExOCwgMiwgMTA1LCAyMzksIDIxMiwgMzAsIDEwNCwgMTU3LCA0MSwgMTA5LCAxMSwgMjQ4LCAxNTIsIDIyLCAyMzYsIDk3LCA0MCwgMTUzLCAxMzEsIDIyOCwgNSwgODYsIDE4NywgMTEzLCAxMjYsIDE0NCwgNzYsIDE0MSwgNzksIDExMCwgMjUwLCAxNDYsIDE1MiwgNDksIDU4LCAxNTYsIDIwMSwgMTc2LCA5MiwgMTg5LCAyMDksIDMwLCAxMTIsIDEwOCwgMTc1LCAyMDQsIDIwNCwgMjQ3LCAxNjQsIDQ2LCAxMjksIDIzOSwgOTgsIDEyNywgNDksIDE0NSwgMjE4LCA2MywgMTkzLCAxMjQsIDE3NCwgMTgsIDk4LCAyMDEsIDk5LCAxNTQsIDE2MiwgMTM4LCA3OCwgMTU5LCAyNTMsIDMsIDI0OCwgMywgMjA5LCAzNiwgMjM5LCAxOTMsIDE1NSwgMTkzLCA1LCAxOSwgMjM2LCAzNywgNzgsIDExOCwgMTM1LCAyNTAsIDE5OSwgNywgMTQxLCAyNDgsIDEyMCwgMzYsIDEzNiwgOTMsIDk4LCAxNzQsIDYwLCAxOCwgMjE1LCA5MywgMTc0LCAxMDcsIDE0MSwgMTE2LCAxNDUsIDE2NywgMjIxLCAyMTAsIDE2OSwgMjQ3LCA2NywgMjU0LCAyMjIsIDE2MSwgMTM0LCA2MywgMjIxLCA5MCwgODcsIDQyLCA5OSwgMjI3LCA4MSwgMTczLCAxNTEsIDIsIDEyOSwgMTI5LCAwLCAxMzMsIDIzLCAxNjgsIDEwMywgODMsIDIzMiwgMTQ2LCAxNjAsIDE4MSwgMjMsIDQwLCAzOCwgMjA0LCAxMywgMjE0LCAyMDMsIDQ5LCA0MSwgMTk1LCAyMjcsIDE4OSwgMTgxLCA4LCAyNDMsIDExOSwgMTA2LCA3NSwgNjcsIDI1MCwgMjUwLCAxMCwgMjM0LCA5OCwgMTE4LCAyNiwgMjUwLCAzNSwgMTIxLCAxMzIsIDEyNCwgMTAsIDc2LCAyNiwgMTk4LCAxNjUsIDE1NCwgMTA4LCAxOSwgMTE3LCA4OCwgMjMsIDE3LCAxOTIsIDE0MywgMTg0LCAxNzcsIDE4MSwgMTQxLCAxNTcsIDQsIDE4NSwgMjQ4LCAxOTMsIDc3LCAyMDQsIDI0MywgNywgMTcwLCAyNDAsIDQsIDExMSwgMTEzLCAxODMsIDAsIDI3LCAxMzYsIDIwLCAxOSwgMTQ5LCA3NCwgMzMsIDI0MSwgMjE4LCAxMDgsIDIzNiwgODAsIDE3MSwgMTQ4LCAxNiwgMTE2LCA5NywgMTA5LCA4MywgNzQsIDg4LCAxNDUsIDk0LCAyMzksIDEwMiwgMTkyLCAxOSwgMTE0LCAyMDcsIDUsIDEyOCwgNTEsIDExMSwgMTY0LCAyMzcsIDg2LCAxNTQsIDk5LCA1MiwgMTk3LCA2MiwgNTcsIDE4MiwgNiwgMTUyLCAyNDUsIDYxLCAxMzcsIDU4LCAxMDUsIDE1OSwgMiwgODQsIDEwOSwgMiwgMTI5LCAxMjksIDAsIDIyNiwgNjcsIDExMSwgMTMyLCA5NSwgOTEsIDEwMSwgMTc3LCA2MywgMTg5LCA0NCwgNTMsIDE5MywgMTg0LCA5MiwgMjMwLCAyMjMsIDk4LCAxMzMsIDc0LCAyMDksIDg2LCA1MiwgNywgNjUsIDE5NSwgMjA2LCAxMDAsIDgxLCAxNzgsIDE0NCwgNjUsIDE2NywgMTUxLCA0MiwgNzksIDg5LCAxNDksIDE4LCAxNzMsIDE4OCwgMjEsIDI0NCwgMjUxLCA0OSwgMjMwLCA0MSwgMTUwLCAxNTMsIDQ2LCAzNSwgMzgsIDIzMSwgOTksIDE3NCwgNTYsIDExNSwgMzIsIDIxNSwgMjUzLCA4NSwgMTQ3LCAxMDgsIDE5NywgMTQ3LCAzNCwgMjM2LCAyMTYsIDIyMiwgMTc3LCA1NywgOTAsIDEzNiwgMTE0LCAyMDcsIDQ4LCA0NiwgMzEsIDkwLCAyMjAsIDE4LCA1OCwgMTQzLCAyMzksIDExMSwgMjE0LCAyNywgOTUsIDYsIDM2LCA1MywgMjI5LCA2MiwgMTA4LCA0NSwgMzksIDEsIDMwLCA0NywgMTc4LCA1NiwgMTY0LCAyMDYsIDU2LCA0MiwgMjA4LCA0NiwgMTkzLCA2MSwgMzEsIDE0NywgNDUsIDE0NywgMjMsIDE4NywgMjIsIDUwLCAyNTUsIDExMSwgMjI5LCAxMzIsIDE5OSwgMTUyLCA3NSwgMTQyLCAxMzYsIDIwOSwgMTUxLCAyLCAxMjksIDEyOSwgMCwgMTY1LCA1NiwgMjMyLCA3NiwgNTUsIDU3LCAyNDAsIDE1OSwgOTIsIDIwNywgMjIwLCAxNDMsIDEzMCwgMzAsIDU3LCAyMzQsIDI1MSwgMTcyLCAxNzEsIDE4MCwgNTQsIDE1OSwgMjI5LCA5NiwgMjQ2LCA3MywgMTEyLCAxNDYsIDc1LCAxNTcsIDI0MiwgMjAxLCAxNjEsIDIxOCwgMzcsIDE3NiwgMzUsIDE3MCwgNTAsIDkwLCAxNDgsIDEwMiwgMTkxLCAxOTksIDIzOSwgMTc0LCA3OCwgNzIsIDY3LCA4NSwgMTk5LCA0NSwgMTQ5LCAxNDUsIDEzMiwgMTYxLCAyMTIsIDMzLCAxNTcsIDc1LCAyMTYsIDc5LCAzOSwgMjMzLCAxOCwgMjEwLCAyNTUsIDI2LCA3MiwgMjI5LCAyMzksIDQ0LCAxMiwgMTQ3LCAxNTgsIDE3NiwgMTkyLCA5NSwgMTI2LCAzMiwgMTc1LCAyMywgMjI2LCAxMzEsIDEzOSwgMTk3LCAxNzUsIDE5MywgNjIsIDgsIDE1MSwgMjUyLCA2OCwgMTU0LCA5NCwgODksIDE4OSwgMTI1LCA5MCwgMzAsIDM2LCAxNzUsIDczLCAyMzAsIDE5NCwgMTMsIDIzMywgMjQ3LCAxMjMsIDYwLCAyNDEsIDQ3LCAxNzEsIDUxLCAxODksIDExMiwgMTExLCAyMTMsIDE0MSwgODksIDcwLCAyNDksIDIzNiwgNjMsIDIzNiwgMTEwLCAxMTUsIDIwOF19O1xuKi9cblxuXG5leHBvcnQgZGVmYXVsdCBuZXcgQ3J5cHRvTWFuYWdlcigpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9jcnlwdG9NYW5hZ2VyL0NyeXB0b01hbmFnZXIuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7Ozs7Ozs7QUFSQTtBQUNBO0FBUUE7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBcUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7Ozs7O0FBS0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUpBO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdkRBO0FBeURBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBeHlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7Ozs7Ozs7QUFTQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBOHVCQTs7Ozs7QUFNQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///101\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nvar document = __webpack_require__(4).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qcz84ZTFjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kb20tY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///102\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar core = __webpack_require__(27);\nvar LIBRARY = __webpack_require__(44);\nvar wksExt = __webpack_require__(149);\nvar defineProperty = __webpack_require__(13).f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fd2tzLWRlZmluZS5qcz9kZTBmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgd2tzRXh0ID0gcmVxdWlyZSgnLi9fd2tzLWV4dCcpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgdmFyICRTeW1ib2wgPSBjb3JlLlN5bWJvbCB8fCAoY29yZS5TeW1ib2wgPSBMSUJSQVJZID8ge30gOiBnbG9iYWwuU3ltYm9sIHx8IHt9KTtcbiAgaWYgKG5hbWUuY2hhckF0KDApICE9ICdfJyAmJiAhKG5hbWUgaW4gJFN5bWJvbCkpIGRlZmluZVByb3BlcnR5KCRTeW1ib2wsIG5hbWUsIHsgdmFsdWU6IHdrc0V4dC5mKG5hbWUpIH0pO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fd2tzLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMTAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///103\n")},function(module,exports,__webpack_require__){eval("var shared = __webpack_require__(80)('keys');\nvar uid = __webpack_require__(49);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2hhcmVkLWtleS5qcz85OTkzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgna2V5cycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///104\n")},function(module,exports){eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZW51bS1idWcta2V5cy5qcz80MGE1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///105\n")},function(module,exports,__webpack_require__){eval("var document = __webpack_require__(4).document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faHRtbC5qcz83NzRlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2h0bWwuanNcbi8vIG1vZHVsZSBpZCA9IDEwNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///106\n")},function(module,exports,__webpack_require__){eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(6);\nvar anObject = __webpack_require__(3);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(28)(Function.call, __webpack_require__(25).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LXByb3RvLmpzPzgyZjAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gV29ya3Mgd2l0aCBfX3Byb3RvX18gb25seS4gT2xkIHY4IGNhbid0IHdvcmsgd2l0aCBudWxsIHByb3RvIG9iamVjdHMuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChPLCBwcm90bykge1xuICBhbk9iamVjdChPKTtcbiAgaWYgKCFpc09iamVjdChwcm90bykgJiYgcHJvdG8gIT09IG51bGwpIHRocm93IFR5cGVFcnJvcihwcm90byArIFwiOiBjYW4ndCBzZXQgYXMgcHJvdG90eXBlIVwiKTtcbn07XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKCdfX3Byb3RvX18nIGluIHt9ID8gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIGZ1bmN0aW9uICh0ZXN0LCBidWdneSwgc2V0KSB7XG4gICAgICB0cnkge1xuICAgICAgICBzZXQgPSByZXF1aXJlKCcuL19jdHgnKShGdW5jdGlvbi5jYWxsLCByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmYoT2JqZWN0LnByb3RvdHlwZSwgJ19fcHJvdG9fXycpLnNldCwgMik7XG4gICAgICAgIHNldCh0ZXN0LCBbXSk7XG4gICAgICAgIGJ1Z2d5ID0gISh0ZXN0IGluc3RhbmNlb2YgQXJyYXkpO1xuICAgICAgfSBjYXRjaCAoZSkgeyBidWdneSA9IHRydWU7IH1cbiAgICAgIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgICAgICBjaGVjayhPLCBwcm90byk7XG4gICAgICAgIGlmIChidWdneSkgTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICAgICAgZWxzZSBzZXQoTywgcHJvdG8pO1xuICAgICAgICByZXR1cm4gTztcbiAgICAgIH07XG4gICAgfSh7fSwgZmFsc2UpIDogdW5kZWZpbmVkKSxcbiAgY2hlY2s6IGNoZWNrXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtcHJvdG8uanNcbi8vIG1vZHVsZSBpZCA9IDEwN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///107\n")},function(module,exports){eval("module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXdzLmpzPzVkZGIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAnXFx4MDlcXHgwQVxceDBCXFx4MENcXHgwRFxceDIwXFx4QTBcXHUxNjgwXFx1MTgwRVxcdTIwMDBcXHUyMDAxXFx1MjAwMlxcdTIwMDMnICtcbiAgJ1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMEFcXHUyMDJGXFx1MjA1RlxcdTMwMDBcXHUyMDI4XFx1MjAyOVxcdUZFRkYnO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctd3MuanNcbi8vIG1vZHVsZSBpZCA9IDEwOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///108\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nvar setPrototypeOf = __webpack_require__(107).set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW5oZXJpdC1pZi1yZXF1aXJlZC5qcz85MjI3Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fc2V0LXByb3RvJykuc2V0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgdGFyZ2V0LCBDKSB7XG4gIHZhciBTID0gdGFyZ2V0LmNvbnN0cnVjdG9yO1xuICB2YXIgUDtcbiAgaWYgKFMgIT09IEMgJiYgdHlwZW9mIFMgPT0gJ2Z1bmN0aW9uJyAmJiAoUCA9IFMucHJvdG90eXBlKSAhPT0gQy5wcm90b3R5cGUgJiYgaXNPYmplY3QoUCkgJiYgc2V0UHJvdG90eXBlT2YpIHtcbiAgICBzZXRQcm90b3R5cGVPZih0aGF0LCBQKTtcbiAgfSByZXR1cm4gdGhhdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2luaGVyaXQtaWYtcmVxdWlyZWQuanNcbi8vIG1vZHVsZSBpZCA9IDEwOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///109\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar toInteger = __webpack_require__(33);\nvar defined = __webpack_require__(32);\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXJlcGVhdC5qcz9jNDA3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiByZXBlYXQoY291bnQpIHtcbiAgdmFyIHN0ciA9IFN0cmluZyhkZWZpbmVkKHRoaXMpKTtcbiAgdmFyIHJlcyA9ICcnO1xuICB2YXIgbiA9IHRvSW50ZWdlcihjb3VudCk7XG4gIGlmIChuIDwgMCB8fCBuID09IEluZmluaXR5KSB0aHJvdyBSYW5nZUVycm9yKFwiQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmVcIik7XG4gIGZvciAoO24gPiAwOyAobiA+Pj49IDEpICYmIChzdHIgKz0gc3RyKSkgaWYgKG4gJiAxKSByZXMgKz0gc3RyO1xuICByZXR1cm4gcmVzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXJlcGVhdC5qc1xuLy8gbW9kdWxlIGlkID0gMTEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///110\n")},function(module,exports){eval("// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1zaWduLmpzPzczMDkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjI4IE1hdGguc2lnbih4KVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLnNpZ24gfHwgZnVuY3Rpb24gc2lnbih4KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgcmV0dXJuICh4ID0gK3gpID09IDAgfHwgeCAhPSB4ID8geCA6IHggPCAwID8gLTEgOiAxO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1zaWduLmpzXG4vLyBtb2R1bGUgaWQgPSAxMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///111\n")},function(module,exports){eval("// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1leHBtMS5qcz9jN2JmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4xNCBNYXRoLmV4cG0xKHgpXG52YXIgJGV4cG0xID0gTWF0aC5leHBtMTtcbm1vZHVsZS5leHBvcnRzID0gKCEkZXhwbTFcbiAgLy8gT2xkIEZGIGJ1Z1xuICB8fCAkZXhwbTEoMTApID4gMjIwMjUuNDY1Nzk0ODA2NzE5IHx8ICRleHBtMSgxMCkgPCAyMjAyNS40NjU3OTQ4MDY3MTY1MTY4XG4gIC8vIFRvciBCcm93c2VyIGJ1Z1xuICB8fCAkZXhwbTEoLTJlLTE3KSAhPSAtMmUtMTdcbikgPyBmdW5jdGlvbiBleHBtMSh4KSB7XG4gIHJldHVybiAoeCA9ICt4KSA9PSAwID8geCA6IHggPiAtMWUtNiAmJiB4IDwgMWUtNiA/IHggKyB4ICogeCAvIDIgOiBNYXRoLmV4cCh4KSAtIDE7XG59IDogJGV4cG0xO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLWV4cG0xLmpzXG4vLyBtb2R1bGUgaWQgPSAxMTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///112\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(33);\nvar defined = __webpack_require__(32);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWF0LmpzP2UzZGEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykge1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICAgIHZhciBpID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIGwgPSBzLmxlbmd0aDtcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoaSA8IDAgfHwgaSA+PSBsKSByZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWF0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///113\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(44);\nvar $export = __webpack_require__(0);\nvar redefine = __webpack_require__(19);\nvar hide = __webpack_require__(18);\nvar Iterators = __webpack_require__(63);\nvar $iterCreate = __webpack_require__(115);\nvar setToStringTag = __webpack_require__(61);\nvar getPrototypeOf = __webpack_require__(26);\nvar ITERATOR = __webpack_require__(9)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1kZWZpbmUuanM/YjljZCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgJGl0ZXJDcmVhdGUgPSByZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEJVR0dZID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpOyAvLyBTYWZhcmkgaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG52YXIgRkZfSVRFUkFUT1IgPSAnQEBpdGVyYXRvcic7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChCYXNlLCBOQU1FLCBDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpIHtcbiAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuICB2YXIgZ2V0TWV0aG9kID0gZnVuY3Rpb24gKGtpbmQpIHtcbiAgICBpZiAoIUJVR0dZICYmIGtpbmQgaW4gcHJvdG8pIHJldHVybiBwcm90b1traW5kXTtcbiAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICB9O1xuICB2YXIgVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICB2YXIgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTO1xuICB2YXIgVkFMVUVTX0JVRyA9IGZhbHNlO1xuICB2YXIgcHJvdG8gPSBCYXNlLnByb3RvdHlwZTtcbiAgdmFyICRuYXRpdmUgPSBwcm90b1tJVEVSQVRPUl0gfHwgcHJvdG9bRkZfSVRFUkFUT1JdIHx8IERFRkFVTFQgJiYgcHJvdG9bREVGQVVMVF07XG4gIHZhciAkZGVmYXVsdCA9ICRuYXRpdmUgfHwgZ2V0TWV0aG9kKERFRkFVTFQpO1xuICB2YXIgJGVudHJpZXMgPSBERUZBVUxUID8gIURFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZCgnZW50cmllcycpIDogdW5kZWZpbmVkO1xuICB2YXIgJGFueU5hdGl2ZSA9IE5BTUUgPT0gJ0FycmF5JyA/IHByb3RvLmVudHJpZXMgfHwgJG5hdGl2ZSA6ICRuYXRpdmU7XG4gIHZhciBtZXRob2RzLCBrZXksIEl0ZXJhdG9yUHJvdG90eXBlO1xuICAvLyBGaXggbmF0aXZlXG4gIGlmICgkYW55TmF0aXZlKSB7XG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZigkYW55TmF0aXZlLmNhbGwobmV3IEJhc2UoKSkpO1xuICAgIGlmIChJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBJdGVyYXRvclByb3RvdHlwZS5uZXh0KSB7XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvclByb3RvdHlwZSwgVEFHLCB0cnVlKTtcbiAgICAgIC8vIGZpeCBmb3Igc29tZSBvbGQgZW5naW5lc1xuICAgICAgaWYgKCFMSUJSQVJZICYmIHR5cGVvZiBJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0gIT0gJ2Z1bmN0aW9uJykgaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgIH1cbiAgfVxuICAvLyBmaXggQXJyYXkje3ZhbHVlcywgQEBpdGVyYXRvcn0ubmFtZSBpbiBWOCAvIEZGXG4gIGlmIChERUZfVkFMVUVTICYmICRuYXRpdmUgJiYgJG5hdGl2ZS5uYW1lICE9PSBWQUxVRVMpIHtcbiAgICBWQUxVRVNfQlVHID0gdHJ1ZTtcbiAgICAkZGVmYXVsdCA9IGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuICRuYXRpdmUuY2FsbCh0aGlzKTsgfTtcbiAgfVxuICAvLyBEZWZpbmUgaXRlcmF0b3JcbiAgaWYgKCghTElCUkFSWSB8fCBGT1JDRUQpICYmIChCVUdHWSB8fCBWQUxVRVNfQlVHIHx8ICFwcm90b1tJVEVSQVRPUl0pKSB7XG4gICAgaGlkZShwcm90bywgSVRFUkFUT1IsICRkZWZhdWx0KTtcbiAgfVxuICAvLyBQbHVnIGZvciBsaWJyYXJ5XG4gIEl0ZXJhdG9yc1tOQU1FXSA9ICRkZWZhdWx0O1xuICBJdGVyYXRvcnNbVEFHXSA9IHJldHVyblRoaXM7XG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6ICRlbnRyaWVzXG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSBmb3IgKGtleSBpbiBtZXRob2RzKSB7XG4gICAgICBpZiAoIShrZXkgaW4gcHJvdG8pKSByZWRlZmluZShwcm90bywga2V5LCBtZXRob2RzW2tleV0pO1xuICAgIH0gZWxzZSAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChCVUdHWSB8fCBWQUxVRVNfQlVHKSwgTkFNRSwgbWV0aG9kcyk7XG4gIH1cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMTE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///114\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar create = __webpack_require__(52);\nvar descriptor = __webpack_require__(48);\nvar setToStringTag = __webpack_require__(61);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(18)(IteratorPrototype, __webpack_require__(9)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1jcmVhdGUuanM/MjExMiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIGRlc2NyaXB0b3IgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cbi8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19oaWRlJykoSXRlcmF0b3JQcm90b3R5cGUsIHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpIHtcbiAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7IG5leHQ6IGRlc2NyaXB0b3IoMSwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKENvbnN0cnVjdG9yLCBOQU1FICsgJyBJdGVyYXRvcicpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDExNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///115\n")},function(module,exports,__webpack_require__){eval("// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(84);\nvar defined = __webpack_require__(32);\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWNvbnRleHQuanM/OTJhYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBoZWxwZXIgZm9yIFN0cmluZyN7c3RhcnRzV2l0aCwgZW5kc1dpdGgsIGluY2x1ZGVzfVxudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgc2VhcmNoU3RyaW5nLCBOQU1FKSB7XG4gIGlmIChpc1JlZ0V4cChzZWFyY2hTdHJpbmcpKSB0aHJvdyBUeXBlRXJyb3IoJ1N0cmluZyMnICsgTkFNRSArIFwiIGRvZXNuJ3QgYWNjZXB0IHJlZ2V4IVwiKTtcbiAgcmV0dXJuIFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1jb250ZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///116\n")},function(module,exports,__webpack_require__){eval("var MATCH = __webpack_require__(9)('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZmFpbHMtaXMtcmVnZXhwLmpzP2Q0NDQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIE1BVENIID0gcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgdmFyIHJlID0gLy4vO1xuICB0cnkge1xuICAgICcvLi8nW0tFWV0ocmUpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlW01BVENIXSA9IGZhbHNlO1xuICAgICAgcmV0dXJuICEnLy4vJ1tLRVldKHJlKTtcbiAgICB9IGNhdGNoIChmKSB7IC8qIGVtcHR5ICovIH1cbiAgfSByZXR1cm4gdHJ1ZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZhaWxzLWlzLXJlZ2V4cC5qc1xuLy8gbW9kdWxlIGlkID0gMTE3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///117\n")},function(module,exports,__webpack_require__){eval("// check on default Array iterator\nvar Iterators = __webpack_require__(63);\nvar ITERATOR = __webpack_require__(9)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qcz9mNmY2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3JcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAhPT0gdW5kZWZpbmVkICYmIChJdGVyYXRvcnMuQXJyYXkgPT09IGl0IHx8IEFycmF5UHJvdG9bSVRFUkFUT1JdID09PSBpdCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1hcnJheS1pdGVyLmpzXG4vLyBtb2R1bGUgaWQgPSAxMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///118\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $defineProperty = __webpack_require__(13);\nvar createDesc = __webpack_require__(48);\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY3JlYXRlLXByb3BlcnR5LmpzPzZkMjMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgaW5kZXgsIHZhbHVlKSB7XG4gIGlmIChpbmRleCBpbiBvYmplY3QpICRkZWZpbmVQcm9wZXJ0eS5mKG9iamVjdCwgaW5kZXgsIGNyZWF0ZURlc2MoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbaW5kZXhdID0gdmFsdWU7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jcmVhdGUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDExOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///119\n")},function(module,exports,__webpack_require__){eval("var classof = __webpack_require__(72);\nvar ITERATOR = __webpack_require__(9)('iterator');\nvar Iterators = __webpack_require__(63);\nmodule.exports = __webpack_require__(27).getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanM/NDg3NyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ICE9IHVuZGVmaW5lZCkgcmV0dXJuIGl0W0lURVJBVE9SXVxuICAgIHx8IGl0WydAQGl0ZXJhdG9yJ11cbiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanNcbi8vIG1vZHVsZSBpZCA9IDEyMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///120\n")},function(module,exports,__webpack_require__){eval("// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = __webpack_require__(306);\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktc3BlY2llcy1jcmVhdGUuanM/YTY1NCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA5LjQuMi4zIEFycmF5U3BlY2llc0NyZWF0ZShvcmlnaW5hbEFycmF5LCBsZW5ndGgpXG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbCwgbGVuZ3RoKSB7XG4gIHJldHVybiBuZXcgKHNwZWNpZXNDb25zdHJ1Y3RvcihvcmlnaW5hbCkpKGxlbmd0aCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTIxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///121\n")},function(module,exports,__webpack_require__){"use strict";eval("// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n\nvar toObject = __webpack_require__(15);\nvar toAbsoluteIndex = __webpack_require__(51);\nvar toLength = __webpack_require__(14);\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktZmlsbC5qcz9jYzI2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIyLjEuMy42IEFycmF5LnByb3RvdHlwZS5maWxsKHZhbHVlLCBzdGFydCA9IDAsIGVuZCA9IHRoaXMubGVuZ3RoKVxuJ3VzZSBzdHJpY3QnO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmaWxsKHZhbHVlIC8qICwgc3RhcnQgPSAwLCBlbmQgPSBAbGVuZ3RoICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCBsZW5ndGgpO1xuICB2YXIgZW5kID0gYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gIHZhciBlbmRQb3MgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbmd0aCk7XG4gIHdoaWxlIChlbmRQb3MgPiBpbmRleCkgT1tpbmRleCsrXSA9IHZhbHVlO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWZpbGwuanNcbi8vIG1vZHVsZSBpZCA9IDEyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///122\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar addToUnscopables = __webpack_require__(45);\nvar step = __webpack_require__(165);\nvar Iterators = __webpack_require__(63);\nvar toIObject = __webpack_require__(24);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(114)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanM/NWEwNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIHN0ZXAgPSByZXF1aXJlKCcuL19pdGVyLXN0ZXAnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG5cbi8vIDIyLjEuMy40IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzKClcbi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpXG4vLyAyMi4xLjMuMjkgQXJyYXkucHJvdG90eXBlLnZhbHVlcygpXG4vLyAyMi4xLjMuMzAgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgIC8vIGtpbmRcbi8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBraW5kID0gdGhpcy5faztcbiAgdmFyIGluZGV4ID0gdGhpcy5faSsrO1xuICBpZiAoIU8gfHwgaW5kZXggPj0gTy5sZW5ndGgpIHtcbiAgICB0aGlzLl90ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBzdGVwKDEpO1xuICB9XG4gIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHN0ZXAoMCwgaW5kZXgpO1xuICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHN0ZXAoMCwgT1tpbmRleF0pO1xuICByZXR1cm4gc3RlcCgwLCBbaW5kZXgsIE9baW5kZXhdXSk7XG59LCAndmFsdWVzJyk7XG5cbi8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJSAoOS40LjQuNiwgOS40LjQuNylcbkl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2tleXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpO1xuYWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gMTIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///123\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(28);\nvar invoke = __webpack_require__(155);\nvar html = __webpack_require__(106);\nvar cel = __webpack_require__(102);\nvar global = __webpack_require__(4);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(29)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdGFzay5qcz80OWU4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBpbnZva2UgPSByZXF1aXJlKCcuL19pbnZva2UnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi9faHRtbCcpO1xudmFyIGNlbCA9IHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgc2V0VGFzayA9IGdsb2JhbC5zZXRJbW1lZGlhdGU7XG52YXIgY2xlYXJUYXNrID0gZ2xvYmFsLmNsZWFySW1tZWRpYXRlO1xudmFyIE1lc3NhZ2VDaGFubmVsID0gZ2xvYmFsLk1lc3NhZ2VDaGFubmVsO1xudmFyIERpc3BhdGNoID0gZ2xvYmFsLkRpc3BhdGNoO1xudmFyIGNvdW50ZXIgPSAwO1xudmFyIHF1ZXVlID0ge307XG52YXIgT05SRUFEWVNUQVRFQ0hBTkdFID0gJ29ucmVhZHlzdGF0ZWNoYW5nZSc7XG52YXIgZGVmZXIsIGNoYW5uZWwsIHBvcnQ7XG52YXIgcnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaWQgPSArdGhpcztcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICBpZiAocXVldWUuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgdmFyIGZuID0gcXVldWVbaWRdO1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gICAgZm4oKTtcbiAgfVxufTtcbnZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudCkge1xuICBydW4uY2FsbChldmVudC5kYXRhKTtcbn07XG4vLyBOb2RlLmpzIDAuOSsgJiBJRTEwKyBoYXMgc2V0SW1tZWRpYXRlLCBvdGhlcndpc2U6XG5pZiAoIXNldFRhc2sgfHwgIWNsZWFyVGFzaykge1xuICBzZXRUYXNrID0gZnVuY3Rpb24gc2V0SW1tZWRpYXRlKGZuKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTtcbiAgICB2YXIgaSA9IDE7XG4gICAgd2hpbGUgKGFyZ3VtZW50cy5sZW5ndGggPiBpKSBhcmdzLnB1c2goYXJndW1lbnRzW2krK10pO1xuICAgIHF1ZXVlWysrY291bnRlcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgICAgIGludm9rZSh0eXBlb2YgZm4gPT0gJ2Z1bmN0aW9uJyA/IGZuIDogRnVuY3Rpb24oZm4pLCBhcmdzKTtcbiAgICB9O1xuICAgIGRlZmVyKGNvdW50ZXIpO1xuICAgIHJldHVybiBjb3VudGVyO1xuICB9O1xuICBjbGVhclRhc2sgPSBmdW5jdGlvbiBjbGVhckltbWVkaWF0ZShpZCkge1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gIH07XG4gIC8vIE5vZGUuanMgMC44LVxuICBpZiAocmVxdWlyZSgnLi9fY29mJykocHJvY2VzcykgPT0gJ3Byb2Nlc3MnKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soY3R4KHJ1biwgaWQsIDEpKTtcbiAgICB9O1xuICAvLyBTcGhlcmUgKEpTIGdhbWUgZW5naW5lKSBEaXNwYXRjaCBBUElcbiAgfSBlbHNlIGlmIChEaXNwYXRjaCAmJiBEaXNwYXRjaC5ub3cpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgRGlzcGF0Y2gubm93KGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBNZXNzYWdlQ2hhbm5lbCwgaW5jbHVkZXMgV2ViV29ya2Vyc1xuICB9IGVsc2UgaWYgKE1lc3NhZ2VDaGFubmVsKSB7XG4gICAgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgIHBvcnQgPSBjaGFubmVsLnBvcnQyO1xuICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gbGlzdGVuZXI7XG4gICAgZGVmZXIgPSBjdHgocG9ydC5wb3N0TWVzc2FnZSwgcG9ydCwgMSk7XG4gIC8vIEJyb3dzZXJzIHdpdGggcG9zdE1lc3NhZ2UsIHNraXAgV2ViV29ya2Vyc1xuICAvLyBJRTggaGFzIHBvc3RNZXNzYWdlLCBidXQgaXQncyBzeW5jICYgdHlwZW9mIGl0cyBwb3N0TWVzc2FnZSBpcyAnb2JqZWN0J1xuICB9IGVsc2UgaWYgKGdsb2JhbC5hZGRFdmVudExpc3RlbmVyICYmIHR5cGVvZiBwb3N0TWVzc2FnZSA9PSAnZnVuY3Rpb24nICYmICFnbG9iYWwuaW1wb3J0U2NyaXB0cykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBnbG9iYWwucG9zdE1lc3NhZ2UoaWQgKyAnJywgJyonKTtcbiAgICB9O1xuICAgIGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbGlzdGVuZXIsIGZhbHNlKTtcbiAgLy8gSUU4LVxuICB9IGVsc2UgaWYgKE9OUkVBRFlTVEFURUNIQU5HRSBpbiBjZWwoJ3NjcmlwdCcpKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGh0bWwuYXBwZW5kQ2hpbGQoY2VsKCdzY3JpcHQnKSlbT05SRUFEWVNUQVRFQ0hBTkdFXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaHRtbC5yZW1vdmVDaGlsZCh0aGlzKTtcbiAgICAgICAgcnVuLmNhbGwoaWQpO1xuICAgICAgfTtcbiAgICB9O1xuICAvLyBSZXN0IG9sZCBicm93c2Vyc1xuICB9IGVsc2Uge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBzZXRUaW1lb3V0KGN0eChydW4sIGlkLCAxKSwgMCk7XG4gICAgfTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0VGFzayxcbiAgY2xlYXI6IGNsZWFyVGFza1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gMTI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///124\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar macrotask = __webpack_require__(124).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(29)(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWljcm90YXNrLmpzPzgzN2UiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIG1hY3JvdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKS5zZXQ7XG52YXIgT2JzZXJ2ZXIgPSBnbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xudmFyIGlzTm9kZSA9IHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBoZWFkLCBsYXN0LCBub3RpZnk7XG5cbiAgdmFyIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnQsIGZuO1xuICAgIGlmIChpc05vZGUgJiYgKHBhcmVudCA9IHByb2Nlc3MuZG9tYWluKSkgcGFyZW50LmV4aXQoKTtcbiAgICB3aGlsZSAoaGVhZCkge1xuICAgICAgZm4gPSBoZWFkLmZuO1xuICAgICAgaGVhZCA9IGhlYWQubmV4dDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZuKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChoZWFkKSBub3RpZnkoKTtcbiAgICAgICAgZWxzZSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gbGFzdCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocGFyZW50KSBwYXJlbnQuZW50ZXIoKTtcbiAgfTtcblxuICAvLyBOb2RlLmpzXG4gIGlmIChpc05vZGUpIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGZsdXNoKTtcbiAgICB9O1xuICAvLyBicm93c2VycyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXIsIGV4Y2VwdCBpT1MgU2FmYXJpIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMzOVxuICB9IGVsc2UgaWYgKE9ic2VydmVyICYmICEoZ2xvYmFsLm5hdmlnYXRvciAmJiBnbG9iYWwubmF2aWdhdG9yLnN0YW5kYWxvbmUpKSB7XG4gICAgdmFyIHRvZ2dsZSA9IHRydWU7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XG4gICAgbmV3IE9ic2VydmVyKGZsdXNoKS5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBub2RlLmRhdGEgPSB0b2dnbGUgPSAhdG9nZ2xlO1xuICAgIH07XG4gIC8vIGVudmlyb25tZW50cyB3aXRoIG1heWJlIG5vbi1jb21wbGV0ZWx5IGNvcnJlY3QsIGJ1dCBleGlzdGVudCBQcm9taXNlXG4gIH0gZWxzZSBpZiAoUHJvbWlzZSAmJiBQcm9taXNlLnJlc29sdmUpIHtcbiAgICAvLyBQcm9taXNlLnJlc29sdmUgd2l0aG91dCBhbiBhcmd1bWVudCB0aHJvd3MgYW4gZXJyb3IgaW4gTEcgV2ViT1MgMlxuICAgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvbWlzZS50aGVuKGZsdXNoKTtcbiAgICB9O1xuICAvLyBmb3Igb3RoZXIgZW52aXJvbm1lbnRzIC0gbWFjcm90YXNrIGJhc2VkIG9uOlxuICAvLyAtIHNldEltbWVkaWF0ZVxuICAvLyAtIE1lc3NhZ2VDaGFubmVsXG4gIC8vIC0gd2luZG93LnBvc3RNZXNzYWdcbiAgLy8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcbiAgLy8gLSBzZXRUaW1lb3V0XG4gIH0gZWxzZSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gc3RyYW5nZSBJRSArIHdlYnBhY2sgZGV2IHNlcnZlciBidWcgLSB1c2UgLmNhbGwoZ2xvYmFsKVxuICAgICAgbWFjcm90YXNrLmNhbGwoZ2xvYmFsLCBmbHVzaCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoZm4pIHtcbiAgICB2YXIgdGFzayA9IHsgZm46IGZuLCBuZXh0OiB1bmRlZmluZWQgfTtcbiAgICBpZiAobGFzdCkgbGFzdC5uZXh0ID0gdGFzaztcbiAgICBpZiAoIWhlYWQpIHtcbiAgICAgIGhlYWQgPSB0YXNrO1xuICAgICAgbm90aWZ5KCk7XG4gICAgfSBsYXN0ID0gdGFzaztcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX21pY3JvdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gMTI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///125\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(16);\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qcz9jM2EwIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDI1LjQuMS41IE5ld1Byb21pc2VDYXBhYmlsaXR5KEMpXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xuXG5mdW5jdGlvbiBQcm9taXNlQ2FwYWJpbGl0eShDKSB7XG4gIHZhciByZXNvbHZlLCByZWplY3Q7XG4gIHRoaXMucHJvbWlzZSA9IG5ldyBDKGZ1bmN0aW9uICgkJHJlc29sdmUsICQkcmVqZWN0KSB7XG4gICAgaWYgKHJlc29sdmUgIT09IHVuZGVmaW5lZCB8fCByZWplY3QgIT09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKCdCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvcicpO1xuICAgIHJlc29sdmUgPSAkJHJlc29sdmU7XG4gICAgcmVqZWN0ID0gJCRyZWplY3Q7XG4gIH0pO1xuICB0aGlzLnJlc29sdmUgPSBhRnVuY3Rpb24ocmVzb2x2ZSk7XG4gIHRoaXMucmVqZWN0ID0gYUZ1bmN0aW9uKHJlamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiAoQykge1xuICByZXR1cm4gbmV3IFByb21pc2VDYXBhYmlsaXR5KEMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qc1xuLy8gbW9kdWxlIGlkID0gMTI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///126\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(4);\nvar DESCRIPTORS = __webpack_require__(12);\nvar LIBRARY = __webpack_require__(44);\nvar $typed = __webpack_require__(91);\nvar hide = __webpack_require__(18);\nvar redefineAll = __webpack_require__(57);\nvar fails = __webpack_require__(5);\nvar anInstance = __webpack_require__(55);\nvar toInteger = __webpack_require__(33);\nvar toLength = __webpack_require__(14);\nvar toIndex = __webpack_require__(174);\nvar gOPN = __webpack_require__(53).f;\nvar dP = __webpack_require__(13).f;\nvar arrayFill = __webpack_require__(122);\nvar setToStringTag = __webpack_require__(61);\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdHlwZWQtYnVmZmVyLmpzPzJlYjciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyICR0eXBlZCA9IHJlcXVpcmUoJy4vX3R5cGVkJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0luZGV4ID0gcmVxdWlyZSgnLi9fdG8taW5kZXgnKTtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBhcnJheUZpbGwgPSByZXF1aXJlKCcuL19hcnJheS1maWxsJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIEFSUkFZX0JVRkZFUiA9ICdBcnJheUJ1ZmZlcic7XG52YXIgREFUQV9WSUVXID0gJ0RhdGFWaWV3JztcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBXUk9OR19MRU5HVEggPSAnV3JvbmcgbGVuZ3RoISc7XG52YXIgV1JPTkdfSU5ERVggPSAnV3JvbmcgaW5kZXghJztcbnZhciAkQXJyYXlCdWZmZXIgPSBnbG9iYWxbQVJSQVlfQlVGRkVSXTtcbnZhciAkRGF0YVZpZXcgPSBnbG9iYWxbREFUQV9WSUVXXTtcbnZhciBNYXRoID0gZ2xvYmFsLk1hdGg7XG52YXIgUmFuZ2VFcnJvciA9IGdsb2JhbC5SYW5nZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNoYWRvdy1yZXN0cmljdGVkLW5hbWVzXG52YXIgSW5maW5pdHkgPSBnbG9iYWwuSW5maW5pdHk7XG52YXIgQmFzZUJ1ZmZlciA9ICRBcnJheUJ1ZmZlcjtcbnZhciBhYnMgPSBNYXRoLmFicztcbnZhciBwb3cgPSBNYXRoLnBvdztcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgbG9nID0gTWF0aC5sb2c7XG52YXIgTE4yID0gTWF0aC5MTjI7XG52YXIgQlVGRkVSID0gJ2J1ZmZlcic7XG52YXIgQllURV9MRU5HVEggPSAnYnl0ZUxlbmd0aCc7XG52YXIgQllURV9PRkZTRVQgPSAnYnl0ZU9mZnNldCc7XG52YXIgJEJVRkZFUiA9IERFU0NSSVBUT1JTID8gJ19iJyA6IEJVRkZFUjtcbnZhciAkTEVOR1RIID0gREVTQ1JJUFRPUlMgPyAnX2wnIDogQllURV9MRU5HVEg7XG52YXIgJE9GRlNFVCA9IERFU0NSSVBUT1JTID8gJ19vJyA6IEJZVEVfT0ZGU0VUO1xuXG4vLyBJRUVFNzU0IGNvbnZlcnNpb25zIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvaWVlZTc1NFxuZnVuY3Rpb24gcGFja0lFRUU3NTQodmFsdWUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgYnVmZmVyID0gbmV3IEFycmF5KG5CeXRlcyk7XG4gIHZhciBlTGVuID0gbkJ5dGVzICogOCAtIG1MZW4gLSAxO1xuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMTtcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxO1xuICB2YXIgcnQgPSBtTGVuID09PSAyMyA/IHBvdygyLCAtMjQpIC0gcG93KDIsIC03NykgOiAwO1xuICB2YXIgaSA9IDA7XG4gIHZhciBzID0gdmFsdWUgPCAwIHx8IHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDAgPyAxIDogMDtcbiAgdmFyIGUsIG0sIGM7XG4gIHZhbHVlID0gYWJzKHZhbHVlKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICBpZiAodmFsdWUgIT0gdmFsdWUgfHwgdmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIG0gPSB2YWx1ZSAhPSB2YWx1ZSA/IDEgOiAwO1xuICAgIGUgPSBlTWF4O1xuICB9IGVsc2Uge1xuICAgIGUgPSBmbG9vcihsb2codmFsdWUpIC8gTE4yKTtcbiAgICBpZiAodmFsdWUgKiAoYyA9IHBvdygyLCAtZSkpIDwgMSkge1xuICAgICAgZS0tO1xuICAgICAgYyAqPSAyO1xuICAgIH1cbiAgICBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIHZhbHVlICs9IHJ0IC8gYztcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgKz0gcnQgKiBwb3coMiwgMSAtIGVCaWFzKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlICogYyA+PSAyKSB7XG4gICAgICBlKys7XG4gICAgICBjIC89IDI7XG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gZU1heCkge1xuICAgICAgbSA9IDA7XG4gICAgICBlID0gZU1heDtcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKHZhbHVlICogYyAtIDEpICogcG93KDIsIG1MZW4pO1xuICAgICAgZSA9IGUgKyBlQmlhcztcbiAgICB9IGVsc2Uge1xuICAgICAgbSA9IHZhbHVlICogcG93KDIsIGVCaWFzIC0gMSkgKiBwb3coMiwgbUxlbik7XG4gICAgICBlID0gMDtcbiAgICB9XG4gIH1cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW2krK10gPSBtICYgMjU1LCBtIC89IDI1NiwgbUxlbiAtPSA4KTtcbiAgZSA9IGUgPDwgbUxlbiB8IG07XG4gIGVMZW4gKz0gbUxlbjtcbiAgZm9yICg7IGVMZW4gPiAwOyBidWZmZXJbaSsrXSA9IGUgJiAyNTUsIGUgLz0gMjU2LCBlTGVuIC09IDgpO1xuICBidWZmZXJbLS1pXSB8PSBzICogMTI4O1xuICByZXR1cm4gYnVmZmVyO1xufVxuZnVuY3Rpb24gdW5wYWNrSUVFRTc1NChidWZmZXIsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMTtcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDE7XG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMTtcbiAgdmFyIG5CaXRzID0gZUxlbiAtIDc7XG4gIHZhciBpID0gbkJ5dGVzIC0gMTtcbiAgdmFyIHMgPSBidWZmZXJbaS0tXTtcbiAgdmFyIGUgPSBzICYgMTI3O1xuICB2YXIgbTtcbiAgcyA+Pj0gNztcbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IGUgKiAyNTYgKyBidWZmZXJbaV0sIGktLSwgbkJpdHMgLT0gOCk7XG4gIG0gPSBlICYgKDEgPDwgLW5CaXRzKSAtIDE7XG4gIGUgPj49IC1uQml0cztcbiAgbkJpdHMgKz0gbUxlbjtcbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IG0gKiAyNTYgKyBidWZmZXJbaV0sIGktLSwgbkJpdHMgLT0gOCk7XG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhcztcbiAgfSBlbHNlIGlmIChlID09PSBlTWF4KSB7XG4gICAgcmV0dXJuIG0gPyBOYU4gOiBzID8gLUluZmluaXR5IDogSW5maW5pdHk7XG4gIH0gZWxzZSB7XG4gICAgbSA9IG0gKyBwb3coMiwgbUxlbik7XG4gICAgZSA9IGUgLSBlQmlhcztcbiAgfSByZXR1cm4gKHMgPyAtMSA6IDEpICogbSAqIHBvdygyLCBlIC0gbUxlbik7XG59XG5cbmZ1bmN0aW9uIHVucGFja0kzMihieXRlcykge1xuICByZXR1cm4gYnl0ZXNbM10gPDwgMjQgfCBieXRlc1syXSA8PCAxNiB8IGJ5dGVzWzFdIDw8IDggfCBieXRlc1swXTtcbn1cbmZ1bmN0aW9uIHBhY2tJOChpdCkge1xuICByZXR1cm4gW2l0ICYgMHhmZl07XG59XG5mdW5jdGlvbiBwYWNrSTE2KGl0KSB7XG4gIHJldHVybiBbaXQgJiAweGZmLCBpdCA+PiA4ICYgMHhmZl07XG59XG5mdW5jdGlvbiBwYWNrSTMyKGl0KSB7XG4gIHJldHVybiBbaXQgJiAweGZmLCBpdCA+PiA4ICYgMHhmZiwgaXQgPj4gMTYgJiAweGZmLCBpdCA+PiAyNCAmIDB4ZmZdO1xufVxuZnVuY3Rpb24gcGFja0Y2NChpdCkge1xuICByZXR1cm4gcGFja0lFRUU3NTQoaXQsIDUyLCA4KTtcbn1cbmZ1bmN0aW9uIHBhY2tGMzIoaXQpIHtcbiAgcmV0dXJuIHBhY2tJRUVFNzU0KGl0LCAyMywgNCk7XG59XG5cbmZ1bmN0aW9uIGFkZEdldHRlcihDLCBrZXksIGludGVybmFsKSB7XG4gIGRQKENbUFJPVE9UWVBFXSwga2V5LCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpc1tpbnRlcm5hbF07IH0gfSk7XG59XG5cbmZ1bmN0aW9uIGdldCh2aWV3LCBieXRlcywgaW5kZXgsIGlzTGl0dGxlRW5kaWFuKSB7XG4gIHZhciBudW1JbmRleCA9ICtpbmRleDtcbiAgdmFyIGludEluZGV4ID0gdG9JbmRleChudW1JbmRleCk7XG4gIGlmIChpbnRJbmRleCArIGJ5dGVzID4gdmlld1skTEVOR1RIXSkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19JTkRFWCk7XG4gIHZhciBzdG9yZSA9IHZpZXdbJEJVRkZFUl0uX2I7XG4gIHZhciBzdGFydCA9IGludEluZGV4ICsgdmlld1skT0ZGU0VUXTtcbiAgdmFyIHBhY2sgPSBzdG9yZS5zbGljZShzdGFydCwgc3RhcnQgKyBieXRlcyk7XG4gIHJldHVybiBpc0xpdHRsZUVuZGlhbiA/IHBhY2sgOiBwYWNrLnJldmVyc2UoKTtcbn1cbmZ1bmN0aW9uIHNldCh2aWV3LCBieXRlcywgaW5kZXgsIGNvbnZlcnNpb24sIHZhbHVlLCBpc0xpdHRsZUVuZGlhbikge1xuICB2YXIgbnVtSW5kZXggPSAraW5kZXg7XG4gIHZhciBpbnRJbmRleCA9IHRvSW5kZXgobnVtSW5kZXgpO1xuICBpZiAoaW50SW5kZXggKyBieXRlcyA+IHZpZXdbJExFTkdUSF0pIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfSU5ERVgpO1xuICB2YXIgc3RvcmUgPSB2aWV3WyRCVUZGRVJdLl9iO1xuICB2YXIgc3RhcnQgPSBpbnRJbmRleCArIHZpZXdbJE9GRlNFVF07XG4gIHZhciBwYWNrID0gY29udmVyc2lvbigrdmFsdWUpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzOyBpKyspIHN0b3JlW3N0YXJ0ICsgaV0gPSBwYWNrW2lzTGl0dGxlRW5kaWFuID8gaSA6IGJ5dGVzIC0gaSAtIDFdO1xufVxuXG5pZiAoISR0eXBlZC5BQlYpIHtcbiAgJEFycmF5QnVmZmVyID0gZnVuY3Rpb24gQXJyYXlCdWZmZXIobGVuZ3RoKSB7XG4gICAgYW5JbnN0YW5jZSh0aGlzLCAkQXJyYXlCdWZmZXIsIEFSUkFZX0JVRkZFUik7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0b0luZGV4KGxlbmd0aCk7XG4gICAgdGhpcy5fYiA9IGFycmF5RmlsbC5jYWxsKG5ldyBBcnJheShieXRlTGVuZ3RoKSwgMCk7XG4gICAgdGhpc1skTEVOR1RIXSA9IGJ5dGVMZW5ndGg7XG4gIH07XG5cbiAgJERhdGFWaWV3ID0gZnVuY3Rpb24gRGF0YVZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSB7XG4gICAgYW5JbnN0YW5jZSh0aGlzLCAkRGF0YVZpZXcsIERBVEFfVklFVyk7XG4gICAgYW5JbnN0YW5jZShidWZmZXIsICRBcnJheUJ1ZmZlciwgREFUQV9WSUVXKTtcbiAgICB2YXIgYnVmZmVyTGVuZ3RoID0gYnVmZmVyWyRMRU5HVEhdO1xuICAgIHZhciBvZmZzZXQgPSB0b0ludGVnZXIoYnl0ZU9mZnNldCk7XG4gICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ID4gYnVmZmVyTGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBvZmZzZXQhJyk7XG4gICAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPT09IHVuZGVmaW5lZCA/IGJ1ZmZlckxlbmd0aCAtIG9mZnNldCA6IHRvTGVuZ3RoKGJ5dGVMZW5ndGgpO1xuICAgIGlmIChvZmZzZXQgKyBieXRlTGVuZ3RoID4gYnVmZmVyTGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgdGhpc1skQlVGRkVSXSA9IGJ1ZmZlcjtcbiAgICB0aGlzWyRPRkZTRVRdID0gb2Zmc2V0O1xuICAgIHRoaXNbJExFTkdUSF0gPSBieXRlTGVuZ3RoO1xuICB9O1xuXG4gIGlmIChERVNDUklQVE9SUykge1xuICAgIGFkZEdldHRlcigkQXJyYXlCdWZmZXIsIEJZVEVfTEVOR1RILCAnX2wnKTtcbiAgICBhZGRHZXR0ZXIoJERhdGFWaWV3LCBCVUZGRVIsICdfYicpO1xuICAgIGFkZEdldHRlcigkRGF0YVZpZXcsIEJZVEVfTEVOR1RILCAnX2wnKTtcbiAgICBhZGRHZXR0ZXIoJERhdGFWaWV3LCBCWVRFX09GRlNFVCwgJ19vJyk7XG4gIH1cblxuICByZWRlZmluZUFsbCgkRGF0YVZpZXdbUFJPVE9UWVBFXSwge1xuICAgIGdldEludDg6IGZ1bmN0aW9uIGdldEludDgoYnl0ZU9mZnNldCkge1xuICAgICAgcmV0dXJuIGdldCh0aGlzLCAxLCBieXRlT2Zmc2V0KVswXSA8PCAyNCA+PiAyNDtcbiAgICB9LFxuICAgIGdldFVpbnQ4OiBmdW5jdGlvbiBnZXRVaW50OChieXRlT2Zmc2V0KSB7XG4gICAgICByZXR1cm4gZ2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQpWzBdO1xuICAgIH0sXG4gICAgZ2V0SW50MTY6IGZ1bmN0aW9uIGdldEludDE2KGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHZhciBieXRlcyA9IGdldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pO1xuICAgICAgcmV0dXJuIChieXRlc1sxXSA8PCA4IHwgYnl0ZXNbMF0pIDw8IDE2ID4+IDE2O1xuICAgIH0sXG4gICAgZ2V0VWludDE2OiBmdW5jdGlvbiBnZXRVaW50MTYoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgdmFyIGJ5dGVzID0gZ2V0KHRoaXMsIDIsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50c1sxXSk7XG4gICAgICByZXR1cm4gYnl0ZXNbMV0gPDwgOCB8IGJ5dGVzWzBdO1xuICAgIH0sXG4gICAgZ2V0SW50MzI6IGZ1bmN0aW9uIGdldEludDMyKGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHJldHVybiB1bnBhY2tJMzIoZ2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50c1sxXSkpO1xuICAgIH0sXG4gICAgZ2V0VWludDMyOiBmdW5jdGlvbiBnZXRVaW50MzIoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgcmV0dXJuIHVucGFja0kzMihnZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKSkgPj4+IDA7XG4gICAgfSxcbiAgICBnZXRGbG9hdDMyOiBmdW5jdGlvbiBnZXRGbG9hdDMyKGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHJldHVybiB1bnBhY2tJRUVFNzU0KGdldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pLCAyMywgNCk7XG4gICAgfSxcbiAgICBnZXRGbG9hdDY0OiBmdW5jdGlvbiBnZXRGbG9hdDY0KGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHJldHVybiB1bnBhY2tJRUVFNzU0KGdldCh0aGlzLCA4LCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pLCA1MiwgOCk7XG4gICAgfSxcbiAgICBzZXRJbnQ4OiBmdW5jdGlvbiBzZXRJbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKSB7XG4gICAgICBzZXQodGhpcywgMSwgYnl0ZU9mZnNldCwgcGFja0k4LCB2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXRVaW50ODogZnVuY3Rpb24gc2V0VWludDgoYnl0ZU9mZnNldCwgdmFsdWUpIHtcbiAgICAgIHNldCh0aGlzLCAxLCBieXRlT2Zmc2V0LCBwYWNrSTgsIHZhbHVlKTtcbiAgICB9LFxuICAgIHNldEludDE2OiBmdW5jdGlvbiBzZXRJbnQxNihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDIsIGJ5dGVPZmZzZXQsIHBhY2tJMTYsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH0sXG4gICAgc2V0VWludDE2OiBmdW5jdGlvbiBzZXRVaW50MTYoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBwYWNrSTE2LCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9LFxuICAgIHNldEludDMyOiBmdW5jdGlvbiBzZXRJbnQzMihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIHBhY2tJMzIsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH0sXG4gICAgc2V0VWludDMyOiBmdW5jdGlvbiBzZXRVaW50MzIoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBwYWNrSTMyLCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9LFxuICAgIHNldEZsb2F0MzI6IGZ1bmN0aW9uIHNldEZsb2F0MzIoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBwYWNrRjMyLCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9LFxuICAgIHNldEZsb2F0NjQ6IGZ1bmN0aW9uIHNldEZsb2F0NjQoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCA4LCBieXRlT2Zmc2V0LCBwYWNrRjY0LCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9XG4gIH0pO1xufSBlbHNlIHtcbiAgaWYgKCFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgJEFycmF5QnVmZmVyKDEpO1xuICB9KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIG5ldyAkQXJyYXlCdWZmZXIoLTEpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICB9KSB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgbmV3ICRBcnJheUJ1ZmZlcigpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIG5ldyAkQXJyYXlCdWZmZXIoMS41KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBuZXcgJEFycmF5QnVmZmVyKE5hTik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgcmV0dXJuICRBcnJheUJ1ZmZlci5uYW1lICE9IEFSUkFZX0JVRkZFUjtcbiAgfSkpIHtcbiAgICAkQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiBBcnJheUJ1ZmZlcihsZW5ndGgpIHtcbiAgICAgIGFuSW5zdGFuY2UodGhpcywgJEFycmF5QnVmZmVyKTtcbiAgICAgIHJldHVybiBuZXcgQmFzZUJ1ZmZlcih0b0luZGV4KGxlbmd0aCkpO1xuICAgIH07XG4gICAgdmFyIEFycmF5QnVmZmVyUHJvdG8gPSAkQXJyYXlCdWZmZXJbUFJPVE9UWVBFXSA9IEJhc2VCdWZmZXJbUFJPVE9UWVBFXTtcbiAgICBmb3IgKHZhciBrZXlzID0gZ09QTihCYXNlQnVmZmVyKSwgaiA9IDAsIGtleTsga2V5cy5sZW5ndGggPiBqOykge1xuICAgICAgaWYgKCEoKGtleSA9IGtleXNbaisrXSkgaW4gJEFycmF5QnVmZmVyKSkgaGlkZSgkQXJyYXlCdWZmZXIsIGtleSwgQmFzZUJ1ZmZlcltrZXldKTtcbiAgICB9XG4gICAgaWYgKCFMSUJSQVJZKSBBcnJheUJ1ZmZlclByb3RvLmNvbnN0cnVjdG9yID0gJEFycmF5QnVmZmVyO1xuICB9XG4gIC8vIGlPUyBTYWZhcmkgNy54IGJ1Z1xuICB2YXIgdmlldyA9IG5ldyAkRGF0YVZpZXcobmV3ICRBcnJheUJ1ZmZlcigyKSk7XG4gIHZhciAkc2V0SW50OCA9ICREYXRhVmlld1tQUk9UT1RZUEVdLnNldEludDg7XG4gIHZpZXcuc2V0SW50OCgwLCAyMTQ3NDgzNjQ4KTtcbiAgdmlldy5zZXRJbnQ4KDEsIDIxNDc0ODM2NDkpO1xuICBpZiAodmlldy5nZXRJbnQ4KDApIHx8ICF2aWV3LmdldEludDgoMSkpIHJlZGVmaW5lQWxsKCREYXRhVmlld1tQUk9UT1RZUEVdLCB7XG4gICAgc2V0SW50ODogZnVuY3Rpb24gc2V0SW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgJHNldEludDguY2FsbCh0aGlzLCBieXRlT2Zmc2V0LCB2YWx1ZSA8PCAyNCA+PiAyNCk7XG4gICAgfSxcbiAgICBzZXRVaW50ODogZnVuY3Rpb24gc2V0VWludDgoYnl0ZU9mZnNldCwgdmFsdWUpIHtcbiAgICAgICRzZXRJbnQ4LmNhbGwodGhpcywgYnl0ZU9mZnNldCwgdmFsdWUgPDwgMjQgPj4gMjQpO1xuICAgIH1cbiAgfSwgdHJ1ZSk7XG59XG5zZXRUb1N0cmluZ1RhZygkQXJyYXlCdWZmZXIsIEFSUkFZX0JVRkZFUik7XG5zZXRUb1N0cmluZ1RhZygkRGF0YVZpZXcsIERBVEFfVklFVyk7XG5oaWRlKCREYXRhVmlld1tQUk9UT1RZUEVdLCAkdHlwZWQuVklFVywgdHJ1ZSk7XG5leHBvcnRzW0FSUkFZX0JVRkZFUl0gPSAkQXJyYXlCdWZmZXI7XG5leHBvcnRzW0RBVEFfVklFV10gPSAkRGF0YVZpZXc7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3R5cGVkLWJ1ZmZlci5qc1xuLy8gbW9kdWxlIGlkID0gMTI3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///127\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $at = __webpack_require__(418)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(183)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanM/Y2QwNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbi8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIgaW5kZXggPSB0aGlzLl9pO1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBPLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG4gIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDEyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///128\n")},function(module,exports){eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzPzUyZTEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW50ZWdlci5qc1xuLy8gbW9kdWxlIGlkID0gMTI5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///129\n")},function(module,exports){eval('// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError("Can\'t call method on " + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZWZpbmVkLmpzP2U3NjgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZWZpbmVkLmpzXG4vLyBtb2R1bGUgaWQgPSAxMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///130\n')},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(36);\nvar document = __webpack_require__(17).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzPzM4ZGQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTMxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///131\n")},function(module,exports,__webpack_require__){eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(36);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanM/MzI2MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMSBUb1ByaW1pdGl2ZShpbnB1dCBbLCBQcmVmZXJyZWRUeXBlXSlcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzXG4vLyBtb2R1bGUgaWQgPSAxMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///132\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(41);\nvar dPs = __webpack_require__(420);\nvar enumBugKeys = __webpack_require__(137);\nvar IE_PROTO = __webpack_require__(135)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(131)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(188).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzPzYyODYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBkUHMgPSByZXF1aXJlKCcuL19vYmplY3QtZHBzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgRW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBjcmVhdGVEaWN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdpZnJhbWUnKTtcbiAgdmFyIGkgPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIGd0ID0gJz4nO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICByZXF1aXJlKCcuL19odG1sJykuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGktLSkgZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tpXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZFBzKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///133\n")},function(module,exports,__webpack_require__){eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(129);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1sZW5ndGguanM/NDExMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1sZW5ndGguanNcbi8vIG1vZHVsZSBpZCA9IDEzNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///134\n")},function(module,exports,__webpack_require__){eval("var shared = __webpack_require__(136)('keys');\nvar uid = __webpack_require__(96);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzPzZiMWQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCdrZXlzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIHNoYXJlZFtrZXldIHx8IChzaGFyZWRba2V5XSA9IHVpZChrZXkpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2hhcmVkLWtleS5qc1xuLy8gbW9kdWxlIGlkID0gMTM1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///135\n")},function(module,exports,__webpack_require__){eval("var core = __webpack_require__(10);\nvar global = __webpack_require__(17);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(73) ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanM/N2JjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246IGNvcmUudmVyc2lvbixcbiAgbW9kZTogcmVxdWlyZSgnLi9fbGlicmFyeScpID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTggRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanNcbi8vIG1vZHVsZSBpZCA9IDEzNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///136\n")},function(module,exports){eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzP2M2NzciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSUUgOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSAoXG4gICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnXG4pLnNwbGl0KCcsJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1idWcta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///137\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(95);\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzP2E4MDQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gMjUuNC4xLjUgTmV3UHJvbWlzZUNhcGFiaWxpdHkoQylcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5cbmZ1bmN0aW9uIFByb21pc2VDYXBhYmlsaXR5KEMpIHtcbiAgdmFyIHJlc29sdmUsIHJlamVjdDtcbiAgdGhpcy5wcm9taXNlID0gbmV3IEMoZnVuY3Rpb24gKCQkcmVzb2x2ZSwgJCRyZWplY3QpIHtcbiAgICBpZiAocmVzb2x2ZSAhPT0gdW5kZWZpbmVkIHx8IHJlamVjdCAhPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoJ0JhZCBQcm9taXNlIGNvbnN0cnVjdG9yJyk7XG4gICAgcmVzb2x2ZSA9ICQkcmVzb2x2ZTtcbiAgICByZWplY3QgPSAkJHJlamVjdDtcbiAgfSk7XG4gIHRoaXMucmVzb2x2ZSA9IGFGdW5jdGlvbihyZXNvbHZlKTtcbiAgdGhpcy5yZWplY3QgPSBhRnVuY3Rpb24ocmVqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIChDKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanNcbi8vIG1vZHVsZSBpZCA9IDEzOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///138\n")},function(module,exports){eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wcy5qcz9kNjQ0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcHMuanNcbi8vIG1vZHVsZSBpZCA9IDEzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///139\n")},function(module,exports,__webpack_require__){eval("exports.f = __webpack_require__(22);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZXh0LmpzPzJhMWUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fd2tzJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLWV4dC5qc1xuLy8gbW9kdWxlIGlkID0gMTQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///140\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(17);\nvar core = __webpack_require__(10);\nvar LIBRARY = __webpack_require__(73);\nvar wksExt = __webpack_require__(140);\nvar defineProperty = __webpack_require__(40).f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZGVmaW5lLmpzPzcyYjkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgJFN5bWJvbCA9IGNvcmUuU3ltYm9sIHx8IChjb3JlLlN5bWJvbCA9IExJQlJBUlkgPyB7fSA6IGdsb2JhbC5TeW1ib2wgfHwge30pO1xuICBpZiAobmFtZS5jaGFyQXQoMCkgIT0gJ18nICYmICEobmFtZSBpbiAkU3ltYm9sKSkgZGVmaW5lUHJvcGVydHkoJFN5bWJvbCwgbmFtZSwgeyB2YWx1ZTogd2tzRXh0LmYobmFtZSkgfSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1kZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDE0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///141\n")},function(module,exports,__webpack_require__){eval("var pIE = __webpack_require__(78);\nvar createDesc = __webpack_require__(74);\nvar toIObject = __webpack_require__(47);\nvar toPrimitive = __webpack_require__(132);\nvar has = __webpack_require__(59);\nvar IE8_DOM_DEFINE = __webpack_require__(184);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(46) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wZC5qcz8yY2E2Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBnT1BEIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSU9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGdPUEQoTywgUCk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzKE8sIFApKSByZXR1cm4gY3JlYXRlRGVzYyghcElFLmYuY2FsbChPLCBQKSwgT1tQXSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzXG4vLyBtb2R1bGUgaWQgPSAxNDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///142\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\nvar runtimeUtils = exports.runtimeUtils = {\n runtimeDescriptor: {},\n runtimeCapabilities: {\n constraints: {}\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ydW50aW1lL3J1bnRpbWVVdGlscy5qcz9iYWE0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBsZXQgcnVudGltZVV0aWxzID0ge1xuICBydW50aW1lRGVzY3JpcHRvcjoge30sXG4gIHJ1bnRpbWVDYXBhYmlsaXRpZXM6IHtcbiAgICBjb25zdHJhaW50czoge31cbiAgfVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcnVudGltZS9ydW50aW1lVXRpbHMuanMiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUZBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///143\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar runtimeConfiguration = exports.runtimeConfiguration = {\n\n // TODO this should be changed with the definition used for indexeddb\n // look at: https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore\n // Now we are using the definition for Dexie; (http://dexie.org/docs/Version/Version.stores())\n storageSchemas: {\n capabilities: {\n capabilities: 'key,version,value'\n },\n subscriptions: {\n subscriptions: 'key,version,value'\n },\n runtime: {\n 'runtime:URL': 'key,version,value',\n 'p2pHandler:URL': 'key,version,value'\n },\n registry: {\n 'registry:DataObjectURLs': 'key,version,value',\n 'registry:HypertyURLs': 'key,version,value'\n },\n cryptoManager: {\n userAsymmetricKey: 'key,version,value',\n dataObjectSessionKeys: 'key,version,value'\n },\n identity: {\n accessTokens: 'key,version,value',\n identities: 'userURL, userProfile.email, userProfile.userURL, userProfile.name'\n },\n runtimeCatalogue: {\n runtimeCatalogue: '&cguid, accessControlPolicy, constraints, dataObjects, hypertyType, objectName, sourcePackage, version'\n },\n policy: {\n 'rethink:activePolicy': 'key,version,value',\n 'rethink:groups': 'key,version,value',\n 'rethink:userPolicies': 'key,version,value',\n 'rethink:spPolicies': 'key,version,value'\n },\n syncherManager: {\n 'syncherManager:ObjectURLs': 'key,version,value'\n },\n hypertyResources: {\n hypertyResources: '&resourceURL, name, contentUrl, content, created, reporter, resourceType'\n }\n },\n\n runtimeURLS: {\n registry: {\n prefix: 'hyperty-runtime://',\n suffix: 'registry'\n },\n identityModule: {\n prefix: 'hyperty-runtime://',\n suffix: '/idm'\n },\n runtimeUA: {\n prefix: 'hyperty-runtime://',\n suffix: '/ua'\n },\n catalogue: {\n prefix: 'hyperty-runtime://',\n suffix: '/catalogue'\n },\n graphConnector: {\n prefix: 'hyperty-runtime://',\n suffix: '/graph'\n },\n syncManager: {\n prefix: 'hyperty-runtime://',\n suffix: '/sm'\n }\n },\n catalogueURLs: {\n protocolstub: {\n prefix: 'hyperty-catalogue://catalogue.',\n suffix: '/.well-known/protocolstub/',\n fallback: 'hyperty-catalogue://catalogue.%domain%/.well-known/protocolstub/'\n },\n idpProxy: {\n prefix: 'hyperty-catalogue://catalogue.',\n suffix: '/.well-known/idp-proxy/',\n fallback: 'hyperty-catalogue://catalogue.%domain%/.well-known/idp-proxy/'\n }\n },\n msgNodeURL: {\n prefix: 'domain://msg-node.',\n suffix: '',\n hypertyAddressAllocation: '/hyperty-address-allocation',\n objectAddressAllocation: '/object-address-allocation',\n subscriptionManagement: '/sm'\n },\n domainRegistryURL: {\n prefix: 'domain://registry.',\n suffix: ''\n },\n globalRegistryURL: 'global://registry.'\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ydW50aW1lL3J1bnRpbWVDb25maWd1cmF0aW9uLmpzPzZiMWIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHJ1bnRpbWVDb25maWd1cmF0aW9uID0ge1xuXG4gIC8vIFRPRE8gdGhpcyBzaG91bGQgYmUgY2hhbmdlZCB3aXRoIHRoZSBkZWZpbml0aW9uIHVzZWQgZm9yIGluZGV4ZWRkYlxuICAvLyBsb29rIGF0OiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSURCT2JqZWN0U3RvcmVcbiAgLy8gTm93IHdlIGFyZSB1c2luZyB0aGUgZGVmaW5pdGlvbiBmb3IgRGV4aWU7IChodHRwOi8vZGV4aWUub3JnL2RvY3MvVmVyc2lvbi9WZXJzaW9uLnN0b3JlcygpKVxuICBzdG9yYWdlU2NoZW1hczoge1xuICAgIGNhcGFiaWxpdGllczoge1xuICAgICAgY2FwYWJpbGl0aWVzOiAna2V5LHZlcnNpb24sdmFsdWUnXG4gICAgfSxcbiAgICBzdWJzY3JpcHRpb25zOiB7XG4gICAgICBzdWJzY3JpcHRpb25zOiAna2V5LHZlcnNpb24sdmFsdWUnXG4gICAgfSxcbiAgICBydW50aW1lOiB7XG4gICAgICAncnVudGltZTpVUkwnOiAna2V5LHZlcnNpb24sdmFsdWUnLFxuICAgICAgJ3AycEhhbmRsZXI6VVJMJzogJ2tleSx2ZXJzaW9uLHZhbHVlJ1xuICAgIH0sXG4gICAgcmVnaXN0cnk6IHtcbiAgICAgICdyZWdpc3RyeTpEYXRhT2JqZWN0VVJMcyc6ICdrZXksdmVyc2lvbix2YWx1ZScsXG4gICAgICAncmVnaXN0cnk6SHlwZXJ0eVVSTHMnOiAna2V5LHZlcnNpb24sdmFsdWUnXG4gICAgfSxcbiAgICBjcnlwdG9NYW5hZ2VyOiB7XG4gICAgICB1c2VyQXN5bW1ldHJpY0tleTogJ2tleSx2ZXJzaW9uLHZhbHVlJyxcbiAgICAgIGRhdGFPYmplY3RTZXNzaW9uS2V5czogJ2tleSx2ZXJzaW9uLHZhbHVlJ1xuICAgIH0sXG4gICAgaWRlbnRpdHk6IHtcbiAgICAgIGFjY2Vzc1Rva2VuczogJ2tleSx2ZXJzaW9uLHZhbHVlJyxcbiAgICAgIGlkZW50aXRpZXM6ICd1c2VyVVJMLCB1c2VyUHJvZmlsZS5lbWFpbCwgdXNlclByb2ZpbGUudXNlclVSTCwgdXNlclByb2ZpbGUubmFtZSdcbiAgICB9LFxuICAgIHJ1bnRpbWVDYXRhbG9ndWU6IHtcbiAgICAgIHJ1bnRpbWVDYXRhbG9ndWU6ICcmY2d1aWQsIGFjY2Vzc0NvbnRyb2xQb2xpY3ksIGNvbnN0cmFpbnRzLCBkYXRhT2JqZWN0cywgaHlwZXJ0eVR5cGUsIG9iamVjdE5hbWUsIHNvdXJjZVBhY2thZ2UsIHZlcnNpb24nXG4gICAgfSxcbiAgICBwb2xpY3k6IHtcbiAgICAgICdyZXRoaW5rOmFjdGl2ZVBvbGljeSc6ICdrZXksdmVyc2lvbix2YWx1ZScsXG4gICAgICAncmV0aGluazpncm91cHMnOiAna2V5LHZlcnNpb24sdmFsdWUnLFxuICAgICAgJ3JldGhpbms6dXNlclBvbGljaWVzJzogJ2tleSx2ZXJzaW9uLHZhbHVlJyxcbiAgICAgICdyZXRoaW5rOnNwUG9saWNpZXMnOiAna2V5LHZlcnNpb24sdmFsdWUnXG4gICAgfSxcbiAgICBzeW5jaGVyTWFuYWdlcjoge1xuICAgICAgJ3N5bmNoZXJNYW5hZ2VyOk9iamVjdFVSTHMnOiAna2V5LHZlcnNpb24sdmFsdWUnXG4gICAgfSxcbiAgICBoeXBlcnR5UmVzb3VyY2VzOiB7XG4gICAgICBoeXBlcnR5UmVzb3VyY2VzOiAnJnJlc291cmNlVVJMLCBuYW1lLCBjb250ZW50VXJsLCBjb250ZW50LCBjcmVhdGVkLCByZXBvcnRlciwgcmVzb3VyY2VUeXBlJ1xuICAgIH1cbiAgfSxcblxuICBydW50aW1lVVJMUzoge1xuICAgIHJlZ2lzdHJ5OiB7XG4gICAgICBwcmVmaXg6ICdoeXBlcnR5LXJ1bnRpbWU6Ly8nLFxuICAgICAgc3VmZml4OiAncmVnaXN0cnknXG4gICAgfSxcbiAgICBpZGVudGl0eU1vZHVsZToge1xuICAgICAgcHJlZml4OiAnaHlwZXJ0eS1ydW50aW1lOi8vJyxcbiAgICAgIHN1ZmZpeDogJy9pZG0nXG4gICAgfSxcbiAgICBydW50aW1lVUE6IHtcbiAgICAgIHByZWZpeDogJ2h5cGVydHktcnVudGltZTovLycsXG4gICAgICBzdWZmaXg6ICcvdWEnXG4gICAgfSxcbiAgICBjYXRhbG9ndWU6IHtcbiAgICAgIHByZWZpeDogJ2h5cGVydHktcnVudGltZTovLycsXG4gICAgICBzdWZmaXg6ICcvY2F0YWxvZ3VlJ1xuICAgIH0sXG4gICAgZ3JhcGhDb25uZWN0b3I6IHtcbiAgICAgIHByZWZpeDogJ2h5cGVydHktcnVudGltZTovLycsXG4gICAgICBzdWZmaXg6ICcvZ3JhcGgnXG4gICAgfSxcbiAgICBzeW5jTWFuYWdlcjoge1xuICAgICAgcHJlZml4OiAnaHlwZXJ0eS1ydW50aW1lOi8vJyxcbiAgICAgIHN1ZmZpeDogJy9zbSdcbiAgICB9XG4gIH0sXG4gIGNhdGFsb2d1ZVVSTHM6IHtcbiAgICBwcm90b2NvbHN0dWI6IHtcbiAgICAgIHByZWZpeDogJ2h5cGVydHktY2F0YWxvZ3VlOi8vY2F0YWxvZ3VlLicsXG4gICAgICBzdWZmaXg6ICcvLndlbGwta25vd24vcHJvdG9jb2xzdHViLycsXG4gICAgICBmYWxsYmFjazogJ2h5cGVydHktY2F0YWxvZ3VlOi8vY2F0YWxvZ3VlLiVkb21haW4lLy53ZWxsLWtub3duL3Byb3RvY29sc3R1Yi8nXG4gICAgfSxcbiAgICBpZHBQcm94eToge1xuICAgICAgcHJlZml4OiAnaHlwZXJ0eS1jYXRhbG9ndWU6Ly9jYXRhbG9ndWUuJyxcbiAgICAgIHN1ZmZpeDogJy8ud2VsbC1rbm93bi9pZHAtcHJveHkvJyxcbiAgICAgIGZhbGxiYWNrOiAnaHlwZXJ0eS1jYXRhbG9ndWU6Ly9jYXRhbG9ndWUuJWRvbWFpbiUvLndlbGwta25vd24vaWRwLXByb3h5LydcbiAgICB9XG4gIH0sXG4gIG1zZ05vZGVVUkw6IHtcbiAgICBwcmVmaXg6ICdkb21haW46Ly9tc2ctbm9kZS4nLFxuICAgIHN1ZmZpeDogJycsXG4gICAgaHlwZXJ0eUFkZHJlc3NBbGxvY2F0aW9uOiAnL2h5cGVydHktYWRkcmVzcy1hbGxvY2F0aW9uJyxcbiAgICBvYmplY3RBZGRyZXNzQWxsb2NhdGlvbjogJy9vYmplY3QtYWRkcmVzcy1hbGxvY2F0aW9uJyxcbiAgICBzdWJzY3JpcHRpb25NYW5hZ2VtZW50OiAnL3NtJ1xuICB9LFxuICBkb21haW5SZWdpc3RyeVVSTDoge1xuICAgIHByZWZpeDogJ2RvbWFpbjovL3JlZ2lzdHJ5LicsXG4gICAgc3VmZml4OiAnJ1xuICB9LFxuICBnbG9iYWxSZWdpc3RyeVVSTDogJ2dsb2JhbDovL3JlZ2lzdHJ5Lidcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3J1bnRpbWUvcnVudGltZUNvbmZpZ3VyYXRpb24uanMiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBREE7QUFuQ0E7QUFDQTtBQXVDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQXJCQTtBQTBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBTkE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUE5RkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///144\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Operators = function () {\n function Operators() {\n (0, _classCallCheck3.default)(this, Operators);\n }\n\n (0, _createClass3.default)(Operators, [{\n key: 'and',\n value: function and(params) {\n return params[0] && params[1];\n }\n }, {\n key: 'between',\n value: function between(params) {\n var start = parseInt(params[0][0]);\n var end = parseInt(params[0][1]);\n var now = params[1];\n\n if (end < start) {\n now = now < start ? now += 2400 : now;\n end += 2400;\n }\n\n return now > start && now < end;\n }\n }, {\n key: 'equals',\n value: function equals(params) {\n return String(params[0]) === '*' || String(params[0]) === String(params[1]);\n }\n }, {\n key: 'greaterThan',\n value: function greaterThan(params) {\n return params[1] > params[0];\n }\n }, {\n key: 'in',\n value: function _in(params) {\n return params[0].indexOf(params[1]) > -1;\n }\n }, {\n key: 'lessThan',\n value: function lessThan(params) {\n return params[1] < params[0];\n }\n }, {\n key: 'not',\n value: function not(params) {\n return !params[0];\n }\n }, {\n key: 'or',\n value: function or(params) {\n return params[0] || params[1];\n }\n }]);\n return Operators;\n}();\n\nexports.default = Operators;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvT3BlcmF0b3JzLmpzPzFjNDIiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgT3BlcmF0b3JzIHtcblxuICBhbmQocGFyYW1zKSB7XG4gICAgcmV0dXJuIHBhcmFtc1swXSAmJiBwYXJhbXNbMV07XG4gIH1cblxuICBiZXR3ZWVuKHBhcmFtcykge1xuICAgIGxldCBzdGFydCA9IHBhcnNlSW50KHBhcmFtc1swXVswXSk7XG4gICAgbGV0IGVuZCA9IHBhcnNlSW50KHBhcmFtc1swXVsxXSk7XG4gICAgbGV0IG5vdyA9IHBhcmFtc1sxXTtcblxuICAgIGlmIChlbmQgPCBzdGFydCkge1xuICAgICAgbm93ID0gKG5vdyA8IHN0YXJ0KSA/IG5vdyArPSAyNDAwIDogbm93O1xuICAgICAgZW5kICs9IDI0MDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIChub3cgPiBzdGFydCAmJiBub3cgPCBlbmQpO1xuICB9XG5cbiAgZXF1YWxzKHBhcmFtcykge1xuICAgIHJldHVybiBTdHJpbmcocGFyYW1zWzBdKSA9PT0gJyonIHx8IFN0cmluZyhwYXJhbXNbMF0pID09PSBTdHJpbmcocGFyYW1zWzFdKTtcbiAgfVxuXG4gIGdyZWF0ZXJUaGFuKHBhcmFtcykge1xuICAgIHJldHVybiBwYXJhbXNbMV0gPiBwYXJhbXNbMF07XG4gIH1cblxuICBpbihwYXJhbXMpIHtcbiAgICByZXR1cm4gcGFyYW1zWzBdLmluZGV4T2YocGFyYW1zWzFdKSA+IC0xO1xuICB9XG5cbiAgbGVzc1RoYW4ocGFyYW1zKSB7XG4gICAgcmV0dXJuIHBhcmFtc1sxXSA8IHBhcmFtc1swXTtcbiAgfVxuXG4gIG5vdChwYXJhbXMpIHtcbiAgICByZXR1cm4gIXBhcmFtc1swXTtcbiAgfVxuXG4gIG9yKHBhcmFtcykge1xuICAgIHJldHVybiBwYXJhbXNbMF0gfHwgcGFyYW1zWzFdO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgT3BlcmF0b3JzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvT3BlcmF0b3JzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///145\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Operators = __webpack_require__(145);\n\nvar _Operators2 = _interopRequireDefault(_Operators);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* @author Ana Caldeira \n* @classdesc Class to represent a condition and evaluate its applicability.\n*/\nvar Condition = function () {\n\n /**\n * Creates a new Condition.\n * @class\n * @param {string} attribute\n * @param {string} operator\n * @param {*} params\n */\n function Condition(attribute, operator, params) {\n (0, _classCallCheck3.default)(this, Condition);\n\n this.attribute = attribute;\n this.operator = operator;\n this.params = params;\n this.operators = new _Operators2.default();\n }\n\n /**\n * Verifies if the condition is applicable to the message. First, the system value that corresponds to the attribute is retrieved; then, that value is compared with the parameter specified in the condition by executing the operator implementation. If the operator is 'in' and the name of a group is given, then the array holding the members of the group is retrieved before the comparison.\n * @param {Object} context environment where the Policy Engine is being used\n * @param {Object} message\n */\n\n\n (0, _createClass3.default)(Condition, [{\n key: 'isApplicable',\n value: function isApplicable(context, message) {\n context[this.attribute] = { message: message };\n var value = context[this.attribute];\n var tempParam = void 0;\n\n if (this.operator === 'in') {\n if (!Array.isArray(this.params)) {\n tempParam = context.getGroup(this.params, message.to);\n return this.operators[this.operator]([tempParam, value]);\n }\n }\n\n return this.operators[this.operator]([this.params, value]);\n }\n }]);\n return Condition;\n}(); /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nexports.default = Condition;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29uZGl0aW9ucy9Db25kaXRpb24uanM/MmUzMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKiovXG5cbmltcG9ydCBPcGVyYXRvcnMgZnJvbSAnLi4vT3BlcmF0b3JzJztcblxuLyoqXG4qIEBhdXRob3IgQW5hIENhbGRlaXJhIDxhbmEuY2FsZGVpcmFAdGVjbmljby51bGlzYm9hLnB0PlxuKiBAY2xhc3NkZXNjIENsYXNzIHRvIHJlcHJlc2VudCBhIGNvbmRpdGlvbiBhbmQgZXZhbHVhdGUgaXRzIGFwcGxpY2FiaWxpdHkuXG4qL1xuY2xhc3MgQ29uZGl0aW9uIHtcblxuICAvKipcbiAgKiBDcmVhdGVzIGEgbmV3IENvbmRpdGlvbi5cbiAgKiBAY2xhc3NcbiAgKiBAcGFyYW0gIHtzdHJpbmd9ICBhdHRyaWJ1dGVcbiAgKiBAcGFyYW0gIHtzdHJpbmd9ICBvcGVyYXRvclxuICAqIEBwYXJhbSAgeyp9ICAgICAgIHBhcmFtc1xuICAqL1xuICBjb25zdHJ1Y3RvcihhdHRyaWJ1dGUsIG9wZXJhdG9yLCBwYXJhbXMpIHtcbiAgICB0aGlzLmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTtcbiAgICB0aGlzLm9wZXJhdG9yID0gb3BlcmF0b3I7XG4gICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XG4gICAgdGhpcy5vcGVyYXRvcnMgPSBuZXcgT3BlcmF0b3JzKCk7XG4gIH1cblxuICAvKipcbiAgKiBWZXJpZmllcyBpZiB0aGUgY29uZGl0aW9uIGlzIGFwcGxpY2FibGUgdG8gdGhlIG1lc3NhZ2UuIEZpcnN0LCB0aGUgc3lzdGVtIHZhbHVlIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQ7IHRoZW4sIHRoYXQgdmFsdWUgaXMgY29tcGFyZWQgd2l0aCB0aGUgcGFyYW1ldGVyIHNwZWNpZmllZCBpbiB0aGUgY29uZGl0aW9uIGJ5IGV4ZWN1dGluZyB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24uIElmIHRoZSBvcGVyYXRvciBpcyAnaW4nIGFuZCB0aGUgbmFtZSBvZiBhIGdyb3VwIGlzIGdpdmVuLCB0aGVuIHRoZSBhcnJheSBob2xkaW5nIHRoZSBtZW1iZXJzIG9mIHRoZSBncm91cCBpcyByZXRyaWV2ZWQgYmVmb3JlIHRoZSBjb21wYXJpc29uLlxuICAqIEBwYXJhbSAge09iamVjdH0gICAgY29udGV4dCAgIGVudmlyb25tZW50IHdoZXJlIHRoZSBQb2xpY3kgRW5naW5lIGlzIGJlaW5nIHVzZWRcbiAgKiBAcGFyYW0gIHtPYmplY3R9ICAgIG1lc3NhZ2VcbiAgKi9cbiAgaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UpIHtcbiAgICBjb250ZXh0W3RoaXMuYXR0cmlidXRlXSA9IHsgbWVzc2FnZTogbWVzc2FnZSB9O1xuICAgIGxldCB2YWx1ZSA9IGNvbnRleHRbdGhpcy5hdHRyaWJ1dGVdO1xuICAgIGxldCB0ZW1wUGFyYW07XG5cbiAgICBpZiAodGhpcy5vcGVyYXRvciA9PT0gJ2luJykge1xuICAgICAgaWYgKCEoQXJyYXkuaXNBcnJheSh0aGlzLnBhcmFtcykpKSB7XG4gICAgICAgIHRlbXBQYXJhbSA9IGNvbnRleHQuZ2V0R3JvdXAodGhpcy5wYXJhbXMsIG1lc3NhZ2UudG8pO1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVyYXRvcnNbdGhpcy5vcGVyYXRvcl0oW3RlbXBQYXJhbSwgdmFsdWVdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vcGVyYXRvcnNbdGhpcy5vcGVyYXRvcl0oW3RoaXMucGFyYW1zLCB2YWx1ZV0pO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29uZGl0aW9uO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvY29uZGl0aW9ucy9Db25kaXRpb24uanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBdUJBO0FBQ0E7Ozs7O0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFPQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBL0RBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1FQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///146\n")},function(module,exports){eval('var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function("return this")() || (1,eval)("this");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === "object")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it\'s\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcz8zNjk4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBnO1xyXG5cclxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcclxuZyA9IChmdW5jdGlvbigpIHtcclxuXHRyZXR1cm4gdGhpcztcclxufSkoKTtcclxuXHJcbnRyeSB7XHJcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXHJcblx0ZyA9IGcgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpIHx8ICgxLGV2YWwpKFwidGhpc1wiKTtcclxufSBjYXRjaChlKSB7XHJcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcclxuXHRpZih0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKVxyXG5cdFx0ZyA9IHdpbmRvdztcclxufVxyXG5cclxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxyXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xyXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGc7XHJcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vICh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qc1xuLy8gbW9kdWxlIGlkID0gMTQ3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///147\n')},function(module,exports,__webpack_require__){eval("module.exports = !__webpack_require__(12) && !__webpack_require__(5)(function () {\n return Object.defineProperty(__webpack_require__(102)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faWU4LWRvbS1kZWZpbmUuanM/YzU5NiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMTQ4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///148\n")},function(module,exports,__webpack_require__){eval("exports.f = __webpack_require__(9);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fd2tzLWV4dC5qcz8zM2M1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX3drcycpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL193a3MtZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAxNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///149\n")},function(module,exports,__webpack_require__){eval("var has = __webpack_require__(23);\nvar toIObject = __webpack_require__(24);\nvar arrayIndexOf = __webpack_require__(81)(false);\nvar IE_PROTO = __webpack_require__(104)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanM/NDVlMSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGFycmF5SW5kZXhPZiA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykoZmFsc2UpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSBpZiAoa2V5ICE9IElFX1BST1RPKSBoYXMoTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmFycmF5SW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDE1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///150\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(13);\nvar anObject = __webpack_require__(3);\nvar getKeys = __webpack_require__(50);\n\nmodule.exports = __webpack_require__(12) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWRwcy5qcz9iNzBjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IGdldEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgUDtcbiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG4gIHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gMTUxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///151\n")},function(module,exports,__webpack_require__){eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(24);\nvar gOPN = __webpack_require__(53).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWdvcG4tZXh0LmpzPzZjNmYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsbGJhY2sgZm9yIElFMTEgYnVnZ3kgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgd2l0aCBpZnJhbWUgYW5kIHdpbmRvd1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbnZhciB3aW5kb3dOYW1lcyA9IHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzXG4gID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSA6IFtdO1xuXG52YXIgZ2V0V2luZG93TmFtZXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZ09QTihpdCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gd2luZG93TmFtZXMuc2xpY2UoKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHtcbiAgcmV0dXJuIHdpbmRvd05hbWVzICYmIHRvU3RyaW5nLmNhbGwoaXQpID09ICdbb2JqZWN0IFdpbmRvd10nID8gZ2V0V2luZG93TmFtZXMoaXQpIDogZ09QTih0b0lPYmplY3QoaXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qc1xuLy8gbW9kdWxlIGlkID0gMTUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///152\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(50);\nvar gOPS = __webpack_require__(82);\nvar pIE = __webpack_require__(71);\nvar toObject = __webpack_require__(15);\nvar IObject = __webpack_require__(70);\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(5)(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWFzc2lnbi5qcz9hMTg3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDE5LjEuMi4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UsIC4uLilcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyICRhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuXG4vLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1Zylcbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHZhciBBID0ge307XG4gIHZhciBCID0ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICB2YXIgUyA9IFN5bWJvbCgpO1xuICB2YXIgSyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdCc7XG4gIEFbU10gPSA3O1xuICBLLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7IEJba10gPSBrOyB9KTtcbiAgcmV0dXJuICRhc3NpZ24oe30sIEEpW1NdICE9IDcgfHwgT2JqZWN0LmtleXMoJGFzc2lnbih7fSwgQikpLmpvaW4oJycpICE9IEs7XG59KSA/IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHZhciBUID0gdG9PYmplY3QodGFyZ2V0KTtcbiAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAxO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgdmFyIGlzRW51bSA9IHBJRS5mO1xuICB3aGlsZSAoYUxlbiA+IGluZGV4KSB7XG4gICAgdmFyIFMgPSBJT2JqZWN0KGFyZ3VtZW50c1tpbmRleCsrXSk7XG4gICAgdmFyIGtleXMgPSBnZXRTeW1ib2xzID8gZ2V0S2V5cyhTKS5jb25jYXQoZ2V0U3ltYm9scyhTKSkgOiBnZXRLZXlzKFMpO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaiA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaikgaWYgKGlzRW51bS5jYWxsKFMsIGtleSA9IGtleXNbaisrXSkpIFRba2V5XSA9IFNba2V5XTtcbiAgfSByZXR1cm4gVDtcbn0gOiAkYXNzaWduO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtYXNzaWduLmpzXG4vLyBtb2R1bGUgaWQgPSAxNTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///153\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar aFunction = __webpack_require__(16);\nvar isObject = __webpack_require__(6);\nvar invoke = __webpack_require__(155);\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYmluZC5qcz82NmRjIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBpbnZva2UgPSByZXF1aXJlKCcuL19pbnZva2UnKTtcbnZhciBhcnJheVNsaWNlID0gW10uc2xpY2U7XG52YXIgZmFjdG9yaWVzID0ge307XG5cbnZhciBjb25zdHJ1Y3QgPSBmdW5jdGlvbiAoRiwgbGVuLCBhcmdzKSB7XG4gIGlmICghKGxlbiBpbiBmYWN0b3JpZXMpKSB7XG4gICAgZm9yICh2YXIgbiA9IFtdLCBpID0gMDsgaSA8IGxlbjsgaSsrKSBuW2ldID0gJ2FbJyArIGkgKyAnXSc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgZmFjdG9yaWVzW2xlbl0gPSBGdW5jdGlvbignRixhJywgJ3JldHVybiBuZXcgRignICsgbi5qb2luKCcsJykgKyAnKScpO1xuICB9IHJldHVybiBmYWN0b3JpZXNbbGVuXShGLCBhcmdzKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRnVuY3Rpb24uYmluZCB8fCBmdW5jdGlvbiBiaW5kKHRoYXQgLyogLCAuLi5hcmdzICovKSB7XG4gIHZhciBmbiA9IGFGdW5jdGlvbih0aGlzKTtcbiAgdmFyIHBhcnRBcmdzID0gYXJyYXlTbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gIHZhciBib3VuZCA9IGZ1bmN0aW9uICgvKiBhcmdzLi4uICovKSB7XG4gICAgdmFyIGFyZ3MgPSBwYXJ0QXJncy5jb25jYXQoYXJyYXlTbGljZS5jYWxsKGFyZ3VtZW50cykpO1xuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgYm91bmQgPyBjb25zdHJ1Y3QoZm4sIGFyZ3MubGVuZ3RoLCBhcmdzKSA6IGludm9rZShmbiwgYXJncywgdGhhdCk7XG4gIH07XG4gIGlmIChpc09iamVjdChmbi5wcm90b3R5cGUpKSBib3VuZC5wcm90b3R5cGUgPSBmbi5wcm90b3R5cGU7XG4gIHJldHVybiBib3VuZDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2JpbmQuanNcbi8vIG1vZHVsZSBpZCA9IDE1NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///154\n")},function(module,exports){eval("// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW52b2tlLmpzPzNjNzAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFzdCBhcHBseSwgaHR0cDovL2pzcGVyZi5sbmtpdC5jb20vZmFzdC1hcHBseS81XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgYXJncywgdGhhdCkge1xuICB2YXIgdW4gPSB0aGF0ID09PSB1bmRlZmluZWQ7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiB1biA/IGZuKClcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCk7XG4gICAgY2FzZSAxOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgY2FzZSA0OiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgfSByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJncyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pbnZva2UuanNcbi8vIG1vZHVsZSBpZCA9IDE1NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///155\n")},function(module,exports,__webpack_require__){eval("var $parseInt = __webpack_require__(4).parseInt;\nvar $trim = __webpack_require__(62).trim;\nvar ws = __webpack_require__(108);\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcGFyc2UtaW50LmpzPzNhMDQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRwYXJzZUludCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLnBhcnNlSW50O1xudmFyICR0cmltID0gcmVxdWlyZSgnLi9fc3RyaW5nLXRyaW0nKS50cmltO1xudmFyIHdzID0gcmVxdWlyZSgnLi9fc3RyaW5nLXdzJyk7XG52YXIgaGV4ID0gL15bLStdPzBbeFhdLztcblxubW9kdWxlLmV4cG9ydHMgPSAkcGFyc2VJbnQod3MgKyAnMDgnKSAhPT0gOCB8fCAkcGFyc2VJbnQod3MgKyAnMHgxNicpICE9PSAyMiA/IGZ1bmN0aW9uIHBhcnNlSW50KHN0ciwgcmFkaXgpIHtcbiAgdmFyIHN0cmluZyA9ICR0cmltKFN0cmluZyhzdHIpLCAzKTtcbiAgcmV0dXJuICRwYXJzZUludChzdHJpbmcsIChyYWRpeCA+Pj4gMCkgfHwgKGhleC50ZXN0KHN0cmluZykgPyAxNiA6IDEwKSk7XG59IDogJHBhcnNlSW50O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wYXJzZS1pbnQuanNcbi8vIG1vZHVsZSBpZCA9IDE1NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///156\n")},function(module,exports,__webpack_require__){eval("var $parseFloat = __webpack_require__(4).parseFloat;\nvar $trim = __webpack_require__(62).trim;\n\nmodule.exports = 1 / $parseFloat(__webpack_require__(108) + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcGFyc2UtZmxvYXQuanM/ZjJkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJHBhcnNlRmxvYXQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5wYXJzZUZsb2F0O1xudmFyICR0cmltID0gcmVxdWlyZSgnLi9fc3RyaW5nLXRyaW0nKS50cmltO1xuXG5tb2R1bGUuZXhwb3J0cyA9IDEgLyAkcGFyc2VGbG9hdChyZXF1aXJlKCcuL19zdHJpbmctd3MnKSArICctMCcpICE9PSAtSW5maW5pdHkgPyBmdW5jdGlvbiBwYXJzZUZsb2F0KHN0cikge1xuICB2YXIgc3RyaW5nID0gJHRyaW0oU3RyaW5nKHN0ciksIDMpO1xuICB2YXIgcmVzdWx0ID0gJHBhcnNlRmxvYXQoc3RyaW5nKTtcbiAgcmV0dXJuIHJlc3VsdCA9PT0gMCAmJiBzdHJpbmcuY2hhckF0KDApID09ICctJyA/IC0wIDogcmVzdWx0O1xufSA6ICRwYXJzZUZsb2F0O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wYXJzZS1mbG9hdC5qc1xuLy8gbW9kdWxlIGlkID0gMTU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///157\n")},function(module,exports,__webpack_require__){eval("var cof = __webpack_require__(29);\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYS1udW1iZXItdmFsdWUuanM/N2QyZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgbXNnKSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ251bWJlcicgJiYgY29mKGl0KSAhPSAnTnVtYmVyJykgdGhyb3cgVHlwZUVycm9yKG1zZyk7XG4gIHJldHVybiAraXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hLW51bWJlci12YWx1ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///158\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.3 Number.isInteger(number)\nvar isObject = __webpack_require__(6);\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtaW50ZWdlci5qcz85ZmRmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjEuMi4zIE51bWJlci5pc0ludGVnZXIobnVtYmVyKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0ludGVnZXIoaXQpIHtcbiAgcmV0dXJuICFpc09iamVjdChpdCkgJiYgaXNGaW5pdGUoaXQpICYmIGZsb29yKGl0KSA9PT0gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAxNTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///159\n")},function(module,exports){eval("// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1sb2cxcC5qcz80NzNkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4yMCBNYXRoLmxvZzFwKHgpXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGgubG9nMXAgfHwgZnVuY3Rpb24gbG9nMXAoeCkge1xuICByZXR1cm4gKHggPSAreCkgPiAtMWUtOCAmJiB4IDwgMWUtOCA/IHggLSB4ICogeCAvIDIgOiBNYXRoLmxvZygxICsgeCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLWxvZzFwLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///160\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.16 Math.fround(x)\nvar sign = __webpack_require__(111);\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1mcm91bmQuanM/ODNmOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4yLjIuMTYgTWF0aC5mcm91bmQoeClcbnZhciBzaWduID0gcmVxdWlyZSgnLi9fbWF0aC1zaWduJyk7XG52YXIgcG93ID0gTWF0aC5wb3c7XG52YXIgRVBTSUxPTiA9IHBvdygyLCAtNTIpO1xudmFyIEVQU0lMT04zMiA9IHBvdygyLCAtMjMpO1xudmFyIE1BWDMyID0gcG93KDIsIDEyNykgKiAoMiAtIEVQU0lMT04zMik7XG52YXIgTUlOMzIgPSBwb3coMiwgLTEyNik7XG5cbnZhciByb3VuZFRpZXNUb0V2ZW4gPSBmdW5jdGlvbiAobikge1xuICByZXR1cm4gbiArIDEgLyBFUFNJTE9OIC0gMSAvIEVQU0lMT047XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguZnJvdW5kIHx8IGZ1bmN0aW9uIGZyb3VuZCh4KSB7XG4gIHZhciAkYWJzID0gTWF0aC5hYnMoeCk7XG4gIHZhciAkc2lnbiA9IHNpZ24oeCk7XG4gIHZhciBhLCByZXN1bHQ7XG4gIGlmICgkYWJzIDwgTUlOMzIpIHJldHVybiAkc2lnbiAqIHJvdW5kVGllc1RvRXZlbigkYWJzIC8gTUlOMzIgLyBFUFNJTE9OMzIpICogTUlOMzIgKiBFUFNJTE9OMzI7XG4gIGEgPSAoMSArIEVQU0lMT04zMiAvIEVQU0lMT04pICogJGFicztcbiAgcmVzdWx0ID0gYSAtIChhIC0gJGFicyk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgaWYgKHJlc3VsdCA+IE1BWDMyIHx8IHJlc3VsdCAhPSByZXN1bHQpIHJldHVybiAkc2lnbiAqIEluZmluaXR5O1xuICByZXR1cm4gJHNpZ24gKiByZXN1bHQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLWZyb3VuZC5qc1xuLy8gbW9kdWxlIGlkID0gMTYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///161\n")},function(module,exports,__webpack_require__){eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(3);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1jYWxsLmpzPzVlZjUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwgZm4sIHZhbHVlLCBlbnRyaWVzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGVudHJpZXMgPyBmbihhbk9iamVjdCh2YWx1ZSlbMF0sIHZhbHVlWzFdKSA6IGZuKHZhbHVlKTtcbiAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcbiAgfSBjYXRjaCAoZSkge1xuICAgIHZhciByZXQgPSBpdGVyYXRvclsncmV0dXJuJ107XG4gICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSBhbk9iamVjdChyZXQuY2FsbChpdGVyYXRvcikpO1xuICAgIHRocm93IGU7XG4gIH1cbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItY2FsbC5qc1xuLy8gbW9kdWxlIGlkID0gMTYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///162\n")},function(module,exports,__webpack_require__){eval("var aFunction = __webpack_require__(16);\nvar toObject = __webpack_require__(15);\nvar IObject = __webpack_require__(70);\nvar toLength = __webpack_require__(14);\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktcmVkdWNlLmpzPzE2NDIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgY2FsbGJhY2tmbiwgYUxlbiwgbWVtbywgaXNSaWdodCkge1xuICBhRnVuY3Rpb24oY2FsbGJhY2tmbik7XG4gIHZhciBPID0gdG9PYmplY3QodGhhdCk7XG4gIHZhciBzZWxmID0gSU9iamVjdChPKTtcbiAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgdmFyIGluZGV4ID0gaXNSaWdodCA/IGxlbmd0aCAtIDEgOiAwO1xuICB2YXIgaSA9IGlzUmlnaHQgPyAtMSA6IDE7XG4gIGlmIChhTGVuIDwgMikgZm9yICg7Oykge1xuICAgIGlmIChpbmRleCBpbiBzZWxmKSB7XG4gICAgICBtZW1vID0gc2VsZltpbmRleF07XG4gICAgICBpbmRleCArPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGluZGV4ICs9IGk7XG4gICAgaWYgKGlzUmlnaHQgPyBpbmRleCA8IDAgOiBsZW5ndGggPD0gaW5kZXgpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZScpO1xuICAgIH1cbiAgfVxuICBmb3IgKDtpc1JpZ2h0ID8gaW5kZXggPj0gMCA6IGxlbmd0aCA+IGluZGV4OyBpbmRleCArPSBpKSBpZiAoaW5kZXggaW4gc2VsZikge1xuICAgIG1lbW8gPSBjYWxsYmFja2ZuKG1lbW8sIHNlbGZbaW5kZXhdLCBpbmRleCwgTyk7XG4gIH1cbiAgcmV0dXJuIG1lbW87XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1yZWR1Y2UuanNcbi8vIG1vZHVsZSBpZCA9IDE2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///163\n")},function(module,exports,__webpack_require__){"use strict";eval("// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n\nvar toObject = __webpack_require__(15);\nvar toAbsoluteIndex = __webpack_require__(51);\nvar toLength = __webpack_require__(14);\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktY29weS13aXRoaW4uanM/MGNmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMi4xLjMuMyBBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0LCBlbmQgPSB0aGlzLmxlbmd0aClcbid1c2Ugc3RyaWN0JztcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBbXS5jb3B5V2l0aGluIHx8IGZ1bmN0aW9uIGNvcHlXaXRoaW4odGFyZ2V0IC8qID0gMCAqLywgc3RhcnQgLyogPSAwLCBlbmQgPSBAbGVuZ3RoICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gIHZhciBsZW4gPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gIHZhciB0byA9IHRvQWJzb2x1dGVJbmRleCh0YXJnZXQsIGxlbik7XG4gIHZhciBmcm9tID0gdG9BYnNvbHV0ZUluZGV4KHN0YXJ0LCBsZW4pO1xuICB2YXIgZW5kID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gIHZhciBjb3VudCA9IE1hdGgubWluKChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbikpIC0gZnJvbSwgbGVuIC0gdG8pO1xuICB2YXIgaW5jID0gMTtcbiAgaWYgKGZyb20gPCB0byAmJiB0byA8IGZyb20gKyBjb3VudCkge1xuICAgIGluYyA9IC0xO1xuICAgIGZyb20gKz0gY291bnQgLSAxO1xuICAgIHRvICs9IGNvdW50IC0gMTtcbiAgfVxuICB3aGlsZSAoY291bnQtLSA+IDApIHtcbiAgICBpZiAoZnJvbSBpbiBPKSBPW3RvXSA9IE9bZnJvbV07XG4gICAgZWxzZSBkZWxldGUgT1t0b107XG4gICAgdG8gKz0gaW5jO1xuICAgIGZyb20gKz0gaW5jO1xuICB9IHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktY29weS13aXRoaW4uanNcbi8vIG1vZHVsZSBpZCA9IDE2NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///164\n")},function(module,exports){eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1zdGVwLmpzPzI4MWQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9uZSwgdmFsdWUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmUgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItc3RlcC5qc1xuLy8gbW9kdWxlIGlkID0gMTY1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///165\n")},function(module,exports,__webpack_require__){eval("// 21.2.5.3 get RegExp.prototype.flags()\nif (__webpack_require__(12) && /./g.flags != 'g') __webpack_require__(13).f(RegExp.prototype, 'flags', {\n configurable: true,\n get: __webpack_require__(86)\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLmZsYWdzLmpzP2E1ZGYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjEuMi41LjMgZ2V0IFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MoKVxuaWYgKHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgLy4vZy5mbGFncyAhPSAnZycpIHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYoUmVnRXhwLnByb3RvdHlwZSwgJ2ZsYWdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGdldDogcmVxdWlyZSgnLi9fZmxhZ3MnKVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5mbGFncy5qc1xuLy8gbW9kdWxlIGlkID0gMTY2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///166\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcGVyZm9ybS5qcz80ODM1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyBlOiBmYWxzZSwgdjogZXhlYygpIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4geyBlOiB0cnVlLCB2OiBlIH07XG4gIH1cbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3BlcmZvcm0uanNcbi8vIG1vZHVsZSBpZCA9IDE2N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///167\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\nvar newPromiseCapability = __webpack_require__(126);\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzPzllOTgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQywgeCkge1xuICBhbk9iamVjdChDKTtcbiAgaWYgKGlzT2JqZWN0KHgpICYmIHguY29uc3RydWN0b3IgPT09IEMpIHJldHVybiB4O1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKEMpO1xuICB2YXIgcmVzb2x2ZSA9IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmU7XG4gIHJlc29sdmUoeCk7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///168\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar strong = __webpack_require__(170);\nvar validate = __webpack_require__(64);\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = __webpack_require__(90)(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWFwLmpzPzMyY2IiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIHN0cm9uZyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24tc3Ryb25nJyk7XG52YXIgdmFsaWRhdGUgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgTUFQID0gJ01hcCc7XG5cbi8vIDIzLjEgTWFwIE9iamVjdHNcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbicpKE1BUCwgZnVuY3Rpb24gKGdldCkge1xuICByZXR1cm4gZnVuY3Rpb24gTWFwKCkgeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIHtcbiAgLy8gMjMuMS4zLjYgTWFwLnByb3RvdHlwZS5nZXQoa2V5KVxuICBnZXQ6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICB2YXIgZW50cnkgPSBzdHJvbmcuZ2V0RW50cnkodmFsaWRhdGUodGhpcywgTUFQKSwga2V5KTtcbiAgICByZXR1cm4gZW50cnkgJiYgZW50cnkudjtcbiAgfSxcbiAgLy8gMjMuMS4zLjkgTWFwLnByb3RvdHlwZS5zZXQoa2V5LCB2YWx1ZSlcbiAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIHJldHVybiBzdHJvbmcuZGVmKHZhbGlkYXRlKHRoaXMsIE1BUCksIGtleSA9PT0gMCA/IDAgOiBrZXksIHZhbHVlKTtcbiAgfVxufSwgc3Ryb25nLCB0cnVlKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWFwLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///169\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar dP = __webpack_require__(13).f;\nvar create = __webpack_require__(52);\nvar redefineAll = __webpack_require__(57);\nvar ctx = __webpack_require__(28);\nvar anInstance = __webpack_require__(55);\nvar forOf = __webpack_require__(56);\nvar $iterDefine = __webpack_require__(114);\nvar step = __webpack_require__(165);\nvar setSpecies = __webpack_require__(54);\nvar DESCRIPTORS = __webpack_require__(12);\nvar fastKey = __webpack_require__(43).fastKey;\nvar validate = __webpack_require__(64);\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29sbGVjdGlvbi1zdHJvbmcuanM/MGUwOCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgJGl0ZXJEZWZpbmUgPSByZXF1aXJlKCcuL19pdGVyLWRlZmluZScpO1xudmFyIHN0ZXAgPSByZXF1aXJlKCcuL19pdGVyLXN0ZXAnKTtcbnZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFzdEtleSA9IHJlcXVpcmUoJy4vX21ldGEnKS5mYXN0S2V5O1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIFNJWkUgPSBERVNDUklQVE9SUyA/ICdfcycgOiAnc2l6ZSc7XG5cbnZhciBnZXRFbnRyeSA9IGZ1bmN0aW9uICh0aGF0LCBrZXkpIHtcbiAgLy8gZmFzdCBjYXNlXG4gIHZhciBpbmRleCA9IGZhc3RLZXkoa2V5KTtcbiAgdmFyIGVudHJ5O1xuICBpZiAoaW5kZXggIT09ICdGJykgcmV0dXJuIHRoYXQuX2lbaW5kZXhdO1xuICAvLyBmcm96ZW4gb2JqZWN0IGNhc2VcbiAgZm9yIChlbnRyeSA9IHRoYXQuX2Y7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm4pIHtcbiAgICBpZiAoZW50cnkuayA9PSBrZXkpIHJldHVybiBlbnRyeTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldENvbnN0cnVjdG9yOiBmdW5jdGlvbiAod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUikge1xuICAgIHZhciBDID0gd3JhcHBlcihmdW5jdGlvbiAodGhhdCwgaXRlcmFibGUpIHtcbiAgICAgIGFuSW5zdGFuY2UodGhhdCwgQywgTkFNRSwgJ19pJyk7XG4gICAgICB0aGF0Ll90ID0gTkFNRTsgICAgICAgICAvLyBjb2xsZWN0aW9uIHR5cGVcbiAgICAgIHRoYXQuX2kgPSBjcmVhdGUobnVsbCk7IC8vIGluZGV4XG4gICAgICB0aGF0Ll9mID0gdW5kZWZpbmVkOyAgICAvLyBmaXJzdCBlbnRyeVxuICAgICAgdGhhdC5fbCA9IHVuZGVmaW5lZDsgICAgLy8gbGFzdCBlbnRyeVxuICAgICAgdGhhdFtTSVpFXSA9IDA7ICAgICAgICAgLy8gc2l6ZVxuICAgICAgaWYgKGl0ZXJhYmxlICE9IHVuZGVmaW5lZCkgZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGhhdFtBRERFUl0sIHRoYXQpO1xuICAgIH0pO1xuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCB7XG4gICAgICAvLyAyMy4xLjMuMSBNYXAucHJvdG90eXBlLmNsZWFyKClcbiAgICAgIC8vIDIzLjIuMy4yIFNldC5wcm90b3R5cGUuY2xlYXIoKVxuICAgICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgICBmb3IgKHZhciB0aGF0ID0gdmFsaWRhdGUodGhpcywgTkFNRSksIGRhdGEgPSB0aGF0Ll9pLCBlbnRyeSA9IHRoYXQuX2Y7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm4pIHtcbiAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoZW50cnkucCkgZW50cnkucCA9IGVudHJ5LnAubiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBkZWxldGUgZGF0YVtlbnRyeS5pXTtcbiAgICAgICAgfVxuICAgICAgICB0aGF0Ll9mID0gdGhhdC5fbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhhdFtTSVpFXSA9IDA7XG4gICAgICB9LFxuICAgICAgLy8gMjMuMS4zLjMgTWFwLnByb3RvdHlwZS5kZWxldGUoa2V5KVxuICAgICAgLy8gMjMuMi4zLjQgU2V0LnByb3RvdHlwZS5kZWxldGUodmFsdWUpXG4gICAgICAnZGVsZXRlJzogZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdGhhdCA9IHZhbGlkYXRlKHRoaXMsIE5BTUUpO1xuICAgICAgICB2YXIgZW50cnkgPSBnZXRFbnRyeSh0aGF0LCBrZXkpO1xuICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICB2YXIgbmV4dCA9IGVudHJ5Lm47XG4gICAgICAgICAgdmFyIHByZXYgPSBlbnRyeS5wO1xuICAgICAgICAgIGRlbGV0ZSB0aGF0Ll9pW2VudHJ5LmldO1xuICAgICAgICAgIGVudHJ5LnIgPSB0cnVlO1xuICAgICAgICAgIGlmIChwcmV2KSBwcmV2Lm4gPSBuZXh0O1xuICAgICAgICAgIGlmIChuZXh0KSBuZXh0LnAgPSBwcmV2O1xuICAgICAgICAgIGlmICh0aGF0Ll9mID09IGVudHJ5KSB0aGF0Ll9mID0gbmV4dDtcbiAgICAgICAgICBpZiAodGhhdC5fbCA9PSBlbnRyeSkgdGhhdC5fbCA9IHByZXY7XG4gICAgICAgICAgdGhhdFtTSVpFXS0tO1xuICAgICAgICB9IHJldHVybiAhIWVudHJ5O1xuICAgICAgfSxcbiAgICAgIC8vIDIzLjIuMy42IFNldC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICAgICAgLy8gMjMuMS4zLjUgTWFwLnByb3RvdHlwZS5mb3JFYWNoKGNhbGxiYWNrZm4sIHRoaXNBcmcgPSB1bmRlZmluZWQpXG4gICAgICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgICAgIHZhbGlkYXRlKHRoaXMsIE5BTUUpO1xuICAgICAgICB2YXIgZiA9IGN0eChjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMyk7XG4gICAgICAgIHZhciBlbnRyeTtcbiAgICAgICAgd2hpbGUgKGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhpcy5fZikge1xuICAgICAgICAgIGYoZW50cnkudiwgZW50cnkuaywgdGhpcyk7XG4gICAgICAgICAgLy8gcmV2ZXJ0IHRvIHRoZSBsYXN0IGV4aXN0aW5nIGVudHJ5XG4gICAgICAgICAgd2hpbGUgKGVudHJ5ICYmIGVudHJ5LnIpIGVudHJ5ID0gZW50cnkucDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIDIzLjEuMy43IE1hcC5wcm90b3R5cGUuaGFzKGtleSlcbiAgICAgIC8vIDIzLjIuMy43IFNldC5wcm90b3R5cGUuaGFzKHZhbHVlKVxuICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICAgIHJldHVybiAhIWdldEVudHJ5KHZhbGlkYXRlKHRoaXMsIE5BTUUpLCBrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChERVNDUklQVE9SUykgZFAoQy5wcm90b3R5cGUsICdzaXplJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZSh0aGlzLCBOQU1FKVtTSVpFXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gQztcbiAgfSxcbiAgZGVmOiBmdW5jdGlvbiAodGhhdCwga2V5LCB2YWx1ZSkge1xuICAgIHZhciBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSk7XG4gICAgdmFyIHByZXYsIGluZGV4O1xuICAgIC8vIGNoYW5nZSBleGlzdGluZyBlbnRyeVxuICAgIGlmIChlbnRyeSkge1xuICAgICAgZW50cnkudiA9IHZhbHVlO1xuICAgIC8vIGNyZWF0ZSBuZXcgZW50cnlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhhdC5fbCA9IGVudHJ5ID0ge1xuICAgICAgICBpOiBpbmRleCA9IGZhc3RLZXkoa2V5LCB0cnVlKSwgLy8gPC0gaW5kZXhcbiAgICAgICAgazoga2V5LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGtleVxuICAgICAgICB2OiB2YWx1ZSwgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gdmFsdWVcbiAgICAgICAgcDogcHJldiA9IHRoYXQuX2wsICAgICAgICAgICAgIC8vIDwtIHByZXZpb3VzIGVudHJ5XG4gICAgICAgIG46IHVuZGVmaW5lZCwgICAgICAgICAgICAgICAgICAvLyA8LSBuZXh0IGVudHJ5XG4gICAgICAgIHI6IGZhbHNlICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSByZW1vdmVkXG4gICAgICB9O1xuICAgICAgaWYgKCF0aGF0Ll9mKSB0aGF0Ll9mID0gZW50cnk7XG4gICAgICBpZiAocHJldikgcHJldi5uID0gZW50cnk7XG4gICAgICB0aGF0W1NJWkVdKys7XG4gICAgICAvLyBhZGQgdG8gaW5kZXhcbiAgICAgIGlmIChpbmRleCAhPT0gJ0YnKSB0aGF0Ll9pW2luZGV4XSA9IGVudHJ5O1xuICAgIH0gcmV0dXJuIHRoYXQ7XG4gIH0sXG4gIGdldEVudHJ5OiBnZXRFbnRyeSxcbiAgc2V0U3Ryb25nOiBmdW5jdGlvbiAoQywgTkFNRSwgSVNfTUFQKSB7XG4gICAgLy8gYWRkIC5rZXlzLCAudmFsdWVzLCAuZW50cmllcywgW0BAaXRlcmF0b3JdXG4gICAgLy8gMjMuMS4zLjQsIDIzLjEuMy44LCAyMy4xLjMuMTEsIDIzLjEuMy4xMiwgMjMuMi4zLjUsIDIzLjIuMy44LCAyMy4yLjMuMTAsIDIzLjIuMy4xMVxuICAgICRpdGVyRGVmaW5lKEMsIE5BTUUsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICAgICAgdGhpcy5fdCA9IHZhbGlkYXRlKGl0ZXJhdGVkLCBOQU1FKTsgLy8gdGFyZ2V0XG4gICAgICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgICAgICAvLyBraW5kXG4gICAgICB0aGlzLl9sID0gdW5kZWZpbmVkOyAgICAgICAgICAgICAgICAvLyBwcmV2aW91c1xuICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIHZhciBraW5kID0gdGhhdC5faztcbiAgICAgIHZhciBlbnRyeSA9IHRoYXQuX2w7XG4gICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcbiAgICAgIHdoaWxlIChlbnRyeSAmJiBlbnRyeS5yKSBlbnRyeSA9IGVudHJ5LnA7XG4gICAgICAvLyBnZXQgbmV4dCBlbnRyeVxuICAgICAgaWYgKCF0aGF0Ll90IHx8ICEodGhhdC5fbCA9IGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhhdC5fdC5fZikpIHtcbiAgICAgICAgLy8gb3IgZmluaXNoIHRoZSBpdGVyYXRpb25cbiAgICAgICAgdGhhdC5fdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHN0ZXAoMSk7XG4gICAgICB9XG4gICAgICAvLyByZXR1cm4gc3RlcCBieSBraW5kXG4gICAgICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGVudHJ5LmspO1xuICAgICAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIGVudHJ5LnYpO1xuICAgICAgcmV0dXJuIHN0ZXAoMCwgW2VudHJ5LmssIGVudHJ5LnZdKTtcbiAgICB9LCBJU19NQVAgPyAnZW50cmllcycgOiAndmFsdWVzJywgIUlTX01BUCwgdHJ1ZSk7XG5cbiAgICAvLyBhZGQgW0BAc3BlY2llc10sIDIzLjEuMi4yLCAyMy4yLjIuMlxuICAgIHNldFNwZWNpZXMoTkFNRSk7XG4gIH1cbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24tc3Ryb25nLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///170\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar strong = __webpack_require__(170);\nvar validate = __webpack_require__(64);\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = __webpack_require__(90)(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc2V0LmpzPzc1MjUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIHN0cm9uZyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24tc3Ryb25nJyk7XG52YXIgdmFsaWRhdGUgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgU0VUID0gJ1NldCc7XG5cbi8vIDIzLjIgU2V0IE9iamVjdHNcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbicpKFNFVCwgZnVuY3Rpb24gKGdldCkge1xuICByZXR1cm4gZnVuY3Rpb24gU2V0KCkgeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIHtcbiAgLy8gMjMuMi4zLjEgU2V0LnByb3RvdHlwZS5hZGQodmFsdWUpXG4gIGFkZDogZnVuY3Rpb24gYWRkKHZhbHVlKSB7XG4gICAgcmV0dXJuIHN0cm9uZy5kZWYodmFsaWRhdGUodGhpcywgU0VUKSwgdmFsdWUgPSB2YWx1ZSA9PT0gMCA/IDAgOiB2YWx1ZSwgdmFsdWUpO1xuICB9XG59LCBzdHJvbmcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zZXQuanNcbi8vIG1vZHVsZSBpZCA9IDE3MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///171\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar each = __webpack_require__(35)(0);\nvar redefine = __webpack_require__(19);\nvar meta = __webpack_require__(43);\nvar assign = __webpack_require__(153);\nvar weak = __webpack_require__(173);\nvar isObject = __webpack_require__(6);\nvar fails = __webpack_require__(5);\nvar validate = __webpack_require__(64);\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = __webpack_require__(90)(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYud2Vhay1tYXAuanM/NjQzNSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgZWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgwKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgbWV0YSA9IHJlcXVpcmUoJy4vX21ldGEnKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL19vYmplY3QtYXNzaWduJyk7XG52YXIgd2VhayA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24td2VhaycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIFdFQUtfTUFQID0gJ1dlYWtNYXAnO1xudmFyIGdldFdlYWsgPSBtZXRhLmdldFdlYWs7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZTtcbnZhciB1bmNhdWdodEZyb3plblN0b3JlID0gd2Vhay51ZnN0b3JlO1xudmFyIHRtcCA9IHt9O1xudmFyIEludGVybmFsTWFwO1xuXG52YXIgd3JhcHBlciA9IGZ1bmN0aW9uIChnZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFdlYWtNYXAoKSB7XG4gICAgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7XG4gIH07XG59O1xuXG52YXIgbWV0aG9kcyA9IHtcbiAgLy8gMjMuMy4zLjMgV2Vha01hcC5wcm90b3R5cGUuZ2V0KGtleSlcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgaWYgKGlzT2JqZWN0KGtleSkpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0V2VhayhrZXkpO1xuICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHZhbGlkYXRlKHRoaXMsIFdFQUtfTUFQKSkuZ2V0KGtleSk7XG4gICAgICByZXR1cm4gZGF0YSA/IGRhdGFbdGhpcy5faV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9LFxuICAvLyAyMy4zLjMuNSBXZWFrTWFwLnByb3RvdHlwZS5zZXQoa2V5LCB2YWx1ZSlcbiAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIHJldHVybiB3ZWFrLmRlZih2YWxpZGF0ZSh0aGlzLCBXRUFLX01BUCksIGtleSwgdmFsdWUpO1xuICB9XG59O1xuXG4vLyAyMy4zIFdlYWtNYXAgT2JqZWN0c1xudmFyICRXZWFrTWFwID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uJykoV0VBS19NQVAsIHdyYXBwZXIsIG1ldGhvZHMsIHdlYWssIHRydWUsIHRydWUpO1xuXG4vLyBJRTExIFdlYWtNYXAgZnJvemVuIGtleXMgZml4XG5pZiAoZmFpbHMoZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3ICRXZWFrTWFwKCkuc2V0KChPYmplY3QuZnJlZXplIHx8IE9iamVjdCkodG1wKSwgNykuZ2V0KHRtcCkgIT0gNzsgfSkpIHtcbiAgSW50ZXJuYWxNYXAgPSB3ZWFrLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIFdFQUtfTUFQKTtcbiAgYXNzaWduKEludGVybmFsTWFwLnByb3RvdHlwZSwgbWV0aG9kcyk7XG4gIG1ldGEuTkVFRCA9IHRydWU7XG4gIGVhY2goWydkZWxldGUnLCAnaGFzJywgJ2dldCcsICdzZXQnXSwgZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBwcm90byA9ICRXZWFrTWFwLnByb3RvdHlwZTtcbiAgICB2YXIgbWV0aG9kID0gcHJvdG9ba2V5XTtcbiAgICByZWRlZmluZShwcm90bywga2V5LCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgLy8gc3RvcmUgZnJvemVuIG9iamVjdHMgb24gaW50ZXJuYWwgd2Vha21hcCBzaGltXG4gICAgICBpZiAoaXNPYmplY3QoYSkgJiYgIWlzRXh0ZW5zaWJsZShhKSkge1xuICAgICAgICBpZiAoIXRoaXMuX2YpIHRoaXMuX2YgPSBuZXcgSW50ZXJuYWxNYXAoKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2Zba2V5XShhLCBiKTtcbiAgICAgICAgcmV0dXJuIGtleSA9PSAnc2V0JyA/IHRoaXMgOiByZXN1bHQ7XG4gICAgICAvLyBzdG9yZSBhbGwgdGhlIHJlc3Qgb24gbmF0aXZlIHdlYWttYXBcbiAgICAgIH0gcmV0dXJuIG1ldGhvZC5jYWxsKHRoaXMsIGEsIGIpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYud2Vhay1tYXAuanNcbi8vIG1vZHVsZSBpZCA9IDE3MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///172\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar redefineAll = __webpack_require__(57);\nvar getWeak = __webpack_require__(43).getWeak;\nvar anObject = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\nvar anInstance = __webpack_require__(55);\nvar forOf = __webpack_require__(56);\nvar createArrayMethod = __webpack_require__(35);\nvar $has = __webpack_require__(23);\nvar validate = __webpack_require__(64);\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTczLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29sbGVjdGlvbi13ZWFrLmpzPzdjOTQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG52YXIgZ2V0V2VhayA9IHJlcXVpcmUoJy4vX21ldGEnKS5nZXRXZWFrO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIGNyZWF0ZUFycmF5TWV0aG9kID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpO1xudmFyICRoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBhcnJheUZpbmQgPSBjcmVhdGVBcnJheU1ldGhvZCg1KTtcbnZhciBhcnJheUZpbmRJbmRleCA9IGNyZWF0ZUFycmF5TWV0aG9kKDYpO1xudmFyIGlkID0gMDtcblxuLy8gZmFsbGJhY2sgZm9yIHVuY2F1Z2h0IGZyb3plbiBrZXlzXG52YXIgdW5jYXVnaHRGcm96ZW5TdG9yZSA9IGZ1bmN0aW9uICh0aGF0KSB7XG4gIHJldHVybiB0aGF0Ll9sIHx8ICh0aGF0Ll9sID0gbmV3IFVuY2F1Z2h0RnJvemVuU3RvcmUoKSk7XG59O1xudmFyIFVuY2F1Z2h0RnJvemVuU3RvcmUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYSA9IFtdO1xufTtcbnZhciBmaW5kVW5jYXVnaHRGcm96ZW4gPSBmdW5jdGlvbiAoc3RvcmUsIGtleSkge1xuICByZXR1cm4gYXJyYXlGaW5kKHN0b3JlLmEsIGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBpdFswXSA9PT0ga2V5O1xuICB9KTtcbn07XG5VbmNhdWdodEZyb3plblN0b3JlLnByb3RvdHlwZSA9IHtcbiAgZ2V0OiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIGVudHJ5ID0gZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gICAgaWYgKGVudHJ5KSByZXR1cm4gZW50cnlbMV07XG4gIH0sXG4gIGhhczogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiAhIWZpbmRVbmNhdWdodEZyb3plbih0aGlzLCBrZXkpO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgdmFyIGVudHJ5ID0gZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gICAgaWYgKGVudHJ5KSBlbnRyeVsxXSA9IHZhbHVlO1xuICAgIGVsc2UgdGhpcy5hLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSxcbiAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgaW5kZXggPSBhcnJheUZpbmRJbmRleCh0aGlzLmEsIGZ1bmN0aW9uIChpdCkge1xuICAgICAgcmV0dXJuIGl0WzBdID09PSBrZXk7XG4gICAgfSk7XG4gICAgaWYgKH5pbmRleCkgdGhpcy5hLnNwbGljZShpbmRleCwgMSk7XG4gICAgcmV0dXJuICEhfmluZGV4O1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0Q29uc3RydWN0b3I6IGZ1bmN0aW9uICh3cmFwcGVyLCBOQU1FLCBJU19NQVAsIEFEREVSKSB7XG4gICAgdmFyIEMgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBpdGVyYWJsZSkge1xuICAgICAgYW5JbnN0YW5jZSh0aGF0LCBDLCBOQU1FLCAnX2knKTtcbiAgICAgIHRoYXQuX3QgPSBOQU1FOyAgICAgIC8vIGNvbGxlY3Rpb24gdHlwZVxuICAgICAgdGhhdC5faSA9IGlkKys7ICAgICAgLy8gY29sbGVjdGlvbiBpZFxuICAgICAgdGhhdC5fbCA9IHVuZGVmaW5lZDsgLy8gbGVhayBzdG9yZSBmb3IgdW5jYXVnaHQgZnJvemVuIG9iamVjdHNcbiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTtcbiAgICB9KTtcbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwge1xuICAgICAgLy8gMjMuMy4zLjIgV2Vha01hcC5wcm90b3R5cGUuZGVsZXRlKGtleSlcbiAgICAgIC8vIDIzLjQuMy4zIFdlYWtTZXQucHJvdG90eXBlLmRlbGV0ZSh2YWx1ZSlcbiAgICAgICdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmICghaXNPYmplY3Qoa2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB2YXIgZGF0YSA9IGdldFdlYWsoa2V5KTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHZhbGlkYXRlKHRoaXMsIE5BTUUpKVsnZGVsZXRlJ10oa2V5KTtcbiAgICAgICAgcmV0dXJuIGRhdGEgJiYgJGhhcyhkYXRhLCB0aGlzLl9pKSAmJiBkZWxldGUgZGF0YVt0aGlzLl9pXTtcbiAgICAgIH0sXG4gICAgICAvLyAyMy4zLjMuNCBXZWFrTWFwLnByb3RvdHlwZS5oYXMoa2V5KVxuICAgICAgLy8gMjMuNC4zLjQgV2Vha1NldC5wcm90b3R5cGUuaGFzKHZhbHVlKVxuICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICAgIGlmICghaXNPYmplY3Qoa2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB2YXIgZGF0YSA9IGdldFdlYWsoa2V5KTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHZhbGlkYXRlKHRoaXMsIE5BTUUpKS5oYXMoa2V5KTtcbiAgICAgICAgcmV0dXJuIGRhdGEgJiYgJGhhcyhkYXRhLCB0aGlzLl9pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gQztcbiAgfSxcbiAgZGVmOiBmdW5jdGlvbiAodGhhdCwga2V5LCB2YWx1ZSkge1xuICAgIHZhciBkYXRhID0gZ2V0V2Vhayhhbk9iamVjdChrZXkpLCB0cnVlKTtcbiAgICBpZiAoZGF0YSA9PT0gdHJ1ZSkgdW5jYXVnaHRGcm96ZW5TdG9yZSh0aGF0KS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgZWxzZSBkYXRhW3RoYXQuX2ldID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoYXQ7XG4gIH0sXG4gIHVmc3RvcmU6IHVuY2F1Z2h0RnJvemVuU3RvcmVcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24td2Vhay5qc1xuLy8gbW9kdWxlIGlkID0gMTczXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///173\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = __webpack_require__(33);\nvar toLength = __webpack_require__(14);\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8taW5kZXguanM/ZjAzZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2luZGV4XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gIHZhciBudW1iZXIgPSB0b0ludGVnZXIoaXQpO1xuICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgobnVtYmVyKTtcbiAgaWYgKG51bWJlciAhPT0gbGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBsZW5ndGghJyk7XG4gIHJldHVybiBsZW5ndGg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///174\n")},function(module,exports,__webpack_require__){eval("// all object keys, includes non-enumerable and symbols\nvar gOPN = __webpack_require__(53);\nvar gOPS = __webpack_require__(82);\nvar anObject = __webpack_require__(3);\nvar Reflect = __webpack_require__(4).Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb3duLWtleXMuanM/NjE0YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBSZWZsZWN0ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuUmVmbGVjdDtcbm1vZHVsZS5leHBvcnRzID0gUmVmbGVjdCAmJiBSZWZsZWN0Lm93bktleXMgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdPUE4uZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgcmV0dXJuIGdldFN5bWJvbHMgPyBrZXlzLmNvbmNhdChnZXRTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb3duLWtleXMuanNcbi8vIG1vZHVsZSBpZCA9IDE3NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///175\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = __webpack_require__(83);\nvar isObject = __webpack_require__(6);\nvar toLength = __webpack_require__(14);\nvar ctx = __webpack_require__(28);\nvar IS_CONCAT_SPREADABLE = __webpack_require__(9)('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZmxhdHRlbi1pbnRvLWFycmF5LmpzPzIwNWEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1mbGF0TWFwLyNzZWMtRmxhdHRlbkludG9BcnJheVxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL19pcy1hcnJheScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBJU19DT05DQVRfU1BSRUFEQUJMRSA9IHJlcXVpcmUoJy4vX3drcycpKCdpc0NvbmNhdFNwcmVhZGFibGUnKTtcblxuZnVuY3Rpb24gZmxhdHRlbkludG9BcnJheSh0YXJnZXQsIG9yaWdpbmFsLCBzb3VyY2UsIHNvdXJjZUxlbiwgc3RhcnQsIGRlcHRoLCBtYXBwZXIsIHRoaXNBcmcpIHtcbiAgdmFyIHRhcmdldEluZGV4ID0gc3RhcnQ7XG4gIHZhciBzb3VyY2VJbmRleCA9IDA7XG4gIHZhciBtYXBGbiA9IG1hcHBlciA/IGN0eChtYXBwZXIsIHRoaXNBcmcsIDMpIDogZmFsc2U7XG4gIHZhciBlbGVtZW50LCBzcHJlYWRhYmxlO1xuXG4gIHdoaWxlIChzb3VyY2VJbmRleCA8IHNvdXJjZUxlbikge1xuICAgIGlmIChzb3VyY2VJbmRleCBpbiBzb3VyY2UpIHtcbiAgICAgIGVsZW1lbnQgPSBtYXBGbiA/IG1hcEZuKHNvdXJjZVtzb3VyY2VJbmRleF0sIHNvdXJjZUluZGV4LCBvcmlnaW5hbCkgOiBzb3VyY2Vbc291cmNlSW5kZXhdO1xuXG4gICAgICBzcHJlYWRhYmxlID0gZmFsc2U7XG4gICAgICBpZiAoaXNPYmplY3QoZWxlbWVudCkpIHtcbiAgICAgICAgc3ByZWFkYWJsZSA9IGVsZW1lbnRbSVNfQ09OQ0FUX1NQUkVBREFCTEVdO1xuICAgICAgICBzcHJlYWRhYmxlID0gc3ByZWFkYWJsZSAhPT0gdW5kZWZpbmVkID8gISFzcHJlYWRhYmxlIDogaXNBcnJheShlbGVtZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNwcmVhZGFibGUgJiYgZGVwdGggPiAwKSB7XG4gICAgICAgIHRhcmdldEluZGV4ID0gZmxhdHRlbkludG9BcnJheSh0YXJnZXQsIG9yaWdpbmFsLCBlbGVtZW50LCB0b0xlbmd0aChlbGVtZW50Lmxlbmd0aCksIHRhcmdldEluZGV4LCBkZXB0aCAtIDEpIC0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0YXJnZXRJbmRleCA+PSAweDFmZmZmZmZmZmZmZmZmKSB0aHJvdyBUeXBlRXJyb3IoKTtcbiAgICAgICAgdGFyZ2V0W3RhcmdldEluZGV4XSA9IGVsZW1lbnQ7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldEluZGV4Kys7XG4gICAgfVxuICAgIHNvdXJjZUluZGV4Kys7XG4gIH1cbiAgcmV0dXJuIHRhcmdldEluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW5JbnRvQXJyYXk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZsYXR0ZW4taW50by1hcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gMTc2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///176\n")},function(module,exports,__webpack_require__){eval("// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = __webpack_require__(14);\nvar repeat = __webpack_require__(110);\nvar defined = __webpack_require__(32);\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXBhZC5qcz9kOTU0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0cmluZy1wYWQtc3RhcnQtZW5kXG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciByZXBlYXQgPSByZXF1aXJlKCcuL19zdHJpbmctcmVwZWF0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgbWF4TGVuZ3RoLCBmaWxsU3RyaW5nLCBsZWZ0KSB7XG4gIHZhciBTID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICB2YXIgc3RyaW5nTGVuZ3RoID0gUy5sZW5ndGg7XG4gIHZhciBmaWxsU3RyID0gZmlsbFN0cmluZyA9PT0gdW5kZWZpbmVkID8gJyAnIDogU3RyaW5nKGZpbGxTdHJpbmcpO1xuICB2YXIgaW50TWF4TGVuZ3RoID0gdG9MZW5ndGgobWF4TGVuZ3RoKTtcbiAgaWYgKGludE1heExlbmd0aCA8PSBzdHJpbmdMZW5ndGggfHwgZmlsbFN0ciA9PSAnJykgcmV0dXJuIFM7XG4gIHZhciBmaWxsTGVuID0gaW50TWF4TGVuZ3RoIC0gc3RyaW5nTGVuZ3RoO1xuICB2YXIgc3RyaW5nRmlsbGVyID0gcmVwZWF0LmNhbGwoZmlsbFN0ciwgTWF0aC5jZWlsKGZpbGxMZW4gLyBmaWxsU3RyLmxlbmd0aCkpO1xuICBpZiAoc3RyaW5nRmlsbGVyLmxlbmd0aCA+IGZpbGxMZW4pIHN0cmluZ0ZpbGxlciA9IHN0cmluZ0ZpbGxlci5zbGljZSgwLCBmaWxsTGVuKTtcbiAgcmV0dXJuIGxlZnQgPyBzdHJpbmdGaWxsZXIgKyBTIDogUyArIHN0cmluZ0ZpbGxlcjtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1wYWQuanNcbi8vIG1vZHVsZSBpZCA9IDE3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///177\n")},function(module,exports,__webpack_require__){eval("var getKeys = __webpack_require__(50);\nvar toIObject = __webpack_require__(24);\nvar isEnum = __webpack_require__(71).f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXRvLWFycmF5LmpzPzk0YTEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBpc0VudW0gPSByZXF1aXJlKCcuL19vYmplY3QtcGllJykuZjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlzRW50cmllcykge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3QoaXQpO1xuICAgIHZhciBrZXlzID0gZ2V0S2V5cyhPKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChsZW5ndGggPiBpKSBpZiAoaXNFbnVtLmNhbGwoTywga2V5ID0ga2V5c1tpKytdKSkge1xuICAgICAgcmVzdWx0LnB1c2goaXNFbnRyaWVzID8gW2tleSwgT1trZXldXSA6IE9ba2V5XSk7XG4gICAgfSByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXRvLWFycmF5LmpzXG4vLyBtb2R1bGUgaWQgPSAxNzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///178\n")},function(module,exports,__webpack_require__){eval('// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = __webpack_require__(72);\nvar from = __webpack_require__(180);\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + "#toJSON isn\'t generic");\n return from(this);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29sbGVjdGlvbi10by1qc29uLmpzPzVkNzAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgZnJvbSA9IHJlcXVpcmUoJy4vX2FycmF5LWZyb20taXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICBpZiAoY2xhc3NvZih0aGlzKSAhPSBOQU1FKSB0aHJvdyBUeXBlRXJyb3IoTkFNRSArIFwiI3RvSlNPTiBpc24ndCBnZW5lcmljXCIpO1xuICAgIHJldHVybiBmcm9tKHRoaXMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29sbGVjdGlvbi10by1qc29uLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///179\n')},function(module,exports,__webpack_require__){eval("var forOf = __webpack_require__(56);\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTgwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktZnJvbS1pdGVyYWJsZS5qcz80MDZlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyLCBJVEVSQVRPUikge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGZvck9mKGl0ZXIsIGZhbHNlLCByZXN1bHQucHVzaCwgcmVzdWx0LCBJVEVSQVRPUik7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1mcm9tLWl0ZXJhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSAxODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///180\n")},function(module,exports){eval("// https://rwaldron.github.io/proposal-math-extensions/\nmodule.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {\n if (\n arguments.length === 0\n // eslint-disable-next-line no-self-compare\n || x != x\n // eslint-disable-next-line no-self-compare\n || inLow != inLow\n // eslint-disable-next-line no-self-compare\n || inHigh != inHigh\n // eslint-disable-next-line no-self-compare\n || outLow != outLow\n // eslint-disable-next-line no-self-compare\n || outHigh != outHigh\n ) return NaN;\n if (x === Infinity || x === -Infinity) return x;\n return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTgxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1zY2FsZS5qcz81OThmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbm1vZHVsZS5leHBvcnRzID0gTWF0aC5zY2FsZSB8fCBmdW5jdGlvbiBzY2FsZSh4LCBpbkxvdywgaW5IaWdoLCBvdXRMb3csIG91dEhpZ2gpIHtcbiAgaWYgKFxuICAgIGFyZ3VtZW50cy5sZW5ndGggPT09IDBcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIHx8IHggIT0geFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgfHwgaW5Mb3cgIT0gaW5Mb3dcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIHx8IGluSGlnaCAhPSBpbkhpZ2hcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIHx8IG91dExvdyAhPSBvdXRMb3dcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIHx8IG91dEhpZ2ggIT0gb3V0SGlnaFxuICApIHJldHVybiBOYU47XG4gIGlmICh4ID09PSBJbmZpbml0eSB8fCB4ID09PSAtSW5maW5pdHkpIHJldHVybiB4O1xuICByZXR1cm4gKHggLSBpbkxvdykgKiAob3V0SGlnaCAtIG91dExvdykgLyAoaW5IaWdoIC0gaW5Mb3cpICsgb3V0TG93O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1zY2FsZS5qc1xuLy8gbW9kdWxlIGlkID0gMTgxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///181\n")},function(module,exports){eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTgyLmpzIiwic291cmNlcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///182\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(73);\nvar $export = __webpack_require__(21);\nvar redefine = __webpack_require__(185);\nvar hide = __webpack_require__(58);\nvar Iterators = __webpack_require__(75);\nvar $iterCreate = __webpack_require__(419);\nvar setToStringTag = __webpack_require__(97);\nvar getPrototypeOf = __webpack_require__(189);\nvar ITERATOR = __webpack_require__(22)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTgzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qcz9iYzgwIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciAkaXRlckNyZWF0ZSA9IHJlcXVpcmUoJy4vX2l0ZXItY3JlYXRlJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1kgPSAhKFtdLmtleXMgJiYgJ25leHQnIGluIFtdLmtleXMoKSk7IC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbnZhciBGRl9JVEVSQVRPUiA9ICdAQGl0ZXJhdG9yJztcbnZhciBLRVlTID0gJ2tleXMnO1xudmFyIFZBTFVFUyA9ICd2YWx1ZXMnO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEJhc2UsIE5BTUUsIENvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCkge1xuICAkaXRlckNyZWF0ZShDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG4gIHZhciBnZXRNZXRob2QgPSBmdW5jdGlvbiAoa2luZCkge1xuICAgIGlmICghQlVHR1kgJiYga2luZCBpbiBwcm90bykgcmV0dXJuIHByb3RvW2tpbmRdO1xuICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgIH0gcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gIH07XG4gIHZhciBUQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIHZhciBERUZfVkFMVUVTID0gREVGQVVMVCA9PSBWQUxVRVM7XG4gIHZhciBWQUxVRVNfQlVHID0gZmFsc2U7XG4gIHZhciBwcm90byA9IEJhc2UucHJvdG90eXBlO1xuICB2YXIgJG5hdGl2ZSA9IHByb3RvW0lURVJBVE9SXSB8fCBwcm90b1tGRl9JVEVSQVRPUl0gfHwgREVGQVVMVCAmJiBwcm90b1tERUZBVUxUXTtcbiAgdmFyICRkZWZhdWx0ID0gJG5hdGl2ZSB8fCBnZXRNZXRob2QoREVGQVVMVCk7XG4gIHZhciAkZW50cmllcyA9IERFRkFVTFQgPyAhREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKCdlbnRyaWVzJykgOiB1bmRlZmluZWQ7XG4gIHZhciAkYW55TmF0aXZlID0gTkFNRSA9PSAnQXJyYXknID8gcHJvdG8uZW50cmllcyB8fCAkbmF0aXZlIDogJG5hdGl2ZTtcbiAgdmFyIG1ldGhvZHMsIGtleSwgSXRlcmF0b3JQcm90b3R5cGU7XG4gIC8vIEZpeCBuYXRpdmVcbiAgaWYgKCRhbnlOYXRpdmUpIHtcbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKCRhbnlOYXRpdmUuY2FsbChuZXcgQmFzZSgpKSk7XG4gICAgaWYgKEl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcbiAgICAgIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpO1xuICAgICAgLy8gZml4IGZvciBzb21lIG9sZCBlbmdpbmVzXG4gICAgICBpZiAoIUxJQlJBUlkgJiYgdHlwZW9mIEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSAhPSAnZnVuY3Rpb24nKSBoaWRlKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG4gICAgfVxuICB9XG4gIC8vIGZpeCBBcnJheSN7dmFsdWVzLCBAQGl0ZXJhdG9yfS5uYW1lIGluIFY4IC8gRkZcbiAgaWYgKERFRl9WQUxVRVMgJiYgJG5hdGl2ZSAmJiAkbmF0aXZlLm5hbWUgIT09IFZBTFVFUykge1xuICAgIFZBTFVFU19CVUcgPSB0cnVlO1xuICAgICRkZWZhdWx0ID0gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gJG5hdGl2ZS5jYWxsKHRoaXMpOyB9O1xuICB9XG4gIC8vIERlZmluZSBpdGVyYXRvclxuICBpZiAoKCFMSUJSQVJZIHx8IEZPUkNFRCkgJiYgKEJVR0dZIHx8IFZBTFVFU19CVUcgfHwgIXByb3RvW0lURVJBVE9SXSkpIHtcbiAgICBoaWRlKHByb3RvLCBJVEVSQVRPUiwgJGRlZmF1bHQpO1xuICB9XG4gIC8vIFBsdWcgZm9yIGxpYnJhcnlcbiAgSXRlcmF0b3JzW05BTUVdID0gJGRlZmF1bHQ7XG4gIEl0ZXJhdG9yc1tUQUddID0gcmV0dXJuVGhpcztcbiAgaWYgKERFRkFVTFQpIHtcbiAgICBtZXRob2RzID0ge1xuICAgICAgdmFsdWVzOiBERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6IElTX1NFVCA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKEtFWVMpLFxuICAgICAgZW50cmllczogJGVudHJpZXNcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoa2V5IGluIG1ldGhvZHMpIHtcbiAgICAgIGlmICghKGtleSBpbiBwcm90bykpIHJlZGVmaW5lKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7XG4gICAgfSBlbHNlICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKEJVR0dZIHx8IFZBTFVFU19CVUcpLCBOQU1FLCBtZXRob2RzKTtcbiAgfVxuICByZXR1cm4gbWV0aG9kcztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDE4M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///183\n")},function(module,exports,__webpack_require__){eval("module.exports = !__webpack_require__(46) && !__webpack_require__(66)(function () {\n return Object.defineProperty(__webpack_require__(131)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qcz80OWYwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnZGl2JyksICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faWU4LWRvbS1kZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDE4NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///184\n")},function(module,exports,__webpack_require__){eval("module.exports = __webpack_require__(58);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS5qcz9mM2NkIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faGlkZScpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzXG4vLyBtb2R1bGUgaWQgPSAxODVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///185\n")},function(module,exports,__webpack_require__){eval("var has = __webpack_require__(59);\nvar toIObject = __webpack_require__(47);\nvar arrayIndexOf = __webpack_require__(421)(false);\nvar IE_PROTO = __webpack_require__(135)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy1pbnRlcm5hbC5qcz8yMWI4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgYXJyYXlJbmRleE9mID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKShmYWxzZSk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pIGlmIChrZXkgIT0gSUVfUFJPVE8pIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzXG4vLyBtb2R1bGUgaWQgPSAxODZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///186\n")},function(module,exports,__webpack_require__){eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(76);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pb2JqZWN0LmpzPzMxNGUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAxODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///187\n")},function(module,exports,__webpack_require__){eval("var document = __webpack_require__(17).document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19odG1sLmpzPzQ0ZjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG5tb2R1bGUuZXhwb3J0cyA9IGRvY3VtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19odG1sLmpzXG4vLyBtb2R1bGUgaWQgPSAxODhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///188\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(59);\nvar toObject = __webpack_require__(77);\nvar IE_PROTO = __webpack_require__(135)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzPzNmM2MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvIDogbnVsbDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdwby5qc1xuLy8gbW9kdWxlIGlkID0gMTg5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///189\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(423);\nvar global = __webpack_require__(17);\nvar hide = __webpack_require__(58);\nvar Iterators = __webpack_require__(75);\nvar TO_STRING_TAG = __webpack_require__(22)('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUuanM/ZmFkMyJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuL2VzNi5hcnJheS5pdGVyYXRvcicpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgVE9fU1RSSU5HX1RBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG52YXIgRE9NSXRlcmFibGVzID0gKCdDU1NSdWxlTGlzdCxDU1NTdHlsZURlY2xhcmF0aW9uLENTU1ZhbHVlTGlzdCxDbGllbnRSZWN0TGlzdCxET01SZWN0TGlzdCxET01TdHJpbmdMaXN0LCcgK1xuICAnRE9NVG9rZW5MaXN0LERhdGFUcmFuc2Zlckl0ZW1MaXN0LEZpbGVMaXN0LEhUTUxBbGxDb2xsZWN0aW9uLEhUTUxDb2xsZWN0aW9uLEhUTUxGb3JtRWxlbWVudCxIVE1MU2VsZWN0RWxlbWVudCwnICtcbiAgJ01lZGlhTGlzdCxNaW1lVHlwZUFycmF5LE5hbWVkTm9kZU1hcCxOb2RlTGlzdCxQYWludFJlcXVlc3RMaXN0LFBsdWdpbixQbHVnaW5BcnJheSxTVkdMZW5ndGhMaXN0LFNWR051bWJlckxpc3QsJyArXG4gICdTVkdQYXRoU2VnTGlzdCxTVkdQb2ludExpc3QsU1ZHU3RyaW5nTGlzdCxTVkdUcmFuc2Zvcm1MaXN0LFNvdXJjZUJ1ZmZlckxpc3QsU3R5bGVTaGVldExpc3QsVGV4dFRyYWNrQ3VlTGlzdCwnICtcbiAgJ1RleHRUcmFja0xpc3QsVG91Y2hMaXN0Jykuc3BsaXQoJywnKTtcblxuZm9yICh2YXIgaSA9IDA7IGkgPCBET01JdGVyYWJsZXMubGVuZ3RoOyBpKyspIHtcbiAgdmFyIE5BTUUgPSBET01JdGVyYWJsZXNbaV07XG4gIHZhciBDb2xsZWN0aW9uID0gZ2xvYmFsW05BTUVdO1xuICB2YXIgcHJvdG8gPSBDb2xsZWN0aW9uICYmIENvbGxlY3Rpb24ucHJvdG90eXBlO1xuICBpZiAocHJvdG8gJiYgIXByb3RvW1RPX1NUUklOR19UQUddKSBoaWRlKHByb3RvLCBUT19TVFJJTkdfVEFHLCBOQU1FKTtcbiAgSXRlcmF0b3JzW05BTUVdID0gSXRlcmF0b3JzLkFycmF5O1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qc1xuLy8gbW9kdWxlIGlkID0gMTkwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///190\n")},function(module,exports,__webpack_require__){eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(76);\nvar TAG = __webpack_require__(22)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jbGFzc29mLmpzPzQ1OGYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanNcbi8vIG1vZHVsZSBpZCA9IDE5MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///191\n")},function(module,exports,__webpack_require__){eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(41);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNhbGwuanM/OWFjNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIGVudHJpZXMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW50cmllcyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuICAvLyA3LjQuNiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCBjb21wbGV0aW9uKVxuICB9IGNhdGNoIChlKSB7XG4gICAgdmFyIHJldCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIGFuT2JqZWN0KHJldC5jYWxsKGl0ZXJhdG9yKSk7XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNhbGwuanNcbi8vIG1vZHVsZSBpZCA9IDE5MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///192\n")},function(module,exports,__webpack_require__){eval("// check on default Array iterator\nvar Iterators = __webpack_require__(75);\nvar ITERATOR = __webpack_require__(22)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1hcnJheS1pdGVyLmpzPzMyMWMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b1tJVEVSQVRPUl0gPT09IGl0KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qc1xuLy8gbW9kdWxlIGlkID0gMTkzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///193\n")},function(module,exports,__webpack_require__){eval("var classof = __webpack_require__(191);\nvar ITERATOR = __webpack_require__(22)('iterator');\nvar Iterators = __webpack_require__(75);\nmodule.exports = __webpack_require__(10).getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcz9kZGZiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5nZXRJdGVyYXRvck1ldGhvZCA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgIT0gdW5kZWZpbmVkKSByZXR1cm4gaXRbSVRFUkFUT1JdXG4gICAgfHwgaXRbJ0BAaXRlcmF0b3InXVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzXG4vLyBtb2R1bGUgaWQgPSAxOTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///194\n")},function(module,exports,__webpack_require__){eval("// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(41);\nvar aFunction = __webpack_require__(95);\nvar SPECIES = __webpack_require__(22)('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zcGVjaWVzLWNvbnN0cnVjdG9yLmpzP2I3Y2MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4zLjIwIFNwZWNpZXNDb25zdHJ1Y3RvcihPLCBkZWZhdWx0Q29uc3RydWN0b3IpXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBEKSB7XG4gIHZhciBDID0gYW5PYmplY3QoTykuY29uc3RydWN0b3I7XG4gIHZhciBTO1xuICByZXR1cm4gQyA9PT0gdW5kZWZpbmVkIHx8IChTID0gYW5PYmplY3QoQylbU1BFQ0lFU10pID09IHVuZGVmaW5lZCA/IEQgOiBhRnVuY3Rpb24oUyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDE5NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///195\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(65);\nvar invoke = __webpack_require__(429);\nvar html = __webpack_require__(188);\nvar cel = __webpack_require__(131);\nvar global = __webpack_require__(17);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(76)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190YXNrLmpzPzJmOGQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGludm9rZSA9IHJlcXVpcmUoJy4vX2ludm9rZScpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuL19odG1sJyk7XG52YXIgY2VsID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBzZXRUYXNrID0gZ2xvYmFsLnNldEltbWVkaWF0ZTtcbnZhciBjbGVhclRhc2sgPSBnbG9iYWwuY2xlYXJJbW1lZGlhdGU7XG52YXIgTWVzc2FnZUNoYW5uZWwgPSBnbG9iYWwuTWVzc2FnZUNoYW5uZWw7XG52YXIgRGlzcGF0Y2ggPSBnbG9iYWwuRGlzcGF0Y2g7XG52YXIgY291bnRlciA9IDA7XG52YXIgcXVldWUgPSB7fTtcbnZhciBPTlJFQURZU1RBVEVDSEFOR0UgPSAnb25yZWFkeXN0YXRlY2hhbmdlJztcbnZhciBkZWZlciwgY2hhbm5lbCwgcG9ydDtcbnZhciBydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpZCA9ICt0aGlzO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gIGlmIChxdWV1ZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICB2YXIgZm4gPSBxdWV1ZVtpZF07XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgICBmbigpO1xuICB9XG59O1xudmFyIGxpc3RlbmVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gIHJ1bi5jYWxsKGV2ZW50LmRhdGEpO1xufTtcbi8vIE5vZGUuanMgMC45KyAmIElFMTArIGhhcyBzZXRJbW1lZGlhdGUsIG90aGVyd2lzZTpcbmlmICghc2V0VGFzayB8fCAhY2xlYXJUYXNrKSB7XG4gIHNldFRhc2sgPSBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoZm4pIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIHZhciBpID0gMTtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgcXVldWVbKytjb3VudGVyXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgICAgaW52b2tlKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nID8gZm4gOiBGdW5jdGlvbihmbiksIGFyZ3MpO1xuICAgIH07XG4gICAgZGVmZXIoY291bnRlcik7XG4gICAgcmV0dXJuIGNvdW50ZXI7XG4gIH07XG4gIGNsZWFyVGFzayA9IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGlkKSB7XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgfTtcbiAgLy8gTm9kZS5qcyAwLjgtXG4gIGlmIChyZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2VzcycpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIFNwaGVyZSAoSlMgZ2FtZSBlbmdpbmUpIERpc3BhdGNoIEFQSVxuICB9IGVsc2UgaWYgKERpc3BhdGNoICYmIERpc3BhdGNoLm5vdykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBEaXNwYXRjaC5ub3coY3R4KHJ1biwgaWQsIDEpKTtcbiAgICB9O1xuICAvLyBCcm93c2VycyB3aXRoIE1lc3NhZ2VDaGFubmVsLCBpbmNsdWRlcyBXZWJXb3JrZXJzXG4gIH0gZWxzZSBpZiAoTWVzc2FnZUNoYW5uZWwpIHtcbiAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgcG9ydCA9IGNoYW5uZWwucG9ydDI7XG4gICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBsaXN0ZW5lcjtcbiAgICBkZWZlciA9IGN0eChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0LCAxKTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBwb3N0TWVzc2FnZSwgc2tpcCBXZWJXb3JrZXJzXG4gIC8vIElFOCBoYXMgcG9zdE1lc3NhZ2UsIGJ1dCBpdCdzIHN5bmMgJiB0eXBlb2YgaXRzIHBvc3RNZXNzYWdlIGlzICdvYmplY3QnXG4gIH0gZWxzZSBpZiAoZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiYgdHlwZW9mIHBvc3RNZXNzYWdlID09ICdmdW5jdGlvbicgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHRzKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShpZCArICcnLCAnKicpO1xuICAgIH07XG4gICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0ZW5lciwgZmFsc2UpO1xuICAvLyBJRTgtXG4gIH0gZWxzZSBpZiAoT05SRUFEWVNUQVRFQ0hBTkdFIGluIGNlbCgnc2NyaXB0JykpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgaHRtbC5hcHBlbmRDaGlsZChjZWwoJ3NjcmlwdCcpKVtPTlJFQURZU1RBVEVDSEFOR0VdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICBydW4uY2FsbChpZCk7XG4gICAgICB9O1xuICAgIH07XG4gIC8vIFJlc3Qgb2xkIGJyb3dzZXJzXG4gIH0gZWxzZSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHNldFRpbWVvdXQoY3R4KHJ1biwgaWQsIDEpLCAwKTtcbiAgICB9O1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXRUYXNrLFxuICBjbGVhcjogY2xlYXJUYXNrXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanNcbi8vIG1vZHVsZSBpZCA9IDE5NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///196\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wZXJmb3JtLmpzPzc0ZDAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiB7IGU6IGZhbHNlLCB2OiBleGVjKCkgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB7IGU6IHRydWUsIHY6IGUgfTtcbiAgfVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wZXJmb3JtLmpzXG4vLyBtb2R1bGUgaWQgPSAxOTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///197\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(41);\nvar isObject = __webpack_require__(36);\nvar newPromiseCapability = __webpack_require__(138);\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9taXNlLXJlc29sdmUuanM/N2M5NSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDLCB4KSB7XG4gIGFuT2JqZWN0KEMpO1xuICBpZiAoaXNPYmplY3QoeCkgJiYgeC5jb25zdHJ1Y3RvciA9PT0gQykgcmV0dXJuIHg7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYoQyk7XG4gIHZhciByZXNvbHZlID0gcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgcmVzb2x2ZSh4KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTk4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///198\n")},function(module,exports,__webpack_require__){eval("var ITERATOR = __webpack_require__(22)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qcz83NThkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uICgpIHsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBza2lwQ2xvc2luZykge1xuICBpZiAoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNhZmUgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gWzddO1xuICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpO1xuICAgIGl0ZXIubmV4dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgZG9uZTogc2FmZSA9IHRydWUgfTsgfTtcbiAgICBhcnJbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcjsgfTtcbiAgICBleGVjKGFycik7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZXRlY3QuanNcbi8vIG1vZHVsZSBpZCA9IDE5OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///199\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(439), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzPzBiODMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eS5qc1xuLy8gbW9kdWxlIGlkID0gMjAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///200\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.log = undefined;\n\nvar _loglevel = __webpack_require__(7);\n\nvar _loglevel2 = _interopRequireDefault(_loglevel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar a = _loglevel2.default.getLogger('address-allocation');\nvar b = _loglevel2.default.getLogger('Bus');\nvar c = _loglevel2.default.getLogger('MessageBus');\nvar d = _loglevel2.default.getLogger('CoreDiscovery');\nvar e = _loglevel2.default.getLogger('GraphConnector');\nvar f = _loglevel2.default.getLogger('HypertyResourcesStorage');\nvar g = _loglevel2.default.getLogger('IdentityModule');\nvar h = _loglevel2.default.getLogger('PEP');\nvar i = _loglevel2.default.getLogger('P2PConnectionResolve');\nvar j = _loglevel2.default.getLogger('Registry');\nvar k = _loglevel2.default.getLogger('RuntimeUA');\nvar l = _loglevel2.default.getLogger('Loader');\nvar m = _loglevel2.default.getLogger('Descriptors');\nvar n = _loglevel2.default.getLogger('DataObjectsStorage');\nvar o = _loglevel2.default.getLogger('Subscription');\nvar p = _loglevel2.default.getLogger('SubscriptionManager');\nvar q = _loglevel2.default.getLogger('ObserverObject');\nvar r = _loglevel2.default.getLogger('ReporterObject');\nvar s = _loglevel2.default.getLogger('SynSubscription');\nvar t = _loglevel2.default.getLogger('SyncherManager');\nvar u = _loglevel2.default.getLogger('IdentityManager');\nvar v = _loglevel2.default.getLogger('CryptoManager');\nvar x = _loglevel2.default.getLogger('Pipeline');\n\nexports.log = _loglevel2.default;\n\n/**\n 0 actual logging methods, ordered and available as:\n\n 0 - log.trace(msg)\n 1 - log.debug(msg)\n 2 - log.info(msg)\n 3 - log.warn(msg)\n 4 - log.error(msg)\n\n log.log(msg) is also available, as an alias for log.debug(msg), to improve compatibility with console, and make migration easier.\n\n Exact output formatting of these will depend on the console available in the current context of your application. For example, many environments will include a full stack trace with all trace() calls, and icons or similar to highlight other calls.\n\n These methods should never fail in any environment, even if no console object is currently available, and should always fall back to an available log method even if the specific method called (e.g. warn) isn't available.\n\n Be aware that all this means that these method won't necessarily always produce exactly the output you expect in every environment; loglevel only guarantees that these methods will never explode on you, and that it will call the most relevant method it can find, with your argument. Firefox is a notable example here: due to a current Firefox bug log.trace(msg) calls in Firefox will print only the stacktrace, and won't include any passed message arguments.\n\n*/\n\n// address-allocation\n\na.setLevel(3);\n\n// Bus\nb.setLevel(3);\n\n// MessageBus\nc.setLevel(0);\n\n// CoreDiscovery\nd.setLevel(5);\n\n// GraphConnector\ne.setLevel(5);\n\n// HypertyResourcesStorage\nf.setLevel(3);\n\n// IdentityModule\ng.setLevel(0);\n\n// PEP\nh.setLevel(3);\n\n// P2PConnectionResolve\ni.setLevel(3);\n\n// Registry\nj.setLevel(3);\n\n// RuntimeUA\nk.setLevel(3);\n\n// Loader\nl.setLevel(3);\n\n// Descriptors\nm.setLevel(3);\n\n// DataObjectsStorage\nn.setLevel(3);\n\n// Subscription\no.setLevel(3);\n\n// SubscriptionManager\np.setLevel(3);\n\n// ObserverObject\nq.setLevel(3);\n\n// ReporterObject\nr.setLevel(3);\n\n// SynSubscription\ns.setLevel(3);\n\n// SyncherManager\nt.setLevel(3);\n\n// IdentityManager\nu.setLevel(3);\n\n// CryptoManager\nv.setLevel(3);\n\n// Pipeline\nx.setLevel(3);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9sb2dMZXZlbHMuanM/ZjM5MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJ2xvZ2xldmVsJztcblxuY29uc3QgYSA9IGxvZy5nZXRMb2dnZXIoJ2FkZHJlc3MtYWxsb2NhdGlvbicpO1xuY29uc3QgYiA9IGxvZy5nZXRMb2dnZXIoJ0J1cycpO1xuY29uc3QgYyA9IGxvZy5nZXRMb2dnZXIoJ01lc3NhZ2VCdXMnKTtcbmNvbnN0IGQgPSBsb2cuZ2V0TG9nZ2VyKCdDb3JlRGlzY292ZXJ5Jyk7XG5jb25zdCBlID0gbG9nLmdldExvZ2dlcignR3JhcGhDb25uZWN0b3InKTtcbmNvbnN0IGYgPSBsb2cuZ2V0TG9nZ2VyKCdIeXBlcnR5UmVzb3VyY2VzU3RvcmFnZScpO1xuY29uc3QgZyA9IGxvZy5nZXRMb2dnZXIoJ0lkZW50aXR5TW9kdWxlJyk7XG5jb25zdCBoID0gbG9nLmdldExvZ2dlcignUEVQJyk7XG5jb25zdCBpID0gbG9nLmdldExvZ2dlcignUDJQQ29ubmVjdGlvblJlc29sdmUnKTtcbmNvbnN0IGogPSBsb2cuZ2V0TG9nZ2VyKCdSZWdpc3RyeScpO1xuY29uc3QgayA9IGxvZy5nZXRMb2dnZXIoJ1J1bnRpbWVVQScpO1xuY29uc3QgbCA9IGxvZy5nZXRMb2dnZXIoJ0xvYWRlcicpO1xuY29uc3QgbSA9IGxvZy5nZXRMb2dnZXIoJ0Rlc2NyaXB0b3JzJyk7XG5jb25zdCBuID0gbG9nLmdldExvZ2dlcignRGF0YU9iamVjdHNTdG9yYWdlJyk7XG5jb25zdCBvID0gbG9nLmdldExvZ2dlcignU3Vic2NyaXB0aW9uJyk7XG5jb25zdCBwID0gbG9nLmdldExvZ2dlcignU3Vic2NyaXB0aW9uTWFuYWdlcicpO1xuY29uc3QgcSA9IGxvZy5nZXRMb2dnZXIoJ09ic2VydmVyT2JqZWN0Jyk7XG5jb25zdCByID0gbG9nLmdldExvZ2dlcignUmVwb3J0ZXJPYmplY3QnKTtcbmNvbnN0IHMgPSBsb2cuZ2V0TG9nZ2VyKCdTeW5TdWJzY3JpcHRpb24nKTtcbmNvbnN0IHQgPSBsb2cuZ2V0TG9nZ2VyKCdTeW5jaGVyTWFuYWdlcicpO1xuY29uc3QgdSA9IGxvZy5nZXRMb2dnZXIoJ0lkZW50aXR5TWFuYWdlcicpO1xuY29uc3QgdiA9IGxvZy5nZXRMb2dnZXIoJ0NyeXB0b01hbmFnZXInKTtcbmNvbnN0IHggPSBsb2cuZ2V0TG9nZ2VyKCdQaXBlbGluZScpO1xuXG5cbmV4cG9ydCB7IGxvZyB9O1xuXG4vKipcbiAgMCBhY3R1YWwgbG9nZ2luZyBtZXRob2RzLCBvcmRlcmVkIGFuZCBhdmFpbGFibGUgYXM6XG5cbiAgICAgIDAgLSBsb2cudHJhY2UobXNnKVxuICAgICAgMSAtIGxvZy5kZWJ1Zyhtc2cpXG4gICAgICAyIC0gbG9nLmluZm8obXNnKVxuICAgICAgMyAtIGxvZy53YXJuKG1zZylcbiAgICAgIDQgLSBsb2cuZXJyb3IobXNnKVxuXG4gIGxvZy5sb2cobXNnKSBpcyBhbHNvIGF2YWlsYWJsZSwgYXMgYW4gYWxpYXMgZm9yIGxvZy5kZWJ1Zyhtc2cpLCB0byBpbXByb3ZlIGNvbXBhdGliaWxpdHkgd2l0aCBjb25zb2xlLCBhbmQgbWFrZSBtaWdyYXRpb24gZWFzaWVyLlxuXG4gIEV4YWN0IG91dHB1dCBmb3JtYXR0aW5nIG9mIHRoZXNlIHdpbGwgZGVwZW5kIG9uIHRoZSBjb25zb2xlIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBjb250ZXh0IG9mIHlvdXIgYXBwbGljYXRpb24uIEZvciBleGFtcGxlLCBtYW55IGVudmlyb25tZW50cyB3aWxsIGluY2x1ZGUgYSBmdWxsIHN0YWNrIHRyYWNlIHdpdGggYWxsIHRyYWNlKCkgY2FsbHMsIGFuZCBpY29ucyBvciBzaW1pbGFyIHRvIGhpZ2hsaWdodCBvdGhlciBjYWxscy5cblxuICBUaGVzZSBtZXRob2RzIHNob3VsZCBuZXZlciBmYWlsIGluIGFueSBlbnZpcm9ubWVudCwgZXZlbiBpZiBubyBjb25zb2xlIG9iamVjdCBpcyBjdXJyZW50bHkgYXZhaWxhYmxlLCBhbmQgc2hvdWxkIGFsd2F5cyBmYWxsIGJhY2sgdG8gYW4gYXZhaWxhYmxlIGxvZyBtZXRob2QgZXZlbiBpZiB0aGUgc3BlY2lmaWMgbWV0aG9kIGNhbGxlZCAoZS5nLiB3YXJuKSBpc24ndCBhdmFpbGFibGUuXG5cbiAgQmUgYXdhcmUgdGhhdCBhbGwgdGhpcyBtZWFucyB0aGF0IHRoZXNlIG1ldGhvZCB3b24ndCBuZWNlc3NhcmlseSBhbHdheXMgcHJvZHVjZSBleGFjdGx5IHRoZSBvdXRwdXQgeW91IGV4cGVjdCBpbiBldmVyeSBlbnZpcm9ubWVudDsgbG9nbGV2ZWwgb25seSBndWFyYW50ZWVzIHRoYXQgdGhlc2UgbWV0aG9kcyB3aWxsIG5ldmVyIGV4cGxvZGUgb24geW91LCBhbmQgdGhhdCBpdCB3aWxsIGNhbGwgdGhlIG1vc3QgcmVsZXZhbnQgbWV0aG9kIGl0IGNhbiBmaW5kLCB3aXRoIHlvdXIgYXJndW1lbnQuIEZpcmVmb3ggaXMgYSBub3RhYmxlIGV4YW1wbGUgaGVyZTogZHVlIHRvIGEgY3VycmVudCBGaXJlZm94IGJ1ZyBsb2cudHJhY2UobXNnKSBjYWxscyBpbiBGaXJlZm94IHdpbGwgcHJpbnQgb25seSB0aGUgc3RhY2t0cmFjZSwgYW5kIHdvbid0IGluY2x1ZGUgYW55IHBhc3NlZCBtZXNzYWdlIGFyZ3VtZW50cy5cblxuKi9cblxuXG4vLyBhZGRyZXNzLWFsbG9jYXRpb25cbmEuc2V0TGV2ZWwoMyk7XG5cbi8vIEJ1c1xuYi5zZXRMZXZlbCgzKTtcblxuLy8gTWVzc2FnZUJ1c1xuYy5zZXRMZXZlbCgwKTtcblxuLy8gQ29yZURpc2NvdmVyeVxuZC5zZXRMZXZlbCg1KTtcblxuLy8gR3JhcGhDb25uZWN0b3JcbmUuc2V0TGV2ZWwoNSk7XG5cbi8vIEh5cGVydHlSZXNvdXJjZXNTdG9yYWdlXG5mLnNldExldmVsKDMpO1xuXG4vLyBJZGVudGl0eU1vZHVsZVxuZy5zZXRMZXZlbCgwKTtcblxuLy8gUEVQXG5oLnNldExldmVsKDMpO1xuXG4vLyBQMlBDb25uZWN0aW9uUmVzb2x2ZVxuaS5zZXRMZXZlbCgzKTtcblxuLy8gUmVnaXN0cnlcbmouc2V0TGV2ZWwoMyk7XG5cbi8vIFJ1bnRpbWVVQVxuay5zZXRMZXZlbCgzKTtcblxuLy8gTG9hZGVyXG5sLnNldExldmVsKDMpO1xuXG4vLyBEZXNjcmlwdG9yc1xubS5zZXRMZXZlbCgzKTtcblxuLy8gRGF0YU9iamVjdHNTdG9yYWdlXG5uLnNldExldmVsKDMpO1xuXG4vLyBTdWJzY3JpcHRpb25cbm8uc2V0TGV2ZWwoMyk7XG5cbi8vIFN1YnNjcmlwdGlvbk1hbmFnZXJcbnAuc2V0TGV2ZWwoMyk7XG5cbi8vIE9ic2VydmVyT2JqZWN0XG5xLnNldExldmVsKDMpO1xuXG4vLyBSZXBvcnRlck9iamVjdFxuci5zZXRMZXZlbCgzKTtcblxuLy8gU3luU3Vic2NyaXB0aW9uXG5zLnNldExldmVsKDMpO1xuXG4vLyBTeW5jaGVyTWFuYWdlclxudC5zZXRMZXZlbCgzKTtcblxuLy8gSWRlbnRpdHlNYW5hZ2VyXG51LnNldExldmVsKDMpO1xuXG4vLyBDcnlwdG9NYW5hZ2VyXG52LnNldExldmVsKDMpO1xuXG4vLyBQaXBlbGluZVxueC5zZXRMZXZlbCgzKTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvbG9nTGV2ZWxzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///201\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(186);\nvar hiddenKeys = __webpack_require__(137).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi5qcz85ZjQ0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi43IC8gMTUuMi4zLjQgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKS5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcG4uanNcbi8vIG1vZHVsZSBpZCA9IDIwMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///202\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(462), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzPzNhZjQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGVcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2NyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///203\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('Bus');\n\n/**\n* @author micaelpedrosa@gmail.com\n* Minimal interface and implementation to send and receive messages. It can be reused in many type of components.\n* Components that need a message system should receive this class as a dependency or extend it.\n* Extensions should implement the following private methods: _onPostMessage and _registerExternalListener\n*/\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n\n// Log system\n\nvar Bus = function () {\n /* private\n _msgId: number;\n _subscriptions: \n _responseTimeOut: number\n _responseCallbacks: void>\n */\n\n function Bus() {\n (0, _classCallCheck3.default)(this, Bus);\n\n var _this = this;\n _this._msgId = 0;\n _this._subscriptions = {};\n\n _this._responseTimeOut = 15000; //default to 3s\n _this._responseCallbacks = {};\n\n _this._registerExternalListener();\n }\n\n /**\n * Register listener to receive message when \"msg.to === url\".\n * Special url \"*\" for default listener is accepted to intercept all messages.\n * @param {URL} url Address to intercept, tha is in the message \"to\"\n * @param {Listener} listener listener\n * @return {MsgListener} instance of MsgListener\n */\n\n\n (0, _createClass3.default)(Bus, [{\n key: 'addListener',\n value: function addListener(url, listener) {\n var _this = this;\n\n var item = new MsgListener(_this._subscriptions, url, listener);\n var itemList = _this._subscriptions[url];\n if (!itemList) {\n itemList = [];\n _this._subscriptions[url] = itemList;\n }\n\n itemList.push(item);\n return item;\n }\n\n /**\n * Manually add a response listener. Only one listener per message ID should exist.\n * ATENTION, there is no timeout for this listener.\n * The listener should be removed with a removeResponseListener, failing to do this will result in a unreleased memory problem.\n * @param {URL} url Origin address of the message sent, \"msg.from\".\n * @param {number} msgId Message ID that is returned from the postMessage.\n * @param {Function} responseListener Callback function for the response\n */\n\n }, {\n key: 'addResponseListener',\n value: function addResponseListener(url, msgId, responseListener) {\n this._responseCallbacks[url + msgId] = responseListener;\n }\n\n /**\n * Remove the response listener.\n * @param {URL} url Origin address of the message sent, \"msg.from\".\n * @param {number} msgId Message ID that is returned from the postMessage\n */\n\n }, {\n key: 'removeResponseListener',\n value: function removeResponseListener(url, msgId) {\n delete this._responseCallbacks[url + msgId];\n }\n\n /**\n * Remove all existent listeners for the URL\n * @param {URL} url Address registered\n */\n\n }, {\n key: 'removeAllListenersOf',\n value: function removeAllListenersOf(url) {\n delete this._subscriptions[url];\n }\n\n /**\n * Helper method to bind listeners (in both directions) into other MiniBus target.\n * @param {URL} outUrl Outbound URL, register listener for url in direction \"this -> target\"\n * @param {URL} inUrl Inbound URL, register listener for url in direction \"target -> this\"\n * @param {MiniBus} target The other target MiniBus\n * @return {Bound} an object that contains the properties [thisListener, targetListener] and the unbind method.\n */\n\n }, {\n key: 'bind',\n value: function bind(outUrl, inUrl, target) {\n var _this2 = this;\n\n var _this = this;\n\n var thisListn = _this.addListener(outUrl, function (msg) {\n target.postMessage(msg);\n });\n\n var targetListn = target.addListener(inUrl, function (msg) {\n _this.postMessage(msg);\n });\n\n return {\n thisListener: thisListn,\n targetListener: targetListn,\n unbind: function unbind() {\n _this2.thisListener.remove();\n _this2.targetListener.remove();\n }\n };\n }\n\n //publish on default listeners\n\n }, {\n key: '_publishOnDefault',\n value: function _publishOnDefault(msg) {\n //is there any \"*\" (default) listeners?\n var itemList = this._subscriptions['*'];\n if (itemList) {\n this._publishOn(itemList, msg);\n }\n }\n\n //publish on a subscription list.\n\n }, {\n key: '_publishOn',\n value: function _publishOn(itemList, msg) {\n itemList.forEach(function (sub) {\n sub._callback(msg);\n });\n }\n }, {\n key: '_responseCallback',\n value: function _responseCallback(inMsg, responseCallback) {\n var timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n var _this = this;\n\n //automatic management of response handlers\n if (responseCallback) {\n var responseId = inMsg.from + inMsg.id;\n _this._responseCallbacks[responseId] = responseCallback;\n\n if (timeout) {\n setTimeout(function () {\n var responseFun = _this._responseCallbacks[responseId];\n delete _this._responseCallbacks[responseId];\n\n if (responseFun) {\n var errorMsg = {\n id: inMsg.id, type: 'response',\n body: { code: 408, desc: 'Response timeout!', value: inMsg }\n };\n\n responseFun(errorMsg);\n }\n }, _this._responseTimeOut);\n }\n }\n }\n\n //TODO: provisional responses should reset timeout\n\n }, {\n key: '_onResponse',\n value: function _onResponse(msg) {\n var _this = this;\n\n if (msg.type === 'response') {\n var responseId = msg.to + msg.id;\n var responseFun = _this._responseCallbacks[responseId];\n\n if (msg.body.code >= 200) {\n //if it's a provisional response, don't delete response listener\n delete _this._responseCallbacks[responseId];\n }\n\n if (responseFun) {\n responseFun(msg);\n return true;\n }\n }\n\n return false;\n }\n\n //receive messages from external interface\n\n }, {\n key: '_onMessage',\n value: function _onMessage(msg) {\n var _this = this;\n\n if (!_this._onResponse(msg)) {\n var itemList = _this._subscriptions[msg.to];\n if (itemList) {\n _this._publishOn(itemList, msg);\n } else {\n _this._publishOnDefault(msg);\n }\n }\n }\n }, {\n key: '_genId',\n value: function _genId(inMsg) {\n //TODO: how do we manage message ID's? Should it be a global runtime counter, or per URL address?\n //Global counter will not work, because there will be multiple MiniBus instances!\n //Per URL, can be a lot of data to maintain!\n //Maybe a counter per MiniBus instance. This is the assumed solution for now.\n if (!inMsg.id || inMsg.id === 0) {\n this._msgId++;\n inMsg.id = this._msgId;\n }\n }\n\n /**\n * Send messages to local listeners, or if not exists to external listeners.\n * It's has an optional mechanism for automatic management of response handlers.\n * The response handler will be unregistered after receiving the response, or after response timeout (default to 3s).\n * @param {Message} msg Message to send. Message ID is automatically added to the message.\n * @param {Function} responseCallback Optional parameter, if the developer what's automatic response management.\n * @return {number} Returns the message ID, in case it should be needed for manual management of the response handler.\n */\n\n }, {\n key: 'postMessage',\n value: function postMessage(inMsg, responseCallback) {}\n\n /**\n * Function to post messages with a number of retries in case timeouts occur.\n * @param {Message} msg Message to send. Message ID is automatically added to the message.\n * @param {Function} responseCallback Optional parameter, if the developer what's automatic response management.\n * @param {integer} retries number of retries when timeouts occur\n * @return {boolean} message delivery result;\n */\n\n }, {\n key: 'postMessageWithRetries',\n value: function postMessageWithRetries(msg, retries, callback) {\n\n var _this = this;\n\n var retry = 0;\n //let timeout = true;\n\n var sendMsg = function sendMsg() {\n\n return new _promise2.default(function (resolve, reject) {\n _this.postMessage(msg, function (reply) {\n if (reply.body.code === 408 || reply.body.code === 500) reject();else {\n log.info('[Bus.postMessageWithRetries] msg delivered: ', msg);\n callback(reply);\n resolve();\n }\n });\n });\n };\n\n var tryAgain = function tryAgain() {\n sendMsg().then(function () {\n //timeout = false;\n return;\n }, function () {\n log.warn('[Bus.postMessageWithRetries] Message Bounced (retry ' + retry + '): \\'', msg);\n if (retry++ < retries) {\n tryAgain();\n // setTimeout(() => { tryAgain(); }, 1000);\n } else {\n var error = '[Error] Message Bounced (delivery attempts ' + retries + '): \\'';\n throw new Error(error + msg);\n }\n });\n };\n tryAgain();\n }\n\n /**\n * Not public available, used by the class extension implementation, to process messages from the public \"postMessage\" without a registered listener.\n * Used to send the message to an external interface, like a WebWorker, IFrame, etc.\n * @param {Message.Message} msg Message\n */\n\n }, {\n key: '_onPostMessage',\n value: function _onPostMessage(msg) {} /*implementation will send message to external system*/\n\n /**\n * Not public available, used by the class extension implementation, to process all messages that enter the MiniBus from an external interface, like a WebWorker, IFrame, etc.\n * This method is called one time in the constructor to register external listeners.\n * The implementation will probably call the \"_onMessage\" method to publish in the local listeners.\n * DO NOT call \"postMessage\", there is a danger that the message enters in a cycle!\n */\n\n }, {\n key: '_registerExternalListener',\n value: function _registerExternalListener() {/*implementation will register external listener and call \"this._onMessage(msg)\" */}\n }]);\n return Bus;\n}();\n\nvar MsgListener = function () {\n /* private\n _subscriptions: ;\n _url: string;\n _callback: (msg) => void;\n */\n\n function MsgListener(subscriptions, url, callback) {\n (0, _classCallCheck3.default)(this, MsgListener);\n\n var _this = this;\n\n _this._subscriptions = subscriptions;\n _this._url = url;\n _this._callback = callback;\n }\n\n (0, _createClass3.default)(MsgListener, [{\n key: 'remove',\n\n\n /**\n * Remove this listener from the Bus\n */\n value: function remove() {\n var _this = this;\n\n var subs = _this._subscriptions[_this._url];\n if (subs) {\n var index = subs.indexOf(_this);\n subs.splice(index, 1);\n\n //if there are no listeners, remove the subscription entirely.\n if (subs.length === 0) {\n delete _this._subscriptions[_this._url];\n }\n }\n }\n }, {\n key: 'url',\n get: function get() {\n return this._url;\n }\n }]);\n return MsgListener;\n}();\n\nexports.default = Bus;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvQnVzLmpzPzZkMTciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXG4qXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4qXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4qXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbioqL1xuXG4vLyBMb2cgc3lzdGVtXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0J1cycpO1xuXG4vKipcbiogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxuKiBNaW5pbWFsIGludGVyZmFjZSBhbmQgaW1wbGVtZW50YXRpb24gdG8gc2VuZCBhbmQgcmVjZWl2ZSBtZXNzYWdlcy4gSXQgY2FuIGJlIHJldXNlZCBpbiBtYW55IHR5cGUgb2YgY29tcG9uZW50cy5cbiogQ29tcG9uZW50cyB0aGF0IG5lZWQgYSBtZXNzYWdlIHN5c3RlbSBzaG91bGQgcmVjZWl2ZSB0aGlzIGNsYXNzIGFzIGEgZGVwZW5kZW5jeSBvciBleHRlbmQgaXQuXG4qIEV4dGVuc2lvbnMgc2hvdWxkIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIHByaXZhdGUgbWV0aG9kczogX29uUG9zdE1lc3NhZ2UgYW5kIF9yZWdpc3RlckV4dGVybmFsTGlzdGVuZXJcbiovXG5jbGFzcyBCdXMge1xuICAvKiBwcml2YXRlXG4gIF9tc2dJZDogbnVtYmVyO1xuICBfc3Vic2NyaXB0aW9uczogPHVybDogTXNnTGlzdGVuZXJbXT5cblxuICBfcmVzcG9uc2VUaW1lT3V0OiBudW1iZXJcbiAgX3Jlc3BvbnNlQ2FsbGJhY2tzOiA8dXJsK2lkOiAobXNnKSA9PiB2b2lkPlxuXG4gICovXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBfdGhpcy5fbXNnSWQgPSAwO1xuICAgIF90aGlzLl9zdWJzY3JpcHRpb25zID0ge307XG5cbiAgICBfdGhpcy5fcmVzcG9uc2VUaW1lT3V0ID0gMTUwMDA7IC8vZGVmYXVsdCB0byAzc1xuICAgIF90aGlzLl9yZXNwb25zZUNhbGxiYWNrcyA9IHt9O1xuXG4gICAgX3RoaXMuX3JlZ2lzdGVyRXh0ZXJuYWxMaXN0ZW5lcigpO1xuICB9XG5cbiAgLyoqXG4gICogUmVnaXN0ZXIgbGlzdGVuZXIgdG8gcmVjZWl2ZSBtZXNzYWdlIHdoZW4gXCJtc2cudG8gPT09IHVybFwiLlxuICAqIFNwZWNpYWwgdXJsIFwiKlwiIGZvciBkZWZhdWx0IGxpc3RlbmVyIGlzIGFjY2VwdGVkIHRvIGludGVyY2VwdCBhbGwgbWVzc2FnZXMuXG4gICogQHBhcmFtIHtVUkx9IHVybCBBZGRyZXNzIHRvIGludGVyY2VwdCwgdGhhIGlzIGluIHRoZSBtZXNzYWdlIFwidG9cIlxuICAqIEBwYXJhbSB7TGlzdGVuZXJ9IGxpc3RlbmVyIGxpc3RlbmVyXG4gICogQHJldHVybiB7TXNnTGlzdGVuZXJ9IGluc3RhbmNlIG9mIE1zZ0xpc3RlbmVyXG4gICovXG4gIGFkZExpc3RlbmVyKHVybCwgbGlzdGVuZXIpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IGl0ZW0gPSBuZXcgTXNnTGlzdGVuZXIoX3RoaXMuX3N1YnNjcmlwdGlvbnMsIHVybCwgbGlzdGVuZXIpO1xuICAgIGxldCBpdGVtTGlzdCA9IF90aGlzLl9zdWJzY3JpcHRpb25zW3VybF07XG4gICAgaWYgKCFpdGVtTGlzdCkge1xuICAgICAgaXRlbUxpc3QgPSBbXTtcbiAgICAgIF90aGlzLl9zdWJzY3JpcHRpb25zW3VybF0gPSBpdGVtTGlzdDtcbiAgICB9XG5cbiAgICBpdGVtTGlzdC5wdXNoKGl0ZW0pO1xuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IGFkZCBhIHJlc3BvbnNlIGxpc3RlbmVyLiBPbmx5IG9uZSBsaXN0ZW5lciBwZXIgbWVzc2FnZSBJRCBzaG91bGQgZXhpc3QuXG4gICAqIEFURU5USU9OLCB0aGVyZSBpcyBubyB0aW1lb3V0IGZvciB0aGlzIGxpc3RlbmVyLlxuICAgKiBUaGUgbGlzdGVuZXIgc2hvdWxkIGJlIHJlbW92ZWQgd2l0aCBhIHJlbW92ZVJlc3BvbnNlTGlzdGVuZXIsIGZhaWxpbmcgdG8gZG8gdGhpcyB3aWxsIHJlc3VsdCBpbiBhIHVucmVsZWFzZWQgbWVtb3J5IHByb2JsZW0uXG4gICAqIEBwYXJhbSB7VVJMfSB1cmwgT3JpZ2luIGFkZHJlc3Mgb2YgdGhlIG1lc3NhZ2Ugc2VudCwgXCJtc2cuZnJvbVwiLlxuICAgKiBAcGFyYW0ge251bWJlcn0gbXNnSWQgTWVzc2FnZSBJRCB0aGF0IGlzIHJldHVybmVkIGZyb20gdGhlIHBvc3RNZXNzYWdlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNwb25zZUxpc3RlbmVyIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgcmVzcG9uc2VcbiAgICovXG4gIGFkZFJlc3BvbnNlTGlzdGVuZXIodXJsLCBtc2dJZCwgcmVzcG9uc2VMaXN0ZW5lcikge1xuICAgIHRoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3VybCArIG1zZ0lkXSA9IHJlc3BvbnNlTGlzdGVuZXI7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSByZXNwb25zZSBsaXN0ZW5lci5cbiAgICogQHBhcmFtIHtVUkx9IHVybCBPcmlnaW4gYWRkcmVzcyBvZiB0aGUgbWVzc2FnZSBzZW50LCBcIm1zZy5mcm9tXCIuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtc2dJZCAgTWVzc2FnZSBJRCB0aGF0IGlzIHJldHVybmVkIGZyb20gdGhlIHBvc3RNZXNzYWdlXG4gICAqL1xuICByZW1vdmVSZXNwb25zZUxpc3RlbmVyKHVybCwgbXNnSWQpIHtcbiAgICBkZWxldGUgdGhpcy5fcmVzcG9uc2VDYWxsYmFja3NbdXJsICsgbXNnSWRdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgZXhpc3RlbnQgbGlzdGVuZXJzIGZvciB0aGUgVVJMXG4gICAqIEBwYXJhbSAge1VSTH0gdXJsIEFkZHJlc3MgcmVnaXN0ZXJlZFxuICAgKi9cbiAgcmVtb3ZlQWxsTGlzdGVuZXJzT2YodXJsKSB7XG4gICAgZGVsZXRlIHRoaXMuX3N1YnNjcmlwdGlvbnNbdXJsXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGJpbmQgbGlzdGVuZXJzIChpbiBib3RoIGRpcmVjdGlvbnMpIGludG8gb3RoZXIgTWluaUJ1cyB0YXJnZXQuXG4gICAqIEBwYXJhbSAge1VSTH0gb3V0VXJsIE91dGJvdW5kIFVSTCwgcmVnaXN0ZXIgbGlzdGVuZXIgZm9yIHVybCBpbiBkaXJlY3Rpb24gXCJ0aGlzIC0+IHRhcmdldFwiXG4gICAqIEBwYXJhbSAge1VSTH0gaW5VcmwgSW5ib3VuZCBVUkwsIHJlZ2lzdGVyIGxpc3RlbmVyIGZvciB1cmwgaW4gZGlyZWN0aW9uIFwidGFyZ2V0IC0+IHRoaXNcIlxuICAgKiBAcGFyYW0gIHtNaW5pQnVzfSB0YXJnZXQgVGhlIG90aGVyIHRhcmdldCBNaW5pQnVzXG4gICAqIEByZXR1cm4ge0JvdW5kfSBhbiBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgcHJvcGVydGllcyBbdGhpc0xpc3RlbmVyLCB0YXJnZXRMaXN0ZW5lcl0gYW5kIHRoZSB1bmJpbmQgbWV0aG9kLlxuICAgKi9cbiAgYmluZChvdXRVcmwsIGluVXJsLCB0YXJnZXQpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IHRoaXNMaXN0biA9IF90aGlzLmFkZExpc3RlbmVyKG91dFVybCwgKG1zZykgPT4ge1xuICAgICAgdGFyZ2V0LnBvc3RNZXNzYWdlKG1zZyk7XG4gICAgfSk7XG5cbiAgICBsZXQgdGFyZ2V0TGlzdG4gPSB0YXJnZXQuYWRkTGlzdGVuZXIoaW5VcmwsIChtc2cpID0+IHtcbiAgICAgIF90aGlzLnBvc3RNZXNzYWdlKG1zZyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGhpc0xpc3RlbmVyOiB0aGlzTGlzdG4sXG4gICAgICB0YXJnZXRMaXN0ZW5lcjogdGFyZ2V0TGlzdG4sXG4gICAgICB1bmJpbmQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy50aGlzTGlzdGVuZXIucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMudGFyZ2V0TGlzdGVuZXIucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vcHVibGlzaCBvbiBkZWZhdWx0IGxpc3RlbmVyc1xuICBfcHVibGlzaE9uRGVmYXVsdChtc2cpIHtcbiAgICAvL2lzIHRoZXJlIGFueSBcIipcIiAoZGVmYXVsdCkgbGlzdGVuZXJzP1xuICAgIGxldCBpdGVtTGlzdCA9IHRoaXMuX3N1YnNjcmlwdGlvbnNbJyonXTtcbiAgICBpZiAoaXRlbUxpc3QpIHtcbiAgICAgIHRoaXMuX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKTtcbiAgICB9XG4gIH1cblxuICAvL3B1Ymxpc2ggb24gYSBzdWJzY3JpcHRpb24gbGlzdC5cbiAgX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKSB7XG4gICAgaXRlbUxpc3QuZm9yRWFjaCgoc3ViKSA9PiB7XG4gICAgICBzdWIuX2NhbGxiYWNrKG1zZyk7XG4gICAgfSk7XG4gIH1cblxuICBfcmVzcG9uc2VDYWxsYmFjayhpbk1zZywgcmVzcG9uc2VDYWxsYmFjaywgdGltZW91dCA9IHRydWUpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgLy9hdXRvbWF0aWMgbWFuYWdlbWVudCBvZiByZXNwb25zZSBoYW5kbGVyc1xuICAgIGlmIChyZXNwb25zZUNhbGxiYWNrKSB7XG4gICAgICBsZXQgcmVzcG9uc2VJZCA9IGluTXNnLmZyb20gKyBpbk1zZy5pZDtcbiAgICAgIF90aGlzLl9yZXNwb25zZUNhbGxiYWNrc1tyZXNwb25zZUlkXSA9IHJlc3BvbnNlQ2FsbGJhY2s7XG5cbiAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGxldCByZXNwb25zZUZ1biA9IF90aGlzLl9yZXNwb25zZUNhbGxiYWNrc1tyZXNwb25zZUlkXTtcbiAgICAgICAgICBkZWxldGUgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdO1xuXG4gICAgICAgICAgaWYgKHJlc3BvbnNlRnVuKSB7XG4gICAgICAgICAgICBsZXQgZXJyb3JNc2cgPSB7XG4gICAgICAgICAgICAgIGlkOiBpbk1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJyxcbiAgICAgICAgICAgICAgYm9keTogeyBjb2RlOiA0MDgsIGRlc2M6ICdSZXNwb25zZSB0aW1lb3V0IScsIHZhbHVlOiBpbk1zZyB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXNwb25zZUZ1bihlcnJvck1zZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfdGhpcy5fcmVzcG9uc2VUaW1lT3V0KTtcbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4vL1RPRE86IHByb3Zpc2lvbmFsIHJlc3BvbnNlcyBzaG91bGQgcmVzZXQgdGltZW91dFxuICBfb25SZXNwb25zZShtc2cpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKG1zZy50eXBlID09PSAncmVzcG9uc2UnKSB7XG4gICAgICBsZXQgcmVzcG9uc2VJZCA9IG1zZy50byArIG1zZy5pZDtcbiAgICAgIGxldCByZXNwb25zZUZ1biA9IF90aGlzLl9yZXNwb25zZUNhbGxiYWNrc1tyZXNwb25zZUlkXTtcblxuICAgICAgaWYgKG1zZy5ib2R5LmNvZGUgPj0gMjAwKSB7IC8vaWYgaXQncyBhIHByb3Zpc2lvbmFsIHJlc3BvbnNlLCBkb24ndCBkZWxldGUgcmVzcG9uc2UgbGlzdGVuZXJcbiAgICAgICAgZGVsZXRlIF90aGlzLl9yZXNwb25zZUNhbGxiYWNrc1tyZXNwb25zZUlkXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3BvbnNlRnVuKSB7XG4gICAgICAgIHJlc3BvbnNlRnVuKG1zZyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG5cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvL3JlY2VpdmUgbWVzc2FnZXMgZnJvbSBleHRlcm5hbCBpbnRlcmZhY2VcbiAgX29uTWVzc2FnZShtc2cpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKCFfdGhpcy5fb25SZXNwb25zZShtc2cpKSB7XG4gICAgICBsZXQgaXRlbUxpc3QgPSBfdGhpcy5fc3Vic2NyaXB0aW9uc1ttc2cudG9dO1xuICAgICAgaWYgKGl0ZW1MaXN0KSB7XG4gICAgICAgIF90aGlzLl9wdWJsaXNoT24oaXRlbUxpc3QsIG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5fcHVibGlzaE9uRGVmYXVsdChtc2cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9nZW5JZChpbk1zZykge1xuICAgIC8vVE9ETzogaG93IGRvIHdlIG1hbmFnZSBtZXNzYWdlIElEJ3M/IFNob3VsZCBpdCBiZSBhIGdsb2JhbCBydW50aW1lIGNvdW50ZXIsIG9yIHBlciBVUkwgYWRkcmVzcz9cbiAgICAvL0dsb2JhbCBjb3VudGVyIHdpbGwgbm90IHdvcmssIGJlY2F1c2UgdGhlcmUgd2lsbCBiZSBtdWx0aXBsZSBNaW5pQnVzIGluc3RhbmNlcyFcbiAgICAvL1BlciBVUkwsIGNhbiBiZSBhIGxvdCBvZiBkYXRhIHRvIG1haW50YWluIVxuICAgIC8vTWF5YmUgYSBjb3VudGVyIHBlciBNaW5pQnVzIGluc3RhbmNlLiBUaGlzIGlzIHRoZSBhc3N1bWVkIHNvbHV0aW9uIGZvciBub3cuXG4gICAgaWYgKCFpbk1zZy5pZCB8fCBpbk1zZy5pZCA9PT0gMCkge1xuICAgICAgdGhpcy5fbXNnSWQrKztcbiAgICAgIGluTXNnLmlkID0gdGhpcy5fbXNnSWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICogU2VuZCBtZXNzYWdlcyB0byBsb2NhbCBsaXN0ZW5lcnMsIG9yIGlmIG5vdCBleGlzdHMgdG8gZXh0ZXJuYWwgbGlzdGVuZXJzLlxuICAqIEl0J3MgaGFzIGFuIG9wdGlvbmFsIG1lY2hhbmlzbSBmb3IgYXV0b21hdGljIG1hbmFnZW1lbnQgb2YgcmVzcG9uc2UgaGFuZGxlcnMuXG4gICogVGhlIHJlc3BvbnNlIGhhbmRsZXIgd2lsbCBiZSB1bnJlZ2lzdGVyZWQgYWZ0ZXIgcmVjZWl2aW5nIHRoZSByZXNwb25zZSwgb3IgYWZ0ZXIgcmVzcG9uc2UgdGltZW91dCAoZGVmYXVsdCB0byAzcykuXG4gICogQHBhcmFtICB7TWVzc2FnZX0gbXNnIE1lc3NhZ2UgdG8gc2VuZC4gTWVzc2FnZSBJRCBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBtZXNzYWdlLlxuICAqIEBwYXJhbSAge0Z1bmN0aW9ufSByZXNwb25zZUNhbGxiYWNrIE9wdGlvbmFsIHBhcmFtZXRlciwgaWYgdGhlIGRldmVsb3BlciB3aGF0J3MgYXV0b21hdGljIHJlc3BvbnNlIG1hbmFnZW1lbnQuXG4gICogQHJldHVybiB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZXNzYWdlIElELCBpbiBjYXNlIGl0IHNob3VsZCBiZSBuZWVkZWQgZm9yIG1hbnVhbCBtYW5hZ2VtZW50IG9mIHRoZSByZXNwb25zZSBoYW5kbGVyLlxuICAqL1xuICBwb3N0TWVzc2FnZShpbk1zZywgcmVzcG9uc2VDYWxsYmFjaykgeyB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIHBvc3QgbWVzc2FnZXMgd2l0aCBhIG51bWJlciBvZiByZXRyaWVzIGluIGNhc2UgdGltZW91dHMgb2NjdXIuXG4gICAqIEBwYXJhbSAge01lc3NhZ2V9IG1zZyBNZXNzYWdlIHRvIHNlbmQuIE1lc3NhZ2UgSUQgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgbWVzc2FnZS5cbiAgICogQHBhcmFtICB7RnVuY3Rpb259IHJlc3BvbnNlQ2FsbGJhY2sgT3B0aW9uYWwgcGFyYW1ldGVyLCBpZiB0aGUgZGV2ZWxvcGVyIHdoYXQncyBhdXRvbWF0aWMgcmVzcG9uc2UgbWFuYWdlbWVudC5cbiAgICogQHBhcmFtICB7aW50ZWdlcn0gcmV0cmllcyBudW1iZXIgb2YgcmV0cmllcyB3aGVuIHRpbWVvdXRzIG9jY3VyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IG1lc3NhZ2UgZGVsaXZlcnkgcmVzdWx0O1xuICAgKi9cblxuXG4gIHBvc3RNZXNzYWdlV2l0aFJldHJpZXMobXNnLCByZXRyaWVzLCBjYWxsYmFjaykge1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGxldCByZXRyeSA9IDA7XG4gICAgLy9sZXQgdGltZW91dCA9IHRydWU7XG5cbiAgICBsZXQgc2VuZE1zZyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBfdGhpcy5wb3N0TWVzc2FnZShtc2csIChyZXBseSkgPT4ge1xuICAgICAgICAgIGlmIChyZXBseS5ib2R5LmNvZGUgPT09IDQwOCB8fCByZXBseS5ib2R5LmNvZGUgPT09IDUwMCkgcmVqZWN0KCk7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsb2cuaW5mbygnW0J1cy5wb3N0TWVzc2FnZVdpdGhSZXRyaWVzXSBtc2cgZGVsaXZlcmVkOiAnLCBtc2cpO1xuICAgICAgICAgICAgY2FsbGJhY2socmVwbHkpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgbGV0IHRyeUFnYWluID0gKCkgPT4ge1xuICAgICAgc2VuZE1zZygpLnRoZW4oKCk9PntcbiAgICAgICAgLy90aW1lb3V0ID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0sICgpPT57XG4gICAgICAgIGxvZy53YXJuKGBbQnVzLnBvc3RNZXNzYWdlV2l0aFJldHJpZXNdIE1lc3NhZ2UgQm91bmNlZCAocmV0cnkgJHtyZXRyeX0pOiAnYCwgbXNnKTtcbiAgICAgICAgaWYgKHJldHJ5KysgPCByZXRyaWVzKSB7XG4gICAgICAgICAgdHJ5QWdhaW4oKTtcbiAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHsgdHJ5QWdhaW4oKTsgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBgW0Vycm9yXSBNZXNzYWdlIEJvdW5jZWQgKGRlbGl2ZXJ5IGF0dGVtcHRzICR7cmV0cmllc30pOiAnYDtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IgKyBtc2cpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHRyeUFnYWluKCk7XG4gIH1cblxuICAvKipcbiAgICogTm90IHB1YmxpYyBhdmFpbGFibGUsIHVzZWQgYnkgdGhlIGNsYXNzIGV4dGVuc2lvbiBpbXBsZW1lbnRhdGlvbiwgdG8gcHJvY2VzcyBtZXNzYWdlcyBmcm9tIHRoZSBwdWJsaWMgXCJwb3N0TWVzc2FnZVwiIHdpdGhvdXQgYSByZWdpc3RlcmVkIGxpc3RlbmVyLlxuICAgKiBVc2VkIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG8gYW4gZXh0ZXJuYWwgaW50ZXJmYWNlLCBsaWtlIGEgV2ViV29ya2VyLCBJRnJhbWUsIGV0Yy5cbiAgICogQHBhcmFtICB7TWVzc2FnZS5NZXNzYWdlfSBtc2cgTWVzc2FnZVxuICAgKi9cbiAgX29uUG9zdE1lc3NhZ2UobXNnKSB7IC8qaW1wbGVtZW50YXRpb24gd2lsbCBzZW5kIG1lc3NhZ2UgdG8gZXh0ZXJuYWwgc3lzdGVtKi8gfVxuXG4gIC8qKlxuICAgKiBOb3QgcHVibGljIGF2YWlsYWJsZSwgdXNlZCBieSB0aGUgY2xhc3MgZXh0ZW5zaW9uIGltcGxlbWVudGF0aW9uLCB0byBwcm9jZXNzIGFsbCBtZXNzYWdlcyB0aGF0IGVudGVyIHRoZSBNaW5pQnVzIGZyb20gYW4gZXh0ZXJuYWwgaW50ZXJmYWNlLCBsaWtlIGEgV2ViV29ya2VyLCBJRnJhbWUsIGV0Yy5cbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uZSB0aW1lIGluIHRoZSBjb25zdHJ1Y3RvciB0byByZWdpc3RlciBleHRlcm5hbCBsaXN0ZW5lcnMuXG4gICAqIFRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIHByb2JhYmx5IGNhbGwgdGhlIFwiX29uTWVzc2FnZVwiIG1ldGhvZCB0byBwdWJsaXNoIGluIHRoZSBsb2NhbCBsaXN0ZW5lcnMuXG4gICAqIERPIE5PVCBjYWxsIFwicG9zdE1lc3NhZ2VcIiwgdGhlcmUgaXMgYSBkYW5nZXIgdGhhdCB0aGUgbWVzc2FnZSBlbnRlcnMgaW4gYSBjeWNsZSFcbiAgICovXG4gIF9yZWdpc3RlckV4dGVybmFsTGlzdGVuZXIoKSB7IC8qaW1wbGVtZW50YXRpb24gd2lsbCByZWdpc3RlciBleHRlcm5hbCBsaXN0ZW5lciBhbmQgY2FsbCBcInRoaXMuX29uTWVzc2FnZShtc2cpXCIgKi8gfVxuXG59XG5cbmNsYXNzIE1zZ0xpc3RlbmVyIHtcbiAgLyogcHJpdmF0ZVxuICBfc3Vic2NyaXB0aW9uczogPHN0cmluZzogTXNnTGlzdGVuZXJbXT47XG4gIF91cmw6IHN0cmluZztcbiAgX2NhbGxiYWNrOiAobXNnKSA9PiB2b2lkO1xuICAqL1xuXG4gIGNvbnN0cnVjdG9yKHN1YnNjcmlwdGlvbnMsIHVybCwgY2FsbGJhY2spIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMuX3N1YnNjcmlwdGlvbnMgPSBzdWJzY3JpcHRpb25zO1xuICAgIF90aGlzLl91cmwgPSB1cmw7XG4gICAgX3RoaXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7XG4gIH1cblxuICBnZXQgdXJsKCkgeyByZXR1cm4gdGhpcy5fdXJsOyB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGlzIGxpc3RlbmVyIGZyb20gdGhlIEJ1c1xuICAgKi9cbiAgcmVtb3ZlKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgc3VicyA9IF90aGlzLl9zdWJzY3JpcHRpb25zW190aGlzLl91cmxdO1xuICAgIGlmIChzdWJzKSB7XG4gICAgICBsZXQgaW5kZXggPSBzdWJzLmluZGV4T2YoX3RoaXMpO1xuICAgICAgc3Vicy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAvL2lmIHRoZXJlIGFyZSBubyBsaXN0ZW5lcnMsIHJlbW92ZSB0aGUgc3Vic2NyaXB0aW9uIGVudGlyZWx5LlxuICAgICAgaWYgKHN1YnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGRlbGV0ZSBfdGhpcy5fc3Vic2NyaXB0aW9uc1tfdGhpcy5fdXJsXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQnVzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9idXMvQnVzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkE7QUFDQTtBQURBO0FBQ0E7Ozs7O0FBQUE7QUFDQTtBQUNBOzs7Ozs7QUEzQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBO0FBQ0E7QUFTQTtBQUNBOzs7Ozs7O0FBU0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQU9BO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVFBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTs7Ozs7QUFJQTtBQUNBOzs7Ozs7QUFNQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFHQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBbEJBO0FBQUE7QUFBQTs7Ozs7QUFxQkE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///204\n")},function(module,exports,__webpack_require__){eval('// version: 0.8.0\n// date: Wed Apr 11 2018 09:46:41 GMT+0100 (WEST)\n// licence: \n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the "License");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an "AS IS" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n\n\n!function(t,c){ true?module.exports=c():"function"==typeof define&&define.amd?define("Utils",[],c):"object"==typeof exports?exports.Utils=c():(t[""]=t[""]||{},t[""].Utils=c())}("undefined"!=typeof self?self:this,function(){return function(t){var c={};function e(n){if(c[n])return c[n].exports;var l=c[n]={i:n,l:!1,exports:{}};return t[n].call(l.exports,l,l.exports,e),l.l=!0,l.exports}return e.m=t,e.c=c,e.d=function(t,c,n){e.o(t,c)||Object.defineProperty(t,c,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var c=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(c,"a",c),c},e.o=function(t,c){return Object.prototype.hasOwnProperty.call(t,c)},e.p="",e(e.s=198)}({0:function(module,exports){eval("var core = module.exports = { version: \'2.5.5\' };\\nif (typeof __e == \'number\') __e = core; // eslint-disable-line no-undef\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanM/MTVlMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2QkFBNkI7QUFDN0IsdUNBQXVDIiwiZmlsZSI6IjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi41LjUnIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0Il0sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///0\\n")},1:function(module,exports){eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\\nvar global = module.exports = typeof window != \'undefined\' && window.Math == Math\\n ? window : typeof self != \'undefined\' && self.Math == Math ? self\\n // eslint-disable-next-line no-new-func\\n : Function(\'return this\')();\\nif (typeof __g == \'number\') __g = global; // eslint-disable-line no-undef\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcz9lY2FiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMiLCJmaWxlIjoiMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0Il0sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///1\\n")},10:function(module,exports){eval("var hasOwnProperty = {}.hasOwnProperty;\\nmodule.exports = function (it, key) {\\n return hasOwnProperty.call(it, key);\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcz8wZjYyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0EiLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qc1xuLy8gbW9kdWxlIGlkID0gMTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0Il0sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///10\\n")},11:function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(8);\\nvar createDesc = __webpack_require__(15);\\nmodule.exports = __webpack_require__(4) ? function (object, key, value) {\\n return dP.f(object, key, createDesc(1, value));\\n} : function (object, key, value) {\\n object[key] = value;\\n return object;\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanM/ODQ5YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EiLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0Il0sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///11\\n")},122:function(module,exports){eval(\'// proxy-observe v0.0.18\\r\\n// Copyright (c) 2015, 2016 Simon Y. Blackwell, AnyWhichWay\\r\\n// MIT License - http://opensource.org/licenses/mit-license.php\\r\\n(function() {\\r\\n\\t"use strict";\\r\\n\\t// Creates and returns a Proxy wrapping a target so that all changes can be trapped and forwarded to\\r\\n\\t// a callback. The callback takes an array of changes just like the traditional original Chrome Object.observe\\r\\n\\t// {object:,name:,type:add|update|delete|reconfigure|preventExtensions|setPrototype,oldValue:}\\r\\n\\t// The acceptlist can be add|update|delete|reconfigure|preventExtensions|setPrototype.\\r\\n\\t// v 0.0.10 to support pausing and restarting observation two additional constructor arguments are available to Object.observe:\\r\\n\\t// pausable - create the Observer so it can be paused\\r\\n\\t// pause - create observer in paused state\\r\\n\\t// if pausable is true then an additional method deliver(ignorePrevious) is available to start delivery\\r\\n\\t// to pause delivery set a property called pause on the function deliver to true\\r\\n\\t// pausable is optional to reduce the chance of shadowing a property or method on any existing code called deliver\\r\\n\\tif(!Object.observe && typeof(Proxy)==="function") {\\r\\n\\t\\tfunction Observer(target,callback,acceptlist,pausable,pause,delay) {\\r\\n\\t \\tvar me = this, proxy;\\r\\n\\t \\tfunction deliver(ignorePrevious,delay) {\\r\\n\\t \\t\\tdeliver.delay = delay;\\r\\n\\t \\t\\tif(!deliver.pause) {\\r\\n\\t \\t\\tif(me.changeset.length>0) {\\r\\n\\t \\t\\t\\tif(!ignorePrevious) {\\r\\n\\t\\t \\t \\t\\tvar changes = me.changeset.filter(function(change) { return !acceptlist || acceptlist.indexOf(change.type)>=0; });\\r\\n\\t\\t \\t\\t\\tif(changes.length>0) {\\r\\n\\t\\t \\t\\t\\t\\tcallback(changes);\\r\\n\\t\\t \\t\\t\\t}\\r\\n\\t \\t\\t\\t}\\r\\n\\t \\t\\t\\tme.changeset = [];\\r\\n\\t \\t\\t}\\r\\n\\t \\t\\t}\\r\\n\\t \\t}\\r\\n\\t \\tdeliver.pause = pause;\\r\\n\\t \\tdeliver.delay = delay;\\r\\n\\t\\t me.get = function(target, property) {\\r\\n\\t\\t \\tif(property==="__observer__") {\\r\\n\\t\\t \\t\\treturn me;\\r\\n\\t\\t \\t}\\r\\n\\t\\t \\tif(property==="unobserve") {\\r\\n\\t\\t \\t\\treturn function() {\\r\\n\\t\\t \\t\\t\\tObject.unobserve(target);\\r\\n\\t\\t \\t\\t\\treturn target;\\r\\n\\t\\t \\t\\t};\\r\\n\\t\\t \\t}\\r\\n\\t\\t \\tif(property==="deliver") {\\r\\n\\t\\t \\t\\treturn deliver;\\r\\n\\t\\t \\t}\\r\\n\\t\\t \\treturn target[property];\\r\\n\\t\\t }\\r\\n\\t \\tme.target = target;\\r\\n\\t \\tme.changeset = [];\\r\\n\\t \\tif(!me.target.__observerCallbacks__) {\\r\\n\\t \\t\\t// __observerCallbacks__ is used as an index to get at the proxy which is the observer, so we can unobserve\\r\\n\\t \\t\\tObject.defineProperty(target,"__observerCallbacks__",{enumerable:false,configurable:true,writable:false,value:[]});\\r\\n\\t \\t\\tObject.defineProperty(target,"__observers__",{enumerable:false,configurable:true,writable:false,value:[]});\\r\\n\\t \\t}\\r\\n\\t \\tme.target.__observerCallbacks__.push(callback);\\r\\n\\t \\tme.target.__observers__.push(this);\\r\\n\\t \\tproxy = new Proxy(target,me);\\r\\n\\t \\tdeliver(false,delay);\\r\\n\\t \\treturn proxy;\\r\\n\\t }\\r\\n\\t\\tObserver.prototype.deliver = function() {\\r\\n\\t\\t\\treturn this.get(null,"deliver");\\r\\n\\t\\t}\\r\\n\\t Observer.prototype.set = function(target, property, value) { // , receiver\\r\\n\\t \\tvar oldvalue = target[property];\\r\\n\\t \\tvar type = (oldvalue===undefined ? "add" : "update");\\r\\n\\t \\ttarget[property] = value;\\r\\n\\t \\tif(target.__observers__.indexOf(this)>=0 && (!this.acceptlist || this.acceptlist.indexOf(type)>=0)) {\\r\\n\\t \\tvar change = {object:target,name:property,type:type},\\r\\n\\t \\t\\tstart = this.changeset.length === 0,\\r\\n\\t \\t\\tdeliver = this.deliver();\\r\\n\\t \\tif(type==="update") {\\r\\n\\t \\t\\tchange.oldValue = oldvalue;\\r\\n\\t \\t}\\r\\n\\t \\tthis.changeset.push(change);\\r\\n\\t \\tif(start) {\\r\\n\\t \\t\\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\\r\\n\\t \\t}\\r\\n\\t \\t}\\r\\n\\t \\treturn true;\\r\\n\\t };\\r\\n\\t Observer.prototype.deleteProperty = function(target, property) {\\r\\n\\t \\tvar oldvalue = target[property];\\r\\n\\t \\t//if(typeof(oldvalue)!=="undefined") {\\r\\n\\t\\t \\tdelete target[property];\\r\\n\\t\\t \\tif(target.__observers__.indexOf(this)>=0 && !this.acceptlist || this.acceptlist.indexOf("delete")>=0) {\\r\\n\\t\\t \\tvar change = {object:target,name:property,type:"delete",oldValue:oldvalue},\\r\\n\\t\\t \\t\\tstart = this.changeset.length === 0,\\r\\n\\t\\t \\t\\tdeliver = this.deliver();\\r\\n\\t\\t \\tthis.changeset.push(change);\\r\\n\\t\\t \\tif(start) {\\r\\n\\t\\t \\t\\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\\r\\n\\t\\t \\t}\\r\\n\\t\\t \\t}\\r\\n\\t \\t//}\\r\\n\\t \\treturn true;\\r\\n\\t };\\r\\n\\t Observer.prototype.defineProperty = function(target, property, descriptor) {\\r\\n\\t \\tObject.defineProperty(target, property, descriptor);\\r\\n\\t \\tif(target.__observers__.indexOf(this)>=0 && !this.acceptlist || this.acceptlist.indexOf("reconfigure")>=0) {\\r\\n\\t \\tvar change = {object:target,name:property,type:"reconfigure"},\\r\\n \\t\\t\\tstart = this.changeset.length === 0,\\r\\n \\t\\t\\tdeliver = this.deliver();\\r\\n\\t \\tthis.changeset.push(change);\\r\\n\\t \\tif(start) {\\r\\n\\t \\t\\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\\r\\n\\t \\t}\\r\\n\\t \\t}\\r\\n\\t \\treturn true;\\r\\n\\t };\\r\\n\\t Observer.prototype.setPrototypeOf = function(target, prototype) {\\r\\n\\t \\tvar oldvalue = Object.getPrototypeOf(target);\\r\\n\\t \\tObject.setPrototypeOf(target, prototype);\\r\\n\\t \\tif(target.__observers__.indexOf(this)>=0 && !this.acceptlist || this.acceptlist.indexOf("setPrototype")>=0) {\\r\\n\\t \\tvar change = {object:target,name:"__proto__",type:"setPrototype",oldValue:oldvalue},\\r\\n \\t\\t\\t\\tstart = this.changeset.length === 0,\\r\\n \\t\\t\\t\\tdeliver = this.deliver();\\r\\n\\t \\tthis.changeset.push(change);\\r\\n\\t \\tif(start) {\\r\\n\\t \\t\\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\\r\\n\\t \\t}\\r\\n\\t \\t}\\r\\n\\t \\treturn true;\\r\\n\\t };\\r\\n\\t Observer.prototype.preventExtensions = function(target) {\\r\\n\\t Object.preventExtensions(target);\\r\\n\\t \\tif(target.__observers__.indexOf(this)>=0 && !this.acceptlist || this.acceptlist.indexOf("preventExtensions")>=0) {\\r\\n\\t \\tvar change = {object:target,type:"preventExtensions"},\\r\\n\\t\\t\\t\\t\\tstart = this.changeset.length === 0,\\r\\n\\t\\t\\t\\t\\tdeliver = this.deliver();\\r\\n\\t \\tthis.changeset.push(change);\\r\\n\\t \\tif(start) {\\r\\n\\t \\t\\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\\r\\n\\t \\t}\\r\\n\\t \\t}\\r\\n\\t \\treturn true;\\r\\n\\t };\\r\\n\\t Object.observe = function(object,callback,acceptlist,pausable,pause,delay) {\\r\\n\\t \\treturn new Observer(object,callback,acceptlist,pausable,pause,delay);\\r\\n\\t };\\r\\n\\t Object.unobserve = function(object,callback) {\\r\\n\\t \\tif(object.__observerCallbacks__) {\\r\\n\\t \\t\\tif(!callback) {\\r\\n\\t \\t\\t\\tobject.__observerCallbacks__.splice(0,object.__observerCallbacks__.length);\\r\\n\\t \\t\\t\\tobject.__observers__.splice(0,object.__observers__.length);\\r\\n\\t \\t\\t\\treturn;\\r\\n\\t \\t\\t}\\r\\n\\t \\t\\tobject.__observerCallbacks__.forEach(function(observercallback,i) {\\r\\n\\t \\t\\t\\tif(callback===observercallback) {\\r\\n\\t \\t\\t\\t\\tobject.__observerCallbacks__.splice(i,1);\\r\\n\\t \\t\\t\\t\\tdelete object.__observers__[i].callback;\\r\\n\\t \\t\\t\\t\\tobject.__observers__.splice(i,1);\\r\\n\\t \\t\\t\\t}\\r\\n\\t \\t\\t});\\r\\n\\t \\t}\\r\\n\\t };\\r\\n\\t Array.observe = function(object,callback,acceptlist,pausable,pause,delay) {\\r\\n\\t \\tif(!(object instanceof Array) && !Array.isArray(object)) {\\r\\n\\t \\t\\tthrow new TypeError("First argument to Array.observer is not an Array");\\r\\n\\t \\t}\\r\\n \\tacceptlist = acceptlist || ["add", "update", "delete", "splice"];\\r\\n\\t \\tvar arrayproxy = new Proxy(object,{get: function(target,property) {\\r\\n\\t \\t\\tif(property==="unobserve") {\\r\\n\\t\\t \\t\\treturn function(callback) {\\r\\n\\t\\t \\t\\t\\tif(callback) {\\r\\n\\t\\t \\t\\t\\t\\treturn Object.unobserve(target,callback);\\r\\n\\t\\t \\t\\t\\t}\\r\\n\\t\\t \\t\\t\\treturn target.unobserve();\\r\\n\\t\\t \\t\\t};\\r\\n\\t\\t \\t}\\r\\n\\t \\t\\tif(property==="splice") {\\r\\n\\t \\t\\t\\treturn function(start,end) {\\r\\n\\t \\t\\t\\t\\tif(typeof(start)!=="number" || typeof(end)!=="number") {\\r\\n\\t \\t\\t\\t\\t\\tthrow new TypeError("First two arguments to Array splice are not number, number");\\r\\n\\t \\t\\t\\t\\t}\\r\\n\\t \\t \\t\\tvar removed = this.slice(start,start+end),\\r\\n\\t \\t \\t\\t\\taddedCount = (arguments.length > 1 ? arguments.length-2 : 0),\\r\\n\\t \\t \\t\\t\\tchange = {object:object,type:"splice",index:start,removed:removed,addedCount:addedCount};\\r\\n\\t \\t \\t\\ttarget.splice.apply(target,arguments);\\r\\n\\t \\t \\t\\tif(acceptlist.indexOf("splice")>=0) {\\r\\n\\t \\t \\t\\t\\tvar start = proxy.__observer__.changeset.length === 0,\\r\\n\\t \\t \\t\\t\\tdeliver = proxy.__observer__.deliver();\\r\\n\\t \\t \\t\\t\\tproxy.__observer__.changeset.push(change);\\r\\n\\t \\t \\t\\t\\tif(start) {\\r\\n\\t \\t\\t \\t\\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\\r\\n\\t \\t\\t \\t}\\r\\n\\t \\t \\t\\t}\\r\\n\\t \\t \\t}\\r\\n\\t \\t\\t}\\r\\n\\t \\t\\tif(property==="push") {\\r\\n\\t \\t\\t\\t return function(item) {\\r\\n\\t \\t\\t \\treturn this.splice(this.length,0,item);\\r\\n\\t \\t\\t }\\r\\n\\t \\t\\t}\\r\\n\\t \\t\\tif(property==="pop") {\\r\\n\\t \\t\\t\\t return function() {\\r\\n\\t \\t\\t \\treturn this.splice(this.length-1,1);\\r\\n\\t \\t\\t }\\r\\n\\t \\t\\t}\\r\\n\\t \\t\\tif(property==="unshift") {\\r\\n\\t \\t\\t\\t return function(item) {\\r\\n \\t\\t \\t\\treturn this.splice(0,0,item);\\r\\n \\t\\t \\t}\\r\\n\\t \\t\\t}\\r\\n\\t \\t\\tif(property==="shift") {\\r\\n\\t \\t\\t\\treturn function() {\\r\\n\\t \\t \\t\\treturn this.splice(0,1);\\r\\n\\t \\t \\t}\\r\\n\\t \\t\\t}\\r\\n\\t \\t\\treturn target[property];\\r\\n\\t \\t}});\\r\\n\\t \\tvar proxy = Object.observe(arrayproxy,function(changeset) { \\r\\n\\t \\t\\tvar changes = changeset.filter(function(change) { return change.name!=="length" && change.name!=="add" && (!acceptlist || acceptlist.indexOf(change.type)>=0); });\\r\\n\\t \\t\\tif(changes.length>0) {\\r\\n\\t \\t\\t\\tcallback(changes);\\r\\n\\t \\t\\t}\\r\\n\\t \\t},acceptlist,pausable,pause,delay);\\r\\n\\t \\treturn proxy;\\r\\n\\t };\\r\\n\\t Array.unobserve = function(object,callback) {\\r\\n\\t\\t return object.unobserve(callback);\\r\\n\\t }\\r\\n\\t}\\r\\n\\tObject.deepObserve = function(object,callback,parts) {\\r\\n\\r\\n\\t\\tparts = (parts ? parts : []);\\r\\n\\r\\n\\t\\tvar toTypeName = function(obj) {\\r\\n\\t\\t\\treturn ({}).toString.call(obj).match(/\\\\s([a-zA-Z]+)/)[1].toLowerCase()\\r\\n\\t\\t}\\r\\n\\r\\n\\t\\tfunction reobserve(value, parts) {\\r\\n\\t\\t\\tvar keys = Object.keys(value);\\r\\n\\t\\t\\tkeys.forEach(function(key) {\\r\\n\\t\\t\\t\\tif((toTypeName(value[key]) === \\\'object\\\' || toTypeName(value[key]) === \\\'array\\\') && !value[key].hasOwnProperty(\\\'__observers__\\\')) {\\r\\n\\t\\t\\t\\t\\tvar newparts = parts.slice(0);\\r\\n\\t\\t\\t\\t\\tnewparts.push(key);\\r\\n\\t\\t\\t\\t\\tvalue[key] = Object.deepObserve(value[key],callback,newparts);\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t});\\r\\n\\t\\t}\\r\\n\\r\\n\\t\\treobserve(object, parts);\\r\\n\\r\\n\\t\\tvar observed = Object.observe(object,function(changeset) {\\r\\n\\t\\t\\tvar changes = [];\\r\\n\\t\\t\\tfunction recurse(name,rootObject,oldObject,newObject,path) {\\r\\n\\t\\t\\t\\tif(newObject instanceof Object) {\\r\\n\\t\\t\\t\\t\\tvar newkeys = Object.keys(newObject);\\r\\n\\t\\t\\t\\t\\tnewkeys.forEach(function(key) {\\r\\n\\t\\t\\t\\t\\t\\tif(!oldObject || (oldObject[key]!==newObject[key])) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar oldvalue = (oldObject && oldObject[key]!==undefined ? oldObject[key] : undefined),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tchange = (oldvalue===undefined ? "add" : "update"),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tkeypath = path + "." + key;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tchanges.push({name:name,object:rootObject,type:change,oldValue:oldvalue,newValue:newObject[key],keypath:keypath});\\r\\n\\t\\t\\t\\t\\t\\t\\trecurse(name,rootObject,oldvalue,newObject[key],keypath);\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t});\\r\\n\\t\\t\\t\\t} else if(oldObject instanceof Object) {\\r\\n\\t\\t\\t\\t\\tvar oldkeys = Object.keys(oldObject);\\r\\n\\t\\t\\t\\t\\toldkeys.forEach(function(key) {\\r\\n\\t\\t\\t\\t\\t\\tvar change = (newObject===null ? "update" : "delete"),\\r\\n\\t\\t\\t\\t\\t\\t\\tkeypath = path + "." + key;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\tchanges.push({name:name,object:rootObject,type:change,oldValue:oldObject[key],newValue:newObject,keypath:keypath});\\r\\n\\t\\t\\t\\t\\t\\trecurse(name,rootObject,oldObject[key],undefined,keypath);\\r\\n\\t\\t\\t\\t\\t});\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\tchangeset.forEach(function(change) {\\r\\n\\t\\t\\t\\tvar keypath = (parts.length>0 ? parts.join(".") + "." : "") + change.name;\\r\\n\\r\\n\\t\\t\\t\\tif (change.type === "update" || change.type === "add") { \\r\\n\\t\\t\\t\\t\\treobserve(change.object, parts);\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tchanges.push({name:change.name,object:change.object,type:change.type,oldValue:change.oldValue,newValue:change.object[change.name],keypath:keypath});\\r\\n\\t\\t\\t\\trecurse(change.name,change.object,change.oldValue,change.object[change.name],keypath);\\r\\n\\t\\t\\t});\\r\\n\\t\\t\\tcallback(changes);\\r\\n\\t\\t});\\r\\n\\t\\treturn observed;\\r\\n\\t};\\r\\n})();\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJveHktb2JzZXJ2ZS9pbmRleC5qcz8xMjBiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRSwwREFBMEQsRUFBRTtBQUM3SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkRBQTZELDJEQUEyRDtBQUN4SCxxREFBcUQsMkRBQTJEO0FBQ2hIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHNDQUFzQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLDREQUE0RDtBQUNyRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwrQ0FBK0M7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IscUVBQXFFO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1Q0FBdUM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsaUU7QUFDQSx3REFBd0QsNkdBQTZHLEVBQUU7QUFDdks7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLGtHQUFrRztBQUN2SDtBQUNBO0FBQ0EsTUFBTTtBQUNOLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsbUdBQW1HO0FBQ3ZIO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDREO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0Isb0lBQW9JO0FBQ3RKO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjEyMi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vICAgICBwcm94eS1vYnNlcnZlIHYwLjAuMThcclxuLy8gICAgIENvcHlyaWdodCAoYykgMjAxNSwgMjAxNiBTaW1vbiBZLiBCbGFja3dlbGwsIEFueVdoaWNoV2F5XHJcbi8vICAgICBNSVQgTGljZW5zZSAtIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcclxuKGZ1bmN0aW9uKCkge1xyXG5cdFwidXNlIHN0cmljdFwiO1xyXG5cdC8vIENyZWF0ZXMgYW5kIHJldHVybnMgYSBQcm94eSB3cmFwcGluZyBhIHRhcmdldCBzbyB0aGF0IGFsbCBjaGFuZ2VzIGNhbiBiZSB0cmFwcGVkIGFuZCBmb3J3YXJkZWQgdG9cclxuXHQvLyBhIGNhbGxiYWNrLiBUaGUgY2FsbGJhY2sgdGFrZXMgYW4gYXJyYXkgb2YgY2hhbmdlcyBqdXN0IGxpa2UgdGhlIHRyYWRpdGlvbmFsIG9yaWdpbmFsIENocm9tZSBPYmplY3Qub2JzZXJ2ZVxyXG5cdC8vIHtvYmplY3Q6PG9iamVjdCBjaGFuZ2VkPixuYW1lOjxmaWVsZCBjaGFuZ2VkPix0eXBlOmFkZHx1cGRhdGV8ZGVsZXRlfHJlY29uZmlndXJlfHByZXZlbnRFeHRlbnNpb25zfHNldFByb3RvdHlwZSxvbGRWYWx1ZTo8b2xkIHZhbHVlIGlmIHVwZGF0ZSB8IGRlbGV0ZT59XHJcblx0Ly8gVGhlIGFjY2VwdGxpc3QgY2FuIGJlIGFkZHx1cGRhdGV8ZGVsZXRlfHJlY29uZmlndXJlfHByZXZlbnRFeHRlbnNpb25zfHNldFByb3RvdHlwZS5cclxuXHQvLyB2IDAuMC4xMCB0byBzdXBwb3J0IHBhdXNpbmcgYW5kIHJlc3RhcnRpbmcgb2JzZXJ2YXRpb24gdHdvIGFkZGl0aW9uYWwgY29uc3RydWN0b3IgYXJndW1lbnRzIGFyZSBhdmFpbGFibGUgdG8gT2JqZWN0Lm9ic2VydmU6XHJcblx0Ly8gcGF1c2FibGUgLSBjcmVhdGUgdGhlIE9ic2VydmVyIHNvIGl0IGNhbiBiZSBwYXVzZWRcclxuXHQvLyBwYXVzZSAtIGNyZWF0ZSBvYnNlcnZlciBpbiBwYXVzZWQgc3RhdGVcclxuXHQvLyBpZiBwYXVzYWJsZSBpcyB0cnVlIHRoZW4gYW4gYWRkaXRpb25hbCBtZXRob2QgZGVsaXZlcihpZ25vcmVQcmV2aW91cykgaXMgYXZhaWxhYmxlIHRvIHN0YXJ0IGRlbGl2ZXJ5XHJcblx0Ly8gdG8gcGF1c2UgZGVsaXZlcnkgc2V0IGEgcHJvcGVydHkgY2FsbGVkIHBhdXNlIG9uIHRoZSBmdW5jdGlvbiBkZWxpdmVyIHRvIHRydWVcclxuXHQvLyBwYXVzYWJsZSBpcyBvcHRpb25hbCB0byByZWR1Y2UgdGhlIGNoYW5jZSBvZiBzaGFkb3dpbmcgYSBwcm9wZXJ0eSBvciBtZXRob2Qgb24gYW55IGV4aXN0aW5nIGNvZGUgY2FsbGVkIGRlbGl2ZXJcclxuXHRpZighT2JqZWN0Lm9ic2VydmUgJiYgdHlwZW9mKFByb3h5KT09PVwiZnVuY3Rpb25cIikge1xyXG5cdFx0ZnVuY3Rpb24gT2JzZXJ2ZXIodGFyZ2V0LGNhbGxiYWNrLGFjY2VwdGxpc3QscGF1c2FibGUscGF1c2UsZGVsYXkpIHtcclxuXHQgICAgXHR2YXIgbWUgPSB0aGlzLCBwcm94eTtcclxuXHQgICAgXHRmdW5jdGlvbiBkZWxpdmVyKGlnbm9yZVByZXZpb3VzLGRlbGF5KSB7XHJcblx0ICAgIFx0XHRkZWxpdmVyLmRlbGF5ID0gZGVsYXk7XHJcblx0ICAgIFx0XHRpZighZGVsaXZlci5wYXVzZSkge1xyXG5cdCAgICAgICAgXHRcdGlmKG1lLmNoYW5nZXNldC5sZW5ndGg+MCkge1xyXG5cdCAgICAgICAgXHRcdFx0aWYoIWlnbm9yZVByZXZpb3VzKSB7XHJcblx0XHQgICAgXHQgICAgXHRcdHZhciBjaGFuZ2VzID0gbWUuY2hhbmdlc2V0LmZpbHRlcihmdW5jdGlvbihjaGFuZ2UpIHsgcmV0dXJuICFhY2NlcHRsaXN0IHx8IGFjY2VwdGxpc3QuaW5kZXhPZihjaGFuZ2UudHlwZSk+PTA7IH0pO1xyXG5cdFx0ICAgICAgICBcdFx0XHRpZihjaGFuZ2VzLmxlbmd0aD4wKSB7XHJcblx0XHQgICAgICAgIFx0XHRcdFx0Y2FsbGJhY2soY2hhbmdlcyk7XHJcblx0XHQgICAgICAgIFx0XHRcdH1cclxuXHQgICAgICAgIFx0XHRcdH1cclxuXHQgICAgICAgIFx0XHRcdG1lLmNoYW5nZXNldCA9IFtdO1xyXG5cdCAgICAgICAgXHRcdH1cclxuXHQgICAgXHRcdH1cclxuXHQgICAgXHR9XHJcblx0ICAgIFx0ZGVsaXZlci5wYXVzZSA9IHBhdXNlO1xyXG5cdCAgICBcdGRlbGl2ZXIuZGVsYXkgPSBkZWxheTtcclxuXHRcdCAgICBtZS5nZXQgPSBmdW5jdGlvbih0YXJnZXQsIHByb3BlcnR5KSB7XHJcblx0XHQgICAgXHRpZihwcm9wZXJ0eT09PVwiX19vYnNlcnZlcl9fXCIpIHtcclxuXHRcdCAgICBcdFx0cmV0dXJuIG1lO1xyXG5cdFx0ICAgIFx0fVxyXG5cdFx0ICAgIFx0aWYocHJvcGVydHk9PT1cInVub2JzZXJ2ZVwiKSB7XHJcblx0XHQgICAgXHRcdHJldHVybiBmdW5jdGlvbigpIHtcclxuXHRcdCAgICBcdFx0XHRPYmplY3QudW5vYnNlcnZlKHRhcmdldCk7XHJcblx0XHQgICAgXHRcdFx0cmV0dXJuIHRhcmdldDtcclxuXHRcdCAgICBcdFx0fTtcclxuXHRcdCAgICBcdH1cclxuXHRcdCAgICBcdGlmKHByb3BlcnR5PT09XCJkZWxpdmVyXCIpIHtcclxuXHRcdCAgICBcdFx0cmV0dXJuIGRlbGl2ZXI7XHJcblx0XHQgICAgXHR9XHJcblx0XHQgICAgXHRyZXR1cm4gdGFyZ2V0W3Byb3BlcnR5XTtcclxuXHRcdCAgICB9XHJcblx0ICAgIFx0bWUudGFyZ2V0ID0gdGFyZ2V0O1xyXG5cdCAgICBcdG1lLmNoYW5nZXNldCA9IFtdO1xyXG5cdCAgICBcdGlmKCFtZS50YXJnZXQuX19vYnNlcnZlckNhbGxiYWNrc19fKSB7XHJcblx0ICAgIFx0XHQvLyBfX29ic2VydmVyQ2FsbGJhY2tzX18gaXMgdXNlZCBhcyBhbiBpbmRleCB0byBnZXQgYXQgdGhlIHByb3h5IHdoaWNoIGlzIHRoZSBvYnNlcnZlciwgc28gd2UgY2FuIHVub2JzZXJ2ZVxyXG5cdCAgICBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCxcIl9fb2JzZXJ2ZXJDYWxsYmFja3NfX1wiLHtlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlLHdyaXRhYmxlOmZhbHNlLHZhbHVlOltdfSk7XHJcblx0ICAgIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LFwiX19vYnNlcnZlcnNfX1wiLHtlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlLHdyaXRhYmxlOmZhbHNlLHZhbHVlOltdfSk7XHJcblx0ICAgIFx0fVxyXG5cdCAgICBcdG1lLnRhcmdldC5fX29ic2VydmVyQ2FsbGJhY2tzX18ucHVzaChjYWxsYmFjayk7XHJcblx0ICAgIFx0bWUudGFyZ2V0Ll9fb2JzZXJ2ZXJzX18ucHVzaCh0aGlzKTtcclxuXHQgICAgXHRwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsbWUpO1xyXG5cdCAgICBcdGRlbGl2ZXIoZmFsc2UsZGVsYXkpO1xyXG5cdCAgICBcdHJldHVybiBwcm94eTtcclxuXHQgICAgfVxyXG5cdFx0T2JzZXJ2ZXIucHJvdG90eXBlLmRlbGl2ZXIgPSBmdW5jdGlvbigpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0KG51bGwsXCJkZWxpdmVyXCIpO1xyXG5cdFx0fVxyXG5cdCAgICBPYnNlcnZlci5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24odGFyZ2V0LCBwcm9wZXJ0eSwgdmFsdWUpIHsgLy8gLCByZWNlaXZlclxyXG5cdCAgICBcdHZhciBvbGR2YWx1ZSA9IHRhcmdldFtwcm9wZXJ0eV07XHJcblx0ICAgIFx0dmFyIHR5cGUgPSAob2xkdmFsdWU9PT11bmRlZmluZWQgPyBcImFkZFwiIDogXCJ1cGRhdGVcIik7XHJcblx0ICAgIFx0dGFyZ2V0W3Byb3BlcnR5XSA9IHZhbHVlO1xyXG5cdCAgICBcdGlmKHRhcmdldC5fX29ic2VydmVyc19fLmluZGV4T2YodGhpcyk+PTAgJiYgKCF0aGlzLmFjY2VwdGxpc3QgfHwgdGhpcy5hY2NlcHRsaXN0LmluZGV4T2YodHlwZSk+PTApKSB7XHJcblx0ICAgICAgICBcdHZhciBjaGFuZ2UgPSB7b2JqZWN0OnRhcmdldCxuYW1lOnByb3BlcnR5LHR5cGU6dHlwZX0sXHJcblx0ICAgICAgICBcdFx0c3RhcnQgPSB0aGlzLmNoYW5nZXNldC5sZW5ndGggPT09IDAsXHJcblx0ICAgICAgICBcdFx0ZGVsaXZlciA9IHRoaXMuZGVsaXZlcigpO1xyXG5cdCAgICAgICAgXHRpZih0eXBlPT09XCJ1cGRhdGVcIikge1xyXG5cdCAgICAgICAgXHRcdGNoYW5nZS5vbGRWYWx1ZSA9IG9sZHZhbHVlO1xyXG5cdCAgICAgICAgXHR9XHJcblx0ICAgICAgICBcdHRoaXMuY2hhbmdlc2V0LnB1c2goY2hhbmdlKTtcclxuXHQgICAgICAgIFx0aWYoc3RhcnQpIHtcclxuXHQgICAgICAgIFx0XHRkZWxpdmVyKGZhbHNlLCh0eXBlb2YoZGVsaXZlci5kZWxheSk9PT1cIm51bWJlclwiID8gZGVsaXZlci5kZWxheSA6IDEwKSk7XHJcblx0ICAgICAgICBcdH1cclxuXHQgICAgXHR9XHJcblx0ICAgIFx0cmV0dXJuIHRydWU7XHJcblx0ICAgIH07XHJcblx0ICAgIE9ic2VydmVyLnByb3RvdHlwZS5kZWxldGVQcm9wZXJ0eSA9IGZ1bmN0aW9uKHRhcmdldCwgcHJvcGVydHkpIHtcclxuXHQgICAgXHR2YXIgb2xkdmFsdWUgPSB0YXJnZXRbcHJvcGVydHldO1xyXG5cdCAgICBcdC8vaWYodHlwZW9mKG9sZHZhbHVlKSE9PVwidW5kZWZpbmVkXCIpIHtcclxuXHRcdCAgICBcdGRlbGV0ZSB0YXJnZXRbcHJvcGVydHldO1xyXG5cdFx0ICAgIFx0aWYodGFyZ2V0Ll9fb2JzZXJ2ZXJzX18uaW5kZXhPZih0aGlzKT49MCAmJiAhdGhpcy5hY2NlcHRsaXN0IHx8IHRoaXMuYWNjZXB0bGlzdC5pbmRleE9mKFwiZGVsZXRlXCIpPj0wKSB7XHJcblx0XHQgICAgICAgIFx0dmFyIGNoYW5nZSA9IHtvYmplY3Q6dGFyZ2V0LG5hbWU6cHJvcGVydHksdHlwZTpcImRlbGV0ZVwiLG9sZFZhbHVlOm9sZHZhbHVlfSxcclxuXHRcdCAgICAgICAgXHRcdHN0YXJ0ID0gdGhpcy5jaGFuZ2VzZXQubGVuZ3RoID09PSAwLFxyXG5cdFx0ICAgICAgICBcdFx0ZGVsaXZlciA9IHRoaXMuZGVsaXZlcigpO1xyXG5cdFx0ICAgICAgICBcdHRoaXMuY2hhbmdlc2V0LnB1c2goY2hhbmdlKTtcclxuXHRcdCAgICAgICAgXHRpZihzdGFydCkge1xyXG5cdFx0ICAgICAgICBcdFx0ZGVsaXZlcihmYWxzZSwodHlwZW9mKGRlbGl2ZXIuZGVsYXkpPT09XCJudW1iZXJcIiA/IGRlbGl2ZXIuZGVsYXkgOiAxMCkpO1xyXG5cdFx0ICAgICAgICBcdH1cclxuXHRcdCAgICBcdH1cclxuXHQgICAgXHQvL31cclxuXHQgICAgXHRyZXR1cm4gdHJ1ZTtcclxuXHQgICAgfTtcclxuXHQgICAgT2JzZXJ2ZXIucHJvdG90eXBlLmRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24odGFyZ2V0LCBwcm9wZXJ0eSwgZGVzY3JpcHRvcikge1xyXG5cdCAgICBcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5LCBkZXNjcmlwdG9yKTtcclxuXHQgICAgXHRpZih0YXJnZXQuX19vYnNlcnZlcnNfXy5pbmRleE9mKHRoaXMpPj0wICYmICF0aGlzLmFjY2VwdGxpc3QgfHwgdGhpcy5hY2NlcHRsaXN0LmluZGV4T2YoXCJyZWNvbmZpZ3VyZVwiKT49MCkge1xyXG5cdCAgICAgICAgXHR2YXIgY2hhbmdlID0ge29iamVjdDp0YXJnZXQsbmFtZTpwcm9wZXJ0eSx0eXBlOlwicmVjb25maWd1cmVcIn0sXHJcbiAgICAgICAgXHRcdFx0c3RhcnQgPSB0aGlzLmNoYW5nZXNldC5sZW5ndGggPT09IDAsXHJcbiAgICAgICAgXHRcdFx0ZGVsaXZlciA9IHRoaXMuZGVsaXZlcigpO1xyXG5cdCAgICAgICAgXHR0aGlzLmNoYW5nZXNldC5wdXNoKGNoYW5nZSk7XHJcblx0ICAgICAgICBcdGlmKHN0YXJ0KSB7XHJcblx0ICAgICAgICBcdFx0ZGVsaXZlcihmYWxzZSwodHlwZW9mKGRlbGl2ZXIuZGVsYXkpPT09XCJudW1iZXJcIiA/IGRlbGl2ZXIuZGVsYXkgOiAxMCkpO1xyXG5cdCAgICAgICAgXHR9XHJcblx0ICAgIFx0fVxyXG5cdCAgICBcdHJldHVybiB0cnVlO1xyXG5cdCAgICB9O1xyXG5cdCAgICBPYnNlcnZlci5wcm90b3R5cGUuc2V0UHJvdG90eXBlT2YgPSBmdW5jdGlvbih0YXJnZXQsIHByb3RvdHlwZSkge1xyXG5cdCAgICBcdHZhciBvbGR2YWx1ZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpO1xyXG5cdCAgICBcdE9iamVjdC5zZXRQcm90b3R5cGVPZih0YXJnZXQsIHByb3RvdHlwZSk7XHJcblx0ICAgIFx0aWYodGFyZ2V0Ll9fb2JzZXJ2ZXJzX18uaW5kZXhPZih0aGlzKT49MCAmJiAhdGhpcy5hY2NlcHRsaXN0IHx8IHRoaXMuYWNjZXB0bGlzdC5pbmRleE9mKFwic2V0UHJvdG90eXBlXCIpPj0wKSB7XHJcblx0ICAgICAgICBcdHZhciBjaGFuZ2UgPSB7b2JqZWN0OnRhcmdldCxuYW1lOlwiX19wcm90b19fXCIsdHlwZTpcInNldFByb3RvdHlwZVwiLG9sZFZhbHVlOm9sZHZhbHVlfSxcclxuICAgIFx0XHRcdFx0c3RhcnQgPSB0aGlzLmNoYW5nZXNldC5sZW5ndGggPT09IDAsXHJcbiAgICBcdFx0XHRcdGRlbGl2ZXIgPSB0aGlzLmRlbGl2ZXIoKTtcclxuXHQgICAgICAgIFx0dGhpcy5jaGFuZ2VzZXQucHVzaChjaGFuZ2UpO1xyXG5cdCAgICAgICAgXHRpZihzdGFydCkge1xyXG5cdCAgICAgICAgXHRcdGRlbGl2ZXIoZmFsc2UsKHR5cGVvZihkZWxpdmVyLmRlbGF5KT09PVwibnVtYmVyXCIgPyBkZWxpdmVyLmRlbGF5IDogMTApKTtcclxuXHQgICAgICAgIFx0fVxyXG5cdCAgICBcdH1cclxuXHQgICAgXHRyZXR1cm4gdHJ1ZTtcclxuXHQgICAgfTtcclxuXHQgICAgT2JzZXJ2ZXIucHJvdG90eXBlLnByZXZlbnRFeHRlbnNpb25zID0gZnVuY3Rpb24odGFyZ2V0KSB7XHJcblx0ICAgICAgICBPYmplY3QucHJldmVudEV4dGVuc2lvbnModGFyZ2V0KTtcclxuXHQgICAgXHRpZih0YXJnZXQuX19vYnNlcnZlcnNfXy5pbmRleE9mKHRoaXMpPj0wICYmICF0aGlzLmFjY2VwdGxpc3QgfHwgdGhpcy5hY2NlcHRsaXN0LmluZGV4T2YoXCJwcmV2ZW50RXh0ZW5zaW9uc1wiKT49MCkge1xyXG5cdCAgICAgICAgXHR2YXIgY2hhbmdlID0ge29iamVjdDp0YXJnZXQsdHlwZTpcInByZXZlbnRFeHRlbnNpb25zXCJ9LFxyXG5cdFx0XHRcdFx0c3RhcnQgPSB0aGlzLmNoYW5nZXNldC5sZW5ndGggPT09IDAsXHJcblx0XHRcdFx0XHRkZWxpdmVyID0gdGhpcy5kZWxpdmVyKCk7XHJcblx0ICAgICAgICBcdHRoaXMuY2hhbmdlc2V0LnB1c2goY2hhbmdlKTtcclxuXHQgICAgICAgIFx0aWYoc3RhcnQpIHtcclxuXHQgICAgICAgIFx0XHRkZWxpdmVyKGZhbHNlLCh0eXBlb2YoZGVsaXZlci5kZWxheSk9PT1cIm51bWJlclwiID8gZGVsaXZlci5kZWxheSA6IDEwKSk7XHJcblx0ICAgICAgICBcdH1cclxuXHQgICAgXHR9XHJcblx0ICAgIFx0cmV0dXJuIHRydWU7XHJcblx0ICAgIH07XHJcblx0ICAgIE9iamVjdC5vYnNlcnZlID0gZnVuY3Rpb24ob2JqZWN0LGNhbGxiYWNrLGFjY2VwdGxpc3QscGF1c2FibGUscGF1c2UsZGVsYXkpIHtcclxuXHQgICAgXHRyZXR1cm4gbmV3IE9ic2VydmVyKG9iamVjdCxjYWxsYmFjayxhY2NlcHRsaXN0LHBhdXNhYmxlLHBhdXNlLGRlbGF5KTtcclxuXHQgICAgfTtcclxuXHQgICAgT2JqZWN0LnVub2JzZXJ2ZSA9IGZ1bmN0aW9uKG9iamVjdCxjYWxsYmFjaykge1xyXG5cdCAgICBcdGlmKG9iamVjdC5fX29ic2VydmVyQ2FsbGJhY2tzX18pIHtcclxuXHQgICAgXHRcdGlmKCFjYWxsYmFjaykge1xyXG5cdCAgICBcdFx0XHRvYmplY3QuX19vYnNlcnZlckNhbGxiYWNrc19fLnNwbGljZSgwLG9iamVjdC5fX29ic2VydmVyQ2FsbGJhY2tzX18ubGVuZ3RoKTtcclxuXHQgICAgXHRcdFx0b2JqZWN0Ll9fb2JzZXJ2ZXJzX18uc3BsaWNlKDAsb2JqZWN0Ll9fb2JzZXJ2ZXJzX18ubGVuZ3RoKTtcclxuXHQgICAgXHRcdFx0cmV0dXJuO1xyXG5cdCAgICBcdFx0fVxyXG5cdCAgICBcdFx0b2JqZWN0Ll9fb2JzZXJ2ZXJDYWxsYmFja3NfXy5mb3JFYWNoKGZ1bmN0aW9uKG9ic2VydmVyY2FsbGJhY2ssaSkge1xyXG5cdCAgICBcdFx0XHRpZihjYWxsYmFjaz09PW9ic2VydmVyY2FsbGJhY2spIHtcclxuXHQgICAgXHRcdFx0XHRvYmplY3QuX19vYnNlcnZlckNhbGxiYWNrc19fLnNwbGljZShpLDEpO1xyXG5cdCAgICBcdFx0XHRcdGRlbGV0ZSBvYmplY3QuX19vYnNlcnZlcnNfX1tpXS5jYWxsYmFjaztcclxuXHQgICAgXHRcdFx0XHRvYmplY3QuX19vYnNlcnZlcnNfXy5zcGxpY2UoaSwxKTtcclxuXHQgICAgXHRcdFx0fVxyXG5cdCAgICBcdFx0fSk7XHJcblx0ICAgIFx0fVxyXG5cdCAgICB9O1xyXG5cdCAgICBBcnJheS5vYnNlcnZlID0gZnVuY3Rpb24ob2JqZWN0LGNhbGxiYWNrLGFjY2VwdGxpc3QscGF1c2FibGUscGF1c2UsZGVsYXkpIHtcclxuXHQgICAgXHRpZighKG9iamVjdCBpbnN0YW5jZW9mIEFycmF5KSAmJiAhQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XHJcblx0ICAgIFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlyc3QgYXJndW1lbnQgdG8gQXJyYXkub2JzZXJ2ZXIgaXMgbm90IGFuIEFycmF5XCIpO1xyXG5cdCAgICBcdH1cclxuICAgICAgICAgICAgXHRhY2NlcHRsaXN0ID0gYWNjZXB0bGlzdCB8fCBbXCJhZGRcIiwgXCJ1cGRhdGVcIiwgXCJkZWxldGVcIiwgXCJzcGxpY2VcIl07XHJcblx0ICAgIFx0dmFyIGFycmF5cHJveHkgPSBuZXcgUHJveHkob2JqZWN0LHtnZXQ6IGZ1bmN0aW9uKHRhcmdldCxwcm9wZXJ0eSkge1xyXG5cdCAgICBcdFx0aWYocHJvcGVydHk9PT1cInVub2JzZXJ2ZVwiKSB7XHJcblx0XHQgICAgXHRcdHJldHVybiBmdW5jdGlvbihjYWxsYmFjaykge1xyXG5cdFx0ICAgIFx0XHRcdGlmKGNhbGxiYWNrKSB7XHJcblx0XHQgICAgXHRcdFx0XHRyZXR1cm4gT2JqZWN0LnVub2JzZXJ2ZSh0YXJnZXQsY2FsbGJhY2spO1xyXG5cdFx0ICAgIFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHRyZXR1cm4gdGFyZ2V0LnVub2JzZXJ2ZSgpO1xyXG5cdFx0ICAgIFx0XHR9O1xyXG5cdFx0ICAgIFx0fVxyXG5cdCAgICBcdFx0aWYocHJvcGVydHk9PT1cInNwbGljZVwiKSB7XHJcblx0ICAgIFx0XHRcdHJldHVybiBmdW5jdGlvbihzdGFydCxlbmQpIHtcclxuXHQgICAgXHRcdFx0XHRpZih0eXBlb2Yoc3RhcnQpIT09XCJudW1iZXJcIiB8fCB0eXBlb2YoZW5kKSE9PVwibnVtYmVyXCIpIHtcclxuXHQgICAgXHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXCJGaXJzdCB0d28gYXJndW1lbnRzIHRvIEFycmF5IHNwbGljZSBhcmUgbm90IG51bWJlciwgbnVtYmVyXCIpO1xyXG5cdCAgICBcdFx0XHRcdH1cclxuXHQgICAgXHQgICAgXHRcdHZhciByZW1vdmVkID0gdGhpcy5zbGljZShzdGFydCxzdGFydCtlbmQpLFxyXG5cdCAgICBcdCAgICBcdFx0XHRhZGRlZENvdW50ID0gKGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzLmxlbmd0aC0yIDogMCksXHJcblx0ICAgIFx0ICAgIFx0XHRcdGNoYW5nZSA9ICB7b2JqZWN0Om9iamVjdCx0eXBlOlwic3BsaWNlXCIsaW5kZXg6c3RhcnQscmVtb3ZlZDpyZW1vdmVkLGFkZGVkQ291bnQ6YWRkZWRDb3VudH07XHJcblx0ICAgIFx0ICAgIFx0XHR0YXJnZXQuc3BsaWNlLmFwcGx5KHRhcmdldCxhcmd1bWVudHMpO1xyXG5cdCAgICBcdCAgICBcdFx0aWYoYWNjZXB0bGlzdC5pbmRleE9mKFwic3BsaWNlXCIpPj0wKSB7XHJcblx0ICAgIFx0ICAgIFx0XHRcdHZhciBzdGFydCA9IHByb3h5Ll9fb2JzZXJ2ZXJfXy5jaGFuZ2VzZXQubGVuZ3RoID09PSAwLFxyXG5cdCAgICBcdCAgICAgICAgXHRcdFx0ZGVsaXZlciA9IHByb3h5Ll9fb2JzZXJ2ZXJfXy5kZWxpdmVyKCk7XHJcblx0ICAgIFx0ICAgIFx0XHRcdHByb3h5Ll9fb2JzZXJ2ZXJfXy5jaGFuZ2VzZXQucHVzaChjaGFuZ2UpO1xyXG5cdCAgICBcdCAgICBcdFx0XHRpZihzdGFydCkge1xyXG5cdCAgICBcdFx0ICAgICAgICBcdFx0ZGVsaXZlcihmYWxzZSwodHlwZW9mKGRlbGl2ZXIuZGVsYXkpPT09XCJudW1iZXJcIiA/IGRlbGl2ZXIuZGVsYXkgOiAxMCkpO1xyXG5cdCAgICBcdFx0ICAgICAgICBcdH1cclxuXHQgICAgXHQgICAgXHRcdH1cclxuXHQgICAgXHQgICAgXHR9XHJcblx0ICAgIFx0XHR9XHJcblx0ICAgIFx0XHRpZihwcm9wZXJ0eT09PVwicHVzaFwiKSB7XHJcblx0ICAgIFx0XHRcdCByZXR1cm4gZnVuY3Rpb24oaXRlbSkge1xyXG5cdCAgICBcdFx0ICAgIFx0cmV0dXJuIHRoaXMuc3BsaWNlKHRoaXMubGVuZ3RoLDAsaXRlbSk7XHJcblx0ICAgIFx0XHQgICAgfVxyXG5cdCAgICBcdFx0fVxyXG5cdCAgICBcdFx0aWYocHJvcGVydHk9PT1cInBvcFwiKSB7XHJcblx0ICAgIFx0XHRcdCByZXR1cm4gZnVuY3Rpb24oKSB7XHJcblx0ICAgIFx0XHQgICAgXHRyZXR1cm4gdGhpcy5zcGxpY2UodGhpcy5sZW5ndGgtMSwxKTtcclxuXHQgICAgXHRcdCAgICB9XHJcblx0ICAgIFx0XHR9XHJcblx0ICAgIFx0XHRpZihwcm9wZXJ0eT09PVwidW5zaGlmdFwiKSB7XHJcblx0ICAgIFx0XHRcdCByZXR1cm4gZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgXHRcdCAgICBcdFx0cmV0dXJuIHRoaXMuc3BsaWNlKDAsMCxpdGVtKTtcclxuICAgIFx0XHQgICAgXHR9XHJcblx0ICAgIFx0XHR9XHJcblx0ICAgIFx0XHRpZihwcm9wZXJ0eT09PVwic2hpZnRcIikge1xyXG5cdCAgICBcdFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XHJcblx0ICAgIFx0ICAgIFx0XHRyZXR1cm4gdGhpcy5zcGxpY2UoMCwxKTtcclxuXHQgICAgXHQgICAgXHR9XHJcblx0ICAgIFx0XHR9XHJcblx0ICAgIFx0XHRyZXR1cm4gdGFyZ2V0W3Byb3BlcnR5XTtcclxuXHQgICAgXHR9fSk7XHJcblx0ICAgIFx0dmFyIHByb3h5ID0gT2JqZWN0Lm9ic2VydmUoYXJyYXlwcm94eSxmdW5jdGlvbihjaGFuZ2VzZXQpIHsgXHJcblx0ICAgIFx0XHR2YXIgY2hhbmdlcyA9IGNoYW5nZXNldC5maWx0ZXIoZnVuY3Rpb24oY2hhbmdlKSB7IHJldHVybiBjaGFuZ2UubmFtZSE9PVwibGVuZ3RoXCIgJiYgY2hhbmdlLm5hbWUhPT1cImFkZFwiICYmICghYWNjZXB0bGlzdCB8fCBhY2NlcHRsaXN0LmluZGV4T2YoY2hhbmdlLnR5cGUpPj0wKTsgfSk7XHJcblx0ICAgIFx0XHRpZihjaGFuZ2VzLmxlbmd0aD4wKSB7XHJcblx0ICAgIFx0XHRcdGNhbGxiYWNrKGNoYW5nZXMpO1xyXG5cdCAgICBcdFx0fVxyXG5cdCAgICBcdH0sYWNjZXB0bGlzdCxwYXVzYWJsZSxwYXVzZSxkZWxheSk7XHJcblx0ICAgIFx0cmV0dXJuIHByb3h5O1xyXG5cdCAgICB9O1xyXG5cdCAgICBBcnJheS51bm9ic2VydmUgPSBmdW5jdGlvbihvYmplY3QsY2FsbGJhY2spIHtcclxuXHRcdCAgcmV0dXJuIG9iamVjdC51bm9ic2VydmUoY2FsbGJhY2spO1xyXG5cdCAgICB9XHJcblx0fVxyXG5cdE9iamVjdC5kZWVwT2JzZXJ2ZSA9IGZ1bmN0aW9uKG9iamVjdCxjYWxsYmFjayxwYXJ0cykge1xyXG5cclxuXHRcdHBhcnRzID0gKHBhcnRzID8gcGFydHMgOiBbXSk7XHJcblxyXG5cdFx0dmFyIHRvVHlwZU5hbWUgPSBmdW5jdGlvbihvYmopIHtcclxuXHRcdFx0cmV0dXJuICh7fSkudG9TdHJpbmcuY2FsbChvYmopLm1hdGNoKC9cXHMoW2EtekEtWl0rKS8pWzFdLnRvTG93ZXJDYXNlKClcclxuXHRcdH1cclxuXHJcblx0XHRmdW5jdGlvbiByZW9ic2VydmUodmFsdWUsIHBhcnRzKSB7XHJcblx0XHRcdHZhciBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xyXG5cdFx0XHRrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XHJcblx0XHRcdFx0aWYoKHRvVHlwZU5hbWUodmFsdWVba2V5XSkgPT09ICdvYmplY3QnIHx8IHRvVHlwZU5hbWUodmFsdWVba2V5XSkgPT09ICdhcnJheScpICYmICF2YWx1ZVtrZXldLmhhc093blByb3BlcnR5KCdfX29ic2VydmVyc19fJykpIHtcclxuXHRcdFx0XHRcdHZhciBuZXdwYXJ0cyA9IHBhcnRzLnNsaWNlKDApO1xyXG5cdFx0XHRcdFx0bmV3cGFydHMucHVzaChrZXkpO1xyXG5cdFx0XHRcdFx0dmFsdWVba2V5XSA9IE9iamVjdC5kZWVwT2JzZXJ2ZSh2YWx1ZVtrZXldLGNhbGxiYWNrLG5ld3BhcnRzKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJlb2JzZXJ2ZShvYmplY3QsIHBhcnRzKTtcclxuXHJcblx0XHR2YXIgb2JzZXJ2ZWQgPSBPYmplY3Qub2JzZXJ2ZShvYmplY3QsZnVuY3Rpb24oY2hhbmdlc2V0KSB7XHJcblx0XHRcdHZhciBjaGFuZ2VzID0gW107XHJcblx0XHRcdGZ1bmN0aW9uIHJlY3Vyc2UobmFtZSxyb290T2JqZWN0LG9sZE9iamVjdCxuZXdPYmplY3QscGF0aCkge1xyXG5cdFx0XHRcdGlmKG5ld09iamVjdCBpbnN0YW5jZW9mIE9iamVjdCkge1xyXG5cdFx0XHRcdFx0dmFyIG5ld2tleXMgPSBPYmplY3Qua2V5cyhuZXdPYmplY3QpO1xyXG5cdFx0XHRcdFx0bmV3a2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xyXG5cdFx0XHRcdFx0XHRpZighb2xkT2JqZWN0IHx8IChvbGRPYmplY3Rba2V5XSE9PW5ld09iamVjdFtrZXldKSkge1xyXG5cdFx0XHRcdFx0XHRcdHZhciBvbGR2YWx1ZSA9IChvbGRPYmplY3QgJiYgb2xkT2JqZWN0W2tleV0hPT11bmRlZmluZWQgPyBvbGRPYmplY3Rba2V5XSA6IHVuZGVmaW5lZCksXHJcblx0XHRcdFx0XHRcdFx0XHRjaGFuZ2UgPSAob2xkdmFsdWU9PT11bmRlZmluZWQgPyBcImFkZFwiIDogXCJ1cGRhdGVcIiksXHJcblx0XHRcdFx0XHRcdFx0XHRrZXlwYXRoID0gcGF0aCArIFwiLlwiICsga2V5O1xyXG5cclxuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe25hbWU6bmFtZSxvYmplY3Q6cm9vdE9iamVjdCx0eXBlOmNoYW5nZSxvbGRWYWx1ZTpvbGR2YWx1ZSxuZXdWYWx1ZTpuZXdPYmplY3Rba2V5XSxrZXlwYXRoOmtleXBhdGh9KTtcclxuXHRcdFx0XHRcdFx0XHRyZWN1cnNlKG5hbWUscm9vdE9iamVjdCxvbGR2YWx1ZSxuZXdPYmplY3Rba2V5XSxrZXlwYXRoKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSBlbHNlIGlmKG9sZE9iamVjdCBpbnN0YW5jZW9mIE9iamVjdCkge1xyXG5cdFx0XHRcdFx0dmFyIG9sZGtleXMgPSBPYmplY3Qua2V5cyhvbGRPYmplY3QpO1xyXG5cdFx0XHRcdFx0b2xka2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xyXG5cdFx0XHRcdFx0XHR2YXIgY2hhbmdlID0gKG5ld09iamVjdD09PW51bGwgPyBcInVwZGF0ZVwiIDogXCJkZWxldGVcIiksXHJcblx0XHRcdFx0XHRcdFx0a2V5cGF0aCA9IHBhdGggKyBcIi5cIiArIGtleTtcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtuYW1lOm5hbWUsb2JqZWN0OnJvb3RPYmplY3QsdHlwZTpjaGFuZ2Usb2xkVmFsdWU6b2xkT2JqZWN0W2tleV0sbmV3VmFsdWU6bmV3T2JqZWN0LGtleXBhdGg6a2V5cGF0aH0pO1xyXG5cdFx0XHRcdFx0XHRyZWN1cnNlKG5hbWUscm9vdE9iamVjdCxvbGRPYmplY3Rba2V5XSx1bmRlZmluZWQsa2V5cGF0aCk7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0Y2hhbmdlc2V0LmZvckVhY2goZnVuY3Rpb24oY2hhbmdlKSB7XHJcblx0XHRcdFx0dmFyIGtleXBhdGggPSAocGFydHMubGVuZ3RoPjAgPyBwYXJ0cy5qb2luKFwiLlwiKSArIFwiLlwiIDogXCJcIikgKyBjaGFuZ2UubmFtZTtcclxuXHJcblx0XHRcdFx0aWYgKGNoYW5nZS50eXBlID09PSBcInVwZGF0ZVwiIHx8IGNoYW5nZS50eXBlID09PSBcImFkZFwiKSB7IFxyXG5cdFx0XHRcdFx0cmVvYnNlcnZlKGNoYW5nZS5vYmplY3QsIHBhcnRzKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGNoYW5nZXMucHVzaCh7bmFtZTpjaGFuZ2UubmFtZSxvYmplY3Q6Y2hhbmdlLm9iamVjdCx0eXBlOmNoYW5nZS50eXBlLG9sZFZhbHVlOmNoYW5nZS5vbGRWYWx1ZSxuZXdWYWx1ZTpjaGFuZ2Uub2JqZWN0W2NoYW5nZS5uYW1lXSxrZXlwYXRoOmtleXBhdGh9KTtcclxuXHRcdFx0XHRyZWN1cnNlKGNoYW5nZS5uYW1lLGNoYW5nZS5vYmplY3QsY2hhbmdlLm9sZFZhbHVlLGNoYW5nZS5vYmplY3RbY2hhbmdlLm5hbWVdLGtleXBhdGgpO1xyXG5cdFx0XHR9KTtcclxuXHRcdFx0Y2FsbGJhY2soY2hhbmdlcyk7XHJcblx0XHR9KTtcclxuXHRcdHJldHVybiBvYnNlcnZlZDtcclxuXHR9O1xyXG59KSgpO1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9wcm94eS1vYnNlcnZlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDUgMTMiXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///122\\n\')},13:function(module,exports){eval("module.exports = function (exec) {\\n try {\\n return !!exec();\\n } catch (e) {\\n return true;\\n }\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSIsImZpbGUiOiIxMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qc1xuLy8gbW9kdWxlIGlkID0gMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0Il0sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///13\\n")},14:function(module,exports,__webpack_require__){eval("// optional / simple context binding\\nvar aFunction = __webpack_require__(23);\\nmodule.exports = function (fn, that, length) {\\n aFunction(fn);\\n if (that === undefined) return fn;\\n switch (length) {\\n case 1: return function (a) {\\n return fn.call(that, a);\\n };\\n case 2: return function (a, b) {\\n return fn.call(that, a, b);\\n };\\n case 3: return function (a, b, c) {\\n return fn.call(that, a, b, c);\\n };\\n }\\n return function (/* ...args */) {\\n return fn.apply(that, arguments);\\n };\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3R4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQiXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///14\\n")},15:function(module,exports){eval("module.exports = function (bitmap, value) {\\n return {\\n enumerable: !(bitmap & 1),\\n configurable: !(bitmap & 2),\\n writable: !(bitmap & 4),\\n value: value\\n };\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE1LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzXG4vLyBtb2R1bGUgaWQgPSAxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQiXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///15\\n")},198:function(module,exports,__webpack_require__){"use strict";eval(\'\\n\\nObject.defineProperty(exports, "__esModule", {\\n value: true\\n});\\nexports.WatchingYou = undefined;\\n\\nvar _WatchingYou = __webpack_require__(199);\\n\\nvar _WatchingYou2 = _interopRequireDefault(_WatchingYou);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nexports.WatchingYou = _WatchingYou2.default;//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvVXRpbHMuanM/MDEzMCJdLCJuYW1lcyI6WyJXYXRjaGluZ1lvdSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7Ozs7UUFFU0EsVyIsImZpbGUiOiIxOTguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgV2F0Y2hpbmdZb3UgZnJvbSAnLi91dGlscy9XYXRjaGluZ1lvdSc7XG5cbmV4cG9ydCB7IFdhdGNoaW5nWW91IH07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvVXRpbHMuanMiXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///198\\n\')},199:function(module,exports,__webpack_require__){"use strict";eval("\\n\\nObject.defineProperty(exports, \\"__esModule\\", {\\n value: true\\n});\\n\\nvar _classCallCheck2 = __webpack_require__(3);\\n\\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\\n\\nvar _createClass2 = __webpack_require__(5);\\n\\nvar _createClass3 = _interopRequireDefault(_createClass2);\\n\\n__webpack_require__(122);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nvar WatchingYou = function () {\\n function WatchingYou() {\\n (0, _classCallCheck3.default)(this, WatchingYou);\\n\\n this._watching = {};\\n this._observers = [];\\n }\\n\\n (0, _createClass3.default)(WatchingYou, [{\\n key: \'watch\',\\n value: function watch(key, object) {\\n var _this = this;\\n\\n var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\\n\\n if (deep) {\\n this._watching[key] = Object.deepObserve(object, function (changes) {\\n changes.every(function (change) {\\n _this._fireEvent(key, change);\\n });\\n });\\n } else {\\n this._watching[key] = Object.observe(object, function (changes) {\\n changes.every(function (change) {\\n _this._fireEvent(key, change);\\n });\\n });\\n }\\n return this._watching[key];\\n }\\n }, {\\n key: \'observe\',\\n value: function observe(key, callback) {\\n this._observers.push({ key: key, callback: callback });\\n }\\n }, {\\n key: \'_fireEvent\',\\n value: function _fireEvent(key, change) {\\n\\n this._observers.filter(function (observe) {\\n return observe.key === key;\\n }).forEach(function (observe) {\\n observe.callback(change);\\n });\\n }\\n }]);\\n return WatchingYou;\\n}();\\n\\nexports.default = WatchingYou;\\n\\n/*let watchChanges = new WatchChanges();\\nlet p2pRequesterStub = watchChanges.watch(\'p2p\', {}, true);\\nlet stub = watchChanges.watch(\'stub\', {});\\n\\nwatchChanges.observe(\'p2p\', (change) => {\\n console.log(\'p2pRequesterStub: \' + change.name + \' - \' + JSON.stringify(change.newValue));\\n});\\n\\nwatchChanges.observe(\'p2p\', (change) => {\\n console.log(\'p2pRequesterStub: \' + change.name + \' - \' + JSON.stringify(change.newValue));\\n});\\n\\nwatchChanges.observe(\'stub\', (change) => {\\n console.log(\'stub \' + change.name);\\n});\\n\\np2pRequesterStub.a = {};\\nstub.b = {name: \'vitor\'};\\np2pRequesterStub.a.name = \'Hello\';\\nstub.b = {name: \'vitor\'};\\np2pRequesterStub.a.age = \'32\';\\np2pRequesterStub.a.name = \'World\';*/\\n\\nmodule.exports = exports[\'default\'];//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdXRpbHMvV2F0Y2hpbmdZb3UuanM/YzJiMCJdLCJuYW1lcyI6WyJXYXRjaGluZ1lvdSIsIl93YXRjaGluZyIsIl9vYnNlcnZlcnMiLCJrZXkiLCJvYmplY3QiLCJkZWVwIiwiT2JqZWN0IiwiZGVlcE9ic2VydmUiLCJjaGFuZ2VzIiwiZXZlcnkiLCJjaGFuZ2UiLCJfZmlyZUV2ZW50Iiwib2JzZXJ2ZSIsImNhbGxiYWNrIiwicHVzaCIsImZpbHRlciIsImZvckVhY2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7SUFFTUEsVztBQUVKLHlCQUFjO0FBQUE7O0FBQ1osU0FBS0MsU0FBTCxHQUFpQixFQUFqQjtBQUNBLFNBQUtDLFVBQUwsR0FBa0IsRUFBbEI7QUFDRDs7OzswQkFFS0MsRyxFQUFLQyxNLEVBQXNCO0FBQUE7O0FBQUEsVUFBZEMsSUFBYyx1RUFBUCxLQUFPOztBQUMvQixVQUFJQSxJQUFKLEVBQVU7QUFDUixhQUFLSixTQUFMLENBQWVFLEdBQWYsSUFBc0JHLE9BQU9DLFdBQVAsQ0FBbUJILE1BQW5CLEVBQTJCLFVBQUNJLE9BQUQsRUFBYTtBQUM1REEsa0JBQVFDLEtBQVIsQ0FBYyxVQUFDQyxNQUFELEVBQVk7QUFDeEIsa0JBQUtDLFVBQUwsQ0FBZ0JSLEdBQWhCLEVBQXFCTyxNQUFyQjtBQUNELFdBRkQ7QUFHRCxTQUpxQixDQUF0QjtBQUtELE9BTkQsTUFNTztBQUNMLGFBQUtULFNBQUwsQ0FBZUUsR0FBZixJQUFzQkcsT0FBT00sT0FBUCxDQUFlUixNQUFmLEVBQXVCLFVBQUNJLE9BQUQsRUFBYTtBQUN4REEsa0JBQVFDLEtBQVIsQ0FBYyxVQUFDQyxNQUFELEVBQVk7QUFDeEIsa0JBQUtDLFVBQUwsQ0FBZ0JSLEdBQWhCLEVBQXFCTyxNQUFyQjtBQUNELFdBRkQ7QUFHRCxTQUpxQixDQUF0QjtBQUtEO0FBQ0QsYUFBTyxLQUFLVCxTQUFMLENBQWVFLEdBQWYsQ0FBUDtBQUNEOzs7NEJBRU9BLEcsRUFBS1UsUSxFQUFVO0FBQ3JCLFdBQUtYLFVBQUwsQ0FBZ0JZLElBQWhCLENBQXFCLEVBQUNYLEtBQUtBLEdBQU4sRUFBV1UsVUFBVUEsUUFBckIsRUFBckI7QUFDRDs7OytCQUVVVixHLEVBQUtPLE0sRUFBUTs7QUFFdEIsV0FBS1IsVUFBTCxDQUFnQmEsTUFBaEIsQ0FBdUIsVUFBQ0gsT0FBRCxFQUFhO0FBQ2xDLGVBQU9BLFFBQVFULEdBQVIsS0FBZ0JBLEdBQXZCO0FBQ0QsT0FGRCxFQUVHYSxPQUZILENBRVcsVUFBQ0osT0FBRCxFQUFhO0FBQ3RCQSxnQkFBUUMsUUFBUixDQUFpQkgsTUFBakI7QUFDRCxPQUpEO0FBTUQ7Ozs7O2tCQUlZVixXOztBQUVmIiwiZmlsZSI6IjE5OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAncHJveHktb2JzZXJ2ZSc7XG5cbmNsYXNzIFdhdGNoaW5nWW91IHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl93YXRjaGluZyA9IHt9O1xuICAgIHRoaXMuX29ic2VydmVycyA9IFtdO1xuICB9XG5cbiAgd2F0Y2goa2V5LCBvYmplY3QsIGRlZXAgPSBmYWxzZSkge1xuICAgIGlmIChkZWVwKSB7XG4gICAgICB0aGlzLl93YXRjaGluZ1trZXldID0gT2JqZWN0LmRlZXBPYnNlcnZlKG9iamVjdCwgKGNoYW5nZXMpID0+IHtcbiAgICAgICAgY2hhbmdlcy5ldmVyeSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZmlyZUV2ZW50KGtleSwgY2hhbmdlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fd2F0Y2hpbmdba2V5XSA9IE9iamVjdC5vYnNlcnZlKG9iamVjdCwgKGNoYW5nZXMpID0+IHtcbiAgICAgICAgY2hhbmdlcy5ldmVyeSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZmlyZUV2ZW50KGtleSwgY2hhbmdlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3dhdGNoaW5nW2tleV07XG4gIH1cblxuICBvYnNlcnZlKGtleSwgY2FsbGJhY2spIHtcbiAgICB0aGlzLl9vYnNlcnZlcnMucHVzaCh7a2V5OiBrZXksIGNhbGxiYWNrOiBjYWxsYmFja30pO1xuICB9XG5cbiAgX2ZpcmVFdmVudChrZXksIGNoYW5nZSkge1xuXG4gICAgdGhpcy5fb2JzZXJ2ZXJzLmZpbHRlcigob2JzZXJ2ZSkgPT4ge1xuICAgICAgcmV0dXJuIG9ic2VydmUua2V5ID09PSBrZXk7XG4gICAgfSkuZm9yRWFjaCgob2JzZXJ2ZSkgPT4ge1xuICAgICAgb2JzZXJ2ZS5jYWxsYmFjayhjaGFuZ2UpO1xuICAgIH0pO1xuXG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBXYXRjaGluZ1lvdTtcblxuLypsZXQgd2F0Y2hDaGFuZ2VzID0gbmV3IFdhdGNoQ2hhbmdlcygpO1xubGV0IHAycFJlcXVlc3RlclN0dWIgPSB3YXRjaENoYW5nZXMud2F0Y2goJ3AycCcsIHt9LCB0cnVlKTtcbmxldCBzdHViID0gd2F0Y2hDaGFuZ2VzLndhdGNoKCdzdHViJywge30pO1xuXG53YXRjaENoYW5nZXMub2JzZXJ2ZSgncDJwJywgKGNoYW5nZSkgPT4ge1xuICBjb25zb2xlLmxvZygncDJwUmVxdWVzdGVyU3R1YjogJyArIGNoYW5nZS5uYW1lICsgJyAtICcgKyBKU09OLnN0cmluZ2lmeShjaGFuZ2UubmV3VmFsdWUpKTtcbn0pO1xuXG53YXRjaENoYW5nZXMub2JzZXJ2ZSgncDJwJywgKGNoYW5nZSkgPT4ge1xuICBjb25zb2xlLmxvZygncDJwUmVxdWVzdGVyU3R1YjogJyArIGNoYW5nZS5uYW1lICsgJyAtICcgKyBKU09OLnN0cmluZ2lmeShjaGFuZ2UubmV3VmFsdWUpKTtcbn0pO1xuXG53YXRjaENoYW5nZXMub2JzZXJ2ZSgnc3R1YicsIChjaGFuZ2UpID0+IHtcbiAgY29uc29sZS5sb2coJ3N0dWIgJyArIGNoYW5nZS5uYW1lKTtcbn0pO1xuXG5wMnBSZXF1ZXN0ZXJTdHViLmEgPSB7fTtcbnN0dWIuYiA9IHtuYW1lOiAndml0b3InfTtcbnAycFJlcXVlc3RlclN0dWIuYS5uYW1lID0gJ0hlbGxvJztcbnN0dWIuYiA9IHtuYW1lOiAndml0b3InfTtcbnAycFJlcXVlc3RlclN0dWIuYS5hZ2UgPSAnMzInO1xucDJwUmVxdWVzdGVyU3R1Yi5hLm5hbWUgPSAnV29ybGQnOyovXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvdXRpbHMvV2F0Y2hpbmdZb3UuanMiXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///199\\n")},23:function(module,exports){eval("module.exports = function (it) {\\n if (typeof it != \'function\') throw TypeError(it + \' is not a function!\');\\n return it;\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIyMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAyM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQiXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///23\\n")},26:function(module,exports,__webpack_require__){eval("// 7.1.1 ToPrimitive(input [, PreferredType])\\nvar isObject = __webpack_require__(7);\\n// instead of the ES6 spec version, we didn\'t implement @@toPrimitive case\\n// and the second argument - flag - preferred type is a string\\nmodule.exports = function (it, S) {\\n if (!isObject(it)) return it;\\n var fn, val;\\n if (S && typeof (fn = it.toString) == \'function\' && !isObject(val = fn.call(it))) return val;\\n if (typeof (fn = it.valueOf) == \'function\' && !isObject(val = fn.call(it))) return val;\\n if (!S && typeof (fn = it.toString) == \'function\' && !isObject(val = fn.call(it))) return val;\\n throw TypeError(\\"Can\'t convert object to primitive value\\");\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIyNi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCJdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///26\\n")},28:function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(7);\\nvar document = __webpack_require__(1).document;\\n// typeof document.createElement is \'object\' in old IE\\nvar is = isObject(document) && isObject(document.createElement);\\nmodule.exports = function (it) {\\n return is ? document.createElement(it) : {};\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIyOC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDI4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCJdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///28\\n")},3:function(module,exports,__webpack_require__){"use strict";eval(\'\\n\\nexports.__esModule = true;\\n\\nexports.default = function (instance, Constructor) {\\n if (!(instance instanceof Constructor)) {\\n throw new TypeError("Cannot call a class as a function");\\n }\\n};//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzY2YjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qc1xuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQiXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///3\\n\')},39:function(module,exports,__webpack_require__){eval("module.exports = !__webpack_require__(4) && !__webpack_require__(13)(function () {\\n return Object.defineProperty(__webpack_require__(28)(\'div\'), \'a\', { get: function () { return 7; } }).a != 7;\\n});\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxxRUFBc0UsbUJBQW1CLFVBQVUsRUFBRSxFQUFFO0FBQ3ZHLENBQUMiLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzXG4vLyBtb2R1bGUgaWQgPSAzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQiXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///39\\n")},4:function(module,exports,__webpack_require__){eval("// Thank\'s IE8 for his funny defineProperty\\nmodule.exports = !__webpack_require__(13)(function () {\\n return Object.defineProperty({}, \'a\', { get: function () { return 7; } }).a != 7;\\n});\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzP2Y4NGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBLGlDQUFpQyxRQUFRLG1CQUFtQixVQUFVLEVBQUUsRUFBRTtBQUMxRSxDQUFDIiwiZmlsZSI6IjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQiXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///4\\n")},5:function(module,exports,__webpack_require__){"use strict";eval(\'\\n\\nexports.__esModule = true;\\n\\nvar _defineProperty = __webpack_require__(59);\\n\\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nexports.default = function () {\\n function defineProperties(target, props) {\\n for (var i = 0; i < props.length; i++) {\\n var descriptor = props[i];\\n descriptor.enumerable = descriptor.enumerable || false;\\n descriptor.configurable = true;\\n if ("value" in descriptor) descriptor.writable = true;\\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\\n }\\n }\\n\\n return function (Constructor, protoProps, staticProps) {\\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\\n if (staticProps) defineProperties(Constructor, staticProps);\\n return Constructor;\\n };\\n}();//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzP2MzMTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUEsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIik7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVmaW5lUHJvcGVydHkpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgICAgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgICBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICAgIGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfTtcbn0oKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanNcbi8vIG1vZHVsZSBpZCA9IDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDEyIDEzIDE0Il0sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///5\\n\')},59:function(module,exports,__webpack_require__){eval(\'module.exports = { "default": __webpack_require__(61), __esModule: true };//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/MGI4MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IiLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA1OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTIgMTMgMTQiXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///59\\n\')},6:function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\\nvar core = __webpack_require__(0);\\nvar ctx = __webpack_require__(14);\\nvar hide = __webpack_require__(11);\\nvar has = __webpack_require__(10);\\nvar PROTOTYPE = \'prototype\';\\n\\nvar $export = function (type, name, source) {\\n var IS_FORCED = type & $export.F;\\n var IS_GLOBAL = type & $export.G;\\n var IS_STATIC = type & $export.S;\\n var IS_PROTO = type & $export.P;\\n var IS_BIND = type & $export.B;\\n var IS_WRAP = type & $export.W;\\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\\n var expProto = exports[PROTOTYPE];\\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\\n var key, own, out;\\n if (IS_GLOBAL) source = name;\\n for (key in source) {\\n // contains in native\\n own = !IS_FORCED && target && target[key] !== undefined;\\n if (own && has(exports, key)) continue;\\n // export native or passed\\n out = own ? target[key] : source[key];\\n // prevent global pollution for namespaces\\n exports[key] = IS_GLOBAL && typeof target[key] != \'function\' ? source[key]\\n // bind timers to global for call from export context\\n : IS_BIND && own ? ctx(out, global)\\n // wrap global constructors for prevent change them in library\\n : IS_WRAP && target[key] == out ? (function (C) {\\n var F = function (a, b, c) {\\n if (this instanceof C) {\\n switch (arguments.length) {\\n case 0: return new C();\\n case 1: return new C(a);\\n case 2: return new C(a, b);\\n } return new C(a, b, c);\\n } return C.apply(this, arguments);\\n };\\n F[PROTOTYPE] = C[PROTOTYPE];\\n return F;\\n // make static versions for prototype methods\\n })(out) : IS_PROTO && typeof out == \'function\' ? ctx(Function.call, out) : out;\\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\\n if (IS_PROTO) {\\n (exports.virtual || (exports.virtual = {}))[key] = out;\\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\\n }\\n }\\n};\\n// type bitmap\\n$export.F = 1; // forced\\n$export.G = 2; // global\\n$export.S = 4; // static\\n$export.P = 8; // proto\\n$export.B = 16; // bind\\n$export.W = 32; // wrap\\n$export.U = 64; // safe\\n$export.R = 128; // real proto method for `library`\\nmodule.exports = $export;\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qcz85MGNkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTtBQUNqRTtBQUNBLGtGQUFrRjtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGNBQWM7QUFDZCxlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixnQkFBZ0I7QUFDaEIiLCJmaWxlIjoiNi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVztcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGtleSwgb3duLCBvdXQ7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG93biAmJiBoYXMoZXhwb3J0cywga2V5KSkgY29udGludWU7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKVxuICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG4gICAgOiBJU19XUkFQICYmIHRhcmdldFtrZXldID09IG91dCA/IChmdW5jdGlvbiAoQykge1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEMpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmIChJU19QUk9UTykge1xuICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0O1xuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcbiAgICAgIGlmICh0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKSBoaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qc1xuLy8gbW9kdWxlIGlkID0gNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQiXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///6\\n")},61:function(module,exports,__webpack_require__){eval("__webpack_require__(62);\\nvar $Object = __webpack_require__(0).Object;\\nmodule.exports = function defineProperty(it, key, desc) {\\n return $Object.defineProperty(it, key, desc);\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ZjViMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjYxLmpzIiwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKSB7XG4gIHJldHVybiAkT2JqZWN0LmRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA2MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTIgMTMgMTQiXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///61\\n")},62:function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(6);\\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\\n$export($export.S + $export.F * !__webpack_require__(4), \'Object\', { defineProperty: __webpack_require__(8).f });\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanM/OTgyOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0Esb0VBQXVFLDJDQUE0QyIsImZpbGUiOiI2Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuNCAvIDE1LjIuMy42IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSwgJ09iamVjdCcsIHsgZGVmaW5lUHJvcGVydHk6IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eS5qc1xuLy8gbW9kdWxlIGlkID0gNjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDEyIDEzIDE0Il0sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///62\\n")},7:function(module,exports){eval("module.exports = function (it) {\\n return typeof it === \'object\' ? it !== null : typeof it === \'function\';\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcz8xMmE4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSIsImZpbGUiOiI3LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCJdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///7\\n")},8:function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(9);\\nvar IE8_DOM_DEFINE = __webpack_require__(39);\\nvar toPrimitive = __webpack_require__(26);\\nvar dP = Object.defineProperty;\\n\\nexports.f = __webpack_require__(4) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\\n anObject(O);\\n P = toPrimitive(P, true);\\n anObject(Attributes);\\n if (IE8_DOM_DEFINE) try {\\n return dP(O, P, Attributes);\\n } catch (e) { /* empty */ }\\n if (\'get\' in Attributes || \'set\' in Attributes) throw TypeError(\'Accessors not supported!\');\\n if (\'value\' in Attributes) O[P] = Attributes.value;\\n return O;\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcz83YWYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsWUFBWTtBQUNmO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjguanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBkUCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIScpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQiXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///8\\n")},9:function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(7);\\nmodule.exports = function (it) {\\n if (!isObject(it)) throw TypeError(it + \' is not an object!\');\\n return it;\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcz9lZmIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiOS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1vYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0Il0sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///9\\n")}})});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3NlcnZpY2UtZnJhbWV3b3JrL2Rpc3QvVXRpbHMuanM/MDY0YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB2ZXJzaW9uOiAwLjguMFxuLy8gZGF0ZTogV2VkIEFwciAxMSAyMDE4IDA5OjQ2OjQxIEdNVCswMTAwIChXRVNUKVxuLy8gbGljZW5jZTogXG4vKipcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKiovXG5cblxuIWZ1bmN0aW9uKHQsYyl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9YygpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoXCJVdGlsc1wiLFtdLGMpOlwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuVXRpbHM9YygpOih0W1wiXCJdPXRbXCJcIl18fHt9LHRbXCJcIl0uVXRpbHM9YygpKX0oXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBjPXt9O2Z1bmN0aW9uIGUobil7aWYoY1tuXSlyZXR1cm4gY1tuXS5leHBvcnRzO3ZhciBsPWNbbl09e2k6bixsOiExLGV4cG9ydHM6e319O3JldHVybiB0W25dLmNhbGwobC5leHBvcnRzLGwsbC5leHBvcnRzLGUpLGwubD0hMCxsLmV4cG9ydHN9cmV0dXJuIGUubT10LGUuYz1jLGUuZD1mdW5jdGlvbih0LGMsbil7ZS5vKHQsYyl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGMse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpufSl9LGUubj1mdW5jdGlvbih0KXt2YXIgYz10JiZ0Ll9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gdC5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiB0fTtyZXR1cm4gZS5kKGMsXCJhXCIsYyksY30sZS5vPWZ1bmN0aW9uKHQsYyl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGMpfSxlLnA9XCJcIixlKGUucz0xOTgpfSh7MDpmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7ZXZhbChcInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjUuNScgfTtcXG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxcbi8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5dWIyUmxYMjF2WkhWc1pYTXZZMjl5WlMxcWN5OXNhV0p5WVhKNUwyMXZaSFZzWlhNdlgyTnZjbVV1YW5NL01UVmxNQ0pkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN3MlFrRkJOa0k3UVVGRE4wSXNkVU5CUVhWRElpd2labWxzWlNJNklqQXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKMllYSWdZMjl5WlNBOUlHMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2V5QjJaWEp6YVc5dU9pQW5NaTQxTGpVbklIMDdYRzVwWmlBb2RIbHdaVzltSUY5ZlpTQTlQU0FuYm5WdFltVnlKeWtnWDE5bElEMGdZMjl5WlRzZ0x5OGdaWE5zYVc1MExXUnBjMkZpYkdVdGJHbHVaU0J1YnkxMWJtUmxabHh1WEc1Y2JseHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THlCWFJVSlFRVU5MSUVaUFQxUkZVbHh1THk4Z0xpOXViMlJsWDIxdlpIVnNaWE12WTI5eVpTMXFjeTlzYVdKeVlYSjVMMjF2WkhWc1pYTXZYMk52Y21VdWFuTmNiaTh2SUcxdlpIVnNaU0JwWkNBOUlEQmNiaTh2SUcxdlpIVnNaU0JqYUhWdWEzTWdQU0F3SURFZ01pQXpJRFFnTlNBMklEY2dPQ0E1SURFd0lERXhJREV5SURFeklERTBJbDBzSW5OdmRYSmpaVkp2YjNRaU9pSWlmUT09XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzBcXG5cIil9LDE6ZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpe2V2YWwoXCIvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcXG4vLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOXViMlJsWDIxdlpIVnNaWE12WTI5eVpTMXFjeTlzYVdKeVlYSjVMMjF2WkhWc1pYTXZYMmRzYjJKaGJDNXFjejlsWTJGaUlsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTeDVRMEZCZVVNaUxDSm1hV3hsSWpvaU1TNXFjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4dklHaDBkSEJ6T2k4dloybDBhSFZpTG1OdmJTOTZiRzlwY205amF5OWpiM0psTFdwekwybHpjM1ZsY3k4NE5pTnBjM04xWldOdmJXMWxiblF0TVRFMU56VTVNREk0WEc1MllYSWdaMnh2WW1Gc0lEMGdiVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQjBlWEJsYjJZZ2QybHVaRzkzSUNFOUlDZDFibVJsWm1sdVpXUW5JQ1ltSUhkcGJtUnZkeTVOWVhSb0lEMDlJRTFoZEdoY2JpQWdQeUIzYVc1a2IzY2dPaUIwZVhCbGIyWWdjMlZzWmlBaFBTQW5kVzVrWldacGJtVmtKeUFtSmlCelpXeG1MazFoZEdnZ1BUMGdUV0YwYUNBL0lITmxiR1pjYmlBZ0x5OGdaWE5zYVc1MExXUnBjMkZpYkdVdGJtVjRkQzFzYVc1bElHNXZMVzVsZHkxbWRXNWpYRzRnSURvZ1JuVnVZM1JwYjI0b0ozSmxkSFZ5YmlCMGFHbHpKeWtvS1R0Y2JtbG1JQ2gwZVhCbGIyWWdYMTluSUQwOUlDZHVkVzFpWlhJbktTQmZYMmNnUFNCbmJHOWlZV3c3SUM4dklHVnpiR2x1ZEMxa2FYTmhZbXhsTFd4cGJtVWdibTh0ZFc1a1pXWmNibHh1WEc1Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeThnVjBWQ1VFRkRTeUJHVDA5VVJWSmNiaTh2SUM0dmJtOWtaVjl0YjJSMWJHVnpMMk52Y21VdGFuTXZiR2xpY21GeWVTOXRiMlIxYkdWekwxOW5iRzlpWVd3dWFuTmNiaTh2SUcxdlpIVnNaU0JwWkNBOUlERmNiaTh2SUcxdlpIVnNaU0JqYUhWdWEzTWdQU0F3SURFZ01pQXpJRFFnTlNBMklEY2dPQ0E1SURFd0lERXhJREV5SURFeklERTBJbDBzSW5OdmRYSmpaVkp2YjNRaU9pSWlmUT09XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzFcXG5cIil9LDEwOmZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXtldmFsKFwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XFxufTtcXG4vLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOXViMlJsWDIxdlpIVnNaWE12WTI5eVpTMXFjeTlzYVdKeVlYSjVMMjF2WkhWc1pYTXZYMmhoY3k1cWN6OHdaall5SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxIVkNRVUYxUWp0QlFVTjJRanRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pTVRBdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUoyWVhJZ2FHRnpUM2R1VUhKdmNHVnlkSGtnUFNCN2ZTNW9ZWE5QZDI1UWNtOXdaWEowZVR0Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1puVnVZM1JwYjI0Z0tHbDBMQ0JyWlhrcElIdGNiaUFnY21WMGRYSnVJR2hoYzA5M2JsQnliM0JsY25SNUxtTmhiR3dvYVhRc0lHdGxlU2s3WEc1OU8xeHVYRzVjYmx4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeUJYUlVKUVFVTkxJRVpQVDFSRlVseHVMeThnTGk5dWIyUmxYMjF2WkhWc1pYTXZZMjl5WlMxcWN5OXNhV0p5WVhKNUwyMXZaSFZzWlhNdlgyaGhjeTVxYzF4dUx5OGdiVzlrZFd4bElHbGtJRDBnTVRCY2JpOHZJRzF2WkhWc1pTQmphSFZ1YTNNZ1BTQXdJREVnTWlBeklEUWdOU0EySURjZ09DQTVJREV3SURFeElERXlJREV6SURFMElsMHNJbk52ZFhKalpWSnZiM1FpT2lJaWZRPT1cXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vMTBcXG5cIil9LDExOmZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pe2V2YWwoXCJ2YXIgZFAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xcbnZhciBjcmVhdGVEZXNjID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XFxubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xcbiAgcmV0dXJuIGRQLmYob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcXG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcXG4gIHJldHVybiBvYmplY3Q7XFxufTtcXG4vLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOXViMlJsWDIxdlpIVnNaWE12WTI5eVpTMXFjeTlzYVdKeVlYSjVMMjF2WkhWc1pYTXZYMmhwWkdVdWFuTS9PRFE1WXlKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJMRU5CUVVNN1FVRkRSRHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pTVRFdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUoyWVhJZ1pGQWdQU0J5WlhGMWFYSmxLQ2N1TDE5dlltcGxZM1F0WkhBbktUdGNiblpoY2lCamNtVmhkR1ZFWlhOaklEMGdjbVZ4ZFdseVpTZ25MaTlmY0hKdmNHVnlkSGt0WkdWell5Y3BPMXh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0J5WlhGMWFYSmxLQ2N1TDE5a1pYTmpjbWx3ZEc5eWN5Y3BJRDhnWm5WdVkzUnBiMjRnS0c5aWFtVmpkQ3dnYTJWNUxDQjJZV3gxWlNrZ2UxeHVJQ0J5WlhSMWNtNGdaRkF1WmlodlltcGxZM1FzSUd0bGVTd2dZM0psWVhSbFJHVnpZeWd4TENCMllXeDFaU2twTzF4dWZTQTZJR1oxYm1OMGFXOXVJQ2h2WW1wbFkzUXNJR3RsZVN3Z2RtRnNkV1VwSUh0Y2JpQWdiMkpxWldOMFcydGxlVjBnUFNCMllXeDFaVHRjYmlBZ2NtVjBkWEp1SUc5aWFtVmpkRHRjYm4wN1hHNWNibHh1WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZJRmRGUWxCQlEwc2dSazlQVkVWU1hHNHZMeUF1TDI1dlpHVmZiVzlrZFd4bGN5OWpiM0psTFdwekwyeHBZbkpoY25rdmJXOWtkV3hsY3k5ZmFHbGtaUzVxYzF4dUx5OGdiVzlrZFd4bElHbGtJRDBnTVRGY2JpOHZJRzF2WkhWc1pTQmphSFZ1YTNNZ1BTQXdJREVnTWlBeklEUWdOU0EySURjZ09DQTVJREV3SURFeElERXlJREV6SURFMElsMHNJbk52ZFhKalpWSnZiM1FpT2lJaWZRPT1cXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vMTFcXG5cIil9LDEyMjpmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7ZXZhbCgnLy8gICAgIHByb3h5LW9ic2VydmUgdjAuMC4xOFxcclxcbi8vICAgICBDb3B5cmlnaHQgKGMpIDIwMTUsIDIwMTYgU2ltb24gWS4gQmxhY2t3ZWxsLCBBbnlXaGljaFdheVxcclxcbi8vICAgICBNSVQgTGljZW5zZSAtIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcXHJcXG4oZnVuY3Rpb24oKSB7XFxyXFxuXFx0XCJ1c2Ugc3RyaWN0XCI7XFxyXFxuXFx0Ly8gQ3JlYXRlcyBhbmQgcmV0dXJucyBhIFByb3h5IHdyYXBwaW5nIGEgdGFyZ2V0IHNvIHRoYXQgYWxsIGNoYW5nZXMgY2FuIGJlIHRyYXBwZWQgYW5kIGZvcndhcmRlZCB0b1xcclxcblxcdC8vIGEgY2FsbGJhY2suIFRoZSBjYWxsYmFjayB0YWtlcyBhbiBhcnJheSBvZiBjaGFuZ2VzIGp1c3QgbGlrZSB0aGUgdHJhZGl0aW9uYWwgb3JpZ2luYWwgQ2hyb21lIE9iamVjdC5vYnNlcnZlXFxyXFxuXFx0Ly8ge29iamVjdDo8b2JqZWN0IGNoYW5nZWQ+LG5hbWU6PGZpZWxkIGNoYW5nZWQ+LHR5cGU6YWRkfHVwZGF0ZXxkZWxldGV8cmVjb25maWd1cmV8cHJldmVudEV4dGVuc2lvbnN8c2V0UHJvdG90eXBlLG9sZFZhbHVlOjxvbGQgdmFsdWUgaWYgdXBkYXRlIHwgZGVsZXRlPn1cXHJcXG5cXHQvLyBUaGUgYWNjZXB0bGlzdCBjYW4gYmUgYWRkfHVwZGF0ZXxkZWxldGV8cmVjb25maWd1cmV8cHJldmVudEV4dGVuc2lvbnN8c2V0UHJvdG90eXBlLlxcclxcblxcdC8vIHYgMC4wLjEwIHRvIHN1cHBvcnQgcGF1c2luZyBhbmQgcmVzdGFydGluZyBvYnNlcnZhdGlvbiB0d28gYWRkaXRpb25hbCBjb25zdHJ1Y3RvciBhcmd1bWVudHMgYXJlIGF2YWlsYWJsZSB0byBPYmplY3Qub2JzZXJ2ZTpcXHJcXG5cXHQvLyBwYXVzYWJsZSAtIGNyZWF0ZSB0aGUgT2JzZXJ2ZXIgc28gaXQgY2FuIGJlIHBhdXNlZFxcclxcblxcdC8vIHBhdXNlIC0gY3JlYXRlIG9ic2VydmVyIGluIHBhdXNlZCBzdGF0ZVxcclxcblxcdC8vIGlmIHBhdXNhYmxlIGlzIHRydWUgdGhlbiBhbiBhZGRpdGlvbmFsIG1ldGhvZCBkZWxpdmVyKGlnbm9yZVByZXZpb3VzKSBpcyBhdmFpbGFibGUgdG8gc3RhcnQgZGVsaXZlcnlcXHJcXG5cXHQvLyB0byBwYXVzZSBkZWxpdmVyeSBzZXQgYSBwcm9wZXJ0eSBjYWxsZWQgcGF1c2Ugb24gdGhlIGZ1bmN0aW9uIGRlbGl2ZXIgdG8gdHJ1ZVxcclxcblxcdC8vIHBhdXNhYmxlIGlzIG9wdGlvbmFsIHRvIHJlZHVjZSB0aGUgY2hhbmNlIG9mIHNoYWRvd2luZyBhIHByb3BlcnR5IG9yIG1ldGhvZCBvbiBhbnkgZXhpc3RpbmcgY29kZSBjYWxsZWQgZGVsaXZlclxcclxcblxcdGlmKCFPYmplY3Qub2JzZXJ2ZSAmJiB0eXBlb2YoUHJveHkpPT09XCJmdW5jdGlvblwiKSB7XFxyXFxuXFx0XFx0ZnVuY3Rpb24gT2JzZXJ2ZXIodGFyZ2V0LGNhbGxiYWNrLGFjY2VwdGxpc3QscGF1c2FibGUscGF1c2UsZGVsYXkpIHtcXHJcXG5cXHQgICAgXFx0dmFyIG1lID0gdGhpcywgcHJveHk7XFxyXFxuXFx0ICAgIFxcdGZ1bmN0aW9uIGRlbGl2ZXIoaWdub3JlUHJldmlvdXMsZGVsYXkpIHtcXHJcXG5cXHQgICAgXFx0XFx0ZGVsaXZlci5kZWxheSA9IGRlbGF5O1xcclxcblxcdCAgICBcXHRcXHRpZighZGVsaXZlci5wYXVzZSkge1xcclxcblxcdCAgICAgICAgXFx0XFx0aWYobWUuY2hhbmdlc2V0Lmxlbmd0aD4wKSB7XFxyXFxuXFx0ICAgICAgICBcXHRcXHRcXHRpZighaWdub3JlUHJldmlvdXMpIHtcXHJcXG5cXHRcXHQgICAgXFx0ICAgIFxcdFxcdHZhciBjaGFuZ2VzID0gbWUuY2hhbmdlc2V0LmZpbHRlcihmdW5jdGlvbihjaGFuZ2UpIHsgcmV0dXJuICFhY2NlcHRsaXN0IHx8IGFjY2VwdGxpc3QuaW5kZXhPZihjaGFuZ2UudHlwZSk+PTA7IH0pO1xcclxcblxcdFxcdCAgICAgICAgXFx0XFx0XFx0aWYoY2hhbmdlcy5sZW5ndGg+MCkge1xcclxcblxcdFxcdCAgICAgICAgXFx0XFx0XFx0XFx0Y2FsbGJhY2soY2hhbmdlcyk7XFxyXFxuXFx0XFx0ICAgICAgICBcXHRcXHRcXHR9XFxyXFxuXFx0ICAgICAgICBcXHRcXHRcXHR9XFxyXFxuXFx0ICAgICAgICBcXHRcXHRcXHRtZS5jaGFuZ2VzZXQgPSBbXTtcXHJcXG5cXHQgICAgICAgIFxcdFxcdH1cXHJcXG5cXHQgICAgXFx0XFx0fVxcclxcblxcdCAgICBcXHR9XFxyXFxuXFx0ICAgIFxcdGRlbGl2ZXIucGF1c2UgPSBwYXVzZTtcXHJcXG5cXHQgICAgXFx0ZGVsaXZlci5kZWxheSA9IGRlbGF5O1xcclxcblxcdFxcdCAgICBtZS5nZXQgPSBmdW5jdGlvbih0YXJnZXQsIHByb3BlcnR5KSB7XFxyXFxuXFx0XFx0ICAgIFxcdGlmKHByb3BlcnR5PT09XCJfX29ic2VydmVyX19cIikge1xcclxcblxcdFxcdCAgICBcXHRcXHRyZXR1cm4gbWU7XFxyXFxuXFx0XFx0ICAgIFxcdH1cXHJcXG5cXHRcXHQgICAgXFx0aWYocHJvcGVydHk9PT1cInVub2JzZXJ2ZVwiKSB7XFxyXFxuXFx0XFx0ICAgIFxcdFxcdHJldHVybiBmdW5jdGlvbigpIHtcXHJcXG5cXHRcXHQgICAgXFx0XFx0XFx0T2JqZWN0LnVub2JzZXJ2ZSh0YXJnZXQpO1xcclxcblxcdFxcdCAgICBcXHRcXHRcXHRyZXR1cm4gdGFyZ2V0O1xcclxcblxcdFxcdCAgICBcXHRcXHR9O1xcclxcblxcdFxcdCAgICBcXHR9XFxyXFxuXFx0XFx0ICAgIFxcdGlmKHByb3BlcnR5PT09XCJkZWxpdmVyXCIpIHtcXHJcXG5cXHRcXHQgICAgXFx0XFx0cmV0dXJuIGRlbGl2ZXI7XFxyXFxuXFx0XFx0ICAgIFxcdH1cXHJcXG5cXHRcXHQgICAgXFx0cmV0dXJuIHRhcmdldFtwcm9wZXJ0eV07XFxyXFxuXFx0XFx0ICAgIH1cXHJcXG5cXHQgICAgXFx0bWUudGFyZ2V0ID0gdGFyZ2V0O1xcclxcblxcdCAgICBcXHRtZS5jaGFuZ2VzZXQgPSBbXTtcXHJcXG5cXHQgICAgXFx0aWYoIW1lLnRhcmdldC5fX29ic2VydmVyQ2FsbGJhY2tzX18pIHtcXHJcXG5cXHQgICAgXFx0XFx0Ly8gX19vYnNlcnZlckNhbGxiYWNrc19fIGlzIHVzZWQgYXMgYW4gaW5kZXggdG8gZ2V0IGF0IHRoZSBwcm94eSB3aGljaCBpcyB0aGUgb2JzZXJ2ZXIsIHNvIHdlIGNhbiB1bm9ic2VydmVcXHJcXG5cXHQgICAgXFx0XFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCxcIl9fb2JzZXJ2ZXJDYWxsYmFja3NfX1wiLHtlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlLHdyaXRhYmxlOmZhbHNlLHZhbHVlOltdfSk7XFxyXFxuXFx0ICAgIFxcdFxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsXCJfX29ic2VydmVyc19fXCIse2VudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWUsd3JpdGFibGU6ZmFsc2UsdmFsdWU6W119KTtcXHJcXG5cXHQgICAgXFx0fVxcclxcblxcdCAgICBcXHRtZS50YXJnZXQuX19vYnNlcnZlckNhbGxiYWNrc19fLnB1c2goY2FsbGJhY2spO1xcclxcblxcdCAgICBcXHRtZS50YXJnZXQuX19vYnNlcnZlcnNfXy5wdXNoKHRoaXMpO1xcclxcblxcdCAgICBcXHRwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsbWUpO1xcclxcblxcdCAgICBcXHRkZWxpdmVyKGZhbHNlLGRlbGF5KTtcXHJcXG5cXHQgICAgXFx0cmV0dXJuIHByb3h5O1xcclxcblxcdCAgICB9XFxyXFxuXFx0XFx0T2JzZXJ2ZXIucHJvdG90eXBlLmRlbGl2ZXIgPSBmdW5jdGlvbigpIHtcXHJcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5nZXQobnVsbCxcImRlbGl2ZXJcIik7XFxyXFxuXFx0XFx0fVxcclxcblxcdCAgICBPYnNlcnZlci5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24odGFyZ2V0LCBwcm9wZXJ0eSwgdmFsdWUpIHsgLy8gLCByZWNlaXZlclxcclxcblxcdCAgICBcXHR2YXIgb2xkdmFsdWUgPSB0YXJnZXRbcHJvcGVydHldO1xcclxcblxcdCAgICBcXHR2YXIgdHlwZSA9IChvbGR2YWx1ZT09PXVuZGVmaW5lZCA/IFwiYWRkXCIgOiBcInVwZGF0ZVwiKTtcXHJcXG5cXHQgICAgXFx0dGFyZ2V0W3Byb3BlcnR5XSA9IHZhbHVlO1xcclxcblxcdCAgICBcXHRpZih0YXJnZXQuX19vYnNlcnZlcnNfXy5pbmRleE9mKHRoaXMpPj0wICYmICghdGhpcy5hY2NlcHRsaXN0IHx8IHRoaXMuYWNjZXB0bGlzdC5pbmRleE9mKHR5cGUpPj0wKSkge1xcclxcblxcdCAgICAgICAgXFx0dmFyIGNoYW5nZSA9IHtvYmplY3Q6dGFyZ2V0LG5hbWU6cHJvcGVydHksdHlwZTp0eXBlfSxcXHJcXG5cXHQgICAgICAgIFxcdFxcdHN0YXJ0ID0gdGhpcy5jaGFuZ2VzZXQubGVuZ3RoID09PSAwLFxcclxcblxcdCAgICAgICAgXFx0XFx0ZGVsaXZlciA9IHRoaXMuZGVsaXZlcigpO1xcclxcblxcdCAgICAgICAgXFx0aWYodHlwZT09PVwidXBkYXRlXCIpIHtcXHJcXG5cXHQgICAgICAgIFxcdFxcdGNoYW5nZS5vbGRWYWx1ZSA9IG9sZHZhbHVlO1xcclxcblxcdCAgICAgICAgXFx0fVxcclxcblxcdCAgICAgICAgXFx0dGhpcy5jaGFuZ2VzZXQucHVzaChjaGFuZ2UpO1xcclxcblxcdCAgICAgICAgXFx0aWYoc3RhcnQpIHtcXHJcXG5cXHQgICAgICAgIFxcdFxcdGRlbGl2ZXIoZmFsc2UsKHR5cGVvZihkZWxpdmVyLmRlbGF5KT09PVwibnVtYmVyXCIgPyBkZWxpdmVyLmRlbGF5IDogMTApKTtcXHJcXG5cXHQgICAgICAgIFxcdH1cXHJcXG5cXHQgICAgXFx0fVxcclxcblxcdCAgICBcXHRyZXR1cm4gdHJ1ZTtcXHJcXG5cXHQgICAgfTtcXHJcXG5cXHQgICAgT2JzZXJ2ZXIucHJvdG90eXBlLmRlbGV0ZVByb3BlcnR5ID0gZnVuY3Rpb24odGFyZ2V0LCBwcm9wZXJ0eSkge1xcclxcblxcdCAgICBcXHR2YXIgb2xkdmFsdWUgPSB0YXJnZXRbcHJvcGVydHldO1xcclxcblxcdCAgICBcXHQvL2lmKHR5cGVvZihvbGR2YWx1ZSkhPT1cInVuZGVmaW5lZFwiKSB7XFxyXFxuXFx0XFx0ICAgIFxcdGRlbGV0ZSB0YXJnZXRbcHJvcGVydHldO1xcclxcblxcdFxcdCAgICBcXHRpZih0YXJnZXQuX19vYnNlcnZlcnNfXy5pbmRleE9mKHRoaXMpPj0wICYmICF0aGlzLmFjY2VwdGxpc3QgfHwgdGhpcy5hY2NlcHRsaXN0LmluZGV4T2YoXCJkZWxldGVcIik+PTApIHtcXHJcXG5cXHRcXHQgICAgICAgIFxcdHZhciBjaGFuZ2UgPSB7b2JqZWN0OnRhcmdldCxuYW1lOnByb3BlcnR5LHR5cGU6XCJkZWxldGVcIixvbGRWYWx1ZTpvbGR2YWx1ZX0sXFxyXFxuXFx0XFx0ICAgICAgICBcXHRcXHRzdGFydCA9IHRoaXMuY2hhbmdlc2V0Lmxlbmd0aCA9PT0gMCxcXHJcXG5cXHRcXHQgICAgICAgIFxcdFxcdGRlbGl2ZXIgPSB0aGlzLmRlbGl2ZXIoKTtcXHJcXG5cXHRcXHQgICAgICAgIFxcdHRoaXMuY2hhbmdlc2V0LnB1c2goY2hhbmdlKTtcXHJcXG5cXHRcXHQgICAgICAgIFxcdGlmKHN0YXJ0KSB7XFxyXFxuXFx0XFx0ICAgICAgICBcXHRcXHRkZWxpdmVyKGZhbHNlLCh0eXBlb2YoZGVsaXZlci5kZWxheSk9PT1cIm51bWJlclwiID8gZGVsaXZlci5kZWxheSA6IDEwKSk7XFxyXFxuXFx0XFx0ICAgICAgICBcXHR9XFxyXFxuXFx0XFx0ICAgIFxcdH1cXHJcXG5cXHQgICAgXFx0Ly99XFxyXFxuXFx0ICAgIFxcdHJldHVybiB0cnVlO1xcclxcblxcdCAgICB9O1xcclxcblxcdCAgICBPYnNlcnZlci5wcm90b3R5cGUuZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbih0YXJnZXQsIHByb3BlcnR5LCBkZXNjcmlwdG9yKSB7XFxyXFxuXFx0ICAgIFxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5LCBkZXNjcmlwdG9yKTtcXHJcXG5cXHQgICAgXFx0aWYodGFyZ2V0Ll9fb2JzZXJ2ZXJzX18uaW5kZXhPZih0aGlzKT49MCAmJiAhdGhpcy5hY2NlcHRsaXN0IHx8IHRoaXMuYWNjZXB0bGlzdC5pbmRleE9mKFwicmVjb25maWd1cmVcIik+PTApIHtcXHJcXG5cXHQgICAgICAgIFxcdHZhciBjaGFuZ2UgPSB7b2JqZWN0OnRhcmdldCxuYW1lOnByb3BlcnR5LHR5cGU6XCJyZWNvbmZpZ3VyZVwifSxcXHJcXG4gICAgICAgIFxcdFxcdFxcdHN0YXJ0ID0gdGhpcy5jaGFuZ2VzZXQubGVuZ3RoID09PSAwLFxcclxcbiAgICAgICAgXFx0XFx0XFx0ZGVsaXZlciA9IHRoaXMuZGVsaXZlcigpO1xcclxcblxcdCAgICAgICAgXFx0dGhpcy5jaGFuZ2VzZXQucHVzaChjaGFuZ2UpO1xcclxcblxcdCAgICAgICAgXFx0aWYoc3RhcnQpIHtcXHJcXG5cXHQgICAgICAgIFxcdFxcdGRlbGl2ZXIoZmFsc2UsKHR5cGVvZihkZWxpdmVyLmRlbGF5KT09PVwibnVtYmVyXCIgPyBkZWxpdmVyLmRlbGF5IDogMTApKTtcXHJcXG5cXHQgICAgICAgIFxcdH1cXHJcXG5cXHQgICAgXFx0fVxcclxcblxcdCAgICBcXHRyZXR1cm4gdHJ1ZTtcXHJcXG5cXHQgICAgfTtcXHJcXG5cXHQgICAgT2JzZXJ2ZXIucHJvdG90eXBlLnNldFByb3RvdHlwZU9mID0gZnVuY3Rpb24odGFyZ2V0LCBwcm90b3R5cGUpIHtcXHJcXG5cXHQgICAgXFx0dmFyIG9sZHZhbHVlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldCk7XFxyXFxuXFx0ICAgIFxcdE9iamVjdC5zZXRQcm90b3R5cGVPZih0YXJnZXQsIHByb3RvdHlwZSk7XFxyXFxuXFx0ICAgIFxcdGlmKHRhcmdldC5fX29ic2VydmVyc19fLmluZGV4T2YodGhpcyk+PTAgJiYgIXRoaXMuYWNjZXB0bGlzdCB8fCB0aGlzLmFjY2VwdGxpc3QuaW5kZXhPZihcInNldFByb3RvdHlwZVwiKT49MCkge1xcclxcblxcdCAgICAgICAgXFx0dmFyIGNoYW5nZSA9IHtvYmplY3Q6dGFyZ2V0LG5hbWU6XCJfX3Byb3RvX19cIix0eXBlOlwic2V0UHJvdG90eXBlXCIsb2xkVmFsdWU6b2xkdmFsdWV9LFxcclxcbiAgICBcXHRcXHRcXHRcXHRzdGFydCA9IHRoaXMuY2hhbmdlc2V0Lmxlbmd0aCA9PT0gMCxcXHJcXG4gICAgXFx0XFx0XFx0XFx0ZGVsaXZlciA9IHRoaXMuZGVsaXZlcigpO1xcclxcblxcdCAgICAgICAgXFx0dGhpcy5jaGFuZ2VzZXQucHVzaChjaGFuZ2UpO1xcclxcblxcdCAgICAgICAgXFx0aWYoc3RhcnQpIHtcXHJcXG5cXHQgICAgICAgIFxcdFxcdGRlbGl2ZXIoZmFsc2UsKHR5cGVvZihkZWxpdmVyLmRlbGF5KT09PVwibnVtYmVyXCIgPyBkZWxpdmVyLmRlbGF5IDogMTApKTtcXHJcXG5cXHQgICAgICAgIFxcdH1cXHJcXG5cXHQgICAgXFx0fVxcclxcblxcdCAgICBcXHRyZXR1cm4gdHJ1ZTtcXHJcXG5cXHQgICAgfTtcXHJcXG5cXHQgICAgT2JzZXJ2ZXIucHJvdG90eXBlLnByZXZlbnRFeHRlbnNpb25zID0gZnVuY3Rpb24odGFyZ2V0KSB7XFxyXFxuXFx0ICAgICAgICBPYmplY3QucHJldmVudEV4dGVuc2lvbnModGFyZ2V0KTtcXHJcXG5cXHQgICAgXFx0aWYodGFyZ2V0Ll9fb2JzZXJ2ZXJzX18uaW5kZXhPZih0aGlzKT49MCAmJiAhdGhpcy5hY2NlcHRsaXN0IHx8IHRoaXMuYWNjZXB0bGlzdC5pbmRleE9mKFwicHJldmVudEV4dGVuc2lvbnNcIik+PTApIHtcXHJcXG5cXHQgICAgICAgIFxcdHZhciBjaGFuZ2UgPSB7b2JqZWN0OnRhcmdldCx0eXBlOlwicHJldmVudEV4dGVuc2lvbnNcIn0sXFxyXFxuXFx0XFx0XFx0XFx0XFx0c3RhcnQgPSB0aGlzLmNoYW5nZXNldC5sZW5ndGggPT09IDAsXFxyXFxuXFx0XFx0XFx0XFx0XFx0ZGVsaXZlciA9IHRoaXMuZGVsaXZlcigpO1xcclxcblxcdCAgICAgICAgXFx0dGhpcy5jaGFuZ2VzZXQucHVzaChjaGFuZ2UpO1xcclxcblxcdCAgICAgICAgXFx0aWYoc3RhcnQpIHtcXHJcXG5cXHQgICAgICAgIFxcdFxcdGRlbGl2ZXIoZmFsc2UsKHR5cGVvZihkZWxpdmVyLmRlbGF5KT09PVwibnVtYmVyXCIgPyBkZWxpdmVyLmRlbGF5IDogMTApKTtcXHJcXG5cXHQgICAgICAgIFxcdH1cXHJcXG5cXHQgICAgXFx0fVxcclxcblxcdCAgICBcXHRyZXR1cm4gdHJ1ZTtcXHJcXG5cXHQgICAgfTtcXHJcXG5cXHQgICAgT2JqZWN0Lm9ic2VydmUgPSBmdW5jdGlvbihvYmplY3QsY2FsbGJhY2ssYWNjZXB0bGlzdCxwYXVzYWJsZSxwYXVzZSxkZWxheSkge1xcclxcblxcdCAgICBcXHRyZXR1cm4gbmV3IE9ic2VydmVyKG9iamVjdCxjYWxsYmFjayxhY2NlcHRsaXN0LHBhdXNhYmxlLHBhdXNlLGRlbGF5KTtcXHJcXG5cXHQgICAgfTtcXHJcXG5cXHQgICAgT2JqZWN0LnVub2JzZXJ2ZSA9IGZ1bmN0aW9uKG9iamVjdCxjYWxsYmFjaykge1xcclxcblxcdCAgICBcXHRpZihvYmplY3QuX19vYnNlcnZlckNhbGxiYWNrc19fKSB7XFxyXFxuXFx0ICAgIFxcdFxcdGlmKCFjYWxsYmFjaykge1xcclxcblxcdCAgICBcXHRcXHRcXHRvYmplY3QuX19vYnNlcnZlckNhbGxiYWNrc19fLnNwbGljZSgwLG9iamVjdC5fX29ic2VydmVyQ2FsbGJhY2tzX18ubGVuZ3RoKTtcXHJcXG5cXHQgICAgXFx0XFx0XFx0b2JqZWN0Ll9fb2JzZXJ2ZXJzX18uc3BsaWNlKDAsb2JqZWN0Ll9fb2JzZXJ2ZXJzX18ubGVuZ3RoKTtcXHJcXG5cXHQgICAgXFx0XFx0XFx0cmV0dXJuO1xcclxcblxcdCAgICBcXHRcXHR9XFxyXFxuXFx0ICAgIFxcdFxcdG9iamVjdC5fX29ic2VydmVyQ2FsbGJhY2tzX18uZm9yRWFjaChmdW5jdGlvbihvYnNlcnZlcmNhbGxiYWNrLGkpIHtcXHJcXG5cXHQgICAgXFx0XFx0XFx0aWYoY2FsbGJhY2s9PT1vYnNlcnZlcmNhbGxiYWNrKSB7XFxyXFxuXFx0ICAgIFxcdFxcdFxcdFxcdG9iamVjdC5fX29ic2VydmVyQ2FsbGJhY2tzX18uc3BsaWNlKGksMSk7XFxyXFxuXFx0ICAgIFxcdFxcdFxcdFxcdGRlbGV0ZSBvYmplY3QuX19vYnNlcnZlcnNfX1tpXS5jYWxsYmFjaztcXHJcXG5cXHQgICAgXFx0XFx0XFx0XFx0b2JqZWN0Ll9fb2JzZXJ2ZXJzX18uc3BsaWNlKGksMSk7XFxyXFxuXFx0ICAgIFxcdFxcdFxcdH1cXHJcXG5cXHQgICAgXFx0XFx0fSk7XFxyXFxuXFx0ICAgIFxcdH1cXHJcXG5cXHQgICAgfTtcXHJcXG5cXHQgICAgQXJyYXkub2JzZXJ2ZSA9IGZ1bmN0aW9uKG9iamVjdCxjYWxsYmFjayxhY2NlcHRsaXN0LHBhdXNhYmxlLHBhdXNlLGRlbGF5KSB7XFxyXFxuXFx0ICAgIFxcdGlmKCEob2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpICYmICFBcnJheS5pc0FycmF5KG9iamVjdCkpIHtcXHJcXG5cXHQgICAgXFx0XFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpcnN0IGFyZ3VtZW50IHRvIEFycmF5Lm9ic2VydmVyIGlzIG5vdCBhbiBBcnJheVwiKTtcXHJcXG5cXHQgICAgXFx0fVxcclxcbiAgICAgICAgICAgIFxcdGFjY2VwdGxpc3QgPSBhY2NlcHRsaXN0IHx8IFtcImFkZFwiLCBcInVwZGF0ZVwiLCBcImRlbGV0ZVwiLCBcInNwbGljZVwiXTtcXHJcXG5cXHQgICAgXFx0dmFyIGFycmF5cHJveHkgPSBuZXcgUHJveHkob2JqZWN0LHtnZXQ6IGZ1bmN0aW9uKHRhcmdldCxwcm9wZXJ0eSkge1xcclxcblxcdCAgICBcXHRcXHRpZihwcm9wZXJ0eT09PVwidW5vYnNlcnZlXCIpIHtcXHJcXG5cXHRcXHQgICAgXFx0XFx0cmV0dXJuIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XFxyXFxuXFx0XFx0ICAgIFxcdFxcdFxcdGlmKGNhbGxiYWNrKSB7XFxyXFxuXFx0XFx0ICAgIFxcdFxcdFxcdFxcdHJldHVybiBPYmplY3QudW5vYnNlcnZlKHRhcmdldCxjYWxsYmFjayk7XFxyXFxuXFx0XFx0ICAgIFxcdFxcdFxcdH1cXHJcXG5cXHRcXHQgICAgXFx0XFx0XFx0cmV0dXJuIHRhcmdldC51bm9ic2VydmUoKTtcXHJcXG5cXHRcXHQgICAgXFx0XFx0fTtcXHJcXG5cXHRcXHQgICAgXFx0fVxcclxcblxcdCAgICBcXHRcXHRpZihwcm9wZXJ0eT09PVwic3BsaWNlXCIpIHtcXHJcXG5cXHQgICAgXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uKHN0YXJ0LGVuZCkge1xcclxcblxcdCAgICBcXHRcXHRcXHRcXHRpZih0eXBlb2Yoc3RhcnQpIT09XCJudW1iZXJcIiB8fCB0eXBlb2YoZW5kKSE9PVwibnVtYmVyXCIpIHtcXHJcXG5cXHQgICAgXFx0XFx0XFx0XFx0XFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpcnN0IHR3byBhcmd1bWVudHMgdG8gQXJyYXkgc3BsaWNlIGFyZSBub3QgbnVtYmVyLCBudW1iZXJcIik7XFxyXFxuXFx0ICAgIFxcdFxcdFxcdFxcdH1cXHJcXG5cXHQgICAgXFx0ICAgIFxcdFxcdHZhciByZW1vdmVkID0gdGhpcy5zbGljZShzdGFydCxzdGFydCtlbmQpLFxcclxcblxcdCAgICBcXHQgICAgXFx0XFx0XFx0YWRkZWRDb3VudCA9IChhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50cy5sZW5ndGgtMiA6IDApLFxcclxcblxcdCAgICBcXHQgICAgXFx0XFx0XFx0Y2hhbmdlID0gIHtvYmplY3Q6b2JqZWN0LHR5cGU6XCJzcGxpY2VcIixpbmRleDpzdGFydCxyZW1vdmVkOnJlbW92ZWQsYWRkZWRDb3VudDphZGRlZENvdW50fTtcXHJcXG5cXHQgICAgXFx0ICAgIFxcdFxcdHRhcmdldC5zcGxpY2UuYXBwbHkodGFyZ2V0LGFyZ3VtZW50cyk7XFxyXFxuXFx0ICAgIFxcdCAgICBcXHRcXHRpZihhY2NlcHRsaXN0LmluZGV4T2YoXCJzcGxpY2VcIik+PTApIHtcXHJcXG5cXHQgICAgXFx0ICAgIFxcdFxcdFxcdHZhciBzdGFydCA9IHByb3h5Ll9fb2JzZXJ2ZXJfXy5jaGFuZ2VzZXQubGVuZ3RoID09PSAwLFxcclxcblxcdCAgICBcXHQgICAgICAgIFxcdFxcdFxcdGRlbGl2ZXIgPSBwcm94eS5fX29ic2VydmVyX18uZGVsaXZlcigpO1xcclxcblxcdCAgICBcXHQgICAgXFx0XFx0XFx0cHJveHkuX19vYnNlcnZlcl9fLmNoYW5nZXNldC5wdXNoKGNoYW5nZSk7XFxyXFxuXFx0ICAgIFxcdCAgICBcXHRcXHRcXHRpZihzdGFydCkge1xcclxcblxcdCAgICBcXHRcXHQgICAgICAgIFxcdFxcdGRlbGl2ZXIoZmFsc2UsKHR5cGVvZihkZWxpdmVyLmRlbGF5KT09PVwibnVtYmVyXCIgPyBkZWxpdmVyLmRlbGF5IDogMTApKTtcXHJcXG5cXHQgICAgXFx0XFx0ICAgICAgICBcXHR9XFxyXFxuXFx0ICAgIFxcdCAgICBcXHRcXHR9XFxyXFxuXFx0ICAgIFxcdCAgICBcXHR9XFxyXFxuXFx0ICAgIFxcdFxcdH1cXHJcXG5cXHQgICAgXFx0XFx0aWYocHJvcGVydHk9PT1cInB1c2hcIikge1xcclxcblxcdCAgICBcXHRcXHRcXHQgcmV0dXJuIGZ1bmN0aW9uKGl0ZW0pIHtcXHJcXG5cXHQgICAgXFx0XFx0ICAgIFxcdHJldHVybiB0aGlzLnNwbGljZSh0aGlzLmxlbmd0aCwwLGl0ZW0pO1xcclxcblxcdCAgICBcXHRcXHQgICAgfVxcclxcblxcdCAgICBcXHRcXHR9XFxyXFxuXFx0ICAgIFxcdFxcdGlmKHByb3BlcnR5PT09XCJwb3BcIikge1xcclxcblxcdCAgICBcXHRcXHRcXHQgcmV0dXJuIGZ1bmN0aW9uKCkge1xcclxcblxcdCAgICBcXHRcXHQgICAgXFx0cmV0dXJuIHRoaXMuc3BsaWNlKHRoaXMubGVuZ3RoLTEsMSk7XFxyXFxuXFx0ICAgIFxcdFxcdCAgICB9XFxyXFxuXFx0ICAgIFxcdFxcdH1cXHJcXG5cXHQgICAgXFx0XFx0aWYocHJvcGVydHk9PT1cInVuc2hpZnRcIikge1xcclxcblxcdCAgICBcXHRcXHRcXHQgcmV0dXJuIGZ1bmN0aW9uKGl0ZW0pIHtcXHJcXG4gICAgXFx0XFx0ICAgIFxcdFxcdHJldHVybiB0aGlzLnNwbGljZSgwLDAsaXRlbSk7XFxyXFxuICAgIFxcdFxcdCAgICBcXHR9XFxyXFxuXFx0ICAgIFxcdFxcdH1cXHJcXG5cXHQgICAgXFx0XFx0aWYocHJvcGVydHk9PT1cInNoaWZ0XCIpIHtcXHJcXG5cXHQgICAgXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xcclxcblxcdCAgICBcXHQgICAgXFx0XFx0cmV0dXJuIHRoaXMuc3BsaWNlKDAsMSk7XFxyXFxuXFx0ICAgIFxcdCAgICBcXHR9XFxyXFxuXFx0ICAgIFxcdFxcdH1cXHJcXG5cXHQgICAgXFx0XFx0cmV0dXJuIHRhcmdldFtwcm9wZXJ0eV07XFxyXFxuXFx0ICAgIFxcdH19KTtcXHJcXG5cXHQgICAgXFx0dmFyIHByb3h5ID0gT2JqZWN0Lm9ic2VydmUoYXJyYXlwcm94eSxmdW5jdGlvbihjaGFuZ2VzZXQpIHsgXFxyXFxuXFx0ICAgIFxcdFxcdHZhciBjaGFuZ2VzID0gY2hhbmdlc2V0LmZpbHRlcihmdW5jdGlvbihjaGFuZ2UpIHsgcmV0dXJuIGNoYW5nZS5uYW1lIT09XCJsZW5ndGhcIiAmJiBjaGFuZ2UubmFtZSE9PVwiYWRkXCIgJiYgKCFhY2NlcHRsaXN0IHx8IGFjY2VwdGxpc3QuaW5kZXhPZihjaGFuZ2UudHlwZSk+PTApOyB9KTtcXHJcXG5cXHQgICAgXFx0XFx0aWYoY2hhbmdlcy5sZW5ndGg+MCkge1xcclxcblxcdCAgICBcXHRcXHRcXHRjYWxsYmFjayhjaGFuZ2VzKTtcXHJcXG5cXHQgICAgXFx0XFx0fVxcclxcblxcdCAgICBcXHR9LGFjY2VwdGxpc3QscGF1c2FibGUscGF1c2UsZGVsYXkpO1xcclxcblxcdCAgICBcXHRyZXR1cm4gcHJveHk7XFxyXFxuXFx0ICAgIH07XFxyXFxuXFx0ICAgIEFycmF5LnVub2JzZXJ2ZSA9IGZ1bmN0aW9uKG9iamVjdCxjYWxsYmFjaykge1xcclxcblxcdFxcdCAgcmV0dXJuIG9iamVjdC51bm9ic2VydmUoY2FsbGJhY2spO1xcclxcblxcdCAgICB9XFxyXFxuXFx0fVxcclxcblxcdE9iamVjdC5kZWVwT2JzZXJ2ZSA9IGZ1bmN0aW9uKG9iamVjdCxjYWxsYmFjayxwYXJ0cykge1xcclxcblxcclxcblxcdFxcdHBhcnRzID0gKHBhcnRzID8gcGFydHMgOiBbXSk7XFxyXFxuXFxyXFxuXFx0XFx0dmFyIHRvVHlwZU5hbWUgPSBmdW5jdGlvbihvYmopIHtcXHJcXG5cXHRcXHRcXHRyZXR1cm4gKHt9KS50b1N0cmluZy5jYWxsKG9iaikubWF0Y2goL1xcXFxzKFthLXpBLVpdKykvKVsxXS50b0xvd2VyQ2FzZSgpXFxyXFxuXFx0XFx0fVxcclxcblxcclxcblxcdFxcdGZ1bmN0aW9uIHJlb2JzZXJ2ZSh2YWx1ZSwgcGFydHMpIHtcXHJcXG5cXHRcXHRcXHR2YXIga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcXHJcXG5cXHRcXHRcXHRrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XFxyXFxuXFx0XFx0XFx0XFx0aWYoKHRvVHlwZU5hbWUodmFsdWVba2V5XSkgPT09IFxcJ29iamVjdFxcJyB8fCB0b1R5cGVOYW1lKHZhbHVlW2tleV0pID09PSBcXCdhcnJheVxcJykgJiYgIXZhbHVlW2tleV0uaGFzT3duUHJvcGVydHkoXFwnX19vYnNlcnZlcnNfX1xcJykpIHtcXHJcXG5cXHRcXHRcXHRcXHRcXHR2YXIgbmV3cGFydHMgPSBwYXJ0cy5zbGljZSgwKTtcXHJcXG5cXHRcXHRcXHRcXHRcXHRuZXdwYXJ0cy5wdXNoKGtleSk7XFxyXFxuXFx0XFx0XFx0XFx0XFx0dmFsdWVba2V5XSA9IE9iamVjdC5kZWVwT2JzZXJ2ZSh2YWx1ZVtrZXldLGNhbGxiYWNrLG5ld3BhcnRzKTtcXHJcXG5cXHRcXHRcXHRcXHR9XFxyXFxuXFx0XFx0XFx0fSk7XFxyXFxuXFx0XFx0fVxcclxcblxcclxcblxcdFxcdHJlb2JzZXJ2ZShvYmplY3QsIHBhcnRzKTtcXHJcXG5cXHJcXG5cXHRcXHR2YXIgb2JzZXJ2ZWQgPSBPYmplY3Qub2JzZXJ2ZShvYmplY3QsZnVuY3Rpb24oY2hhbmdlc2V0KSB7XFxyXFxuXFx0XFx0XFx0dmFyIGNoYW5nZXMgPSBbXTtcXHJcXG5cXHRcXHRcXHRmdW5jdGlvbiByZWN1cnNlKG5hbWUscm9vdE9iamVjdCxvbGRPYmplY3QsbmV3T2JqZWN0LHBhdGgpIHtcXHJcXG5cXHRcXHRcXHRcXHRpZihuZXdPYmplY3QgaW5zdGFuY2VvZiBPYmplY3QpIHtcXHJcXG5cXHRcXHRcXHRcXHRcXHR2YXIgbmV3a2V5cyA9IE9iamVjdC5rZXlzKG5ld09iamVjdCk7XFxyXFxuXFx0XFx0XFx0XFx0XFx0bmV3a2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xcclxcblxcdFxcdFxcdFxcdFxcdFxcdGlmKCFvbGRPYmplY3QgfHwgKG9sZE9iamVjdFtrZXldIT09bmV3T2JqZWN0W2tleV0pKSB7XFxyXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIG9sZHZhbHVlID0gKG9sZE9iamVjdCAmJiBvbGRPYmplY3Rba2V5XSE9PXVuZGVmaW5lZCA/IG9sZE9iamVjdFtrZXldIDogdW5kZWZpbmVkKSxcXHJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjaGFuZ2UgPSAob2xkdmFsdWU9PT11bmRlZmluZWQgPyBcImFkZFwiIDogXCJ1cGRhdGVcIiksXFxyXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0a2V5cGF0aCA9IHBhdGggKyBcIi5cIiArIGtleTtcXHJcXG5cXHJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjaGFuZ2VzLnB1c2goe25hbWU6bmFtZSxvYmplY3Q6cm9vdE9iamVjdCx0eXBlOmNoYW5nZSxvbGRWYWx1ZTpvbGR2YWx1ZSxuZXdWYWx1ZTpuZXdPYmplY3Rba2V5XSxrZXlwYXRoOmtleXBhdGh9KTtcXHJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRyZWN1cnNlKG5hbWUscm9vdE9iamVjdCxvbGR2YWx1ZSxuZXdPYmplY3Rba2V5XSxrZXlwYXRoKTtcXHJcXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxyXFxuXFx0XFx0XFx0XFx0XFx0fSk7XFxyXFxuXFx0XFx0XFx0XFx0fSBlbHNlIGlmKG9sZE9iamVjdCBpbnN0YW5jZW9mIE9iamVjdCkge1xcclxcblxcdFxcdFxcdFxcdFxcdHZhciBvbGRrZXlzID0gT2JqZWN0LmtleXMob2xkT2JqZWN0KTtcXHJcXG5cXHRcXHRcXHRcXHRcXHRvbGRrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XFxyXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGNoYW5nZSA9IChuZXdPYmplY3Q9PT1udWxsID8gXCJ1cGRhdGVcIiA6IFwiZGVsZXRlXCIpLFxcclxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGtleXBhdGggPSBwYXRoICsgXCIuXCIgKyBrZXk7XFxyXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxyXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2hhbmdlcy5wdXNoKHtuYW1lOm5hbWUsb2JqZWN0OnJvb3RPYmplY3QsdHlwZTpjaGFuZ2Usb2xkVmFsdWU6b2xkT2JqZWN0W2tleV0sbmV3VmFsdWU6bmV3T2JqZWN0LGtleXBhdGg6a2V5cGF0aH0pO1xcclxcblxcdFxcdFxcdFxcdFxcdFxcdHJlY3Vyc2UobmFtZSxyb290T2JqZWN0LG9sZE9iamVjdFtrZXldLHVuZGVmaW5lZCxrZXlwYXRoKTtcXHJcXG5cXHRcXHRcXHRcXHRcXHR9KTtcXHJcXG5cXHRcXHRcXHRcXHR9XFxyXFxuXFx0XFx0XFx0fVxcclxcblxcdFxcdFxcdGNoYW5nZXNldC5mb3JFYWNoKGZ1bmN0aW9uKGNoYW5nZSkge1xcclxcblxcdFxcdFxcdFxcdHZhciBrZXlwYXRoID0gKHBhcnRzLmxlbmd0aD4wID8gcGFydHMuam9pbihcIi5cIikgKyBcIi5cIiA6IFwiXCIpICsgY2hhbmdlLm5hbWU7XFxyXFxuXFxyXFxuXFx0XFx0XFx0XFx0aWYgKGNoYW5nZS50eXBlID09PSBcInVwZGF0ZVwiIHx8IGNoYW5nZS50eXBlID09PSBcImFkZFwiKSB7IFxcclxcblxcdFxcdFxcdFxcdFxcdHJlb2JzZXJ2ZShjaGFuZ2Uub2JqZWN0LCBwYXJ0cyk7XFxyXFxuXFx0XFx0XFx0XFx0fVxcclxcblxcclxcblxcdFxcdFxcdFxcdGNoYW5nZXMucHVzaCh7bmFtZTpjaGFuZ2UubmFtZSxvYmplY3Q6Y2hhbmdlLm9iamVjdCx0eXBlOmNoYW5nZS50eXBlLG9sZFZhbHVlOmNoYW5nZS5vbGRWYWx1ZSxuZXdWYWx1ZTpjaGFuZ2Uub2JqZWN0W2NoYW5nZS5uYW1lXSxrZXlwYXRoOmtleXBhdGh9KTtcXHJcXG5cXHRcXHRcXHRcXHRyZWN1cnNlKGNoYW5nZS5uYW1lLGNoYW5nZS5vYmplY3QsY2hhbmdlLm9sZFZhbHVlLGNoYW5nZS5vYmplY3RbY2hhbmdlLm5hbWVdLGtleXBhdGgpO1xcclxcblxcdFxcdFxcdH0pO1xcclxcblxcdFxcdFxcdGNhbGxiYWNrKGNoYW5nZXMpO1xcclxcblxcdFxcdH0pO1xcclxcblxcdFxcdHJldHVybiBvYnNlcnZlZDtcXHJcXG5cXHR9O1xcclxcbn0pKCk7XFxyXFxuLy8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkluZGxZbkJoWTJzNkx5OHZMaTl1YjJSbFgyMXZaSFZzWlhNdmNISnZlSGt0YjJKelpYSjJaUzlwYm1SbGVDNXFjejh4TWpCaUlsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRXNTMEZCU3p0QlFVTk1PMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTEdsRlFVRnBSU3d3UkVGQk1FUXNSVUZCUlR0QlFVTTNTRHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVzTmtSQlFUWkVMREpFUVVFeVJEdEJRVU40U0N4eFJFRkJjVVFzTWtSQlFUSkVPMEZCUTJoSU8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVzYVVWQlFXbEZPMEZCUTJwRk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRXNkMEpCUVhkQ0xITkRRVUZ6UXp0QlFVTTVSRHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFc2VVSkJRWGxDTERSRVFVRTBSRHRCUVVOeVJqdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJMSGRDUVVGM1Fpd3JRMEZCSzBNN1FVRkRka1U3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVN4M1FrRkJkMElzY1VWQlFYRkZPMEZCUXpkR08wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTEhkQ1FVRjNRaXgxUTBGQmRVTTdRVUZETDBRN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVN4UlFVRlJPMEZCUTFJN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVN4NVEwRkJlVU03UVVGRGVrTTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVzZDBKQlFYZENPMEZCUTNoQ08wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVN4UlFVRlJPMEZCUTFJc2FVVTdRVUZEUVN4M1JFRkJkMFFzTmtkQlFUWkhMRVZCUVVVN1FVRkRka3M3UVVGRFFUdEJRVU5CTzBGQlEwRXNUMEZCVHp0QlFVTlFPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlFVVkJPenRCUVVWQk8wRkJRMEVzWVVGQllUdEJRVU5pT3p0QlFVVkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVN4SlFVRkpPMEZCUTBvN08wRkJSVUU3TzBGQlJVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdPMEZCUlVFc2NVSkJRWEZDTEd0SFFVRnJSenRCUVVOMlNEdEJRVU5CTzBGQlEwRXNUVUZCVFR0QlFVTk9MRXRCUVVzN1FVRkRURHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVUZGUVN4dlFrRkJiMElzYlVkQlFXMUhPMEZCUTNaSU8wRkJRMEVzVFVGQlRUdEJRVU5PTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUVVWQkxEUkVPMEZCUTBFN1FVRkRRVHM3UVVGRlFTeHJRa0ZCYTBJc2IwbEJRVzlKTzBGQlEzUktPMEZCUTBFc1NVRkJTVHRCUVVOS08wRkJRMEVzUjBGQlJ6dEJRVU5JTzBGQlEwRTdRVUZEUVN4RFFVRkRJaXdpWm1sc1pTSTZJakV5TWk1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaTh2SUNBZ0lDQndjbTk0ZVMxdlluTmxjblpsSUhZd0xqQXVNVGhjY2x4dUx5OGdJQ0FnSUVOdmNIbHlhV2RvZENBb1l5a2dNakF4TlN3Z01qQXhOaUJUYVcxdmJpQlpMaUJDYkdGamEzZGxiR3dzSUVGdWVWZG9hV05vVjJGNVhISmNiaTh2SUNBZ0lDQk5TVlFnVEdsalpXNXpaU0F0SUdoMGRIQTZMeTl2Y0dWdWMyOTFjbU5sTG05eVp5OXNhV05sYm5ObGN5OXRhWFF0YkdsalpXNXpaUzV3YUhCY2NseHVLR1oxYm1OMGFXOXVLQ2tnZTF4eVhHNWNkRndpZFhObElITjBjbWxqZEZ3aU8xeHlYRzVjZEM4dklFTnlaV0YwWlhNZ1lXNWtJSEpsZEhWeWJuTWdZU0JRY205NGVTQjNjbUZ3Y0dsdVp5QmhJSFJoY21kbGRDQnpieUIwYUdGMElHRnNiQ0JqYUdGdVoyVnpJR05oYmlCaVpTQjBjbUZ3Y0dWa0lHRnVaQ0JtYjNKM1lYSmtaV1FnZEc5Y2NseHVYSFF2THlCaElHTmhiR3hpWVdOckxpQlVhR1VnWTJGc2JHSmhZMnNnZEdGclpYTWdZVzRnWVhKeVlYa2diMllnWTJoaGJtZGxjeUJxZFhOMElHeHBhMlVnZEdobElIUnlZV1JwZEdsdmJtRnNJRzl5YVdkcGJtRnNJRU5vY205dFpTQlBZbXBsWTNRdWIySnpaWEoyWlZ4eVhHNWNkQzh2SUh0dlltcGxZM1E2UEc5aWFtVmpkQ0JqYUdGdVoyVmtQaXh1WVcxbE9qeG1hV1ZzWkNCamFHRnVaMlZrUGl4MGVYQmxPbUZrWkh4MWNHUmhkR1Y4WkdWc1pYUmxmSEpsWTI5dVptbG5kWEpsZkhCeVpYWmxiblJGZUhSbGJuTnBiMjV6ZkhObGRGQnliM1J2ZEhsd1pTeHZiR1JXWVd4MVpUbzhiMnhrSUhaaGJIVmxJR2xtSUhWd1pHRjBaU0I4SUdSbGJHVjBaVDU5WEhKY2JseDBMeThnVkdobElHRmpZMlZ3ZEd4cGMzUWdZMkZ1SUdKbElHRmtaSHgxY0dSaGRHVjhaR1ZzWlhSbGZISmxZMjl1Wm1sbmRYSmxmSEJ5WlhabGJuUkZlSFJsYm5OcGIyNXpmSE5sZEZCeWIzUnZkSGx3WlM1Y2NseHVYSFF2THlCMklEQXVNQzR4TUNCMGJ5QnpkWEJ3YjNKMElIQmhkWE5wYm1jZ1lXNWtJSEpsYzNSaGNuUnBibWNnYjJKelpYSjJZWFJwYjI0Z2RIZHZJR0ZrWkdsMGFXOXVZV3dnWTI5dWMzUnlkV04wYjNJZ1lYSm5kVzFsYm5SeklHRnlaU0JoZG1GcGJHRmliR1VnZEc4Z1QySnFaV04wTG05aWMyVnlkbVU2WEhKY2JseDBMeThnY0dGMWMyRmliR1VnTFNCamNtVmhkR1VnZEdobElFOWljMlZ5ZG1WeUlITnZJR2wwSUdOaGJpQmlaU0J3WVhWelpXUmNjbHh1WEhRdkx5QndZWFZ6WlNBdElHTnlaV0YwWlNCdlluTmxjblpsY2lCcGJpQndZWFZ6WldRZ2MzUmhkR1ZjY2x4dVhIUXZMeUJwWmlCd1lYVnpZV0pzWlNCcGN5QjBjblZsSUhSb1pXNGdZVzRnWVdSa2FYUnBiMjVoYkNCdFpYUm9iMlFnWkdWc2FYWmxjaWhwWjI1dmNtVlFjbVYyYVc5MWN5a2dhWE1nWVhaaGFXeGhZbXhsSUhSdklITjBZWEowSUdSbGJHbDJaWEo1WEhKY2JseDBMeThnZEc4Z2NHRjFjMlVnWkdWc2FYWmxjbmtnYzJWMElHRWdjSEp2Y0dWeWRIa2dZMkZzYkdWa0lIQmhkWE5sSUc5dUlIUm9aU0JtZFc1amRHbHZiaUJrWld4cGRtVnlJSFJ2SUhSeWRXVmNjbHh1WEhRdkx5QndZWFZ6WVdKc1pTQnBjeUJ2Y0hScGIyNWhiQ0IwYnlCeVpXUjFZMlVnZEdobElHTm9ZVzVqWlNCdlppQnphR0ZrYjNkcGJtY2dZU0J3Y205d1pYSjBlU0J2Y2lCdFpYUm9iMlFnYjI0Z1lXNTVJR1Y0YVhOMGFXNW5JR052WkdVZ1kyRnNiR1ZrSUdSbGJHbDJaWEpjY2x4dVhIUnBaaWdoVDJKcVpXTjBMbTlpYzJWeWRtVWdKaVlnZEhsd1pXOW1LRkJ5YjNoNUtUMDlQVndpWm5WdVkzUnBiMjVjSWlrZ2UxeHlYRzVjZEZ4MFpuVnVZM1JwYjI0Z1QySnpaWEoyWlhJb2RHRnlaMlYwTEdOaGJHeGlZV05yTEdGalkyVndkR3hwYzNRc2NHRjFjMkZpYkdVc2NHRjFjMlVzWkdWc1lYa3BJSHRjY2x4dVhIUWdJQ0FnWEhSMllYSWdiV1VnUFNCMGFHbHpMQ0J3Y205NGVUdGNjbHh1WEhRZ0lDQWdYSFJtZFc1amRHbHZiaUJrWld4cGRtVnlLR2xuYm05eVpWQnlaWFpwYjNWekxHUmxiR0Y1S1NCN1hISmNibHgwSUNBZ0lGeDBYSFJrWld4cGRtVnlMbVJsYkdGNUlEMGdaR1ZzWVhrN1hISmNibHgwSUNBZ0lGeDBYSFJwWmlnaFpHVnNhWFpsY2k1d1lYVnpaU2tnZTF4eVhHNWNkQ0FnSUNBZ0lDQWdYSFJjZEdsbUtHMWxMbU5vWVc1blpYTmxkQzVzWlc1bmRHZytNQ2tnZTF4eVhHNWNkQ0FnSUNBZ0lDQWdYSFJjZEZ4MGFXWW9JV2xuYm05eVpWQnlaWFpwYjNWektTQjdYSEpjYmx4MFhIUWdJQ0FnWEhRZ0lDQWdYSFJjZEhaaGNpQmphR0Z1WjJWeklEMGdiV1V1WTJoaGJtZGxjMlYwTG1acGJIUmxjaWhtZFc1amRHbHZiaWhqYUdGdVoyVXBJSHNnY21WMGRYSnVJQ0ZoWTJObGNIUnNhWE4wSUh4OElHRmpZMlZ3ZEd4cGMzUXVhVzVrWlhoUFppaGphR0Z1WjJVdWRIbHdaU2srUFRBN0lIMHBPMXh5WEc1Y2RGeDBJQ0FnSUNBZ0lDQmNkRngwWEhScFppaGphR0Z1WjJWekxteGxibWQwYUQ0d0tTQjdYSEpjYmx4MFhIUWdJQ0FnSUNBZ0lGeDBYSFJjZEZ4MFkyRnNiR0poWTJzb1kyaGhibWRsY3lrN1hISmNibHgwWEhRZ0lDQWdJQ0FnSUZ4MFhIUmNkSDFjY2x4dVhIUWdJQ0FnSUNBZ0lGeDBYSFJjZEgxY2NseHVYSFFnSUNBZ0lDQWdJRngwWEhSY2RHMWxMbU5vWVc1blpYTmxkQ0E5SUZ0ZE8xeHlYRzVjZENBZ0lDQWdJQ0FnWEhSY2RIMWNjbHh1WEhRZ0lDQWdYSFJjZEgxY2NseHVYSFFnSUNBZ1hIUjlYSEpjYmx4MElDQWdJRngwWkdWc2FYWmxjaTV3WVhWelpTQTlJSEJoZFhObE8xeHlYRzVjZENBZ0lDQmNkR1JsYkdsMlpYSXVaR1ZzWVhrZ1BTQmtaV3hoZVR0Y2NseHVYSFJjZENBZ0lDQnRaUzVuWlhRZ1BTQm1kVzVqZEdsdmJpaDBZWEpuWlhRc0lIQnliM0JsY25SNUtTQjdYSEpjYmx4MFhIUWdJQ0FnWEhScFppaHdjbTl3WlhKMGVUMDlQVndpWDE5dlluTmxjblpsY2w5ZlhDSXBJSHRjY2x4dVhIUmNkQ0FnSUNCY2RGeDBjbVYwZFhKdUlHMWxPMXh5WEc1Y2RGeDBJQ0FnSUZ4MGZWeHlYRzVjZEZ4MElDQWdJRngwYVdZb2NISnZjR1Z5ZEhrOVBUMWNJblZ1YjJKelpYSjJaVndpS1NCN1hISmNibHgwWEhRZ0lDQWdYSFJjZEhKbGRIVnliaUJtZFc1amRHbHZiaWdwSUh0Y2NseHVYSFJjZENBZ0lDQmNkRngwWEhSUFltcGxZM1F1ZFc1dlluTmxjblpsS0hSaGNtZGxkQ2s3WEhKY2JseDBYSFFnSUNBZ1hIUmNkRngwY21WMGRYSnVJSFJoY21kbGREdGNjbHh1WEhSY2RDQWdJQ0JjZEZ4MGZUdGNjbHh1WEhSY2RDQWdJQ0JjZEgxY2NseHVYSFJjZENBZ0lDQmNkR2xtS0hCeWIzQmxjblI1UFQwOVhDSmtaV3hwZG1WeVhDSXBJSHRjY2x4dVhIUmNkQ0FnSUNCY2RGeDBjbVYwZFhKdUlHUmxiR2wyWlhJN1hISmNibHgwWEhRZ0lDQWdYSFI5WEhKY2JseDBYSFFnSUNBZ1hIUnlaWFIxY200Z2RHRnlaMlYwVzNCeWIzQmxjblI1WFR0Y2NseHVYSFJjZENBZ0lDQjlYSEpjYmx4MElDQWdJRngwYldVdWRHRnlaMlYwSUQwZ2RHRnlaMlYwTzF4eVhHNWNkQ0FnSUNCY2RHMWxMbU5vWVc1blpYTmxkQ0E5SUZ0ZE8xeHlYRzVjZENBZ0lDQmNkR2xtS0NGdFpTNTBZWEpuWlhRdVgxOXZZbk5sY25abGNrTmhiR3hpWVdOcmMxOWZLU0I3WEhKY2JseDBJQ0FnSUZ4MFhIUXZMeUJmWDI5aWMyVnlkbVZ5UTJGc2JHSmhZMnR6WDE4Z2FYTWdkWE5sWkNCaGN5QmhiaUJwYm1SbGVDQjBieUJuWlhRZ1lYUWdkR2hsSUhCeWIzaDVJSGRvYVdOb0lHbHpJSFJvWlNCdlluTmxjblpsY2l3Z2MyOGdkMlVnWTJGdUlIVnViMkp6WlhKMlpWeHlYRzVjZENBZ0lDQmNkRngwVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtIUmhjbWRsZEN4Y0lsOWZiMkp6WlhKMlpYSkRZV3hzWW1GamEzTmZYMXdpTEh0bGJuVnRaWEpoWW14bE9tWmhiSE5sTEdOdmJtWnBaM1Z5WVdKc1pUcDBjblZsTEhkeWFYUmhZbXhsT21aaGJITmxMSFpoYkhWbE9sdGRmU2s3WEhKY2JseDBJQ0FnSUZ4MFhIUlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvZEdGeVoyVjBMRndpWDE5dlluTmxjblpsY25OZlgxd2lMSHRsYm5WdFpYSmhZbXhsT21aaGJITmxMR052Ym1acFozVnlZV0pzWlRwMGNuVmxMSGR5YVhSaFlteGxPbVpoYkhObExIWmhiSFZsT2x0ZGZTazdYSEpjYmx4MElDQWdJRngwZlZ4eVhHNWNkQ0FnSUNCY2RHMWxMblJoY21kbGRDNWZYMjlpYzJWeWRtVnlRMkZzYkdKaFkydHpYMTh1Y0hWemFDaGpZV3hzWW1GamF5azdYSEpjYmx4MElDQWdJRngwYldVdWRHRnlaMlYwTGw5ZmIySnpaWEoyWlhKelgxOHVjSFZ6YUNoMGFHbHpLVHRjY2x4dVhIUWdJQ0FnWEhSd2NtOTRlU0E5SUc1bGR5QlFjbTk0ZVNoMFlYSm5aWFFzYldVcE8xeHlYRzVjZENBZ0lDQmNkR1JsYkdsMlpYSW9abUZzYzJVc1pHVnNZWGtwTzF4eVhHNWNkQ0FnSUNCY2RISmxkSFZ5YmlCd2NtOTRlVHRjY2x4dVhIUWdJQ0FnZlZ4eVhHNWNkRngwVDJKelpYSjJaWEl1Y0hKdmRHOTBlWEJsTG1SbGJHbDJaWElnUFNCbWRXNWpkR2x2YmlncElIdGNjbHh1WEhSY2RGeDBjbVYwZFhKdUlIUm9hWE11WjJWMEtHNTFiR3dzWENKa1pXeHBkbVZ5WENJcE8xeHlYRzVjZEZ4MGZWeHlYRzVjZENBZ0lDQlBZbk5sY25abGNpNXdjbTkwYjNSNWNHVXVjMlYwSUQwZ1puVnVZM1JwYjI0b2RHRnlaMlYwTENCd2NtOXdaWEowZVN3Z2RtRnNkV1VwSUhzZ0x5OGdMQ0J5WldObGFYWmxjbHh5WEc1Y2RDQWdJQ0JjZEhaaGNpQnZiR1IyWVd4MVpTQTlJSFJoY21kbGRGdHdjbTl3WlhKMGVWMDdYSEpjYmx4MElDQWdJRngwZG1GeUlIUjVjR1VnUFNBb2IyeGtkbUZzZFdVOVBUMTFibVJsWm1sdVpXUWdQeUJjSW1Ga1pGd2lJRG9nWENKMWNHUmhkR1ZjSWlrN1hISmNibHgwSUNBZ0lGeDBkR0Z5WjJWMFczQnliM0JsY25SNVhTQTlJSFpoYkhWbE8xeHlYRzVjZENBZ0lDQmNkR2xtS0hSaGNtZGxkQzVmWDI5aWMyVnlkbVZ5YzE5ZkxtbHVaR1Y0VDJZb2RHaHBjeWsrUFRBZ0ppWWdLQ0YwYUdsekxtRmpZMlZ3ZEd4cGMzUWdmSHdnZEdocGN5NWhZMk5sY0hSc2FYTjBMbWx1WkdWNFQyWW9kSGx3WlNrK1BUQXBLU0I3WEhKY2JseDBJQ0FnSUNBZ0lDQmNkSFpoY2lCamFHRnVaMlVnUFNCN2IySnFaV04wT25SaGNtZGxkQ3h1WVcxbE9uQnliM0JsY25SNUxIUjVjR1U2ZEhsd1pYMHNYSEpjYmx4MElDQWdJQ0FnSUNCY2RGeDBjM1JoY25RZ1BTQjBhR2x6TG1Ob1lXNW5aWE5sZEM1c1pXNW5kR2dnUFQwOUlEQXNYSEpjYmx4MElDQWdJQ0FnSUNCY2RGeDBaR1ZzYVhabGNpQTlJSFJvYVhNdVpHVnNhWFpsY2lncE8xeHlYRzVjZENBZ0lDQWdJQ0FnWEhScFppaDBlWEJsUFQwOVhDSjFjR1JoZEdWY0lpa2dlMXh5WEc1Y2RDQWdJQ0FnSUNBZ1hIUmNkR05vWVc1blpTNXZiR1JXWVd4MVpTQTlJRzlzWkhaaGJIVmxPMXh5WEc1Y2RDQWdJQ0FnSUNBZ1hIUjlYSEpjYmx4MElDQWdJQ0FnSUNCY2RIUm9hWE11WTJoaGJtZGxjMlYwTG5CMWMyZ29ZMmhoYm1kbEtUdGNjbHh1WEhRZ0lDQWdJQ0FnSUZ4MGFXWW9jM1JoY25RcElIdGNjbHh1WEhRZ0lDQWdJQ0FnSUZ4MFhIUmtaV3hwZG1WeUtHWmhiSE5sTENoMGVYQmxiMllvWkdWc2FYWmxjaTVrWld4aGVTazlQVDFjSW01MWJXSmxjbHdpSUQ4Z1pHVnNhWFpsY2k1a1pXeGhlU0E2SURFd0tTazdYSEpjYmx4MElDQWdJQ0FnSUNCY2RIMWNjbHh1WEhRZ0lDQWdYSFI5WEhKY2JseDBJQ0FnSUZ4MGNtVjBkWEp1SUhSeWRXVTdYSEpjYmx4MElDQWdJSDA3WEhKY2JseDBJQ0FnSUU5aWMyVnlkbVZ5TG5CeWIzUnZkSGx3WlM1a1pXeGxkR1ZRY205d1pYSjBlU0E5SUdaMWJtTjBhVzl1S0hSaGNtZGxkQ3dnY0hKdmNHVnlkSGtwSUh0Y2NseHVYSFFnSUNBZ1hIUjJZWElnYjJ4a2RtRnNkV1VnUFNCMFlYSm5aWFJiY0hKdmNHVnlkSGxkTzF4eVhHNWNkQ0FnSUNCY2RDOHZhV1lvZEhsd1pXOW1LRzlzWkhaaGJIVmxLU0U5UFZ3aWRXNWtaV1pwYm1Wa1hDSXBJSHRjY2x4dVhIUmNkQ0FnSUNCY2RHUmxiR1YwWlNCMFlYSm5aWFJiY0hKdmNHVnlkSGxkTzF4eVhHNWNkRngwSUNBZ0lGeDBhV1lvZEdGeVoyVjBMbDlmYjJKelpYSjJaWEp6WDE4dWFXNWtaWGhQWmloMGFHbHpLVDQ5TUNBbUppQWhkR2hwY3k1aFkyTmxjSFJzYVhOMElIeDhJSFJvYVhNdVlXTmpaWEIwYkdsemRDNXBibVJsZUU5bUtGd2laR1ZzWlhSbFhDSXBQajB3S1NCN1hISmNibHgwWEhRZ0lDQWdJQ0FnSUZ4MGRtRnlJR05vWVc1blpTQTlJSHR2WW1wbFkzUTZkR0Z5WjJWMExHNWhiV1U2Y0hKdmNHVnlkSGtzZEhsd1pUcGNJbVJsYkdWMFpWd2lMRzlzWkZaaGJIVmxPbTlzWkhaaGJIVmxmU3hjY2x4dVhIUmNkQ0FnSUNBZ0lDQWdYSFJjZEhOMFlYSjBJRDBnZEdocGN5NWphR0Z1WjJWelpYUXViR1Z1WjNSb0lEMDlQU0F3TEZ4eVhHNWNkRngwSUNBZ0lDQWdJQ0JjZEZ4MFpHVnNhWFpsY2lBOUlIUm9hWE11WkdWc2FYWmxjaWdwTzF4eVhHNWNkRngwSUNBZ0lDQWdJQ0JjZEhSb2FYTXVZMmhoYm1kbGMyVjBMbkIxYzJnb1kyaGhibWRsS1R0Y2NseHVYSFJjZENBZ0lDQWdJQ0FnWEhScFppaHpkR0Z5ZENrZ2UxeHlYRzVjZEZ4MElDQWdJQ0FnSUNCY2RGeDBaR1ZzYVhabGNpaG1ZV3h6WlN3b2RIbHdaVzltS0dSbGJHbDJaWEl1WkdWc1lYa3BQVDA5WENKdWRXMWlaWEpjSWlBL0lHUmxiR2wyWlhJdVpHVnNZWGtnT2lBeE1Da3BPMXh5WEc1Y2RGeDBJQ0FnSUNBZ0lDQmNkSDFjY2x4dVhIUmNkQ0FnSUNCY2RIMWNjbHh1WEhRZ0lDQWdYSFF2TDMxY2NseHVYSFFnSUNBZ1hIUnlaWFIxY200Z2RISjFaVHRjY2x4dVhIUWdJQ0FnZlR0Y2NseHVYSFFnSUNBZ1QySnpaWEoyWlhJdWNISnZkRzkwZVhCbExtUmxabWx1WlZCeWIzQmxjblI1SUQwZ1puVnVZM1JwYjI0b2RHRnlaMlYwTENCd2NtOXdaWEowZVN3Z1pHVnpZM0pwY0hSdmNpa2dlMXh5WEc1Y2RDQWdJQ0JjZEU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaDBZWEpuWlhRc0lIQnliM0JsY25SNUxDQmtaWE5qY21sd2RHOXlLVHRjY2x4dVhIUWdJQ0FnWEhScFppaDBZWEpuWlhRdVgxOXZZbk5sY25abGNuTmZYeTVwYm1SbGVFOW1LSFJvYVhNcFBqMHdJQ1ltSUNGMGFHbHpMbUZqWTJWd2RHeHBjM1FnZkh3Z2RHaHBjeTVoWTJObGNIUnNhWE4wTG1sdVpHVjRUMllvWENKeVpXTnZibVpwWjNWeVpWd2lLVDQ5TUNrZ2UxeHlYRzVjZENBZ0lDQWdJQ0FnWEhSMllYSWdZMmhoYm1kbElEMGdlMjlpYW1WamREcDBZWEpuWlhRc2JtRnRaVHB3Y205d1pYSjBlU3gwZVhCbE9sd2ljbVZqYjI1bWFXZDFjbVZjSW4wc1hISmNiaUFnSUNBZ0lDQWdYSFJjZEZ4MGMzUmhjblFnUFNCMGFHbHpMbU5vWVc1blpYTmxkQzVzWlc1bmRHZ2dQVDA5SURBc1hISmNiaUFnSUNBZ0lDQWdYSFJjZEZ4MFpHVnNhWFpsY2lBOUlIUm9hWE11WkdWc2FYWmxjaWdwTzF4eVhHNWNkQ0FnSUNBZ0lDQWdYSFIwYUdsekxtTm9ZVzVuWlhObGRDNXdkWE5vS0dOb1lXNW5aU2s3WEhKY2JseDBJQ0FnSUNBZ0lDQmNkR2xtS0hOMFlYSjBLU0I3WEhKY2JseDBJQ0FnSUNBZ0lDQmNkRngwWkdWc2FYWmxjaWhtWVd4elpTd29kSGx3Wlc5bUtHUmxiR2wyWlhJdVpHVnNZWGtwUFQwOVhDSnVkVzFpWlhKY0lpQS9JR1JsYkdsMlpYSXVaR1ZzWVhrZ09pQXhNQ2twTzF4eVhHNWNkQ0FnSUNBZ0lDQWdYSFI5WEhKY2JseDBJQ0FnSUZ4MGZWeHlYRzVjZENBZ0lDQmNkSEpsZEhWeWJpQjBjblZsTzF4eVhHNWNkQ0FnSUNCOU8xeHlYRzVjZENBZ0lDQlBZbk5sY25abGNpNXdjbTkwYjNSNWNHVXVjMlYwVUhKdmRHOTBlWEJsVDJZZ1BTQm1kVzVqZEdsdmJpaDBZWEpuWlhRc0lIQnliM1J2ZEhsd1pTa2dlMXh5WEc1Y2RDQWdJQ0JjZEhaaGNpQnZiR1IyWVd4MVpTQTlJRTlpYW1WamRDNW5aWFJRY205MGIzUjVjR1ZQWmloMFlYSm5aWFFwTzF4eVhHNWNkQ0FnSUNCY2RFOWlhbVZqZEM1elpYUlFjbTkwYjNSNWNHVlBaaWgwWVhKblpYUXNJSEJ5YjNSdmRIbHdaU2s3WEhKY2JseDBJQ0FnSUZ4MGFXWW9kR0Z5WjJWMExsOWZiMkp6WlhKMlpYSnpYMTh1YVc1a1pYaFBaaWgwYUdsektUNDlNQ0FtSmlBaGRHaHBjeTVoWTJObGNIUnNhWE4wSUh4OElIUm9hWE11WVdOalpYQjBiR2x6ZEM1cGJtUmxlRTltS0Z3aWMyVjBVSEp2ZEc5MGVYQmxYQ0lwUGowd0tTQjdYSEpjYmx4MElDQWdJQ0FnSUNCY2RIWmhjaUJqYUdGdVoyVWdQU0I3YjJKcVpXTjBPblJoY21kbGRDeHVZVzFsT2x3aVgxOXdjbTkwYjE5ZlhDSXNkSGx3WlRwY0luTmxkRkJ5YjNSdmRIbHdaVndpTEc5c1pGWmhiSFZsT205c1pIWmhiSFZsZlN4Y2NseHVJQ0FnSUZ4MFhIUmNkRngwYzNSaGNuUWdQU0IwYUdsekxtTm9ZVzVuWlhObGRDNXNaVzVuZEdnZ1BUMDlJREFzWEhKY2JpQWdJQ0JjZEZ4MFhIUmNkR1JsYkdsMlpYSWdQU0IwYUdsekxtUmxiR2wyWlhJb0tUdGNjbHh1WEhRZ0lDQWdJQ0FnSUZ4MGRHaHBjeTVqYUdGdVoyVnpaWFF1Y0hWemFDaGphR0Z1WjJVcE8xeHlYRzVjZENBZ0lDQWdJQ0FnWEhScFppaHpkR0Z5ZENrZ2UxeHlYRzVjZENBZ0lDQWdJQ0FnWEhSY2RHUmxiR2wyWlhJb1ptRnNjMlVzS0hSNWNHVnZaaWhrWld4cGRtVnlMbVJsYkdGNUtUMDlQVndpYm5WdFltVnlYQ0lnUHlCa1pXeHBkbVZ5TG1SbGJHRjVJRG9nTVRBcEtUdGNjbHh1WEhRZ0lDQWdJQ0FnSUZ4MGZWeHlYRzVjZENBZ0lDQmNkSDFjY2x4dVhIUWdJQ0FnWEhSeVpYUjFjbTRnZEhKMVpUdGNjbHh1WEhRZ0lDQWdmVHRjY2x4dVhIUWdJQ0FnVDJKelpYSjJaWEl1Y0hKdmRHOTBlWEJsTG5CeVpYWmxiblJGZUhSbGJuTnBiMjV6SUQwZ1puVnVZM1JwYjI0b2RHRnlaMlYwS1NCN1hISmNibHgwSUNBZ0lDQWdJQ0JQWW1wbFkzUXVjSEpsZG1WdWRFVjRkR1Z1YzJsdmJuTW9kR0Z5WjJWMEtUdGNjbHh1WEhRZ0lDQWdYSFJwWmloMFlYSm5aWFF1WDE5dlluTmxjblpsY25OZlh5NXBibVJsZUU5bUtIUm9hWE1wUGowd0lDWW1JQ0YwYUdsekxtRmpZMlZ3ZEd4cGMzUWdmSHdnZEdocGN5NWhZMk5sY0hSc2FYTjBMbWx1WkdWNFQyWW9YQ0p3Y21WMlpXNTBSWGgwWlc1emFXOXVjMXdpS1Q0OU1Da2dlMXh5WEc1Y2RDQWdJQ0FnSUNBZ1hIUjJZWElnWTJoaGJtZGxJRDBnZTI5aWFtVmpkRHAwWVhKblpYUXNkSGx3WlRwY0luQnlaWFpsYm5SRmVIUmxibk5wYjI1elhDSjlMRnh5WEc1Y2RGeDBYSFJjZEZ4MGMzUmhjblFnUFNCMGFHbHpMbU5vWVc1blpYTmxkQzVzWlc1bmRHZ2dQVDA5SURBc1hISmNibHgwWEhSY2RGeDBYSFJrWld4cGRtVnlJRDBnZEdocGN5NWtaV3hwZG1WeUtDazdYSEpjYmx4MElDQWdJQ0FnSUNCY2RIUm9hWE11WTJoaGJtZGxjMlYwTG5CMWMyZ29ZMmhoYm1kbEtUdGNjbHh1WEhRZ0lDQWdJQ0FnSUZ4MGFXWW9jM1JoY25RcElIdGNjbHh1WEhRZ0lDQWdJQ0FnSUZ4MFhIUmtaV3hwZG1WeUtHWmhiSE5sTENoMGVYQmxiMllvWkdWc2FYWmxjaTVrWld4aGVTazlQVDFjSW01MWJXSmxjbHdpSUQ4Z1pHVnNhWFpsY2k1a1pXeGhlU0E2SURFd0tTazdYSEpjYmx4MElDQWdJQ0FnSUNCY2RIMWNjbHh1WEhRZ0lDQWdYSFI5WEhKY2JseDBJQ0FnSUZ4MGNtVjBkWEp1SUhSeWRXVTdYSEpjYmx4MElDQWdJSDA3WEhKY2JseDBJQ0FnSUU5aWFtVmpkQzV2WW5ObGNuWmxJRDBnWm5WdVkzUnBiMjRvYjJKcVpXTjBMR05oYkd4aVlXTnJMR0ZqWTJWd2RHeHBjM1FzY0dGMWMyRmliR1VzY0dGMWMyVXNaR1ZzWVhrcElIdGNjbHh1WEhRZ0lDQWdYSFJ5WlhSMWNtNGdibVYzSUU5aWMyVnlkbVZ5S0c5aWFtVmpkQ3hqWVd4c1ltRmpheXhoWTJObGNIUnNhWE4wTEhCaGRYTmhZbXhsTEhCaGRYTmxMR1JsYkdGNUtUdGNjbHh1WEhRZ0lDQWdmVHRjY2x4dVhIUWdJQ0FnVDJKcVpXTjBMblZ1YjJKelpYSjJaU0E5SUdaMWJtTjBhVzl1S0c5aWFtVmpkQ3hqWVd4c1ltRmpheWtnZTF4eVhHNWNkQ0FnSUNCY2RHbG1LRzlpYW1WamRDNWZYMjlpYzJWeWRtVnlRMkZzYkdKaFkydHpYMThwSUh0Y2NseHVYSFFnSUNBZ1hIUmNkR2xtS0NGallXeHNZbUZqYXlrZ2UxeHlYRzVjZENBZ0lDQmNkRngwWEhSdlltcGxZM1F1WDE5dlluTmxjblpsY2tOaGJHeGlZV05yYzE5ZkxuTndiR2xqWlNnd0xHOWlhbVZqZEM1ZlgyOWljMlZ5ZG1WeVEyRnNiR0poWTJ0elgxOHViR1Z1WjNSb0tUdGNjbHh1WEhRZ0lDQWdYSFJjZEZ4MGIySnFaV04wTGw5ZmIySnpaWEoyWlhKelgxOHVjM0JzYVdObEtEQXNiMkpxWldOMExsOWZiMkp6WlhKMlpYSnpYMTh1YkdWdVozUm9LVHRjY2x4dVhIUWdJQ0FnWEhSY2RGeDBjbVYwZFhKdU8xeHlYRzVjZENBZ0lDQmNkRngwZlZ4eVhHNWNkQ0FnSUNCY2RGeDBiMkpxWldOMExsOWZiMkp6WlhKMlpYSkRZV3hzWW1GamEzTmZYeTVtYjNKRllXTm9LR1oxYm1OMGFXOXVLRzlpYzJWeWRtVnlZMkZzYkdKaFkyc3NhU2tnZTF4eVhHNWNkQ0FnSUNCY2RGeDBYSFJwWmloallXeHNZbUZqYXowOVBXOWljMlZ5ZG1WeVkyRnNiR0poWTJzcElIdGNjbHh1WEhRZ0lDQWdYSFJjZEZ4MFhIUnZZbXBsWTNRdVgxOXZZbk5sY25abGNrTmhiR3hpWVdOcmMxOWZMbk53YkdsalpTaHBMREVwTzF4eVhHNWNkQ0FnSUNCY2RGeDBYSFJjZEdSbGJHVjBaU0J2WW1wbFkzUXVYMTl2WW5ObGNuWmxjbk5mWDF0cFhTNWpZV3hzWW1GamF6dGNjbHh1WEhRZ0lDQWdYSFJjZEZ4MFhIUnZZbXBsWTNRdVgxOXZZbk5sY25abGNuTmZYeTV6Y0d4cFkyVW9hU3d4S1R0Y2NseHVYSFFnSUNBZ1hIUmNkRngwZlZ4eVhHNWNkQ0FnSUNCY2RGeDBmU2s3WEhKY2JseDBJQ0FnSUZ4MGZWeHlYRzVjZENBZ0lDQjlPMXh5WEc1Y2RDQWdJQ0JCY25KaGVTNXZZbk5sY25abElEMGdablZ1WTNScGIyNG9iMkpxWldOMExHTmhiR3hpWVdOckxHRmpZMlZ3ZEd4cGMzUXNjR0YxYzJGaWJHVXNjR0YxYzJVc1pHVnNZWGtwSUh0Y2NseHVYSFFnSUNBZ1hIUnBaaWdoS0c5aWFtVmpkQ0JwYm5OMFlXNWpaVzltSUVGeWNtRjVLU0FtSmlBaFFYSnlZWGt1YVhOQmNuSmhlU2h2WW1wbFkzUXBLU0I3WEhKY2JseDBJQ0FnSUZ4MFhIUjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpUm1seWMzUWdZWEpuZFcxbGJuUWdkRzhnUVhKeVlYa3ViMkp6WlhKMlpYSWdhWE1nYm05MElHRnVJRUZ5Y21GNVhDSXBPMXh5WEc1Y2RDQWdJQ0JjZEgxY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWEhSaFkyTmxjSFJzYVhOMElEMGdZV05qWlhCMGJHbHpkQ0I4ZkNCYlhDSmhaR1JjSWl3Z1hDSjFjR1JoZEdWY0lpd2dYQ0prWld4bGRHVmNJaXdnWENKemNHeHBZMlZjSWwwN1hISmNibHgwSUNBZ0lGeDBkbUZ5SUdGeWNtRjVjSEp2ZUhrZ1BTQnVaWGNnVUhKdmVIa29iMkpxWldOMExIdG5aWFE2SUdaMWJtTjBhVzl1S0hSaGNtZGxkQ3h3Y205d1pYSjBlU2tnZTF4eVhHNWNkQ0FnSUNCY2RGeDBhV1lvY0hKdmNHVnlkSGs5UFQxY0luVnViMkp6WlhKMlpWd2lLU0I3WEhKY2JseDBYSFFnSUNBZ1hIUmNkSEpsZEhWeWJpQm1kVzVqZEdsdmJpaGpZV3hzWW1GamF5a2dlMXh5WEc1Y2RGeDBJQ0FnSUZ4MFhIUmNkR2xtS0dOaGJHeGlZV05yS1NCN1hISmNibHgwWEhRZ0lDQWdYSFJjZEZ4MFhIUnlaWFIxY200Z1QySnFaV04wTG5WdWIySnpaWEoyWlNoMFlYSm5aWFFzWTJGc2JHSmhZMnNwTzF4eVhHNWNkRngwSUNBZ0lGeDBYSFJjZEgxY2NseHVYSFJjZENBZ0lDQmNkRngwWEhSeVpYUjFjbTRnZEdGeVoyVjBMblZ1YjJKelpYSjJaU2dwTzF4eVhHNWNkRngwSUNBZ0lGeDBYSFI5TzF4eVhHNWNkRngwSUNBZ0lGeDBmVnh5WEc1Y2RDQWdJQ0JjZEZ4MGFXWW9jSEp2Y0dWeWRIazlQVDFjSW5Od2JHbGpaVndpS1NCN1hISmNibHgwSUNBZ0lGeDBYSFJjZEhKbGRIVnliaUJtZFc1amRHbHZiaWh6ZEdGeWRDeGxibVFwSUh0Y2NseHVYSFFnSUNBZ1hIUmNkRngwWEhScFppaDBlWEJsYjJZb2MzUmhjblFwSVQwOVhDSnVkVzFpWlhKY0lpQjhmQ0IwZVhCbGIyWW9aVzVrS1NFOVBWd2liblZ0WW1WeVhDSXBJSHRjY2x4dVhIUWdJQ0FnWEhSY2RGeDBYSFJjZEhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSkdhWEp6ZENCMGQyOGdZWEpuZFcxbGJuUnpJSFJ2SUVGeWNtRjVJSE53YkdsalpTQmhjbVVnYm05MElHNTFiV0psY2l3Z2JuVnRZbVZ5WENJcE8xeHlYRzVjZENBZ0lDQmNkRngwWEhSY2RIMWNjbHh1WEhRZ0lDQWdYSFFnSUNBZ1hIUmNkSFpoY2lCeVpXMXZkbVZrSUQwZ2RHaHBjeTV6YkdsalpTaHpkR0Z5ZEN4emRHRnlkQ3RsYm1RcExGeHlYRzVjZENBZ0lDQmNkQ0FnSUNCY2RGeDBYSFJoWkdSbFpFTnZkVzUwSUQwZ0tHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ1BpQXhJRDhnWVhKbmRXMWxiblJ6TG14bGJtZDBhQzB5SURvZ01Da3NYSEpjYmx4MElDQWdJRngwSUNBZ0lGeDBYSFJjZEdOb1lXNW5aU0E5SUNCN2IySnFaV04wT205aWFtVmpkQ3gwZVhCbE9sd2ljM0JzYVdObFhDSXNhVzVrWlhnNmMzUmhjblFzY21WdGIzWmxaRHB5WlcxdmRtVmtMR0ZrWkdWa1EyOTFiblE2WVdSa1pXUkRiM1Z1ZEgwN1hISmNibHgwSUNBZ0lGeDBJQ0FnSUZ4MFhIUjBZWEpuWlhRdWMzQnNhV05sTG1Gd2NHeDVLSFJoY21kbGRDeGhjbWQxYldWdWRITXBPMXh5WEc1Y2RDQWdJQ0JjZENBZ0lDQmNkRngwYVdZb1lXTmpaWEIwYkdsemRDNXBibVJsZUU5bUtGd2ljM0JzYVdObFhDSXBQajB3S1NCN1hISmNibHgwSUNBZ0lGeDBJQ0FnSUZ4MFhIUmNkSFpoY2lCemRHRnlkQ0E5SUhCeWIzaDVMbDlmYjJKelpYSjJaWEpmWHk1amFHRnVaMlZ6WlhRdWJHVnVaM1JvSUQwOVBTQXdMRnh5WEc1Y2RDQWdJQ0JjZENBZ0lDQWdJQ0FnWEhSY2RGeDBaR1ZzYVhabGNpQTlJSEJ5YjNoNUxsOWZiMkp6WlhKMlpYSmZYeTVrWld4cGRtVnlLQ2s3WEhKY2JseDBJQ0FnSUZ4MElDQWdJRngwWEhSY2RIQnliM2g1TGw5ZmIySnpaWEoyWlhKZlh5NWphR0Z1WjJWelpYUXVjSFZ6YUNoamFHRnVaMlVwTzF4eVhHNWNkQ0FnSUNCY2RDQWdJQ0JjZEZ4MFhIUnBaaWh6ZEdGeWRDa2dlMXh5WEc1Y2RDQWdJQ0JjZEZ4MElDQWdJQ0FnSUNCY2RGeDBaR1ZzYVhabGNpaG1ZV3h6WlN3b2RIbHdaVzltS0dSbGJHbDJaWEl1WkdWc1lYa3BQVDA5WENKdWRXMWlaWEpjSWlBL0lHUmxiR2wyWlhJdVpHVnNZWGtnT2lBeE1Da3BPMXh5WEc1Y2RDQWdJQ0JjZEZ4MElDQWdJQ0FnSUNCY2RIMWNjbHh1WEhRZ0lDQWdYSFFnSUNBZ1hIUmNkSDFjY2x4dVhIUWdJQ0FnWEhRZ0lDQWdYSFI5WEhKY2JseDBJQ0FnSUZ4MFhIUjlYSEpjYmx4MElDQWdJRngwWEhScFppaHdjbTl3WlhKMGVUMDlQVndpY0hWemFGd2lLU0I3WEhKY2JseDBJQ0FnSUZ4MFhIUmNkQ0J5WlhSMWNtNGdablZ1WTNScGIyNG9hWFJsYlNrZ2UxeHlYRzVjZENBZ0lDQmNkRngwSUNBZ0lGeDBjbVYwZFhKdUlIUm9hWE11YzNCc2FXTmxLSFJvYVhNdWJHVnVaM1JvTERBc2FYUmxiU2s3WEhKY2JseDBJQ0FnSUZ4MFhIUWdJQ0FnZlZ4eVhHNWNkQ0FnSUNCY2RGeDBmVnh5WEc1Y2RDQWdJQ0JjZEZ4MGFXWW9jSEp2Y0dWeWRIazlQVDFjSW5CdmNGd2lLU0I3WEhKY2JseDBJQ0FnSUZ4MFhIUmNkQ0J5WlhSMWNtNGdablZ1WTNScGIyNG9LU0I3WEhKY2JseDBJQ0FnSUZ4MFhIUWdJQ0FnWEhSeVpYUjFjbTRnZEdocGN5NXpjR3hwWTJVb2RHaHBjeTVzWlc1bmRHZ3RNU3d4S1R0Y2NseHVYSFFnSUNBZ1hIUmNkQ0FnSUNCOVhISmNibHgwSUNBZ0lGeDBYSFI5WEhKY2JseDBJQ0FnSUZ4MFhIUnBaaWh3Y205d1pYSjBlVDA5UFZ3aWRXNXphR2xtZEZ3aUtTQjdYSEpjYmx4MElDQWdJRngwWEhSY2RDQnlaWFIxY200Z1puVnVZM1JwYjI0b2FYUmxiU2tnZTF4eVhHNGdJQ0FnWEhSY2RDQWdJQ0JjZEZ4MGNtVjBkWEp1SUhSb2FYTXVjM0JzYVdObEtEQXNNQ3hwZEdWdEtUdGNjbHh1SUNBZ0lGeDBYSFFnSUNBZ1hIUjlYSEpjYmx4MElDQWdJRngwWEhSOVhISmNibHgwSUNBZ0lGeDBYSFJwWmlod2NtOXdaWEowZVQwOVBWd2ljMmhwWm5SY0lpa2dlMXh5WEc1Y2RDQWdJQ0JjZEZ4MFhIUnlaWFIxY200Z1puVnVZM1JwYjI0b0tTQjdYSEpjYmx4MElDQWdJRngwSUNBZ0lGeDBYSFJ5WlhSMWNtNGdkR2hwY3k1emNHeHBZMlVvTUN3eEtUdGNjbHh1WEhRZ0lDQWdYSFFnSUNBZ1hIUjlYSEpjYmx4MElDQWdJRngwWEhSOVhISmNibHgwSUNBZ0lGeDBYSFJ5WlhSMWNtNGdkR0Z5WjJWMFczQnliM0JsY25SNVhUdGNjbHh1WEhRZ0lDQWdYSFI5ZlNrN1hISmNibHgwSUNBZ0lGeDBkbUZ5SUhCeWIzaDVJRDBnVDJKcVpXTjBMbTlpYzJWeWRtVW9ZWEp5WVhsd2NtOTRlU3htZFc1amRHbHZiaWhqYUdGdVoyVnpaWFFwSUhzZ1hISmNibHgwSUNBZ0lGeDBYSFIyWVhJZ1kyaGhibWRsY3lBOUlHTm9ZVzVuWlhObGRDNW1hV3gwWlhJb1puVnVZM1JwYjI0b1kyaGhibWRsS1NCN0lISmxkSFZ5YmlCamFHRnVaMlV1Ym1GdFpTRTlQVndpYkdWdVozUm9YQ0lnSmlZZ1kyaGhibWRsTG01aGJXVWhQVDFjSW1Ga1pGd2lJQ1ltSUNnaFlXTmpaWEIwYkdsemRDQjhmQ0JoWTJObGNIUnNhWE4wTG1sdVpHVjRUMllvWTJoaGJtZGxMblI1Y0dVcFBqMHdLVHNnZlNrN1hISmNibHgwSUNBZ0lGeDBYSFJwWmloamFHRnVaMlZ6TG14bGJtZDBhRDR3S1NCN1hISmNibHgwSUNBZ0lGeDBYSFJjZEdOaGJHeGlZV05yS0dOb1lXNW5aWE1wTzF4eVhHNWNkQ0FnSUNCY2RGeDBmVnh5WEc1Y2RDQWdJQ0JjZEgwc1lXTmpaWEIwYkdsemRDeHdZWFZ6WVdKc1pTeHdZWFZ6WlN4a1pXeGhlU2s3WEhKY2JseDBJQ0FnSUZ4MGNtVjBkWEp1SUhCeWIzaDVPMXh5WEc1Y2RDQWdJQ0I5TzF4eVhHNWNkQ0FnSUNCQmNuSmhlUzUxYm05aWMyVnlkbVVnUFNCbWRXNWpkR2x2YmlodlltcGxZM1FzWTJGc2JHSmhZMnNwSUh0Y2NseHVYSFJjZENBZ2NtVjBkWEp1SUc5aWFtVmpkQzUxYm05aWMyVnlkbVVvWTJGc2JHSmhZMnNwTzF4eVhHNWNkQ0FnSUNCOVhISmNibHgwZlZ4eVhHNWNkRTlpYW1WamRDNWtaV1Z3VDJKelpYSjJaU0E5SUdaMWJtTjBhVzl1S0c5aWFtVmpkQ3hqWVd4c1ltRmpheXh3WVhKMGN5a2dlMXh5WEc1Y2NseHVYSFJjZEhCaGNuUnpJRDBnS0hCaGNuUnpJRDhnY0dGeWRITWdPaUJiWFNrN1hISmNibHh5WEc1Y2RGeDBkbUZ5SUhSdlZIbHdaVTVoYldVZ1BTQm1kVzVqZEdsdmJpaHZZbW9wSUh0Y2NseHVYSFJjZEZ4MGNtVjBkWEp1SUNoN2ZTa3VkRzlUZEhKcGJtY3VZMkZzYkNodlltb3BMbTFoZEdOb0tDOWNYSE1vVzJFdGVrRXRXbDByS1M4cFd6RmRMblJ2VEc5M1pYSkRZWE5sS0NsY2NseHVYSFJjZEgxY2NseHVYSEpjYmx4MFhIUm1kVzVqZEdsdmJpQnlaVzlpYzJWeWRtVW9kbUZzZFdVc0lIQmhjblJ6S1NCN1hISmNibHgwWEhSY2RIWmhjaUJyWlhseklEMGdUMkpxWldOMExtdGxlWE1vZG1Gc2RXVXBPMXh5WEc1Y2RGeDBYSFJyWlhsekxtWnZja1ZoWTJnb1puVnVZM1JwYjI0b2EyVjVLU0I3WEhKY2JseDBYSFJjZEZ4MGFXWW9LSFJ2Vkhsd1pVNWhiV1VvZG1Gc2RXVmJhMlY1WFNrZ1BUMDlJQ2R2WW1wbFkzUW5JSHg4SUhSdlZIbHdaVTVoYldVb2RtRnNkV1ZiYTJWNVhTa2dQVDA5SUNkaGNuSmhlU2NwSUNZbUlDRjJZV3gxWlZ0clpYbGRMbWhoYzA5M2JsQnliM0JsY25SNUtDZGZYMjlpYzJWeWRtVnljMTlmSnlrcElIdGNjbHh1WEhSY2RGeDBYSFJjZEhaaGNpQnVaWGR3WVhKMGN5QTlJSEJoY25SekxuTnNhV05sS0RBcE8xeHlYRzVjZEZ4MFhIUmNkRngwYm1WM2NHRnlkSE11Y0hWemFDaHJaWGtwTzF4eVhHNWNkRngwWEhSY2RGeDBkbUZzZFdWYmEyVjVYU0E5SUU5aWFtVmpkQzVrWldWd1QySnpaWEoyWlNoMllXeDFaVnRyWlhsZExHTmhiR3hpWVdOckxHNWxkM0JoY25SektUdGNjbHh1WEhSY2RGeDBYSFI5WEhKY2JseDBYSFJjZEgwcE8xeHlYRzVjZEZ4MGZWeHlYRzVjY2x4dVhIUmNkSEpsYjJKelpYSjJaU2h2WW1wbFkzUXNJSEJoY25SektUdGNjbHh1WEhKY2JseDBYSFIyWVhJZ2IySnpaWEoyWldRZ1BTQlBZbXBsWTNRdWIySnpaWEoyWlNodlltcGxZM1FzWm5WdVkzUnBiMjRvWTJoaGJtZGxjMlYwS1NCN1hISmNibHgwWEhSY2RIWmhjaUJqYUdGdVoyVnpJRDBnVzEwN1hISmNibHgwWEhSY2RHWjFibU4wYVc5dUlISmxZM1Z5YzJVb2JtRnRaU3h5YjI5MFQySnFaV04wTEc5c1pFOWlhbVZqZEN4dVpYZFBZbXBsWTNRc2NHRjBhQ2tnZTF4eVhHNWNkRngwWEhSY2RHbG1LRzVsZDA5aWFtVmpkQ0JwYm5OMFlXNWpaVzltSUU5aWFtVmpkQ2tnZTF4eVhHNWNkRngwWEhSY2RGeDBkbUZ5SUc1bGQydGxlWE1nUFNCUFltcGxZM1F1YTJWNWN5aHVaWGRQWW1wbFkzUXBPMXh5WEc1Y2RGeDBYSFJjZEZ4MGJtVjNhMlY1Y3k1bWIzSkZZV05vS0daMWJtTjBhVzl1S0d0bGVTa2dlMXh5WEc1Y2RGeDBYSFJjZEZ4MFhIUnBaaWdoYjJ4a1QySnFaV04wSUh4OElDaHZiR1JQWW1wbFkzUmJhMlY1WFNFOVBXNWxkMDlpYW1WamRGdHJaWGxkS1NrZ2UxeHlYRzVjZEZ4MFhIUmNkRngwWEhSY2RIWmhjaUJ2YkdSMllXeDFaU0E5SUNodmJHUlBZbXBsWTNRZ0ppWWdiMnhrVDJKcVpXTjBXMnRsZVYwaFBUMTFibVJsWm1sdVpXUWdQeUJ2YkdSUFltcGxZM1JiYTJWNVhTQTZJSFZ1WkdWbWFXNWxaQ2tzWEhKY2JseDBYSFJjZEZ4MFhIUmNkRngwWEhSamFHRnVaMlVnUFNBb2IyeGtkbUZzZFdVOVBUMTFibVJsWm1sdVpXUWdQeUJjSW1Ga1pGd2lJRG9nWENKMWNHUmhkR1ZjSWlrc1hISmNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUnJaWGx3WVhSb0lEMGdjR0YwYUNBcklGd2lMbHdpSUNzZ2EyVjVPMXh5WEc1Y2NseHVYSFJjZEZ4MFhIUmNkRngwWEhSamFHRnVaMlZ6TG5CMWMyZ29lMjVoYldVNmJtRnRaU3h2WW1wbFkzUTZjbTl2ZEU5aWFtVmpkQ3gwZVhCbE9tTm9ZVzVuWlN4dmJHUldZV3gxWlRwdmJHUjJZV3gxWlN4dVpYZFdZV3gxWlRwdVpYZFBZbXBsWTNSYmEyVjVYU3hyWlhsd1lYUm9PbXRsZVhCaGRHaDlLVHRjY2x4dVhIUmNkRngwWEhSY2RGeDBYSFJ5WldOMWNuTmxLRzVoYldVc2NtOXZkRTlpYW1WamRDeHZiR1IyWVd4MVpTeHVaWGRQWW1wbFkzUmJhMlY1WFN4clpYbHdZWFJvS1R0Y2NseHVYSFJjZEZ4MFhIUmNkRngwZlZ4eVhHNWNkRngwWEhSY2RGeDBmU2s3WEhKY2JseDBYSFJjZEZ4MGZTQmxiSE5sSUdsbUtHOXNaRTlpYW1WamRDQnBibk4wWVc1alpXOW1JRTlpYW1WamRDa2dlMXh5WEc1Y2RGeDBYSFJjZEZ4MGRtRnlJRzlzWkd0bGVYTWdQU0JQWW1wbFkzUXVhMlY1Y3lodmJHUlBZbXBsWTNRcE8xeHlYRzVjZEZ4MFhIUmNkRngwYjJ4a2EyVjVjeTVtYjNKRllXTm9LR1oxYm1OMGFXOXVLR3RsZVNrZ2UxeHlYRzVjZEZ4MFhIUmNkRngwWEhSMllYSWdZMmhoYm1kbElEMGdLRzVsZDA5aWFtVmpkRDA5UFc1MWJHd2dQeUJjSW5Wd1pHRjBaVndpSURvZ1hDSmtaV3hsZEdWY0lpa3NYSEpjYmx4MFhIUmNkRngwWEhSY2RGeDBhMlY1Y0dGMGFDQTlJSEJoZEdnZ0t5QmNJaTVjSWlBcklHdGxlVHRjY2x4dVhIUmNkRngwWEhSY2RGeDBYSFJjY2x4dVhIUmNkRngwWEhSY2RGeDBZMmhoYm1kbGN5NXdkWE5vS0h0dVlXMWxPbTVoYldVc2IySnFaV04wT25KdmIzUlBZbXBsWTNRc2RIbHdaVHBqYUdGdVoyVXNiMnhrVm1Gc2RXVTZiMnhrVDJKcVpXTjBXMnRsZVYwc2JtVjNWbUZzZFdVNmJtVjNUMkpxWldOMExHdGxlWEJoZEdnNmEyVjVjR0YwYUgwcE8xeHlYRzVjZEZ4MFhIUmNkRngwWEhSeVpXTjFjbk5sS0c1aGJXVXNjbTl2ZEU5aWFtVmpkQ3h2YkdSUFltcGxZM1JiYTJWNVhTeDFibVJsWm1sdVpXUXNhMlY1Y0dGMGFDazdYSEpjYmx4MFhIUmNkRngwWEhSOUtUdGNjbHh1WEhSY2RGeDBYSFI5WEhKY2JseDBYSFJjZEgxY2NseHVYSFJjZEZ4MFkyaGhibWRsYzJWMExtWnZja1ZoWTJnb1puVnVZM1JwYjI0b1kyaGhibWRsS1NCN1hISmNibHgwWEhSY2RGeDBkbUZ5SUd0bGVYQmhkR2dnUFNBb2NHRnlkSE11YkdWdVozUm9QakFnUHlCd1lYSjBjeTVxYjJsdUtGd2lMbHdpS1NBcklGd2lMbHdpSURvZ1hDSmNJaWtnS3lCamFHRnVaMlV1Ym1GdFpUdGNjbHh1WEhKY2JseDBYSFJjZEZ4MGFXWWdLR05vWVc1blpTNTBlWEJsSUQwOVBTQmNJblZ3WkdGMFpWd2lJSHg4SUdOb1lXNW5aUzUwZVhCbElEMDlQU0JjSW1Ga1pGd2lLU0I3SUZ4eVhHNWNkRngwWEhSY2RGeDBjbVZ2WW5ObGNuWmxLR05vWVc1blpTNXZZbXBsWTNRc0lIQmhjblJ6S1R0Y2NseHVYSFJjZEZ4MFhIUjlYSEpjYmx4eVhHNWNkRngwWEhSY2RHTm9ZVzVuWlhNdWNIVnphQ2g3Ym1GdFpUcGphR0Z1WjJVdWJtRnRaU3h2WW1wbFkzUTZZMmhoYm1kbExtOWlhbVZqZEN4MGVYQmxPbU5vWVc1blpTNTBlWEJsTEc5c1pGWmhiSFZsT21Ob1lXNW5aUzV2YkdSV1lXeDFaU3h1WlhkV1lXeDFaVHBqYUdGdVoyVXViMkpxWldOMFcyTm9ZVzVuWlM1dVlXMWxYU3hyWlhsd1lYUm9PbXRsZVhCaGRHaDlLVHRjY2x4dVhIUmNkRngwWEhSeVpXTjFjbk5sS0dOb1lXNW5aUzV1WVcxbExHTm9ZVzVuWlM1dlltcGxZM1FzWTJoaGJtZGxMbTlzWkZaaGJIVmxMR05vWVc1blpTNXZZbXBsWTNSYlkyaGhibWRsTG01aGJXVmRMR3RsZVhCaGRHZ3BPMXh5WEc1Y2RGeDBYSFI5S1R0Y2NseHVYSFJjZEZ4MFkyRnNiR0poWTJzb1kyaGhibWRsY3lrN1hISmNibHgwWEhSOUtUdGNjbHh1WEhSY2RISmxkSFZ5YmlCdlluTmxjblpsWkR0Y2NseHVYSFI5TzF4eVhHNTlLU2dwTzF4eVhHNWNibHh1WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZJRmRGUWxCQlEwc2dSazlQVkVWU1hHNHZMeUF1TDI1dlpHVmZiVzlrZFd4bGN5OXdjbTk0ZVMxdlluTmxjblpsTDJsdVpHVjRMbXB6WEc0dkx5QnRiMlIxYkdVZ2FXUWdQU0F4TWpKY2JpOHZJRzF2WkhWc1pTQmphSFZ1YTNNZ1BTQXdJREVnTWlBeklEVWdNVE1pWFN3aWMyOTFjbU5sVW05dmRDSTZJaUo5XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzEyMlxcbicpfSwxMzpmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7ZXZhbChcIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcXG4gIHRyeSB7XFxuICAgIHJldHVybiAhIWV4ZWMoKTtcXG4gIH0gY2F0Y2ggKGUpIHtcXG4gICAgcmV0dXJuIHRydWU7XFxuICB9XFxufTtcXG4vLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOXViMlJsWDIxdlpIVnNaWE12WTI5eVpTMXFjeTlzYVdKeVlYSjVMMjF2WkhWc1pYTXZYMlpoYVd4ekxtcHpQelJpWTJRaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFc1IwRkJSenRCUVVOSU8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSXhNeTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1puVnVZM1JwYjI0Z0tHVjRaV01wSUh0Y2JpQWdkSEo1SUh0Y2JpQWdJQ0J5WlhSMWNtNGdJU0ZsZUdWaktDazdYRzRnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlZ4dWZUdGNibHh1WEc1Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeThnVjBWQ1VFRkRTeUJHVDA5VVJWSmNiaTh2SUM0dmJtOWtaVjl0YjJSMWJHVnpMMk52Y21VdGFuTXZiR2xpY21GeWVTOXRiMlIxYkdWekwxOW1ZV2xzY3k1cWMxeHVMeThnYlc5a2RXeGxJR2xrSUQwZ01UTmNiaTh2SUcxdlpIVnNaU0JqYUhWdWEzTWdQU0F3SURFZ01pQXpJRFFnTlNBMklEY2dPQ0E1SURFd0lERXhJREV5SURFeklERTBJbDBzSW5OdmRYSmpaVkp2YjNRaU9pSWlmUT09XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzEzXFxuXCIpfSwxNDpmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKXtldmFsKFwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXFxudmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpO1xcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcXG4gIGFGdW5jdGlvbihmbik7XFxuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XFxuICBzd2l0Y2ggKGxlbmd0aCkge1xcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xcbiAgICB9O1xcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xcbiAgICB9O1xcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xcbiAgICB9O1xcbiAgfVxcbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XFxuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xcbiAgfTtcXG59O1xcbi8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5dWIyUmxYMjF2WkhWc1pYTXZZMjl5WlMxcWN5OXNhV0p5WVhKNUwyMXZaSFZzWlhNdlgyTjBlQzVxY3o5bU9Ua3pJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2lNVFF1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZMeUJ2Y0hScGIyNWhiQ0F2SUhOcGJYQnNaU0JqYjI1MFpYaDBJR0pwYm1ScGJtZGNiblpoY2lCaFJuVnVZM1JwYjI0Z1BTQnlaWEYxYVhKbEtDY3VMMTloTFdaMWJtTjBhVzl1SnlrN1hHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHWjFibU4wYVc5dUlDaG1iaXdnZEdoaGRDd2diR1Z1WjNSb0tTQjdYRzRnSUdGR2RXNWpkR2x2YmlobWJpazdYRzRnSUdsbUlDaDBhR0YwSUQwOVBTQjFibVJsWm1sdVpXUXBJSEpsZEhWeWJpQm1ianRjYmlBZ2MzZHBkR05vSUNoc1pXNW5kR2dwSUh0Y2JpQWdJQ0JqWVhObElERTZJSEpsZEhWeWJpQm1kVzVqZEdsdmJpQW9ZU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR1p1TG1OaGJHd29kR2hoZEN3Z1lTazdYRzRnSUNBZ2ZUdGNiaUFnSUNCallYTmxJREk2SUhKbGRIVnliaUJtZFc1amRHbHZiaUFvWVN3Z1lpa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHWnVMbU5oYkd3b2RHaGhkQ3dnWVN3Z1lpazdYRzRnSUNBZ2ZUdGNiaUFnSUNCallYTmxJRE02SUhKbGRIVnliaUJtZFc1amRHbHZiaUFvWVN3Z1lpd2dZeWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR1p1TG1OaGJHd29kR2hoZEN3Z1lTd2dZaXdnWXlrN1hHNGdJQ0FnZlR0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnWm5WdVkzUnBiMjRnS0M4cUlDNHVMbUZ5WjNNZ0tpOHBJSHRjYmlBZ0lDQnlaWFIxY200Z1ptNHVZWEJ3Ykhrb2RHaGhkQ3dnWVhKbmRXMWxiblJ6S1R0Y2JpQWdmVHRjYm4wN1hHNWNibHh1WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZJRmRGUWxCQlEwc2dSazlQVkVWU1hHNHZMeUF1TDI1dlpHVmZiVzlrZFd4bGN5OWpiM0psTFdwekwyeHBZbkpoY25rdmJXOWtkV3hsY3k5ZlkzUjRMbXB6WEc0dkx5QnRiMlIxYkdVZ2FXUWdQU0F4TkZ4dUx5OGdiVzlrZFd4bElHTm9kVzVyY3lBOUlEQWdNU0F5SURNZ05DQTFJRFlnTnlBNElEa2dNVEFnTVRFZ01USWdNVE1nTVRRaVhTd2ljMjkxY21ObFVtOXZkQ0k2SWlKOVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8xNFxcblwiKX0sMTU6ZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpe2V2YWwoXCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XFxuICByZXR1cm4ge1xcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxcbiAgICB2YWx1ZTogdmFsdWVcXG4gIH07XFxufTtcXG4vLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOXViMlJsWDIxdlpIVnNaWE12WTI5eVpTMXFjeTlzYVdKeVlYSjVMMjF2WkhWc1pYTXZYM0J5YjNCbGNuUjVMV1JsYzJNdWFuTS9OV1pqTUNKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNklqRTFMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCbWRXNWpkR2x2YmlBb1ltbDBiV0Z3TENCMllXeDFaU2tnZTF4dUlDQnlaWFIxY200Z2UxeHVJQ0FnSUdWdWRXMWxjbUZpYkdVNklDRW9ZbWwwYldGd0lDWWdNU2tzWEc0Z0lDQWdZMjl1Wm1sbmRYSmhZbXhsT2lBaEtHSnBkRzFoY0NBbUlESXBMRnh1SUNBZ0lIZHlhWFJoWW14bE9pQWhLR0pwZEcxaGNDQW1JRFFwTEZ4dUlDQWdJSFpoYkhWbE9pQjJZV3gxWlZ4dUlDQjlPMXh1ZlR0Y2JseHVYRzVjYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OGdWMFZDVUVGRFN5QkdUMDlVUlZKY2JpOHZJQzR2Ym05a1pWOXRiMlIxYkdWekwyTnZjbVV0YW5NdmJHbGljbUZ5ZVM5dGIyUjFiR1Z6TDE5d2NtOXdaWEowZVMxa1pYTmpMbXB6WEc0dkx5QnRiMlIxYkdVZ2FXUWdQU0F4TlZ4dUx5OGdiVzlrZFd4bElHTm9kVzVyY3lBOUlEQWdNU0F5SURNZ05DQTFJRFlnTnlBNElEa2dNVEFnTVRFZ01USWdNVE1nTVRRaVhTd2ljMjkxY21ObFVtOXZkQ0k2SWlKOVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8xNVxcblwiKX0sMTk4OmZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pe1widXNlIHN0cmljdFwiO2V2YWwoJ1xcblxcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xcbiAgdmFsdWU6IHRydWVcXG59KTtcXG5leHBvcnRzLldhdGNoaW5nWW91ID0gdW5kZWZpbmVkO1xcblxcbnZhciBfV2F0Y2hpbmdZb3UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5OSk7XFxuXFxudmFyIF9XYXRjaGluZ1lvdTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9XYXRjaGluZ1lvdSk7XFxuXFxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cXG5cXG5leHBvcnRzLldhdGNoaW5nWW91ID0gX1dhdGNoaW5nWW91Mi5kZWZhdWx0Oy8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5emNtTXZWWFJwYkhNdWFuTS9NREV6TUNKZExDSnVZVzFsY3lJNld5SlhZWFJqYUdsdVoxbHZkU0pkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3p0QlFVRkJPenM3T3pzN1VVRkZVMEVzVnlJc0ltWnBiR1VpT2lJeE9UZ3Vhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnVjJGMFkyaHBibWRaYjNVZ1puSnZiU0FuTGk5MWRHbHNjeTlYWVhSamFHbHVaMWx2ZFNjN1hHNWNibVY0Y0c5eWRDQjdJRmRoZEdOb2FXNW5XVzkxSUgwN1hHNWNibHh1WEc0dkx5QlhSVUpRUVVOTElFWlBUMVJGVWlBdkwxeHVMeThnTGk5emNtTXZWWFJwYkhNdWFuTWlYU3dpYzI5MWNtTmxVbTl2ZENJNklpSjlcXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vMTk4XFxuJyl9LDE5OTpmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKXtcInVzZSBzdHJpY3RcIjtldmFsKFwiXFxuXFxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFxcXCJfX2VzTW9kdWxlXFxcIiwge1xcbiAgdmFsdWU6IHRydWVcXG59KTtcXG5cXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XFxuXFxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xcblxcbnZhciBfY3JlYXRlQ2xhc3MyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcXG5cXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XFxuXFxuX193ZWJwYWNrX3JlcXVpcmVfXygxMjIpO1xcblxcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XFxuXFxudmFyIFdhdGNoaW5nWW91ID0gZnVuY3Rpb24gKCkge1xcbiAgZnVuY3Rpb24gV2F0Y2hpbmdZb3UoKSB7XFxuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFdhdGNoaW5nWW91KTtcXG5cXG4gICAgdGhpcy5fd2F0Y2hpbmcgPSB7fTtcXG4gICAgdGhpcy5fb2JzZXJ2ZXJzID0gW107XFxuICB9XFxuXFxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShXYXRjaGluZ1lvdSwgW3tcXG4gICAga2V5OiAnd2F0Y2gnLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gd2F0Y2goa2V5LCBvYmplY3QpIHtcXG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xcblxcbiAgICAgIHZhciBkZWVwID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBmYWxzZTtcXG5cXG4gICAgICBpZiAoZGVlcCkge1xcbiAgICAgICAgdGhpcy5fd2F0Y2hpbmdba2V5XSA9IE9iamVjdC5kZWVwT2JzZXJ2ZShvYmplY3QsIGZ1bmN0aW9uIChjaGFuZ2VzKSB7XFxuICAgICAgICAgIGNoYW5nZXMuZXZlcnkoZnVuY3Rpb24gKGNoYW5nZSkge1xcbiAgICAgICAgICAgIF90aGlzLl9maXJlRXZlbnQoa2V5LCBjaGFuZ2UpO1xcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH0pO1xcbiAgICAgIH0gZWxzZSB7XFxuICAgICAgICB0aGlzLl93YXRjaGluZ1trZXldID0gT2JqZWN0Lm9ic2VydmUob2JqZWN0LCBmdW5jdGlvbiAoY2hhbmdlcykge1xcbiAgICAgICAgICBjaGFuZ2VzLmV2ZXJ5KGZ1bmN0aW9uIChjaGFuZ2UpIHtcXG4gICAgICAgICAgICBfdGhpcy5fZmlyZUV2ZW50KGtleSwgY2hhbmdlKTtcXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9KTtcXG4gICAgICB9XFxuICAgICAgcmV0dXJuIHRoaXMuX3dhdGNoaW5nW2tleV07XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiAnb2JzZXJ2ZScsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvYnNlcnZlKGtleSwgY2FsbGJhY2spIHtcXG4gICAgICB0aGlzLl9vYnNlcnZlcnMucHVzaCh7IGtleToga2V5LCBjYWxsYmFjazogY2FsbGJhY2sgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiAnX2ZpcmVFdmVudCcsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZmlyZUV2ZW50KGtleSwgY2hhbmdlKSB7XFxuXFxuICAgICAgdGhpcy5fb2JzZXJ2ZXJzLmZpbHRlcihmdW5jdGlvbiAob2JzZXJ2ZSkge1xcbiAgICAgICAgcmV0dXJuIG9ic2VydmUua2V5ID09PSBrZXk7XFxuICAgICAgfSkuZm9yRWFjaChmdW5jdGlvbiAob2JzZXJ2ZSkge1xcbiAgICAgICAgb2JzZXJ2ZS5jYWxsYmFjayhjaGFuZ2UpO1xcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9XSk7XFxuICByZXR1cm4gV2F0Y2hpbmdZb3U7XFxufSgpO1xcblxcbmV4cG9ydHMuZGVmYXVsdCA9IFdhdGNoaW5nWW91O1xcblxcbi8qbGV0IHdhdGNoQ2hhbmdlcyA9IG5ldyBXYXRjaENoYW5nZXMoKTtcXG5sZXQgcDJwUmVxdWVzdGVyU3R1YiA9IHdhdGNoQ2hhbmdlcy53YXRjaCgncDJwJywge30sIHRydWUpO1xcbmxldCBzdHViID0gd2F0Y2hDaGFuZ2VzLndhdGNoKCdzdHViJywge30pO1xcblxcbndhdGNoQ2hhbmdlcy5vYnNlcnZlKCdwMnAnLCAoY2hhbmdlKSA9PiB7XFxuICBjb25zb2xlLmxvZygncDJwUmVxdWVzdGVyU3R1YjogJyArIGNoYW5nZS5uYW1lICsgJyAtICcgKyBKU09OLnN0cmluZ2lmeShjaGFuZ2UubmV3VmFsdWUpKTtcXG59KTtcXG5cXG53YXRjaENoYW5nZXMub2JzZXJ2ZSgncDJwJywgKGNoYW5nZSkgPT4ge1xcbiAgY29uc29sZS5sb2coJ3AycFJlcXVlc3RlclN0dWI6ICcgKyBjaGFuZ2UubmFtZSArICcgLSAnICsgSlNPTi5zdHJpbmdpZnkoY2hhbmdlLm5ld1ZhbHVlKSk7XFxufSk7XFxuXFxud2F0Y2hDaGFuZ2VzLm9ic2VydmUoJ3N0dWInLCAoY2hhbmdlKSA9PiB7XFxuICBjb25zb2xlLmxvZygnc3R1YiAnICsgY2hhbmdlLm5hbWUpO1xcbn0pO1xcblxcbnAycFJlcXVlc3RlclN0dWIuYSA9IHt9O1xcbnN0dWIuYiA9IHtuYW1lOiAndml0b3InfTtcXG5wMnBSZXF1ZXN0ZXJTdHViLmEubmFtZSA9ICdIZWxsbyc7XFxuc3R1Yi5iID0ge25hbWU6ICd2aXRvcid9O1xcbnAycFJlcXVlc3RlclN0dWIuYS5hZ2UgPSAnMzInO1xcbnAycFJlcXVlc3RlclN0dWIuYS5uYW1lID0gJ1dvcmxkJzsqL1xcblxcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOy8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5emNtTXZkWFJwYkhNdlYyRjBZMmhwYm1kWmIzVXVhbk0vWXpKaU1DSmRMQ0p1WVcxbGN5STZXeUpYWVhSamFHbHVaMWx2ZFNJc0lsOTNZWFJqYUdsdVp5SXNJbDl2WW5ObGNuWmxjbk1pTENKclpYa2lMQ0p2WW1wbFkzUWlMQ0prWldWd0lpd2lUMkpxWldOMElpd2laR1ZsY0U5aWMyVnlkbVVpTENKamFHRnVaMlZ6SWl3aVpYWmxjbmtpTENKamFHRnVaMlVpTENKZlptbHlaVVYyWlc1MElpd2liMkp6WlhKMlpTSXNJbU5oYkd4aVlXTnJJaXdpY0hWemFDSXNJbVpwYkhSbGNpSXNJbVp2Y2tWaFkyZ2lYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096czdPMEZCUVVFN096czdTVUZGVFVFc1Z6dEJRVVZLTEhsQ1FVRmpPMEZCUVVFN08wRkJRMW9zVTBGQlMwTXNVMEZCVEN4SFFVRnBRaXhGUVVGcVFqdEJRVU5CTEZOQlFVdERMRlZCUVV3c1IwRkJhMElzUlVGQmJFSTdRVUZEUkRzN096c3dRa0ZGUzBNc1J5eEZRVUZMUXl4TkxFVkJRWE5DTzBGQlFVRTdPMEZCUVVFc1ZVRkJaRU1zU1VGQll5eDFSVUZCVUN4TFFVRlBPenRCUVVNdlFpeFZRVUZKUVN4SlFVRktMRVZCUVZVN1FVRkRVaXhoUVVGTFNpeFRRVUZNTEVOQlFXVkZMRWRCUVdZc1NVRkJjMEpITEU5QlFVOURMRmRCUVZBc1EwRkJiVUpJTEUxQlFXNUNMRVZCUVRKQ0xGVkJRVU5KTEU5QlFVUXNSVUZCWVR0QlFVTTFSRUVzYTBKQlFWRkRMRXRCUVZJc1EwRkJZeXhWUVVGRFF5eE5RVUZFTEVWQlFWazdRVUZEZUVJc2EwSkJRVXRETEZWQlFVd3NRMEZCWjBKU0xFZEJRV2hDTEVWQlFYRkNUeXhOUVVGeVFqdEJRVU5FTEZkQlJrUTdRVUZIUkN4VFFVcHhRaXhEUVVGMFFqdEJRVXRFTEU5QlRrUXNUVUZOVHp0QlFVTk1MR0ZCUVV0VUxGTkJRVXdzUTBGQlpVVXNSMEZCWml4SlFVRnpRa2NzVDBGQlQwMHNUMEZCVUN4RFFVRmxVaXhOUVVGbUxFVkJRWFZDTEZWQlFVTkpMRTlCUVVRc1JVRkJZVHRCUVVONFJFRXNhMEpCUVZGRExFdEJRVklzUTBGQll5eFZRVUZEUXl4TlFVRkVMRVZCUVZrN1FVRkRlRUlzYTBKQlFVdERMRlZCUVV3c1EwRkJaMEpTTEVkQlFXaENMRVZCUVhGQ1R5eE5RVUZ5UWp0QlFVTkVMRmRCUmtRN1FVRkhSQ3hUUVVweFFpeERRVUYwUWp0QlFVdEVPMEZCUTBRc1lVRkJUeXhMUVVGTFZDeFRRVUZNTEVOQlFXVkZMRWRCUVdZc1EwRkJVRHRCUVVORU96czdORUpCUlU5QkxFY3NSVUZCUzFVc1VTeEZRVUZWTzBGQlEzSkNMRmRCUVV0WUxGVkJRVXdzUTBGQlowSlpMRWxCUVdoQ0xFTkJRWEZDTEVWQlFVTllMRXRCUVV0QkxFZEJRVTRzUlVGQlYxVXNWVUZCVlVFc1VVRkJja0lzUlVGQmNrSTdRVUZEUkRzN095dENRVVZWVml4SExFVkJRVXRQTEUwc1JVRkJVVHM3UVVGRmRFSXNWMEZCUzFJc1ZVRkJUQ3hEUVVGblFtRXNUVUZCYUVJc1EwRkJkVUlzVlVGQlEwZ3NUMEZCUkN4RlFVRmhPMEZCUTJ4RExHVkJRVTlCTEZGQlFWRlVMRWRCUVZJc1MwRkJaMEpCTEVkQlFYWkNPMEZCUTBRc1QwRkdSQ3hGUVVWSFlTeFBRVVpJTEVOQlJWY3NWVUZCUTBvc1QwRkJSQ3hGUVVGaE8wRkJRM1JDUVN4blFrRkJVVU1zVVVGQlVpeERRVUZwUWtnc1RVRkJha0k3UVVGRFJDeFBRVXBFTzBGQlRVUTdPenM3TzJ0Q1FVbFpWaXhYT3p0QlFVVm1JaXdpWm1sc1pTSTZJakU1T1M1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQW5jSEp2ZUhrdGIySnpaWEoyWlNjN1hHNWNibU5zWVhOeklGZGhkR05vYVc1bldXOTFJSHRjYmx4dUlDQmpiMjV6ZEhKMVkzUnZjaWdwSUh0Y2JpQWdJQ0IwYUdsekxsOTNZWFJqYUdsdVp5QTlJSHQ5TzF4dUlDQWdJSFJvYVhNdVgyOWljMlZ5ZG1WeWN5QTlJRnRkTzF4dUlDQjlYRzVjYmlBZ2QyRjBZMmdvYTJWNUxDQnZZbXBsWTNRc0lHUmxaWEFnUFNCbVlXeHpaU2tnZTF4dUlDQWdJR2xtSUNoa1pXVndLU0I3WEc0Z0lDQWdJQ0IwYUdsekxsOTNZWFJqYUdsdVoxdHJaWGxkSUQwZ1QySnFaV04wTG1SbFpYQlBZbk5sY25abEtHOWlhbVZqZEN3Z0tHTm9ZVzVuWlhNcElEMCtJSHRjYmlBZ0lDQWdJQ0FnWTJoaGJtZGxjeTVsZG1WeWVTZ29ZMmhoYm1kbEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVmWm1seVpVVjJaVzUwS0d0bGVTd2dZMmhoYm1kbEtUdGNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR2hwY3k1ZmQyRjBZMmhwYm1kYmEyVjVYU0E5SUU5aWFtVmpkQzV2WW5ObGNuWmxLRzlpYW1WamRDd2dLR05vWVc1blpYTXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ1kyaGhibWRsY3k1bGRtVnllU2dvWTJoaGJtZGxLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdkR2hwY3k1ZlptbHlaVVYyWlc1MEtHdGxlU3dnWTJoaGJtZGxLVHRjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgzZGhkR05vYVc1blcydGxlVjA3WEc0Z0lIMWNibHh1SUNCdlluTmxjblpsS0d0bGVTd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjBhR2x6TGw5dlluTmxjblpsY25NdWNIVnphQ2g3YTJWNU9pQnJaWGtzSUdOaGJHeGlZV05yT2lCallXeHNZbUZqYTMwcE8xeHVJQ0I5WEc1Y2JpQWdYMlpwY21WRmRtVnVkQ2hyWlhrc0lHTm9ZVzVuWlNrZ2UxeHVYRzRnSUNBZ2RHaHBjeTVmYjJKelpYSjJaWEp6TG1acGJIUmxjaWdvYjJKelpYSjJaU2tnUFQ0Z2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc5aWMyVnlkbVV1YTJWNUlEMDlQU0JyWlhrN1hHNGdJQ0FnZlNrdVptOXlSV0ZqYUNnb2IySnpaWEoyWlNrZ1BUNGdlMXh1SUNBZ0lDQWdiMkp6WlhKMlpTNWpZV3hzWW1GamF5aGphR0Z1WjJVcE8xeHVJQ0FnSUgwcE8xeHVYRzRnSUgxY2JseHVmVnh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JYWVhSamFHbHVaMWx2ZFR0Y2JseHVMeXBzWlhRZ2QyRjBZMmhEYUdGdVoyVnpJRDBnYm1WM0lGZGhkR05vUTJoaGJtZGxjeWdwTzF4dWJHVjBJSEF5Y0ZKbGNYVmxjM1JsY2xOMGRXSWdQU0IzWVhSamFFTm9ZVzVuWlhNdWQyRjBZMmdvSjNBeWNDY3NJSHQ5TENCMGNuVmxLVHRjYm14bGRDQnpkSFZpSUQwZ2QyRjBZMmhEYUdGdVoyVnpMbmRoZEdOb0tDZHpkSFZpSnl3Z2UzMHBPMXh1WEc1M1lYUmphRU5vWVc1blpYTXViMkp6WlhKMlpTZ25jREp3Snl3Z0tHTm9ZVzVuWlNrZ1BUNGdlMXh1SUNCamIyNXpiMnhsTG14dlp5Z25jREp3VW1WeGRXVnpkR1Z5VTNSMVlqb2dKeUFySUdOb1lXNW5aUzV1WVcxbElDc2dKeUF0SUNjZ0t5QktVMDlPTG5OMGNtbHVaMmxtZVNoamFHRnVaMlV1Ym1WM1ZtRnNkV1VwS1R0Y2JuMHBPMXh1WEc1M1lYUmphRU5vWVc1blpYTXViMkp6WlhKMlpTZ25jREp3Snl3Z0tHTm9ZVzVuWlNrZ1BUNGdlMXh1SUNCamIyNXpiMnhsTG14dlp5Z25jREp3VW1WeGRXVnpkR1Z5VTNSMVlqb2dKeUFySUdOb1lXNW5aUzV1WVcxbElDc2dKeUF0SUNjZ0t5QktVMDlPTG5OMGNtbHVaMmxtZVNoamFHRnVaMlV1Ym1WM1ZtRnNkV1VwS1R0Y2JuMHBPMXh1WEc1M1lYUmphRU5vWVc1blpYTXViMkp6WlhKMlpTZ25jM1IxWWljc0lDaGphR0Z1WjJVcElEMCtJSHRjYmlBZ1kyOXVjMjlzWlM1c2IyY29KM04wZFdJZ0p5QXJJR05vWVc1blpTNXVZVzFsS1R0Y2JuMHBPMXh1WEc1d01uQlNaWEYxWlhOMFpYSlRkSFZpTG1FZ1BTQjdmVHRjYm5OMGRXSXVZaUE5SUh0dVlXMWxPaUFuZG1sMGIzSW5mVHRjYm5BeWNGSmxjWFZsYzNSbGNsTjBkV0l1WVM1dVlXMWxJRDBnSjBobGJHeHZKenRjYm5OMGRXSXVZaUE5SUh0dVlXMWxPaUFuZG1sMGIzSW5mVHRjYm5BeWNGSmxjWFZsYzNSbGNsTjBkV0l1WVM1aFoyVWdQU0FuTXpJbk8xeHVjREp3VW1WeGRXVnpkR1Z5VTNSMVlpNWhMbTVoYldVZ1BTQW5WMjl5YkdRbk95b3ZYRzVjYmx4dVhHNHZMeUJYUlVKUVFVTkxJRVpQVDFSRlVpQXZMMXh1THk4Z0xpOXpjbU12ZFhScGJITXZWMkYwWTJocGJtZFpiM1V1YW5NaVhTd2ljMjkxY21ObFVtOXZkQ0k2SWlKOVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8xOTlcXG5cIil9LDIzOmZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXtldmFsKFwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcXG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcXG4gIHJldHVybiBpdDtcXG59O1xcbi8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5dWIyUmxYMjF2WkhWc1pYTXZZMjl5WlMxcWN5OXNhV0p5WVhKNUwyMXZaSFZzWlhNdlgyRXRablZ1WTNScGIyNHVhbk0vT1RSbE9TSmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSXlNeTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1puVnVZM1JwYjI0Z0tHbDBLU0I3WEc0Z0lHbG1JQ2gwZVhCbGIyWWdhWFFnSVQwZ0oyWjFibU4wYVc5dUp5a2dkR2h5YjNjZ1ZIbHdaVVZ5Y205eUtHbDBJQ3NnSnlCcGN5QnViM1FnWVNCbWRXNWpkR2x2YmlFbktUdGNiaUFnY21WMGRYSnVJR2wwTzF4dWZUdGNibHh1WEc1Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeThnVjBWQ1VFRkRTeUJHVDA5VVJWSmNiaTh2SUM0dmJtOWtaVjl0YjJSMWJHVnpMMk52Y21VdGFuTXZiR2xpY21GeWVTOXRiMlIxYkdWekwxOWhMV1oxYm1OMGFXOXVMbXB6WEc0dkx5QnRiMlIxYkdVZ2FXUWdQU0F5TTF4dUx5OGdiVzlrZFd4bElHTm9kVzVyY3lBOUlEQWdNU0F5SURNZ05DQTFJRFlnTnlBNElEa2dNVEFnTVRFZ01USWdNVE1nTVRRaVhTd2ljMjkxY21ObFVtOXZkQ0k2SWlKOVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8yM1xcblwiKX0sMjY6ZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyl7ZXZhbChcIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxcbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XFxuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2VcXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xcbiAgdmFyIGZuLCB2YWw7XFxuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcXG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xcbiAgdGhyb3cgVHlwZUVycm9yKFxcXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcXFwiKTtcXG59O1xcbi8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5dWIyUmxYMjF2WkhWc1pYTXZZMjl5WlMxcWN5OXNhV0p5WVhKNUwyMXZaSFZzWlhNdlgzUnZMWEJ5YVcxcGRHbDJaUzVxY3o4ek1qWXpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lJeU5pNXFjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4dklEY3VNUzR4SUZSdlVISnBiV2wwYVhabEtHbHVjSFYwSUZzc0lGQnlaV1psY25KbFpGUjVjR1ZkS1Z4dWRtRnlJR2x6VDJKcVpXTjBJRDBnY21WeGRXbHlaU2duTGk5ZmFYTXRiMkpxWldOMEp5azdYRzR2THlCcGJuTjBaV0ZrSUc5bUlIUm9aU0JGVXpZZ2MzQmxZeUIyWlhKemFXOXVMQ0IzWlNCa2FXUnVKM1FnYVcxd2JHVnRaVzUwSUVCQWRHOVFjbWx0YVhScGRtVWdZMkZ6WlZ4dUx5OGdZVzVrSUhSb1pTQnpaV052Ym1RZ1lYSm5kVzFsYm5RZ0xTQm1iR0ZuSUMwZ2NISmxabVZ5Y21Wa0lIUjVjR1VnYVhNZ1lTQnpkSEpwYm1kY2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1puVnVZM1JwYjI0Z0tHbDBMQ0JUS1NCN1hHNGdJR2xtSUNnaGFYTlBZbXBsWTNRb2FYUXBLU0J5WlhSMWNtNGdhWFE3WEc0Z0lIWmhjaUJtYml3Z2RtRnNPMXh1SUNCcFppQW9VeUFtSmlCMGVYQmxiMllnS0dadUlEMGdhWFF1ZEc5VGRISnBibWNwSUQwOUlDZG1kVzVqZEdsdmJpY2dKaVlnSVdselQySnFaV04wS0haaGJDQTlJR1p1TG1OaGJHd29hWFFwS1NrZ2NtVjBkWEp1SUhaaGJEdGNiaUFnYVdZZ0tIUjVjR1Z2WmlBb1ptNGdQU0JwZEM1MllXeDFaVTltS1NBOVBTQW5ablZ1WTNScGIyNG5JQ1ltSUNGcGMwOWlhbVZqZENoMllXd2dQU0JtYmk1allXeHNLR2wwS1NrcElISmxkSFZ5YmlCMllXdzdYRzRnSUdsbUlDZ2hVeUFtSmlCMGVYQmxiMllnS0dadUlEMGdhWFF1ZEc5VGRISnBibWNwSUQwOUlDZG1kVzVqZEdsdmJpY2dKaVlnSVdselQySnFaV04wS0haaGJDQTlJR1p1TG1OaGJHd29hWFFwS1NrZ2NtVjBkWEp1SUhaaGJEdGNiaUFnZEdoeWIzY2dWSGx3WlVWeWNtOXlLRndpUTJGdUozUWdZMjl1ZG1WeWRDQnZZbXBsWTNRZ2RHOGdjSEpwYldsMGFYWmxJSFpoYkhWbFhDSXBPMXh1ZlR0Y2JseHVYRzVjYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OGdWMFZDVUVGRFN5QkdUMDlVUlZKY2JpOHZJQzR2Ym05a1pWOXRiMlIxYkdWekwyTnZjbVV0YW5NdmJHbGljbUZ5ZVM5dGIyUjFiR1Z6TDE5MGJ5MXdjbWx0YVhScGRtVXVhbk5jYmk4dklHMXZaSFZzWlNCcFpDQTlJREkyWEc0dkx5QnRiMlIxYkdVZ1kyaDFibXR6SUQwZ01DQXhJRElnTXlBMElEVWdOaUEzSURnZ09TQXhNQ0F4TVNBeE1pQXhNeUF4TkNKZExDSnpiM1Z5WTJWU2IyOTBJam9pSW4wPVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8yNlxcblwiKX0sMjg6ZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyl7ZXZhbChcInZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XFxudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKS5kb2N1bWVudDtcXG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcXG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XFxufTtcXG4vLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOXViMlJsWDIxdlpIVnNaWE12WTI5eVpTMXFjeTlzYVdKeVlYSjVMMjF2WkhWc1pYTXZYMlJ2YlMxamNtVmhkR1V1YW5NL016aGtaQ0pkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSXlPQzVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkluWmhjaUJwYzA5aWFtVmpkQ0E5SUhKbGNYVnBjbVVvSnk0dlgybHpMVzlpYW1WamRDY3BPMXh1ZG1GeUlHUnZZM1Z0Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlmWjJ4dlltRnNKeWt1Wkc5amRXMWxiblE3WEc0dkx5QjBlWEJsYjJZZ1pHOWpkVzFsYm5RdVkzSmxZWFJsUld4bGJXVnVkQ0JwY3lBbmIySnFaV04wSnlCcGJpQnZiR1FnU1VWY2JuWmhjaUJwY3lBOUlHbHpUMkpxWldOMEtHUnZZM1Z0Wlc1MEtTQW1KaUJwYzA5aWFtVmpkQ2hrYjJOMWJXVnVkQzVqY21WaGRHVkZiR1Z0Wlc1MEtUdGNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdablZ1WTNScGIyNGdLR2wwS1NCN1hHNGdJSEpsZEhWeWJpQnBjeUEvSUdSdlkzVnRaVzUwTG1OeVpXRjBaVVZzWlcxbGJuUW9hWFFwSURvZ2UzMDdYRzU5TzF4dVhHNWNibHh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5QlhSVUpRUVVOTElFWlBUMVJGVWx4dUx5OGdMaTl1YjJSbFgyMXZaSFZzWlhNdlkyOXlaUzFxY3k5c2FXSnlZWEo1TDIxdlpIVnNaWE12WDJSdmJTMWpjbVZoZEdVdWFuTmNiaTh2SUcxdlpIVnNaU0JwWkNBOUlESTRYRzR2THlCdGIyUjFiR1VnWTJoMWJtdHpJRDBnTUNBeElESWdNeUEwSURVZ05pQTNJRGdnT1NBeE1DQXhNU0F4TWlBeE15QXhOQ0pkTENKemIzVnlZMlZTYjI5MElqb2lJbjA9XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzI4XFxuXCIpfSwzOmZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pe1widXNlIHN0cmljdFwiO2V2YWwoJ1xcblxcbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XFxuXFxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcXG4gIH1cXG59Oy8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5dWIyUmxYMjF2WkhWc1pYTXZZbUZpWld3dGNuVnVkR2x0WlM5b1pXeHdaWEp6TDJOc1lYTnpRMkZzYkVOb1pXTnJMbXB6UHpZMllqa2lYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3TzBGQlJVRTdPMEZCUlVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSXpMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVhDSjFjMlVnYzNSeWFXTjBYQ0k3WEc1Y2JtVjRjRzl5ZEhNdVgxOWxjMDF2WkhWc1pTQTlJSFJ5ZFdVN1hHNWNibVY0Y0c5eWRITXVaR1ZtWVhWc2RDQTlJR1oxYm1OMGFXOXVJQ2hwYm5OMFlXNWpaU3dnUTI5dWMzUnlkV04wYjNJcElIdGNiaUFnYVdZZ0tDRW9hVzV6ZEdGdVkyVWdhVzV6ZEdGdVkyVnZaaUJEYjI1emRISjFZM1J2Y2lrcElIdGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lRMkZ1Ym05MElHTmhiR3dnWVNCamJHRnpjeUJoY3lCaElHWjFibU4wYVc5dVhDSXBPMXh1SUNCOVhHNTlPMXh1WEc1Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeThnVjBWQ1VFRkRTeUJHVDA5VVJWSmNiaTh2SUM0dmJtOWtaVjl0YjJSMWJHVnpMMkpoWW1Wc0xYSjFiblJwYldVdmFHVnNjR1Z5Y3k5amJHRnpjME5oYkd4RGFHVmpheTVxYzF4dUx5OGdiVzlrZFd4bElHbGtJRDBnTTF4dUx5OGdiVzlrZFd4bElHTm9kVzVyY3lBOUlEQWdNU0F5SURNZ05DQTFJRFlnTnlBNElEa2dNVEFnTVRFZ01USWdNVE1nTVRRaVhTd2ljMjkxY21ObFVtOXZkQ0k2SWlKOVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8zXFxuJyl9LDM5OmZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pe2V2YWwoXCJtb2R1bGUuZXhwb3J0cyA9ICFfX3dlYnBhY2tfcmVxdWlyZV9fKDQpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKShmdW5jdGlvbiAoKSB7XFxuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fd2VicGFja19yZXF1aXJlX18oMjgpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XFxufSk7XFxuLy8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkluZGxZbkJoWTJzNkx5OHZMaTl1YjJSbFgyMXZaSFZzWlhNdlkyOXlaUzFxY3k5c2FXSnlZWEo1TDIxdlpIVnNaWE12WDJsbE9DMWtiMjB0WkdWbWFXNWxMbXB6UHpRNVpqQWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3UVVGRFFTeHhSVUZCYzBVc2JVSkJRVzFDTEZWQlFWVXNSVUZCUlN4RlFVRkZPMEZCUTNaSExFTkJRVU1pTENKbWFXeGxJam9pTXprdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUp0YjJSMWJHVXVaWGh3YjNKMGN5QTlJQ0Z5WlhGMWFYSmxLQ2N1TDE5a1pYTmpjbWx3ZEc5eWN5Y3BJQ1ltSUNGeVpYRjFhWEpsS0NjdUwxOW1ZV2xzY3ljcEtHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ2NtVjBkWEp1SUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaHlaWEYxYVhKbEtDY3VMMTlrYjIwdFkzSmxZWFJsSnlrb0oyUnBkaWNwTENBbllTY3NJSHNnWjJWME9pQm1kVzVqZEdsdmJpQW9LU0I3SUhKbGRIVnliaUEzT3lCOUlIMHBMbUVnSVQwZ056dGNibjBwTzF4dVhHNWNibHh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5QlhSVUpRUVVOTElFWlBUMVJGVWx4dUx5OGdMaTl1YjJSbFgyMXZaSFZzWlhNdlkyOXlaUzFxY3k5c2FXSnlZWEo1TDIxdlpIVnNaWE12WDJsbE9DMWtiMjB0WkdWbWFXNWxMbXB6WEc0dkx5QnRiMlIxYkdVZ2FXUWdQU0F6T1Z4dUx5OGdiVzlrZFd4bElHTm9kVzVyY3lBOUlEQWdNU0F5SURNZ05DQTFJRFlnTnlBNElEa2dNVEFnTVRFZ01USWdNVE1nTVRRaVhTd2ljMjkxY21ObFVtOXZkQ0k2SWlKOVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8zOVxcblwiKX0sNDpmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKXtldmFsKFwiLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxcbm1vZHVsZS5leHBvcnRzID0gIV9fd2VicGFja19yZXF1aXJlX18oMTMpKGZ1bmN0aW9uICgpIHtcXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xcbn0pO1xcbi8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5dWIyUmxYMjF2WkhWc1pYTXZZMjl5WlMxcWN5OXNhV0p5WVhKNUwyMXZaSFZzWlhNdlgyUmxjMk55YVhCMGIzSnpMbXB6UDJZNE5HUWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3UVVGRFFUdEJRVU5CTEdsRFFVRnBReXhSUVVGUkxHMUNRVUZ0UWl4VlFVRlZMRVZCUVVVc1JVRkJSVHRCUVVNeFJTeERRVUZESWl3aVptbHNaU0k2SWpRdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2THlCVWFHRnVheWR6SUVsRk9DQm1iM0lnYUdseklHWjFibTU1SUdSbFptbHVaVkJ5YjNCbGNuUjVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJQ0Z5WlhGMWFYSmxLQ2N1TDE5bVlXbHNjeWNwS0daMWJtTjBhVzl1SUNncElIdGNiaUFnY21WMGRYSnVJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNoN2ZTd2dKMkVuTENCN0lHZGxkRG9nWm5WdVkzUnBiMjRnS0NrZ2V5QnlaWFIxY200Z056c2dmU0I5S1M1aElDRTlJRGM3WEc1OUtUdGNibHh1WEc1Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeThnVjBWQ1VFRkRTeUJHVDA5VVJWSmNiaTh2SUM0dmJtOWtaVjl0YjJSMWJHVnpMMk52Y21VdGFuTXZiR2xpY21GeWVTOXRiMlIxYkdWekwxOWtaWE5qY21sd2RHOXljeTVxYzF4dUx5OGdiVzlrZFd4bElHbGtJRDBnTkZ4dUx5OGdiVzlrZFd4bElHTm9kVzVyY3lBOUlEQWdNU0F5SURNZ05DQTFJRFlnTnlBNElEa2dNVEFnTVRFZ01USWdNVE1nTVRRaVhTd2ljMjkxY21ObFVtOXZkQ0k2SWlKOVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy80XFxuXCIpfSw1OmZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pe1widXNlIHN0cmljdFwiO2V2YWwoJ1xcblxcbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XFxuXFxudmFyIF9kZWZpbmVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oNTkpO1xcblxcbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVmaW5lUHJvcGVydHkpO1xcblxcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XFxuXFxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xcbiAgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcXG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xcbiAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcXG4gICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XFxuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcXG4gICAgICAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcXG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcXG4gICAgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XFxuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcXG4gIH07XFxufSgpOy8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5dWIyUmxYMjF2WkhWc1pYTXZZbUZpWld3dGNuVnVkR2x0WlM5b1pXeHdaWEp6TDJOeVpXRjBaVU5zWVhOekxtcHpQMk16TVRBaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRTdPMEZCUlVFN08wRkJSVUU3TzBGQlJVRTdPMEZCUlVFc2MwTkJRWE5ETEhWRFFVRjFReXhuUWtGQlowSTdPMEZCUlRkR08wRkJRMEU3UVVGRFFTeHRRa0ZCYlVJc2EwSkJRV3RDTzBGQlEzSkRPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlFVVkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTeERRVUZESWl3aVptbHNaU0k2SWpVdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpjSW5WelpTQnpkSEpwWTNSY0lqdGNibHh1Wlhod2IzSjBjeTVmWDJWelRXOWtkV3hsSUQwZ2RISjFaVHRjYmx4dWRtRnlJRjlrWldacGJtVlFjbTl3WlhKMGVTQTlJSEpsY1hWcGNtVW9YQ0l1TGk5amIzSmxMV3B6TDI5aWFtVmpkQzlrWldacGJtVXRjSEp2Y0dWeWRIbGNJaWs3WEc1Y2JuWmhjaUJmWkdWbWFXNWxVSEp2Y0dWeWRIa3lJRDBnWDJsdWRHVnliM0JTWlhGMWFYSmxSR1ZtWVhWc2RDaGZaR1ZtYVc1bFVISnZjR1Z5ZEhrcE8xeHVYRzVtZFc1amRHbHZiaUJmYVc1MFpYSnZjRkpsY1hWcGNtVkVaV1poZFd4MEtHOWlhaWtnZXlCeVpYUjFjbTRnYjJKcUlDWW1JRzlpYWk1ZlgyVnpUVzlrZFd4bElEOGdiMkpxSURvZ2V5QmtaV1poZFd4ME9pQnZZbW9nZlRzZ2ZWeHVYRzVsZUhCdmNuUnpMbVJsWm1GMWJIUWdQU0JtZFc1amRHbHZiaUFvS1NCN1hHNGdJR1oxYm1OMGFXOXVJR1JsWm1sdVpWQnliM0JsY25ScFpYTW9kR0Z5WjJWMExDQndjbTl3Y3lrZ2UxeHVJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z2NISnZjSE11YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lIWmhjaUJrWlhOamNtbHdkRzl5SUQwZ2NISnZjSE5iYVYwN1hHNGdJQ0FnSUNCa1pYTmpjbWx3ZEc5eUxtVnVkVzFsY21GaWJHVWdQU0JrWlhOamNtbHdkRzl5TG1WdWRXMWxjbUZpYkdVZ2ZId2dabUZzYzJVN1hHNGdJQ0FnSUNCa1pYTmpjbWx3ZEc5eUxtTnZibVpwWjNWeVlXSnNaU0E5SUhSeWRXVTdYRzRnSUNBZ0lDQnBaaUFvWENKMllXeDFaVndpSUdsdUlHUmxjMk55YVhCMGIzSXBJR1JsYzJOeWFYQjBiM0l1ZDNKcGRHRmliR1VnUFNCMGNuVmxPMXh1SUNBZ0lDQWdLREFzSUY5a1pXWnBibVZRY205d1pYSjBlVEl1WkdWbVlYVnNkQ2tvZEdGeVoyVjBMQ0JrWlhOamNtbHdkRzl5TG10bGVTd2daR1Z6WTNKcGNIUnZjaWs3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY21WMGRYSnVJR1oxYm1OMGFXOXVJQ2hEYjI1emRISjFZM1J2Y2l3Z2NISnZkRzlRY205d2N5d2djM1JoZEdsalVISnZjSE1wSUh0Y2JpQWdJQ0JwWmlBb2NISnZkRzlRY205d2N5a2daR1ZtYVc1bFVISnZjR1Z5ZEdsbGN5aERiMjV6ZEhKMVkzUnZjaTV3Y205MGIzUjVjR1VzSUhCeWIzUnZVSEp2Y0hNcE8xeHVJQ0FnSUdsbUlDaHpkR0YwYVdOUWNtOXdjeWtnWkdWbWFXNWxVSEp2Y0dWeWRHbGxjeWhEYjI1emRISjFZM1J2Y2l3Z2MzUmhkR2xqVUhKdmNITXBPMXh1SUNBZ0lISmxkSFZ5YmlCRGIyNXpkSEoxWTNSdmNqdGNiaUFnZlR0Y2JuMG9LVHRjYmx4dVhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNiaTh2SUZkRlFsQkJRMHNnUms5UFZFVlNYRzR2THlBdUwyNXZaR1ZmYlc5a2RXeGxjeTlpWVdKbGJDMXlkVzUwYVcxbEwyaGxiSEJsY25NdlkzSmxZWFJsUTJ4aGMzTXVhbk5jYmk4dklHMXZaSFZzWlNCcFpDQTlJRFZjYmk4dklHMXZaSFZzWlNCamFIVnVhM01nUFNBd0lERWdNaUF6SURRZ05TQTJJRGNnT0NBNUlERXdJREV5SURFeklERTBJbDBzSW5OdmRYSmpaVkp2YjNRaU9pSWlmUT09XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzVcXG4nKX0sNTk6ZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyl7ZXZhbCgnbW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDYxKSwgX19lc01vZHVsZTogdHJ1ZSB9Oy8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5dWIyUmxYMjF2WkhWc1pYTXZZbUZpWld3dGNuVnVkR2x0WlM5amIzSmxMV3B6TDI5aWFtVmpkQzlrWldacGJtVXRjSEp2Y0dWeWRIa3Vhbk0vTUdJNE15SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hyUWtGQmEwSWlMQ0ptYVd4bElqb2lOVGt1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnRiMlIxYkdVdVpYaHdiM0owY3lBOUlIc2dYQ0prWldaaGRXeDBYQ0k2SUhKbGNYVnBjbVVvWENKamIzSmxMV3B6TDJ4cFluSmhjbmt2Wm00dmIySnFaV04wTDJSbFptbHVaUzF3Y205d1pYSjBlVndpS1N3Z1gxOWxjMDF2WkhWc1pUb2dkSEoxWlNCOU8xeHVYRzVjYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OGdWMFZDVUVGRFN5QkdUMDlVUlZKY2JpOHZJQzR2Ym05a1pWOXRiMlIxYkdWekwySmhZbVZzTFhKMWJuUnBiV1V2WTI5eVpTMXFjeTl2WW1wbFkzUXZaR1ZtYVc1bExYQnliM0JsY25SNUxtcHpYRzR2THlCdGIyUjFiR1VnYVdRZ1BTQTFPVnh1THk4Z2JXOWtkV3hsSUdOb2RXNXJjeUE5SURBZ01TQXlJRE1nTkNBMUlEWWdOeUE0SURrZ01UQWdNVElnTVRNZ01UUWlYU3dpYzI5MWNtTmxVbTl2ZENJNklpSjlcXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vNTlcXG4nKX0sNjpmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKXtldmFsKFwidmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XFxudmFyIGNvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xcbnZhciBjdHggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcXG52YXIgaGlkZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xcbnZhciBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcXG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XFxuXFxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XFxuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcXG4gIHZhciBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HO1xcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XFxuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xcbiAgdmFyIElTX0JJTkQgPSB0eXBlICYgJGV4cG9ydC5CO1xcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcXG4gIHZhciBleHBQcm90byA9IGV4cG9ydHNbUFJPVE9UWVBFXTtcXG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xcbiAgdmFyIGtleSwgb3duLCBvdXQ7XFxuICBpZiAoSVNfR0xPQkFMKSBzb3VyY2UgPSBuYW1lO1xcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XFxuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxcbiAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcXG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcXG4gICAgb3V0ID0gb3duID8gdGFyZ2V0W2tleV0gOiBzb3VyY2Vba2V5XTtcXG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXFxuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXFxuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXFxuICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XFxuICAgIDogSVNfV1JBUCAmJiB0YXJnZXRba2V5XSA9PSBvdXQgPyAoZnVuY3Rpb24gKEMpIHtcXG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XFxuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEMpIHtcXG4gICAgICAgICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XFxuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcXG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcXG4gICAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgQyhhLCBiKTtcXG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XFxuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XFxuICAgICAgfTtcXG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XFxuICAgICAgcmV0dXJuIEY7XFxuICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kc1xcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XFxuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxcbiAgICBpZiAoSVNfUFJPVE8pIHtcXG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XFxuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcXG4gICAgICBpZiAodHlwZSAmICRleHBvcnQuUiAmJiBleHBQcm90byAmJiAhZXhwUHJvdG9ba2V5XSkgaGlkZShleHBQcm90bywga2V5LCBvdXQpO1xcbiAgICB9XFxuICB9XFxufTtcXG4vLyB0eXBlIGJpdG1hcFxcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXFxuJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWxcXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cXG4kZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmRcXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcXG4kZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWBcXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XFxuLy8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkluZGxZbkJoWTJzNkx5OHZMaTl1YjJSbFgyMXZaSFZzWlhNdlkyOXlaUzFxY3k5c2FXSnlZWEo1TDIxdlpIVnNaWE12WDJWNGNHOXlkQzVxY3o4NU1HTmtJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVGRlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQkxHbEZRVUZwUlR0QlFVTnFSVHRCUVVOQkxHdEdRVUZyUmp0QlFVTnNSanRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVzVjBGQlZ6dEJRVU5ZTEZOQlFWTTdRVUZEVkR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQkxFdEJRVXM3UVVGRFREdEJRVU5CTzBGQlEwRXNLME5CUVN0RE8wRkJReTlETzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQkxHTkJRV003UVVGRFpDeGpRVUZqTzBGQlEyUXNZMEZCWXp0QlFVTmtMR05CUVdNN1FVRkRaQ3hsUVVGbE8wRkJRMllzWlVGQlpUdEJRVU5tTEdWQlFXVTdRVUZEWml4blFrRkJaMEk3UVVGRGFFSWlMQ0ptYVd4bElqb2lOaTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkluWmhjaUJuYkc5aVlXd2dQU0J5WlhGMWFYSmxLQ2N1TDE5bmJHOWlZV3duS1R0Y2JuWmhjaUJqYjNKbElEMGdjbVZ4ZFdseVpTZ25MaTlmWTI5eVpTY3BPMXh1ZG1GeUlHTjBlQ0E5SUhKbGNYVnBjbVVvSnk0dlgyTjBlQ2NwTzF4dWRtRnlJR2hwWkdVZ1BTQnlaWEYxYVhKbEtDY3VMMTlvYVdSbEp5azdYRzUyWVhJZ2FHRnpJRDBnY21WeGRXbHlaU2duTGk5ZmFHRnpKeWs3WEc1MllYSWdVRkpQVkU5VVdWQkZJRDBnSjNCeWIzUnZkSGx3WlNjN1hHNWNiblpoY2lBa1pYaHdiM0owSUQwZ1puVnVZM1JwYjI0Z0tIUjVjR1VzSUc1aGJXVXNJSE52ZFhKalpTa2dlMXh1SUNCMllYSWdTVk5mUms5U1EwVkVJRDBnZEhsd1pTQW1JQ1JsZUhCdmNuUXVSanRjYmlBZ2RtRnlJRWxUWDBkTVQwSkJUQ0E5SUhSNWNHVWdKaUFrWlhod2IzSjBMa2M3WEc0Z0lIWmhjaUJKVTE5VFZFRlVTVU1nUFNCMGVYQmxJQ1lnSkdWNGNHOXlkQzVUTzF4dUlDQjJZWElnU1ZOZlVGSlBWRThnUFNCMGVYQmxJQ1lnSkdWNGNHOXlkQzVRTzF4dUlDQjJZWElnU1ZOZlFrbE9SQ0E5SUhSNWNHVWdKaUFrWlhod2IzSjBMa0k3WEc0Z0lIWmhjaUJKVTE5WFVrRlFJRDBnZEhsd1pTQW1JQ1JsZUhCdmNuUXVWenRjYmlBZ2RtRnlJR1Y0Y0c5eWRITWdQU0JKVTE5SFRFOUNRVXdnUHlCamIzSmxJRG9nWTI5eVpWdHVZVzFsWFNCOGZDQW9ZMjl5WlZ0dVlXMWxYU0E5SUh0OUtUdGNiaUFnZG1GeUlHVjRjRkJ5YjNSdklEMGdaWGh3YjNKMGMxdFFVazlVVDFSWlVFVmRPMXh1SUNCMllYSWdkR0Z5WjJWMElEMGdTVk5mUjB4UFFrRk1JRDhnWjJ4dlltRnNJRG9nU1ZOZlUxUkJWRWxESUQ4Z1oyeHZZbUZzVzI1aGJXVmRJRG9nS0dkc2IySmhiRnR1WVcxbFhTQjhmQ0I3ZlNsYlVGSlBWRTlVV1ZCRlhUdGNiaUFnZG1GeUlHdGxlU3dnYjNkdUxDQnZkWFE3WEc0Z0lHbG1JQ2hKVTE5SFRFOUNRVXdwSUhOdmRYSmpaU0E5SUc1aGJXVTdYRzRnSUdadmNpQW9hMlY1SUdsdUlITnZkWEpqWlNrZ2UxeHVJQ0FnSUM4dklHTnZiblJoYVc1eklHbHVJRzVoZEdsMlpWeHVJQ0FnSUc5M2JpQTlJQ0ZKVTE5R1QxSkRSVVFnSmlZZ2RHRnlaMlYwSUNZbUlIUmhjbWRsZEZ0clpYbGRJQ0U5UFNCMWJtUmxabWx1WldRN1hHNGdJQ0FnYVdZZ0tHOTNiaUFtSmlCb1lYTW9aWGh3YjNKMGN5d2dhMlY1S1NrZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnTHk4Z1pYaHdiM0owSUc1aGRHbDJaU0J2Y2lCd1lYTnpaV1JjYmlBZ0lDQnZkWFFnUFNCdmQyNGdQeUIwWVhKblpYUmJhMlY1WFNBNklITnZkWEpqWlZ0clpYbGRPMXh1SUNBZ0lDOHZJSEJ5WlhabGJuUWdaMnh2WW1Gc0lIQnZiR3gxZEdsdmJpQm1iM0lnYm1GdFpYTndZV05sYzF4dUlDQWdJR1Y0Y0c5eWRITmJhMlY1WFNBOUlFbFRYMGRNVDBKQlRDQW1KaUIwZVhCbGIyWWdkR0Z5WjJWMFcydGxlVjBnSVQwZ0oyWjFibU4wYVc5dUp5QS9JSE52ZFhKalpWdHJaWGxkWEc0Z0lDQWdMeThnWW1sdVpDQjBhVzFsY25NZ2RHOGdaMnh2WW1Gc0lHWnZjaUJqWVd4c0lHWnliMjBnWlhod2IzSjBJR052Ym5SbGVIUmNiaUFnSUNBNklFbFRYMEpKVGtRZ0ppWWdiM2R1SUQ4Z1kzUjRLRzkxZEN3Z1oyeHZZbUZzS1Z4dUlDQWdJQzh2SUhkeVlYQWdaMnh2WW1Gc0lHTnZibk4wY25WamRHOXljeUJtYjNJZ2NISmxkbVZ1ZENCamFHRnVaMlVnZEdobGJTQnBiaUJzYVdKeVlYSjVYRzRnSUNBZ09pQkpVMTlYVWtGUUlDWW1JSFJoY21kbGRGdHJaWGxkSUQwOUlHOTFkQ0EvSUNobWRXNWpkR2x2YmlBb1F5a2dlMXh1SUNBZ0lDQWdkbUZ5SUVZZ1BTQm1kVzVqZEdsdmJpQW9ZU3dnWWl3Z1l5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2RHaHBjeUJwYm5OMFlXNWpaVzltSUVNcElIdGNiaUFnSUNBZ0lDQWdJQ0J6ZDJsMFkyZ2dLR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnTURvZ2NtVjBkWEp1SUc1bGR5QkRLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSURFNklISmxkSFZ5YmlCdVpYY2dReWhoS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ01qb2djbVYwZFhKdUlHNWxkeUJES0dFc0lHSXBPMXh1SUNBZ0lDQWdJQ0FnSUgwZ2NtVjBkWEp1SUc1bGR5QkRLR0VzSUdJc0lHTXBPMXh1SUNBZ0lDQWdJQ0I5SUhKbGRIVnliaUJETG1Gd2NHeDVLSFJvYVhNc0lHRnlaM1Z0Wlc1MGN5azdYRzRnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdSbHRRVWs5VVQxUlpVRVZkSUQwZ1ExdFFVazlVVDFSWlVFVmRPMXh1SUNBZ0lDQWdjbVYwZFhKdUlFWTdYRzRnSUNBZ0x5OGdiV0ZyWlNCemRHRjBhV01nZG1WeWMybHZibk1nWm05eUlIQnliM1J2ZEhsd1pTQnRaWFJvYjJSelhHNGdJQ0FnZlNrb2IzVjBLU0E2SUVsVFgxQlNUMVJQSUNZbUlIUjVjR1Z2WmlCdmRYUWdQVDBnSjJaMWJtTjBhVzl1SnlBL0lHTjBlQ2hHZFc1amRHbHZiaTVqWVd4c0xDQnZkWFFwSURvZ2IzVjBPMXh1SUNBZ0lDOHZJR1Y0Y0c5eWRDQndjbTkwYnlCdFpYUm9iMlJ6SUhSdklHTnZjbVV1SlVOUFRsTlVVbFZEVkU5U0pTNXRaWFJvYjJSekxpVk9RVTFGSlZ4dUlDQWdJR2xtSUNoSlUxOVFVazlVVHlrZ2UxeHVJQ0FnSUNBZ0tHVjRjRzl5ZEhNdWRtbHlkSFZoYkNCOGZDQW9aWGh3YjNKMGN5NTJhWEowZFdGc0lEMGdlMzBwS1Z0clpYbGRJRDBnYjNWME8xeHVJQ0FnSUNBZ0x5OGdaWGh3YjNKMElIQnliM1J2SUcxbGRHaHZaSE1nZEc4Z1kyOXlaUzRsUTA5T1UxUlNWVU5VVDFJbExuQnliM1J2ZEhsd1pTNGxUa0ZOUlNWY2JpQWdJQ0FnSUdsbUlDaDBlWEJsSUNZZ0pHVjRjRzl5ZEM1U0lDWW1JR1Y0Y0ZCeWIzUnZJQ1ltSUNGbGVIQlFjbTkwYjF0clpYbGRLU0JvYVdSbEtHVjRjRkJ5YjNSdkxDQnJaWGtzSUc5MWRDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVMeThnZEhsd1pTQmlhWFJ0WVhCY2JpUmxlSEJ2Y25RdVJpQTlJREU3SUNBZ0x5OGdabTl5WTJWa1hHNGtaWGh3YjNKMExrY2dQU0F5T3lBZ0lDOHZJR2RzYjJKaGJGeHVKR1Y0Y0c5eWRDNVRJRDBnTkRzZ0lDQXZMeUJ6ZEdGMGFXTmNiaVJsZUhCdmNuUXVVQ0E5SURnN0lDQWdMeThnY0hKdmRHOWNiaVJsZUhCdmNuUXVRaUE5SURFMk95QWdMeThnWW1sdVpGeHVKR1Y0Y0c5eWRDNVhJRDBnTXpJN0lDQXZMeUIzY21Gd1hHNGtaWGh3YjNKMExsVWdQU0EyTkRzZ0lDOHZJSE5oWm1WY2JpUmxlSEJ2Y25RdVVpQTlJREV5T0RzZ0x5OGdjbVZoYkNCd2NtOTBieUJ0WlhSb2IyUWdabTl5SUdCc2FXSnlZWEo1WUZ4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNBa1pYaHdiM0owTzF4dVhHNWNibHh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5QlhSVUpRUVVOTElFWlBUMVJGVWx4dUx5OGdMaTl1YjJSbFgyMXZaSFZzWlhNdlkyOXlaUzFxY3k5c2FXSnlZWEo1TDIxdlpIVnNaWE12WDJWNGNHOXlkQzVxYzF4dUx5OGdiVzlrZFd4bElHbGtJRDBnTmx4dUx5OGdiVzlrZFd4bElHTm9kVzVyY3lBOUlEQWdNU0F5SURNZ05DQTFJRFlnTnlBNElEa2dNVEFnTVRFZ01USWdNVE1nTVRRaVhTd2ljMjkxY21ObFVtOXZkQ0k2SWlKOVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy82XFxuXCIpfSw2MTpmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKXtldmFsKFwiX193ZWJwYWNrX3JlcXVpcmVfXyg2Mik7XFxudmFyICRPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLk9iamVjdDtcXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcXG4gIHJldHVybiAkT2JqZWN0LmRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpO1xcbn07XFxuLy8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkluZGxZbkJoWTJzNkx5OHZMaTl1YjJSbFgyMXZaSFZzWlhNdlkyOXlaUzFxY3k5c2FXSnlZWEo1TDJadUwyOWlhbVZqZEM5a1pXWnBibVV0Y0hKdmNHVnlkSGt1YW5NL1pqVmlNQ0pkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNklqWXhMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWNtVnhkV2x5WlNnbkxpNHZMaTR2Ylc5a2RXeGxjeTlsY3pZdWIySnFaV04wTG1SbFptbHVaUzF3Y205d1pYSjBlU2NwTzF4dWRtRnlJQ1JQWW1wbFkzUWdQU0J5WlhGMWFYSmxLQ2N1TGk4dUxpOXRiMlIxYkdWekwxOWpiM0psSnlrdVQySnFaV04wTzF4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCbWRXNWpkR2x2YmlCa1pXWnBibVZRY205d1pYSjBlU2hwZEN3Z2EyVjVMQ0JrWlhOaktTQjdYRzRnSUhKbGRIVnliaUFrVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtHbDBMQ0JyWlhrc0lHUmxjMk1wTzF4dWZUdGNibHh1WEc1Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeThnVjBWQ1VFRkRTeUJHVDA5VVJWSmNiaTh2SUM0dmJtOWtaVjl0YjJSMWJHVnpMMk52Y21VdGFuTXZiR2xpY21GeWVTOW1iaTl2WW1wbFkzUXZaR1ZtYVc1bExYQnliM0JsY25SNUxtcHpYRzR2THlCdGIyUjFiR1VnYVdRZ1BTQTJNVnh1THk4Z2JXOWtkV3hsSUdOb2RXNXJjeUE5SURBZ01TQXlJRE1nTkNBMUlEWWdOeUE0SURrZ01UQWdNVElnTVRNZ01UUWlYU3dpYzI5MWNtTmxVbTl2ZENJNklpSjlcXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vNjFcXG5cIil9LDYyOmZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pe2V2YWwoXCJ2YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XFxuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFfX3dlYnBhY2tfcmVxdWlyZV9fKDQpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogX193ZWJwYWNrX3JlcXVpcmVfXyg4KS5mIH0pO1xcbi8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5dWIyUmxYMjF2WkhWc1pYTXZZMjl5WlMxcWN5OXNhV0p5WVhKNUwyMXZaSFZzWlhNdlpYTTJMbTlpYW1WamRDNWtaV1pwYm1VdGNISnZjR1Z5ZEhrdWFuTS9PVGd5T1NKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUdEJRVU5CTzBGQlEwRXNiMFZCUVhWRkxESkRRVUUwUXlJc0ltWnBiR1VpT2lJMk1pNXFjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW5aaGNpQWtaWGh3YjNKMElEMGdjbVZ4ZFdseVpTZ25MaTlmWlhod2IzSjBKeWs3WEc0dkx5QXhPUzR4TGpJdU5DQXZJREUxTGpJdU15NDJJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNoUExDQlFMQ0JCZEhSeWFXSjFkR1Z6S1Z4dUpHVjRjRzl5ZENna1pYaHdiM0owTGxNZ0t5QWtaWGh3YjNKMExrWWdLaUFoY21WeGRXbHlaU2duTGk5ZlpHVnpZM0pwY0hSdmNuTW5LU3dnSjA5aWFtVmpkQ2NzSUhzZ1pHVm1hVzVsVUhKdmNHVnlkSGs2SUhKbGNYVnBjbVVvSnk0dlgyOWlhbVZqZEMxa2NDY3BMbVlnZlNrN1hHNWNibHh1WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZJRmRGUWxCQlEwc2dSazlQVkVWU1hHNHZMeUF1TDI1dlpHVmZiVzlrZFd4bGN5OWpiM0psTFdwekwyeHBZbkpoY25rdmJXOWtkV3hsY3k5bGN6WXViMkpxWldOMExtUmxabWx1WlMxd2NtOXdaWEowZVM1cWMxeHVMeThnYlc5a2RXeGxJR2xrSUQwZ05qSmNiaTh2SUcxdlpIVnNaU0JqYUhWdWEzTWdQU0F3SURFZ01pQXpJRFFnTlNBMklEY2dPQ0E1SURFd0lERXlJREV6SURFMElsMHNJbk52ZFhKalpWSnZiM1FpT2lJaWZRPT1cXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vNjJcXG5cIil9LDc6ZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpe2V2YWwoXCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcXG59O1xcbi8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5dWIyUmxYMjF2WkhWc1pYTXZZMjl5WlMxcWN5OXNhV0p5WVhKNUwyMXZaSFZzWlhNdlgybHpMVzlpYW1WamRDNXFjejh4TW1FNElsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUkzTG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2liVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQm1kVzVqZEdsdmJpQW9hWFFwSUh0Y2JpQWdjbVYwZFhKdUlIUjVjR1Z2WmlCcGRDQTlQVDBnSjI5aWFtVmpkQ2NnUHlCcGRDQWhQVDBnYm5Wc2JDQTZJSFI1Y0dWdlppQnBkQ0E5UFQwZ0oyWjFibU4wYVc5dUp6dGNibjA3WEc1Y2JseHVYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dklGZEZRbEJCUTBzZ1JrOVBWRVZTWEc0dkx5QXVMMjV2WkdWZmJXOWtkV3hsY3k5amIzSmxMV3B6TDJ4cFluSmhjbmt2Ylc5a2RXeGxjeTlmYVhNdGIySnFaV04wTG1welhHNHZMeUJ0YjJSMWJHVWdhV1FnUFNBM1hHNHZMeUJ0YjJSMWJHVWdZMmgxYm10eklEMGdNQ0F4SURJZ015QTBJRFVnTmlBM0lEZ2dPU0F4TUNBeE1TQXhNaUF4TXlBeE5DSmRMQ0p6YjNWeVkyVlNiMjkwSWpvaUluMD1cXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vN1xcblwiKX0sODpmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKXtldmFsKFwidmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcXG52YXIgSUU4X0RPTV9ERUZJTkUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTtcXG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KTtcXG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XFxuXFxuZXhwb3J0cy5mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcXG4gIGFuT2JqZWN0KE8pO1xcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XFxuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XFxuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcXG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxcbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcXG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xcbiAgcmV0dXJuIE87XFxufTtcXG4vLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOXViMlJsWDIxdlpIVnNaWE12WTI5eVpTMXFjeTlzYVdKeVlYSjVMMjF2WkhWc1pYTXZYMjlpYW1WamRDMWtjQzVxY3o4M1lXWXdJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUVVWQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJMRWRCUVVjc1dVRkJXVHRCUVVObU8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SWpndWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUoyWVhJZ1lXNVBZbXBsWTNRZ1BTQnlaWEYxYVhKbEtDY3VMMTloYmkxdlltcGxZM1FuS1R0Y2JuWmhjaUJKUlRoZlJFOU5YMFJGUmtsT1JTQTlJSEpsY1hWcGNtVW9KeTR2WDJsbE9DMWtiMjB0WkdWbWFXNWxKeWs3WEc1MllYSWdkRzlRY21sdGFYUnBkbVVnUFNCeVpYRjFhWEpsS0NjdUwxOTBieTF3Y21sdGFYUnBkbVVuS1R0Y2JuWmhjaUJrVUNBOUlFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlVHRjYmx4dVpYaHdiM0owY3k1bUlEMGdjbVZ4ZFdseVpTZ25MaTlmWkdWelkzSnBjSFJ2Y25NbktTQS9JRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNBNklHWjFibU4wYVc5dUlHUmxabWx1WlZCeWIzQmxjblI1S0U4c0lGQXNJRUYwZEhKcFluVjBaWE1wSUh0Y2JpQWdZVzVQWW1wbFkzUW9UeWs3WEc0Z0lGQWdQU0IwYjFCeWFXMXBkR2wyWlNoUUxDQjBjblZsS1R0Y2JpQWdZVzVQWW1wbFkzUW9RWFIwY21saWRYUmxjeWs3WEc0Z0lHbG1JQ2hKUlRoZlJFOU5YMFJGUmtsT1JTa2dkSEo1SUh0Y2JpQWdJQ0J5WlhSMWNtNGdaRkFvVHl3Z1VDd2dRWFIwY21saWRYUmxjeWs3WEc0Z0lIMGdZMkYwWTJnZ0tHVXBJSHNnTHlvZ1pXMXdkSGtnS2k4Z2ZWeHVJQ0JwWmlBb0oyZGxkQ2NnYVc0Z1FYUjBjbWxpZFhSbGN5QjhmQ0FuYzJWMEp5QnBiaUJCZEhSeWFXSjFkR1Z6S1NCMGFISnZkeUJVZVhCbFJYSnliM0lvSjBGalkyVnpjMjl5Y3lCdWIzUWdjM1Z3Y0c5eWRHVmtJU2NwTzF4dUlDQnBaaUFvSjNaaGJIVmxKeUJwYmlCQmRIUnlhV0oxZEdWektTQlBXMUJkSUQwZ1FYUjBjbWxpZFhSbGN5NTJZV3gxWlR0Y2JpQWdjbVYwZFhKdUlFODdYRzU5TzF4dVhHNWNibHh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5QlhSVUpRUVVOTElFWlBUMVJGVWx4dUx5OGdMaTl1YjJSbFgyMXZaSFZzWlhNdlkyOXlaUzFxY3k5c2FXSnlZWEo1TDIxdlpIVnNaWE12WDI5aWFtVmpkQzFrY0M1cWMxeHVMeThnYlc5a2RXeGxJR2xrSUQwZ09GeHVMeThnYlc5a2RXeGxJR05vZFc1cmN5QTlJREFnTVNBeUlETWdOQ0ExSURZZ055QTRJRGtnTVRBZ01URWdNVElnTVRNZ01UUWlYU3dpYzI5MWNtTmxVbTl2ZENJNklpSjlcXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vOFxcblwiKX0sOTpmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKXtldmFsKFwidmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcXG4gIHJldHVybiBpdDtcXG59O1xcbi8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5dWIyUmxYMjF2WkhWc1pYTXZZMjl5WlMxcWN5OXNhV0p5WVhKNUwyMXZaSFZzWlhNdlgyRnVMVzlpYW1WamRDNXFjejlsWm1JeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pT1M1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJblpoY2lCcGMwOWlhbVZqZENBOUlISmxjWFZwY21Vb0p5NHZYMmx6TFc5aWFtVmpkQ2NwTzF4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCbWRXNWpkR2x2YmlBb2FYUXBJSHRjYmlBZ2FXWWdLQ0ZwYzA5aWFtVmpkQ2hwZENrcElIUm9jbTkzSUZSNWNHVkZjbkp2Y2locGRDQXJJQ2NnYVhNZ2JtOTBJR0Z1SUc5aWFtVmpkQ0VuS1R0Y2JpQWdjbVYwZFhKdUlHbDBPMXh1ZlR0Y2JseHVYRzVjYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OGdWMFZDVUVGRFN5QkdUMDlVUlZKY2JpOHZJQzR2Ym05a1pWOXRiMlIxYkdWekwyTnZjbVV0YW5NdmJHbGljbUZ5ZVM5dGIyUjFiR1Z6TDE5aGJpMXZZbXBsWTNRdWFuTmNiaTh2SUcxdlpIVnNaU0JwWkNBOUlEbGNiaTh2SUcxdlpIVnNaU0JqYUhWdWEzTWdQU0F3SURFZ01pQXpJRFFnTlNBMklEY2dPQ0E1SURFd0lERXhJREV5SURFeklERTBJbDBzSW5OdmRYSmpaVkp2YjNRaU9pSWlmUT09XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzlcXG5cIil9fSl9KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9zZXJ2aWNlLWZyYW1ld29yay9kaXN0L1V0aWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///205\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _isInteger = __webpack_require__(472);\n\nvar _isInteger2 = _interopRequireDefault(_isInteger);\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _assign = __webpack_require__(98);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(11);\n\nvar _Utils = __webpack_require__(205);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('IdentityModule'); // Log System\n\n/**\n* The Identity Data Model is used to model the reTHINK User entity. The Identity data model is handled by Identity Management functionality.\n*\n*/\nvar Identities = function () {\n function Identities(type, storageManager) {\n (0, _classCallCheck3.default)(this, Identities);\n\n var _this = this;\n\n _this._watchingYou = new _Utils.WatchingYou();\n\n _this._storageManager = storageManager;\n _this._guid;\n _this._type = type;\n _this._identities = {};\n _this._accessTokens = _this.watchingYou.watch('accessTokens', {}, true);\n }\n\n (0, _createClass3.default)(Identities, [{\n key: 'reset',\n value: function reset() {\n this._identities = {};\n console.log(this);\n this.currentIdentity = undefined;\n this.defaultIdentity = undefined;\n }\n }, {\n key: 'getIdentity',\n value: function getIdentity(identifier) {\n return (0, _assign2.default)({}, this._identities[identifier]);\n }\n }, {\n key: 'loadIdentities',\n value: function loadIdentities() {\n var _this = this;\n return new _promise2.default(function (resolve) {\n\n _this._storageManager.get(null, null, 'identities').then(function (identities) {\n\n log.info('[Identities.Load Identities] identities: ', identities);\n\n if (identities) {\n _this._identities = identities;\n\n // let's set as default identity the one that expires later\n\n _this.identifiers.forEach(function (id) {\n var timeNow = (0, _utils.secondsSinceEpoch)();\n var identity = _this._identities[id];\n var expires = identity.expires;\n\n // if (!identity.hasOwnProperty('interworking')\n // || !identity.interworking) {\n _this.defaultIdentity = id;\n\n if (parseInt(expires) > timeNow) {\n _this.defaultIdentity.expires = parseInt(expires);\n _this.currentIdentity = id;\n }\n });\n }\n\n resolve();\n });\n });\n }\n }, {\n key: 'loadAccessTokens',\n value: function loadAccessTokens() {\n var _this = this;\n return new _promise2.default(function (resolve) {\n\n _this._storageManager.get('accessTokens').then(function (accessTokens) {\n\n if (accessTokens) _this._accessTokens = accessTokens;\n resolve();\n });\n });\n }\n\n // to confirm if this function is required when the App constraints the identity selection\n\n }, {\n key: 'addIdentity',\n value: function addIdentity(identity) {\n var _this2 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n if (_this._isValid(identity)) {\n var id = identity.identifiers[0];\n (0, _assign2.default)(_this2._identities[id], identity);\n //TODO: WARNING: This does not exist!\n _this2._storeIdentity(identity).then(function () {\n _this2._identities[id].status = 'created';\n resolve();\n });\n } else {\n reject('[Identities.addIdentity] invalid IdAssertion');\n }\n });\n }\n }, {\n key: 'addAssertion',\n value: function addAssertion(assertion) {\n var _this3 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n if (_this._isValid(assertion)) {\n assertion.userProfile.guid = _this._guid;\n var userUrl = assertion.userProfile.userURL;\n if (!_this.identities[userUrl]) _this._identities[userUrl] = assertion;else _this.identities[userUrl] = assertion;\n\n _this._store().then(function () {\n _this3._identities[userUrl].status = 'created';\n resolve(assertion);\n });\n } else {\n reject('[Identities.addAssertion] invalid IdAssertion: ', assertion);\n }\n });\n }\n }, {\n key: 'removeIdentity',\n value: function removeIdentity(userUrl) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n delete _this.identities[userUrl];\n\n _this._store().then(function () {\n resolve();\n });\n });\n }\n }, {\n key: 'addAccessToken',\n value: function addAccessToken(accessToken) {\n var _this = this;\n log.info('[Identities.addAccessToken] ', accessToken);\n\n return new _promise2.default(function (resolve, reject) {\n\n if (_this._isValidAccessToken(accessToken)) {\n\n // let newAccessToken = deepClone(accessToken);\n\n _this._accessTokens[accessToken.domain] = accessToken;\n\n _this._storeAccessTokens().then(function () {\n _this._accessTokens[accessToken.domain].status = 'created';\n resolve(accessToken);\n });\n } else {\n reject('[Identities.addIdentity] invalid AccessToken: ', accessToken);\n }\n });\n }\n }, {\n key: 'setAccessTokenInProgress',\n value: function setAccessTokenInProgress(domain) {\n\n if (this._accessTokens[domain]) this._accessTokens[domain].status = 'in-progress';else this._accessTokens[domain] = { status: 'in-progress' };\n }\n }, {\n key: 'getAccessToken',\n value: function getAccessToken(domain, resources) {\n var accessToken = this._accessTokens[domain];\n\n if (!accessToken) {\n return undefined;\n } else if (resources.every(function (i) {\n return accessToken.resources.indexOf(i) != -1;\n })) {\n return this._accessTokens[domain];\n } else {\n return new Error('[Identities.getAccessToken] Not found for ', domain);\n }\n }\n }, {\n key: 'updateAssertion',\n value: function updateAssertion(assertion) {\n var _this = this;\n\n return new _promise2.default(function (resolve) {\n var userUrl = assertion.userProfile.userUrl;\n\n if (!_this.identities[userUrl]) {\n return reject('[Identities.updateAssertion] Identity not found for ', userUrl);\n } else {\n _this.identities[userUrl] = assertion;\n _this._store().then(function () {\n resolve();\n });\n }\n });\n }\n }, {\n key: 'addIdAssertion',\n value: function addIdAssertion(identifier, assertion, idp, scope) {\n var _this = this;\n\n var newIdAssertion = new IdAssertion(assertion, idp, scope);\n\n _this.idAssertionList.push(newIdAssertion);\n }\n\n //TODO: complete with more verifications. To be moved to Identity?\n\n }, {\n key: '_isValid',\n value: function _isValid(identity) {\n if (!identity.hasOwnProperty('assertion')) {\n return false;\n }\n\n var splitedAssertion = identity.assertion.split('.');\n var assertionParsed = void 0;\n\n //verify if the token contains the 3 components, or just the assertion\n try {\n if (splitedAssertion[1]) {\n assertionParsed = (0, _utils.decode)(splitedAssertion[1]);\n } else {\n assertionParsed = (0, _utils.decode)(identity.assertion);\n }\n } catch (err) {\n return false;\n }\n\n return true;\n }\n }, {\n key: '_isValidAccessToken',\n value: function _isValidAccessToken(accessToken) {\n\n if (!accessToken.hasOwnProperty('accessToken')) {\n return false;\n }\n\n if (!accessToken.hasOwnProperty('domain')) {\n return false;\n }\n\n if (!(accessToken.hasOwnProperty('resources') && Array.isArray(accessToken.resources))) {\n return false;\n }\n\n if (!(accessToken.hasOwnProperty('expires') && (0, _isInteger2.default)(accessToken.expires))) {\n return false;\n }\n\n if (!accessToken.hasOwnProperty('input')) {\n return false;\n }\n\n return true;\n }\n\n //TODO: add function to only set one new identity using the new indexed storage manager\n\n }, {\n key: '_store',\n value: function _store() {\n var _this4 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var store = (0, _keys2.default)(_this4._identities).map(function (userURL) {\n return _this._storageManager.set(userURL, 0, _this4._identities[userURL], 'identities');\n });\n\n _promise2.default.all(store).then(function () {\n resolve();\n }).catch(function (err) {\n reject('On _sendReporterSessionKey from method storeIdentity error: ' + err);\n });\n });\n }\n }, {\n key: '_storeAccessTokens',\n value: function _storeAccessTokens() {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var accessTokens = (0, _utils.deepClone)(_this._accessTokens);\n\n _this._storageManager.set('accessTokens', 0, accessTokens).then(function () {\n resolve();\n }).catch(function (err) {\n reject('On _sendReporterSessionKey from method storeIdentity error: ' + err);\n });\n });\n }\n }, {\n key: 'identities',\n get: function get() {\n return this._identities;\n }\n }, {\n key: 'accessTokens',\n get: function get() {\n return this._accessTokens;\n }\n }, {\n key: 'watchingYou',\n get: function get() {\n return this._watchingYou;\n }\n }, {\n key: 'guid',\n set: function set(guid) {\n this._guid = guid;\n },\n get: function get() {\n return this._guid;\n }\n }, {\n key: 'defaultIdentity',\n set: function set(identifier) {\n if (this.identities[identifier]) this._defaultIdentity = identifier;else throw new Error('[Identities.set defaultIdentity ] Error: identity does not exist here: ', identifier);\n },\n get: function get() {\n if (this._defaultIdentity) return (0, _assign2.default)({}, this.identities[this._defaultIdentity]);else return false;\n }\n }, {\n key: 'currentIdentity',\n set: function set(identifier) {\n if (this.identities[identifier]) this._currentIdentity = identifier;else throw '[Identities.set currentIdentity ] Error: identity does not exist here: ', identifier;\n },\n get: function get() {\n return (0, _assign2.default)({}, this.identities[this._currentIdentity]);\n }\n }, {\n key: 'identifiers',\n get: function get() {\n return (0, _keys2.default)(this._identities);\n }\n }]);\n return Identities;\n}();\n\n// move to Identity service framework?\n\nvar IdAssertion = function () {\n function IdAssertion(assertion, idp, userProfile) {\n (0, _classCallCheck3.default)(this, IdAssertion);\n\n var _this = this;\n\n _this._assertion = assertion;\n _this._idp = idp;\n _this._userProfile = userProfile;\n }\n\n (0, _createClass3.default)(IdAssertion, [{\n key: 'assertion',\n get: function get() {\n return this._assertion;\n }\n }, {\n key: 'idp',\n get: function get() {\n return this._idp;\n }\n }, {\n key: 'userProfile',\n get: function get() {\n return this._userProfile;\n }\n }]);\n return IdAssertion;\n}();\n\nvar IdValidation = function () {\n function IdValidation(identity, contents) {\n (0, _classCallCheck3.default)(this, IdValidation);\n\n var _this = this;\n _this.identity = identity;\n _this.contents = contents;\n }\n\n (0, _createClass3.default)(IdValidation, [{\n key: 'validates',\n value: function validates(identity, contents) {\n //TODO implement the logic\n\n }\n }]);\n return IdValidation;\n}();\n\nexports.default = Identities;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9pZGVudGl0eS9JZGVudGl0aWVzLmpzPzM1NjQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9nIFN5c3RlbVxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdJZGVudGl0eU1vZHVsZScpO1xuXG5pbXBvcnQgeyBkZWNvZGUsIHNlY29uZHNTaW5jZUVwb2NoLCBkZWVwQ2xvbmUgfSBmcm9tICcuLi91dGlscy91dGlscy5qcyc7XG5pbXBvcnQgeyBXYXRjaGluZ1lvdSB9IGZyb20gJ3NlcnZpY2UtZnJhbWV3b3JrL2Rpc3QvVXRpbHMnO1xuXG5cbi8qKlxuKiBUaGUgSWRlbnRpdHkgRGF0YSBNb2RlbCBpcyB1c2VkIHRvIG1vZGVsIHRoZSByZVRISU5LIFVzZXIgZW50aXR5LiBUaGUgSWRlbnRpdHkgZGF0YSBtb2RlbCBpcyBoYW5kbGVkIGJ5IElkZW50aXR5IE1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eS5cbipcbiovXG5jbGFzcyBJZGVudGl0aWVzIHtcblxuICBjb25zdHJ1Y3Rvcih0eXBlLCBzdG9yYWdlTWFuYWdlcikge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBfdGhpcy5fd2F0Y2hpbmdZb3UgPSBuZXcgV2F0Y2hpbmdZb3UoKTtcblxuICAgIF90aGlzLl9zdG9yYWdlTWFuYWdlciA9IHN0b3JhZ2VNYW5hZ2VyO1xuICAgIF90aGlzLl9ndWlkO1xuICAgIF90aGlzLl90eXBlID0gdHlwZTtcbiAgICBfdGhpcy5faWRlbnRpdGllcyA9IHt9O1xuICAgIF90aGlzLl9hY2Nlc3NUb2tlbnMgPSBfdGhpcy53YXRjaGluZ1lvdS53YXRjaCgnYWNjZXNzVG9rZW5zJywge30sIHRydWUpO1xuXG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLl9pZGVudGl0aWVzID0ge307XG4gICAgY29uc29sZS5sb2codGhpcyk7XG4gICAgdGhpcy5jdXJyZW50SWRlbnRpdHkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5kZWZhdWx0SWRlbnRpdHkgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgaWRlbnRpdGllcygpIHtcbiAgICByZXR1cm4gdGhpcy5faWRlbnRpdGllcztcbiAgfVxuXG4gIGdldCBhY2Nlc3NUb2tlbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjY2Vzc1Rva2VucztcbiAgfVxuXG4gIGdldCB3YXRjaGluZ1lvdSgpIHtcbiAgICByZXR1cm4gdGhpcy5fd2F0Y2hpbmdZb3U7XG4gIH1cblxuICBzZXQgZ3VpZChndWlkKSB7XG4gICAgdGhpcy5fZ3VpZCA9IGd1aWQ7XG4gIH1cblxuICBnZXQgZ3VpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ3VpZDtcbiAgfVxuXG4gIHNldCBkZWZhdWx0SWRlbnRpdHkoaWRlbnRpZmllcikge1xuICAgIGlmICh0aGlzLmlkZW50aXRpZXNbaWRlbnRpZmllcl0pIHRoaXMuX2RlZmF1bHRJZGVudGl0eSA9IGlkZW50aWZpZXI7XG4gICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoJ1tJZGVudGl0aWVzLnNldCBkZWZhdWx0SWRlbnRpdHkgXSBFcnJvcjogaWRlbnRpdHkgZG9lcyBub3QgZXhpc3QgaGVyZTogJywgaWRlbnRpZmllcik7XG4gIH1cblxuICBzZXQgY3VycmVudElkZW50aXR5KGlkZW50aWZpZXIpIHtcbiAgICBpZiAodGhpcy5pZGVudGl0aWVzW2lkZW50aWZpZXJdKSB0aGlzLl9jdXJyZW50SWRlbnRpdHkgPSBpZGVudGlmaWVyO1xuICAgIGVsc2UgdGhyb3cgJ1tJZGVudGl0aWVzLnNldCBjdXJyZW50SWRlbnRpdHkgXSBFcnJvcjogaWRlbnRpdHkgZG9lcyBub3QgZXhpc3QgaGVyZTogJywgaWRlbnRpZmllcjtcbiAgfVxuXG4gIGdldCBkZWZhdWx0SWRlbnRpdHkoKSB7XG4gICAgaWYgKHRoaXMuX2RlZmF1bHRJZGVudGl0eSkgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuaWRlbnRpdGllc1t0aGlzLl9kZWZhdWx0SWRlbnRpdHldKTtcbiAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBjdXJyZW50SWRlbnRpdHkoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuaWRlbnRpdGllc1t0aGlzLl9jdXJyZW50SWRlbnRpdHldKTtcbiAgfVxuXG4gIGdldCBpZGVudGlmaWVycygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5faWRlbnRpdGllcyk7XG4gIH1cblxuICBnZXRJZGVudGl0eShpZGVudGlmaWVyKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX2lkZW50aXRpZXNbaWRlbnRpZmllcl0pO1xuICB9XG5cbiAgbG9hZElkZW50aXRpZXMoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblxuICAgICAgX3RoaXMuX3N0b3JhZ2VNYW5hZ2VyLmdldChudWxsLCBudWxsLCAnaWRlbnRpdGllcycpLnRoZW4oKGlkZW50aXRpZXMpID0+IHtcblxuICAgICAgICBsb2cuaW5mbygnW0lkZW50aXRpZXMuTG9hZCBJZGVudGl0aWVzXSBpZGVudGl0aWVzOiAnLCBpZGVudGl0aWVzKTtcblxuICAgICAgICBpZiAoaWRlbnRpdGllcykge1xuICAgICAgICAgIF90aGlzLl9pZGVudGl0aWVzID0gaWRlbnRpdGllcztcblxuICAgICAgICAgIC8vIGxldCdzIHNldCBhcyBkZWZhdWx0IGlkZW50aXR5IHRoZSBvbmUgdGhhdCBleHBpcmVzIGxhdGVyXG5cbiAgICAgICAgICBfdGhpcy5pZGVudGlmaWVycy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICAgICAgbGV0IHRpbWVOb3cgPSBzZWNvbmRzU2luY2VFcG9jaCgpO1xuICAgICAgICAgICAgbGV0IGlkZW50aXR5ID0gX3RoaXMuX2lkZW50aXRpZXNbaWRdO1xuICAgICAgICAgICAgbGV0IGV4cGlyZXMgPSBpZGVudGl0eS5leHBpcmVzO1xuXG4gICAgICAgICAgICAvLyAgICAgICAgICAgIGlmICghaWRlbnRpdHkuaGFzT3duUHJvcGVydHkoJ2ludGVyd29ya2luZycpXG4gICAgICAgICAgICAvLyAgICAgICAgICAgIHx8ICFpZGVudGl0eS5pbnRlcndvcmtpbmcpIHtcbiAgICAgICAgICAgIF90aGlzLmRlZmF1bHRJZGVudGl0eSA9IGlkO1xuXG4gICAgICAgICAgICBpZiAocGFyc2VJbnQoZXhwaXJlcykgPiB0aW1lTm93KSB7XG4gICAgICAgICAgICAgIF90aGlzLmRlZmF1bHRJZGVudGl0eS5leHBpcmVzID0gcGFyc2VJbnQoZXhwaXJlcyk7XG4gICAgICAgICAgICAgIF90aGlzLmN1cnJlbnRJZGVudGl0eSA9IGlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGxvYWRBY2Nlc3NUb2tlbnMoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblxuICAgICAgX3RoaXMuX3N0b3JhZ2VNYW5hZ2VyLmdldCgnYWNjZXNzVG9rZW5zJykudGhlbigoYWNjZXNzVG9rZW5zKSA9PiB7XG5cbiAgICAgICAgaWYgKGFjY2Vzc1Rva2VucykgX3RoaXMuX2FjY2Vzc1Rva2VucyA9IGFjY2Vzc1Rva2VucztcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyB0byBjb25maXJtIGlmIHRoaXMgZnVuY3Rpb24gaXMgcmVxdWlyZWQgd2hlbiB0aGUgQXBwIGNvbnN0cmFpbnRzIHRoZSBpZGVudGl0eSBzZWxlY3Rpb25cblxuICBhZGRJZGVudGl0eShpZGVudGl0eSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKF90aGlzLl9pc1ZhbGlkKGlkZW50aXR5KSkge1xuICAgICAgICBsZXQgaWQgPSBpZGVudGl0eS5pZGVudGlmaWVyc1swXTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9pZGVudGl0aWVzW2lkXSwgaWRlbnRpdHkpO1xuICAgICAgICAvL1RPRE86IFdBUk5JTkc6IFRoaXMgZG9lcyBub3QgZXhpc3QhXG4gICAgICAgIHRoaXMuX3N0b3JlSWRlbnRpdHkoaWRlbnRpdHkpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2lkZW50aXRpZXNbaWRdLnN0YXR1cyA9ICdjcmVhdGVkJztcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHsgcmVqZWN0KCdbSWRlbnRpdGllcy5hZGRJZGVudGl0eV0gaW52YWxpZCBJZEFzc2VydGlvbicpOyB9XG4gICAgfSk7XG5cbiAgfVxuXG4gIGFkZEFzc2VydGlvbihhc3NlcnRpb24pIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChfdGhpcy5faXNWYWxpZChhc3NlcnRpb24pKSB7XG4gICAgICAgIGFzc2VydGlvbi51c2VyUHJvZmlsZS5ndWlkID0gX3RoaXMuX2d1aWQ7XG4gICAgICAgIGxldCB1c2VyVXJsID0gYXNzZXJ0aW9uLnVzZXJQcm9maWxlLnVzZXJVUkw7XG4gICAgICAgIGlmICghX3RoaXMuaWRlbnRpdGllc1t1c2VyVXJsXSkgX3RoaXMuX2lkZW50aXRpZXNbdXNlclVybF0gPSBhc3NlcnRpb247XG4gICAgICAgIGVsc2UgX3RoaXMuaWRlbnRpdGllc1t1c2VyVXJsXSA9IGFzc2VydGlvbjtcblxuICAgICAgICBfdGhpcy5fc3RvcmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9pZGVudGl0aWVzW3VzZXJVcmxdLnN0YXR1cyA9ICdjcmVhdGVkJztcbiAgICAgICAgICByZXNvbHZlKGFzc2VydGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHsgcmVqZWN0KCdbSWRlbnRpdGllcy5hZGRBc3NlcnRpb25dIGludmFsaWQgSWRBc3NlcnRpb246ICcsIGFzc2VydGlvbik7IH1cbiAgICB9KTtcblxuICB9XG5cbiAgcmVtb3ZlSWRlbnRpdHkodXNlclVybCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBkZWxldGUgX3RoaXMuaWRlbnRpdGllc1t1c2VyVXJsXTtcblxuICAgICAgX3RoaXMuX3N0b3JlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuXG4gICAgfSk7XG5cbiAgfVxuXG4gIGFkZEFjY2Vzc1Rva2VuKGFjY2Vzc1Rva2VuKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBsb2cuaW5mbygnW0lkZW50aXRpZXMuYWRkQWNjZXNzVG9rZW5dICcsIGFjY2Vzc1Rva2VuKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgIGlmIChfdGhpcy5faXNWYWxpZEFjY2Vzc1Rva2VuKGFjY2Vzc1Rva2VuKSkge1xuXG4gICAgICAgIC8vICAgICAgICBsZXQgbmV3QWNjZXNzVG9rZW4gPSBkZWVwQ2xvbmUoYWNjZXNzVG9rZW4pO1xuXG4gICAgICAgIF90aGlzLl9hY2Nlc3NUb2tlbnNbYWNjZXNzVG9rZW4uZG9tYWluXSA9IGFjY2Vzc1Rva2VuO1xuXG4gICAgICAgIF90aGlzLl9zdG9yZUFjY2Vzc1Rva2VucygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIF90aGlzLl9hY2Nlc3NUb2tlbnNbYWNjZXNzVG9rZW4uZG9tYWluXS5zdGF0dXMgPSAnY3JlYXRlZCc7XG4gICAgICAgICAgcmVzb2x2ZShhY2Nlc3NUb2tlbik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHsgcmVqZWN0KCdbSWRlbnRpdGllcy5hZGRJZGVudGl0eV0gaW52YWxpZCBBY2Nlc3NUb2tlbjogJywgYWNjZXNzVG9rZW4pOyB9XG4gICAgfSk7XG5cbiAgfVxuXG4gIHNldEFjY2Vzc1Rva2VuSW5Qcm9ncmVzcyhkb21haW4pIHtcblxuICAgIGlmICh0aGlzLl9hY2Nlc3NUb2tlbnNbZG9tYWluXSkgdGhpcy5fYWNjZXNzVG9rZW5zW2RvbWFpbl0uc3RhdHVzID0gJ2luLXByb2dyZXNzJztcbiAgICBlbHNlIHRoaXMuX2FjY2Vzc1Rva2Vuc1tkb21haW5dID0geyBzdGF0dXM6ICdpbi1wcm9ncmVzcycgfTtcbiAgfVxuXG4gIGdldEFjY2Vzc1Rva2VuKGRvbWFpbiwgcmVzb3VyY2VzKSB7XG4gICAgbGV0IGFjY2Vzc1Rva2VuID0gdGhpcy5fYWNjZXNzVG9rZW5zW2RvbWFpbl07XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSBpZiAoXG4gICAgICByZXNvdXJjZXMuZXZlcnkoKGkpID0+IHsgcmV0dXJuIGFjY2Vzc1Rva2VuLnJlc291cmNlcy5pbmRleE9mKGkpICE9IC0xOyB9KSkgeyByZXR1cm4gdGhpcy5fYWNjZXNzVG9rZW5zW2RvbWFpbl07IH0gZWxzZSB7IHJldHVybiBuZXcgRXJyb3IoJ1tJZGVudGl0aWVzLmdldEFjY2Vzc1Rva2VuXSBOb3QgZm91bmQgZm9yICcsIGRvbWFpbik7IH1cblxuICB9XG5cbiAgdXBkYXRlQXNzZXJ0aW9uKGFzc2VydGlvbikge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGxldCB1c2VyVXJsID0gYXNzZXJ0aW9uLnVzZXJQcm9maWxlLnVzZXJVcmw7XG5cbiAgICAgIGlmICghX3RoaXMuaWRlbnRpdGllc1t1c2VyVXJsXSkgeyByZXR1cm4gcmVqZWN0KCdbSWRlbnRpdGllcy51cGRhdGVBc3NlcnRpb25dIElkZW50aXR5IG5vdCBmb3VuZCBmb3IgJywgdXNlclVybCk7IH0gZWxzZSB7XG4gICAgICAgIF90aGlzLmlkZW50aXRpZXNbdXNlclVybF0gPSBhc3NlcnRpb247XG4gICAgICAgIF90aGlzLl9zdG9yZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICB9KTtcblxuICB9XG5cbiAgYWRkSWRBc3NlcnRpb24oaWRlbnRpZmllciwgYXNzZXJ0aW9uLCBpZHAsIHNjb3BlKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGxldCBuZXdJZEFzc2VydGlvbiA9IG5ldyBJZEFzc2VydGlvbihhc3NlcnRpb24sIGlkcCwgc2NvcGUpO1xuXG4gICAgX3RoaXMuaWRBc3NlcnRpb25MaXN0LnB1c2gobmV3SWRBc3NlcnRpb24pO1xuICB9XG5cbiAgLy9UT0RPOiBjb21wbGV0ZSB3aXRoIG1vcmUgdmVyaWZpY2F0aW9ucy4gVG8gYmUgbW92ZWQgdG8gSWRlbnRpdHk/XG5cbiAgX2lzVmFsaWQoaWRlbnRpdHkpIHtcbiAgICBpZiAoIWlkZW50aXR5Lmhhc093blByb3BlcnR5KCdhc3NlcnRpb24nKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBzcGxpdGVkQXNzZXJ0aW9uID0gaWRlbnRpdHkuYXNzZXJ0aW9uLnNwbGl0KCcuJyk7XG4gICAgbGV0IGFzc2VydGlvblBhcnNlZDtcblxuICAgIC8vdmVyaWZ5IGlmIHRoZSB0b2tlbiBjb250YWlucyB0aGUgMyBjb21wb25lbnRzLCBvciBqdXN0IHRoZSBhc3NlcnRpb25cbiAgICB0cnkge1xuICAgICAgaWYgKHNwbGl0ZWRBc3NlcnRpb25bMV0pIHtcbiAgICAgICAgYXNzZXJ0aW9uUGFyc2VkID0gZGVjb2RlKHNwbGl0ZWRBc3NlcnRpb25bMV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXNzZXJ0aW9uUGFyc2VkID0gZGVjb2RlKGlkZW50aXR5LmFzc2VydGlvbik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgX2lzVmFsaWRBY2Nlc3NUb2tlbihhY2Nlc3NUb2tlbikge1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbi5oYXNPd25Qcm9wZXJ0eSgnYWNjZXNzVG9rZW4nKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghYWNjZXNzVG9rZW4uaGFzT3duUHJvcGVydHkoJ2RvbWFpbicpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCEoYWNjZXNzVG9rZW4uaGFzT3duUHJvcGVydHkoJ3Jlc291cmNlcycpICYmIEFycmF5LmlzQXJyYXkoYWNjZXNzVG9rZW4ucmVzb3VyY2VzKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cblxuICAgIGlmICghKGFjY2Vzc1Rva2VuLmhhc093blByb3BlcnR5KCdleHBpcmVzJykgJiYgTnVtYmVyLmlzSW50ZWdlcihhY2Nlc3NUb2tlbi5leHBpcmVzKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuLmhhc093blByb3BlcnR5KCdpbnB1dCcpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIC8vVE9ETzogYWRkIGZ1bmN0aW9uIHRvIG9ubHkgc2V0IG9uZSBuZXcgaWRlbnRpdHkgdXNpbmcgdGhlIG5ldyBpbmRleGVkIHN0b3JhZ2UgbWFuYWdlclxuXG4gIF9zdG9yZSgpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgY29uc3Qgc3RvcmUgPSBPYmplY3Qua2V5cyh0aGlzLl9pZGVudGl0aWVzKS5tYXAoKHVzZXJVUkwpID0+IHtcbiAgICAgICAgcmV0dXJuIF90aGlzLl9zdG9yYWdlTWFuYWdlci5zZXQodXNlclVSTCwgMCwgdGhpcy5faWRlbnRpdGllc1t1c2VyVVJMXSwgJ2lkZW50aXRpZXMnKTtcbiAgICAgIH0pO1xuXG4gICAgICBQcm9taXNlLmFsbChzdG9yZSkudGhlbigoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHJlamVjdCgnT24gX3NlbmRSZXBvcnRlclNlc3Npb25LZXkgZnJvbSBtZXRob2Qgc3RvcmVJZGVudGl0eSBlcnJvcjogJyArIGVycik7XG4gICAgICB9KTtcblxuICAgIH0pO1xuICB9XG4gIF9zdG9yZUFjY2Vzc1Rva2VucygpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgbGV0IGFjY2Vzc1Rva2VucyA9IGRlZXBDbG9uZShfdGhpcy5fYWNjZXNzVG9rZW5zKTtcblxuICAgICAgX3RoaXMuX3N0b3JhZ2VNYW5hZ2VyLnNldCgnYWNjZXNzVG9rZW5zJywgMCwgYWNjZXNzVG9rZW5zKS50aGVuKCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgcmVqZWN0KCdPbiBfc2VuZFJlcG9ydGVyU2Vzc2lvbktleSBmcm9tIG1ldGhvZCBzdG9yZUlkZW50aXR5IGVycm9yOiAnICsgZXJyKTtcbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH1cblxufVxuXG4vLyBtb3ZlIHRvIElkZW50aXR5IHNlcnZpY2UgZnJhbWV3b3JrP1xuXG5jbGFzcyBJZEFzc2VydGlvbiB7XG5cbiAgY29uc3RydWN0b3IoYXNzZXJ0aW9uLCBpZHAsIHVzZXJQcm9maWxlKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIF90aGlzLl9hc3NlcnRpb24gPSBhc3NlcnRpb247XG4gICAgX3RoaXMuX2lkcCA9IGlkcDtcbiAgICBfdGhpcy5fdXNlclByb2ZpbGUgPSB1c2VyUHJvZmlsZTtcbiAgfVxuXG4gIGdldCBhc3NlcnRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Fzc2VydGlvbjtcbiAgfVxuXG4gIGdldCBpZHAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lkcDtcbiAgfVxuXG4gIGdldCB1c2VyUHJvZmlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdXNlclByb2ZpbGU7XG4gIH1cblxufVxuXG5jbGFzcyBJZFZhbGlkYXRpb24ge1xuXG4gIGNvbnN0cnVjdG9yKGlkZW50aXR5LCBjb250ZW50cykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgX3RoaXMuaWRlbnRpdHkgPSBpZGVudGl0eTtcbiAgICBfdGhpcy5jb250ZW50cyA9IGNvbnRlbnRzO1xuICB9XG5cbiAgdmFsaWRhdGVzKGlkZW50aXR5LCBjb250ZW50cykge1xuICAgIC8vVE9ETyBpbXBsZW1lbnQgdGhlIGxvZ2ljXG5cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJZGVudGl0aWVzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9pZGVudGl0eS9JZGVudGl0aWVzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBOzs7OztBQUpBO0FBQ0E7QUFLQTs7OztBQUlBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUE2Q0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBOzs7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7OztBQUVBO0FBQ0E7QUFDQTtBQUVBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7QUFyU0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBRUE7QUFPQTtBQUNBO0FBRUE7OztBQVJBO0FBQ0E7QUFFQTtBQU9BO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7OztBQWdRQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///206\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n\n/**\n* @author Ana Caldeira \n* @classdesc Class to combine the authorization decisions that result from rules evaluation.\n*/\nvar AllowOverrides = function () {\n function AllowOverrides() {\n (0, _classCallCheck3.default)(this, AllowOverrides);\n }\n\n (0, _createClass3.default)(AllowOverrides, [{\n key: 'combine',\n\n\n /**\n * Given an array of individual authorization decisions, prioritizes a positive one.\n * @param {boolean[]} decisions\n * @returns {boolean}\n */\n value: function combine(decisions) {\n if (decisions.indexOf(true) !== -1) {\n return true;\n } else {\n if (decisions.indexOf(false) !== -1) {\n return false;\n } else {\n return 'Not Applicable';\n }\n }\n }\n }]);\n return AllowOverrides;\n}();\n\nexports.default = AllowOverrides;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9BbGxvd092ZXJyaWRlcy5qcz80YzQ3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cblxuLyoqXG4qIEBhdXRob3IgQW5hIENhbGRlaXJhIDxhbmEuY2FsZGVpcmFAdGVjbmljby51bGlzYm9hLnB0PlxuKiBAY2xhc3NkZXNjIENsYXNzIHRvIGNvbWJpbmUgdGhlIGF1dGhvcml6YXRpb24gZGVjaXNpb25zIHRoYXQgcmVzdWx0IGZyb20gcnVsZXMgZXZhbHVhdGlvbi5cbiovXG5jbGFzcyBBbGxvd092ZXJyaWRlcyB7XG5cbiAgLyoqXG4gICogR2l2ZW4gYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBhdXRob3JpemF0aW9uIGRlY2lzaW9ucywgcHJpb3JpdGl6ZXMgYSBwb3NpdGl2ZSBvbmUuXG4gICogQHBhcmFtICAgIHtib29sZWFuW119ICAgZGVjaXNpb25zXG4gICogQHJldHVybnMgIHtib29sZWFufVxuICAqL1xuICBjb21iaW5lKGRlY2lzaW9ucykge1xuICAgIGlmIChkZWNpc2lvbnMuaW5kZXhPZih0cnVlKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGVjaXNpb25zLmluZGV4T2YoZmFsc2UpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ05vdCBBcHBsaWNhYmxlJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBBbGxvd092ZXJyaWRlcztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L2NvbWJpbmluZ0FsZ29yaXRobXMvQWxsb3dPdmVycmlkZXMuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7Ozs7QUFJQTs7Ozs7Ozs7O0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///207\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n\n/**\n* @author Ana Caldeira \n* @classdesc Class to combine the authorization decisions that result from rules evaluation.\n*/\nvar BlockOverrides = function () {\n function BlockOverrides() {\n (0, _classCallCheck3.default)(this, BlockOverrides);\n }\n\n (0, _createClass3.default)(BlockOverrides, [{\n key: 'combine',\n\n\n /**\n * Given an array of individual authorisation decisions, prioritises a negative one.\n * @param {boolean[]} decisions\n * @returns {boolean}\n */\n value: function combine(decisions) {\n if (decisions.indexOf(false) !== -1) {\n return false;\n } else {\n if (decisions.indexOf(true) !== -1) {\n return true;\n } else {\n return 'Not Applicable';\n }\n }\n }\n }]);\n return BlockOverrides;\n}();\n\nexports.default = BlockOverrides;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9CbG9ja092ZXJyaWRlcy5qcz82MWM3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cblxuLyoqXG4qIEBhdXRob3IgQW5hIENhbGRlaXJhIDxhbmEuY2FsZGVpcmFAdGVjbmljby51bGlzYm9hLnB0PlxuKiBAY2xhc3NkZXNjIENsYXNzIHRvIGNvbWJpbmUgdGhlIGF1dGhvcml6YXRpb24gZGVjaXNpb25zIHRoYXQgcmVzdWx0IGZyb20gcnVsZXMgZXZhbHVhdGlvbi5cbiovXG5jbGFzcyBCbG9ja092ZXJyaWRlcyB7XG5cbiAgLyoqXG4gICogR2l2ZW4gYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBhdXRob3Jpc2F0aW9uIGRlY2lzaW9ucywgcHJpb3JpdGlzZXMgYSBuZWdhdGl2ZSBvbmUuXG4gICogQHBhcmFtICAgIHtib29sZWFuW119ICAgZGVjaXNpb25zXG4gICogQHJldHVybnMgIHtib29sZWFufVxuICAqL1xuICBjb21iaW5lKGRlY2lzaW9ucykge1xuICAgIGlmIChkZWNpc2lvbnMuaW5kZXhPZihmYWxzZSkgIT09IC0xKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChkZWNpc2lvbnMuaW5kZXhPZih0cnVlKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ05vdCBBcHBsaWNhYmxlJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBCbG9ja092ZXJyaWRlcztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L2NvbWJpbmluZ0FsZ29yaXRobXMvQmxvY2tPdmVycmlkZXMuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7Ozs7QUFJQTs7Ozs7Ozs7O0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///208\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n\n/**\n* @author Ana Caldeira \n* @classdesc Class to combine the authorization decisions that result from rules evaluation.\n*/\nvar FirstApplicable = function () {\n function FirstApplicable() {\n (0, _classCallCheck3.default)(this, FirstApplicable);\n }\n\n (0, _createClass3.default)(FirstApplicable, [{\n key: 'combine',\n\n\n /**\n * Given an array of individual authorisation decisions, returns the first one different from 'Not Applicable', either positive or negative.\n * @param {boolean[]} decisions\n * @returns {boolean}\n */\n value: function combine(decisions) {\n for (var i in decisions) {\n if (decisions[i] !== 'Not Applicable') {\n return decisions[i];\n }\n }\n return 'Not Applicable';\n }\n }]);\n return FirstApplicable;\n}();\n\nexports.default = FirstApplicable;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9GaXJzdEFwcGxpY2FibGUuanM/MzNkZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKiovXG5cbi8qKlxuKiBAYXV0aG9yIEFuYSBDYWxkZWlyYSA8YW5hLmNhbGRlaXJhQHRlY25pY28udWxpc2JvYS5wdD5cbiogQGNsYXNzZGVzYyBDbGFzcyB0byBjb21iaW5lIHRoZSBhdXRob3JpemF0aW9uIGRlY2lzaW9ucyB0aGF0IHJlc3VsdCBmcm9tIHJ1bGVzIGV2YWx1YXRpb24uXG4qL1xuY2xhc3MgRmlyc3RBcHBsaWNhYmxlIHtcblxuICAvKipcbiAgKiBHaXZlbiBhbiBhcnJheSBvZiBpbmRpdmlkdWFsIGF1dGhvcmlzYXRpb24gZGVjaXNpb25zLCByZXR1cm5zIHRoZSBmaXJzdCBvbmUgZGlmZmVyZW50IGZyb20gJ05vdCBBcHBsaWNhYmxlJywgZWl0aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlLlxuICAqIEBwYXJhbSAgICB7Ym9vbGVhbltdfSAgICAgZGVjaXNpb25zXG4gICogQHJldHVybnMgIHtib29sZWFufVxuICAqL1xuICBjb21iaW5lKGRlY2lzaW9ucykge1xuICAgIGZvciAobGV0IGkgaW4gZGVjaXNpb25zKSB7XG4gICAgICBpZiAoZGVjaXNpb25zW2ldICE9PSAnTm90IEFwcGxpY2FibGUnKSB7XG4gICAgICAgIHJldHVybiBkZWNpc2lvbnNbaV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnTm90IEFwcGxpY2FibGUnO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgRmlyc3RBcHBsaWNhYmxlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvY29tYmluaW5nQWxnb3JpdGhtcy9GaXJzdEFwcGxpY2FibGUuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7Ozs7QUFJQTs7Ozs7Ozs7O0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///209\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(503), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9hcnJheS9mcm9tLmpzPzczZjQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2FycmF5L2Zyb21cIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvYXJyYXkvZnJvbS5qc1xuLy8gbW9kdWxlIGlkID0gMjEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///210\n')},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(510), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvdmFsdWVzLmpzPzgxMTEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC92YWx1ZXNcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L3ZhbHVlcy5qc1xuLy8gbW9kdWxlIGlkID0gMjExXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///211\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('SynSubscription'); // Log System\n\nvar Subscription = function () {\n function Subscription(bus, owner, url, childrens, isReporter) {\n (0, _classCallCheck3.default)(this, Subscription);\n\n var _this = this;\n var childBaseURL = url + '/children/';\n var changeURL = url + '/changes';\n\n //process delete message\n _this._deleteListener = bus.addListener(changeURL, function (msg) {\n if (msg.type === 'delete') {\n log.log('Subscription-DELETE: ', msg);\n\n //FLOW-OUT: message sent to all subscribers\n var deleteMessageToHyperty = {\n type: 'delete', from: msg.from, to: owner,\n body: { identity: msg.body.identity, resource: url }\n };\n\n //send delete to hyperty\n bus.postMessage(deleteMessageToHyperty, function (reply) {\n log.log('Subscription-DELETE-REPLY: ', reply);\n if (reply.body.code === 200) {\n _this._releaseListeners();\n }\n });\n }\n });\n\n //add change publish address or forward\n if (isReporter) {\n _this._changeListener = bus.addPublish(changeURL);\n } else {\n _this._changeListener = bus.addForward(changeURL, owner);\n }\n\n _this._childrenListeners = [];\n log.log('[Subscription] - childID', childrens);\n childrens.forEach(function (child) {\n var childId = childBaseURL + child;\n\n log.log('[Subscription] - childID', childBaseURL, childId, child);\n\n //add children publish address\n var childrenForward = bus.addPublish(childId);\n _this._childrenListeners.push(childrenForward);\n\n //add self forward if an observer\n if (!isReporter) {\n var selfForward = bus.addForward(childId, owner);\n _this._childrenListeners.push(selfForward);\n }\n });\n }\n\n (0, _createClass3.default)(Subscription, [{\n key: '_releaseListeners',\n value: function _releaseListeners() {\n var _this = this;\n\n _this._deleteListener.remove();\n\n _this._changeListener.remove();\n\n _this._childrenListeners.forEach(function (forward) {\n forward.remove();\n });\n }\n }]);\n return Subscription;\n}();\n\nexports.default = Subscription;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zeW5jaGVyL1N1YnNjcmlwdGlvbi5qcz8yZTg1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIExvZyBTeXN0ZW1cbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignU3luU3Vic2NyaXB0aW9uJyk7XG5cbmNsYXNzIFN1YnNjcmlwdGlvbiB7XG5cbiAgY29uc3RydWN0b3IoYnVzLCBvd25lciwgdXJsLCBjaGlsZHJlbnMsIGlzUmVwb3J0ZXIpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIGxldCBjaGlsZEJhc2VVUkwgPSB1cmwgKyAnL2NoaWxkcmVuLyc7XG4gICAgbGV0IGNoYW5nZVVSTCA9IHVybCArICcvY2hhbmdlcyc7XG5cbiAgICAvL3Byb2Nlc3MgZGVsZXRlIG1lc3NhZ2VcbiAgICBfdGhpcy5fZGVsZXRlTGlzdGVuZXIgPSBidXMuYWRkTGlzdGVuZXIoY2hhbmdlVVJMLCAobXNnKSA9PiB7XG4gICAgICBpZiAobXNnLnR5cGUgPT09ICdkZWxldGUnKSB7XG4gICAgICAgIGxvZy5sb2coJ1N1YnNjcmlwdGlvbi1ERUxFVEU6ICcsIG1zZyk7XG5cbiAgICAgICAgLy9GTE9XLU9VVDogbWVzc2FnZSBzZW50IHRvIGFsbCBzdWJzY3JpYmVyc1xuICAgICAgICBsZXQgZGVsZXRlTWVzc2FnZVRvSHlwZXJ0eSA9IHtcbiAgICAgICAgICB0eXBlOiAnZGVsZXRlJywgZnJvbTogbXNnLmZyb20sIHRvOiBvd25lcixcbiAgICAgICAgICBib2R5OiB7IGlkZW50aXR5OiBtc2cuYm9keS5pZGVudGl0eSwgcmVzb3VyY2U6IHVybCB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy9zZW5kIGRlbGV0ZSB0byBoeXBlcnR5XG4gICAgICAgIGJ1cy5wb3N0TWVzc2FnZShkZWxldGVNZXNzYWdlVG9IeXBlcnR5LCAocmVwbHkpID0+IHtcbiAgICAgICAgICBsb2cubG9nKCdTdWJzY3JpcHRpb24tREVMRVRFLVJFUExZOiAnLCByZXBseSk7XG4gICAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgICBfdGhpcy5fcmVsZWFzZUxpc3RlbmVycygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvL2FkZCBjaGFuZ2UgcHVibGlzaCBhZGRyZXNzIG9yIGZvcndhcmRcbiAgICBpZiAoaXNSZXBvcnRlcikge1xuICAgICAgX3RoaXMuX2NoYW5nZUxpc3RlbmVyID0gYnVzLmFkZFB1Ymxpc2goY2hhbmdlVVJMKTtcbiAgICB9IGVsc2Uge1xuICAgICAgX3RoaXMuX2NoYW5nZUxpc3RlbmVyID0gYnVzLmFkZEZvcndhcmQoY2hhbmdlVVJMLCBvd25lcik7XG4gICAgfVxuXG4gICAgX3RoaXMuX2NoaWxkcmVuTGlzdGVuZXJzID0gW107XG4gICAgbG9nLmxvZygnW1N1YnNjcmlwdGlvbl0gLSBjaGlsZElEJywgY2hpbGRyZW5zKTtcbiAgICBjaGlsZHJlbnMuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIGxldCBjaGlsZElkID0gY2hpbGRCYXNlVVJMICsgY2hpbGQ7XG5cbiAgICAgIGxvZy5sb2coJ1tTdWJzY3JpcHRpb25dIC0gY2hpbGRJRCcsIGNoaWxkQmFzZVVSTCwgY2hpbGRJZCwgY2hpbGQpO1xuXG4gICAgICAvL2FkZCBjaGlsZHJlbiBwdWJsaXNoIGFkZHJlc3NcbiAgICAgIGxldCBjaGlsZHJlbkZvcndhcmQgPSBidXMuYWRkUHVibGlzaChjaGlsZElkKTtcbiAgICAgIF90aGlzLl9jaGlsZHJlbkxpc3RlbmVycy5wdXNoKGNoaWxkcmVuRm9yd2FyZCk7XG5cbiAgICAgIC8vYWRkIHNlbGYgZm9yd2FyZCBpZiBhbiBvYnNlcnZlclxuICAgICAgaWYgKCFpc1JlcG9ydGVyKSB7XG4gICAgICAgIGxldCBzZWxmRm9yd2FyZCA9IGJ1cy5hZGRGb3J3YXJkKGNoaWxkSWQsIG93bmVyKTtcbiAgICAgICAgX3RoaXMuX2NoaWxkcmVuTGlzdGVuZXJzLnB1c2goc2VsZkZvcndhcmQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgX3JlbGVhc2VMaXN0ZW5lcnMoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIF90aGlzLl9kZWxldGVMaXN0ZW5lci5yZW1vdmUoKTtcblxuICAgIF90aGlzLl9jaGFuZ2VMaXN0ZW5lci5yZW1vdmUoKTtcblxuICAgIF90aGlzLl9jaGlsZHJlbkxpc3RlbmVycy5mb3JFYWNoKChmb3J3YXJkKSA9PiB7XG4gICAgICBmb3J3YXJkLnJlbW92ZSgpO1xuICAgIH0pO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3Vic2NyaXB0aW9uO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9zeW5jaGVyL1N1YnNjcmlwdGlvbi5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFDQTtBQUNBO0FBREE7QUFDQTs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///212\n")},function(e,n,c){c(214),e.exports=c(416)},function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(global) {\n\n__webpack_require__(215);\n\n__webpack_require__(412);\n\n__webpack_require__(413);\n\nif (global._babelPolyfill) {\n throw new Error("only one instance of babel-polyfill is allowed");\n}\nglobal._babelPolyfill = true;\n\nvar DEFINE_PROPERTY = "defineProperty";\nfunction define(O, key, value) {\n O[key] || Object[DEFINE_PROPERTY](O, key, {\n writable: true,\n configurable: true,\n value: value\n });\n}\n\ndefine(String.prototype, "padLeft", "".padStart);\ndefine(String.prototype, "padRight", "".padEnd);\n\n"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach(function (key) {\n [][key] && define(Array, key, Function.call.bind([][key]));\n});\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(147)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXBvbHlmaWxsL2xpYi9pbmRleC5qcz84ZjU4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5yZXF1aXJlKFwiY29yZS1qcy9zaGltXCIpO1xuXG5yZXF1aXJlKFwicmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lXCIpO1xuXG5yZXF1aXJlKFwiY29yZS1qcy9mbi9yZWdleHAvZXNjYXBlXCIpO1xuXG5pZiAoZ2xvYmFsLl9iYWJlbFBvbHlmaWxsKSB7XG4gIHRocm93IG5ldyBFcnJvcihcIm9ubHkgb25lIGluc3RhbmNlIG9mIGJhYmVsLXBvbHlmaWxsIGlzIGFsbG93ZWRcIik7XG59XG5nbG9iYWwuX2JhYmVsUG9seWZpbGwgPSB0cnVlO1xuXG52YXIgREVGSU5FX1BST1BFUlRZID0gXCJkZWZpbmVQcm9wZXJ0eVwiO1xuZnVuY3Rpb24gZGVmaW5lKE8sIGtleSwgdmFsdWUpIHtcbiAgT1trZXldIHx8IE9iamVjdFtERUZJTkVfUFJPUEVSVFldKE8sIGtleSwge1xuICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfSk7XG59XG5cbmRlZmluZShTdHJpbmcucHJvdG90eXBlLCBcInBhZExlZnRcIiwgXCJcIi5wYWRTdGFydCk7XG5kZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgXCJwYWRSaWdodFwiLCBcIlwiLnBhZEVuZCk7XG5cblwicG9wLHJldmVyc2Usc2hpZnQsa2V5cyx2YWx1ZXMsZW50cmllcyxpbmRleE9mLGV2ZXJ5LHNvbWUsZm9yRWFjaCxtYXAsZmlsdGVyLGZpbmQsZmluZEluZGV4LGluY2x1ZGVzLGpvaW4sc2xpY2UsY29uY2F0LHB1c2gsc3BsaWNlLHVuc2hpZnQsc29ydCxsYXN0SW5kZXhPZixyZWR1Y2UscmVkdWNlUmlnaHQsY29weVdpdGhpbixmaWxsXCIuc3BsaXQoXCIsXCIpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBbXVtrZXldICYmIGRlZmluZShBcnJheSwga2V5LCBGdW5jdGlvbi5jYWxsLmJpbmQoW11ba2V5XSkpO1xufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcG9seWZpbGwvbGliL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///214\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(216);\n__webpack_require__(218);\n__webpack_require__(219);\n__webpack_require__(220);\n__webpack_require__(221);\n__webpack_require__(222);\n__webpack_require__(223);\n__webpack_require__(224);\n__webpack_require__(225);\n__webpack_require__(226);\n__webpack_require__(227);\n__webpack_require__(228);\n__webpack_require__(229);\n__webpack_require__(230);\n__webpack_require__(231);\n__webpack_require__(232);\n__webpack_require__(234);\n__webpack_require__(235);\n__webpack_require__(236);\n__webpack_require__(237);\n__webpack_require__(238);\n__webpack_require__(239);\n__webpack_require__(240);\n__webpack_require__(241);\n__webpack_require__(242);\n__webpack_require__(243);\n__webpack_require__(244);\n__webpack_require__(245);\n__webpack_require__(246);\n__webpack_require__(247);\n__webpack_require__(248);\n__webpack_require__(249);\n__webpack_require__(250);\n__webpack_require__(251);\n__webpack_require__(252);\n__webpack_require__(253);\n__webpack_require__(254);\n__webpack_require__(255);\n__webpack_require__(256);\n__webpack_require__(257);\n__webpack_require__(258);\n__webpack_require__(259);\n__webpack_require__(260);\n__webpack_require__(261);\n__webpack_require__(262);\n__webpack_require__(263);\n__webpack_require__(264);\n__webpack_require__(265);\n__webpack_require__(266);\n__webpack_require__(267);\n__webpack_require__(268);\n__webpack_require__(269);\n__webpack_require__(270);\n__webpack_require__(271);\n__webpack_require__(272);\n__webpack_require__(273);\n__webpack_require__(274);\n__webpack_require__(275);\n__webpack_require__(276);\n__webpack_require__(277);\n__webpack_require__(278);\n__webpack_require__(279);\n__webpack_require__(280);\n__webpack_require__(281);\n__webpack_require__(282);\n__webpack_require__(283);\n__webpack_require__(284);\n__webpack_require__(285);\n__webpack_require__(286);\n__webpack_require__(287);\n__webpack_require__(288);\n__webpack_require__(289);\n__webpack_require__(290);\n__webpack_require__(291);\n__webpack_require__(292);\n__webpack_require__(293);\n__webpack_require__(294);\n__webpack_require__(296);\n__webpack_require__(297);\n__webpack_require__(299);\n__webpack_require__(300);\n__webpack_require__(301);\n__webpack_require__(302);\n__webpack_require__(303);\n__webpack_require__(304);\n__webpack_require__(305);\n__webpack_require__(307);\n__webpack_require__(308);\n__webpack_require__(309);\n__webpack_require__(310);\n__webpack_require__(311);\n__webpack_require__(312);\n__webpack_require__(313);\n__webpack_require__(314);\n__webpack_require__(315);\n__webpack_require__(316);\n__webpack_require__(317);\n__webpack_require__(318);\n__webpack_require__(319);\n__webpack_require__(123);\n__webpack_require__(320);\n__webpack_require__(321);\n__webpack_require__(166);\n__webpack_require__(322);\n__webpack_require__(323);\n__webpack_require__(324);\n__webpack_require__(325);\n__webpack_require__(326);\n__webpack_require__(169);\n__webpack_require__(171);\n__webpack_require__(172);\n__webpack_require__(327);\n__webpack_require__(328);\n__webpack_require__(329);\n__webpack_require__(330);\n__webpack_require__(331);\n__webpack_require__(332);\n__webpack_require__(333);\n__webpack_require__(334);\n__webpack_require__(335);\n__webpack_require__(336);\n__webpack_require__(337);\n__webpack_require__(338);\n__webpack_require__(339);\n__webpack_require__(340);\n__webpack_require__(341);\n__webpack_require__(342);\n__webpack_require__(343);\n__webpack_require__(344);\n__webpack_require__(345);\n__webpack_require__(346);\n__webpack_require__(347);\n__webpack_require__(348);\n__webpack_require__(349);\n__webpack_require__(350);\n__webpack_require__(351);\n__webpack_require__(352);\n__webpack_require__(353);\n__webpack_require__(354);\n__webpack_require__(355);\n__webpack_require__(356);\n__webpack_require__(357);\n__webpack_require__(358);\n__webpack_require__(359);\n__webpack_require__(360);\n__webpack_require__(361);\n__webpack_require__(362);\n__webpack_require__(363);\n__webpack_require__(364);\n__webpack_require__(365);\n__webpack_require__(366);\n__webpack_require__(367);\n__webpack_require__(368);\n__webpack_require__(369);\n__webpack_require__(370);\n__webpack_require__(371);\n__webpack_require__(372);\n__webpack_require__(373);\n__webpack_require__(374);\n__webpack_require__(375);\n__webpack_require__(376);\n__webpack_require__(377);\n__webpack_require__(378);\n__webpack_require__(379);\n__webpack_require__(380);\n__webpack_require__(381);\n__webpack_require__(382);\n__webpack_require__(383);\n__webpack_require__(384);\n__webpack_require__(385);\n__webpack_require__(386);\n__webpack_require__(387);\n__webpack_require__(388);\n__webpack_require__(389);\n__webpack_require__(390);\n__webpack_require__(391);\n__webpack_require__(392);\n__webpack_require__(393);\n__webpack_require__(394);\n__webpack_require__(395);\n__webpack_require__(396);\n__webpack_require__(397);\n__webpack_require__(398);\n__webpack_require__(399);\n__webpack_require__(400);\n__webpack_require__(401);\n__webpack_require__(402);\n__webpack_require__(403);\n__webpack_require__(404);\n__webpack_require__(405);\n__webpack_require__(406);\n__webpack_require__(407);\n__webpack_require__(408);\n__webpack_require__(409);\n__webpack_require__(410);\n__webpack_require__(411);\nmodule.exports = __webpack_require__(27);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvc2hpbS5qcz9lMGNkIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3ltYm9sJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnRpZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LXByb3RvdHlwZS1vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZnJlZXplJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5zZWFsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5wcmV2ZW50LWV4dGVuc2lvbnMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmlzLWZyb3plbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuaXMtc2VhbGVkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5pcy1leHRlbnNpYmxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmlzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZnVuY3Rpb24uYmluZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5mdW5jdGlvbi5uYW1lJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmhhcy1pbnN0YW5jZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5wYXJzZS1pbnQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucGFyc2UtZmxvYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmNvbnN0cnVjdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci50by1maXhlZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIudG8tcHJlY2lzaW9uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5lcHNpbG9uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5pcy1maW5pdGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmlzLW5hbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIuaXMtc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5tYXgtc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5taW4tc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5wYXJzZS1mbG9hdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIucGFyc2UtaW50Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguYWNvc2gnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5hc2luaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmF0YW5oJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguY2JydCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmNsejMyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguY29zaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmV4cG0xJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguZnJvdW5kJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguaHlwb3QnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5pbXVsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGgubG9nMTAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5sb2cxcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmxvZzInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5zaWduJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguc2luaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLnRhbmgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC50cnVuYycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuZnJvbS1jb2RlLXBvaW50Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5yYXcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnRyaW0nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5jb2RlLXBvaW50LWF0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5lbmRzLXdpdGgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmluY2x1ZGVzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5yZXBlYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnN0YXJ0cy13aXRoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5hbmNob3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmJpZycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuYmxpbmsnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmJvbGQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmZpeGVkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5mb250Y29sb3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRzaXplJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5pdGFsaWNzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5saW5rJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5zbWFsbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuc3RyaWtlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5zdWInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnN1cCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5kYXRlLm5vdycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5kYXRlLnRvLWpzb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZGF0ZS50by1pc28tc3RyaW5nJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmRhdGUudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmRhdGUudG8tcHJpbWl0aXZlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmlzLWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZyb20nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkub2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuam9pbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5zbGljZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5zb3J0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZvci1lYWNoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5Lm1hcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5maWx0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuc29tZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5ldmVyeScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5yZWR1Y2UnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlLXJpZ2h0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmluZGV4LW9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5Lmxhc3QtaW5kZXgtb2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuY29weS13aXRoaW4nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuZmlsbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5maW5kJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZpbmQtaW5kZXgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuc3BlY2llcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAuY29uc3RydWN0b3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAuZmxhZ3MnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLm1hdGNoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC5yZXBsYWNlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC5zZWFyY2gnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLnNwbGl0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnByb21pc2UnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWFwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi53ZWFrLW1hcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi53ZWFrLXNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5hcnJheS1idWZmZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuZGF0YS12aWV3Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmludDgtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDgtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDgtY2xhbXBlZC1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5pbnQxNi1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC51aW50MTYtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuaW50MzItYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDMyLWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmZsb2F0MzItYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuZmxvYXQ2NC1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmFwcGx5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuY29uc3RydWN0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZGVsZXRlLXByb3BlcnR5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZW51bWVyYXRlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0LXByb3RvdHlwZS1vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmhhcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmlzLWV4dGVuc2libGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5vd24ta2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnByZXZlbnQtZXh0ZW5zaW9ucycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuYXJyYXkuaW5jbHVkZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuYXJyYXkuZmxhdC1tYXAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuYXJyYXkuZmxhdHRlbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcuYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3RyaW5nLnBhZC1zdGFydCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcucGFkLWVuZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcudHJpbS1sZWZ0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN0cmluZy50cmltLXJpZ2h0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN0cmluZy5tYXRjaC1hbGwnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC52YWx1ZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0LmVudHJpZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1nZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1zZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1nZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1zZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWFwLnRvLWpzb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc2V0LnRvLWpzb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWFwLm9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnNldC5vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy53ZWFrLW1hcC5vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy53ZWFrLXNldC5vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXAuZnJvbScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zZXQuZnJvbScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy53ZWFrLW1hcC5mcm9tJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LndlYWstc2V0LmZyb20nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuZ2xvYmFsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN5c3RlbS5nbG9iYWwnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuZXJyb3IuaXMtZXJyb3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5jbGFtcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmRlZy1wZXItcmFkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguZGVncmVlcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmZzY2FsZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmlhZGRoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguaXN1YmgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5pbXVsaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLnJhZC1wZXItZGVnJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGgucmFkaWFucycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLnNjYWxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGgudW11bGgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5zaWduYml0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmRlZmluZS1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmRlbGV0ZS1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1tZXRhZGF0YS1rZXlzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW93bi1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1vd24tbWV0YWRhdGEta2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1vd24tbWV0YWRhdGEnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucmVmbGVjdC5tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5hc2FwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9ic2VydmFibGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy93ZWIudGltZXJzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvd2ViLmltbWVkaWF0ZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9tb2R1bGVzL19jb3JlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL3NoaW0uanNcbi8vIG1vZHVsZSBpZCA9IDIxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///215\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(4);\nvar has = __webpack_require__(23);\nvar DESCRIPTORS = __webpack_require__(12);\nvar $export = __webpack_require__(0);\nvar redefine = __webpack_require__(19);\nvar META = __webpack_require__(43).KEY;\nvar $fails = __webpack_require__(5);\nvar shared = __webpack_require__(80);\nvar setToStringTag = __webpack_require__(61);\nvar uid = __webpack_require__(49);\nvar wks = __webpack_require__(9);\nvar wksExt = __webpack_require__(149);\nvar wksDefine = __webpack_require__(103);\nvar enumKeys = __webpack_require__(217);\nvar isArray = __webpack_require__(83);\nvar anObject = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\nvar toIObject = __webpack_require__(24);\nvar toPrimitive = __webpack_require__(31);\nvar createDesc = __webpack_require__(48);\nvar _create = __webpack_require__(52);\nvar gOPNExt = __webpack_require__(152);\nvar $GOPD = __webpack_require__(25);\nvar $DP = __webpack_require__(13);\nvar $keys = __webpack_require__(50);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(53).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(71).f = $propertyIsEnumerable;\n __webpack_require__(82).f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(44)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(18)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3ltYm9sLmpzPzAzNDkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gRUNNQVNjcmlwdCA2IHN5bWJvbHMgc2hpbVxudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIE1FVEEgPSByZXF1aXJlKCcuL19tZXRhJykuS0VZO1xudmFyICRmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIHdrcyA9IHJlcXVpcmUoJy4vX3drcycpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciB3a3NEZWZpbmUgPSByZXF1aXJlKCcuL193a3MtZGVmaW5lJyk7XG52YXIgZW51bUtleXMgPSByZXF1aXJlKCcuL19lbnVtLWtleXMnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBfY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIGdPUE5FeHQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbi1leHQnKTtcbnZhciAkR09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgJERQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUEQgPSAkR09QRC5mO1xudmFyIGRQID0gJERQLmY7XG52YXIgZ09QTiA9IGdPUE5FeHQuZjtcbnZhciAkU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciAkSlNPTiA9IGdsb2JhbC5KU09OO1xudmFyIF9zdHJpbmdpZnkgPSAkSlNPTiAmJiAkSlNPTi5zdHJpbmdpZnk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgSElEREVOID0gd2tzKCdfaGlkZGVuJyk7XG52YXIgVE9fUFJJTUlUSVZFID0gd2tzKCd0b1ByaW1pdGl2ZScpO1xudmFyIGlzRW51bSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIFN5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzeW1ib2wtcmVnaXN0cnknKTtcbnZhciBBbGxTeW1ib2xzID0gc2hhcmVkKCdzeW1ib2xzJyk7XG52YXIgT1BTeW1ib2xzID0gc2hhcmVkKCdvcC1zeW1ib2xzJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3RbUFJPVE9UWVBFXTtcbnZhciBVU0VfTkFUSVZFID0gdHlwZW9mICRTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcbnZhciBRT2JqZWN0ID0gZ2xvYmFsLlFPYmplY3Q7XG4vLyBEb24ndCB1c2Ugc2V0dGVycyBpbiBRdCBTY3JpcHQsIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xNzNcbnZhciBzZXR0ZXIgPSAhUU9iamVjdCB8fCAhUU9iamVjdFtQUk9UT1RZUEVdIHx8ICFRT2JqZWN0W1BST1RPVFlQRV0uZmluZENoaWxkO1xuXG4vLyBmYWxsYmFjayBmb3Igb2xkIEFuZHJvaWQsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD02ODdcbnZhciBzZXRTeW1ib2xEZXNjID0gREVTQ1JJUFRPUlMgJiYgJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIF9jcmVhdGUoZFAoe30sICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZFAodGhpcywgJ2EnLCB7IHZhbHVlOiA3IH0pLmE7IH1cbiAgfSkpLmEgIT0gNztcbn0pID8gZnVuY3Rpb24gKGl0LCBrZXksIEQpIHtcbiAgdmFyIHByb3RvRGVzYyA9IGdPUEQoT2JqZWN0UHJvdG8sIGtleSk7XG4gIGlmIChwcm90b0Rlc2MpIGRlbGV0ZSBPYmplY3RQcm90b1trZXldO1xuICBkUChpdCwga2V5LCBEKTtcbiAgaWYgKHByb3RvRGVzYyAmJiBpdCAhPT0gT2JqZWN0UHJvdG8pIGRQKE9iamVjdFByb3RvLCBrZXksIHByb3RvRGVzYyk7XG59IDogZFA7XG5cbnZhciB3cmFwID0gZnVuY3Rpb24gKHRhZykge1xuICB2YXIgc3ltID0gQWxsU3ltYm9sc1t0YWddID0gX2NyZWF0ZSgkU3ltYm9sW1BST1RPVFlQRV0pO1xuICBzeW0uX2sgPSB0YWc7XG4gIHJldHVybiBzeW07XG59O1xuXG52YXIgaXNTeW1ib2wgPSBVU0VfTkFUSVZFICYmIHR5cGVvZiAkU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCc7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCBpbnN0YW5jZW9mICRTeW1ib2w7XG59O1xuXG52YXIgJGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgRCkge1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvKSAkZGVmaW5lUHJvcGVydHkoT1BTeW1ib2xzLCBrZXksIEQpO1xuICBhbk9iamVjdChpdCk7XG4gIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEQpO1xuICBpZiAoaGFzKEFsbFN5bWJvbHMsIGtleSkpIHtcbiAgICBpZiAoIUQuZW51bWVyYWJsZSkge1xuICAgICAgaWYgKCFoYXMoaXQsIEhJRERFTikpIGRQKGl0LCBISURERU4sIGNyZWF0ZURlc2MoMSwge30pKTtcbiAgICAgIGl0W0hJRERFTl1ba2V5XSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSBpdFtISURERU5dW2tleV0gPSBmYWxzZTtcbiAgICAgIEQgPSBfY3JlYXRlKEQsIHsgZW51bWVyYWJsZTogY3JlYXRlRGVzYygwLCBmYWxzZSkgfSk7XG4gICAgfSByZXR1cm4gc2V0U3ltYm9sRGVzYyhpdCwga2V5LCBEKTtcbiAgfSByZXR1cm4gZFAoaXQsIGtleSwgRCk7XG59O1xudmFyICRkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhpdCwgUCkge1xuICBhbk9iamVjdChpdCk7XG4gIHZhciBrZXlzID0gZW51bUtleXMoUCA9IHRvSU9iamVjdChQKSk7XG4gIHZhciBpID0gMDtcbiAgdmFyIGwgPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGwgPiBpKSAkZGVmaW5lUHJvcGVydHkoaXQsIGtleSA9IGtleXNbaSsrXSwgUFtrZXldKTtcbiAgcmV0dXJuIGl0O1xufTtcbnZhciAkY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGl0LCBQKSB7XG4gIHJldHVybiBQID09PSB1bmRlZmluZWQgPyBfY3JlYXRlKGl0KSA6ICRkZWZpbmVQcm9wZXJ0aWVzKF9jcmVhdGUoaXQpLCBQKTtcbn07XG52YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoa2V5KSB7XG4gIHZhciBFID0gaXNFbnVtLmNhbGwodGhpcywga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSk7XG4gIGlmICh0aGlzID09PSBPYmplY3RQcm90byAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhaGFzKE9QU3ltYm9scywga2V5KSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gRSB8fCAhaGFzKHRoaXMsIGtleSkgfHwgIWhhcyhBbGxTeW1ib2xzLCBrZXkpIHx8IGhhcyh0aGlzLCBISURERU4pICYmIHRoaXNbSElEREVOXVtrZXldID8gRSA6IHRydWU7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICBpdCA9IHRvSU9iamVjdChpdCk7XG4gIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7XG4gIGlmIChpdCA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybjtcbiAgdmFyIEQgPSBnT1BEKGl0LCBrZXkpO1xuICBpZiAoRCAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pKSBELmVudW1lcmFibGUgPSB0cnVlO1xuICByZXR1cm4gRDtcbn07XG52YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHZhciBuYW1lcyA9IGdPUE4odG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmICghaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIGtleSAhPSBISURERU4gJiYga2V5ICE9IE1FVEEpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG52YXIgJGdldE93blByb3BlcnR5U3ltYm9scyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5U3ltYm9scyhpdCkge1xuICB2YXIgSVNfT1AgPSBpdCA9PT0gT2JqZWN0UHJvdG87XG4gIHZhciBuYW1lcyA9IGdPUE4oSVNfT1AgPyBPUFN5bWJvbHMgOiB0b0lPYmplY3QoaXQpKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgaSA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSB7XG4gICAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiAoSVNfT1AgPyBoYXMoT2JqZWN0UHJvdG8sIGtleSkgOiB0cnVlKSkgcmVzdWx0LnB1c2goQWxsU3ltYm9sc1trZXldKTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gMTkuNC4xLjEgU3ltYm9sKFtkZXNjcmlwdGlvbl0pXG5pZiAoIVVTRV9OQVRJVkUpIHtcbiAgJFN5bWJvbCA9IGZ1bmN0aW9uIFN5bWJvbCgpIHtcbiAgICBpZiAodGhpcyBpbnN0YW5jZW9mICRTeW1ib2wpIHRocm93IFR5cGVFcnJvcignU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIScpO1xuICAgIHZhciB0YWcgPSB1aWQoYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpO1xuICAgIHZhciAkc2V0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8pICRzZXQuY2FsbChPUFN5bWJvbHMsIHZhbHVlKTtcbiAgICAgIGlmIChoYXModGhpcywgSElEREVOKSAmJiBoYXModGhpc1tISURERU5dLCB0YWcpKSB0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuICAgICAgc2V0U3ltYm9sRGVzYyh0aGlzLCB0YWcsIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbiAgICB9O1xuICAgIGlmIChERVNDUklQVE9SUyAmJiBzZXR0ZXIpIHNldFN5bWJvbERlc2MoT2JqZWN0UHJvdG8sIHRhZywgeyBjb25maWd1cmFibGU6IHRydWUsIHNldDogJHNldCB9KTtcbiAgICByZXR1cm4gd3JhcCh0YWcpO1xuICB9O1xuICByZWRlZmluZSgkU3ltYm9sW1BST1RPVFlQRV0sICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9rO1xuICB9KTtcblxuICAkR09QRC5mID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgJERQLmYgPSAkZGVmaW5lUHJvcGVydHk7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZiA9IGdPUE5FeHQuZiA9ICRnZXRPd25Qcm9wZXJ0eU5hbWVzO1xuICByZXF1aXJlKCcuL19vYmplY3QtcGllJykuZiA9ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKS5mID0gJGdldE93blByb3BlcnR5U3ltYm9scztcblxuICBpZiAoREVTQ1JJUFRPUlMgJiYgIXJlcXVpcmUoJy4vX2xpYnJhcnknKSkge1xuICAgIHJlZGVmaW5lKE9iamVjdFByb3RvLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAkcHJvcGVydHlJc0VudW1lcmFibGUsIHRydWUpO1xuICB9XG5cbiAgd2tzRXh0LmYgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHJldHVybiB3cmFwKHdrcyhuYW1lKSk7XG4gIH07XG59XG5cbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIHsgU3ltYm9sOiAkU3ltYm9sIH0pO1xuXG5mb3IgKHZhciBlczZTeW1ib2xzID0gKFxuICAvLyAxOS40LjIuMiwgMTkuNC4yLjMsIDE5LjQuMi40LCAxOS40LjIuNiwgMTkuNC4yLjgsIDE5LjQuMi45LCAxOS40LjIuMTAsIDE5LjQuMi4xMSwgMTkuNC4yLjEyLCAxOS40LjIuMTMsIDE5LjQuMi4xNFxuICAnaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxlLGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLHNwZWNpZXMsc3BsaXQsdG9QcmltaXRpdmUsdG9TdHJpbmdUYWcsdW5zY29wYWJsZXMnXG4pLnNwbGl0KCcsJyksIGogPSAwOyBlczZTeW1ib2xzLmxlbmd0aCA+IGo7KXdrcyhlczZTeW1ib2xzW2orK10pO1xuXG5mb3IgKHZhciB3ZWxsS25vd25TeW1ib2xzID0gJGtleXMod2tzLnN0b3JlKSwgayA9IDA7IHdlbGxLbm93blN5bWJvbHMubGVuZ3RoID4gazspIHdrc0RlZmluZSh3ZWxsS25vd25TeW1ib2xzW2srK10pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnU3ltYm9sJywge1xuICAvLyAxOS40LjIuMSBTeW1ib2wuZm9yKGtleSlcbiAgJ2Zvcic6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gaGFzKFN5bWJvbFJlZ2lzdHJ5LCBrZXkgKz0gJycpXG4gICAgICA/IFN5bWJvbFJlZ2lzdHJ5W2tleV1cbiAgICAgIDogU3ltYm9sUmVnaXN0cnlba2V5XSA9ICRTeW1ib2woa2V5KTtcbiAgfSxcbiAgLy8gMTkuNC4yLjUgU3ltYm9sLmtleUZvcihzeW0pXG4gIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKHN5bSkge1xuICAgIGlmICghaXNTeW1ib2woc3ltKSkgdGhyb3cgVHlwZUVycm9yKHN5bSArICcgaXMgbm90IGEgc3ltYm9sIScpO1xuICAgIGZvciAodmFyIGtleSBpbiBTeW1ib2xSZWdpc3RyeSkgaWYgKFN5bWJvbFJlZ2lzdHJ5W2tleV0gPT09IHN5bSkgcmV0dXJuIGtleTtcbiAgfSxcbiAgdXNlU2V0dGVyOiBmdW5jdGlvbiAoKSB7IHNldHRlciA9IHRydWU7IH0sXG4gIHVzZVNpbXBsZTogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSBmYWxzZTsgfVxufSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdPYmplY3QnLCB7XG4gIC8vIDE5LjEuMi4yIE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbiAgY3JlYXRlOiAkY3JlYXRlLFxuICAvLyAxOS4xLjIuNCBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiAgZGVmaW5lUHJvcGVydHk6ICRkZWZpbmVQcm9wZXJ0eSxcbiAgLy8gMTkuMS4yLjMgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcylcbiAgZGVmaW5lUHJvcGVydGllczogJGRlZmluZVByb3BlcnRpZXMsXG4gIC8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuICAvLyAxOS4xLjIuNyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxuICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiAkZ2V0T3duUHJvcGVydHlOYW1lcyxcbiAgLy8gMTkuMS4yLjggT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhPKVxuICBnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHNcbn0pO1xuXG4vLyAyNC4zLjIgSlNPTi5zdHJpbmdpZnkodmFsdWUgWywgcmVwbGFjZXIgWywgc3BhY2VdXSlcbiRKU09OICYmICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKCFVU0VfTkFUSVZFIHx8ICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBTID0gJFN5bWJvbCgpO1xuICAvLyBNUyBFZGdlIGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyB7fVxuICAvLyBXZWJLaXQgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIG51bGxcbiAgLy8gVjggdGhyb3dzIG9uIGJveGVkIHN5bWJvbHNcbiAgcmV0dXJuIF9zdHJpbmdpZnkoW1NdKSAhPSAnW251bGxdJyB8fCBfc3RyaW5naWZ5KHsgYTogUyB9KSAhPSAne30nIHx8IF9zdHJpbmdpZnkoT2JqZWN0KFMpKSAhPSAne30nO1xufSkpLCAnSlNPTicsIHtcbiAgc3RyaW5naWZ5OiBmdW5jdGlvbiBzdHJpbmdpZnkoaXQpIHtcbiAgICB2YXIgYXJncyA9IFtpdF07XG4gICAgdmFyIGkgPSAxO1xuICAgIHZhciByZXBsYWNlciwgJHJlcGxhY2VyO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICAkcmVwbGFjZXIgPSByZXBsYWNlciA9IGFyZ3NbMV07XG4gICAgaWYgKCFpc09iamVjdChyZXBsYWNlcikgJiYgaXQgPT09IHVuZGVmaW5lZCB8fCBpc1N5bWJvbChpdCkpIHJldHVybjsgLy8gSUU4IHJldHVybnMgc3RyaW5nIG9uIHVuZGVmaW5lZFxuICAgIGlmICghaXNBcnJheShyZXBsYWNlcikpIHJlcGxhY2VyID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgJHJlcGxhY2VyID09ICdmdW5jdGlvbicpIHZhbHVlID0gJHJlcGxhY2VyLmNhbGwodGhpcywga2V5LCB2YWx1ZSk7XG4gICAgICBpZiAoIWlzU3ltYm9sKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gICAgYXJnc1sxXSA9IHJlcGxhY2VyO1xuICAgIHJldHVybiBfc3RyaW5naWZ5LmFwcGx5KCRKU09OLCBhcmdzKTtcbiAgfVxufSk7XG5cbi8vIDE5LjQuMy40IFN5bWJvbC5wcm90b3R5cGVbQEB0b1ByaW1pdGl2ZV0oaGludClcbiRTeW1ib2xbUFJPVE9UWVBFXVtUT19QUklNSVRJVkVdIHx8IHJlcXVpcmUoJy4vX2hpZGUnKSgkU3ltYm9sW1BST1RPVFlQRV0sIFRPX1BSSU1JVElWRSwgJFN5bWJvbFtQUk9UT1RZUEVdLnZhbHVlT2YpO1xuLy8gMTkuNC4zLjUgU3ltYm9sLnByb3RvdHlwZVtAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoJFN5bWJvbCwgJ1N5bWJvbCcpO1xuLy8gMjAuMi4xLjkgTWF0aFtAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoTWF0aCwgJ01hdGgnLCB0cnVlKTtcbi8vIDI0LjMuMyBKU09OW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZyhnbG9iYWwuSlNPTiwgJ0pTT04nLCB0cnVlKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSAyMTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///216\n")},function(module,exports,__webpack_require__){eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(50);\nvar gOPS = __webpack_require__(82);\nvar pIE = __webpack_require__(71);\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZW51bS1rZXlzLmpzPzBiZTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gYWxsIGVudW1lcmFibGUgb2JqZWN0IGtleXMsIGluY2x1ZGVzIHN5bWJvbHNcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgcmVzdWx0ID0gZ2V0S2V5cyhpdCk7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICBpZiAoZ2V0U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gZ2V0U3ltYm9scyhpdCk7XG4gICAgdmFyIGlzRW51bSA9IHBJRS5mO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChzeW1ib2xzLmxlbmd0aCA+IGkpIGlmIChpc0VudW0uY2FsbChpdCwga2V5ID0gc3ltYm9sc1tpKytdKSkgcmVzdWx0LnB1c2goa2V5KTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZW51bS1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///217\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(52) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZS5qcz84YmFmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBjcmVhdGU6IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///218\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(12), 'Object', { defineProperty: __webpack_require__(13).f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eS5qcz80MzMyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuNCAvIDE1LjIuMy42IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSwgJ09iamVjdCcsIHsgZGVmaW5lUHJvcGVydHk6IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDIxOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///219\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !__webpack_require__(12), 'Object', { defineProperties: __webpack_require__(151) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0aWVzLmpzPzFlMTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi4zIC8gMTUuMi4zLjcgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnRpZXM6IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0aWVzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///220\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(24);\nvar $getOwnPropertyDescriptor = __webpack_require__(25).f;\n\n__webpack_require__(34)('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcz8wYmVlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRvSU9iamVjdChpdCksIGtleSk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1xuLy8gbW9kdWxlIGlkID0gMjIxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///221\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(15);\nvar $getPrototypeOf = __webpack_require__(26);\n\n__webpack_require__(34)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YuanM/NWI4NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyICRnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRQcm90b3R5cGVPZicsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mKGl0KSB7XG4gICAgcmV0dXJuICRnZXRQcm90b3R5cGVPZih0b09iamVjdChpdCkpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSAyMjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///222\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(15);\nvar $keys = __webpack_require__(50);\n\n__webpack_require__(34)('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmtleXMuanM/YjQ5YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMTQgT2JqZWN0LmtleXMoTylcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdrZXlzJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZnVuY3Rpb24ga2V5cyhpdCkge1xuICAgIHJldHVybiAka2V5cyh0b09iamVjdChpdCkpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///223\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.7 Object.getOwnPropertyNames(O)\n__webpack_require__(34)('getOwnPropertyNames', function () {\n return __webpack_require__(152).f;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjI0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktbmFtZXMuanM/NzgyZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuNyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4tZXh0JykuZjtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qc1xuLy8gbW9kdWxlIGlkID0gMjI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///224\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.5 Object.freeze(O)\nvar isObject = __webpack_require__(6);\nvar meta = __webpack_require__(43).onFreeze;\n\n__webpack_require__(34)('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjI1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmZyZWV6ZS5qcz81NTM5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi41IE9iamVjdC5mcmVlemUoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG1ldGEgPSByZXF1aXJlKCcuL19tZXRhJykub25GcmVlemU7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnZnJlZXplJywgZnVuY3Rpb24gKCRmcmVlemUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZyZWV6ZShpdCkge1xuICAgIHJldHVybiAkZnJlZXplICYmIGlzT2JqZWN0KGl0KSA/ICRmcmVlemUobWV0YShpdCkpIDogaXQ7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmZyZWV6ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///225\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.17 Object.seal(O)\nvar isObject = __webpack_require__(6);\nvar meta = __webpack_require__(43).onFreeze;\n\n__webpack_require__(34)('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjI2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LnNlYWwuanM/NWJmMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMTcgT2JqZWN0LnNlYWwoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG1ldGEgPSByZXF1aXJlKCcuL19tZXRhJykub25GcmVlemU7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnc2VhbCcsIGZ1bmN0aW9uICgkc2VhbCkge1xuICByZXR1cm4gZnVuY3Rpb24gc2VhbChpdCkge1xuICAgIHJldHVybiAkc2VhbCAmJiBpc09iamVjdChpdCkgPyAkc2VhbChtZXRhKGl0KSkgOiBpdDtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3Quc2VhbC5qc1xuLy8gbW9kdWxlIGlkID0gMjI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///226\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = __webpack_require__(6);\nvar meta = __webpack_require__(43).onFreeze;\n\n__webpack_require__(34)('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjI3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LnByZXZlbnQtZXh0ZW5zaW9ucy5qcz82Mzk3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNSBPYmplY3QucHJldmVudEV4dGVuc2lvbnMoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG1ldGEgPSByZXF1aXJlKCcuL19tZXRhJykub25GcmVlemU7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgncHJldmVudEV4dGVuc2lvbnMnLCBmdW5jdGlvbiAoJHByZXZlbnRFeHRlbnNpb25zKSB7XG4gIHJldHVybiBmdW5jdGlvbiBwcmV2ZW50RXh0ZW5zaW9ucyhpdCkge1xuICAgIHJldHVybiAkcHJldmVudEV4dGVuc2lvbnMgJiYgaXNPYmplY3QoaXQpID8gJHByZXZlbnRFeHRlbnNpb25zKG1ldGEoaXQpKSA6IGl0O1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5wcmV2ZW50LWV4dGVuc2lvbnMuanNcbi8vIG1vZHVsZSBpZCA9IDIyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///227\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.12 Object.isFrozen(O)\nvar isObject = __webpack_require__(6);\n\n__webpack_require__(34)('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjI4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLWZyb3plbi5qcz81YTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xMiBPYmplY3QuaXNGcm96ZW4oTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2lzRnJvemVuJywgZnVuY3Rpb24gKCRpc0Zyb3plbikge1xuICByZXR1cm4gZnVuY3Rpb24gaXNGcm96ZW4oaXQpIHtcbiAgICByZXR1cm4gaXNPYmplY3QoaXQpID8gJGlzRnJvemVuID8gJGlzRnJvemVuKGl0KSA6IGZhbHNlIDogdHJ1ZTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMtZnJvemVuLmpzXG4vLyBtb2R1bGUgaWQgPSAyMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///228\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.13 Object.isSealed(O)\nvar isObject = __webpack_require__(6);\n\n__webpack_require__(34)('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjI5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLXNlYWxlZC5qcz9mYjI4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xMyBPYmplY3QuaXNTZWFsZWQoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2lzU2VhbGVkJywgZnVuY3Rpb24gKCRpc1NlYWxlZCkge1xuICByZXR1cm4gZnVuY3Rpb24gaXNTZWFsZWQoaXQpIHtcbiAgICByZXR1cm4gaXNPYmplY3QoaXQpID8gJGlzU2VhbGVkID8gJGlzU2VhbGVkKGl0KSA6IGZhbHNlIDogdHJ1ZTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMtc2VhbGVkLmpzXG4vLyBtb2R1bGUgaWQgPSAyMjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///229\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.11 Object.isExtensible(O)\nvar isObject = __webpack_require__(6);\n\n__webpack_require__(34)('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLWV4dGVuc2libGUuanM/ODBmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMTEgT2JqZWN0LmlzRXh0ZW5zaWJsZShPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnaXNFeHRlbnNpYmxlJywgZnVuY3Rpb24gKCRpc0V4dGVuc2libGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGlzRXh0ZW5zaWJsZShpdCkge1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNFeHRlbnNpYmxlID8gJGlzRXh0ZW5zaWJsZShpdCkgOiB0cnVlIDogZmFsc2U7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLWV4dGVuc2libGUuanNcbi8vIG1vZHVsZSBpZCA9IDIzMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///230\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(0);\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(153) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbi5qcz85ZjVkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMy4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiwgJ09iamVjdCcsIHsgYXNzaWduOiByZXF1aXJlKCcuL19vYmplY3QtYXNzaWduJykgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24uanNcbi8vIG1vZHVsZSBpZCA9IDIzMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///231\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.10 Object.is(value1, value2)\nvar $export = __webpack_require__(0);\n$export($export.S, 'Object', { is: __webpack_require__(233) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLmpzPzlkMWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4zLjEwIE9iamVjdC5pcyh2YWx1ZTEsIHZhbHVlMilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHsgaXM6IHJlcXVpcmUoJy4vX3NhbWUtdmFsdWUnKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///232\n")},function(module,exports){eval("// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2FtZS12YWx1ZS5qcz9lMDg2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMi45IFNhbWVWYWx1ZSh4LCB5KVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaXMgfHwgZnVuY3Rpb24gaXMoeCwgeSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIHJldHVybiB4ID09PSB5ID8geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHkgOiB4ICE9IHggJiYgeSAhPSB5O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2FtZS12YWx1ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///233\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(0);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(107).set });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanM/OGViMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjMuMTkgT2JqZWN0LnNldFByb3RvdHlwZU9mKE8sIHByb3RvKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBzZXRQcm90b3R5cGVPZjogcmVxdWlyZSgnLi9fc2V0LXByb3RvJykuc2V0IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gMjM0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///234\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 19.1.3.6 Object.prototype.toString()\nvar classof = __webpack_require__(72);\nvar test = {};\ntest[__webpack_require__(9)('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n __webpack_require__(19)(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZy5qcz84MTg2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgdGVzdCA9IHt9O1xudGVzdFtyZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKV0gPSAneic7XG5pZiAodGVzdCArICcnICE9ICdbb2JqZWN0IHpdJykge1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKE9iamVjdC5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAnW29iamVjdCAnICsgY2xhc3NvZih0aGlzKSArICddJztcbiAgfSwgdHJ1ZSk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcuanNcbi8vIG1vZHVsZSBpZCA9IDIzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///235\n")},function(module,exports,__webpack_require__){eval("// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = __webpack_require__(0);\n\n$export($export.P, 'Function', { bind: __webpack_require__(154) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24uYmluZC5qcz9kZDBhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjIuMy4yIC8gMTUuMy40LjUgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQodGhpc0FyZywgYXJncy4uLilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnRnVuY3Rpb24nLCB7IGJpbmQ6IHJlcXVpcmUoJy4vX2JpbmQnKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24uYmluZC5qc1xuLy8gbW9kdWxlIGlkID0gMjM2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///236\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(13).f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || __webpack_require__(12) && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24ubmFtZS5qcz8xMmU1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgRlByb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIG5hbWVSRSA9IC9eXFxzKmZ1bmN0aW9uIChbXiAoXSopLztcbnZhciBOQU1FID0gJ25hbWUnO1xuXG4vLyAxOS4yLjQuMiBuYW1lXG5OQU1FIGluIEZQcm90byB8fCByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmIGRQKEZQcm90bywgTkFNRSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKCcnICsgdGhpcykubWF0Y2gobmFtZVJFKVsxXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24ubmFtZS5qc1xuLy8gbW9kdWxlIGlkID0gMjM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///237\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar isObject = __webpack_require__(6);\nvar getPrototypeOf = __webpack_require__(26);\nvar HAS_INSTANCE = __webpack_require__(9)('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) __webpack_require__(13).f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24uaGFzLWluc3RhbmNlLmpzPzNkYjMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSEFTX0lOU1RBTkNFID0gcmVxdWlyZSgnLi9fd2tzJykoJ2hhc0luc3RhbmNlJyk7XG52YXIgRnVuY3Rpb25Qcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbi8vIDE5LjIuMy42IEZ1bmN0aW9uLnByb3RvdHlwZVtAQGhhc0luc3RhbmNlXShWKVxuaWYgKCEoSEFTX0lOU1RBTkNFIGluIEZ1bmN0aW9uUHJvdG8pKSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mKEZ1bmN0aW9uUHJvdG8sIEhBU19JTlNUQU5DRSwgeyB2YWx1ZTogZnVuY3Rpb24gKE8pIHtcbiAgaWYgKHR5cGVvZiB0aGlzICE9ICdmdW5jdGlvbicgfHwgIWlzT2JqZWN0KE8pKSByZXR1cm4gZmFsc2U7XG4gIGlmICghaXNPYmplY3QodGhpcy5wcm90b3R5cGUpKSByZXR1cm4gTyBpbnN0YW5jZW9mIHRoaXM7XG4gIC8vIGZvciBlbnZpcm9ubWVudCB3L28gbmF0aXZlIGBAQGhhc0luc3RhbmNlYCBsb2dpYyBlbm91Z2ggYGluc3RhbmNlb2ZgLCBidXQgYWRkIHRoaXM6XG4gIHdoaWxlIChPID0gZ2V0UHJvdG90eXBlT2YoTykpIGlmICh0aGlzLnByb3RvdHlwZSA9PT0gTykgcmV0dXJuIHRydWU7XG4gIHJldHVybiBmYWxzZTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmhhcy1pbnN0YW5jZS5qc1xuLy8gbW9kdWxlIGlkID0gMjM4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///238\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar $parseInt = __webpack_require__(156);\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucGFyc2UtaW50LmpzPzRiZTEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcGFyc2VJbnQgPSByZXF1aXJlKCcuL19wYXJzZS1pbnQnKTtcbi8vIDE4LjIuNSBwYXJzZUludChzdHJpbmcsIHJhZGl4KVxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LkYgKiAocGFyc2VJbnQgIT0gJHBhcnNlSW50KSwgeyBwYXJzZUludDogJHBhcnNlSW50IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5wYXJzZS1pbnQuanNcbi8vIG1vZHVsZSBpZCA9IDIzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///239\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar $parseFloat = __webpack_require__(157);\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucGFyc2UtZmxvYXQuanM/MTJmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRwYXJzZUZsb2F0ID0gcmVxdWlyZSgnLi9fcGFyc2UtZmxvYXQnKTtcbi8vIDE4LjIuNCBwYXJzZUZsb2F0KHN0cmluZylcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5GICogKHBhcnNlRmxvYXQgIT0gJHBhcnNlRmxvYXQpLCB7IHBhcnNlRmxvYXQ6ICRwYXJzZUZsb2F0IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5wYXJzZS1mbG9hdC5qc1xuLy8gbW9kdWxlIGlkID0gMjQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///240\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(4);\nvar has = __webpack_require__(23);\nvar cof = __webpack_require__(29);\nvar inheritIfRequired = __webpack_require__(109);\nvar toPrimitive = __webpack_require__(31);\nvar fails = __webpack_require__(5);\nvar gOPN = __webpack_require__(53).f;\nvar gOPD = __webpack_require__(25).f;\nvar dP = __webpack_require__(13).f;\nvar $trim = __webpack_require__(62).trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(__webpack_require__(52)(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = __webpack_require__(12) ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n __webpack_require__(19)(global, NUMBER, $Number);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmNvbnN0cnVjdG9yLmpzPzQwMWIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gcmVxdWlyZSgnLi9faW5oZXJpdC1pZi1yZXF1aXJlZCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmY7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgJHRyaW0gPSByZXF1aXJlKCcuL19zdHJpbmctdHJpbScpLnRyaW07XG52YXIgTlVNQkVSID0gJ051bWJlcic7XG52YXIgJE51bWJlciA9IGdsb2JhbFtOVU1CRVJdO1xudmFyIEJhc2UgPSAkTnVtYmVyO1xudmFyIHByb3RvID0gJE51bWJlci5wcm90b3R5cGU7XG4vLyBPcGVyYSB+MTIgaGFzIGJyb2tlbiBPYmplY3QjdG9TdHJpbmdcbnZhciBCUk9LRU5fQ09GID0gY29mKHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKShwcm90bykpID09IE5VTUJFUjtcbnZhciBUUklNID0gJ3RyaW0nIGluIFN0cmluZy5wcm90b3R5cGU7XG5cbi8vIDcuMS4zIFRvTnVtYmVyKGFyZ3VtZW50KVxudmFyIHRvTnVtYmVyID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBpdCA9IHRvUHJpbWl0aXZlKGFyZ3VtZW50LCBmYWxzZSk7XG4gIGlmICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgJiYgaXQubGVuZ3RoID4gMikge1xuICAgIGl0ID0gVFJJTSA/IGl0LnRyaW0oKSA6ICR0cmltKGl0LCAzKTtcbiAgICB2YXIgZmlyc3QgPSBpdC5jaGFyQ29kZUF0KDApO1xuICAgIHZhciB0aGlyZCwgcmFkaXgsIG1heENvZGU7XG4gICAgaWYgKGZpcnN0ID09PSA0MyB8fCBmaXJzdCA9PT0gNDUpIHtcbiAgICAgIHRoaXJkID0gaXQuY2hhckNvZGVBdCgyKTtcbiAgICAgIGlmICh0aGlyZCA9PT0gODggfHwgdGhpcmQgPT09IDEyMCkgcmV0dXJuIE5hTjsgLy8gTnVtYmVyKCcrMHgxJykgc2hvdWxkIGJlIE5hTiwgb2xkIFY4IGZpeFxuICAgIH0gZWxzZSBpZiAoZmlyc3QgPT09IDQ4KSB7XG4gICAgICBzd2l0Y2ggKGl0LmNoYXJDb2RlQXQoMSkpIHtcbiAgICAgICAgY2FzZSA2NjogY2FzZSA5ODogcmFkaXggPSAyOyBtYXhDb2RlID0gNDk7IGJyZWFrOyAvLyBmYXN0IGVxdWFsIC9eMGJbMDFdKyQvaVxuICAgICAgICBjYXNlIDc5OiBjYXNlIDExMTogcmFkaXggPSA4OyBtYXhDb2RlID0gNTU7IGJyZWFrOyAvLyBmYXN0IGVxdWFsIC9eMG9bMC03XSskL2lcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuICtpdDtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGRpZ2l0cyA9IGl0LnNsaWNlKDIpLCBpID0gMCwgbCA9IGRpZ2l0cy5sZW5ndGgsIGNvZGU7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY29kZSA9IGRpZ2l0cy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAvLyBwYXJzZUludCBwYXJzZXMgYSBzdHJpbmcgdG8gYSBmaXJzdCB1bmF2YWlsYWJsZSBzeW1ib2xcbiAgICAgICAgLy8gYnV0IFRvTnVtYmVyIHNob3VsZCByZXR1cm4gTmFOIGlmIGEgc3RyaW5nIGNvbnRhaW5zIHVuYXZhaWxhYmxlIHN5bWJvbHNcbiAgICAgICAgaWYgKGNvZGUgPCA0OCB8fCBjb2RlID4gbWF4Q29kZSkgcmV0dXJuIE5hTjtcbiAgICAgIH0gcmV0dXJuIHBhcnNlSW50KGRpZ2l0cywgcmFkaXgpO1xuICAgIH1cbiAgfSByZXR1cm4gK2l0O1xufTtcblxuaWYgKCEkTnVtYmVyKCcgMG8xJykgfHwgISROdW1iZXIoJzBiMScpIHx8ICROdW1iZXIoJysweDEnKSkge1xuICAkTnVtYmVyID0gZnVuY3Rpb24gTnVtYmVyKHZhbHVlKSB7XG4gICAgdmFyIGl0ID0gYXJndW1lbnRzLmxlbmd0aCA8IDEgPyAwIDogdmFsdWU7XG4gICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgIHJldHVybiB0aGF0IGluc3RhbmNlb2YgJE51bWJlclxuICAgICAgLy8gY2hlY2sgb24gMS4uY29uc3RydWN0b3IoZm9vKSBjYXNlXG4gICAgICAmJiAoQlJPS0VOX0NPRiA/IGZhaWxzKGZ1bmN0aW9uICgpIHsgcHJvdG8udmFsdWVPZi5jYWxsKHRoYXQpOyB9KSA6IGNvZih0aGF0KSAhPSBOVU1CRVIpXG4gICAgICAgID8gaW5oZXJpdElmUmVxdWlyZWQobmV3IEJhc2UodG9OdW1iZXIoaXQpKSwgdGhhdCwgJE51bWJlcikgOiB0b051bWJlcihpdCk7XG4gIH07XG4gIGZvciAodmFyIGtleXMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZ09QTihCYXNlKSA6IChcbiAgICAvLyBFUzM6XG4gICAgJ01BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLCcgK1xuICAgIC8vIEVTNiAoaW4gY2FzZSwgaWYgbW9kdWxlcyB3aXRoIEVTNiBOdW1iZXIgc3RhdGljcyByZXF1aXJlZCBiZWZvcmUpOlxuICAgICdFUFNJTE9OLGlzRmluaXRlLGlzSW50ZWdlcixpc05hTixpc1NhZmVJbnRlZ2VyLE1BWF9TQUZFX0lOVEVHRVIsJyArXG4gICAgJ01JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXInXG4gICkuc3BsaXQoJywnKSwgaiA9IDAsIGtleTsga2V5cy5sZW5ndGggPiBqOyBqKyspIHtcbiAgICBpZiAoaGFzKEJhc2UsIGtleSA9IGtleXNbal0pICYmICFoYXMoJE51bWJlciwga2V5KSkge1xuICAgICAgZFAoJE51bWJlciwga2V5LCBnT1BEKEJhc2UsIGtleSkpO1xuICAgIH1cbiAgfVxuICAkTnVtYmVyLnByb3RvdHlwZSA9IHByb3RvO1xuICBwcm90by5jb25zdHJ1Y3RvciA9ICROdW1iZXI7XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoZ2xvYmFsLCBOVU1CRVIsICROdW1iZXIpO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuY29uc3RydWN0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDI0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///241\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar toInteger = __webpack_require__(33);\nvar aNumberValue = __webpack_require__(158);\nvar repeat = __webpack_require__(110);\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !__webpack_require__(5)(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnRvLWZpeGVkLmpzPzQxNjIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgYU51bWJlclZhbHVlID0gcmVxdWlyZSgnLi9fYS1udW1iZXItdmFsdWUnKTtcbnZhciByZXBlYXQgPSByZXF1aXJlKCcuL19zdHJpbmctcmVwZWF0Jyk7XG52YXIgJHRvRml4ZWQgPSAxLjAudG9GaXhlZDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgZGF0YSA9IFswLCAwLCAwLCAwLCAwLCAwXTtcbnZhciBFUlJPUiA9ICdOdW1iZXIudG9GaXhlZDogaW5jb3JyZWN0IGludm9jYXRpb24hJztcbnZhciBaRVJPID0gJzAnO1xuXG52YXIgbXVsdGlwbHkgPSBmdW5jdGlvbiAobiwgYykge1xuICB2YXIgaSA9IC0xO1xuICB2YXIgYzIgPSBjO1xuICB3aGlsZSAoKytpIDwgNikge1xuICAgIGMyICs9IG4gKiBkYXRhW2ldO1xuICAgIGRhdGFbaV0gPSBjMiAlIDFlNztcbiAgICBjMiA9IGZsb29yKGMyIC8gMWU3KTtcbiAgfVxufTtcbnZhciBkaXZpZGUgPSBmdW5jdGlvbiAobikge1xuICB2YXIgaSA9IDY7XG4gIHZhciBjID0gMDtcbiAgd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgYyArPSBkYXRhW2ldO1xuICAgIGRhdGFbaV0gPSBmbG9vcihjIC8gbik7XG4gICAgYyA9IChjICUgbikgKiAxZTc7XG4gIH1cbn07XG52YXIgbnVtVG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpID0gNjtcbiAgdmFyIHMgPSAnJztcbiAgd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgaWYgKHMgIT09ICcnIHx8IGkgPT09IDAgfHwgZGF0YVtpXSAhPT0gMCkge1xuICAgICAgdmFyIHQgPSBTdHJpbmcoZGF0YVtpXSk7XG4gICAgICBzID0gcyA9PT0gJycgPyB0IDogcyArIHJlcGVhdC5jYWxsKFpFUk8sIDcgLSB0Lmxlbmd0aCkgKyB0O1xuICAgIH1cbiAgfSByZXR1cm4gcztcbn07XG52YXIgcG93ID0gZnVuY3Rpb24gKHgsIG4sIGFjYykge1xuICByZXR1cm4gbiA9PT0gMCA/IGFjYyA6IG4gJSAyID09PSAxID8gcG93KHgsIG4gLSAxLCBhY2MgKiB4KSA6IHBvdyh4ICogeCwgbiAvIDIsIGFjYyk7XG59O1xudmFyIGxvZyA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBuID0gMDtcbiAgdmFyIHgyID0geDtcbiAgd2hpbGUgKHgyID49IDQwOTYpIHtcbiAgICBuICs9IDEyO1xuICAgIHgyIC89IDQwOTY7XG4gIH1cbiAgd2hpbGUgKHgyID49IDIpIHtcbiAgICBuICs9IDE7XG4gICAgeDIgLz0gMjtcbiAgfSByZXR1cm4gbjtcbn07XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKCEhJHRvRml4ZWQgJiYgKFxuICAwLjAwMDA4LnRvRml4ZWQoMykgIT09ICcwLjAwMCcgfHxcbiAgMC45LnRvRml4ZWQoMCkgIT09ICcxJyB8fFxuICAxLjI1NS50b0ZpeGVkKDIpICE9PSAnMS4yNScgfHxcbiAgMTAwMDAwMDAwMDAwMDAwMDEyOC4wLnRvRml4ZWQoMCkgIT09ICcxMDAwMDAwMDAwMDAwMDAwMTI4J1xuKSB8fCAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIC8vIFY4IH4gQW5kcm9pZCA0LjMtXG4gICR0b0ZpeGVkLmNhbGwoe30pO1xufSkpLCAnTnVtYmVyJywge1xuICB0b0ZpeGVkOiBmdW5jdGlvbiB0b0ZpeGVkKGZyYWN0aW9uRGlnaXRzKSB7XG4gICAgdmFyIHggPSBhTnVtYmVyVmFsdWUodGhpcywgRVJST1IpO1xuICAgIHZhciBmID0gdG9JbnRlZ2VyKGZyYWN0aW9uRGlnaXRzKTtcbiAgICB2YXIgcyA9ICcnO1xuICAgIHZhciBtID0gWkVSTztcbiAgICB2YXIgZSwgeiwgaiwgaztcbiAgICBpZiAoZiA8IDAgfHwgZiA+IDIwKSB0aHJvdyBSYW5nZUVycm9yKEVSUk9SKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKHggIT0geCkgcmV0dXJuICdOYU4nO1xuICAgIGlmICh4IDw9IC0xZTIxIHx8IHggPj0gMWUyMSkgcmV0dXJuIFN0cmluZyh4KTtcbiAgICBpZiAoeCA8IDApIHtcbiAgICAgIHMgPSAnLSc7XG4gICAgICB4ID0gLXg7XG4gICAgfVxuICAgIGlmICh4ID4gMWUtMjEpIHtcbiAgICAgIGUgPSBsb2coeCAqIHBvdygyLCA2OSwgMSkpIC0gNjk7XG4gICAgICB6ID0gZSA8IDAgPyB4ICogcG93KDIsIC1lLCAxKSA6IHggLyBwb3coMiwgZSwgMSk7XG4gICAgICB6ICo9IDB4MTAwMDAwMDAwMDAwMDA7XG4gICAgICBlID0gNTIgLSBlO1xuICAgICAgaWYgKGUgPiAwKSB7XG4gICAgICAgIG11bHRpcGx5KDAsIHopO1xuICAgICAgICBqID0gZjtcbiAgICAgICAgd2hpbGUgKGogPj0gNykge1xuICAgICAgICAgIG11bHRpcGx5KDFlNywgMCk7XG4gICAgICAgICAgaiAtPSA3O1xuICAgICAgICB9XG4gICAgICAgIG11bHRpcGx5KHBvdygxMCwgaiwgMSksIDApO1xuICAgICAgICBqID0gZSAtIDE7XG4gICAgICAgIHdoaWxlIChqID49IDIzKSB7XG4gICAgICAgICAgZGl2aWRlKDEgPDwgMjMpO1xuICAgICAgICAgIGogLT0gMjM7XG4gICAgICAgIH1cbiAgICAgICAgZGl2aWRlKDEgPDwgaik7XG4gICAgICAgIG11bHRpcGx5KDEsIDEpO1xuICAgICAgICBkaXZpZGUoMik7XG4gICAgICAgIG0gPSBudW1Ub1N0cmluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbXVsdGlwbHkoMCwgeik7XG4gICAgICAgIG11bHRpcGx5KDEgPDwgLWUsIDApO1xuICAgICAgICBtID0gbnVtVG9TdHJpbmcoKSArIHJlcGVhdC5jYWxsKFpFUk8sIGYpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZiA+IDApIHtcbiAgICAgIGsgPSBtLmxlbmd0aDtcbiAgICAgIG0gPSBzICsgKGsgPD0gZiA/ICcwLicgKyByZXBlYXQuY2FsbChaRVJPLCBmIC0gaykgKyBtIDogbS5zbGljZSgwLCBrIC0gZikgKyAnLicgKyBtLnNsaWNlKGsgLSBmKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSBzICsgbTtcbiAgICB9IHJldHVybiBtO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnRvLWZpeGVkLmpzXG4vLyBtb2R1bGUgaWQgPSAyNDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///242\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $fails = __webpack_require__(5);\nvar aNumberValue = __webpack_require__(158);\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnRvLXByZWNpc2lvbi5qcz82NTEyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBhTnVtYmVyVmFsdWUgPSByZXF1aXJlKCcuL19hLW51bWJlci12YWx1ZScpO1xudmFyICR0b1ByZWNpc2lvbiA9IDEuMC50b1ByZWNpc2lvbjtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gSUU3LVxuICByZXR1cm4gJHRvUHJlY2lzaW9uLmNhbGwoMSwgdW5kZWZpbmVkKSAhPT0gJzEnO1xufSkgfHwgISRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIFY4IH4gQW5kcm9pZCA0LjMtXG4gICR0b1ByZWNpc2lvbi5jYWxsKHt9KTtcbn0pKSwgJ051bWJlcicsIHtcbiAgdG9QcmVjaXNpb246IGZ1bmN0aW9uIHRvUHJlY2lzaW9uKHByZWNpc2lvbikge1xuICAgIHZhciB0aGF0ID0gYU51bWJlclZhbHVlKHRoaXMsICdOdW1iZXIjdG9QcmVjaXNpb246IGluY29ycmVjdCBpbnZvY2F0aW9uIScpO1xuICAgIHJldHVybiBwcmVjaXNpb24gPT09IHVuZGVmaW5lZCA/ICR0b1ByZWNpc2lvbi5jYWxsKHRoYXQpIDogJHRvUHJlY2lzaW9uLmNhbGwodGhhdCwgcHJlY2lzaW9uKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci50by1wcmVjaXNpb24uanNcbi8vIG1vZHVsZSBpZCA9IDI0M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///243\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.1 Number.EPSILON\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmVwc2lsb24uanM/NGFkYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4xLjIuMSBOdW1iZXIuRVBTSUxPTlxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IEVQU0lMT046IE1hdGgucG93KDIsIC01MikgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5lcHNpbG9uLmpzXG4vLyBtb2R1bGUgaWQgPSAyNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///244\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.2 Number.isFinite(number)\nvar $export = __webpack_require__(0);\nvar _isFinite = __webpack_require__(4).isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLWZpbml0ZS5qcz9jYWU1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjEuMi4yIE51bWJlci5pc0Zpbml0ZShudW1iZXIpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIF9pc0Zpbml0ZSA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmlzRmluaXRlO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtcbiAgaXNGaW5pdGU6IGZ1bmN0aW9uIGlzRmluaXRlKGl0KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnbnVtYmVyJyAmJiBfaXNGaW5pdGUoaXQpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLWZpbml0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///245\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.3 Number.isInteger(number)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Number', { isInteger: __webpack_require__(159) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXIuanM/NWVkOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4xLjIuMyBOdW1iZXIuaXNJbnRlZ2VyKG51bWJlcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywgeyBpc0ludGVnZXI6IHJlcXVpcmUoJy4vX2lzLWludGVnZXInKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXIuanNcbi8vIG1vZHVsZSBpZCA9IDI0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///246\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.4 Number.isNaN(number)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLW5hbi5qcz8yYzZlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjEuMi40IE51bWJlci5pc05hTihudW1iZXIpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtcbiAgaXNOYU46IGZ1bmN0aW9uIGlzTmFOKG51bWJlcikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICByZXR1cm4gbnVtYmVyICE9IG51bWJlcjtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5pcy1uYW4uanNcbi8vIG1vZHVsZSBpZCA9IDI0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///247\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = __webpack_require__(0);\nvar isInteger = __webpack_require__(159);\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLXNhZmUtaW50ZWdlci5qcz8wMzU5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjEuMi41IE51bWJlci5pc1NhZmVJbnRlZ2VyKG51bWJlcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaXNJbnRlZ2VyID0gcmVxdWlyZSgnLi9faXMtaW50ZWdlcicpO1xudmFyIGFicyA9IE1hdGguYWJzO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtcbiAgaXNTYWZlSW50ZWdlcjogZnVuY3Rpb24gaXNTYWZlSW50ZWdlcihudW1iZXIpIHtcbiAgICByZXR1cm4gaXNJbnRlZ2VyKG51bWJlcikgJiYgYWJzKG51bWJlcikgPD0gMHgxZmZmZmZmZmZmZmZmZjtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5pcy1zYWZlLWludGVnZXIuanNcbi8vIG1vZHVsZSBpZCA9IDI0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///248\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLm1heC1zYWZlLWludGVnZXIuanM/NWEyMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4xLjIuNiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IE1BWF9TQUZFX0lOVEVHRVI6IDB4MWZmZmZmZmZmZmZmZmYgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5tYXgtc2FmZS1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAyNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///249\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLm1pbi1zYWZlLWludGVnZXIuanM/Njg5ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4xLjIuMTAgTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVJcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywgeyBNSU5fU0FGRV9JTlRFR0VSOiAtMHgxZmZmZmZmZmZmZmZmZiB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLm1pbi1zYWZlLWludGVnZXIuanNcbi8vIG1vZHVsZSBpZCA9IDI1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///250\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar $parseFloat = __webpack_require__(157);\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnBhcnNlLWZsb2F0LmpzPzZhNWIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcGFyc2VGbG9hdCA9IHJlcXVpcmUoJy4vX3BhcnNlLWZsb2F0Jyk7XG4vLyAyMC4xLjIuMTIgTnVtYmVyLnBhcnNlRmxvYXQoc3RyaW5nKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoTnVtYmVyLnBhcnNlRmxvYXQgIT0gJHBhcnNlRmxvYXQpLCAnTnVtYmVyJywgeyBwYXJzZUZsb2F0OiAkcGFyc2VGbG9hdCB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnBhcnNlLWZsb2F0LmpzXG4vLyBtb2R1bGUgaWQgPSAyNTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///251\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar $parseInt = __webpack_require__(156);\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnBhcnNlLWludC5qcz83NTQyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhcnNlSW50ID0gcmVxdWlyZSgnLi9fcGFyc2UtaW50Jyk7XG4vLyAyMC4xLjIuMTMgTnVtYmVyLnBhcnNlSW50KHN0cmluZywgcmFkaXgpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChOdW1iZXIucGFyc2VJbnQgIT0gJHBhcnNlSW50KSwgJ051bWJlcicsIHsgcGFyc2VJbnQ6ICRwYXJzZUludCB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnBhcnNlLWludC5qc1xuLy8gbW9kdWxlIGlkID0gMjUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///252\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.3 Math.acosh(x)\nvar $export = __webpack_require__(0);\nvar log1p = __webpack_require__(160);\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5hY29zaC5qcz9iZjY5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4zIE1hdGguYWNvc2goeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbG9nMXAgPSByZXF1aXJlKCcuL19tYXRoLWxvZzFwJyk7XG52YXIgc3FydCA9IE1hdGguc3FydDtcbnZhciAkYWNvc2ggPSBNYXRoLmFjb3NoO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoJGFjb3NoXG4gIC8vIFY4IGJ1ZzogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTM1MDlcbiAgJiYgTWF0aC5mbG9vcigkYWNvc2goTnVtYmVyLk1BWF9WQUxVRSkpID09IDcxMFxuICAvLyBUb3IgQnJvd3NlciBidWc6IE1hdGguYWNvc2goSW5maW5pdHkpIC0+IE5hTlxuICAmJiAkYWNvc2goSW5maW5pdHkpID09IEluZmluaXR5XG4pLCAnTWF0aCcsIHtcbiAgYWNvc2g6IGZ1bmN0aW9uIGFjb3NoKHgpIHtcbiAgICByZXR1cm4gKHggPSAreCkgPCAxID8gTmFOIDogeCA+IDk0OTA2MjY1LjYyNDI1MTU2XG4gICAgICA/IE1hdGgubG9nKHgpICsgTWF0aC5MTjJcbiAgICAgIDogbG9nMXAoeCAtIDEgKyBzcXJ0KHggLSAxKSAqIHNxcnQoeCArIDEpKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguYWNvc2guanNcbi8vIG1vZHVsZSBpZCA9IDI1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///253\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.5 Math.asinh(x)\nvar $export = __webpack_require__(0);\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5hc2luaC5qcz9lYzliIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi41IE1hdGguYXNpbmgoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGFzaW5oID0gTWF0aC5hc2luaDtcblxuZnVuY3Rpb24gYXNpbmgoeCkge1xuICByZXR1cm4gIWlzRmluaXRlKHggPSAreCkgfHwgeCA9PSAwID8geCA6IHggPCAwID8gLWFzaW5oKC14KSA6IE1hdGgubG9nKHggKyBNYXRoLnNxcnQoeCAqIHggKyAxKSk7XG59XG5cbi8vIFRvciBCcm93c2VyIGJ1ZzogTWF0aC5hc2luaCgwKSAtPiAtMFxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKCRhc2luaCAmJiAxIC8gJGFzaW5oKDApID4gMCksICdNYXRoJywgeyBhc2luaDogYXNpbmggfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguYXNpbmguanNcbi8vIG1vZHVsZSBpZCA9IDI1NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///254\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.7 Math.atanh(x)\nvar $export = __webpack_require__(0);\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5hdGFuaC5qcz85NzI4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi43IE1hdGguYXRhbmgoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGF0YW5oID0gTWF0aC5hdGFuaDtcblxuLy8gVG9yIEJyb3dzZXIgYnVnOiBNYXRoLmF0YW5oKC0wKSAtPiAwXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoJGF0YW5oICYmIDEgLyAkYXRhbmgoLTApIDwgMCksICdNYXRoJywge1xuICBhdGFuaDogZnVuY3Rpb24gYXRhbmgoeCkge1xuICAgIHJldHVybiAoeCA9ICt4KSA9PSAwID8geCA6IE1hdGgubG9nKCgxICsgeCkgLyAoMSAtIHgpKSAvIDI7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmF0YW5oLmpzXG4vLyBtb2R1bGUgaWQgPSAyNTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///255\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.9 Math.cbrt(x)\nvar $export = __webpack_require__(0);\nvar sign = __webpack_require__(111);\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5jYnJ0LmpzPzkwMTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjkgTWF0aC5jYnJ0KHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHNpZ24gPSByZXF1aXJlKCcuL19tYXRoLXNpZ24nKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBjYnJ0OiBmdW5jdGlvbiBjYnJ0KHgpIHtcbiAgICByZXR1cm4gc2lnbih4ID0gK3gpICogTWF0aC5wb3coTWF0aC5hYnMoeCksIDEgLyAzKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguY2JydC5qc1xuLy8gbW9kdWxlIGlkID0gMjU2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///256\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.11 Math.clz32(x)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5jbHozMi5qcz9jNGUzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4xMSBNYXRoLmNsejMyKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGNsejMyOiBmdW5jdGlvbiBjbHozMih4KSB7XG4gICAgcmV0dXJuICh4ID4+Pj0gMCkgPyAzMSAtIE1hdGguZmxvb3IoTWF0aC5sb2coeCArIDAuNSkgKiBNYXRoLkxPRzJFKSA6IDMyO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5jbHozMi5qc1xuLy8gbW9kdWxlIGlkID0gMjU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///257\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.12 Math.cosh(x)\nvar $export = __webpack_require__(0);\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5jb3NoLmpzPzJlNTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjEyIE1hdGguY29zaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBleHAgPSBNYXRoLmV4cDtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBjb3NoOiBmdW5jdGlvbiBjb3NoKHgpIHtcbiAgICByZXR1cm4gKGV4cCh4ID0gK3gpICsgZXhwKC14KSkgLyAyO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5jb3NoLmpzXG4vLyBtb2R1bGUgaWQgPSAyNThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///258\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.14 Math.expm1(x)\nvar $export = __webpack_require__(0);\nvar $expm1 = __webpack_require__(112);\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5leHBtMS5qcz9mNzEyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4xNCBNYXRoLmV4cG0xKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRleHBtMSA9IHJlcXVpcmUoJy4vX21hdGgtZXhwbTEnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoJGV4cG0xICE9IE1hdGguZXhwbTEpLCAnTWF0aCcsIHsgZXhwbTE6ICRleHBtMSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5leHBtMS5qc1xuLy8gbW9kdWxlIGlkID0gMjU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///259\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.16 Math.fround(x)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', { fround: __webpack_require__(161) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5mcm91bmQuanM/OWJhNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4yLjIuMTYgTWF0aC5mcm91bmQoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgZnJvdW5kOiByZXF1aXJlKCcuL19tYXRoLWZyb3VuZCcpIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmZyb3VuZC5qc1xuLy8gbW9kdWxlIGlkID0gMjYwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///260\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = __webpack_require__(0);\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5oeXBvdC5qcz9jMmJiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4xNyBNYXRoLmh5cG90KFt2YWx1ZTFbLCB2YWx1ZTJbLCDigKYgXV1dKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhYnMgPSBNYXRoLmFicztcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBoeXBvdDogZnVuY3Rpb24gaHlwb3QodmFsdWUxLCB2YWx1ZTIpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHZhciBzdW0gPSAwO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGxhcmcgPSAwO1xuICAgIHZhciBhcmcsIGRpdjtcbiAgICB3aGlsZSAoaSA8IGFMZW4pIHtcbiAgICAgIGFyZyA9IGFicyhhcmd1bWVudHNbaSsrXSk7XG4gICAgICBpZiAobGFyZyA8IGFyZykge1xuICAgICAgICBkaXYgPSBsYXJnIC8gYXJnO1xuICAgICAgICBzdW0gPSBzdW0gKiBkaXYgKiBkaXYgKyAxO1xuICAgICAgICBsYXJnID0gYXJnO1xuICAgICAgfSBlbHNlIGlmIChhcmcgPiAwKSB7XG4gICAgICAgIGRpdiA9IGFyZyAvIGxhcmc7XG4gICAgICAgIHN1bSArPSBkaXYgKiBkaXY7XG4gICAgICB9IGVsc2Ugc3VtICs9IGFyZztcbiAgICB9XG4gICAgcmV0dXJuIGxhcmcgPT09IEluZmluaXR5ID8gSW5maW5pdHkgOiBsYXJnICogTWF0aC5zcXJ0KHN1bSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmh5cG90LmpzXG4vLyBtb2R1bGUgaWQgPSAyNjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///261\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.18 Math.imul(x, y)\nvar $export = __webpack_require__(0);\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * __webpack_require__(5)(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5pbXVsLmpzPzJlYTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjE4IE1hdGguaW11bCh4LCB5KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkaW11bCA9IE1hdGguaW11bDtcblxuLy8gc29tZSBXZWJLaXQgdmVyc2lvbnMgZmFpbHMgd2l0aCBiaWcgbnVtYmVycywgc29tZSBoYXMgd3JvbmcgYXJpdHlcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAkaW11bCgweGZmZmZmZmZmLCA1KSAhPSAtNSB8fCAkaW11bC5sZW5ndGggIT0gMjtcbn0pLCAnTWF0aCcsIHtcbiAgaW11bDogZnVuY3Rpb24gaW11bCh4LCB5KSB7XG4gICAgdmFyIFVJTlQxNiA9IDB4ZmZmZjtcbiAgICB2YXIgeG4gPSAreDtcbiAgICB2YXIgeW4gPSAreTtcbiAgICB2YXIgeGwgPSBVSU5UMTYgJiB4bjtcbiAgICB2YXIgeWwgPSBVSU5UMTYgJiB5bjtcbiAgICByZXR1cm4gMCB8IHhsICogeWwgKyAoKFVJTlQxNiAmIHhuID4+PiAxNikgKiB5bCArIHhsICogKFVJTlQxNiAmIHluID4+PiAxNikgPDwgMTYgPj4+IDApO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5pbXVsLmpzXG4vLyBtb2R1bGUgaWQgPSAyNjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///262\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.21 Math.log10(x)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cxMC5qcz9kNjJhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4yMSBNYXRoLmxvZzEwKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGxvZzEwOiBmdW5jdGlvbiBsb2cxMCh4KSB7XG4gICAgcmV0dXJuIE1hdGgubG9nKHgpICogTWF0aC5MT0cxMEU7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmxvZzEwLmpzXG4vLyBtb2R1bGUgaWQgPSAyNjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///263\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.20 Math.log1p(x)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', { log1p: __webpack_require__(160) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cxcC5qcz9hNTYxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4yMCBNYXRoLmxvZzFwKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IGxvZzFwOiByZXF1aXJlKCcuL19tYXRoLWxvZzFwJykgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgubG9nMXAuanNcbi8vIG1vZHVsZSBpZCA9IDI2NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///264\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.22 Math.log2(x)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cyLmpzPzM3ODIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjIyIE1hdGgubG9nMih4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBsb2cyOiBmdW5jdGlvbiBsb2cyKHgpIHtcbiAgICByZXR1cm4gTWF0aC5sb2coeCkgLyBNYXRoLkxOMjtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgubG9nMi5qc1xuLy8gbW9kdWxlIGlkID0gMjY1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///265\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.28 Math.sign(x)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', { sign: __webpack_require__(111) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5zaWduLmpzPzFlNWYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjI4IE1hdGguc2lnbih4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywgeyBzaWduOiByZXF1aXJlKCcuL19tYXRoLXNpZ24nKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5zaWduLmpzXG4vLyBtb2R1bGUgaWQgPSAyNjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///266\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.30 Math.sinh(x)\nvar $export = __webpack_require__(0);\nvar expm1 = __webpack_require__(112);\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * __webpack_require__(5)(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5zaW5oLmpzPzMyMzEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjMwIE1hdGguc2luaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBleHBtMSA9IHJlcXVpcmUoJy4vX21hdGgtZXhwbTEnKTtcbnZhciBleHAgPSBNYXRoLmV4cDtcblxuLy8gVjggbmVhciBDaHJvbWl1bSAzOCBoYXMgYSBwcm9ibGVtIHdpdGggdmVyeSBzbWFsbCBudW1iZXJzXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gIU1hdGguc2luaCgtMmUtMTcpICE9IC0yZS0xNztcbn0pLCAnTWF0aCcsIHtcbiAgc2luaDogZnVuY3Rpb24gc2luaCh4KSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKHggPSAreCkgPCAxXG4gICAgICA/IChleHBtMSh4KSAtIGV4cG0xKC14KSkgLyAyXG4gICAgICA6IChleHAoeCAtIDEpIC0gZXhwKC14IC0gMSkpICogKE1hdGguRSAvIDIpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5zaW5oLmpzXG4vLyBtb2R1bGUgaWQgPSAyNjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///267\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.33 Math.tanh(x)\nvar $export = __webpack_require__(0);\nvar expm1 = __webpack_require__(112);\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC50YW5oLmpzPzQ5MTAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMi4yLjMzIE1hdGgudGFuaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBleHBtMSA9IHJlcXVpcmUoJy4vX21hdGgtZXhwbTEnKTtcbnZhciBleHAgPSBNYXRoLmV4cDtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICB0YW5oOiBmdW5jdGlvbiB0YW5oKHgpIHtcbiAgICB2YXIgYSA9IGV4cG0xKHggPSAreCk7XG4gICAgdmFyIGIgPSBleHBtMSgteCk7XG4gICAgcmV0dXJuIGEgPT0gSW5maW5pdHkgPyAxIDogYiA9PSBJbmZpbml0eSA/IC0xIDogKGEgLSBiKSAvIChleHAoeCkgKyBleHAoLXgpKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgudGFuaC5qc1xuLy8gbW9kdWxlIGlkID0gMjY4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///268\n")},function(module,exports,__webpack_require__){eval("// 20.2.2.34 Math.trunc(x)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC50cnVuYy5qcz8xZjQ5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjIuMi4zNCBNYXRoLnRydW5jKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIHRydW5jOiBmdW5jdGlvbiB0cnVuYyhpdCkge1xuICAgIHJldHVybiAoaXQgPiAwID8gTWF0aC5mbG9vciA6IE1hdGguY2VpbCkoaXQpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC50cnVuYy5qc1xuLy8gbW9kdWxlIGlkID0gMjY5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///269\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar toAbsoluteIndex = __webpack_require__(51);\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZyb20tY29kZS1wb2ludC5qcz82ZWEzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciBmcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xudmFyICRmcm9tQ29kZVBvaW50ID0gU3RyaW5nLmZyb21Db2RlUG9pbnQ7XG5cbi8vIGxlbmd0aCBzaG91bGQgYmUgMSwgb2xkIEZGIHByb2JsZW1cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKCEhJGZyb21Db2RlUG9pbnQgJiYgJGZyb21Db2RlUG9pbnQubGVuZ3RoICE9IDEpLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjIuMiBTdHJpbmcuZnJvbUNvZGVQb2ludCguLi5jb2RlUG9pbnRzKVxuICBmcm9tQ29kZVBvaW50OiBmdW5jdGlvbiBmcm9tQ29kZVBvaW50KHgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBjb2RlO1xuICAgIHdoaWxlIChhTGVuID4gaSkge1xuICAgICAgY29kZSA9ICthcmd1bWVudHNbaSsrXTtcbiAgICAgIGlmICh0b0Fic29sdXRlSW5kZXgoY29kZSwgMHgxMGZmZmYpICE9PSBjb2RlKSB0aHJvdyBSYW5nZUVycm9yKGNvZGUgKyAnIGlzIG5vdCBhIHZhbGlkIGNvZGUgcG9pbnQnKTtcbiAgICAgIHJlcy5wdXNoKGNvZGUgPCAweDEwMDAwXG4gICAgICAgID8gZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICAgIDogZnJvbUNoYXJDb2RlKCgoY29kZSAtPSAweDEwMDAwKSA+PiAxMCkgKyAweGQ4MDAsIGNvZGUgJSAweDQwMCArIDB4ZGMwMClcbiAgICAgICk7XG4gICAgfSByZXR1cm4gcmVzLmpvaW4oJycpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZyb20tY29kZS1wb2ludC5qc1xuLy8gbW9kdWxlIGlkID0gMjcwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///270\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar toIObject = __webpack_require__(24);\nvar toLength = __webpack_require__(14);\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnJhdy5qcz8xNzdiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjIuNCBTdHJpbmcucmF3KGNhbGxTaXRlLCAuLi5zdWJzdGl0dXRpb25zKVxuICByYXc6IGZ1bmN0aW9uIHJhdyhjYWxsU2l0ZSkge1xuICAgIHZhciB0cGwgPSB0b0lPYmplY3QoY2FsbFNpdGUucmF3KTtcbiAgICB2YXIgbGVuID0gdG9MZW5ndGgodHBsLmxlbmd0aCk7XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKGxlbiA+IGkpIHtcbiAgICAgIHJlcy5wdXNoKFN0cmluZyh0cGxbaSsrXSkpO1xuICAgICAgaWYgKGkgPCBhTGVuKSByZXMucHVzaChTdHJpbmcoYXJndW1lbnRzW2ldKSk7XG4gICAgfSByZXR1cm4gcmVzLmpvaW4oJycpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnJhdy5qc1xuLy8gbW9kdWxlIGlkID0gMjcxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///271\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 21.1.3.25 String.prototype.trim()\n__webpack_require__(62)('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnRyaW0uanM/OWExOSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAyMS4xLjMuMjUgU3RyaW5nLnByb3RvdHlwZS50cmltKClcbnJlcXVpcmUoJy4vX3N0cmluZy10cmltJykoJ3RyaW0nLCBmdW5jdGlvbiAoJHRyaW0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyaW0oKSB7XG4gICAgcmV0dXJuICR0cmltKHRoaXMsIDMpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy50cmltLmpzXG4vLyBtb2R1bGUgaWQgPSAyNzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///272\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $at = __webpack_require__(113)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(114)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjczLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yLmpzP2Q0MGQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRhdCA9IHJlcXVpcmUoJy4vX3N0cmluZy1hdCcpKHRydWUpO1xuXG4vLyAyMS4xLjMuMjcgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKFN0cmluZywgJ1N0cmluZycsIGZ1bmN0aW9uIChpdGVyYXRlZCkge1xuICB0aGlzLl90ID0gU3RyaW5nKGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4vLyAyMS4xLjUuMi4xICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGluZGV4ID0gdGhpcy5faTtcbiAgdmFyIHBvaW50O1xuICBpZiAoaW5kZXggPj0gTy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSAkYXQoTywgaW5kZXgpO1xuICB0aGlzLl9pICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIHsgdmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZSB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gMjczXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///273\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $at = __webpack_require__(113)(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjc0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmNvZGUtcG9pbnQtYXQuanM/NDVhNyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRhdCA9IHJlcXVpcmUoJy4vX3N0cmluZy1hdCcpKGZhbHNlKTtcbiRleHBvcnQoJGV4cG9ydC5QLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjMuMyBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0KHBvcylcbiAgY29kZVBvaW50QXQ6IGZ1bmN0aW9uIGNvZGVQb2ludEF0KHBvcykge1xuICAgIHJldHVybiAkYXQodGhpcywgcG9zKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5jb2RlLXBvaW50LWF0LmpzXG4vLyBtb2R1bGUgaWQgPSAyNzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///274\n")},function(module,exports,__webpack_require__){"use strict";eval("// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n\nvar $export = __webpack_require__(0);\nvar toLength = __webpack_require__(14);\nvar context = __webpack_require__(116);\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(117)(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjc1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmVuZHMtd2l0aC5qcz82MzU0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIxLjEuMy42IFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGgoc2VhcmNoU3RyaW5nIFssIGVuZFBvc2l0aW9uXSlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjb250ZXh0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWNvbnRleHQnKTtcbnZhciBFTkRTX1dJVEggPSAnZW5kc1dpdGgnO1xudmFyICRlbmRzV2l0aCA9ICcnW0VORFNfV0lUSF07XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMtaXMtcmVnZXhwJykoRU5EU19XSVRIKSwgJ1N0cmluZycsIHtcbiAgZW5kc1dpdGg6IGZ1bmN0aW9uIGVuZHNXaXRoKHNlYXJjaFN0cmluZyAvKiAsIGVuZFBvc2l0aW9uID0gQGxlbmd0aCAqLykge1xuICAgIHZhciB0aGF0ID0gY29udGV4dCh0aGlzLCBzZWFyY2hTdHJpbmcsIEVORFNfV0lUSCk7XG4gICAgdmFyIGVuZFBvc2l0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIGxlbiA9IHRvTGVuZ3RoKHRoYXQubGVuZ3RoKTtcbiAgICB2YXIgZW5kID0gZW5kUG9zaXRpb24gPT09IHVuZGVmaW5lZCA/IGxlbiA6IE1hdGgubWluKHRvTGVuZ3RoKGVuZFBvc2l0aW9uKSwgbGVuKTtcbiAgICB2YXIgc2VhcmNoID0gU3RyaW5nKHNlYXJjaFN0cmluZyk7XG4gICAgcmV0dXJuICRlbmRzV2l0aFxuICAgICAgPyAkZW5kc1dpdGguY2FsbCh0aGF0LCBzZWFyY2gsIGVuZClcbiAgICAgIDogdGhhdC5zbGljZShlbmQgLSBzZWFyY2gubGVuZ3RoLCBlbmQpID09PSBzZWFyY2g7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuZW5kcy13aXRoLmpzXG4vLyBtb2R1bGUgaWQgPSAyNzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///275\n")},function(module,exports,__webpack_require__){"use strict";eval("// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(0);\nvar context = __webpack_require__(116);\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(117)(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjc2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmluY2x1ZGVzLmpzPzFhMWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjEuMS4zLjcgU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyhzZWFyY2hTdHJpbmcsIHBvc2l0aW9uID0gMClcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29udGV4dCA9IHJlcXVpcmUoJy4vX3N0cmluZy1jb250ZXh0Jyk7XG52YXIgSU5DTFVERVMgPSAnaW5jbHVkZXMnO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzLWlzLXJlZ2V4cCcpKElOQ0xVREVTKSwgJ1N0cmluZycsIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaFN0cmluZyAvKiAsIHBvc2l0aW9uID0gMCAqLykge1xuICAgIHJldHVybiAhIX5jb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgSU5DTFVERVMpXG4gICAgICAuaW5kZXhPZihzZWFyY2hTdHJpbmcsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5pbmNsdWRlcy5qc1xuLy8gbW9kdWxlIGlkID0gMjc2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///276\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: __webpack_require__(110)\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjc3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnJlcGVhdC5qcz9iNmE0Il0sInNvdXJjZXNDb250ZW50IjpbInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjMuMTMgU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQoY291bnQpXG4gIHJlcGVhdDogcmVxdWlyZSgnLi9fc3RyaW5nLXJlcGVhdCcpXG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnJlcGVhdC5qc1xuLy8gbW9kdWxlIGlkID0gMjc3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///277\n")},function(module,exports,__webpack_require__){"use strict";eval("// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n\nvar $export = __webpack_require__(0);\nvar toLength = __webpack_require__(14);\nvar context = __webpack_require__(116);\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(117)(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjc4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0YXJ0cy13aXRoLmpzPzBhZjUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjEuMS4zLjE4IFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcgWywgcG9zaXRpb24gXSlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjb250ZXh0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWNvbnRleHQnKTtcbnZhciBTVEFSVFNfV0lUSCA9ICdzdGFydHNXaXRoJztcbnZhciAkc3RhcnRzV2l0aCA9ICcnW1NUQVJUU19XSVRIXTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscy1pcy1yZWdleHAnKShTVEFSVFNfV0lUSCksICdTdHJpbmcnLCB7XG4gIHN0YXJ0c1dpdGg6IGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nIC8qICwgcG9zaXRpb24gPSAwICovKSB7XG4gICAgdmFyIHRoYXQgPSBjb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgU1RBUlRTX1dJVEgpO1xuICAgIHZhciBpbmRleCA9IHRvTGVuZ3RoKE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCB0aGF0Lmxlbmd0aCkpO1xuICAgIHZhciBzZWFyY2ggPSBTdHJpbmcoc2VhcmNoU3RyaW5nKTtcbiAgICByZXR1cm4gJHN0YXJ0c1dpdGhcbiAgICAgID8gJHN0YXJ0c1dpdGguY2FsbCh0aGF0LCBzZWFyY2gsIGluZGV4KVxuICAgICAgOiB0aGF0LnNsaWNlKGluZGV4LCBpbmRleCArIHNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuc3RhcnRzLXdpdGguanNcbi8vIG1vZHVsZSBpZCA9IDI3OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///278\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.2 String.prototype.anchor(name)\n__webpack_require__(20)('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjc5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmFuY2hvci5qcz9mMGRhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjIgU3RyaW5nLnByb3RvdHlwZS5hbmNob3IobmFtZSlcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2FuY2hvcicsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBhbmNob3IobmFtZSkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdhJywgJ25hbWUnLCBuYW1lKTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuYW5jaG9yLmpzXG4vLyBtb2R1bGUgaWQgPSAyNzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///279\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.3 String.prototype.big()\n__webpack_require__(20)('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjgwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJpZy5qcz80NzhhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjMgU3RyaW5nLnByb3RvdHlwZS5iaWcoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnYmlnJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGJpZygpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYmlnJywgJycsICcnKTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuYmlnLmpzXG4vLyBtb2R1bGUgaWQgPSAyODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///280\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.4 String.prototype.blink()\n__webpack_require__(20)('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjgxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJsaW5rLmpzP2UxMTkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuNCBTdHJpbmcucHJvdG90eXBlLmJsaW5rKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2JsaW5rJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGJsaW5rKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdibGluaycsICcnLCAnJyk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJsaW5rLmpzXG4vLyBtb2R1bGUgaWQgPSAyODFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///281\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.5 String.prototype.bold()\n__webpack_require__(20)('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjgyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJvbGQuanM/ODhjZCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy41IFN0cmluZy5wcm90b3R5cGUuYm9sZCgpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdib2xkJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGJvbGQoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2InLCAnJywgJycpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5ib2xkLmpzXG4vLyBtb2R1bGUgaWQgPSAyODJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///282\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.6 String.prototype.fixed()\n__webpack_require__(20)('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjgzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZpeGVkLmpzPzI3ZTgiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuNiBTdHJpbmcucHJvdG90eXBlLmZpeGVkKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2ZpeGVkJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZpeGVkKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICd0dCcsICcnLCAnJyk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZpeGVkLmpzXG4vLyBtb2R1bGUgaWQgPSAyODNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///283\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.7 String.prototype.fontcolor(color)\n__webpack_require__(20)('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRjb2xvci5qcz9mMzZhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjcgU3RyaW5nLnByb3RvdHlwZS5mb250Y29sb3IoY29sb3IpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdmb250Y29sb3InLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gZm9udGNvbG9yKGNvbG9yKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2ZvbnQnLCAnY29sb3InLCBjb2xvcik7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRjb2xvci5qc1xuLy8gbW9kdWxlIGlkID0gMjg0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///284\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.8 String.prototype.fontsize(size)\n__webpack_require__(20)('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRzaXplLmpzPzVmZjEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuOCBTdHJpbmcucHJvdG90eXBlLmZvbnRzaXplKHNpemUpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdmb250c2l6ZScsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmb250c2l6ZShzaXplKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2ZvbnQnLCAnc2l6ZScsIHNpemUpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5mb250c2l6ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjg1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///285\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.9 String.prototype.italics()\n__webpack_require__(20)('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLml0YWxpY3MuanM/Nzk1MiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy45IFN0cmluZy5wcm90b3R5cGUuaXRhbGljcygpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdpdGFsaWNzJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGl0YWxpY3MoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2knLCAnJywgJycpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5pdGFsaWNzLmpzXG4vLyBtb2R1bGUgaWQgPSAyODZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///286\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.10 String.prototype.link(url)\n__webpack_require__(20)('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmxpbmsuanM/NTA5OCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy4xMCBTdHJpbmcucHJvdG90eXBlLmxpbmsodXJsKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnbGluaycsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBsaW5rKHVybCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdhJywgJ2hyZWYnLCB1cmwpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5saW5rLmpzXG4vLyBtb2R1bGUgaWQgPSAyODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///287\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.11 String.prototype.small()\n__webpack_require__(20)('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnNtYWxsLmpzPzQ5NGYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTEgU3RyaW5nLnByb3RvdHlwZS5zbWFsbCgpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdzbWFsbCcsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzbWFsbCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc21hbGwnLCAnJywgJycpO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5zbWFsbC5qc1xuLy8gbW9kdWxlIGlkID0gMjg4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///288\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.12 String.prototype.strike()\n__webpack_require__(20)('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0cmlrZS5qcz9lNjJjIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjEyIFN0cmluZy5wcm90b3R5cGUuc3RyaWtlKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ3N0cmlrZScsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzdHJpa2UoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ3N0cmlrZScsICcnLCAnJyk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0cmlrZS5qc1xuLy8gbW9kdWxlIGlkID0gMjg5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///289\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.13 String.prototype.sub()\n__webpack_require__(20)('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1Yi5qcz8xMTZhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjEzIFN0cmluZy5wcm90b3R5cGUuc3ViKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ3N1YicsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzdWIoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ3N1YicsICcnLCAnJyk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1Yi5qc1xuLy8gbW9kdWxlIGlkID0gMjkwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///290\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// B.2.3.14 String.prototype.sup()\n__webpack_require__(20)('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1cC5qcz8yNzZhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjE0IFN0cmluZy5wcm90b3R5cGUuc3VwKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ3N1cCcsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzdXAoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ3N1cCcsICcnLCAnJyk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1cC5qc1xuLy8gbW9kdWxlIGlkID0gMjkxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///291\n")},function(module,exports,__webpack_require__){eval("// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS5ub3cuanM/NDFhMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMC4zLjMuMSAvIDE1LjkuNC40IERhdGUubm93KClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnRGF0ZScsIHsgbm93OiBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTsgfSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS5ub3cuanNcbi8vIG1vZHVsZSBpZCA9IDI5MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///292\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar toObject = __webpack_require__(15);\nvar toPrimitive = __webpack_require__(31);\n\n$export($export.P + $export.F * __webpack_require__(5)(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1qc29uLmpzP2YxZjgiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgRGF0ZShOYU4pLnRvSlNPTigpICE9PSBudWxsXG4gICAgfHwgRGF0ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoeyB0b0lTT1N0cmluZzogZnVuY3Rpb24gKCkgeyByZXR1cm4gMTsgfSB9KSAhPT0gMTtcbn0pLCAnRGF0ZScsIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIHRvSlNPTjogZnVuY3Rpb24gdG9KU09OKGtleSkge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIHB2ID0gdG9QcmltaXRpdmUoTyk7XG4gICAgcmV0dXJuIHR5cGVvZiBwdiA9PSAnbnVtYmVyJyAmJiAhaXNGaW5pdGUocHYpID8gbnVsbCA6IE8udG9JU09TdHJpbmcoKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmRhdGUudG8tanNvbi5qc1xuLy8gbW9kdWxlIGlkID0gMjkzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///293\n")},function(module,exports,__webpack_require__){eval("// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = __webpack_require__(0);\nvar toISOString = __webpack_require__(295);\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1pc28tc3RyaW5nLmpzPzUxYjUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMy40LjM2IC8gMTUuOS41LjQzIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JU09TdHJpbmcgPSByZXF1aXJlKCcuL19kYXRlLXRvLWlzby1zdHJpbmcnKTtcblxuLy8gUGhhbnRvbUpTIC8gb2xkIFdlYktpdCBoYXMgYSBicm9rZW4gaW1wbGVtZW50YXRpb25zXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyAhPT0gdG9JU09TdHJpbmcpLCAnRGF0ZScsIHtcbiAgdG9JU09TdHJpbmc6IHRvSVNPU3RyaW5nXG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1pc28tc3RyaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAyOTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///294\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = __webpack_require__(5);\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGF0ZS10by1pc28tc3RyaW5nLmpzPzYzYjQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gMjAuMy40LjM2IC8gMTUuOS41LjQzIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKClcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgZ2V0VGltZSA9IERhdGUucHJvdG90eXBlLmdldFRpbWU7XG52YXIgJHRvSVNPU3RyaW5nID0gRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc7XG5cbnZhciBseiA9IGZ1bmN0aW9uIChudW0pIHtcbiAgcmV0dXJuIG51bSA+IDkgPyBudW0gOiAnMCcgKyBudW07XG59O1xuXG4vLyBQaGFudG9tSlMgLyBvbGQgV2ViS2l0IGhhcyBhIGJyb2tlbiBpbXBsZW1lbnRhdGlvbnNcbm1vZHVsZS5leHBvcnRzID0gKGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICR0b0lTT1N0cmluZy5jYWxsKG5ldyBEYXRlKC01ZTEzIC0gMSkpICE9ICcwMzg1LTA3LTI1VDA3OjA2OjM5Ljk5OVonO1xufSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgJHRvSVNPU3RyaW5nLmNhbGwobmV3IERhdGUoTmFOKSk7XG59KSkgPyBmdW5jdGlvbiB0b0lTT1N0cmluZygpIHtcbiAgaWYgKCFpc0Zpbml0ZShnZXRUaW1lLmNhbGwodGhpcykpKSB0aHJvdyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgdmFyIGQgPSB0aGlzO1xuICB2YXIgeSA9IGQuZ2V0VVRDRnVsbFllYXIoKTtcbiAgdmFyIG0gPSBkLmdldFVUQ01pbGxpc2Vjb25kcygpO1xuICB2YXIgcyA9IHkgPCAwID8gJy0nIDogeSA+IDk5OTkgPyAnKycgOiAnJztcbiAgcmV0dXJuIHMgKyAoJzAwMDAwJyArIE1hdGguYWJzKHkpKS5zbGljZShzID8gLTYgOiAtNCkgK1xuICAgICctJyArIGx6KGQuZ2V0VVRDTW9udGgoKSArIDEpICsgJy0nICsgbHooZC5nZXRVVENEYXRlKCkpICtcbiAgICAnVCcgKyBseihkLmdldFVUQ0hvdXJzKCkpICsgJzonICsgbHooZC5nZXRVVENNaW51dGVzKCkpICtcbiAgICAnOicgKyBseihkLmdldFVUQ1NlY29uZHMoKSkgKyAnLicgKyAobSA+IDk5ID8gbSA6ICcwJyArIGx6KG0pKSArICdaJztcbn0gOiAkdG9JU09TdHJpbmc7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RhdGUtdG8taXNvLXN0cmluZy5qc1xuLy8gbW9kdWxlIGlkID0gMjk1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///295\n")},function(module,exports,__webpack_require__){eval("var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n __webpack_require__(19)(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1zdHJpbmcuanM/NDY0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgRGF0ZVByb3RvID0gRGF0ZS5wcm90b3R5cGU7XG52YXIgSU5WQUxJRF9EQVRFID0gJ0ludmFsaWQgRGF0ZSc7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciAkdG9TdHJpbmcgPSBEYXRlUHJvdG9bVE9fU1RSSU5HXTtcbnZhciBnZXRUaW1lID0gRGF0ZVByb3RvLmdldFRpbWU7XG5pZiAobmV3IERhdGUoTmFOKSArICcnICE9IElOVkFMSURfREFURSkge1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKERhdGVQcm90bywgVE9fU1RSSU5HLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICB2YXIgdmFsdWUgPSBnZXRUaW1lLmNhbGwodGhpcyk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyAkdG9TdHJpbmcuY2FsbCh0aGlzKSA6IElOVkFMSURfREFURTtcbiAgfSk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmRhdGUudG8tc3RyaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAyOTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///296\n")},function(module,exports,__webpack_require__){eval("var TO_PRIMITIVE = __webpack_require__(9)('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) __webpack_require__(18)(proto, TO_PRIMITIVE, __webpack_require__(298));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1wcmltaXRpdmUuanM/ZTEwZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgVE9fUFJJTUlUSVZFID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvUHJpbWl0aXZlJyk7XG52YXIgcHJvdG8gPSBEYXRlLnByb3RvdHlwZTtcblxuaWYgKCEoVE9fUFJJTUlUSVZFIGluIHByb3RvKSkgcmVxdWlyZSgnLi9faGlkZScpKHByb3RvLCBUT19QUklNSVRJVkUsIHJlcXVpcmUoJy4vX2RhdGUtdG8tcHJpbWl0aXZlJykpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5kYXRlLnRvLXByaW1pdGl2ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjk3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///297\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar anObject = __webpack_require__(3);\nvar toPrimitive = __webpack_require__(31);\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGF0ZS10by1wcmltaXRpdmUuanM/OGMxZCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIE5VTUJFUiA9ICdudW1iZXInO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChoaW50KSB7XG4gIGlmIChoaW50ICE9PSAnc3RyaW5nJyAmJiBoaW50ICE9PSBOVU1CRVIgJiYgaGludCAhPT0gJ2RlZmF1bHQnKSB0aHJvdyBUeXBlRXJyb3IoJ0luY29ycmVjdCBoaW50Jyk7XG4gIHJldHVybiB0b1ByaW1pdGl2ZShhbk9iamVjdCh0aGlzKSwgaGludCAhPSBOVU1CRVIpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGF0ZS10by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDI5OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///298\n")},function(module,exports,__webpack_require__){eval("// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Array', { isArray: __webpack_require__(83) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaXMtYXJyYXkuanM/MjBjNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMi4xLjIuMiAvIDE1LjQuMy4yIEFycmF5LmlzQXJyYXkoYXJnKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdBcnJheScsIHsgaXNBcnJheTogcmVxdWlyZSgnLi9faXMtYXJyYXknKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaXMtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDI5OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///299\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar ctx = __webpack_require__(28);\nvar $export = __webpack_require__(0);\nvar toObject = __webpack_require__(15);\nvar call = __webpack_require__(162);\nvar isArrayIter = __webpack_require__(118);\nvar toLength = __webpack_require__(14);\nvar createProperty = __webpack_require__(119);\nvar getIterFn = __webpack_require__(120);\n\n$export($export.S + $export.F * !__webpack_require__(85)(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZnJvbS5qcz82ZGUxIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2NyZWF0ZS1wcm9wZXJ0eScpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0JykoZnVuY3Rpb24gKGl0ZXIpIHsgQXJyYXkuZnJvbShpdGVyKTsgfSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdChhcnJheUxpa2UpO1xuICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBBcnJheTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIG1hcGZuID0gYUxlbiA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGl0ZXJGbiA9IGdldEl0ZXJGbihPKTtcbiAgICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmIChtYXBwaW5nKSBtYXBmbiA9IGN0eChtYXBmbiwgYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQsIDIpO1xuICAgIC8vIGlmIG9iamVjdCBpc24ndCBpdGVyYWJsZSBvciBpdCdzIGFycmF5IHdpdGggZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBzaW1wbGUgY2FzZVxuICAgIGlmIChpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSkge1xuICAgICAgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKE8pLCByZXN1bHQgPSBuZXcgQygpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IGNhbGwoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgICBmb3IgKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQubGVuZ3RoID0gaW5kZXg7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZyb20uanNcbi8vIG1vZHVsZSBpZCA9IDMwMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///300\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar createProperty = __webpack_require__(119);\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * __webpack_require__(5)(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkub2YuanM/YzRjYSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fY3JlYXRlLXByb3BlcnR5Jyk7XG5cbi8vIFdlYktpdCBBcnJheS5vZiBpc24ndCBnZW5lcmljXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGKCkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiAhKEFycmF5Lm9mLmNhbGwoRikgaW5zdGFuY2VvZiBGKTtcbn0pLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMi4zIEFycmF5Lm9mKCAuLi5pdGVtcylcbiAgb2Y6IGZ1bmN0aW9uIG9mKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgcmVzdWx0ID0gbmV3ICh0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nID8gdGhpcyA6IEFycmF5KShhTGVuKTtcbiAgICB3aGlsZSAoYUxlbiA+IGluZGV4KSBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHJlc3VsdC5sZW5ndGggPSBhTGVuO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5vZi5qc1xuLy8gbW9kdWxlIGlkID0gMzAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///301\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = __webpack_require__(0);\nvar toIObject = __webpack_require__(24);\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (__webpack_require__(70) != Object || !__webpack_require__(30)(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuam9pbi5qcz84ZjhkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUuam9pbihzZXBhcmF0b3IpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUpvaW4gPSBbXS5qb2luO1xuXG4vLyBmYWxsYmFjayBmb3Igbm90IGFycmF5LWxpa2Ugc3RyaW5nc1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAocmVxdWlyZSgnLi9faW9iamVjdCcpICE9IE9iamVjdCB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKGFycmF5Sm9pbikpLCAnQXJyYXknLCB7XG4gIGpvaW46IGZ1bmN0aW9uIGpvaW4oc2VwYXJhdG9yKSB7XG4gICAgcmV0dXJuIGFycmF5Sm9pbi5jYWxsKHRvSU9iamVjdCh0aGlzKSwgc2VwYXJhdG9yID09PSB1bmRlZmluZWQgPyAnLCcgOiBzZXBhcmF0b3IpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuam9pbi5qc1xuLy8gbW9kdWxlIGlkID0gMzAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///302\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar html = __webpack_require__(106);\nvar cof = __webpack_require__(29);\nvar toAbsoluteIndex = __webpack_require__(51);\nvar toLength = __webpack_require__(14);\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * __webpack_require__(5)(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc2xpY2UuanM/ZjM1NyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuL19odG1sJyk7XG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFycmF5U2xpY2UgPSBbXS5zbGljZTtcblxuLy8gZmFsbGJhY2sgZm9yIG5vdCBhcnJheS1saWtlIEVTMyBzdHJpbmdzIGFuZCBET00gb2JqZWN0c1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgaWYgKGh0bWwpIGFycmF5U2xpY2UuY2FsbChodG1sKTtcbn0pLCAnQXJyYXknLCB7XG4gIHNsaWNlOiBmdW5jdGlvbiBzbGljZShiZWdpbiwgZW5kKSB7XG4gICAgdmFyIGxlbiA9IHRvTGVuZ3RoKHRoaXMubGVuZ3RoKTtcbiAgICB2YXIga2xhc3MgPSBjb2YodGhpcyk7XG4gICAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiBlbmQ7XG4gICAgaWYgKGtsYXNzID09ICdBcnJheScpIHJldHVybiBhcnJheVNsaWNlLmNhbGwodGhpcywgYmVnaW4sIGVuZCk7XG4gICAgdmFyIHN0YXJ0ID0gdG9BYnNvbHV0ZUluZGV4KGJlZ2luLCBsZW4pO1xuICAgIHZhciB1cFRvID0gdG9BYnNvbHV0ZUluZGV4KGVuZCwgbGVuKTtcbiAgICB2YXIgc2l6ZSA9IHRvTGVuZ3RoKHVwVG8gLSBzdGFydCk7XG4gICAgdmFyIGNsb25lZCA9IG5ldyBBcnJheShzaXplKTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yICg7IGkgPCBzaXplOyBpKyspIGNsb25lZFtpXSA9IGtsYXNzID09ICdTdHJpbmcnXG4gICAgICA/IHRoaXMuY2hhckF0KHN0YXJ0ICsgaSlcbiAgICAgIDogdGhpc1tzdGFydCArIGldO1xuICAgIHJldHVybiBjbG9uZWQ7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5zbGljZS5qc1xuLy8gbW9kdWxlIGlkID0gMzAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///303\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar aFunction = __webpack_require__(16);\nvar toObject = __webpack_require__(15);\nvar fails = __webpack_require__(5);\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !__webpack_require__(30)($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29ydC5qcz9iODM2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyICRzb3J0ID0gW10uc29ydDtcbnZhciB0ZXN0ID0gWzEsIDIsIDNdO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIElFOC1cbiAgdGVzdC5zb3J0KHVuZGVmaW5lZCk7XG59KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBWOCBidWdcbiAgdGVzdC5zb3J0KG51bGwpO1xuICAvLyBPbGQgV2ViS2l0XG59KSB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKCRzb3J0KSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjI1IEFycmF5LnByb3RvdHlwZS5zb3J0KGNvbXBhcmVmbilcbiAgc29ydDogZnVuY3Rpb24gc29ydChjb21wYXJlZm4pIHtcbiAgICByZXR1cm4gY29tcGFyZWZuID09PSB1bmRlZmluZWRcbiAgICAgID8gJHNvcnQuY2FsbCh0b09iamVjdCh0aGlzKSlcbiAgICAgIDogJHNvcnQuY2FsbCh0b09iamVjdCh0aGlzKSwgYUZ1bmN0aW9uKGNvbXBhcmVmbikpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29ydC5qc1xuLy8gbW9kdWxlIGlkID0gMzA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///304\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $forEach = __webpack_require__(35)(0);\nvar STRICT = __webpack_require__(30)([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZm9yLWVhY2guanM/MDg0MyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRmb3JFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDApO1xudmFyIFNUUklDVCA9IHJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5mb3JFYWNoLCB0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhU1RSSUNULCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xMCAvIDE1LjQuNC4xOCBBcnJheS5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuIFssIHRoaXNBcmddKVxuICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRmb3JFYWNoKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5mb3ItZWFjaC5qc1xuLy8gbW9kdWxlIGlkID0gMzA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///305\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nvar isArray = __webpack_require__(83);\nvar SPECIES = __webpack_require__(9)('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktc3BlY2llcy1jb25zdHJ1Y3Rvci5qcz82ZThhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL19pcy1hcnJheScpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbCkge1xuICB2YXIgQztcbiAgaWYgKGlzQXJyYXkob3JpZ2luYWwpKSB7XG4gICAgQyA9IG9yaWdpbmFsLmNvbnN0cnVjdG9yO1xuICAgIC8vIGNyb3NzLXJlYWxtIGZhbGxiYWNrXG4gICAgaWYgKHR5cGVvZiBDID09ICdmdW5jdGlvbicgJiYgKEMgPT09IEFycmF5IHx8IGlzQXJyYXkoQy5wcm90b3R5cGUpKSkgQyA9IHVuZGVmaW5lZDtcbiAgICBpZiAoaXNPYmplY3QoQykpIHtcbiAgICAgIEMgPSBDW1NQRUNJRVNdO1xuICAgICAgaWYgKEMgPT09IG51bGwpIEMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IHJldHVybiBDID09PSB1bmRlZmluZWQgPyBBcnJheSA6IEM7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSAzMDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///306\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $map = __webpack_require__(35)(1);\n\n$export($export.P + $export.F * !__webpack_require__(30)([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkubWFwLmpzP2MzYTUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkbWFwID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDEpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10ubWFwLCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTUgLyAxNS40LjQuMTkgQXJyYXkucHJvdG90eXBlLm1hcChjYWxsYmFja2ZuIFssIHRoaXNBcmddKVxuICBtYXA6IGZ1bmN0aW9uIG1hcChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkbWFwKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5tYXAuanNcbi8vIG1vZHVsZSBpZCA9IDMwN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///307\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $filter = __webpack_require__(35)(2);\n\n$export($export.P + $export.F * !__webpack_require__(30)([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmlsdGVyLmpzPzdjZTciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDIpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10uZmlsdGVyLCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuNyAvIDE1LjQuNC4yMCBBcnJheS5wcm90b3R5cGUuZmlsdGVyKGNhbGxiYWNrZm4gWywgdGhpc0FyZ10pXG4gIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRmaWx0ZXIodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZpbHRlci5qc1xuLy8gbW9kdWxlIGlkID0gMzA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///308\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $some = __webpack_require__(35)(3);\n\n$export($export.P + $export.F * !__webpack_require__(30)([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29tZS5qcz9jMTU3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHNvbWUgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5zb21lLCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMjMgLyAxNS40LjQuMTcgQXJyYXkucHJvdG90eXBlLnNvbWUoY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgc29tZTogZnVuY3Rpb24gc29tZShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkc29tZSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29tZS5qc1xuLy8gbW9kdWxlIGlkID0gMzA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///309\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $every = __webpack_require__(35)(4);\n\n$export($export.P + $export.F * !__webpack_require__(30)([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZXZlcnkuanM/MzY0YSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRldmVyeSA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSg0KTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLmV2ZXJ5LCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuNSAvIDE1LjQuNC4xNiBBcnJheS5wcm90b3R5cGUuZXZlcnkoY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgZXZlcnk6IGZ1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRldmVyeSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZXZlcnkuanNcbi8vIG1vZHVsZSBpZCA9IDMxMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///310\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $reduce = __webpack_require__(163);\n\n$export($export.P + $export.F * !__webpack_require__(30)([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlLmpzP2MyNzQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXktcmVkdWNlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5yZWR1Y2UsIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xOCAvIDE1LjQuNC4yMSBBcnJheS5wcm90b3R5cGUucmVkdWNlKGNhbGxiYWNrZm4gWywgaW5pdGlhbFZhbHVlXSlcbiAgcmVkdWNlOiBmdW5jdGlvbiByZWR1Y2UoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykge1xuICAgIHJldHVybiAkcmVkdWNlKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3VtZW50c1sxXSwgZmFsc2UpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlLmpzXG4vLyBtb2R1bGUgaWQgPSAzMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///311\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $reduce = __webpack_require__(163);\n\n$export($export.P + $export.F * !__webpack_require__(30)([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlLXJpZ2h0LmpzPzk2NDQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXktcmVkdWNlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5yZWR1Y2VSaWdodCwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjE5IC8gMTUuNC40LjIyIEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodChjYWxsYmFja2ZuIFssIGluaXRpYWxWYWx1ZV0pXG4gIHJlZHVjZVJpZ2h0OiBmdW5jdGlvbiByZWR1Y2VSaWdodChjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gICAgcmV0dXJuICRyZWR1Y2UodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCwgYXJndW1lbnRzWzFdLCB0cnVlKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LnJlZHVjZS1yaWdodC5qc1xuLy8gbW9kdWxlIGlkID0gMzEyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///312\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $indexOf = __webpack_require__(81)(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(30)($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaW5kZXgtb2YuanM/ZjgyMyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRpbmRleE9mID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKShmYWxzZSk7XG52YXIgJG5hdGl2ZSA9IFtdLmluZGV4T2Y7XG52YXIgTkVHQVRJVkVfWkVSTyA9ICEhJG5hdGl2ZSAmJiAxIC8gWzFdLmluZGV4T2YoMSwgLTApIDwgMDtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoTkVHQVRJVkVfWkVSTyB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKCRuYXRpdmUpKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTEgLyAxNS40LjQuMTQgQXJyYXkucHJvdG90eXBlLmluZGV4T2Yoc2VhcmNoRWxlbWVudCBbLCBmcm9tSW5kZXhdKVxuICBpbmRleE9mOiBmdW5jdGlvbiBpbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggPSAwICovKSB7XG4gICAgcmV0dXJuIE5FR0FUSVZFX1pFUk9cbiAgICAgIC8vIGNvbnZlcnQgLTAgdG8gKzBcbiAgICAgID8gJG5hdGl2ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IDBcbiAgICAgIDogJGluZGV4T2YodGhpcywgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmluZGV4LW9mLmpzXG4vLyBtb2R1bGUgaWQgPSAzMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///313\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar toIObject = __webpack_require__(24);\nvar toInteger = __webpack_require__(33);\nvar toLength = __webpack_require__(14);\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(30)($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkubGFzdC1pbmRleC1vZi5qcz9hMDcyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyICRuYXRpdmUgPSBbXS5sYXN0SW5kZXhPZjtcbnZhciBORUdBVElWRV9aRVJPID0gISEkbmF0aXZlICYmIDEgLyBbMV0ubGFzdEluZGV4T2YoMSwgLTApIDwgMDtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoTkVHQVRJVkVfWkVSTyB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKCRuYXRpdmUpKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTQgLyAxNS40LjQuMTUgQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgWywgZnJvbUluZGV4XSlcbiAgbGFzdEluZGV4T2Y6IGZ1bmN0aW9uIGxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggPSBAWyotMV0gKi8pIHtcbiAgICAvLyBjb252ZXJ0IC0wIHRvICswXG4gICAgaWYgKE5FR0FUSVZFX1pFUk8pIHJldHVybiAkbmF0aXZlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgMDtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCh0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IGxlbmd0aCAtIDE7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSBpbmRleCA9IE1hdGgubWluKGluZGV4LCB0b0ludGVnZXIoYXJndW1lbnRzWzFdKSk7XG4gICAgaWYgKGluZGV4IDwgMCkgaW5kZXggPSBsZW5ndGggKyBpbmRleDtcbiAgICBmb3IgKDtpbmRleCA+PSAwOyBpbmRleC0tKSBpZiAoaW5kZXggaW4gTykgaWYgKE9baW5kZXhdID09PSBzZWFyY2hFbGVtZW50KSByZXR1cm4gaW5kZXggfHwgMDtcbiAgICByZXR1cm4gLTE7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5sYXN0LWluZGV4LW9mLmpzXG4vLyBtb2R1bGUgaWQgPSAzMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///314\n")},function(module,exports,__webpack_require__){eval("// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = __webpack_require__(0);\n\n$export($export.P, 'Array', { copyWithin: __webpack_require__(164) });\n\n__webpack_require__(45)('copyWithin');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuY29weS13aXRoaW4uanM/ZjZmNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyMi4xLjMuMyBBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0LCBlbmQgPSB0aGlzLmxlbmd0aClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7IGNvcHlXaXRoaW46IHJlcXVpcmUoJy4vX2FycmF5LWNvcHktd2l0aGluJykgfSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdjb3B5V2l0aGluJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmNvcHktd2l0aGluLmpzXG4vLyBtb2R1bGUgaWQgPSAzMTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///315\n")},function(module,exports,__webpack_require__){eval("// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = __webpack_require__(0);\n\n$export($export.P, 'Array', { fill: __webpack_require__(122) });\n\n__webpack_require__(45)('fill');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmlsbC5qcz8zNjhlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIyLjEuMy42IEFycmF5LnByb3RvdHlwZS5maWxsKHZhbHVlLCBzdGFydCA9IDAsIGVuZCA9IHRoaXMubGVuZ3RoKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdBcnJheScsIHsgZmlsbDogcmVxdWlyZSgnLi9fYXJyYXktZmlsbCcpIH0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnZmlsbCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5maWxsLmpzXG4vLyBtb2R1bGUgaWQgPSAzMTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///316\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = __webpack_require__(0);\nvar $find = __webpack_require__(35)(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n__webpack_require__(45)(KEY);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC5qcz81YTk0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDIyLjEuMy44IEFycmF5LnByb3RvdHlwZS5maW5kKHByZWRpY2F0ZSwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGZpbmQgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoNSk7XG52YXIgS0VZID0gJ2ZpbmQnO1xudmFyIGZvcmNlZCA9IHRydWU7XG4vLyBTaG91bGRuJ3Qgc2tpcCBob2xlc1xuaWYgKEtFWSBpbiBbXSkgQXJyYXkoMSlbS0VZXShmdW5jdGlvbiAoKSB7IGZvcmNlZCA9IGZhbHNlOyB9KTtcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogZm9yY2VkLCAnQXJyYXknLCB7XG4gIGZpbmQ6IGZ1bmN0aW9uIGZpbmQoY2FsbGJhY2tmbiAvKiAsIHRoYXQgPSB1bmRlZmluZWQgKi8pIHtcbiAgICByZXR1cm4gJGZpbmQodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKEtFWSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZpbmQuanNcbi8vIG1vZHVsZSBpZCA9IDMxN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///317\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = __webpack_require__(0);\nvar $find = __webpack_require__(35)(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n__webpack_require__(45)(KEY);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC1pbmRleC5qcz81M2FhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIDIyLjEuMy45IEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXgocHJlZGljYXRlLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZmluZCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSg2KTtcbnZhciBLRVkgPSAnZmluZEluZGV4JztcbnZhciBmb3JjZWQgPSB0cnVlO1xuLy8gU2hvdWxkbid0IHNraXAgaG9sZXNcbmlmIChLRVkgaW4gW10pIEFycmF5KDEpW0tFWV0oZnVuY3Rpb24gKCkgeyBmb3JjZWQgPSBmYWxzZTsgfSk7XG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIGZvcmNlZCwgJ0FycmF5Jywge1xuICBmaW5kSW5kZXg6IGZ1bmN0aW9uIGZpbmRJbmRleChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgIHJldHVybiAkZmluZCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xucmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJykoS0VZKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC1pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMzE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///318\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(54)('Array');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc3BlY2llcy5qcz80M2YwIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoJ0FycmF5Jyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LnNwZWNpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDMxOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///319\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(4);\nvar inheritIfRequired = __webpack_require__(109);\nvar dP = __webpack_require__(13).f;\nvar gOPN = __webpack_require__(53).f;\nvar isRegExp = __webpack_require__(84);\nvar $flags = __webpack_require__(86);\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (__webpack_require__(12) && (!CORRECT_NEW || __webpack_require__(5)(function () {\n re2[__webpack_require__(9)('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n __webpack_require__(19)(global, 'RegExp', $RegExp);\n}\n\n__webpack_require__(54)('RegExp');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLmNvbnN0cnVjdG9yLmpzPzk2NzYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gcmVxdWlyZSgnLi9faW5oZXJpdC1pZi1yZXF1aXJlZCcpO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG52YXIgJGZsYWdzID0gcmVxdWlyZSgnLi9fZmxhZ3MnKTtcbnZhciAkUmVnRXhwID0gZ2xvYmFsLlJlZ0V4cDtcbnZhciBCYXNlID0gJFJlZ0V4cDtcbnZhciBwcm90byA9ICRSZWdFeHAucHJvdG90eXBlO1xudmFyIHJlMSA9IC9hL2c7XG52YXIgcmUyID0gL2EvZztcbi8vIFwibmV3XCIgY3JlYXRlcyBhIG5ldyBvYmplY3QsIG9sZCB3ZWJraXQgYnVnZ3kgaGVyZVxudmFyIENPUlJFQ1RfTkVXID0gbmV3ICRSZWdFeHAocmUxKSAhPT0gcmUxO1xuXG5pZiAocmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAoIUNPUlJFQ1RfTkVXIHx8IHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZTJbcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyldID0gZmFsc2U7XG4gIC8vIFJlZ0V4cCBjb25zdHJ1Y3RvciBjYW4gYWx0ZXIgZmxhZ3MgYW5kIElzUmVnRXhwIHdvcmtzIGNvcnJlY3Qgd2l0aCBAQG1hdGNoXG4gIHJldHVybiAkUmVnRXhwKHJlMSkgIT0gcmUxIHx8ICRSZWdFeHAocmUyKSA9PSByZTIgfHwgJFJlZ0V4cChyZTEsICdpJykgIT0gJy9hL2knO1xufSkpKSB7XG4gICRSZWdFeHAgPSBmdW5jdGlvbiBSZWdFeHAocCwgZikge1xuICAgIHZhciB0aVJFID0gdGhpcyBpbnN0YW5jZW9mICRSZWdFeHA7XG4gICAgdmFyIHBpUkUgPSBpc1JlZ0V4cChwKTtcbiAgICB2YXIgZmlVID0gZiA9PT0gdW5kZWZpbmVkO1xuICAgIHJldHVybiAhdGlSRSAmJiBwaVJFICYmIHAuY29uc3RydWN0b3IgPT09ICRSZWdFeHAgJiYgZmlVID8gcFxuICAgICAgOiBpbmhlcml0SWZSZXF1aXJlZChDT1JSRUNUX05FV1xuICAgICAgICA/IG5ldyBCYXNlKHBpUkUgJiYgIWZpVSA/IHAuc291cmNlIDogcCwgZilcbiAgICAgICAgOiBCYXNlKChwaVJFID0gcCBpbnN0YW5jZW9mICRSZWdFeHApID8gcC5zb3VyY2UgOiBwLCBwaVJFICYmIGZpVSA/ICRmbGFncy5jYWxsKHApIDogZilcbiAgICAgICwgdGlSRSA/IHRoaXMgOiBwcm90bywgJFJlZ0V4cCk7XG4gIH07XG4gIHZhciBwcm94eSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICBrZXkgaW4gJFJlZ0V4cCB8fCBkUCgkUmVnRXhwLCBrZXksIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQmFzZVtrZXldOyB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAoaXQpIHsgQmFzZVtrZXldID0gaXQ7IH1cbiAgICB9KTtcbiAgfTtcbiAgZm9yICh2YXIga2V5cyA9IGdPUE4oQmFzZSksIGkgPSAwOyBrZXlzLmxlbmd0aCA+IGk7KSBwcm94eShrZXlzW2krK10pO1xuICBwcm90by5jb25zdHJ1Y3RvciA9ICRSZWdFeHA7XG4gICRSZWdFeHAucHJvdG90eXBlID0gcHJvdG87XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoZ2xvYmFsLCAnUmVnRXhwJywgJFJlZ0V4cCk7XG59XG5cbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoJ1JlZ0V4cCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuY29uc3RydWN0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDMyMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///320\n")},function(module,exports,__webpack_require__){"use strict";eval("\n__webpack_require__(166);\nvar anObject = __webpack_require__(3);\nvar $flags = __webpack_require__(86);\nvar DESCRIPTORS = __webpack_require__(12);\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n __webpack_require__(19)(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (__webpack_require__(5)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLnRvLXN0cmluZy5qcz8xNWE2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4vZXM2LnJlZ2V4cC5mbGFncycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgJGZsYWdzID0gcmVxdWlyZSgnLi9fZmxhZ3MnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciAkdG9TdHJpbmcgPSAvLi9bVE9fU1RSSU5HXTtcblxudmFyIGRlZmluZSA9IGZ1bmN0aW9uIChmbikge1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKFJlZ0V4cC5wcm90b3R5cGUsIFRPX1NUUklORywgZm4sIHRydWUpO1xufTtcblxuLy8gMjEuMi41LjE0IFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcoKVxuaWYgKHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkgeyByZXR1cm4gJHRvU3RyaW5nLmNhbGwoeyBzb3VyY2U6ICdhJywgZmxhZ3M6ICdiJyB9KSAhPSAnL2EvYic7IH0pKSB7XG4gIGRlZmluZShmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICB2YXIgUiA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHJldHVybiAnLycuY29uY2F0KFIuc291cmNlLCAnLycsXG4gICAgICAnZmxhZ3MnIGluIFIgPyBSLmZsYWdzIDogIURFU0NSSVBUT1JTICYmIFIgaW5zdGFuY2VvZiBSZWdFeHAgPyAkZmxhZ3MuY2FsbChSKSA6IHVuZGVmaW5lZCk7XG4gIH0pO1xuLy8gRkY0NC0gUmVnRXhwI3RvU3RyaW5nIGhhcyBhIHdyb25nIG5hbWVcbn0gZWxzZSBpZiAoJHRvU3RyaW5nLm5hbWUgIT0gVE9fU1RSSU5HKSB7XG4gIGRlZmluZShmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gJHRvU3RyaW5nLmNhbGwodGhpcyk7XG4gIH0pO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAudG8tc3RyaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAzMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///321\n")},function(module,exports,__webpack_require__){eval("// @@match logic\n__webpack_require__(87)('match', 1, function (defined, MATCH, $match) {\n // 21.1.3.11 String.prototype.match(regexp)\n return [function match(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n }, $match];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLm1hdGNoLmpzPzMxZjciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQEBtYXRjaCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdtYXRjaCcsIDEsIGZ1bmN0aW9uIChkZWZpbmVkLCBNQVRDSCwgJG1hdGNoKSB7XG4gIC8vIDIxLjEuMy4xMSBTdHJpbmcucHJvdG90eXBlLm1hdGNoKHJlZ2V4cClcbiAgcmV0dXJuIFtmdW5jdGlvbiBtYXRjaChyZWdleHApIHtcbiAgICAndXNlIHN0cmljdCc7XG4gICAgdmFyIE8gPSBkZWZpbmVkKHRoaXMpO1xuICAgIHZhciBmbiA9IHJlZ2V4cCA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByZWdleHBbTUFUQ0hdO1xuICAgIHJldHVybiBmbiAhPT0gdW5kZWZpbmVkID8gZm4uY2FsbChyZWdleHAsIE8pIDogbmV3IFJlZ0V4cChyZWdleHApW01BVENIXShTdHJpbmcoTykpO1xuICB9LCAkbWF0Y2hdO1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5tYXRjaC5qc1xuLy8gbW9kdWxlIGlkID0gMzIyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///322\n")},function(module,exports,__webpack_require__){eval("// @@replace logic\n__webpack_require__(87)('replace', 2, function (defined, REPLACE, $replace) {\n // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)\n return [function replace(searchValue, replaceValue) {\n 'use strict';\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n }, $replace];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLnJlcGxhY2UuanM/NTYzYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAQHJlcGxhY2UgbG9naWNcbnJlcXVpcmUoJy4vX2ZpeC1yZS13a3MnKSgncmVwbGFjZScsIDIsIGZ1bmN0aW9uIChkZWZpbmVkLCBSRVBMQUNFLCAkcmVwbGFjZSkge1xuICAvLyAyMS4xLjMuMTQgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpXG4gIHJldHVybiBbZnVuY3Rpb24gcmVwbGFjZShzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICB2YXIgZm4gPSBzZWFyY2hWYWx1ZSA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzZWFyY2hWYWx1ZVtSRVBMQUNFXTtcbiAgICByZXR1cm4gZm4gIT09IHVuZGVmaW5lZFxuICAgICAgPyBmbi5jYWxsKHNlYXJjaFZhbHVlLCBPLCByZXBsYWNlVmFsdWUpXG4gICAgICA6ICRyZXBsYWNlLmNhbGwoU3RyaW5nKE8pLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTtcbiAgfSwgJHJlcGxhY2VdO1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5yZXBsYWNlLmpzXG4vLyBtb2R1bGUgaWQgPSAzMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///323\n")},function(module,exports,__webpack_require__){eval("// @@search logic\n__webpack_require__(87)('search', 1, function (defined, SEARCH, $search) {\n // 21.1.3.15 String.prototype.search(regexp)\n return [function search(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n }, $search];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzI0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLnNlYXJjaC5qcz9hYjA0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEBAc2VhcmNoIGxvZ2ljXG5yZXF1aXJlKCcuL19maXgtcmUtd2tzJykoJ3NlYXJjaCcsIDEsIGZ1bmN0aW9uIChkZWZpbmVkLCBTRUFSQ0gsICRzZWFyY2gpIHtcbiAgLy8gMjEuMS4zLjE1IFN0cmluZy5wcm90b3R5cGUuc2VhcmNoKHJlZ2V4cClcbiAgcmV0dXJuIFtmdW5jdGlvbiBzZWFyY2gocmVnZXhwKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICB2YXIgZm4gPSByZWdleHAgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogcmVnZXhwW1NFQVJDSF07XG4gICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWQgPyBmbi5jYWxsKHJlZ2V4cCwgTykgOiBuZXcgUmVnRXhwKHJlZ2V4cClbU0VBUkNIXShTdHJpbmcoTykpO1xuICB9LCAkc2VhcmNoXTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuc2VhcmNoLmpzXG4vLyBtb2R1bGUgaWQgPSAzMjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///324\n")},function(module,exports,__webpack_require__){eval("// @@split logic\n__webpack_require__(87)('split', 2, function (defined, SPLIT, $split) {\n 'use strict';\n var isRegExp = __webpack_require__(84);\n var _split = $split;\n var $push = [].push;\n var $SPLIT = 'split';\n var LENGTH = 'length';\n var LAST_INDEX = 'lastIndex';\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n // based on es5-shim implementation, need to rework it\n $split = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return _split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var separator2, match, lastIndex, lastLength, i;\n // Doesn't need flags gy, but they don't hurt\n if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n while (match = separatorCopy.exec(string)) {\n // `separatorCopy.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0][LENGTH];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n // eslint-disable-next-line no-loop-func\n if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {\n for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;\n });\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n $split = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n };\n }\n // 21.1.3.17 String.prototype.split(separator, limit)\n return [function split(separator, limit) {\n var O = defined(this);\n var fn = separator == undefined ? undefined : separator[SPLIT];\n return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n }, $split];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzI1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLnNwbGl0LmpzPzk4OWMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQEBzcGxpdCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdzcGxpdCcsIDIsIGZ1bmN0aW9uIChkZWZpbmVkLCBTUExJVCwgJHNwbGl0KSB7XG4gICd1c2Ugc3RyaWN0JztcbiAgdmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG4gIHZhciBfc3BsaXQgPSAkc3BsaXQ7XG4gIHZhciAkcHVzaCA9IFtdLnB1c2g7XG4gIHZhciAkU1BMSVQgPSAnc3BsaXQnO1xuICB2YXIgTEVOR1RIID0gJ2xlbmd0aCc7XG4gIHZhciBMQVNUX0lOREVYID0gJ2xhc3RJbmRleCc7XG4gIGlmIChcbiAgICAnYWJiYydbJFNQTElUXSgvKGIpKi8pWzFdID09ICdjJyB8fFxuICAgICd0ZXN0J1skU1BMSVRdKC8oPzopLywgLTEpW0xFTkdUSF0gIT0gNCB8fFxuICAgICdhYidbJFNQTElUXSgvKD86YWIpKi8pW0xFTkdUSF0gIT0gMiB8fFxuICAgICcuJ1skU1BMSVRdKC8oLj8pKC4/KS8pW0xFTkdUSF0gIT0gNCB8fFxuICAgICcuJ1skU1BMSVRdKC8oKSgpLylbTEVOR1RIXSA+IDEgfHxcbiAgICAnJ1skU1BMSVRdKC8uPy8pW0xFTkdUSF1cbiAgKSB7XG4gICAgdmFyIE5QQ0cgPSAvKCk/Py8uZXhlYygnJylbMV0gPT09IHVuZGVmaW5lZDsgLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBcbiAgICAvLyBiYXNlZCBvbiBlczUtc2hpbSBpbXBsZW1lbnRhdGlvbiwgbmVlZCB0byByZXdvcmsgaXRcbiAgICAkc3BsaXQgPSBmdW5jdGlvbiAoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgdmFyIHN0cmluZyA9IFN0cmluZyh0aGlzKTtcbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCAmJiBsaW1pdCA9PT0gMCkgcmV0dXJuIFtdO1xuICAgICAgLy8gSWYgYHNlcGFyYXRvcmAgaXMgbm90IGEgcmVnZXgsIHVzZSBuYXRpdmUgc3BsaXRcbiAgICAgIGlmICghaXNSZWdFeHAoc2VwYXJhdG9yKSkgcmV0dXJuIF9zcGxpdC5jYWxsKHN0cmluZywgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICB2YXIgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyAnaScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyAnbScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci51bmljb2RlID8gJ3UnIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3Iuc3RpY2t5ID8gJ3knIDogJycpO1xuICAgICAgdmFyIGxhc3RMYXN0SW5kZXggPSAwO1xuICAgICAgdmFyIHNwbGl0TGltaXQgPSBsaW1pdCA9PT0gdW5kZWZpbmVkID8gNDI5NDk2NzI5NSA6IGxpbWl0ID4+PiAwO1xuICAgICAgLy8gTWFrZSBgZ2xvYmFsYCBhbmQgYXZvaWQgYGxhc3RJbmRleGAgaXNzdWVzIGJ5IHdvcmtpbmcgd2l0aCBhIGNvcHlcbiAgICAgIHZhciBzZXBhcmF0b3JDb3B5ID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArICdnJyk7XG4gICAgICB2YXIgc2VwYXJhdG9yMiwgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aCwgaTtcbiAgICAgIC8vIERvZXNuJ3QgbmVlZCBmbGFncyBneSwgYnV0IHRoZXkgZG9uJ3QgaHVydFxuICAgICAgaWYgKCFOUENHKSBzZXBhcmF0b3IyID0gbmV3IFJlZ0V4cCgnXicgKyBzZXBhcmF0b3JDb3B5LnNvdXJjZSArICckKD8hXFxcXHMpJywgZmxhZ3MpO1xuICAgICAgd2hpbGUgKG1hdGNoID0gc2VwYXJhdG9yQ29weS5leGVjKHN0cmluZykpIHtcbiAgICAgICAgLy8gYHNlcGFyYXRvckNvcHkubGFzdEluZGV4YCBpcyBub3QgcmVsaWFibGUgY3Jvc3MtYnJvd3NlclxuICAgICAgICBsYXN0SW5kZXggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdW0xFTkdUSF07XG4gICAgICAgIGlmIChsYXN0SW5kZXggPiBsYXN0TGFzdEluZGV4KSB7XG4gICAgICAgICAgb3V0cHV0LnB1c2goc3RyaW5nLnNsaWNlKGxhc3RMYXN0SW5kZXgsIG1hdGNoLmluZGV4KSk7XG4gICAgICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGAgZm9yIE5QQ0dcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbG9vcC1mdW5jXG4gICAgICAgICAgaWYgKCFOUENHICYmIG1hdGNoW0xFTkdUSF0gPiAxKSBtYXRjaFswXS5yZXBsYWNlKHNlcGFyYXRvcjIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBhcmd1bWVudHNbTEVOR1RIXSAtIDI7IGkrKykgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWZpbmVkKSBtYXRjaFtpXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAobWF0Y2hbTEVOR1RIXSA+IDEgJiYgbWF0Y2guaW5kZXggPCBzdHJpbmdbTEVOR1RIXSkgJHB1c2guYXBwbHkob3V0cHV0LCBtYXRjaC5zbGljZSgxKSk7XG4gICAgICAgICAgbGFzdExlbmd0aCA9IG1hdGNoWzBdW0xFTkdUSF07XG4gICAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgICBpZiAob3V0cHV0W0xFTkdUSF0gPj0gc3BsaXRMaW1pdCkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlcGFyYXRvckNvcHlbTEFTVF9JTkRFWF0gPT09IG1hdGNoLmluZGV4KSBzZXBhcmF0b3JDb3B5W0xBU1RfSU5ERVhdKys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICAgIGlmIChsYXN0TGFzdEluZGV4ID09PSBzdHJpbmdbTEVOR1RIXSkge1xuICAgICAgICBpZiAobGFzdExlbmd0aCB8fCAhc2VwYXJhdG9yQ29weS50ZXN0KCcnKSkgb3V0cHV0LnB1c2goJycpO1xuICAgICAgfSBlbHNlIG91dHB1dC5wdXNoKHN0cmluZy5zbGljZShsYXN0TGFzdEluZGV4KSk7XG4gICAgICByZXR1cm4gb3V0cHV0W0xFTkdUSF0gPiBzcGxpdExpbWl0ID8gb3V0cHV0LnNsaWNlKDAsIHNwbGl0TGltaXQpIDogb3V0cHV0O1xuICAgIH07XG4gIC8vIENoYWtyYSwgVjhcbiAgfSBlbHNlIGlmICgnMCdbJFNQTElUXSh1bmRlZmluZWQsIDApW0xFTkdUSF0pIHtcbiAgICAkc3BsaXQgPSBmdW5jdGlvbiAoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgcmV0dXJuIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkICYmIGxpbWl0ID09PSAwID8gW10gOiBfc3BsaXQuY2FsbCh0aGlzLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9O1xuICB9XG4gIC8vIDIxLjEuMy4xNyBTdHJpbmcucHJvdG90eXBlLnNwbGl0KHNlcGFyYXRvciwgbGltaXQpXG4gIHJldHVybiBbZnVuY3Rpb24gc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICB2YXIgZm4gPSBzZXBhcmF0b3IgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogc2VwYXJhdG9yW1NQTElUXTtcbiAgICByZXR1cm4gZm4gIT09IHVuZGVmaW5lZCA/IGZuLmNhbGwoc2VwYXJhdG9yLCBPLCBsaW1pdCkgOiAkc3BsaXQuY2FsbChTdHJpbmcoTyksIHNlcGFyYXRvciwgbGltaXQpO1xuICB9LCAkc3BsaXRdO1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5zcGxpdC5qc1xuLy8gbW9kdWxlIGlkID0gMzI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///325\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(44);\nvar global = __webpack_require__(4);\nvar ctx = __webpack_require__(28);\nvar classof = __webpack_require__(72);\nvar $export = __webpack_require__(0);\nvar isObject = __webpack_require__(6);\nvar aFunction = __webpack_require__(16);\nvar anInstance = __webpack_require__(55);\nvar forOf = __webpack_require__(56);\nvar speciesConstructor = __webpack_require__(88);\nvar task = __webpack_require__(124).set;\nvar microtask = __webpack_require__(125)();\nvar newPromiseCapabilityModule = __webpack_require__(126);\nvar perform = __webpack_require__(167);\nvar userAgent = __webpack_require__(89);\nvar promiseResolve = __webpack_require__(168);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(9)('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(57)($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(61)($Promise, PROMISE);\n__webpack_require__(54)(PROMISE);\nWrapper = __webpack_require__(27)[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(85)(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzI2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucHJvbWlzZS5qcz9jYmQ5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHRhc2sgPSByZXF1aXJlKCcuL190YXNrJykuc2V0O1xudmFyIG1pY3JvdGFzayA9IHJlcXVpcmUoJy4vX21pY3JvdGFzaycpKCk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4vX3BlcmZvcm0nKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuL191c2VyLWFnZW50Jyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuL19wcm9taXNlLXJlc29sdmUnKTtcbnZhciBQUk9NSVNFID0gJ1Byb21pc2UnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHZlcnNpb25zID0gcHJvY2VzcyAmJiBwcm9jZXNzLnZlcnNpb25zO1xudmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjggfHwgJyc7XG52YXIgJFByb21pc2UgPSBnbG9iYWxbUFJPTUlTRV07XG52YXIgaXNOb2RlID0gY2xhc3NvZihwcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG52YXIgZW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgSW50ZXJuYWwsIG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSwgT3duUHJvbWlzZUNhcGFiaWxpdHksIFdyYXBwZXI7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mO1xuXG52YXIgVVNFX05BVElWRSA9ICEhZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIC8vIGNvcnJlY3Qgc3ViY2xhc3Npbmcgd2l0aCBAQHNwZWNpZXMgc3VwcG9ydFxuICAgIHZhciBwcm9taXNlID0gJFByb21pc2UucmVzb2x2ZSgxKTtcbiAgICB2YXIgRmFrZVByb21pc2UgPSAocHJvbWlzZS5jb25zdHJ1Y3RvciA9IHt9KVtyZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpXSA9IGZ1bmN0aW9uIChleGVjKSB7XG4gICAgICBleGVjKGVtcHR5LCBlbXB0eSk7XG4gICAgfTtcbiAgICAvLyB1bmhhbmRsZWQgcmVqZWN0aW9ucyB0cmFja2luZyBzdXBwb3J0LCBOb2RlSlMgUHJvbWlzZSB3aXRob3V0IGl0IGZhaWxzIEBAc3BlY2llcyB0ZXN0XG4gICAgcmV0dXJuIChpc05vZGUgfHwgdHlwZW9mIFByb21pc2VSZWplY3Rpb25FdmVudCA9PSAnZnVuY3Rpb24nKVxuICAgICAgJiYgcHJvbWlzZS50aGVuKGVtcHR5KSBpbnN0YW5jZW9mIEZha2VQcm9taXNlXG4gICAgICAvLyB2OCA2LjYgKE5vZGUgMTAgYW5kIENocm9tZSA2NikgaGF2ZSBhIGJ1ZyB3aXRoIHJlc29sdmluZyBjdXN0b20gdGhlbmFibGVzXG4gICAgICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD04MzA1NjVcbiAgICAgIC8vIHdlIGNhbid0IGRldGVjdCBpdCBzeW5jaHJvbm91c2x5LCBzbyBqdXN0IGNoZWNrIHZlcnNpb25zXG4gICAgICAmJiB2OC5pbmRleE9mKCc2LjYnKSAhPT0gMFxuICAgICAgJiYgdXNlckFnZW50LmluZGV4T2YoJ0Nocm9tZS82NicpID09PSAtMTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG59KCk7XG5cbi8vIGhlbHBlcnNcbnZhciBpc1RoZW5hYmxlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciB0aGVuO1xuICByZXR1cm4gaXNPYmplY3QoaXQpICYmIHR5cGVvZiAodGhlbiA9IGl0LnRoZW4pID09ICdmdW5jdGlvbicgPyB0aGVuIDogZmFsc2U7XG59O1xudmFyIG5vdGlmeSA9IGZ1bmN0aW9uIChwcm9taXNlLCBpc1JlamVjdCkge1xuICBpZiAocHJvbWlzZS5fbikgcmV0dXJuO1xuICBwcm9taXNlLl9uID0gdHJ1ZTtcbiAgdmFyIGNoYWluID0gcHJvbWlzZS5fYztcbiAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdmFsdWUgPSBwcm9taXNlLl92O1xuICAgIHZhciBvayA9IHByb21pc2UuX3MgPT0gMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIHJ1biA9IGZ1bmN0aW9uIChyZWFjdGlvbikge1xuICAgICAgdmFyIGhhbmRsZXIgPSBvayA/IHJlYWN0aW9uLm9rIDogcmVhY3Rpb24uZmFpbDtcbiAgICAgIHZhciByZXNvbHZlID0gcmVhY3Rpb24ucmVzb2x2ZTtcbiAgICAgIHZhciByZWplY3QgPSByZWFjdGlvbi5yZWplY3Q7XG4gICAgICB2YXIgZG9tYWluID0gcmVhY3Rpb24uZG9tYWluO1xuICAgICAgdmFyIHJlc3VsdCwgdGhlbiwgZXhpdGVkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgICAgICBpZiAoIW9rKSB7XG4gICAgICAgICAgICBpZiAocHJvbWlzZS5faCA9PSAyKSBvbkhhbmRsZVVuaGFuZGxlZChwcm9taXNlKTtcbiAgICAgICAgICAgIHByb21pc2UuX2ggPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaGFuZGxlciA9PT0gdHJ1ZSkgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoZG9tYWluKSBkb21haW4uZW50ZXIoKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IGhhbmRsZXIodmFsdWUpOyAvLyBtYXkgdGhyb3dcbiAgICAgICAgICAgIGlmIChkb21haW4pIHtcbiAgICAgICAgICAgICAgZG9tYWluLmV4aXQoKTtcbiAgICAgICAgICAgICAgZXhpdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gcmVhY3Rpb24ucHJvbWlzZSkge1xuICAgICAgICAgICAgcmVqZWN0KFR5cGVFcnJvcignUHJvbWlzZS1jaGFpbiBjeWNsZScpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoZW4gPSBpc1RoZW5hYmxlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgIHRoZW4uY2FsbChyZXN1bHQsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSBlbHNlIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSBlbHNlIHJlamVjdCh2YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChkb21haW4gJiYgIWV4aXRlZCkgZG9tYWluLmV4aXQoKTtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgd2hpbGUgKGNoYWluLmxlbmd0aCA+IGkpIHJ1bihjaGFpbltpKytdKTsgLy8gdmFyaWFibGUgbGVuZ3RoIC0gY2FuJ3QgdXNlIGZvckVhY2hcbiAgICBwcm9taXNlLl9jID0gW107XG4gICAgcHJvbWlzZS5fbiA9IGZhbHNlO1xuICAgIGlmIChpc1JlamVjdCAmJiAhcHJvbWlzZS5faCkgb25VbmhhbmRsZWQocHJvbWlzZSk7XG4gIH0pO1xufTtcbnZhciBvblVuaGFuZGxlZCA9IGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdmFsdWUgPSBwcm9taXNlLl92O1xuICAgIHZhciB1bmhhbmRsZWQgPSBpc1VuaGFuZGxlZChwcm9taXNlKTtcbiAgICB2YXIgcmVzdWx0LCBoYW5kbGVyLCBjb25zb2xlO1xuICAgIGlmICh1bmhhbmRsZWQpIHtcbiAgICAgIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoaXNOb2RlKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbWl0KCd1bmhhbmRsZWRSZWplY3Rpb24nLCB2YWx1ZSwgcHJvbWlzZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaGFuZGxlciA9IGdsb2JhbC5vbnVuaGFuZGxlZHJlamVjdGlvbikge1xuICAgICAgICAgIGhhbmRsZXIoeyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHZhbHVlIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKChjb25zb2xlID0gZ2xvYmFsLmNvbnNvbGUpICYmIGNvbnNvbGUuZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24nLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gQnJvd3NlcnMgc2hvdWxkIG5vdCB0cmlnZ2VyIGByZWplY3Rpb25IYW5kbGVkYCBldmVudCBpZiBpdCB3YXMgaGFuZGxlZCBoZXJlLCBOb2RlSlMgLSBzaG91bGRcbiAgICAgIHByb21pc2UuX2ggPSBpc05vZGUgfHwgaXNVbmhhbmRsZWQocHJvbWlzZSkgPyAyIDogMTtcbiAgICB9IHByb21pc2UuX2EgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHVuaGFuZGxlZCAmJiByZXN1bHQuZSkgdGhyb3cgcmVzdWx0LnY7XG4gIH0pO1xufTtcbnZhciBpc1VuaGFuZGxlZCA9IGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gIHJldHVybiBwcm9taXNlLl9oICE9PSAxICYmIChwcm9taXNlLl9hIHx8IHByb21pc2UuX2MpLmxlbmd0aCA9PT0gMDtcbn07XG52YXIgb25IYW5kbGVVbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhhbmRsZXI7XG4gICAgaWYgKGlzTm9kZSkge1xuICAgICAgcHJvY2Vzcy5lbWl0KCdyZWplY3Rpb25IYW5kbGVkJywgcHJvbWlzZSk7XG4gICAgfSBlbHNlIGlmIChoYW5kbGVyID0gZ2xvYmFsLm9ucmVqZWN0aW9uaGFuZGxlZCkge1xuICAgICAgaGFuZGxlcih7IHByb21pc2U6IHByb21pc2UsIHJlYXNvbjogcHJvbWlzZS5fdiB9KTtcbiAgICB9XG4gIH0pO1xufTtcbnZhciAkcmVqZWN0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgaWYgKHByb21pc2UuX2QpIHJldHVybjtcbiAgcHJvbWlzZS5fZCA9IHRydWU7XG4gIHByb21pc2UgPSBwcm9taXNlLl93IHx8IHByb21pc2U7IC8vIHVud3JhcFxuICBwcm9taXNlLl92ID0gdmFsdWU7XG4gIHByb21pc2UuX3MgPSAyO1xuICBpZiAoIXByb21pc2UuX2EpIHByb21pc2UuX2EgPSBwcm9taXNlLl9jLnNsaWNlKCk7XG4gIG5vdGlmeShwcm9taXNlLCB0cnVlKTtcbn07XG52YXIgJHJlc29sdmUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIHByb21pc2UgPSB0aGlzO1xuICB2YXIgdGhlbjtcbiAgaWYgKHByb21pc2UuX2QpIHJldHVybjtcbiAgcHJvbWlzZS5fZCA9IHRydWU7XG4gIHByb21pc2UgPSBwcm9taXNlLl93IHx8IHByb21pc2U7IC8vIHVud3JhcFxuICB0cnkge1xuICAgIGlmIChwcm9taXNlID09PSB2YWx1ZSkgdGhyb3cgVHlwZUVycm9yKFwiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGZcIik7XG4gICAgaWYgKHRoZW4gPSBpc1RoZW5hYmxlKHZhbHVlKSkge1xuICAgICAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHdyYXBwZXIgPSB7IF93OiBwcm9taXNlLCBfZDogZmFsc2UgfTsgLy8gd3JhcFxuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoZW4uY2FsbCh2YWx1ZSwgY3R4KCRyZXNvbHZlLCB3cmFwcGVyLCAxKSwgY3R4KCRyZWplY3QsIHdyYXBwZXIsIDEpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICRyZWplY3QuY2FsbCh3cmFwcGVyLCBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb21pc2UuX3YgPSB2YWx1ZTtcbiAgICAgIHByb21pc2UuX3MgPSAxO1xuICAgICAgbm90aWZ5KHByb21pc2UsIGZhbHNlKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAkcmVqZWN0LmNhbGwoeyBfdzogcHJvbWlzZSwgX2Q6IGZhbHNlIH0sIGUpOyAvLyB3cmFwXG4gIH1cbn07XG5cbi8vIGNvbnN0cnVjdG9yIHBvbHlmaWxsXG5pZiAoIVVTRV9OQVRJVkUpIHtcbiAgLy8gMjUuNC4zLjEgUHJvbWlzZShleGVjdXRvcilcbiAgJFByb21pc2UgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKSB7XG4gICAgYW5JbnN0YW5jZSh0aGlzLCAkUHJvbWlzZSwgUFJPTUlTRSwgJ19oJyk7XG4gICAgYUZ1bmN0aW9uKGV4ZWN1dG9yKTtcbiAgICBJbnRlcm5hbC5jYWxsKHRoaXMpO1xuICAgIHRyeSB7XG4gICAgICBleGVjdXRvcihjdHgoJHJlc29sdmUsIHRoaXMsIDEpLCBjdHgoJHJlamVjdCwgdGhpcywgMSkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgJHJlamVjdC5jYWxsKHRoaXMsIGVycik7XG4gICAgfVxuICB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgSW50ZXJuYWwgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKSB7XG4gICAgdGhpcy5fYyA9IFtdOyAgICAgICAgICAgICAvLyA8LSBhd2FpdGluZyByZWFjdGlvbnNcbiAgICB0aGlzLl9hID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIGNoZWNrZWQgaW4gaXNVbmhhbmRsZWQgcmVhY3Rpb25zXG4gICAgdGhpcy5fcyA9IDA7ICAgICAgICAgICAgICAvLyA8LSBzdGF0ZVxuICAgIHRoaXMuX2QgPSBmYWxzZTsgICAgICAgICAgLy8gPC0gZG9uZVxuICAgIHRoaXMuX3YgPSB1bmRlZmluZWQ7ICAgICAgLy8gPC0gdmFsdWVcbiAgICB0aGlzLl9oID0gMDsgICAgICAgICAgICAgIC8vIDwtIHJlamVjdGlvbiBzdGF0ZSwgMCAtIGRlZmF1bHQsIDEgLSBoYW5kbGVkLCAyIC0gdW5oYW5kbGVkXG4gICAgdGhpcy5fbiA9IGZhbHNlOyAgICAgICAgICAvLyA8LSBub3RpZnlcbiAgfTtcbiAgSW50ZXJuYWwucHJvdG90eXBlID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJykoJFByb21pc2UucHJvdG90eXBlLCB7XG4gICAgLy8gMjUuNC41LjMgUHJvbWlzZS5wcm90b3R5cGUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClcbiAgICB0aGVuOiBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICB2YXIgcmVhY3Rpb24gPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgJFByb21pc2UpKTtcbiAgICAgIHJlYWN0aW9uLm9rID0gdHlwZW9mIG9uRnVsZmlsbGVkID09ICdmdW5jdGlvbicgPyBvbkZ1bGZpbGxlZCA6IHRydWU7XG4gICAgICByZWFjdGlvbi5mYWlsID0gdHlwZW9mIG9uUmVqZWN0ZWQgPT0gJ2Z1bmN0aW9uJyAmJiBvblJlamVjdGVkO1xuICAgICAgcmVhY3Rpb24uZG9tYWluID0gaXNOb2RlID8gcHJvY2Vzcy5kb21haW4gOiB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9jLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHRoaXMuX2EpIHRoaXMuX2EucHVzaChyZWFjdGlvbik7XG4gICAgICBpZiAodGhpcy5fcykgbm90aWZ5KHRoaXMsIGZhbHNlKTtcbiAgICAgIHJldHVybiByZWFjdGlvbi5wcm9taXNlO1xuICAgIH0sXG4gICAgLy8gMjUuNC41LjEgUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2gob25SZWplY3RlZClcbiAgICAnY2F0Y2gnOiBmdW5jdGlvbiAob25SZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuICAgIH1cbiAgfSk7XG4gIE93blByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gbmV3IEludGVybmFsKCk7XG4gICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgICB0aGlzLnJlc29sdmUgPSBjdHgoJHJlc29sdmUsIHByb21pc2UsIDEpO1xuICAgIHRoaXMucmVqZWN0ID0gY3R4KCRyZWplY3QsIHByb21pc2UsIDEpO1xuICB9O1xuICBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoQykge1xuICAgIHJldHVybiBDID09PSAkUHJvbWlzZSB8fCBDID09PSBXcmFwcGVyXG4gICAgICA/IG5ldyBPd25Qcm9taXNlQ2FwYWJpbGl0eShDKVxuICAgICAgOiBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gIH07XG59XG5cbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIHsgUHJvbWlzZTogJFByb21pc2UgfSk7XG5yZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpKCRQcm9taXNlLCBQUk9NSVNFKTtcbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoUFJPTUlTRSk7XG5XcmFwcGVyID0gcmVxdWlyZSgnLi9fY29yZScpW1BST01JU0VdO1xuXG4vLyBzdGF0aWNzXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC41IFByb21pc2UucmVqZWN0KHIpXG4gIHJlamVjdDogZnVuY3Rpb24gcmVqZWN0KHIpIHtcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHRoaXMpO1xuICAgIHZhciAkJHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgICQkcmVqZWN0KHIpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoTElCUkFSWSB8fCAhVVNFX05BVElWRSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjYgUHJvbWlzZS5yZXNvbHZlKHgpXG4gIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoeCkge1xuICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShMSUJSQVJZICYmIHRoaXMgPT09IFdyYXBwZXIgPyAkUHJvbWlzZSA6IHRoaXMsIHgpO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIShVU0VfTkFUSVZFICYmIHJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0JykoZnVuY3Rpb24gKGl0ZXIpIHtcbiAgJFByb21pc2UuYWxsKGl0ZXIpWydjYXRjaCddKGVtcHR5KTtcbn0pKSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuMSBQcm9taXNlLmFsbChpdGVyYWJsZSlcbiAgYWxsOiBmdW5jdGlvbiBhbGwoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIHZhciByZW1haW5pbmcgPSAxO1xuICAgICAgZm9yT2YoaXRlcmFibGUsIGZhbHNlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICB2YXIgJGluZGV4ID0gaW5kZXgrKztcbiAgICAgICAgdmFyIGFscmVhZHlDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgdmFsdWVzLnB1c2godW5kZWZpbmVkKTtcbiAgICAgICAgcmVtYWluaW5nKys7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWVzWyRpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgICAgIH0sIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmUpIHJlamVjdChyZXN1bHQudik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfSxcbiAgLy8gMjUuNC40LjQgUHJvbWlzZS5yYWNlKGl0ZXJhYmxlKVxuICByYWNlOiBmdW5jdGlvbiByYWNlKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oY2FwYWJpbGl0eS5yZXNvbHZlLCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lKSByZWplY3QocmVzdWx0LnYpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSAzMjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///326\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar weak = __webpack_require__(173);\nvar validate = __webpack_require__(64);\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\n__webpack_require__(90)(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzI3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYud2Vhay1zZXQuanM/NTdmMSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgd2VhayA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24td2VhaycpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIFdFQUtfU0VUID0gJ1dlYWtTZXQnO1xuXG4vLyAyMy40IFdlYWtTZXQgT2JqZWN0c1xucmVxdWlyZSgnLi9fY29sbGVjdGlvbicpKFdFQUtfU0VULCBmdW5jdGlvbiAoZ2V0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBXZWFrU2V0KCkgeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIHtcbiAgLy8gMjMuNC4zLjEgV2Vha1NldC5wcm90b3R5cGUuYWRkKHZhbHVlKVxuICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgIHJldHVybiB3ZWFrLmRlZih2YWxpZGF0ZSh0aGlzLCBXRUFLX1NFVCksIHZhbHVlLCB0cnVlKTtcbiAgfVxufSwgd2VhaywgZmFsc2UsIHRydWUpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi53ZWFrLXNldC5qc1xuLy8gbW9kdWxlIGlkID0gMzI3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///327\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar $typed = __webpack_require__(91);\nvar buffer = __webpack_require__(127);\nvar anObject = __webpack_require__(3);\nvar toAbsoluteIndex = __webpack_require__(51);\nvar toLength = __webpack_require__(14);\nvar isObject = __webpack_require__(6);\nvar ArrayBuffer = __webpack_require__(4).ArrayBuffer;\nvar speciesConstructor = __webpack_require__(88);\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * __webpack_require__(5)(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\n__webpack_require__(54)(ARRAY_BUFFER);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzI4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuYXJyYXktYnVmZmVyLmpzP2Y2NjkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkdHlwZWQgPSByZXF1aXJlKCcuL190eXBlZCcpO1xudmFyIGJ1ZmZlciA9IHJlcXVpcmUoJy4vX3R5cGVkLWJ1ZmZlcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5BcnJheUJ1ZmZlcjtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgJEFycmF5QnVmZmVyID0gYnVmZmVyLkFycmF5QnVmZmVyO1xudmFyICREYXRhVmlldyA9IGJ1ZmZlci5EYXRhVmlldztcbnZhciAkaXNWaWV3ID0gJHR5cGVkLkFCViAmJiBBcnJheUJ1ZmZlci5pc1ZpZXc7XG52YXIgJHNsaWNlID0gJEFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZTtcbnZhciBWSUVXID0gJHR5cGVkLlZJRVc7XG52YXIgQVJSQVlfQlVGRkVSID0gJ0FycmF5QnVmZmVyJztcblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAoQXJyYXlCdWZmZXIgIT09ICRBcnJheUJ1ZmZlciksIHsgQXJyYXlCdWZmZXI6ICRBcnJheUJ1ZmZlciB9KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhJHR5cGVkLkNPTlNUUiwgQVJSQVlfQlVGRkVSLCB7XG4gIC8vIDI0LjEuMy4xIEFycmF5QnVmZmVyLmlzVmlldyhhcmcpXG4gIGlzVmlldzogZnVuY3Rpb24gaXNWaWV3KGl0KSB7XG4gICAgcmV0dXJuICRpc1ZpZXcgJiYgJGlzVmlldyhpdCkgfHwgaXNPYmplY3QoaXQpICYmIFZJRVcgaW4gaXQ7XG4gIH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuVSArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gIW5ldyAkQXJyYXlCdWZmZXIoMikuc2xpY2UoMSwgdW5kZWZpbmVkKS5ieXRlTGVuZ3RoO1xufSksIEFSUkFZX0JVRkZFUiwge1xuICAvLyAyNC4xLjQuMyBBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2Uoc3RhcnQsIGVuZClcbiAgc2xpY2U6IGZ1bmN0aW9uIHNsaWNlKHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoJHNsaWNlICE9PSB1bmRlZmluZWQgJiYgZW5kID09PSB1bmRlZmluZWQpIHJldHVybiAkc2xpY2UuY2FsbChhbk9iamVjdCh0aGlzKSwgc3RhcnQpOyAvLyBGRiBmaXhcbiAgICB2YXIgbGVuID0gYW5PYmplY3QodGhpcykuYnl0ZUxlbmd0aDtcbiAgICB2YXIgZmlyc3QgPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbik7XG4gICAgdmFyIGZpbiA9IHRvQWJzb2x1dGVJbmRleChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IGVuZCwgbGVuKTtcbiAgICB2YXIgcmVzdWx0ID0gbmV3IChzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgJEFycmF5QnVmZmVyKSkodG9MZW5ndGgoZmluIC0gZmlyc3QpKTtcbiAgICB2YXIgdmlld1MgPSBuZXcgJERhdGFWaWV3KHRoaXMpO1xuICAgIHZhciB2aWV3VCA9IG5ldyAkRGF0YVZpZXcocmVzdWx0KTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHdoaWxlIChmaXJzdCA8IGZpbikge1xuICAgICAgdmlld1Quc2V0VWludDgoaW5kZXgrKywgdmlld1MuZ2V0VWludDgoZmlyc3QrKykpO1xuICAgIH0gcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoQVJSQVlfQlVGRkVSKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuYXJyYXktYnVmZmVyLmpzXG4vLyBtb2R1bGUgaWQgPSAzMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///328\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\n$export($export.G + $export.W + $export.F * !__webpack_require__(91).ABV, {\n DataView: __webpack_require__(127).DataView\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzI5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZGF0YS12aWV3LmpzP2Q2ZTIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3R5cGVkJykuQUJWLCB7XG4gIERhdGFWaWV3OiByZXF1aXJlKCcuL190eXBlZC1idWZmZXInKS5EYXRhVmlld1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLmRhdGEtdmlldy5qc1xuLy8gbW9kdWxlIGlkID0gMzI5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///329\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50OC1hcnJheS5qcz9lNzY1Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0ludDgnLCAxLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gSW50OEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50OC1hcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gMzMwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///330\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDgtYXJyYXkuanM/NGM1NSJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdVaW50OCcsIDEsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVaW50OEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDgtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDMzMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///331\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDgtY2xhbXBlZC1hcnJheS5qcz8zMzI4Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ1VpbnQ4JywgMSwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQ4Q2xhbXBlZEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59LCB0cnVlKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDgtY2xhbXBlZC1hcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gMzMyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///332\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50MTYtYXJyYXkuanM/YWFkNCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdJbnQxNicsIDIsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQxNkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50MTYtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDMzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///333\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzM0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDE2LWFycmF5LmpzPzRjNzkiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnVWludDE2JywgMiwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQxNkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDE2LWFycmF5LmpzXG4vLyBtb2R1bGUgaWQgPSAzMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///334\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzM1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50MzItYXJyYXkuanM/MmI0MiJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdJbnQzMicsIDQsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50MzItYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDMzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///335\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzM2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDMyLWFycmF5LmpzPzM1ZjYiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnVWludDMyJywgNCwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDMyLWFycmF5LmpzXG4vLyBtb2R1bGUgaWQgPSAzMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///336\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzM3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZmxvYXQzMi1hcnJheS5qcz83NTNjIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0Zsb2F0MzInLCA0LCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gRmxvYXQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZmxvYXQzMi1hcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gMzM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///337\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(38)('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzM4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZmxvYXQ2NC1hcnJheS5qcz9mYWY1Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0Zsb2F0NjQnLCA4LCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gRmxvYXQ2NEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZmxvYXQ2NC1hcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gMzM4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///338\n")},function(module,exports,__webpack_require__){eval("// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = __webpack_require__(0);\nvar aFunction = __webpack_require__(16);\nvar anObject = __webpack_require__(3);\nvar rApply = (__webpack_require__(4).Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !__webpack_require__(5)(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzM5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5hcHBseS5qcz8wOTU0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDI2LjEuMSBSZWZsZWN0LmFwcGx5KHRhcmdldCwgdGhpc0FyZ3VtZW50LCBhcmd1bWVudHNMaXN0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciByQXBwbHkgPSAocmVxdWlyZSgnLi9fZ2xvYmFsJykuUmVmbGVjdCB8fCB7fSkuYXBwbHk7XG52YXIgZkFwcGx5ID0gRnVuY3Rpb24uYXBwbHk7XG4vLyBNUyBFZGdlIGFyZ3VtZW50c0xpc3QgYXJndW1lbnQgaXMgb3B0aW9uYWxcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByQXBwbHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbn0pLCAnUmVmbGVjdCcsIHtcbiAgYXBwbHk6IGZ1bmN0aW9uIGFwcGx5KHRhcmdldCwgdGhpc0FyZ3VtZW50LCBhcmd1bWVudHNMaXN0KSB7XG4gICAgdmFyIFQgPSBhRnVuY3Rpb24odGFyZ2V0KTtcbiAgICB2YXIgTCA9IGFuT2JqZWN0KGFyZ3VtZW50c0xpc3QpO1xuICAgIHJldHVybiByQXBwbHkgPyByQXBwbHkoVCwgdGhpc0FyZ3VtZW50LCBMKSA6IGZBcHBseS5jYWxsKFQsIHRoaXNBcmd1bWVudCwgTCk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmFwcGx5LmpzXG4vLyBtb2R1bGUgaWQgPSAzMzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///339\n")},function(module,exports,__webpack_require__){eval("// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = __webpack_require__(0);\nvar create = __webpack_require__(52);\nvar aFunction = __webpack_require__(16);\nvar anObject = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\nvar fails = __webpack_require__(5);\nvar bind = __webpack_require__(154);\nvar rConstruct = (__webpack_require__(4).Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5jb25zdHJ1Y3QuanM/YmU2NCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjIgUmVmbGVjdC5jb25zdHJ1Y3QodGFyZ2V0LCBhcmd1bWVudHNMaXN0IFssIG5ld1RhcmdldF0pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi9fYmluZCcpO1xudmFyIHJDb25zdHJ1Y3QgPSAocmVxdWlyZSgnLi9fZ2xvYmFsJykuUmVmbGVjdCB8fCB7fSkuY29uc3RydWN0O1xuXG4vLyBNUyBFZGdlIHN1cHBvcnRzIG9ubHkgMiBhcmd1bWVudHMgYW5kIGFyZ3VtZW50c0xpc3QgYXJndW1lbnQgaXMgb3B0aW9uYWxcbi8vIEZGIE5pZ2h0bHkgc2V0cyB0aGlyZCBhcmd1bWVudCBhcyBgbmV3LnRhcmdldGAsIGJ1dCBkb2VzIG5vdCBjcmVhdGUgYHRoaXNgIGZyb20gaXRcbnZhciBORVdfVEFSR0VUX0JVRyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRigpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gIShyQ29uc3RydWN0KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgW10sIEYpIGluc3RhbmNlb2YgRik7XG59KTtcbnZhciBBUkdTX0JVRyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJDb25zdHJ1Y3QoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChORVdfVEFSR0VUX0JVRyB8fCBBUkdTX0JVRyksICdSZWZsZWN0Jywge1xuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIGNvbnN0cnVjdChUYXJnZXQsIGFyZ3MgLyogLCBuZXdUYXJnZXQgKi8pIHtcbiAgICBhRnVuY3Rpb24oVGFyZ2V0KTtcbiAgICBhbk9iamVjdChhcmdzKTtcbiAgICB2YXIgbmV3VGFyZ2V0ID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyBUYXJnZXQgOiBhRnVuY3Rpb24oYXJndW1lbnRzWzJdKTtcbiAgICBpZiAoQVJHU19CVUcgJiYgIU5FV19UQVJHRVRfQlVHKSByZXR1cm4gckNvbnN0cnVjdChUYXJnZXQsIGFyZ3MsIG5ld1RhcmdldCk7XG4gICAgaWYgKFRhcmdldCA9PSBuZXdUYXJnZXQpIHtcbiAgICAgIC8vIHcvbyBhbHRlcmVkIG5ld1RhcmdldCwgb3B0aW1pemF0aW9uIGZvciAwLTQgYXJndW1lbnRzXG4gICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBUYXJnZXQoKTtcbiAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdKTtcbiAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgY2FzZSAzOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgICAgIH1cbiAgICAgIC8vIHcvbyBhbHRlcmVkIG5ld1RhcmdldCwgbG90IG9mIGFyZ3VtZW50cyBjYXNlXG4gICAgICB2YXIgJGFyZ3MgPSBbbnVsbF07XG4gICAgICAkYXJncy5wdXNoLmFwcGx5KCRhcmdzLCBhcmdzKTtcbiAgICAgIHJldHVybiBuZXcgKGJpbmQuYXBwbHkoVGFyZ2V0LCAkYXJncykpKCk7XG4gICAgfVxuICAgIC8vIHdpdGggYWx0ZXJlZCBuZXdUYXJnZXQsIG5vdCBzdXBwb3J0IGJ1aWx0LWluIGNvbnN0cnVjdG9yc1xuICAgIHZhciBwcm90byA9IG5ld1RhcmdldC5wcm90b3R5cGU7XG4gICAgdmFyIGluc3RhbmNlID0gY3JlYXRlKGlzT2JqZWN0KHByb3RvKSA/IHByb3RvIDogT2JqZWN0LnByb3RvdHlwZSk7XG4gICAgdmFyIHJlc3VsdCA9IEZ1bmN0aW9uLmFwcGx5LmNhbGwoVGFyZ2V0LCBpbnN0YW5jZSwgYXJncyk7XG4gICAgcmV0dXJuIGlzT2JqZWN0KHJlc3VsdCkgPyByZXN1bHQgOiBpbnN0YW5jZTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuY29uc3RydWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAzNDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///340\n")},function(module,exports,__webpack_require__){eval("// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = __webpack_require__(13);\nvar $export = __webpack_require__(0);\nvar anObject = __webpack_require__(3);\nvar toPrimitive = __webpack_require__(31);\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * __webpack_require__(5)(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5kZWZpbmUtcHJvcGVydHkuanM/ZTE5NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjMgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKVxudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcblxuLy8gTVMgRWRnZSBoYXMgYnJva2VuIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkgLSB0aHJvd2luZyBpbnN0ZWFkIG9mIHJldHVybmluZyBmYWxzZVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkoZFAuZih7fSwgMSwgeyB2YWx1ZTogMSB9KSwgMSwgeyB2YWx1ZTogMiB9KTtcbn0pLCAnUmVmbGVjdCcsIHtcbiAgZGVmaW5lUHJvcGVydHk6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpIHtcbiAgICBhbk9iamVjdCh0YXJnZXQpO1xuICAgIHByb3BlcnR5S2V5ID0gdG9QcmltaXRpdmUocHJvcGVydHlLZXksIHRydWUpO1xuICAgIGFuT2JqZWN0KGF0dHJpYnV0ZXMpO1xuICAgIHRyeSB7XG4gICAgICBkUC5mKHRhcmdldCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSAzNDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///341\n")},function(module,exports,__webpack_require__){eval("// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = __webpack_require__(0);\nvar gOPD = __webpack_require__(25).f;\nvar anObject = __webpack_require__(3);\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5kZWxldGUtcHJvcGVydHkuanM/Y2IxZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjQgUmVmbGVjdC5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBnT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgZGVsZXRlUHJvcGVydHk6IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICB2YXIgZGVzYyA9IGdPUEQoYW5PYmplY3QodGFyZ2V0KSwgcHJvcGVydHlLZXkpO1xuICAgIHJldHVybiBkZXNjICYmICFkZXNjLmNvbmZpZ3VyYWJsZSA/IGZhbHNlIDogZGVsZXRlIHRhcmdldFtwcm9wZXJ0eUtleV07XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmRlbGV0ZS1wcm9wZXJ0eS5qc1xuLy8gbW9kdWxlIGlkID0gMzQyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///342\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 26.1.5 Reflect.enumerate(target)\nvar $export = __webpack_require__(0);\nvar anObject = __webpack_require__(3);\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\n__webpack_require__(115)(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5lbnVtZXJhdGUuanM/NWZiNiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAyNi4xLjUgUmVmbGVjdC5lbnVtZXJhdGUodGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIEVudW1lcmF0ZSA9IGZ1bmN0aW9uIChpdGVyYXRlZCkge1xuICB0aGlzLl90ID0gYW5PYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB2YXIga2V5cyA9IHRoaXMuX2sgPSBbXTsgICAgICAvLyBrZXlzXG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIGl0ZXJhdGVkKSBrZXlzLnB1c2goa2V5KTtcbn07XG5yZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpKEVudW1lcmF0ZSwgJ09iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB2YXIga2V5cyA9IHRoYXQuX2s7XG4gIHZhciBrZXk7XG4gIGRvIHtcbiAgICBpZiAodGhhdC5faSA+PSBrZXlzLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9IHdoaWxlICghKChrZXkgPSBrZXlzW3RoYXQuX2krK10pIGluIHRoYXQuX3QpKTtcbiAgcmV0dXJuIHsgdmFsdWU6IGtleSwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGVudW1lcmF0ZTogZnVuY3Rpb24gZW51bWVyYXRlKHRhcmdldCkge1xuICAgIHJldHVybiBuZXcgRW51bWVyYXRlKHRhcmdldCk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmVudW1lcmF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMzQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///343\n")},function(module,exports,__webpack_require__){eval("// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = __webpack_require__(25);\nvar getPrototypeOf = __webpack_require__(26);\nvar has = __webpack_require__(23);\nvar $export = __webpack_require__(0);\nvar isObject = __webpack_require__(6);\nvar anObject = __webpack_require__(3);\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQ0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5nZXQuanM/NDhmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjYgUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wZXJ0eUtleSBbLCByZWNlaXZlcl0pXG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcblxuZnVuY3Rpb24gZ2V0KHRhcmdldCwgcHJvcGVydHlLZXkgLyogLCByZWNlaXZlciAqLykge1xuICB2YXIgcmVjZWl2ZXIgPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHRhcmdldCA6IGFyZ3VtZW50c1syXTtcbiAgdmFyIGRlc2MsIHByb3RvO1xuICBpZiAoYW5PYmplY3QodGFyZ2V0KSA9PT0gcmVjZWl2ZXIpIHJldHVybiB0YXJnZXRbcHJvcGVydHlLZXldO1xuICBpZiAoZGVzYyA9IGdPUEQuZih0YXJnZXQsIHByb3BlcnR5S2V5KSkgcmV0dXJuIGhhcyhkZXNjLCAndmFsdWUnKVxuICAgID8gZGVzYy52YWx1ZVxuICAgIDogZGVzYy5nZXQgIT09IHVuZGVmaW5lZFxuICAgICAgPyBkZXNjLmdldC5jYWxsKHJlY2VpdmVyKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIGlmIChpc09iamVjdChwcm90byA9IGdldFByb3RvdHlwZU9mKHRhcmdldCkpKSByZXR1cm4gZ2V0KHByb3RvLCBwcm9wZXJ0eUtleSwgcmVjZWl2ZXIpO1xufVxuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7IGdldDogZ2V0IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC5qc1xuLy8gbW9kdWxlIGlkID0gMzQ0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///344\n")},function(module,exports,__webpack_require__){eval("// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = __webpack_require__(25);\nvar $export = __webpack_require__(0);\nvar anObject = __webpack_require__(3);\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQ1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanM/MDM5ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjcgUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSlcbnZhciBnT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgcmV0dXJuIGdPUEQuZihhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1xuLy8gbW9kdWxlIGlkID0gMzQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///345\n")},function(module,exports,__webpack_require__){eval("// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = __webpack_require__(0);\nvar getProto = __webpack_require__(26);\nvar anObject = __webpack_require__(3);\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQ2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5nZXQtcHJvdG90eXBlLW9mLmpzPzNlZTQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjYuMS44IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBnZXRQcm90byA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGdldFByb3RvdHlwZU9mOiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZih0YXJnZXQpIHtcbiAgICByZXR1cm4gZ2V0UHJvdG8oYW5PYmplY3QodGFyZ2V0KSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDM0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///346\n")},function(module,exports,__webpack_require__){eval("// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQ3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5oYXMuanM/NzY2ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjkgUmVmbGVjdC5oYXModGFyZ2V0LCBwcm9wZXJ0eUtleSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgaGFzOiBmdW5jdGlvbiBoYXModGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgIHJldHVybiBwcm9wZXJ0eUtleSBpbiB0YXJnZXQ7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0Lmhhcy5qc1xuLy8gbW9kdWxlIGlkID0gMzQ3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///347\n")},function(module,exports,__webpack_require__){eval("// 26.1.10 Reflect.isExtensible(target)\nvar $export = __webpack_require__(0);\nvar anObject = __webpack_require__(3);\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQ4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5pcy1leHRlbnNpYmxlLmpzPzI0NmQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjYuMS4xMCBSZWZsZWN0LmlzRXh0ZW5zaWJsZSh0YXJnZXQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgJGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGU7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgaXNFeHRlbnNpYmxlOiBmdW5jdGlvbiBpc0V4dGVuc2libGUodGFyZ2V0KSB7XG4gICAgYW5PYmplY3QodGFyZ2V0KTtcbiAgICByZXR1cm4gJGlzRXh0ZW5zaWJsZSA/ICRpc0V4dGVuc2libGUodGFyZ2V0KSA6IHRydWU7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmlzLWV4dGVuc2libGUuanNcbi8vIG1vZHVsZSBpZCA9IDM0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///348\n")},function(module,exports,__webpack_require__){eval("// 26.1.11 Reflect.ownKeys(target)\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Reflect', { ownKeys: __webpack_require__(175) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQ5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5vd24ta2V5cy5qcz80NzBlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDI2LjEuMTEgUmVmbGVjdC5vd25LZXlzKHRhcmdldClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHsgb3duS2V5czogcmVxdWlyZSgnLi9fb3duLWtleXMnKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5vd24ta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMzQ5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///349\n")},function(module,exports,__webpack_require__){eval("// 26.1.12 Reflect.preventExtensions(target)\nvar $export = __webpack_require__(0);\nvar anObject = __webpack_require__(3);\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5wcmV2ZW50LWV4dGVuc2lvbnMuanM/ZjY2MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjEyIFJlZmxlY3QucHJldmVudEV4dGVuc2lvbnModGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyICRwcmV2ZW50RXh0ZW5zaW9ucyA9IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucztcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBwcmV2ZW50RXh0ZW5zaW9uczogZnVuY3Rpb24gcHJldmVudEV4dGVuc2lvbnModGFyZ2V0KSB7XG4gICAgYW5PYmplY3QodGFyZ2V0KTtcbiAgICB0cnkge1xuICAgICAgaWYgKCRwcmV2ZW50RXh0ZW5zaW9ucykgJHByZXZlbnRFeHRlbnNpb25zKHRhcmdldCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5wcmV2ZW50LWV4dGVuc2lvbnMuanNcbi8vIG1vZHVsZSBpZCA9IDM1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///350\n")},function(module,exports,__webpack_require__){eval("// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = __webpack_require__(13);\nvar gOPD = __webpack_require__(25);\nvar getPrototypeOf = __webpack_require__(26);\nvar has = __webpack_require__(23);\nvar $export = __webpack_require__(0);\nvar createDesc = __webpack_require__(48);\nvar anObject = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5zZXQuanM/NmQ0NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAyNi4xLjEzIFJlZmxlY3Quc2V0KHRhcmdldCwgcHJvcGVydHlLZXksIFYgWywgcmVjZWl2ZXJdKVxudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5mdW5jdGlvbiBzZXQodGFyZ2V0LCBwcm9wZXJ0eUtleSwgViAvKiAsIHJlY2VpdmVyICovKSB7XG4gIHZhciByZWNlaXZlciA9IGFyZ3VtZW50cy5sZW5ndGggPCA0ID8gdGFyZ2V0IDogYXJndW1lbnRzWzNdO1xuICB2YXIgb3duRGVzYyA9IGdPUEQuZihhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gIHZhciBleGlzdGluZ0Rlc2NyaXB0b3IsIHByb3RvO1xuICBpZiAoIW93bkRlc2MpIHtcbiAgICBpZiAoaXNPYmplY3QocHJvdG8gPSBnZXRQcm90b3R5cGVPZih0YXJnZXQpKSkge1xuICAgICAgcmV0dXJuIHNldChwcm90bywgcHJvcGVydHlLZXksIFYsIHJlY2VpdmVyKTtcbiAgICB9XG4gICAgb3duRGVzYyA9IGNyZWF0ZURlc2MoMCk7XG4gIH1cbiAgaWYgKGhhcyhvd25EZXNjLCAndmFsdWUnKSkge1xuICAgIGlmIChvd25EZXNjLndyaXRhYmxlID09PSBmYWxzZSB8fCAhaXNPYmplY3QocmVjZWl2ZXIpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGV4aXN0aW5nRGVzY3JpcHRvciA9IGdPUEQuZihyZWNlaXZlciwgcHJvcGVydHlLZXkpKSB7XG4gICAgICBpZiAoZXhpc3RpbmdEZXNjcmlwdG9yLmdldCB8fCBleGlzdGluZ0Rlc2NyaXB0b3Iuc2V0IHx8IGV4aXN0aW5nRGVzY3JpcHRvci53cml0YWJsZSA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICAgIGV4aXN0aW5nRGVzY3JpcHRvci52YWx1ZSA9IFY7XG4gICAgICBkUC5mKHJlY2VpdmVyLCBwcm9wZXJ0eUtleSwgZXhpc3RpbmdEZXNjcmlwdG9yKTtcbiAgICB9IGVsc2UgZFAuZihyZWNlaXZlciwgcHJvcGVydHlLZXksIGNyZWF0ZURlc2MoMCwgVikpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBvd25EZXNjLnNldCA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiAob3duRGVzYy5zZXQuY2FsbChyZWNlaXZlciwgViksIHRydWUpO1xufVxuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7IHNldDogc2V0IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LnNldC5qc1xuLy8gbW9kdWxlIGlkID0gMzUxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///351\n")},function(module,exports,__webpack_require__){eval("// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = __webpack_require__(0);\nvar setProto = __webpack_require__(107);\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5zZXQtcHJvdG90eXBlLW9mLmpzPzk5M2EiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjYuMS4xNCBSZWZsZWN0LnNldFByb3RvdHlwZU9mKHRhcmdldCwgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHNldFByb3RvID0gcmVxdWlyZSgnLi9fc2V0LXByb3RvJyk7XG5cbmlmIChzZXRQcm90bykgJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBzZXRQcm90b3R5cGVPZjogZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YodGFyZ2V0LCBwcm90bykge1xuICAgIHNldFByb3RvLmNoZWNrKHRhcmdldCwgcHJvdG8pO1xuICAgIHRyeSB7XG4gICAgICBzZXRQcm90by5zZXQodGFyZ2V0LCBwcm90byk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5zZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSAzNTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///352\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(0);\nvar $includes = __webpack_require__(81)(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n__webpack_require__(45)('includes');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXJyYXkuaW5jbHVkZXMuanM/ODFiYyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9BcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKSh0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdBcnJheScsIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKGVsIC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHJldHVybiAkaW5jbHVkZXModGhpcywgZWwsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdpbmNsdWRlcycpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5hcnJheS5pbmNsdWRlcy5qc1xuLy8gbW9kdWxlIGlkID0gMzUzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///353\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = __webpack_require__(0);\nvar flattenIntoArray = __webpack_require__(176);\nvar toObject = __webpack_require__(15);\nvar toLength = __webpack_require__(14);\nvar aFunction = __webpack_require__(16);\nvar arraySpeciesCreate = __webpack_require__(121);\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\n__webpack_require__(45)('flatMap');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzU0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXJyYXkuZmxhdC1tYXAuanM/YTA1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLWZsYXRNYXAvI3NlYy1BcnJheS5wcm90b3R5cGUuZmxhdE1hcFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBmbGF0dGVuSW50b0FycmF5ID0gcmVxdWlyZSgnLi9fZmxhdHRlbi1pbnRvLWFycmF5Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0FycmF5Jywge1xuICBmbGF0TWFwOiBmdW5jdGlvbiBmbGF0TWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgc291cmNlTGVuLCBBO1xuICAgIGFGdW5jdGlvbihjYWxsYmFja2ZuKTtcbiAgICBzb3VyY2VMZW4gPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgQSA9IGFycmF5U3BlY2llc0NyZWF0ZShPLCAwKTtcbiAgICBmbGF0dGVuSW50b0FycmF5KEEsIE8sIE8sIHNvdXJjZUxlbiwgMCwgMSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdmbGF0TWFwJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFycmF5LmZsYXQtbWFwLmpzXG4vLyBtb2R1bGUgaWQgPSAzNTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///354\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatten\nvar $export = __webpack_require__(0);\nvar flattenIntoArray = __webpack_require__(176);\nvar toObject = __webpack_require__(15);\nvar toLength = __webpack_require__(14);\nvar toInteger = __webpack_require__(33);\nvar arraySpeciesCreate = __webpack_require__(121);\n\n$export($export.P, 'Array', {\n flatten: function flatten(/* depthArg = 1 */) {\n var depthArg = arguments[0];\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n\n__webpack_require__(45)('flatten');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzU1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXJyYXkuZmxhdHRlbi5qcz9iZmRkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtZmxhdE1hcC8jc2VjLUFycmF5LnByb3RvdHlwZS5mbGF0dGVuXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGZsYXR0ZW5JbnRvQXJyYXkgPSByZXF1aXJlKCcuL19mbGF0dGVuLWludG8tYXJyYXknKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4vX2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7XG4gIGZsYXR0ZW46IGZ1bmN0aW9uIGZsYXR0ZW4oLyogZGVwdGhBcmcgPSAxICovKSB7XG4gICAgdmFyIGRlcHRoQXJnID0gYXJndW1lbnRzWzBdO1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIHNvdXJjZUxlbiA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgQSA9IGFycmF5U3BlY2llc0NyZWF0ZShPLCAwKTtcbiAgICBmbGF0dGVuSW50b0FycmF5KEEsIE8sIE8sIHNvdXJjZUxlbiwgMCwgZGVwdGhBcmcgPT09IHVuZGVmaW5lZCA/IDEgOiB0b0ludGVnZXIoZGVwdGhBcmcpKTtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdmbGF0dGVuJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFycmF5LmZsYXR0ZW4uanNcbi8vIG1vZHVsZSBpZCA9IDM1NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///355\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/mathiasbynens/String.prototype.at\nvar $export = __webpack_require__(0);\nvar $at = __webpack_require__(113)(true);\n\n$export($export.P, 'String', {\n at: function at(pos) {\n return $at(this, pos);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzU2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLmF0LmpzP2ZiNmYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvU3RyaW5nLnByb3RvdHlwZS5hdFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIGF0OiBmdW5jdGlvbiBhdChwb3MpIHtcbiAgICByZXR1cm4gJGF0KHRoaXMsIHBvcyk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcuYXQuanNcbi8vIG1vZHVsZSBpZCA9IDM1NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///356\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = __webpack_require__(0);\nvar $pad = __webpack_require__(177);\nvar userAgent = __webpack_require__(89);\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzU3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnBhZC1zdGFydC5qcz9iMjY0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0cmluZy1wYWQtc3RhcnQtZW5kXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRwYWQgPSByZXF1aXJlKCcuL19zdHJpbmctcGFkJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMjgwXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIC9WZXJzaW9uXFwvMTBcXC5cXGQrKFxcLlxcZCspPyBTYWZhcmlcXC8vLnRlc3QodXNlckFnZW50KSwgJ1N0cmluZycsIHtcbiAgcGFkU3RhcnQ6IGZ1bmN0aW9uIHBhZFN0YXJ0KG1heExlbmd0aCAvKiAsIGZpbGxTdHJpbmcgPSAnICcgKi8pIHtcbiAgICByZXR1cm4gJHBhZCh0aGlzLCBtYXhMZW5ndGgsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCB0cnVlKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN0cmluZy5wYWQtc3RhcnQuanNcbi8vIG1vZHVsZSBpZCA9IDM1N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///357\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = __webpack_require__(0);\nvar $pad = __webpack_require__(177);\nvar userAgent = __webpack_require__(89);\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzU4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnBhZC1lbmQuanM/OWJjMSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zdHJpbmctcGFkLXN0YXJ0LWVuZFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcGFkID0gcmVxdWlyZSgnLi9fc3RyaW5nLXBhZCcpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4vX3VzZXItYWdlbnQnKTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzI4MFxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAvVmVyc2lvblxcLzEwXFwuXFxkKyhcXC5cXGQrKT8gU2FmYXJpXFwvLy50ZXN0KHVzZXJBZ2VudCksICdTdHJpbmcnLCB7XG4gIHBhZEVuZDogZnVuY3Rpb24gcGFkRW5kKG1heExlbmd0aCAvKiAsIGZpbGxTdHJpbmcgPSAnICcgKi8pIHtcbiAgICByZXR1cm4gJHBhZCh0aGlzLCBtYXhMZW5ndGgsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCBmYWxzZSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcucGFkLWVuZC5qc1xuLy8gbW9kdWxlIGlkID0gMzU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///358\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\n__webpack_require__(62)('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzU5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnRyaW0tbGVmdC5qcz9jNjdmIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zZWJtYXJrYmFnZS9lY21hc2NyaXB0LXN0cmluZy1sZWZ0LXJpZ2h0LXRyaW1cbnJlcXVpcmUoJy4vX3N0cmluZy10cmltJykoJ3RyaW1MZWZ0JywgZnVuY3Rpb24gKCR0cmltKSB7XG4gIHJldHVybiBmdW5jdGlvbiB0cmltTGVmdCgpIHtcbiAgICByZXR1cm4gJHRyaW0odGhpcywgMSk7XG4gIH07XG59LCAndHJpbVN0YXJ0Jyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN0cmluZy50cmltLWxlZnQuanNcbi8vIG1vZHVsZSBpZCA9IDM1OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///359\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\n__webpack_require__(62)('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnRyaW0tcmlnaHQuanM/MmQxMiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vc2VibWFya2JhZ2UvZWNtYXNjcmlwdC1zdHJpbmctbGVmdC1yaWdodC10cmltXG5yZXF1aXJlKCcuL19zdHJpbmctdHJpbScpKCd0cmltUmlnaHQnLCBmdW5jdGlvbiAoJHRyaW0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyaW1SaWdodCgpIHtcbiAgICByZXR1cm4gJHRyaW0odGhpcywgMik7XG4gIH07XG59LCAndHJpbUVuZCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcudHJpbS1yaWdodC5qc1xuLy8gbW9kdWxlIGlkID0gMzYwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///360\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://tc39.github.io/String.prototype.matchAll/\nvar $export = __webpack_require__(0);\nvar defined = __webpack_require__(32);\nvar toLength = __webpack_require__(14);\nvar isRegExp = __webpack_require__(84);\nvar getFlags = __webpack_require__(86);\nvar RegExpProto = RegExp.prototype;\n\nvar $RegExpStringIterator = function (regexp, string) {\n this._r = regexp;\n this._s = string;\n};\n\n__webpack_require__(115)($RegExpStringIterator, 'RegExp String', function next() {\n var match = this._r.exec(this._s);\n return { value: match, done: match === null };\n});\n\n$export($export.P, 'String', {\n matchAll: function matchAll(regexp) {\n defined(this);\n if (!isRegExp(regexp)) throw TypeError(regexp + ' is not a regexp!');\n var S = String(this);\n var flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp);\n var rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);\n rx.lastIndex = toLength(regexp.lastIndex);\n return new $RegExpStringIterator(rx, S);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLm1hdGNoLWFsbC5qcz9iMWNlIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vU3RyaW5nLnByb3RvdHlwZS5tYXRjaEFsbC9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG52YXIgZ2V0RmxhZ3MgPSByZXF1aXJlKCcuL19mbGFncycpO1xudmFyIFJlZ0V4cFByb3RvID0gUmVnRXhwLnByb3RvdHlwZTtcblxudmFyICRSZWdFeHBTdHJpbmdJdGVyYXRvciA9IGZ1bmN0aW9uIChyZWdleHAsIHN0cmluZykge1xuICB0aGlzLl9yID0gcmVnZXhwO1xuICB0aGlzLl9zID0gc3RyaW5nO1xufTtcblxucmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKSgkUmVnRXhwU3RyaW5nSXRlcmF0b3IsICdSZWdFeHAgU3RyaW5nJywgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIG1hdGNoID0gdGhpcy5fci5leGVjKHRoaXMuX3MpO1xuICByZXR1cm4geyB2YWx1ZTogbWF0Y2gsIGRvbmU6IG1hdGNoID09PSBudWxsIH07XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIG1hdGNoQWxsOiBmdW5jdGlvbiBtYXRjaEFsbChyZWdleHApIHtcbiAgICBkZWZpbmVkKHRoaXMpO1xuICAgIGlmICghaXNSZWdFeHAocmVnZXhwKSkgdGhyb3cgVHlwZUVycm9yKHJlZ2V4cCArICcgaXMgbm90IGEgcmVnZXhwIScpO1xuICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuICAgIHZhciBmbGFncyA9ICdmbGFncycgaW4gUmVnRXhwUHJvdG8gPyBTdHJpbmcocmVnZXhwLmZsYWdzKSA6IGdldEZsYWdzLmNhbGwocmVnZXhwKTtcbiAgICB2YXIgcnggPSBuZXcgUmVnRXhwKHJlZ2V4cC5zb3VyY2UsIH5mbGFncy5pbmRleE9mKCdnJykgPyBmbGFncyA6ICdnJyArIGZsYWdzKTtcbiAgICByeC5sYXN0SW5kZXggPSB0b0xlbmd0aChyZWdleHAubGFzdEluZGV4KTtcbiAgICByZXR1cm4gbmV3ICRSZWdFeHBTdHJpbmdJdGVyYXRvcihyeCwgUyk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcubWF0Y2gtYWxsLmpzXG4vLyBtb2R1bGUgaWQgPSAzNjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///361\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(103)('asyncIterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yLmpzP2Y1ODgiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdhc3luY0l0ZXJhdG9yJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gMzYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///362\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(103)('observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUuanM/YmVlZiJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuL193a3MtZGVmaW5lJykoJ29ic2VydmFibGUnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUuanNcbi8vIG1vZHVsZSBpZCA9IDM2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///363\n")},function(module,exports,__webpack_require__){eval("// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = __webpack_require__(0);\nvar ownKeys = __webpack_require__(175);\nvar toIObject = __webpack_require__(24);\nvar gOPD = __webpack_require__(25);\nvar createProperty = __webpack_require__(119);\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzY0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcnMuanM/Y2U2YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi9fb3duLWtleXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnM6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgICB2YXIgZ2V0RGVzYyA9IGdPUEQuZjtcbiAgICB2YXIga2V5cyA9IG93bktleXMoTyk7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIga2V5LCBkZXNjO1xuICAgIHdoaWxlIChrZXlzLmxlbmd0aCA+IGkpIHtcbiAgICAgIGRlc2MgPSBnZXREZXNjKE8sIGtleSA9IGtleXNbaSsrXSk7XG4gICAgICBpZiAoZGVzYyAhPT0gdW5kZWZpbmVkKSBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGtleSwgZGVzYyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gMzY0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///364\n")},function(module,exports,__webpack_require__){eval("// https://github.com/tc39/proposal-object-values-entries\nvar $export = __webpack_require__(0);\nvar $values = __webpack_require__(178)(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzY1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LnZhbHVlcy5qcz82MTU5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9iamVjdC12YWx1ZXMtZW50cmllc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkdmFsdWVzID0gcmVxdWlyZSgnLi9fb2JqZWN0LXRvLWFycmF5JykoZmFsc2UpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHtcbiAgdmFsdWVzOiBmdW5jdGlvbiB2YWx1ZXMoaXQpIHtcbiAgICByZXR1cm4gJHZhbHVlcyhpdCk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QudmFsdWVzLmpzXG4vLyBtb2R1bGUgaWQgPSAzNjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///365\n")},function(module,exports,__webpack_require__){eval("// https://github.com/tc39/proposal-object-values-entries\nvar $export = __webpack_require__(0);\nvar $entries = __webpack_require__(178)(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzY2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmVudHJpZXMuanM/MTRhNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1vYmplY3QtdmFsdWVzLWVudHJpZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGVudHJpZXMgPSByZXF1aXJlKCcuL19vYmplY3QtdG8tYXJyYXknKSh0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7XG4gIGVudHJpZXM6IGZ1bmN0aW9uIGVudHJpZXMoaXQpIHtcbiAgICByZXR1cm4gJGVudHJpZXMoaXQpO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmVudHJpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDM2NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///366\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar toObject = __webpack_require__(15);\nvar aFunction = __webpack_require__(16);\nvar $defineProperty = __webpack_require__(13);\n\n// B.2.2.2 Object.prototype.__defineGetter__(P, getter)\n__webpack_require__(12) && $export($export.P + __webpack_require__(92), 'Object', {\n __defineGetter__: function __defineGetter__(P, getter) {\n $defineProperty.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzY3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1nZXR0ZXIuanM/YTE4YSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xuXG4vLyBCLjIuMi4yIE9iamVjdC5wcm90b3R5cGUuX19kZWZpbmVHZXR0ZXJfXyhQLCBnZXR0ZXIpXG5yZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICRleHBvcnQoJGV4cG9ydC5QICsgcmVxdWlyZSgnLi9fb2JqZWN0LWZvcmNlZC1wYW0nKSwgJ09iamVjdCcsIHtcbiAgX19kZWZpbmVHZXR0ZXJfXzogZnVuY3Rpb24gX19kZWZpbmVHZXR0ZXJfXyhQLCBnZXR0ZXIpIHtcbiAgICAkZGVmaW5lUHJvcGVydHkuZih0b09iamVjdCh0aGlzKSwgUCwgeyBnZXQ6IGFGdW5jdGlvbihnZXR0ZXIpLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZGVmaW5lLWdldHRlci5qc1xuLy8gbW9kdWxlIGlkID0gMzY3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///367\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar toObject = __webpack_require__(15);\nvar aFunction = __webpack_require__(16);\nvar $defineProperty = __webpack_require__(13);\n\n// B.2.2.3 Object.prototype.__defineSetter__(P, setter)\n__webpack_require__(12) && $export($export.P + __webpack_require__(92), 'Object', {\n __defineSetter__: function __defineSetter__(P, setter) {\n $defineProperty.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzY4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1zZXR0ZXIuanM/NzcxNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xuXG4vLyBCLjIuMi4zIE9iamVjdC5wcm90b3R5cGUuX19kZWZpbmVTZXR0ZXJfXyhQLCBzZXR0ZXIpXG5yZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICRleHBvcnQoJGV4cG9ydC5QICsgcmVxdWlyZSgnLi9fb2JqZWN0LWZvcmNlZC1wYW0nKSwgJ09iamVjdCcsIHtcbiAgX19kZWZpbmVTZXR0ZXJfXzogZnVuY3Rpb24gX19kZWZpbmVTZXR0ZXJfXyhQLCBzZXR0ZXIpIHtcbiAgICAkZGVmaW5lUHJvcGVydHkuZih0b09iamVjdCh0aGlzKSwgUCwgeyBzZXQ6IGFGdW5jdGlvbihzZXR0ZXIpLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZGVmaW5lLXNldHRlci5qc1xuLy8gbW9kdWxlIGlkID0gMzY4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///368\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar toObject = __webpack_require__(15);\nvar toPrimitive = __webpack_require__(31);\nvar getPrototypeOf = __webpack_require__(26);\nvar getOwnPropertyDescriptor = __webpack_require__(25).f;\n\n// B.2.2.4 Object.prototype.__lookupGetter__(P)\n__webpack_require__(12) && $export($export.P + __webpack_require__(92), 'Object', {\n __lookupGetter__: function __lookupGetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.get;\n } while (O = getPrototypeOf(O));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzY5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1nZXR0ZXIuanM/YzQyYSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmY7XG5cbi8vIEIuMi4yLjQgT2JqZWN0LnByb3RvdHlwZS5fX2xvb2t1cEdldHRlcl9fKFApXG5yZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICRleHBvcnQoJGV4cG9ydC5QICsgcmVxdWlyZSgnLi9fb2JqZWN0LWZvcmNlZC1wYW0nKSwgJ09iamVjdCcsIHtcbiAgX19sb29rdXBHZXR0ZXJfXzogZnVuY3Rpb24gX19sb29rdXBHZXR0ZXJfXyhQKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgSyA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICAgIHZhciBEO1xuICAgIGRvIHtcbiAgICAgIGlmIChEID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIEspKSByZXR1cm4gRC5nZXQ7XG4gICAgfSB3aGlsZSAoTyA9IGdldFByb3RvdHlwZU9mKE8pKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5sb29rdXAtZ2V0dGVyLmpzXG4vLyBtb2R1bGUgaWQgPSAzNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///369\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $export = __webpack_require__(0);\nvar toObject = __webpack_require__(15);\nvar toPrimitive = __webpack_require__(31);\nvar getPrototypeOf = __webpack_require__(26);\nvar getOwnPropertyDescriptor = __webpack_require__(25).f;\n\n// B.2.2.5 Object.prototype.__lookupSetter__(P)\n__webpack_require__(12) && $export($export.P + __webpack_require__(92), 'Object', {\n __lookupSetter__: function __lookupSetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.set;\n } while (O = getPrototypeOf(O));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1zZXR0ZXIuanM/MDI0NCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmY7XG5cbi8vIEIuMi4yLjUgT2JqZWN0LnByb3RvdHlwZS5fX2xvb2t1cFNldHRlcl9fKFApXG5yZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICRleHBvcnQoJGV4cG9ydC5QICsgcmVxdWlyZSgnLi9fb2JqZWN0LWZvcmNlZC1wYW0nKSwgJ09iamVjdCcsIHtcbiAgX19sb29rdXBTZXR0ZXJfXzogZnVuY3Rpb24gX19sb29rdXBTZXR0ZXJfXyhQKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgSyA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICAgIHZhciBEO1xuICAgIGRvIHtcbiAgICAgIGlmIChEID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIEspKSByZXR1cm4gRC5zZXQ7XG4gICAgfSB3aGlsZSAoTyA9IGdldFByb3RvdHlwZU9mKE8pKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5sb29rdXAtc2V0dGVyLmpzXG4vLyBtb2R1bGUgaWQgPSAzNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///370\n")},function(module,exports,__webpack_require__){eval("// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = __webpack_require__(0);\n\n$export($export.P + $export.R, 'Map', { toJSON: __webpack_require__(179)('Map') });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLnRvLWpzb24uanM/ODdiNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ01hcCcsIHsgdG9KU09OOiByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXRvLWpzb24nKSgnTWFwJykgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hcC50by1qc29uLmpzXG4vLyBtb2R1bGUgaWQgPSAzNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///371\n")},function(module,exports,__webpack_require__){eval("// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = __webpack_require__(0);\n\n$export($export.P + $export.R, 'Set', { toJSON: __webpack_require__(179)('Set') });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc2V0LnRvLWpzb24uanM/NmFiMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1NldCcsIHsgdG9KU09OOiByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXRvLWpzb24nKSgnU2V0JykgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnNldC50by1qc29uLmpzXG4vLyBtb2R1bGUgaWQgPSAzNzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///372\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\n__webpack_require__(93)('Map');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzczLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLm9mLmpzPzI0OWQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtbWFwLm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdNYXAnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLm9mLmpzXG4vLyBtb2R1bGUgaWQgPSAzNzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///373\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\n__webpack_require__(93)('Set');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzc0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc2V0Lm9mLmpzP2E5OTYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtc2V0Lm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdTZXQnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc2V0Lm9mLmpzXG4vLyBtb2R1bGUgaWQgPSAzNzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///374\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\n__webpack_require__(93)('WeakMap');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzc1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcud2Vhay1tYXAub2YuanM/MmRhZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy13ZWFrbWFwLm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdXZWFrTWFwJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LndlYWstbWFwLm9mLmpzXG4vLyBtb2R1bGUgaWQgPSAzNzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///375\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of\n__webpack_require__(93)('WeakSet');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzc2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcud2Vhay1zZXQub2YuanM/MDRlNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy13ZWFrc2V0Lm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdXZWFrU2V0Jyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LndlYWstc2V0Lm9mLmpzXG4vLyBtb2R1bGUgaWQgPSAzNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///376\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\n__webpack_require__(94)('Map');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzc3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLmZyb20uanM/ZTJiOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1tYXAuZnJvbVxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tZnJvbScpKCdNYXAnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLmZyb20uanNcbi8vIG1vZHVsZSBpZCA9IDM3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///377\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\n__webpack_require__(94)('Set');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzc4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc2V0LmZyb20uanM/NjIwOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1zZXQuZnJvbVxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tZnJvbScpKCdTZXQnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc2V0LmZyb20uanNcbi8vIG1vZHVsZSBpZCA9IDM3OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///378\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\n__webpack_require__(94)('WeakMap');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzc5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcud2Vhay1tYXAuZnJvbS5qcz9lOTdjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXdlYWttYXAuZnJvbVxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tZnJvbScpKCdXZWFrTWFwJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LndlYWstbWFwLmZyb20uanNcbi8vIG1vZHVsZSBpZCA9IDM3OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///379\n")},function(module,exports,__webpack_require__){eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from\n__webpack_require__(94)('WeakSet');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzgwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcud2Vhay1zZXQuZnJvbS5qcz9hOWQxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXdlYWtzZXQuZnJvbVxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tZnJvbScpKCdXZWFrU2V0Jyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LndlYWstc2V0LmZyb20uanNcbi8vIG1vZHVsZSBpZCA9IDM4MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///380\n")},function(module,exports,__webpack_require__){eval("// https://github.com/tc39/proposal-global\nvar $export = __webpack_require__(0);\n\n$export($export.G, { global: __webpack_require__(4) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzgxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuZ2xvYmFsLmpzPzBkMDciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtZ2xvYmFsXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuRywgeyBnbG9iYWw6IHJlcXVpcmUoJy4vX2dsb2JhbCcpIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDM4MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///381\n")},function(module,exports,__webpack_require__){eval("// https://github.com/tc39/proposal-global\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'System', { global: __webpack_require__(4) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzgyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3lzdGVtLmdsb2JhbC5qcz84ZmYyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWdsb2JhbFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdTeXN0ZW0nLCB7IGdsb2JhbDogcmVxdWlyZSgnLi9fZ2xvYmFsJykgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN5c3RlbS5nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDM4MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///382\n")},function(module,exports,__webpack_require__){eval("// https://github.com/ljharb/proposal-is-error\nvar $export = __webpack_require__(0);\nvar cof = __webpack_require__(29);\n\n$export($export.S, 'Error', {\n isError: function isError(it) {\n return cof(it) === 'Error';\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzgzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuZXJyb3IuaXMtZXJyb3IuanM/NTNlNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vbGpoYXJiL3Byb3Bvc2FsLWlzLWVycm9yXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ0Vycm9yJywge1xuICBpc0Vycm9yOiBmdW5jdGlvbiBpc0Vycm9yKGl0KSB7XG4gICAgcmV0dXJuIGNvZihpdCkgPT09ICdFcnJvcic7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5lcnJvci5pcy1lcnJvci5qc1xuLy8gbW9kdWxlIGlkID0gMzgzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///383\n")},function(module,exports,__webpack_require__){eval("// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n clamp: function clamp(x, lower, upper) {\n return Math.min(upper, Math.max(lower, x));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzg0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5jbGFtcC5qcz81ZmEzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgY2xhbXA6IGZ1bmN0aW9uIGNsYW1wKHgsIGxvd2VyLCB1cHBlcikge1xuICAgIHJldHVybiBNYXRoLm1pbih1cHBlciwgTWF0aC5tYXgobG93ZXIsIHgpKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguY2xhbXAuanNcbi8vIG1vZHVsZSBpZCA9IDM4NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///384\n")},function(module,exports,__webpack_require__){eval("// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', { DEG_PER_RAD: Math.PI / 180 });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzg1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5kZWctcGVyLXJhZC5qcz81YjRhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgREVHX1BFUl9SQUQ6IE1hdGguUEkgLyAxODAgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguZGVnLXBlci1yYWQuanNcbi8vIG1vZHVsZSBpZCA9IDM4NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///385\n")},function(module,exports,__webpack_require__){eval("// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = __webpack_require__(0);\nvar RAD_PER_DEG = 180 / Math.PI;\n\n$export($export.S, 'Math', {\n degrees: function degrees(radians) {\n return radians * RAD_PER_DEG;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzg2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5kZWdyZWVzLmpzP2I1YTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBSQURfUEVSX0RFRyA9IDE4MCAvIE1hdGguUEk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgZGVncmVlczogZnVuY3Rpb24gZGVncmVlcyhyYWRpYW5zKSB7XG4gICAgcmV0dXJuIHJhZGlhbnMgKiBSQURfUEVSX0RFRztcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguZGVncmVlcy5qc1xuLy8gbW9kdWxlIGlkID0gMzg2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///386\n")},function(module,exports,__webpack_require__){eval("// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = __webpack_require__(0);\nvar scale = __webpack_require__(181);\nvar fround = __webpack_require__(161);\n\n$export($export.S, 'Math', {\n fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {\n return fround(scale(x, inLow, inHigh, outLow, outHigh));\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzg3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5mc2NhbGUuanM/YmU3NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHNjYWxlID0gcmVxdWlyZSgnLi9fbWF0aC1zY2FsZScpO1xudmFyIGZyb3VuZCA9IHJlcXVpcmUoJy4vX21hdGgtZnJvdW5kJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgZnNjYWxlOiBmdW5jdGlvbiBmc2NhbGUoeCwgaW5Mb3csIGluSGlnaCwgb3V0TG93LCBvdXRIaWdoKSB7XG4gICAgcmV0dXJuIGZyb3VuZChzY2FsZSh4LCBpbkxvdywgaW5IaWdoLCBvdXRMb3csIG91dEhpZ2gpKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguZnNjYWxlLmpzXG4vLyBtb2R1bGUgaWQgPSAzODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///387\n")},function(module,exports,__webpack_require__){eval("// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n iaddh: function iaddh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzg4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5pYWRkaC5qcz80NzcyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGlhZGRoOiBmdW5jdGlvbiBpYWRkaCh4MCwgeDEsIHkwLCB5MSkge1xuICAgIHZhciAkeDAgPSB4MCA+Pj4gMDtcbiAgICB2YXIgJHgxID0geDEgPj4+IDA7XG4gICAgdmFyICR5MCA9IHkwID4+PiAwO1xuICAgIHJldHVybiAkeDEgKyAoeTEgPj4+IDApICsgKCgkeDAgJiAkeTAgfCAoJHgwIHwgJHkwKSAmIH4oJHgwICsgJHkwID4+PiAwKSkgPj4+IDMxKSB8IDA7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLmlhZGRoLmpzXG4vLyBtb2R1bGUgaWQgPSAzODhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///388\n")},function(module,exports,__webpack_require__){eval("// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n isubh: function isubh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzg5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5pc3ViaC5qcz9lYTIzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGlzdWJoOiBmdW5jdGlvbiBpc3ViaCh4MCwgeDEsIHkwLCB5MSkge1xuICAgIHZhciAkeDAgPSB4MCA+Pj4gMDtcbiAgICB2YXIgJHgxID0geDEgPj4+IDA7XG4gICAgdmFyICR5MCA9IHkwID4+PiAwO1xuICAgIHJldHVybiAkeDEgLSAoeTEgPj4+IDApIC0gKCh+JHgwICYgJHkwIHwgfigkeDAgXiAkeTApICYgJHgwIC0gJHkwID4+PiAwKSA+Pj4gMzEpIHwgMDtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguaXN1YmguanNcbi8vIG1vZHVsZSBpZCA9IDM4OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///389\n")},function(module,exports,__webpack_require__){eval("// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n imulh: function imulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >> 16;\n var v1 = $v >> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5pbXVsaC5qcz8wNzc1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGltdWxoOiBmdW5jdGlvbiBpbXVsaCh1LCB2KSB7XG4gICAgdmFyIFVJTlQxNiA9IDB4ZmZmZjtcbiAgICB2YXIgJHUgPSArdTtcbiAgICB2YXIgJHYgPSArdjtcbiAgICB2YXIgdTAgPSAkdSAmIFVJTlQxNjtcbiAgICB2YXIgdjAgPSAkdiAmIFVJTlQxNjtcbiAgICB2YXIgdTEgPSAkdSA+PiAxNjtcbiAgICB2YXIgdjEgPSAkdiA+PiAxNjtcbiAgICB2YXIgdCA9ICh1MSAqIHYwID4+PiAwKSArICh1MCAqIHYwID4+PiAxNik7XG4gICAgcmV0dXJuIHUxICogdjEgKyAodCA+PiAxNikgKyAoKHUwICogdjEgPj4+IDApICsgKHQgJiBVSU5UMTYpID4+IDE2KTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguaW11bGguanNcbi8vIG1vZHVsZSBpZCA9IDM5MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///390\n")},function(module,exports,__webpack_require__){eval("// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', { RAD_PER_DEG: 180 / Math.PI });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5yYWQtcGVyLWRlZy5qcz9kZWNmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgUkFEX1BFUl9ERUc6IDE4MCAvIE1hdGguUEkgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGgucmFkLXBlci1kZWcuanNcbi8vIG1vZHVsZSBpZCA9IDM5MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///391\n")},function(module,exports,__webpack_require__){eval("// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = __webpack_require__(0);\nvar DEG_PER_RAD = Math.PI / 180;\n\n$export($export.S, 'Math', {\n radians: function radians(degrees) {\n return degrees * DEG_PER_RAD;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5yYWRpYW5zLmpzPzE3NWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBERUdfUEVSX1JBRCA9IE1hdGguUEkgLyAxODA7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgcmFkaWFuczogZnVuY3Rpb24gcmFkaWFucyhkZWdyZWVzKSB7XG4gICAgcmV0dXJuIGRlZ3JlZXMgKiBERUdfUEVSX1JBRDtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGgucmFkaWFucy5qc1xuLy8gbW9kdWxlIGlkID0gMzkyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///392\n")},function(module,exports,__webpack_require__){eval("// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', { scale: __webpack_require__(181) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5zY2FsZS5qcz9iODQxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgc2NhbGU6IHJlcXVpcmUoJy4vX21hdGgtc2NhbGUnKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5zY2FsZS5qc1xuLy8gbW9kdWxlIGlkID0gMzkzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///393\n")},function(module,exports,__webpack_require__){eval("// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', {\n umulh: function umulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >>> 16;\n var v1 = $v >>> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzk0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC51bXVsaC5qcz84YjRkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIHVtdWxoOiBmdW5jdGlvbiB1bXVsaCh1LCB2KSB7XG4gICAgdmFyIFVJTlQxNiA9IDB4ZmZmZjtcbiAgICB2YXIgJHUgPSArdTtcbiAgICB2YXIgJHYgPSArdjtcbiAgICB2YXIgdTAgPSAkdSAmIFVJTlQxNjtcbiAgICB2YXIgdjAgPSAkdiAmIFVJTlQxNjtcbiAgICB2YXIgdTEgPSAkdSA+Pj4gMTY7XG4gICAgdmFyIHYxID0gJHYgPj4+IDE2O1xuICAgIHZhciB0ID0gKHUxICogdjAgPj4+IDApICsgKHUwICogdjAgPj4+IDE2KTtcbiAgICByZXR1cm4gdTEgKiB2MSArICh0ID4+PiAxNikgKyAoKHUwICogdjEgPj4+IDApICsgKHQgJiBVSU5UMTYpID4+PiAxNik7XG4gIH1cbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLnVtdWxoLmpzXG4vLyBtb2R1bGUgaWQgPSAzOTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///394\n")},function(module,exports,__webpack_require__){eval("// http://jfbastien.github.io/papers/Math.signbit.html\nvar $export = __webpack_require__(0);\n\n$export($export.S, 'Math', { signbit: function signbit(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzk1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5zaWduYml0LmpzPzFmYmMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cDovL2pmYmFzdGllbi5naXRodWIuaW8vcGFwZXJzL01hdGguc2lnbmJpdC5odG1sXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IHNpZ25iaXQ6IGZ1bmN0aW9uIHNpZ25iaXQoeCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIHJldHVybiAoeCA9ICt4KSAhPSB4ID8geCA6IHggPT0gMCA/IDEgLyB4ID09IEluZmluaXR5IDogeCA+IDA7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLnNpZ25iaXQuanNcbi8vIG1vZHVsZSBpZCA9IDM5NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///395\n")},function(module,exports,__webpack_require__){"use strict";eval("// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(0);\nvar core = __webpack_require__(27);\nvar global = __webpack_require__(4);\nvar speciesConstructor = __webpack_require__(88);\nvar promiseResolve = __webpack_require__(168);\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzk2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5LmpzP2Y4Y2IiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS1maW5hbGx5XG4ndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5SLCAnUHJvbWlzZScsIHsgJ2ZpbmFsbHknOiBmdW5jdGlvbiAob25GaW5hbGx5KSB7XG4gIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIGNvcmUuUHJvbWlzZSB8fCBnbG9iYWwuUHJvbWlzZSk7XG4gIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIG9uRmluYWxseSA9PSAnZnVuY3Rpb24nO1xuICByZXR1cm4gdGhpcy50aGVuKFxuICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHg7IH0pO1xuICAgIH0gOiBvbkZpbmFsbHksXG4gICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyB0aHJvdyBlOyB9KTtcbiAgICB9IDogb25GaW5hbGx5XG4gICk7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHkuanNcbi8vIG1vZHVsZSBpZCA9IDM5NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///396\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(0);\nvar newPromiseCapability = __webpack_require__(126);\nvar perform = __webpack_require__(167);\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzk3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucHJvbWlzZS50cnkuanM/NDFjNSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wcm9taXNlLXRyeVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi9fcGVyZm9ybScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1Byb21pc2UnLCB7ICd0cnknOiBmdW5jdGlvbiAoY2FsbGJhY2tmbikge1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gcGVyZm9ybShjYWxsYmFja2ZuKTtcbiAgKHJlc3VsdC5lID8gcHJvbWlzZUNhcGFiaWxpdHkucmVqZWN0IDogcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZSkocmVzdWx0LnYpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzXG4vLyBtb2R1bGUgaWQgPSAzOTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///397\n")},function(module,exports,__webpack_require__){eval("var metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzk4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5kZWZpbmUtbWV0YWRhdGEuanM/Yzg5ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xudmFyIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEgPSBtZXRhZGF0YS5zZXQ7XG5cbm1ldGFkYXRhLmV4cCh7IGRlZmluZU1ldGFkYXRhOiBmdW5jdGlvbiBkZWZpbmVNZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSwgdGFyZ2V0LCB0YXJnZXRLZXkpIHtcbiAgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSwgYW5PYmplY3QodGFyZ2V0KSwgdG9NZXRhS2V5KHRhcmdldEtleSkpO1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5kZWZpbmUtbWV0YWRhdGEuanNcbi8vIG1vZHVsZSBpZCA9IDM5OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///398\n")},function(module,exports,__webpack_require__){eval("var metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzk5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5kZWxldGUtbWV0YWRhdGEuanM/ZGVhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xudmFyIGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAgPSBtZXRhZGF0YS5tYXA7XG52YXIgc3RvcmUgPSBtZXRhZGF0YS5zdG9yZTtcblxubWV0YWRhdGEuZXhwKHsgZGVsZXRlTWV0YWRhdGE6IGZ1bmN0aW9uIGRlbGV0ZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgdmFyIHRhcmdldEtleSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1syXSk7XG4gIHZhciBtZXRhZGF0YU1hcCA9IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoYW5PYmplY3QodGFyZ2V0KSwgdGFyZ2V0S2V5LCBmYWxzZSk7XG4gIGlmIChtZXRhZGF0YU1hcCA9PT0gdW5kZWZpbmVkIHx8ICFtZXRhZGF0YU1hcFsnZGVsZXRlJ10obWV0YWRhdGFLZXkpKSByZXR1cm4gZmFsc2U7XG4gIGlmIChtZXRhZGF0YU1hcC5zaXplKSByZXR1cm4gdHJ1ZTtcbiAgdmFyIHRhcmdldE1ldGFkYXRhID0gc3RvcmUuZ2V0KHRhcmdldCk7XG4gIHRhcmdldE1ldGFkYXRhWydkZWxldGUnXSh0YXJnZXRLZXkpO1xuICByZXR1cm4gISF0YXJnZXRNZXRhZGF0YS5zaXplIHx8IHN0b3JlWydkZWxldGUnXSh0YXJnZXQpO1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5kZWxldGUtbWV0YWRhdGEuanNcbi8vIG1vZHVsZSBpZCA9IDM5OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///399\n")},function(module,exports,__webpack_require__){eval("var metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar getPrototypeOf = __webpack_require__(26);\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtbWV0YWRhdGEuanM/MzQ3NiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgb3JkaW5hcnlIYXNPd25NZXRhZGF0YSA9IG1ldGFkYXRhLmhhcztcbnZhciBvcmRpbmFyeUdldE93bk1ldGFkYXRhID0gbWV0YWRhdGEuZ2V0O1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcblxudmFyIG9yZGluYXJ5R2V0TWV0YWRhdGEgPSBmdW5jdGlvbiAoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgdmFyIGhhc093biA9IG9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICBpZiAoaGFzT3duKSByZXR1cm4gb3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gIHZhciBwYXJlbnQgPSBnZXRQcm90b3R5cGVPZihPKTtcbiAgcmV0dXJuIHBhcmVudCAhPT0gbnVsbCA/IG9yZGluYXJ5R2V0TWV0YWRhdGEoTWV0YWRhdGFLZXksIHBhcmVudCwgUCkgOiB1bmRlZmluZWQ7XG59O1xuXG5tZXRhZGF0YS5leHAoeyBnZXRNZXRhZGF0YTogZnVuY3Rpb24gZ2V0TWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICByZXR1cm4gb3JkaW5hcnlHZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgYW5PYmplY3QodGFyZ2V0KSwgYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKSk7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1tZXRhZGF0YS5qc1xuLy8gbW9kdWxlIGlkID0gNDAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///400\n")},function(module,exports,__webpack_require__){eval("var Set = __webpack_require__(171);\nvar from = __webpack_require__(180);\nvar metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar getPrototypeOf = __webpack_require__(26);\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtbWV0YWRhdGEta2V5cy5qcz9iZjc4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBTZXQgPSByZXF1aXJlKCcuL2VzNi5zZXQnKTtcbnZhciBmcm9tID0gcmVxdWlyZSgnLi9fYXJyYXktZnJvbS1pdGVyYWJsZScpO1xudmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzID0gbWV0YWRhdGEua2V5cztcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG5cbnZhciBvcmRpbmFyeU1ldGFkYXRhS2V5cyA9IGZ1bmN0aW9uIChPLCBQKSB7XG4gIHZhciBvS2V5cyA9IG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApO1xuICB2YXIgcGFyZW50ID0gZ2V0UHJvdG90eXBlT2YoTyk7XG4gIGlmIChwYXJlbnQgPT09IG51bGwpIHJldHVybiBvS2V5cztcbiAgdmFyIHBLZXlzID0gb3JkaW5hcnlNZXRhZGF0YUtleXMocGFyZW50LCBQKTtcbiAgcmV0dXJuIHBLZXlzLmxlbmd0aCA/IG9LZXlzLmxlbmd0aCA/IGZyb20obmV3IFNldChvS2V5cy5jb25jYXQocEtleXMpKSkgOiBwS2V5cyA6IG9LZXlzO1xufTtcblxubWV0YWRhdGEuZXhwKHsgZ2V0TWV0YWRhdGFLZXlzOiBmdW5jdGlvbiBnZXRNZXRhZGF0YUtleXModGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gIHJldHVybiBvcmRpbmFyeU1ldGFkYXRhS2V5cyhhbk9iamVjdCh0YXJnZXQpLCBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMV0pKTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW1ldGFkYXRhLWtleXMuanNcbi8vIG1vZHVsZSBpZCA9IDQwMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///401\n")},function(module,exports,__webpack_require__){eval("var metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtb3duLW1ldGFkYXRhLmpzP2NkOTEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIG9yZGluYXJ5R2V0T3duTWV0YWRhdGEgPSBtZXRhZGF0YS5nZXQ7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xuXG5tZXRhZGF0YS5leHAoeyBnZXRPd25NZXRhZGF0YTogZnVuY3Rpb24gZ2V0T3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICByZXR1cm4gb3JkaW5hcnlHZXRPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgYW5PYmplY3QodGFyZ2V0KVxuICAgICwgYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKSk7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1vd24tbWV0YWRhdGEuanNcbi8vIG1vZHVsZSBpZCA9IDQwMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///402\n")},function(module,exports,__webpack_require__){eval("var metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtb3duLW1ldGFkYXRhLWtleXMuanM/YmVjOCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgb3JkaW5hcnlPd25NZXRhZGF0YUtleXMgPSBtZXRhZGF0YS5rZXlzO1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcblxubWV0YWRhdGEuZXhwKHsgZ2V0T3duTWV0YWRhdGFLZXlzOiBmdW5jdGlvbiBnZXRPd25NZXRhZGF0YUtleXModGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gIHJldHVybiBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhhbk9iamVjdCh0YXJnZXQpLCBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMV0pKTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW93bi1tZXRhZGF0YS1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSA0MDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///403\n")},function(module,exports,__webpack_require__){eval("var metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar getPrototypeOf = __webpack_require__(26);\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5oYXMtbWV0YWRhdGEuanM/ZjE2NiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgb3JkaW5hcnlIYXNPd25NZXRhZGF0YSA9IG1ldGFkYXRhLmhhcztcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG5cbnZhciBvcmRpbmFyeUhhc01ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gIHZhciBoYXNPd24gPSBvcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgaWYgKGhhc093bikgcmV0dXJuIHRydWU7XG4gIHZhciBwYXJlbnQgPSBnZXRQcm90b3R5cGVPZihPKTtcbiAgcmV0dXJuIHBhcmVudCAhPT0gbnVsbCA/IG9yZGluYXJ5SGFzTWV0YWRhdGEoTWV0YWRhdGFLZXksIHBhcmVudCwgUCkgOiBmYWxzZTtcbn07XG5cbm1ldGFkYXRhLmV4cCh7IGhhc01ldGFkYXRhOiBmdW5jdGlvbiBoYXNNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gIHJldHVybiBvcmRpbmFyeUhhc01ldGFkYXRhKG1ldGFkYXRhS2V5LCBhbk9iamVjdCh0YXJnZXQpLCBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMl0pKTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuaGFzLW1ldGFkYXRhLmpzXG4vLyBtb2R1bGUgaWQgPSA0MDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///404\n")},function(module,exports,__webpack_require__){eval("var metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5oYXMtb3duLW1ldGFkYXRhLmpzP2M4ZWIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIG9yZGluYXJ5SGFzT3duTWV0YWRhdGEgPSBtZXRhZGF0YS5oYXM7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xuXG5tZXRhZGF0YS5leHAoeyBoYXNPd25NZXRhZGF0YTogZnVuY3Rpb24gaGFzT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICByZXR1cm4gb3JkaW5hcnlIYXNPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgYW5PYmplY3QodGFyZ2V0KVxuICAgICwgYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKSk7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1vd24tbWV0YWRhdGEuanNcbi8vIG1vZHVsZSBpZCA9IDQwNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///405\n")},function(module,exports,__webpack_require__){eval("var $metadata = __webpack_require__(39);\nvar anObject = __webpack_require__(3);\nvar aFunction = __webpack_require__(16);\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\n );\n };\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5tZXRhZGF0YS5qcz8xMTlmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciAkbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIHRvTWV0YUtleSA9ICRtZXRhZGF0YS5rZXk7XG52YXIgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSA9ICRtZXRhZGF0YS5zZXQ7XG5cbiRtZXRhZGF0YS5leHAoeyBtZXRhZGF0YTogZnVuY3Rpb24gbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGRlY29yYXRvcih0YXJnZXQsIHRhcmdldEtleSkge1xuICAgIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoXG4gICAgICBtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSxcbiAgICAgICh0YXJnZXRLZXkgIT09IHVuZGVmaW5lZCA/IGFuT2JqZWN0IDogYUZ1bmN0aW9uKSh0YXJnZXQpLFxuICAgICAgdG9NZXRhS2V5KHRhcmdldEtleSlcbiAgICApO1xuICB9O1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5tZXRhZGF0YS5qc1xuLy8gbW9kdWxlIGlkID0gNDA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///406\n")},function(module,exports,__webpack_require__){eval("// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask\nvar $export = __webpack_require__(0);\nvar microtask = __webpack_require__(125)();\nvar process = __webpack_require__(4).process;\nvar isNode = __webpack_require__(29)(process) == 'process';\n\n$export($export.G, {\n asap: function asap(fn) {\n var domain = isNode && process.domain;\n microtask(domain ? domain.bind(fn) : fn);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXNhcC5qcz82OGNkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yd2FsZHJvbi90YzM5LW5vdGVzL2Jsb2IvbWFzdGVyL2VzNi8yMDE0LTA5L3NlcHQtMjUubWQjNTEwLWdsb2JhbGFzYXAtZm9yLWVucXVldWluZy1hLW1pY3JvdGFza1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIHByb2Nlc3MgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5wcm9jZXNzO1xudmFyIGlzTm9kZSA9IHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxuJGV4cG9ydCgkZXhwb3J0LkcsIHtcbiAgYXNhcDogZnVuY3Rpb24gYXNhcChmbikge1xuICAgIHZhciBkb21haW4gPSBpc05vZGUgJiYgcHJvY2Vzcy5kb21haW47XG4gICAgbWljcm90YXNrKGRvbWFpbiA/IGRvbWFpbi5iaW5kKGZuKSA6IGZuKTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFzYXAuanNcbi8vIG1vZHVsZSBpZCA9IDQwN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///407\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/zenparsing/es-observable\nvar $export = __webpack_require__(0);\nvar global = __webpack_require__(4);\nvar core = __webpack_require__(27);\nvar microtask = __webpack_require__(125)();\nvar OBSERVABLE = __webpack_require__(9)('observable');\nvar aFunction = __webpack_require__(16);\nvar anObject = __webpack_require__(3);\nvar anInstance = __webpack_require__(55);\nvar redefineAll = __webpack_require__(57);\nvar hide = __webpack_require__(18);\nvar forOf = __webpack_require__(56);\nvar RETURN = forOf.RETURN;\n\nvar getMethod = function (fn) {\n return fn == null ? undefined : aFunction(fn);\n};\n\nvar cleanupSubscription = function (subscription) {\n var cleanup = subscription._c;\n if (cleanup) {\n subscription._c = undefined;\n cleanup();\n }\n};\n\nvar subscriptionClosed = function (subscription) {\n return subscription._o === undefined;\n};\n\nvar closeSubscription = function (subscription) {\n if (!subscriptionClosed(subscription)) {\n subscription._o = undefined;\n cleanupSubscription(subscription);\n }\n};\n\nvar Subscription = function (observer, subscriber) {\n anObject(observer);\n this._c = undefined;\n this._o = observer;\n observer = new SubscriptionObserver(this);\n try {\n var cleanup = subscriber(observer);\n var subscription = cleanup;\n if (cleanup != null) {\n if (typeof cleanup.unsubscribe === 'function') cleanup = function () { subscription.unsubscribe(); };\n else aFunction(cleanup);\n this._c = cleanup;\n }\n } catch (e) {\n observer.error(e);\n return;\n } if (subscriptionClosed(this)) cleanupSubscription(this);\n};\n\nSubscription.prototype = redefineAll({}, {\n unsubscribe: function unsubscribe() { closeSubscription(this); }\n});\n\nvar SubscriptionObserver = function (subscription) {\n this._s = subscription;\n};\n\nSubscriptionObserver.prototype = redefineAll({}, {\n next: function next(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n try {\n var m = getMethod(observer.next);\n if (m) return m.call(observer, value);\n } catch (e) {\n try {\n closeSubscription(subscription);\n } finally {\n throw e;\n }\n }\n }\n },\n error: function error(value) {\n var subscription = this._s;\n if (subscriptionClosed(subscription)) throw value;\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.error);\n if (!m) throw value;\n value = m.call(observer, value);\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n },\n complete: function complete(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.complete);\n value = m ? m.call(observer, value) : undefined;\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n }\n }\n});\n\nvar $Observable = function Observable(subscriber) {\n anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);\n};\n\nredefineAll($Observable.prototype, {\n subscribe: function subscribe(observer) {\n return new Subscription(observer, this._f);\n },\n forEach: function forEach(fn) {\n var that = this;\n return new (core.Promise || global.Promise)(function (resolve, reject) {\n aFunction(fn);\n var subscription = that.subscribe({\n next: function (value) {\n try {\n return fn(value);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n});\n\nredefineAll($Observable, {\n from: function from(x) {\n var C = typeof this === 'function' ? this : $Observable;\n var method = getMethod(anObject(x)[OBSERVABLE]);\n if (method) {\n var observable = anObject(method.call(x));\n return observable.constructor === C ? observable : new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n return new C(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n try {\n if (forOf(x, false, function (it) {\n observer.next(it);\n if (done) return RETURN;\n }) === RETURN) return;\n } catch (e) {\n if (done) throw e;\n observer.error(e);\n return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n },\n of: function of() {\n for (var i = 0, l = arguments.length, items = new Array(l); i < l;) items[i] = arguments[i++];\n return new (typeof this === 'function' ? this : $Observable)(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n for (var j = 0; j < items.length; ++j) {\n observer.next(items[j]);\n if (done) return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n }\n});\n\nhide($Observable.prototype, OBSERVABLE, function () { return this; });\n\n$export($export.G, { Observable: $Observable });\n\n__webpack_require__(54)('Observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JzZXJ2YWJsZS5qcz85ZTFkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZW5wYXJzaW5nL2VzLW9ic2VydmFibGVcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIE9CU0VSVkFCTEUgPSByZXF1aXJlKCcuL193a3MnKSgnb2JzZXJ2YWJsZScpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIFJFVFVSTiA9IGZvck9mLlJFVFVSTjtcblxudmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gZm4gPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGFGdW5jdGlvbihmbik7XG59O1xuXG52YXIgY2xlYW51cFN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uIChzdWJzY3JpcHRpb24pIHtcbiAgdmFyIGNsZWFudXAgPSBzdWJzY3JpcHRpb24uX2M7XG4gIGlmIChjbGVhbnVwKSB7XG4gICAgc3Vic2NyaXB0aW9uLl9jID0gdW5kZWZpbmVkO1xuICAgIGNsZWFudXAoKTtcbiAgfVxufTtcblxudmFyIHN1YnNjcmlwdGlvbkNsb3NlZCA9IGZ1bmN0aW9uIChzdWJzY3JpcHRpb24pIHtcbiAgcmV0dXJuIHN1YnNjcmlwdGlvbi5fbyA9PT0gdW5kZWZpbmVkO1xufTtcblxudmFyIGNsb3NlU3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gKHN1YnNjcmlwdGlvbikge1xuICBpZiAoIXN1YnNjcmlwdGlvbkNsb3NlZChzdWJzY3JpcHRpb24pKSB7XG4gICAgc3Vic2NyaXB0aW9uLl9vID0gdW5kZWZpbmVkO1xuICAgIGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgfVxufTtcblxudmFyIFN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uIChvYnNlcnZlciwgc3Vic2NyaWJlcikge1xuICBhbk9iamVjdChvYnNlcnZlcik7XG4gIHRoaXMuX2MgPSB1bmRlZmluZWQ7XG4gIHRoaXMuX28gPSBvYnNlcnZlcjtcbiAgb2JzZXJ2ZXIgPSBuZXcgU3Vic2NyaXB0aW9uT2JzZXJ2ZXIodGhpcyk7XG4gIHRyeSB7XG4gICAgdmFyIGNsZWFudXAgPSBzdWJzY3JpYmVyKG9ic2VydmVyKTtcbiAgICB2YXIgc3Vic2NyaXB0aW9uID0gY2xlYW51cDtcbiAgICBpZiAoY2xlYW51cCAhPSBudWxsKSB7XG4gICAgICBpZiAodHlwZW9mIGNsZWFudXAudW5zdWJzY3JpYmUgPT09ICdmdW5jdGlvbicpIGNsZWFudXAgPSBmdW5jdGlvbiAoKSB7IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpOyB9O1xuICAgICAgZWxzZSBhRnVuY3Rpb24oY2xlYW51cCk7XG4gICAgICB0aGlzLl9jID0gY2xlYW51cDtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBvYnNlcnZlci5lcnJvcihlKTtcbiAgICByZXR1cm47XG4gIH0gaWYgKHN1YnNjcmlwdGlvbkNsb3NlZCh0aGlzKSkgY2xlYW51cFN1YnNjcmlwdGlvbih0aGlzKTtcbn07XG5cblN1YnNjcmlwdGlvbi5wcm90b3R5cGUgPSByZWRlZmluZUFsbCh7fSwge1xuICB1bnN1YnNjcmliZTogZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7IGNsb3NlU3Vic2NyaXB0aW9uKHRoaXMpOyB9XG59KTtcblxudmFyIFN1YnNjcmlwdGlvbk9ic2VydmVyID0gZnVuY3Rpb24gKHN1YnNjcmlwdGlvbikge1xuICB0aGlzLl9zID0gc3Vic2NyaXB0aW9uO1xufTtcblxuU3Vic2NyaXB0aW9uT2JzZXJ2ZXIucHJvdG90eXBlID0gcmVkZWZpbmVBbGwoe30sIHtcbiAgbmV4dDogZnVuY3Rpb24gbmV4dCh2YWx1ZSkge1xuICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGlzLl9zO1xuICAgIGlmICghc3Vic2NyaXB0aW9uQ2xvc2VkKHN1YnNjcmlwdGlvbikpIHtcbiAgICAgIHZhciBvYnNlcnZlciA9IHN1YnNjcmlwdGlvbi5fbztcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBtID0gZ2V0TWV0aG9kKG9ic2VydmVyLm5leHQpO1xuICAgICAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvYnNlcnZlciwgdmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNsb3NlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZXJyb3I6IGZ1bmN0aW9uIGVycm9yKHZhbHVlKSB7XG4gICAgdmFyIHN1YnNjcmlwdGlvbiA9IHRoaXMuX3M7XG4gICAgaWYgKHN1YnNjcmlwdGlvbkNsb3NlZChzdWJzY3JpcHRpb24pKSB0aHJvdyB2YWx1ZTtcbiAgICB2YXIgb2JzZXJ2ZXIgPSBzdWJzY3JpcHRpb24uX287XG4gICAgc3Vic2NyaXB0aW9uLl9vID0gdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICB2YXIgbSA9IGdldE1ldGhvZChvYnNlcnZlci5lcnJvcik7XG4gICAgICBpZiAoIW0pIHRocm93IHZhbHVlO1xuICAgICAgdmFsdWUgPSBtLmNhbGwob2JzZXJ2ZXIsIHZhbHVlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gY2xlYW51cFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcbiAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHZhbHVlKSB7XG4gICAgdmFyIHN1YnNjcmlwdGlvbiA9IHRoaXMuX3M7XG4gICAgaWYgKCFzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uKSkge1xuICAgICAgdmFyIG9ic2VydmVyID0gc3Vic2NyaXB0aW9uLl9vO1xuICAgICAgc3Vic2NyaXB0aW9uLl9vID0gdW5kZWZpbmVkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIG0gPSBnZXRNZXRob2Qob2JzZXJ2ZXIuY29tcGxldGUpO1xuICAgICAgICB2YWx1ZSA9IG0gPyBtLmNhbGwob2JzZXJ2ZXIsIHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfSBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG59KTtcblxudmFyICRPYnNlcnZhYmxlID0gZnVuY3Rpb24gT2JzZXJ2YWJsZShzdWJzY3JpYmVyKSB7XG4gIGFuSW5zdGFuY2UodGhpcywgJE9ic2VydmFibGUsICdPYnNlcnZhYmxlJywgJ19mJykuX2YgPSBhRnVuY3Rpb24oc3Vic2NyaWJlcik7XG59O1xuXG5yZWRlZmluZUFsbCgkT2JzZXJ2YWJsZS5wcm90b3R5cGUsIHtcbiAgc3Vic2NyaWJlOiBmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHtcbiAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvbihvYnNlcnZlciwgdGhpcy5fZik7XG4gIH0sXG4gIGZvckVhY2g6IGZ1bmN0aW9uIGZvckVhY2goZm4pIHtcbiAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyAoY29yZS5Qcm9taXNlIHx8IGdsb2JhbC5Qcm9taXNlKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBhRnVuY3Rpb24oZm4pO1xuICAgICAgdmFyIHN1YnNjcmlwdGlvbiA9IHRoYXQuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBmbih2YWx1ZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogcmVqZWN0LFxuICAgICAgICBjb21wbGV0ZTogcmVzb2x2ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn0pO1xuXG5yZWRlZmluZUFsbCgkT2JzZXJ2YWJsZSwge1xuICBmcm9tOiBmdW5jdGlvbiBmcm9tKHgpIHtcbiAgICB2YXIgQyA9IHR5cGVvZiB0aGlzID09PSAnZnVuY3Rpb24nID8gdGhpcyA6ICRPYnNlcnZhYmxlO1xuICAgIHZhciBtZXRob2QgPSBnZXRNZXRob2QoYW5PYmplY3QoeClbT0JTRVJWQUJMRV0pO1xuICAgIGlmIChtZXRob2QpIHtcbiAgICAgIHZhciBvYnNlcnZhYmxlID0gYW5PYmplY3QobWV0aG9kLmNhbGwoeCkpO1xuICAgICAgcmV0dXJuIG9ic2VydmFibGUuY29uc3RydWN0b3IgPT09IEMgPyBvYnNlcnZhYmxlIDogbmV3IEMoZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlLnN1YnNjcmliZShvYnNlcnZlcik7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgdmFyIGRvbmUgPSBmYWxzZTtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghZG9uZSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoZm9yT2YoeCwgZmFsc2UsIGZ1bmN0aW9uIChpdCkge1xuICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGl0KTtcbiAgICAgICAgICAgICAgaWYgKGRvbmUpIHJldHVybiBSRVRVUk47XG4gICAgICAgICAgICB9KSA9PT0gUkVUVVJOKSByZXR1cm47XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGRvbmUpIHRocm93IGU7XG4gICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9IG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgZG9uZSA9IHRydWU7IH07XG4gICAgfSk7XG4gIH0sXG4gIG9mOiBmdW5jdGlvbiBvZigpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGgsIGl0ZW1zID0gbmV3IEFycmF5KGwpOyBpIDwgbDspIGl0ZW1zW2ldID0gYXJndW1lbnRzW2krK107XG4gICAgcmV0dXJuIG5ldyAodHlwZW9mIHRoaXMgPT09ICdmdW5jdGlvbicgPyB0aGlzIDogJE9ic2VydmFibGUpKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgdmFyIGRvbmUgPSBmYWxzZTtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghZG9uZSkge1xuICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaXRlbXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQoaXRlbXNbal0pO1xuICAgICAgICAgICAgaWYgKGRvbmUpIHJldHVybjtcbiAgICAgICAgICB9IG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgZG9uZSA9IHRydWU7IH07XG4gICAgfSk7XG4gIH1cbn0pO1xuXG5oaWRlKCRPYnNlcnZhYmxlLnByb3RvdHlwZSwgT0JTRVJWQUJMRSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbiRleHBvcnQoJGV4cG9ydC5HLCB7IE9ic2VydmFibGU6ICRPYnNlcnZhYmxlIH0pO1xuXG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKCdPYnNlcnZhYmxlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9ic2VydmFibGUuanNcbi8vIG1vZHVsZSBpZCA9IDQwOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///408\n")},function(module,exports,__webpack_require__){eval("// ie9- setTimeout & setInterval additional parameters fix\nvar global = __webpack_require__(4);\nvar $export = __webpack_require__(0);\nvar userAgent = __webpack_require__(89);\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudGltZXJzLmpzP2JmYzUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaWU5LSBzZXRUaW1lb3V0ICYgc2V0SW50ZXJ2YWwgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZpeFxudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuL191c2VyLWFnZW50Jyk7XG52YXIgc2xpY2UgPSBbXS5zbGljZTtcbnZhciBNU0lFID0gL01TSUUgLlxcLi8udGVzdCh1c2VyQWdlbnQpOyAvLyA8LSBkaXJ0eSBpZTktIGNoZWNrXG52YXIgd3JhcCA9IGZ1bmN0aW9uIChzZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChmbiwgdGltZSAvKiAsIC4uLmFyZ3MgKi8pIHtcbiAgICB2YXIgYm91bmRBcmdzID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XG4gICAgdmFyIGFyZ3MgPSBib3VuZEFyZ3MgPyBzbGljZS5jYWxsKGFyZ3VtZW50cywgMikgOiBmYWxzZTtcbiAgICByZXR1cm4gc2V0KGJvdW5kQXJncyA/IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgICAgKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nID8gZm4gOiBGdW5jdGlvbihmbikpLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gOiBmbiwgdGltZSk7XG4gIH07XG59O1xuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LkIgKyAkZXhwb3J0LkYgKiBNU0lFLCB7XG4gIHNldFRpbWVvdXQ6IHdyYXAoZ2xvYmFsLnNldFRpbWVvdXQpLFxuICBzZXRJbnRlcnZhbDogd3JhcChnbG9iYWwuc2V0SW50ZXJ2YWwpXG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudGltZXJzLmpzXG4vLyBtb2R1bGUgaWQgPSA0MDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///409\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(0);\nvar $task = __webpack_require__(124);\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuaW1tZWRpYXRlLmpzPzc2MjciXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKTtcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5CLCB7XG4gIHNldEltbWVkaWF0ZTogJHRhc2suc2V0LFxuICBjbGVhckltbWVkaWF0ZTogJHRhc2suY2xlYXJcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5pbW1lZGlhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDQxMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///410\n")},function(module,exports,__webpack_require__){eval("var $iterators = __webpack_require__(123);\nvar getKeys = __webpack_require__(50);\nvar redefine = __webpack_require__(19);\nvar global = __webpack_require__(4);\nvar hide = __webpack_require__(18);\nvar Iterators = __webpack_require__(63);\nvar wks = __webpack_require__(9);\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzPzdmMWQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRpdGVyYXRvcnMgPSByZXF1aXJlKCcuL2VzNi5hcnJheS5pdGVyYXRvcicpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIHdrcyA9IHJlcXVpcmUoJy4vX3drcycpO1xudmFyIElURVJBVE9SID0gd2tzKCdpdGVyYXRvcicpO1xudmFyIFRPX1NUUklOR19UQUcgPSB3a3MoJ3RvU3RyaW5nVGFnJyk7XG52YXIgQXJyYXlWYWx1ZXMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbnZhciBET01JdGVyYWJsZXMgPSB7XG4gIENTU1J1bGVMaXN0OiB0cnVlLCAvLyBUT0RPOiBOb3Qgc3BlYyBjb21wbGlhbnQsIHNob3VsZCBiZSBmYWxzZS5cbiAgQ1NTU3R5bGVEZWNsYXJhdGlvbjogZmFsc2UsXG4gIENTU1ZhbHVlTGlzdDogZmFsc2UsXG4gIENsaWVudFJlY3RMaXN0OiBmYWxzZSxcbiAgRE9NUmVjdExpc3Q6IGZhbHNlLFxuICBET01TdHJpbmdMaXN0OiBmYWxzZSxcbiAgRE9NVG9rZW5MaXN0OiB0cnVlLFxuICBEYXRhVHJhbnNmZXJJdGVtTGlzdDogZmFsc2UsXG4gIEZpbGVMaXN0OiBmYWxzZSxcbiAgSFRNTEFsbENvbGxlY3Rpb246IGZhbHNlLFxuICBIVE1MQ29sbGVjdGlvbjogZmFsc2UsXG4gIEhUTUxGb3JtRWxlbWVudDogZmFsc2UsXG4gIEhUTUxTZWxlY3RFbGVtZW50OiBmYWxzZSxcbiAgTWVkaWFMaXN0OiB0cnVlLCAvLyBUT0RPOiBOb3Qgc3BlYyBjb21wbGlhbnQsIHNob3VsZCBiZSBmYWxzZS5cbiAgTWltZVR5cGVBcnJheTogZmFsc2UsXG4gIE5hbWVkTm9kZU1hcDogZmFsc2UsXG4gIE5vZGVMaXN0OiB0cnVlLFxuICBQYWludFJlcXVlc3RMaXN0OiBmYWxzZSxcbiAgUGx1Z2luOiBmYWxzZSxcbiAgUGx1Z2luQXJyYXk6IGZhbHNlLFxuICBTVkdMZW5ndGhMaXN0OiBmYWxzZSxcbiAgU1ZHTnVtYmVyTGlzdDogZmFsc2UsXG4gIFNWR1BhdGhTZWdMaXN0OiBmYWxzZSxcbiAgU1ZHUG9pbnRMaXN0OiBmYWxzZSxcbiAgU1ZHU3RyaW5nTGlzdDogZmFsc2UsXG4gIFNWR1RyYW5zZm9ybUxpc3Q6IGZhbHNlLFxuICBTb3VyY2VCdWZmZXJMaXN0OiBmYWxzZSxcbiAgU3R5bGVTaGVldExpc3Q6IHRydWUsIC8vIFRPRE86IE5vdCBzcGVjIGNvbXBsaWFudCwgc2hvdWxkIGJlIGZhbHNlLlxuICBUZXh0VHJhY2tDdWVMaXN0OiBmYWxzZSxcbiAgVGV4dFRyYWNrTGlzdDogZmFsc2UsXG4gIFRvdWNoTGlzdDogZmFsc2Vcbn07XG5cbmZvciAodmFyIGNvbGxlY3Rpb25zID0gZ2V0S2V5cyhET01JdGVyYWJsZXMpLCBpID0gMDsgaSA8IGNvbGxlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gIHZhciBOQU1FID0gY29sbGVjdGlvbnNbaV07XG4gIHZhciBleHBsaWNpdCA9IERPTUl0ZXJhYmxlc1tOQU1FXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIHZhciBrZXk7XG4gIGlmIChwcm90bykge1xuICAgIGlmICghcHJvdG9bSVRFUkFUT1JdKSBoaWRlKHByb3RvLCBJVEVSQVRPUiwgQXJyYXlWYWx1ZXMpO1xuICAgIGlmICghcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICAgIEl0ZXJhdG9yc1tOQU1FXSA9IEFycmF5VmFsdWVzO1xuICAgIGlmIChleHBsaWNpdCkgZm9yIChrZXkgaW4gJGl0ZXJhdG9ycykgaWYgKCFwcm90b1trZXldKSByZWRlZmluZShwcm90bywga2V5LCAkaXRlcmF0b3JzW2tleV0sIHRydWUpO1xuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qc1xuLy8gbW9kdWxlIGlkID0gNDExXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///411\n")},function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(global) {/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n "use strict";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === "function" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || "@@iterator";\n var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";\n var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";\n\n var inModule = typeof module === "object";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we\'re in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don\'t bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we\'re in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there\'s no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don\'t have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: "normal", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: "throw", arg: err };\n }\n }\n\n var GenStateSuspendedStart = "suspendedStart";\n var GenStateSuspendedYield = "suspendedYield";\n var GenStateExecuting = "executing";\n var GenStateCompleted = "completed";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don\'t natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = "GeneratorFunction";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n ["next", "throw", "return"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === "function" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === "GeneratorFunction"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = "GeneratorFunction";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, "__await")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === "throw") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === "object" &&\n hasOwn.call(value, "__await")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke("next", value, resolve, reject);\n }, function(err) {\n invoke("throw", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n if (typeof global.process === "object" && global.process.domain) {\n invoke = global.process.domain.bind(invoke);\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error("Generator is already running");\n }\n\n if (state === GenStateCompleted) {\n if (method === "throw") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === "next") {\n // Setting context._sent for legacy support of Babel\'s\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === "throw") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === "return") {\n context.abrupt("return", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === "normal") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === "throw") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = "throw";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === "throw") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = "return";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === "throw") {\n // If maybeInvokeDelegate(context) changed context.method from\n // "return" to "throw", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = "throw";\n context.arg = new TypeError(\n "The iterator does not provide a \'throw\' method");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === "throw") {\n context.method = "throw";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = "throw";\n context.arg = new TypeError("iterator result is not an object");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was "throw" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was "next", forget context.arg since it has been\n // "consumed" by the delegate iterator. If context.method was\n // "return", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== "return") {\n context.method = "next";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = "Generator";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers\' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn\'t happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return "[object Generator]";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = "normal";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: "root" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === "function") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel\'s\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = "next";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === "t" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === "throw") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = "throw";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = "next";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === "root") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle("end");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, "catchLoc");\n var hasFinally = hasOwn.call(entry, "finallyLoc");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error("try statement without catch or finally");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, "finallyLoc") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === "break" ||\n type === "continue") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = "next";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === "throw") {\n throw record.arg;\n }\n\n if (record.type === "break" ||\n record.type === "continue") {\n this.next = record.arg;\n } else if (record.type === "return") {\n this.rval = this.arg = record.arg;\n this.method = "return";\n this.next = "end";\n } else if (record.type === "normal" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n "catch": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === "throw") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error("illegal catch attempt");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === "next") {\n // Deliberately forget the last sent value so that we don\'t\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === "object" ? global :\n typeof window === "object" ? window :\n typeof self === "object" ? self : this\n);\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(147)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXBvbHlmaWxsL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanM/Y2U0NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBodHRwczovL3Jhdy5naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL21hc3Rlci9MSUNFTlNFIGZpbGUuIEFuXG4gKiBhZGRpdGlvbmFsIGdyYW50IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW5cbiAqIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4hKGZ1bmN0aW9uKGdsb2JhbCkge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICB2YXIgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiO1xuICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuXG4gIHZhciBpbk1vZHVsZSA9IHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCI7XG4gIHZhciBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZTtcbiAgaWYgKHJ1bnRpbWUpIHtcbiAgICBpZiAoaW5Nb2R1bGUpIHtcbiAgICAgIC8vIElmIHJlZ2VuZXJhdG9yUnVudGltZSBpcyBkZWZpbmVkIGdsb2JhbGx5IGFuZCB3ZSdyZSBpbiBhIG1vZHVsZSxcbiAgICAgIC8vIG1ha2UgdGhlIGV4cG9ydHMgb2JqZWN0IGlkZW50aWNhbCB0byByZWdlbmVyYXRvclJ1bnRpbWUuXG4gICAgICBtb2R1bGUuZXhwb3J0cyA9IHJ1bnRpbWU7XG4gICAgfVxuICAgIC8vIERvbid0IGJvdGhlciBldmFsdWF0aW5nIHRoZSByZXN0IG9mIHRoaXMgZmlsZSBpZiB0aGUgcnVudGltZSB3YXNcbiAgICAvLyBhbHJlYWR5IGRlZmluZWQgZ2xvYmFsbHkuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRGVmaW5lIHRoZSBydW50aW1lIGdsb2JhbGx5IChhcyBleHBlY3RlZCBieSBnZW5lcmF0ZWQgY29kZSkgYXMgZWl0aGVyXG4gIC8vIG1vZHVsZS5leHBvcnRzIChpZiB3ZSdyZSBpbiBhIG1vZHVsZSkgb3IgYSBuZXcsIGVtcHR5IG9iamVjdC5cbiAgcnVudGltZSA9IGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWUgPSBpbk1vZHVsZSA/IG1vZHVsZS5leHBvcnRzIDoge307XG5cbiAgZnVuY3Rpb24gd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIC8vIElmIG91dGVyRm4gcHJvdmlkZWQgYW5kIG91dGVyRm4ucHJvdG90eXBlIGlzIGEgR2VuZXJhdG9yLCB0aGVuIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yLlxuICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yO1xuICAgIHZhciBnZW5lcmF0b3IgPSBPYmplY3QuY3JlYXRlKHByb3RvR2VuZXJhdG9yLnByb3RvdHlwZSk7XG4gICAgdmFyIGNvbnRleHQgPSBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSk7XG5cbiAgICAvLyBUaGUgLl9pbnZva2UgbWV0aG9kIHVuaWZpZXMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzLlxuICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH1cbiAgcnVudGltZS53cmFwID0gd3JhcDtcblxuICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG4gIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtlIGEgY2xvc3VyZSB0byBiZVxuICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcbiAgLy8gdG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1bWluZ1xuICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcbiAgLy8gb25seSBhZGRpdGlvbmFsIGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaFxuICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInRocm93XCIsIGFyZzogZXJyIH07XG4gICAgfVxuICB9XG5cbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG4gIC8vIFJldHVybmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBpbm5lckZuIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXNcbiAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG4gIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZFxuICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG5cbiAgLy8gVGhpcyBpcyBhIHBvbHlmaWxsIGZvciAlSXRlcmF0b3JQcm90b3R5cGUlIGZvciBlbnZpcm9ubWVudHMgdGhhdFxuICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LlxuICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgSXRlcmF0b3JQcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbiAgdmFyIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG8gJiYgZ2V0UHJvdG8oZ2V0UHJvdG8odmFsdWVzKFtdKSkpO1xuICBpZiAoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgJiZcbiAgICAgIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPcCAmJlxuICAgICAgaGFzT3duLmNhbGwoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUsIGl0ZXJhdG9yU3ltYm9sKSkge1xuICAgIC8vIFRoaXMgZW52aXJvbm1lbnQgaGFzIGEgbmF0aXZlICVJdGVyYXRvclByb3RvdHlwZSU7IHVzZSBpdCBpbnN0ZWFkXG4gICAgLy8gb2YgdGhlIHBvbHlmaWxsLlxuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gTmF0aXZlSXRlcmF0b3JQcm90b3R5cGU7XG4gIH1cblxuICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPVxuICAgIEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbjtcbiAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVbdG9TdHJpbmdUYWdTeW1ib2xdID1cbiAgICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBwcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICB2YXIgY3RvciA9IHR5cGVvZiBnZW5GdW4gPT09IFwiZnVuY3Rpb25cIiAmJiBnZW5GdW4uY29uc3RydWN0b3I7XG4gICAgcmV0dXJuIGN0b3JcbiAgICAgID8gY3RvciA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHxcbiAgICAgICAgLy8gRm9yIHRoZSBuYXRpdmUgR2VuZXJhdG9yRnVuY3Rpb24gY29uc3RydWN0b3IsIHRoZSBiZXN0IHdlIGNhblxuICAgICAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuXG4gICAgICAgIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgPT09IFwiR2VuZXJhdG9yRnVuY3Rpb25cIlxuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuICBydW50aW1lLm1hcmsgPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdlbkZ1bi5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgICAgIGlmICghKHRvU3RyaW5nVGFnU3ltYm9sIGluIGdlbkZ1bikpIHtcbiAgICAgICAgZ2VuRnVuW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcbiAgICAgIH1cbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgcnVudGltZS5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChnZW5lcmF0b3JbbWV0aG9kXSwgZ2VuZXJhdG9yLCBhcmcpO1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlY29yZC5hcmc7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGludm9rZShcIm5leHRcIiwgdmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJ0aHJvd1wiLCBlcnIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uIElmIHRoZSBQcm9taXNlIGlzIHJlamVjdGVkLCBob3dldmVyLCB0aGVcbiAgICAgICAgICAvLyByZXN1bHQgZm9yIHRoaXMgaXRlcmF0aW9uIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZVxuICAgICAgICAgIC8vIHJlYXNvbi4gTm90ZSB0aGF0IHJlamVjdGlvbnMgb2YgeWllbGRlZCBQcm9taXNlcyBhcmUgbm90XG4gICAgICAgICAgLy8gdGhyb3duIGJhY2sgaW50byB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhcyBpcyB0aGUgY2FzZVxuICAgICAgICAgIC8vIHdoZW4gYW4gYXdhaXRlZCBQcm9taXNlIGlzIHJlamVjdGVkLiBUaGlzIGRpZmZlcmVuY2UgaW5cbiAgICAgICAgICAvLyBiZWhhdmlvciBiZXR3ZWVuIHlpZWxkIGFuZCBhd2FpdCBpcyBpbXBvcnRhbnQsIGJlY2F1c2UgaXRcbiAgICAgICAgICAvLyBhbGxvd3MgdGhlIGNvbnN1bWVyIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggdGhlIHlpZWxkZWRcbiAgICAgICAgICAvLyByZWplY3Rpb24gKHN3YWxsb3cgaXQgYW5kIGNvbnRpbnVlLCBtYW51YWxseSAudGhyb3cgaXQgYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGdlbmVyYXRvciwgYWJhbmRvbiBpdGVyYXRpb24sIHdoYXRldmVyKS4gV2l0aFxuICAgICAgICAgIC8vIGF3YWl0LCBieSBjb250cmFzdCwgdGhlcmUgaXMgbm8gb3Bwb3J0dW5pdHkgdG8gZXhhbWluZSB0aGVcbiAgICAgICAgICAvLyByZWplY3Rpb24gcmVhc29uIG91dHNpZGUgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiwgc28gdGhlXG4gICAgICAgICAgLy8gb25seSBvcHRpb24gaXMgdG8gdGhyb3cgaXQgZnJvbSB0aGUgYXdhaXQgZXhwcmVzc2lvbiwgYW5kXG4gICAgICAgICAgLy8gbGV0IHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gaGFuZGxlIHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGdsb2JhbC5wcm9jZXNzID09PSBcIm9iamVjdFwiICYmIGdsb2JhbC5wcm9jZXNzLmRvbWFpbikge1xuICAgICAgaW52b2tlID0gZ2xvYmFsLnByb2Nlc3MuZG9tYWluLmJpbmQoaW52b2tlKTtcbiAgICB9XG5cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuXG4gICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICBydW50aW1lLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yO1xuXG4gIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2ZcbiAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICBydW50aW1lLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdClcbiAgICApO1xuXG4gICAgcmV0dXJuIHJ1bnRpbWUuaXNHZW5lcmF0b3JGdW5jdGlvbihvdXRlckZuKVxuICAgICAgPyBpdGVyIC8vIElmIG91dGVyRm4gaXMgYSBnZW5lcmF0b3IsIHJldHVybiB0aGUgZnVsbCBpdGVyYXRvci5cbiAgICAgIDogaXRlci5uZXh0KCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyByZXN1bHQudmFsdWUgOiBpdGVyLm5leHQoKTtcbiAgICAgICAgfSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KSB7XG4gICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDtcblxuICAgIHJldHVybiBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcpIHtcbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVFeGVjdXRpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUNvbXBsZXRlZCkge1xuICAgICAgICBpZiAobWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICB0aHJvdyBhcmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZSBmb3JnaXZpbmcsIHBlciAyNS4zLjMuMy4zIG9mIHRoZSBzcGVjOlxuICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lXG4gICAgICAgIHJldHVybiBkb25lUmVzdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQubWV0aG9kID0gbWV0aG9kO1xuICAgICAgY29udGV4dC5hcmcgPSBhcmc7XG5cbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IGNvbnRleHQuZGVsZWdhdGU7XG4gICAgICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgICAgIHZhciBkZWxlZ2F0ZVJlc3VsdCA9IG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0ID09PSBDb250aW51ZVNlbnRpbmVsKSBjb250aW51ZTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZVJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgICAgLy8gU2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICBjb250ZXh0LnNlbnQgPSBjb250ZXh0Ll9zZW50ID0gY29udGV4dC5hcmc7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgICAgdGhyb3cgY29udGV4dC5hcmc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZyk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICAgIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGNvbnRleHQuYXJnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlID0gR2VuU3RhdGVFeGVjdXRpbmc7XG5cbiAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIpIHtcbiAgICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gaW5uZXJGbiwgd2UgbGVhdmUgc3RhdGUgPT09XG4gICAgICAgICAgLy8gR2VuU3RhdGVFeGVjdXRpbmcgYW5kIGxvb3AgYmFjayBmb3IgYW5vdGhlciBpbnZvY2F0aW9uLlxuICAgICAgICAgIHN0YXRlID0gY29udGV4dC5kb25lXG4gICAgICAgICAgICA/IEdlblN0YXRlQ29tcGxldGVkXG4gICAgICAgICAgICA6IEdlblN0YXRlU3VzcGVuZGVkWWllbGQ7XG5cbiAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGludWVTZW50aW5lbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiByZWNvcmQuYXJnLFxuICAgICAgICAgICAgZG9uZTogY29udGV4dC5kb25lXG4gICAgICAgICAgfTtcblxuICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBleGNlcHRpb24gYnkgbG9vcGluZyBiYWNrIGFyb3VuZCB0byB0aGVcbiAgICAgICAgICAvLyBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKSBjYWxsIGFib3ZlLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvLyBDYWxsIGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXShjb250ZXh0LmFyZykgYW5kIGhhbmRsZSB0aGVcbiAgLy8gcmVzdWx0LCBlaXRoZXIgYnkgcmV0dXJuaW5nIGEgeyB2YWx1ZSwgZG9uZSB9IHJlc3VsdCBmcm9tIHRoZVxuICAvLyBkZWxlZ2F0ZSBpdGVyYXRvciwgb3IgYnkgbW9kaWZ5aW5nIGNvbnRleHQubWV0aG9kIGFuZCBjb250ZXh0LmFyZyxcbiAgLy8gc2V0dGluZyBjb250ZXh0LmRlbGVnYXRlIHRvIG51bGwsIGFuZCByZXR1cm5pbmcgdGhlIENvbnRpbnVlU2VudGluZWwuXG4gIGZ1bmN0aW9uIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdO1xuICAgIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gQSAudGhyb3cgb3IgLnJldHVybiB3aGVuIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgbm8gLnRocm93XG4gICAgICAvLyBtZXRob2QgYWx3YXlzIHRlcm1pbmF0ZXMgdGhlIHlpZWxkKiBsb29wLlxuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIGlmIChkZWxlZ2F0ZS5pdGVyYXRvci5yZXR1cm4pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgICAgLy8gXCJyZXR1cm5cIiB0byBcInRocm93XCIsIGxldCB0aGF0IG92ZXJyaWRlIHRoZSBUeXBlRXJyb3IgYmVsb3cuXG4gICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBHcFt0b1N0cmluZ1RhZ1N5bWJvbF0gPSBcIkdlbmVyYXRvclwiO1xuXG4gIC8vIEEgR2VuZXJhdG9yIHNob3VsZCBhbHdheXMgcmV0dXJuIGl0c2VsZiBhcyB0aGUgaXRlcmF0b3Igb2JqZWN0IHdoZW4gdGhlXG4gIC8vIEBAaXRlcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkIG9uIGl0LiBTb21lIGJyb3dzZXJzJyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlXG4gIC8vIGl0ZXJhdG9yIHByb3RvdHlwZSBjaGFpbiBpbmNvcnJlY3RseSBpbXBsZW1lbnQgdGhpcywgY2F1c2luZyB0aGUgR2VuZXJhdG9yXG4gIC8vIG9iamVjdCB0byBub3QgYmUgcmV0dXJuZWQgZnJvbSB0aGlzIGNhbGwuIFRoaXMgZW5zdXJlcyB0aGF0IGRvZXNuJ3QgaGFwcGVuLlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2lzc3Vlcy8yNzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgR3BbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgR3AudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IEdlbmVyYXRvcl1cIjtcbiAgfTtcblxuICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkobG9jcykge1xuICAgIHZhciBlbnRyeSA9IHsgdHJ5TG9jOiBsb2NzWzBdIH07XG5cbiAgICBpZiAoMSBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV07XG4gICAgfVxuXG4gICAgaWYgKDIgaW4gbG9jcykge1xuICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07XG4gICAgICBlbnRyeS5hZnRlckxvYyA9IGxvY3NbM107XG4gICAgfVxuXG4gICAgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzZXRUcnlFbnRyeShlbnRyeSkge1xuICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uIHx8IHt9O1xuICAgIHJlY29yZC50eXBlID0gXCJub3JtYWxcIjtcbiAgICBkZWxldGUgcmVjb3JkLmFyZztcbiAgICBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuICB9XG5cbiAgZnVuY3Rpb24gQ29udGV4dCh0cnlMb2NzTGlzdCkge1xuICAgIC8vIFRoZSByb290IGVudHJ5IG9iamVjdCAoZWZmZWN0aXZlbHkgYSB0cnkgc3RhdGVtZW50IHdpdGhvdXQgYSBjYXRjaFxuICAgIC8vIG9yIGEgZmluYWxseSBibG9jaykgZ2l2ZXMgdXMgYSBwbGFjZSB0byBzdG9yZSB2YWx1ZXMgdGhyb3duIGZyb21cbiAgICAvLyBsb2NhdGlvbnMgd2hlcmUgdGhlcmUgaXMgbm8gZW5jbG9zaW5nIHRyeSBzdGF0ZW1lbnQuXG4gICAgdGhpcy50cnlFbnRyaWVzID0gW3sgdHJ5TG9jOiBcInJvb3RcIiB9XTtcbiAgICB0cnlMb2NzTGlzdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyk7XG4gICAgdGhpcy5yZXNldCh0cnVlKTtcbiAgfVxuXG4gIHJ1bnRpbWUua2V5cyA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgfVxuICAgIGtleXMucmV2ZXJzZSgpO1xuXG4gICAgLy8gUmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuIG9iamVjdCB3aXRoIGEgbmV4dCBtZXRob2QsIHdlIGtlZXBcbiAgICAvLyB0aGluZ3Mgc2ltcGxlIGFuZCByZXR1cm4gdGhlIG5leHQgZnVuY3Rpb24gaXRzZWxmLlxuICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgd2hpbGUgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkge1xuICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG4gICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVG8gYXZvaWQgY3JlYXRpbmcgYW4gYWRkaXRpb25hbCBvYmplY3QsIHdlIGp1c3QgaGFuZyB0aGUgLnZhbHVlXG4gICAgICAvLyBhbmQgLmRvbmUgcHJvcGVydGllcyBvZmYgdGhlIG5leHQgZnVuY3Rpb24gb2JqZWN0IGl0c2VsZi4gVGhpc1xuICAgICAgLy8gYWxzbyBlbnN1cmVzIHRoYXQgdGhlIG1pbmlmaWVyIHdpbGwgbm90IGFub255bWl6ZSB0aGUgZnVuY3Rpb24uXG4gICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHtcbiAgICBpZiAoaXRlcmFibGUpIHtcbiAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcbiAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBpdGVyYWJsZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc05hTihpdGVyYWJsZS5sZW5ndGgpKSB7XG4gICAgICAgIHZhciBpID0gLTEsIG5leHQgPSBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHtcbiAgICAgICAgICAgICAgbmV4dC52YWx1ZSA9IGl0ZXJhYmxlW2ldO1xuICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV4dC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5leHQubmV4dCA9IG5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHdpdGggbm8gdmFsdWVzLlxuICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcbiAgfVxuICBydW50aW1lLnZhbHVlcyA9IHZhbHVlcztcblxuICBmdW5jdGlvbiBkb25lUmVzdWx0KCkge1xuICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgfVxuXG4gIENvbnRleHQucHJvdG90eXBlID0ge1xuICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LFxuXG4gICAgcmVzZXQ6IGZ1bmN0aW9uKHNraXBUZW1wUmVzZXQpIHtcbiAgICAgIHRoaXMucHJldiA9IDA7XG4gICAgICB0aGlzLm5leHQgPSAwO1xuICAgICAgLy8gUmVzZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICB0aGlzLmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KTtcblxuICAgICAgaWYgKCFza2lwVGVtcFJlc2V0KSB7XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6XG4gICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApID09PSBcInRcIiAmJlxuICAgICAgICAgICAgICBoYXNPd24uY2FsbCh0aGlzLCBuYW1lKSAmJlxuICAgICAgICAgICAgICAhaXNOYU4oK25hbWUuc2xpY2UoMSkpKSB7XG4gICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRyeUVudHJpZXNbMF07XG4gICAgICB2YXIgcm9vdFJlY29yZCA9IHJvb3RFbnRyeS5jb21wbGV0aW9uO1xuICAgICAgaWYgKHJvb3RSZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJvb3RSZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5ydmFsO1xuICAgIH0sXG5cbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7XG4gICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRleHQgPSB0aGlzO1xuICAgICAgZnVuY3Rpb24gaGFuZGxlKGxvYywgY2F1Z2h0KSB7XG4gICAgICAgIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiO1xuICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uO1xuICAgICAgICBjb250ZXh0Lm5leHQgPSBsb2M7XG5cbiAgICAgICAgaWYgKGNhdWdodCkge1xuICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG4gICAgICAgICAgLy8gdGhlbiBsZXQgdGhhdCBjYXRjaCBibG9jayBoYW5kbGUgdGhlIGV4Y2VwdGlvbiBub3JtYWxseS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICEhIGNhdWdodDtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IFwicm9vdFwiKSB7XG4gICAgICAgICAgLy8gRXhjZXB0aW9uIHRocm93biBvdXRzaWRlIG9mIGFueSB0cnkgYmxvY2sgdGhhdCBjb3VsZCBoYW5kbGVcbiAgICAgICAgICAvLyBpdCwgc28gc2V0IHRoZSBjb21wbGV0aW9uIHZhbHVlIG9mIHRoZSBlbnRpcmUgZnVuY3Rpb24gdG9cbiAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpO1xuICAgICAgICAgIHZhciBoYXNGaW5hbGx5ID0gaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKTtcblxuICAgICAgICAgIGlmIChoYXNDYXRjaCAmJiBoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYWJydXB0OiBmdW5jdGlvbih0eXBlLCBhcmcpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKSAmJlxuICAgICAgICAgICAgdGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmluYWxseUVudHJ5ICYmXG4gICAgICAgICAgKHR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgICB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmXG4gICAgICAgICAgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiZcbiAgICAgICAgICBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgLy8gSWdub3JlIHRoZSBmaW5hbGx5IGVudHJ5IGlmIGNvbnRyb2wgaXMgbm90IGp1bXBpbmcgdG8gYVxuICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suXG4gICAgICAgIGZpbmFsbHlFbnRyeSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6IHt9O1xuICAgICAgcmVjb3JkLnR5cGUgPSB0eXBlO1xuICAgICAgcmVjb3JkLmFyZyA9IGFyZztcblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSkge1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcbiAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG4gICAgfSxcblxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbihyZWNvcmQsIGFmdGVyTG9jKSB7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgIHJlY29yZC50eXBlID09PSBcImNvbnRpbnVlXCIpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZztcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgdGhpcy5ydmFsID0gdGhpcy5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgIHRoaXMubmV4dCA9IFwiZW5kXCI7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiICYmIGFmdGVyTG9jKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IGFmdGVyTG9jO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9LFxuXG4gICAgZmluaXNoOiBmdW5jdGlvbihmaW5hbGx5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LmZpbmFsbHlMb2MgPT09IGZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlKGVudHJ5LmNvbXBsZXRpb24sIGVudHJ5LmFmdGVyTG9jKTtcbiAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBcImNhdGNoXCI6IGZ1bmN0aW9uKHRyeUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IHRyeUxvYykge1xuICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICB2YXIgdGhyb3duID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhyb3duO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBjb250ZXh0LmNhdGNoIG1ldGhvZCBtdXN0IG9ubHkgYmUgY2FsbGVkIHdpdGggYSBsb2NhdGlvblxuICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgIH0sXG5cbiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbihpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykge1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHtcbiAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG4gICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsXG4gICAgICAgIG5leHRMb2M6IG5leHRMb2NcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgLy8gRGVsaWJlcmF0ZWx5IGZvcmdldCB0aGUgbGFzdCBzZW50IHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3RcbiAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuICAgICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICB9O1xufSkoXG4gIC8vIEFtb25nIHRoZSB2YXJpb3VzIHRyaWNrcyBmb3Igb2J0YWluaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWxcbiAgLy8gb2JqZWN0LCB0aGlzIHNlZW1zIHRvIGJlIHRoZSBtb3N0IHJlbGlhYmxlIHRlY2huaXF1ZSB0aGF0IGRvZXMgbm90XG4gIC8vIHVzZSBpbmRpcmVjdCBldmFsICh3aGljaCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSkuXG4gIHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOlxuICB0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiID8gd2luZG93IDpcbiAgdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDogdGhpc1xuKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXBvbHlmaWxsL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanNcbi8vIG1vZHVsZSBpZCA9IDQxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///412\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(414);\nmodule.exports = __webpack_require__(27).RegExp.escape;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZm4vcmVnZXhwL2VzY2FwZS5qcz81YjA5Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvY29yZS5yZWdleHAuZXNjYXBlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5SZWdFeHAuZXNjYXBlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9mbi9yZWdleHAvZXNjYXBlLmpzXG4vLyBtb2R1bGUgaWQgPSA0MTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///413\n")},function(module,exports,__webpack_require__){eval("// https://github.com/benjamingr/RexExp.escape\nvar $export = __webpack_require__(0);\nvar $re = __webpack_require__(415)(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n$export($export.S, 'RegExp', { escape: function escape(it) { return $re(it); } });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9jb3JlLnJlZ2V4cC5lc2NhcGUuanM/YWY2MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYmVuamFtaW5nci9SZXhFeHAuZXNjYXBlXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRyZSA9IHJlcXVpcmUoJy4vX3JlcGxhY2VyJykoL1tcXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVnRXhwJywgeyBlc2NhcGU6IGZ1bmN0aW9uIGVzY2FwZShpdCkgeyByZXR1cm4gJHJlKGl0KTsgfSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9jb3JlLnJlZ2V4cC5lc2NhcGUuanNcbi8vIG1vZHVsZSBpZCA9IDQxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///414\n")},function(module,exports){eval("module.exports = function (regExp, replace) {\n var replacer = replace === Object(replace) ? function (part) {\n return replace[part];\n } : replace;\n return function (it) {\n return String(it).replace(regExp, replacer);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcmVwbGFjZXIuanM/OWVhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChyZWdFeHAsIHJlcGxhY2UpIHtcbiAgdmFyIHJlcGxhY2VyID0gcmVwbGFjZSA9PT0gT2JqZWN0KHJlcGxhY2UpID8gZnVuY3Rpb24gKHBhcnQpIHtcbiAgICByZXR1cm4gcmVwbGFjZVtwYXJ0XTtcbiAgfSA6IHJlcGxhY2U7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gU3RyaW5nKGl0KS5yZXBsYWNlKHJlZ0V4cCwgcmVwbGFjZXIpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcmVwbGFjZXIuanNcbi8vIG1vZHVsZSBpZCA9IDQxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///415\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _assign = __webpack_require__(98);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _logLevels = __webpack_require__(201);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _Registry = __webpack_require__(441);\n\nvar _Registry2 = _interopRequireDefault(_Registry);\n\nvar _IdentityModule = __webpack_require__(471);\n\nvar _IdentityModule2 = _interopRequireDefault(_IdentityModule);\n\nvar _IdentityManager = __webpack_require__(477);\n\nvar _IdentityManager2 = _interopRequireDefault(_IdentityManager);\n\nvar _PEP = __webpack_require__(478);\n\nvar _PEP2 = _interopRequireDefault(_PEP);\n\nvar _MessageBus = __webpack_require__(489);\n\nvar _MessageBus2 = _interopRequireDefault(_MessageBus);\n\nvar _utils = __webpack_require__(11);\n\nvar _AddressAllocation = __webpack_require__(100);\n\nvar _AddressAllocation2 = _interopRequireDefault(_AddressAllocation);\n\nvar _CryptoManager = __webpack_require__(101);\n\nvar _CryptoManager2 = _interopRequireDefault(_CryptoManager);\n\nvar _Loader = __webpack_require__(495);\n\nvar _Loader2 = _interopRequireDefault(_Loader);\n\nvar _Storage = __webpack_require__(496);\n\nvar _Descriptors = __webpack_require__(497);\n\nvar _Descriptors2 = _interopRequireDefault(_Descriptors);\n\nvar _runtimeConfiguration = __webpack_require__(144);\n\nvar _MsgBusHandlers = __webpack_require__(498);\n\nvar _MsgBusHandlers2 = _interopRequireDefault(_MsgBusHandlers);\n\nvar _runtimeUtils = __webpack_require__(143);\n\nvar _GraphConnector = __webpack_require__(499);\n\nvar _GraphConnector2 = _interopRequireDefault(_GraphConnector);\n\nvar _CoreDiscovery = __webpack_require__(501);\n\nvar _CoreDiscovery2 = _interopRequireDefault(_CoreDiscovery);\n\nvar _DataObjectsStorage = __webpack_require__(502);\n\nvar _DataObjectsStorage2 = _interopRequireDefault(_DataObjectsStorage);\n\nvar _HypertyResourcesStorage = __webpack_require__(506);\n\nvar _HypertyResourcesStorage2 = _interopRequireDefault(_HypertyResourcesStorage);\n\nvar _SyncherManager = __webpack_require__(509);\n\nvar _SyncherManager2 = _interopRequireDefault(_SyncherManager);\n\nvar _SubscriptionManager = __webpack_require__(520);\n\nvar _SubscriptionManager2 = _interopRequireDefault(_SubscriptionManager);\n\nvar _RuntimeCoreCtx = __webpack_require__(522);\n\nvar _RuntimeCoreCtx2 = _interopRequireDefault(_RuntimeCoreCtx);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n\n// import 'babel-polyfill';\n\nvar log = logger.getLogger('RuntimeUA');\n\n//Main dependecies\n\n\n// Log System\n\n/**\n * Runtime User Agent Interface will process all the dependecies of the core runtime;\n * @author Vitor Silva [vitor-t-silva@telecom.pt]\n * @version 0.4.0\n *\n * @property {runtimeFactory} runtimeFactory - Specific implementation for all environments;\n * @property {RuntimeCatalogue} runtimeCatalogue - Catalogue of components can be installed;\n * @property {runtimeURL} runtimeURL - This identify the core runtime, should be unique;\n * @property {IdentityModule} identityModule - Identity Module;\n * @property {PEP} policyEngine - Policy Engine Module;\n * @property {Registry} registry - Registry Module;\n * @property {MessageBus} messageBus - Message Bus is used like a router to redirect the messages from one component to other(s)\n * @property {GraphConnector} graphConnector - Graph Connector handling GUID and contacts\n * @property {CoreDiscovery} coreDiscovery - Discovery for discovery hyperties/dataObjects\n */\nvar RuntimeUA = function () {\n\n /**\n * Create a new instance of Runtime User Agent\n * @param {descriptor} runtimeDescriptor - pass all the hyperty runtime descriptor\n * @param {runtimeFactory} runtimeFactory - Specific implementation for the environment where the core runtime will run;\n * @param {domain} domainURL - specify the domain base for the runtime;\n */\n function RuntimeUA(runtimeDescriptor, runtimeFactory, domain) {\n (0, _classCallCheck3.default)(this, RuntimeUA);\n\n if (!runtimeDescriptor) throw new Error('The runtime descriptor is a needed parameter');\n if (!runtimeFactory) throw new Error('The sandbox factory is a needed parameter');\n if (!domain) throw new Error('You need the domain of runtime');\n\n // Configuration object with information related with servers\n this.runtimeConfiguration = (0, _assign2.default)({ domain: domain }, _runtimeConfiguration.runtimeConfiguration);\n this.runtimeFactory = runtimeFactory;\n\n this.log = log;\n this.logLevels = _logLevels.log;\n\n if (runtimeDescriptor.p2pHandlerStub && typeof runtimeDescriptor.p2pHandlerStub === 'string' && runtimeDescriptor.p2pHandlerStub.includes('://')) {\n this.p2p = true;\n } else {\n this.p2p = false;\n }\n\n _runtimeUtils.runtimeUtils.runtimeDescriptor = runtimeDescriptor;\n this.runtimeUtils = _runtimeUtils.runtimeUtils;\n\n this.storages = {};\n\n if (typeof runtimeFactory.createRuntimeCatalogue === 'function') {\n this.runtimeCatalogue = runtimeFactory.createRuntimeCatalogue();\n } else {\n throw new Error('Check your Runtime Factory because it needs the Runtime Catalogue implementation');\n }\n\n if (typeof runtimeFactory.persistenceManager === 'function') {\n this.persistenceManager = runtimeFactory.persistenceManager();\n } else {\n throw new Error('Check your Runtime Factory because it needs the Persistence Manager implementation');\n }\n\n if (typeof runtimeFactory.storageManager === 'function') {\n\n this.storages = (0, _Storage.storage)(runtimeFactory);\n } else {\n throw new Error('Check your Runtime Factory because it needs the Storage Manager implementation');\n }\n\n if (typeof runtimeFactory.runtimeCapabilities === 'function') {\n this.runtimeCapabilities = runtimeFactory.runtimeCapabilities(this.storages.capabilities);\n } else {\n log.info('Check your RuntimeFactory because it needs the Runtime Capabilities implementation');\n }\n }\n\n /**\n * Intialize the installation of runtime\n *\n * @access public\n * @return {Promise} this is Promise and if the installation process happened without any problems returns true otherwise the error.\n *\n * @memberOf RuntimeUA\n */\n\n\n (0, _createClass3.default)(RuntimeUA, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this2.domain = _this2.runtimeConfiguration.domain;\n\n try {\n var getCapabilities = _this2.runtimeCapabilities.getRuntimeCapabilities();\n var getRuntimeURL = _this2.storages.runtime.get('runtime:URL');\n var getStoredDataObjects = _this2.storages.syncherManager.get('syncherManager:ObjectURLs');\n var getHypertyStorageObjects = _this2.storages.hypertyResources.get();\n var getP2PHandlerURL = _this2.storages.runtime.get('p2pHandler:URL');\n\n _promise2.default.all([getRuntimeURL, getCapabilities, getStoredDataObjects, getHypertyStorageObjects, getP2PHandlerURL]).then(function (results) {\n\n _this2.runtimeURL = results[0] ? results[0].runtimeURL : results[0];\n if (!_this2.runtimeURL) {\n _this2.runtimeURL = 'runtime://' + _this2.domain + '/' + (0, _utils.generateGUID)();\n _this2.storages.runtime.set('runtime:URL', 1, { runtimeURL: _this2.runtimeURL });\n }\n\n _this2.capabilities = results[1];\n (0, _assign2.default)(_runtimeUtils.runtimeUtils.runtimeCapabilities.constraints, results[1]);\n\n _this2._dataObjectsStorage = new _DataObjectsStorage2.default(_this2.storages.syncherManager, results[2] || {});\n\n _this2._hypertyResources = results[3] || {};\n\n _this2.p2pHandlerURL = results[4] ? results[4].p2pHandlerURL : results[4];\n if (!_this2.p2pHandlerURL) {\n _this2.p2pHandlerURL = _this2.runtimeURL + '/p2phandler/' + (0, _utils.generateGUID)();\n log.info('[RuntimeUA - init] P2PHandlerURL: ', _this2.p2pHandlerURL);\n\n _this2.storages.runtime.set('p2pHandler:URL', 1, { p2pHandlerURL: _this2.p2pHandlerURL });\n }\n\n return _this2._loadComponents();\n }).then(function (status) {\n\n _this2._hypertyResourcesStorage = new _HypertyResourcesStorage2.default(_this2.runtimeURL, _this2.messageBus, _this2.storages.hypertyResources, _this2._hypertyResources);\n\n if (_this2.p2p) {\n log.info('[RuntimeUA - init] load p2pHandler: ', status);\n return _this2._loadP2PHandler();\n } else {\n log.info('[RuntimeUA - init] P2P not supported');\n return 'P2P Not Supported';\n }\n }).then(function (result) {\n log.info('[runtime ua - init] - status: ', result);\n resolve(true);\n }, function (reason) {\n log.error('ERROR: ', reason);\n resolve(true);\n });\n } catch (e) {\n reject(e);\n }\n });\n }\n }, {\n key: '_loadP2PHandler',\n value: function _loadP2PHandler() {\n var _this3 = this;\n\n return new _promise2.default(function (resolve) {\n\n var runtimeDescriptor = _runtimeUtils.runtimeUtils.runtimeDescriptor;\n var p2pStubHandler = runtimeDescriptor.p2pHandlerStub;\n\n var p2pConfig = {\n isHandlerStub: true,\n runtimeURL: _this3.runtimeURL\n };\n\n log.log('[RuntimeUA loadP2PHandler] P2PStubHandler: ', p2pStubHandler);\n\n _this3.loader.loadStub(p2pStubHandler, p2pConfig).then(function (result) {\n\n var runtimeUAURL = _this3.runtimeURL + '/ua';\n var msg = {\n type: 'subscribe',\n from: runtimeUAURL,\n to: 'domain://msg-node.' + _this3.domain + '/sm',\n body: {\n subscribe: [result.url],\n source: _this3.runtimeURL\n }\n };\n\n _this3.messageBus.addListener(runtimeUAURL, function (msg) {\n log.log('[runtime ua - listener] - receive msg: ', msg);\n });\n\n _this3.messageBus.postMessage(msg, function (reply) {\n log.log('[runtime ua - postMessage] - reply: ', reply);\n });\n\n log.info('[runtime ua - p2p installation] - success: ', result);\n resolve(true);\n }).catch(function (reason) {\n log.info('[runtime ua - p2p installation] - fail: ', reason);\n resolve(false);\n });\n });\n }\n\n /**\n *\n * @access private\n * @return {Promise} this is Promise and returns true if all components are loaded with success or an error if someone fails.\n *\n * @memberOf RuntimeUA\n */\n\n }, {\n key: '_loadComponents',\n value: function _loadComponents() {\n var _this4 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n try {\n\n // Prepare the on instance to handle with the fallbacks and runtimeCatalogue;\n _this4.descriptorInstance = new _Descriptors2.default(_this4.runtimeURL, _this4.runtimeCatalogue, _this4.runtimeConfiguration);\n\n // Prepare the loader to load the hyperties, protostubs and idpproxy;\n _this4.loader = new _Loader2.default(_this4.runtimeURL, _this4.runtimeConfiguration, _this4.descriptorInstance);\n\n // Instantiate the identity Module\n _this4.identityModule = new _IdentityModule2.default(_this4.runtimeURL, _this4.runtimeCapabilities, _this4.storages.identity, _this4._dataObjectsStorage, _CryptoManager2.default, _this4.runtimeCatalogue);\n\n // Use the sandbox factory to create an AppSandbox;\n // In the future can be decided by policyEngine if we need\n // create a AppSandbox or not;\n var appSandbox = _this4.runtimeFactory.createAppSandbox();\n\n // Instantiate the Registry Module\n _this4.registry = new _Registry2.default(_this4.runtimeURL, appSandbox, _this4.identityModule, _this4.runtimeCatalogue, _this4.runtimeCapabilities, _this4.storages.registry, _this4.p2pHandlerURL);\n\n // Set the loader to load Hyperties, Stubs and IdpProxies\n _this4.registry.loader = _this4.loader;\n\n // Instantiate the Message Bus\n _this4.messageBus = new _MessageBus2.default(_this4.registry);\n\n // Prepare the address allocation instance;\n _this4.addressAllocation = new _AddressAllocation2.default(_this4.runtimeURL, _this4.messageBus, _this4.registry);\n\n // Instantiate the Policy Engine\n _this4.policyEngine = new _PEP2.default(new _RuntimeCoreCtx2.default(_this4.runtimeURL, _this4.identityModule, _this4.registry, _this4.storages.policy, _this4.runtimeCapabilities));\n\n // Instantiate Discovery\n _this4.coreDiscovery = new _CoreDiscovery2.default(_this4.runtimeURL, _this4.messageBus, _this4.graphConnector, _this4.runtimeFactory, _this4.registry);\n\n // Instantiate the IdentityManager\n _this4.identityManager = new _IdentityManager2.default(_this4.identityModule);\n\n // initialise the CryptoManager\n _CryptoManager2.default.init(_this4.runtimeURL, _this4.runtimeCapabilities, _this4.storages.cryptoManager, _this4._dataObjectsStorage, _this4.registry, _this4.coreDiscovery, _this4.identityModule, _this4.runtimeFactory);\n\n // Instantiate the Graph Connector\n _this4.graphConnector = true ? new _GraphConnector2.default(_this4.runtimeURL, _this4.messageBus, _this4.storageManager) : null;\n\n _this4.handlers = new _MsgBusHandlers2.default(_this4.policyEngine, _this4.identityManager, _CryptoManager2.default);\n\n _this4.messageBus.pipelineOut.handlers = [_this4.handlers.idmHandler, _this4.handlers.pepOutHandler, _this4.handlers.encryptHandler];\n _this4.messageBus.pipelineIn.handlers = [_this4.handlers.decryptHandler, _this4.handlers.pepInHandler];\n\n // Add to App Sandbox the listener;\n appSandbox.addListener('*', function (msg) {\n _this4.messageBus.postMessage(msg);\n });\n\n _CryptoManager2.default.messageBus = _this4.messageBus;\n\n // Register messageBus on Registry\n _this4.registry.messageBus = _this4.messageBus;\n\n // Policy Engine\n _this4.policyEngine.messageBus = _this4.messageBus;\n\n // Register messageBus on IDM\n _this4.identityModule.messageBus = _this4.messageBus;\n\n // Register registry on IdentityModule\n _this4.identityModule.registry = _this4.registry;\n\n // Register coreDiscovery on IdentityModule\n _this4.identityModule.coreDiscovery = _this4.coreDiscovery;\n\n // Use sandbox factory to use specific methods\n // and set the message bus to the factory\n _this4.runtimeFactory.messageBus = _this4.messageBus;\n\n // Instanciate the SyncherManager;\n _this4.syncherManager = new _SyncherManager2.default(_this4.runtimeURL, _this4.messageBus, _this4.registry, _this4.runtimeCatalogue, _this4.storages.syncherManager, null, _this4._dataObjectsStorage, _this4.identityModule);\n\n // Set into loader the needed components;\n _this4.loader.runtimeURL = _this4.runtimeURL;\n _this4.loader.messageBus = _this4.messageBus;\n _this4.loader.registry = _this4.registry;\n _this4.loader.runtimeCatalogue = _this4.runtimeCatalogue;\n _this4.loader.runtimeFactory = _this4.runtimeFactory;\n\n //Instantiate Discovery Lib for notification testing\n // this.discovery = new Discovery(\"hyperty://localhost/test\", this.runtimeURL, this.messageBus);\n // this.loadStub(\"localhost\");\n // setTimeout(() => {\n // this.discovery.discoverHypertiesDO(\"user://google.com/openidtest20@gmail.com\")\n // .then(hyperties => {\n // hyperties.forEach(hyperty =>{\n // hyperty.onLive(() => log.log(`Notification from ${hyperty.data.hypertyID} changed to live`));\n // hyperty.onDisconnected(() => log.log(`Notification from ${hyperty.data.hypertyID} changed to disconnected`));\n // });\n // });\n // }, 2000);\n\n // Instanciate the SubscriptionManager;\n _this4.subscriptionManager = new _SubscriptionManager2.default(_this4.runtimeURL, _this4.messageBus, _this4.storages.subscriptions);\n\n // this.subscriptionManager.init().then(()=>{\n // resolve(true);\n // });\n\n var prepareComponents = [];\n prepareComponents.push(_this4.subscriptionManager.init());\n prepareComponents.push(_this4.identityModule.init());\n prepareComponents.push(_CryptoManager2.default.loadSessionKeys());\n\n _promise2.default.all(prepareComponents).then(function (result) {\n if (result.length === 3) {\n resolve(true);\n } else {\n reject('[RuntimeUA._loadComponents] Error ] ', result);\n }\n }).catch(function (reason) {\n throw Error(reason);\n });\n } catch (e) {\n reject(e);\n }\n });\n }\n\n /**\n * Deploy Hyperty from Catalogue URL\n *\n * @see https://github.com/reTHINK-project/specs/tree/master/datamodel/core/address\n *\n * @param {URL.HypertyCatalogueURL} hypertyCatalogueURL - The Catalogue URL used to identify descriptors in the Catalogue.\n * @param {boolean|URL.HypertyURL} [reuseURL=false] reuseURL - reuseURL is used to reuse the hypertyURL previously registred, by default the reuse is disabled;\n * @param {URL} appURL - the app url address; // TODO: improve this description;\n * @returns {Promise} this is Promise and returns true if all components are loaded with success or an error if someone fails.\n *\n * @memberOf RuntimeUA\n */\n\n }, {\n key: 'loadHyperty',\n value: function loadHyperty(hypertyCatalogueURL) {\n var reuseURL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var appURL = arguments[2];\n\n\n if (!hypertyCatalogueURL) throw new Error('Hyperty descriptor url parameter is needed');\n return this.loader.loadHyperty(hypertyCatalogueURL, reuseURL, appURL);\n }\n\n /**\n * Deploy Stub from Catalogue URL or domain url\n * @param {URL.URL} domain domain\n */\n\n }, {\n key: 'loadStub',\n value: function loadStub(protocolstubCatalogueURL) {\n\n if (!protocolstubCatalogueURL) throw new Error('ProtoStub descriptor url parameter is needed');\n return this.loader.loadStub(protocolstubCatalogueURL);\n }\n\n /**\n * Deploy idpProxy from Catalogue URL or domain url\n * @param {URL.URL} domain domain\n */\n\n }, {\n key: 'loadIdpProxy',\n value: function loadIdpProxy(ipdProxyCatalogueURL) {\n log.log('ipdProxyCatalogueURL', ipdProxyCatalogueURL);\n\n if (!ipdProxyCatalogueURL) throw new Error('The IDP Proxy URL is a needed parameter, could be a DOMAIN or a URL');\n return this.loader.loadIdpProxy(ipdProxyCatalogueURL);\n }\n\n /**\n * Used to close all the runtime; Unregister all hyperties;\n * @return {Promise} result of the close method, with true or false to the operation success;\n */\n\n }, {\n key: 'close',\n value: function close(logOut) {\n console.log('Runtime core logout: ', logOut);\n var _this = this;\n if (logOut === true) {\n this.identityManager.reset();\n }\n\n log.info('Unregister all hyperties');\n return new _promise2.default(function (resolve, reject) {\n\n _this.registry.unregisterAllHyperties().then(function (result) {\n log.info('All the hyperties are unregisted with Success:', result);\n resolve(true);\n }).catch(function (reason) {\n log.error('Failed to unregister the hyperties', reason);\n reject(false);\n });\n });\n }\n }]);\n return RuntimeUA;\n}();\n\nexports.default = RuntimeUA;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ydW50aW1lL1J1bnRpbWVVQS5qcz9iZmFlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cblxuLy8gaW1wb3J0ICdiYWJlbC1wb2x5ZmlsbCc7XG5cbmltcG9ydCB7IGxvZyBhcyBsb2dMZXZlbHMgfSBmcm9tICcuLi9sb2dMZXZlbHMnO1xuXG4vLyBMb2cgU3lzdGVtXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1J1bnRpbWVVQScpO1xuXG4vL01haW4gZGVwZW5kZWNpZXNcbmltcG9ydCBSZWdpc3RyeSBmcm9tICcuLi9yZWdpc3RyeS9SZWdpc3RyeSc7XG5pbXBvcnQgSWRlbnRpdHlNb2R1bGUgZnJvbSAnLi4vaWRlbnRpdHkvSWRlbnRpdHlNb2R1bGUnO1xuaW1wb3J0IElkZW50aXR5TWFuYWdlciBmcm9tICcuLi9pZGVudGl0eS9JZGVudGl0eU1hbmFnZXInO1xuaW1wb3J0IFBFUCBmcm9tICcuLi9wb2xpY3kvUEVQJztcbmltcG9ydCBNZXNzYWdlQnVzIGZyb20gJy4uL2J1cy9NZXNzYWdlQnVzJztcbmltcG9ydCB7IGdlbmVyYXRlR1VJRCB9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCBBZGRyZXNzQWxsb2NhdGlvbiBmcm9tICcuLi9hbGxvY2F0aW9uL0FkZHJlc3NBbGxvY2F0aW9uJztcbmltcG9ydCBjcnlwdG9NYW5hZ2VyIGZyb20gJy4uL2NyeXB0b01hbmFnZXIvQ3J5cHRvTWFuYWdlcic7XG5cbmltcG9ydCBMb2FkZXIgZnJvbSAnLi9Mb2FkZXInO1xuaW1wb3J0IHsgc3RvcmFnZSB9IGZyb20gJy4vU3RvcmFnZSc7XG5pbXBvcnQgRGVzY3JpcHRvcnMgZnJvbSAnLi9EZXNjcmlwdG9ycyc7XG5cbmltcG9ydCB7IHJ1bnRpbWVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9ydW50aW1lQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgTXNnQnVzSGFuZGxlcnMgZnJvbSAnLi9Nc2dCdXNIYW5kbGVycyc7XG5pbXBvcnQgeyBydW50aW1lVXRpbHMgfSBmcm9tICcuL3J1bnRpbWVVdGlscyc7XG5cbmltcG9ydCBHcmFwaENvbm5lY3RvciBmcm9tICcuLi9ncmFwaGNvbm5lY3Rvci9HcmFwaENvbm5lY3Rvcic7XG5cbmltcG9ydCBDb3JlRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9Db3JlRGlzY292ZXJ5JztcblxuaW1wb3J0IERhdGFPYmplY3RzU3RvcmFnZSBmcm9tICcuLi9zdG9yZS1vYmplY3RzL0RhdGFPYmplY3RzU3RvcmFnZSc7XG5pbXBvcnQgSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2UgZnJvbSAnLi4vaHlwZXJ0eS1yZXNvdXJjZXMtc3RvcmFnZS9IeXBlcnR5UmVzb3VyY2VzU3RvcmFnZSc7XG5pbXBvcnQgU3luY2hlck1hbmFnZXIgZnJvbSAnLi4vc3luY2hlci9TeW5jaGVyTWFuYWdlcic7XG5pbXBvcnQgU3Vic2NyaXB0aW9uTWFuYWdlciBmcm9tICcuLi9zdWJzY3JpcHRpb25NYW5hZ2VyL1N1YnNjcmlwdGlvbk1hbmFnZXInO1xuaW1wb3J0IFJ1bnRpbWVDb3JlQ3R4IGZyb20gJy4uL3BvbGljeS9jb250ZXh0L1J1bnRpbWVDb3JlQ3R4JztcblxuLyoqXG4gKiBSdW50aW1lIFVzZXIgQWdlbnQgSW50ZXJmYWNlIHdpbGwgcHJvY2VzcyBhbGwgdGhlIGRlcGVuZGVjaWVzIG9mIHRoZSBjb3JlIHJ1bnRpbWU7XG4gKiBAYXV0aG9yIFZpdG9yIFNpbHZhIFt2aXRvci10LXNpbHZhQHRlbGVjb20ucHRdXG4gKiBAdmVyc2lvbiAwLjQuMFxuICpcbiAqIEBwcm9wZXJ0eSB7cnVudGltZUZhY3Rvcnl9IHJ1bnRpbWVGYWN0b3J5IC0gU3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZm9yIGFsbCBlbnZpcm9ubWVudHM7XG4gKiBAcHJvcGVydHkge1J1bnRpbWVDYXRhbG9ndWV9IHJ1bnRpbWVDYXRhbG9ndWUgLSBDYXRhbG9ndWUgb2YgY29tcG9uZW50cyBjYW4gYmUgaW5zdGFsbGVkO1xuICogQHByb3BlcnR5IHtydW50aW1lVVJMfSBydW50aW1lVVJMIC0gVGhpcyBpZGVudGlmeSB0aGUgY29yZSBydW50aW1lLCBzaG91bGQgYmUgdW5pcXVlO1xuICogQHByb3BlcnR5IHtJZGVudGl0eU1vZHVsZX0gaWRlbnRpdHlNb2R1bGUgLSBJZGVudGl0eSBNb2R1bGU7XG4gKiBAcHJvcGVydHkge1BFUH0gcG9saWN5RW5naW5lIC0gUG9saWN5IEVuZ2luZSBNb2R1bGU7XG4gKiBAcHJvcGVydHkge1JlZ2lzdHJ5fSByZWdpc3RyeSAtIFJlZ2lzdHJ5IE1vZHVsZTtcbiAqIEBwcm9wZXJ0eSB7TWVzc2FnZUJ1c30gbWVzc2FnZUJ1cyAtIE1lc3NhZ2UgQnVzIGlzIHVzZWQgbGlrZSBhIHJvdXRlciB0byByZWRpcmVjdCB0aGUgbWVzc2FnZXMgZnJvbSBvbmUgY29tcG9uZW50IHRvIG90aGVyKHMpXG4gKiBAcHJvcGVydHkge0dyYXBoQ29ubmVjdG9yfSBncmFwaENvbm5lY3RvciAtIEdyYXBoIENvbm5lY3RvciBoYW5kbGluZyBHVUlEIGFuZCBjb250YWN0c1xuICogQHByb3BlcnR5IHtDb3JlRGlzY292ZXJ5fSBjb3JlRGlzY292ZXJ5IC0gRGlzY292ZXJ5IGZvciBkaXNjb3ZlcnkgaHlwZXJ0aWVzL2RhdGFPYmplY3RzXG4gKi9cbmNsYXNzIFJ1bnRpbWVVQSB7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBSdW50aW1lIFVzZXIgQWdlbnRcbiAgICogQHBhcmFtIHtkZXNjcmlwdG9yfSBydW50aW1lRGVzY3JpcHRvciAtIHBhc3MgYWxsIHRoZSBoeXBlcnR5IHJ1bnRpbWUgZGVzY3JpcHRvclxuICAgKiBAcGFyYW0ge3J1bnRpbWVGYWN0b3J5fSBydW50aW1lRmFjdG9yeSAtIFNwZWNpZmljIGltcGxlbWVudGF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgd2hlcmUgdGhlIGNvcmUgcnVudGltZSB3aWxsIHJ1bjtcbiAgICogQHBhcmFtIHtkb21haW59IGRvbWFpblVSTCAtIHNwZWNpZnkgdGhlIGRvbWFpbiBiYXNlIGZvciB0aGUgcnVudGltZTtcbiAgICovXG4gIGNvbnN0cnVjdG9yKHJ1bnRpbWVEZXNjcmlwdG9yLCBydW50aW1lRmFjdG9yeSwgZG9tYWluKSB7XG4gICAgaWYgKCFydW50aW1lRGVzY3JpcHRvcikgdGhyb3cgbmV3IEVycm9yKCdUaGUgcnVudGltZSBkZXNjcmlwdG9yIGlzIGEgbmVlZGVkIHBhcmFtZXRlcicpO1xuICAgIGlmICghcnVudGltZUZhY3RvcnkpIHRocm93IG5ldyBFcnJvcignVGhlIHNhbmRib3ggZmFjdG9yeSBpcyBhIG5lZWRlZCBwYXJhbWV0ZXInKTtcbiAgICBpZiAoIWRvbWFpbikgdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0aGUgZG9tYWluIG9mIHJ1bnRpbWUnKTtcblxuICAgIC8vIENvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggaW5mb3JtYXRpb24gcmVsYXRlZCB3aXRoIHNlcnZlcnNcbiAgICB0aGlzLnJ1bnRpbWVDb25maWd1cmF0aW9uID0gT2JqZWN0LmFzc2lnbih7ZG9tYWluOiBkb21haW59LCBydW50aW1lQ29uZmlndXJhdGlvbik7XG4gICAgdGhpcy5ydW50aW1lRmFjdG9yeSA9IHJ1bnRpbWVGYWN0b3J5O1xuXG4gICAgdGhpcy5sb2cgPSBsb2c7XG4gICAgdGhpcy5sb2dMZXZlbHMgPSBsb2dMZXZlbHM7XG5cbiAgICBpZiAocnVudGltZURlc2NyaXB0b3IucDJwSGFuZGxlclN0dWIgJiYgdHlwZW9mIHJ1bnRpbWVEZXNjcmlwdG9yLnAycEhhbmRsZXJTdHViICA9PT0gJ3N0cmluZycgJiYgcnVudGltZURlc2NyaXB0b3IucDJwSGFuZGxlclN0dWIuaW5jbHVkZXMoJzovLycpKSB7XG4gICAgICB0aGlzLnAycCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucDJwID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcnVudGltZVV0aWxzLnJ1bnRpbWVEZXNjcmlwdG9yID0gcnVudGltZURlc2NyaXB0b3I7XG4gICAgdGhpcy5ydW50aW1lVXRpbHMgPSBydW50aW1lVXRpbHM7XG5cbiAgICB0aGlzLnN0b3JhZ2VzID0ge307XG5cbiAgICBpZiAodHlwZW9mIHJ1bnRpbWVGYWN0b3J5LmNyZWF0ZVJ1bnRpbWVDYXRhbG9ndWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMucnVudGltZUNhdGFsb2d1ZSA9IHJ1bnRpbWVGYWN0b3J5LmNyZWF0ZVJ1bnRpbWVDYXRhbG9ndWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaGVjayB5b3VyIFJ1bnRpbWUgRmFjdG9yeSBiZWNhdXNlIGl0IG5lZWRzIHRoZSBSdW50aW1lIENhdGFsb2d1ZSBpbXBsZW1lbnRhdGlvbicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcnVudGltZUZhY3RvcnkucGVyc2lzdGVuY2VNYW5hZ2VyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLnBlcnNpc3RlbmNlTWFuYWdlciA9IHJ1bnRpbWVGYWN0b3J5LnBlcnNpc3RlbmNlTWFuYWdlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoZWNrIHlvdXIgUnVudGltZSBGYWN0b3J5IGJlY2F1c2UgaXQgbmVlZHMgdGhlIFBlcnNpc3RlbmNlIE1hbmFnZXIgaW1wbGVtZW50YXRpb24nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJ1bnRpbWVGYWN0b3J5LnN0b3JhZ2VNYW5hZ2VyID09PSAnZnVuY3Rpb24nKSB7XG5cbiAgICAgIHRoaXMuc3RvcmFnZXMgPSBzdG9yYWdlKHJ1bnRpbWVGYWN0b3J5KTtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoZWNrIHlvdXIgUnVudGltZSBGYWN0b3J5IGJlY2F1c2UgaXQgbmVlZHMgdGhlIFN0b3JhZ2UgTWFuYWdlciBpbXBsZW1lbnRhdGlvbicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcnVudGltZUZhY3RvcnkucnVudGltZUNhcGFiaWxpdGllcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5ydW50aW1lQ2FwYWJpbGl0aWVzID0gcnVudGltZUZhY3RvcnkucnVudGltZUNhcGFiaWxpdGllcyh0aGlzLnN0b3JhZ2VzLmNhcGFiaWxpdGllcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5pbmZvKCdDaGVjayB5b3VyIFJ1bnRpbWVGYWN0b3J5IGJlY2F1c2UgaXQgbmVlZHMgdGhlIFJ1bnRpbWUgQ2FwYWJpbGl0aWVzIGltcGxlbWVudGF0aW9uJyk7XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogSW50aWFsaXplIHRoZSBpbnN0YWxsYXRpb24gb2YgcnVudGltZVxuICAgKlxuICAgKiBAYWNjZXNzIHB1YmxpY1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPEJvb2xlYW4sIEVycm9yPn0gdGhpcyBpcyBQcm9taXNlIGFuZCBpZiB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MgaGFwcGVuZWQgd2l0aG91dCBhbnkgcHJvYmxlbXMgcmV0dXJucyB0cnVlIG90aGVyd2lzZSB0aGUgZXJyb3IuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBSdW50aW1lVUFcbiAgICovXG4gIGluaXQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgdGhpcy5kb21haW4gPSB0aGlzLnJ1bnRpbWVDb25maWd1cmF0aW9uLmRvbWFpbjtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IGdldENhcGFiaWxpdGllcyA9IHRoaXMucnVudGltZUNhcGFiaWxpdGllcy5nZXRSdW50aW1lQ2FwYWJpbGl0aWVzKCk7XG4gICAgICAgIGxldCBnZXRSdW50aW1lVVJMID0gdGhpcy5zdG9yYWdlcy5ydW50aW1lLmdldCgncnVudGltZTpVUkwnKTtcbiAgICAgICAgbGV0IGdldFN0b3JlZERhdGFPYmplY3RzID0gdGhpcy5zdG9yYWdlcy5zeW5jaGVyTWFuYWdlci5nZXQoJ3N5bmNoZXJNYW5hZ2VyOk9iamVjdFVSTHMnKTtcbiAgICAgICAgbGV0IGdldEh5cGVydHlTdG9yYWdlT2JqZWN0cyA9IHRoaXMuc3RvcmFnZXMuaHlwZXJ0eVJlc291cmNlcy5nZXQoKTtcbiAgICAgICAgbGV0IGdldFAyUEhhbmRsZXJVUkwgPSB0aGlzLnN0b3JhZ2VzLnJ1bnRpbWUuZ2V0KCdwMnBIYW5kbGVyOlVSTCcpO1xuXG4gICAgICAgIFByb21pc2UuYWxsKFtnZXRSdW50aW1lVVJMLCBnZXRDYXBhYmlsaXRpZXMsIGdldFN0b3JlZERhdGFPYmplY3RzLCBnZXRIeXBlcnR5U3RvcmFnZU9iamVjdHMsIGdldFAyUEhhbmRsZXJVUkxdKS50aGVuKChyZXN1bHRzKSA9PiB7XG5cbiAgICAgICAgICB0aGlzLnJ1bnRpbWVVUkwgPSByZXN1bHRzWzBdID8gcmVzdWx0c1swXS5ydW50aW1lVVJMIDogcmVzdWx0c1swXTtcbiAgICAgICAgICBpZiAoIXRoaXMucnVudGltZVVSTCkge1xuICAgICAgICAgICAgdGhpcy5ydW50aW1lVVJMID0gJ3J1bnRpbWU6Ly8nICsgdGhpcy5kb21haW4gKyAnLycgKyBnZW5lcmF0ZUdVSUQoKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZXMucnVudGltZS5zZXQoJ3J1bnRpbWU6VVJMJywgMSwge3J1bnRpbWVVUkw6IHRoaXMucnVudGltZVVSTH0pO1xuICAgICAgICAgIH1cblxuXG4gICAgICAgICAgdGhpcy5jYXBhYmlsaXRpZXMgPSByZXN1bHRzWzFdO1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24ocnVudGltZVV0aWxzLnJ1bnRpbWVDYXBhYmlsaXRpZXMuY29uc3RyYWludHMsIHJlc3VsdHNbMV0pO1xuXG4gICAgICAgICAgdGhpcy5fZGF0YU9iamVjdHNTdG9yYWdlID0gbmV3IERhdGFPYmplY3RzU3RvcmFnZSh0aGlzLnN0b3JhZ2VzLnN5bmNoZXJNYW5hZ2VyLCByZXN1bHRzWzJdIHx8IHt9KTtcblxuICAgICAgICAgIHRoaXMuX2h5cGVydHlSZXNvdXJjZXMgPSByZXN1bHRzWzNdIHx8IHt9O1xuXG4gICAgICAgICAgdGhpcy5wMnBIYW5kbGVyVVJMID0gcmVzdWx0c1s0XSA/IHJlc3VsdHNbNF0ucDJwSGFuZGxlclVSTCA6IHJlc3VsdHNbNF07XG4gICAgICAgICAgaWYgKCF0aGlzLnAycEhhbmRsZXJVUkwpIHtcbiAgICAgICAgICAgIHRoaXMucDJwSGFuZGxlclVSTCA9IHRoaXMucnVudGltZVVSTCArICcvcDJwaGFuZGxlci8nICsgZ2VuZXJhdGVHVUlEKCk7XG4gICAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWVVQSAtIGluaXRdIFAyUEhhbmRsZXJVUkw6ICcsIHRoaXMucDJwSGFuZGxlclVSTCk7XG5cbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZXMucnVudGltZS5zZXQoJ3AycEhhbmRsZXI6VVJMJywgMSwge3AycEhhbmRsZXJVUkw6IHRoaXMucDJwSGFuZGxlclVSTH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkQ29tcG9uZW50cygpO1xuXG4gICAgICAgIH0pLnRoZW4oKHN0YXR1cykgPT4ge1xuXG4gICAgICAgICAgdGhpcy5faHlwZXJ0eVJlc291cmNlc1N0b3JhZ2UgPSBuZXcgSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2UodGhpcy5ydW50aW1lVVJMLCB0aGlzLm1lc3NhZ2VCdXMsIHRoaXMuc3RvcmFnZXMuaHlwZXJ0eVJlc291cmNlcywgdGhpcy5faHlwZXJ0eVJlc291cmNlcyk7XG5cbiAgICAgICAgICBpZiAodGhpcy5wMnApIHtcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZVVBIC0gaW5pdF0gbG9hZCBwMnBIYW5kbGVyOiAnLCBzdGF0dXMpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRQMlBIYW5kbGVyKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZVVBIC0gaW5pdF0gUDJQIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICAgICAgICAgIHJldHVybiAoJ1AyUCBOb3QgU3VwcG9ydGVkJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGxvZy5pbmZvKCdbcnVudGltZSB1YSAtIGluaXRdIC0gc3RhdHVzOiAnLCByZXN1bHQpO1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH0sIChyZWFzb24pID0+IHtcbiAgICAgICAgICBsb2cuZXJyb3IoJ0VSUk9SOiAnLCByZWFzb24pO1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cblxuICAgIH0pO1xuXG4gIH1cblxuICBfbG9hZFAyUEhhbmRsZXIoKSB7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblxuICAgICAgbGV0IHJ1bnRpbWVEZXNjcmlwdG9yID0gcnVudGltZVV0aWxzLnJ1bnRpbWVEZXNjcmlwdG9yO1xuICAgICAgbGV0IHAycFN0dWJIYW5kbGVyID0gcnVudGltZURlc2NyaXB0b3IucDJwSGFuZGxlclN0dWI7XG5cbiAgICAgIGxldCBwMnBDb25maWcgPSB7XG4gICAgICAgIGlzSGFuZGxlclN0dWI6IHRydWUsXG4gICAgICAgIHJ1bnRpbWVVUkw6IHRoaXMucnVudGltZVVSTFxuICAgICAgfTtcblxuICAgICAgbG9nLmxvZygnW1J1bnRpbWVVQSBsb2FkUDJQSGFuZGxlcl0gUDJQU3R1YkhhbmRsZXI6ICcsIHAycFN0dWJIYW5kbGVyKTtcblxuICAgICAgdGhpcy5sb2FkZXIubG9hZFN0dWIocDJwU3R1YkhhbmRsZXIsIHAycENvbmZpZykudGhlbigocmVzdWx0KSA9PiB7XG5cbiAgICAgICAgbGV0IHJ1bnRpbWVVQVVSTCA9IHRoaXMucnVudGltZVVSTCArICcvdWEnO1xuICAgICAgICBsZXQgbXNnID0ge1xuICAgICAgICAgIHR5cGU6ICdzdWJzY3JpYmUnLFxuICAgICAgICAgIGZyb206IHJ1bnRpbWVVQVVSTCxcbiAgICAgICAgICB0bzogJ2RvbWFpbjovL21zZy1ub2RlLicgKyB0aGlzLmRvbWFpbiArICcvc20nLFxuICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgIHN1YnNjcmliZTogW3Jlc3VsdC51cmxdLFxuICAgICAgICAgICAgc291cmNlOiB0aGlzLnJ1bnRpbWVVUkxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5tZXNzYWdlQnVzLmFkZExpc3RlbmVyKHJ1bnRpbWVVQVVSTCwgKG1zZykgPT4ge1xuICAgICAgICAgIGxvZy5sb2coJ1tydW50aW1lIHVhIC0gbGlzdGVuZXJdIC0gcmVjZWl2ZSBtc2c6ICcsIG1zZyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtc2csIChyZXBseSkgPT4ge1xuICAgICAgICAgIGxvZy5sb2coJ1tydW50aW1lIHVhIC0gcG9zdE1lc3NhZ2VdIC0gcmVwbHk6ICcsIHJlcGx5KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbG9nLmluZm8oJ1tydW50aW1lIHVhIC0gcDJwIGluc3RhbGxhdGlvbl0gLSBzdWNjZXNzOiAnLCByZXN1bHQpO1xuICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xuICAgICAgICBsb2cuaW5mbygnW3J1bnRpbWUgdWEgLSBwMnAgaW5zdGFsbGF0aW9uXSAtIGZhaWw6ICcsIHJlYXNvbik7XG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgfSk7XG5cbiAgICB9KTtcblxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEJvb2xlYW4sIEVycm9yPn0gdGhpcyBpcyBQcm9taXNlIGFuZCByZXR1cm5zIHRydWUgaWYgYWxsIGNvbXBvbmVudHMgYXJlIGxvYWRlZCB3aXRoIHN1Y2Nlc3Mgb3IgYW4gZXJyb3IgaWYgc29tZW9uZSBmYWlscy5cbiAgICpcbiAgICogQG1lbWJlck9mIFJ1bnRpbWVVQVxuICAgKi9cbiAgX2xvYWRDb21wb25lbnRzKCkge1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgdHJ5IHtcblxuICAgICAgICAvLyBQcmVwYXJlIHRoZSBvbiBpbnN0YW5jZSB0byBoYW5kbGUgd2l0aCB0aGUgZmFsbGJhY2tzIGFuZCBydW50aW1lQ2F0YWxvZ3VlO1xuICAgICAgICB0aGlzLmRlc2NyaXB0b3JJbnN0YW5jZSA9IG5ldyBEZXNjcmlwdG9ycyh0aGlzLnJ1bnRpbWVVUkwsIHRoaXMucnVudGltZUNhdGFsb2d1ZSwgdGhpcy5ydW50aW1lQ29uZmlndXJhdGlvbik7XG5cbiAgICAgICAgLy8gUHJlcGFyZSB0aGUgbG9hZGVyIHRvIGxvYWQgdGhlIGh5cGVydGllcywgcHJvdG9zdHVicyBhbmQgaWRwcHJveHk7XG4gICAgICAgIHRoaXMubG9hZGVyID0gbmV3IExvYWRlcih0aGlzLnJ1bnRpbWVVUkwsIHRoaXMucnVudGltZUNvbmZpZ3VyYXRpb24sIHRoaXMuZGVzY3JpcHRvckluc3RhbmNlKTtcblxuICAgICAgICAvLyBJbnN0YW50aWF0ZSB0aGUgaWRlbnRpdHkgTW9kdWxlXG4gICAgICAgIHRoaXMuaWRlbnRpdHlNb2R1bGUgPSBuZXcgSWRlbnRpdHlNb2R1bGUodGhpcy5ydW50aW1lVVJMLCB0aGlzLnJ1bnRpbWVDYXBhYmlsaXRpZXMsIHRoaXMuc3RvcmFnZXMuaWRlbnRpdHksIHRoaXMuX2RhdGFPYmplY3RzU3RvcmFnZSwgY3J5cHRvTWFuYWdlciwgdGhpcy5ydW50aW1lQ2F0YWxvZ3VlKTtcblxuICAgICAgICAvLyBVc2UgdGhlIHNhbmRib3ggZmFjdG9yeSB0byBjcmVhdGUgYW4gQXBwU2FuZGJveDtcbiAgICAgICAgLy8gSW4gdGhlIGZ1dHVyZSBjYW4gYmUgZGVjaWRlZCBieSBwb2xpY3lFbmdpbmUgaWYgd2UgbmVlZFxuICAgICAgICAvLyBjcmVhdGUgYSBBcHBTYW5kYm94IG9yIG5vdDtcbiAgICAgICAgbGV0IGFwcFNhbmRib3ggPSB0aGlzLnJ1bnRpbWVGYWN0b3J5LmNyZWF0ZUFwcFNhbmRib3goKTtcblxuICAgICAgICAvLyBJbnN0YW50aWF0ZSB0aGUgUmVnaXN0cnkgTW9kdWxlXG4gICAgICAgIHRoaXMucmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkodGhpcy5ydW50aW1lVVJMLCBhcHBTYW5kYm94LCB0aGlzLmlkZW50aXR5TW9kdWxlLCB0aGlzLnJ1bnRpbWVDYXRhbG9ndWUsIHRoaXMucnVudGltZUNhcGFiaWxpdGllcywgdGhpcy5zdG9yYWdlcy5yZWdpc3RyeSwgdGhpcy5wMnBIYW5kbGVyVVJMKTtcblxuICAgICAgICAvLyBTZXQgdGhlIGxvYWRlciB0byBsb2FkIEh5cGVydGllcywgU3R1YnMgYW5kIElkcFByb3hpZXNcbiAgICAgICAgdGhpcy5yZWdpc3RyeS5sb2FkZXIgPSB0aGlzLmxvYWRlcjtcblxuICAgICAgICAvLyBJbnN0YW50aWF0ZSB0aGUgTWVzc2FnZSBCdXNcbiAgICAgICAgdGhpcy5tZXNzYWdlQnVzID0gbmV3IE1lc3NhZ2VCdXModGhpcy5yZWdpc3RyeSk7XG5cbiAgICAgICAgLy8gUHJlcGFyZSB0aGUgYWRkcmVzcyBhbGxvY2F0aW9uIGluc3RhbmNlO1xuICAgICAgICB0aGlzLmFkZHJlc3NBbGxvY2F0aW9uID0gbmV3IEFkZHJlc3NBbGxvY2F0aW9uKHRoaXMucnVudGltZVVSTCwgdGhpcy5tZXNzYWdlQnVzLCB0aGlzLnJlZ2lzdHJ5KTtcblxuICAgICAgICAvLyBJbnN0YW50aWF0ZSB0aGUgUG9saWN5IEVuZ2luZVxuICAgICAgICB0aGlzLnBvbGljeUVuZ2luZSA9IG5ldyBQRVAobmV3IFJ1bnRpbWVDb3JlQ3R4KHRoaXMucnVudGltZVVSTCwgdGhpcy5pZGVudGl0eU1vZHVsZSwgdGhpcy5yZWdpc3RyeSwgdGhpcy5zdG9yYWdlcy5wb2xpY3ksIHRoaXMucnVudGltZUNhcGFiaWxpdGllcykpO1xuXG4gICAgICAgIC8vIEluc3RhbnRpYXRlIERpc2NvdmVyeVxuICAgICAgICB0aGlzLmNvcmVEaXNjb3ZlcnkgPSBuZXcgQ29yZURpc2NvdmVyeSh0aGlzLnJ1bnRpbWVVUkwsIHRoaXMubWVzc2FnZUJ1cywgdGhpcy5ncmFwaENvbm5lY3RvciwgdGhpcy5ydW50aW1lRmFjdG9yeSwgdGhpcy5yZWdpc3RyeSk7XG5cbiAgICAgICAgLy8gSW5zdGFudGlhdGUgdGhlIElkZW50aXR5TWFuYWdlclxuICAgICAgICB0aGlzLmlkZW50aXR5TWFuYWdlciA9IG5ldyBJZGVudGl0eU1hbmFnZXIodGhpcy5pZGVudGl0eU1vZHVsZSk7XG5cbiAgICAgICAgLy8gaW5pdGlhbGlzZSB0aGUgQ3J5cHRvTWFuYWdlclxuICAgICAgICBjcnlwdG9NYW5hZ2VyLmluaXQodGhpcy5ydW50aW1lVVJMLCB0aGlzLnJ1bnRpbWVDYXBhYmlsaXRpZXMsIHRoaXMuc3RvcmFnZXMuY3J5cHRvTWFuYWdlciwgdGhpcy5fZGF0YU9iamVjdHNTdG9yYWdlLCB0aGlzLnJlZ2lzdHJ5LCB0aGlzLmNvcmVEaXNjb3ZlcnksIHRoaXMuaWRlbnRpdHlNb2R1bGUsIHRoaXMucnVudGltZUZhY3RvcnkpO1xuXG4gICAgICAgIC8vIEluc3RhbnRpYXRlIHRoZSBHcmFwaCBDb25uZWN0b3JcbiAgICAgICAgdGhpcy5ncmFwaENvbm5lY3RvciA9IHByb2Nlc3MuZW52Lk1PREUgIT09ICdsaWdodCcgPyBuZXcgR3JhcGhDb25uZWN0b3IodGhpcy5ydW50aW1lVVJMLCB0aGlzLm1lc3NhZ2VCdXMsIHRoaXMuc3RvcmFnZU1hbmFnZXIpIDogbnVsbDtcblxuICAgICAgICB0aGlzLmhhbmRsZXJzID0gbmV3IE1zZ0J1c0hhbmRsZXJzKHRoaXMucG9saWN5RW5naW5lLCB0aGlzLmlkZW50aXR5TWFuYWdlciwgY3J5cHRvTWFuYWdlcik7XG5cbiAgICAgICAgdGhpcy5tZXNzYWdlQnVzLnBpcGVsaW5lT3V0LmhhbmRsZXJzID0gW3RoaXMuaGFuZGxlcnMuaWRtSGFuZGxlciwgdGhpcy5oYW5kbGVycy5wZXBPdXRIYW5kbGVyLCB0aGlzLmhhbmRsZXJzLmVuY3J5cHRIYW5kbGVyXTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQnVzLnBpcGVsaW5lSW4uaGFuZGxlcnMgPSBbdGhpcy5oYW5kbGVycy5kZWNyeXB0SGFuZGxlciwgdGhpcy5oYW5kbGVycy5wZXBJbkhhbmRsZXJdO1xuXG4gICAgICAgIC8vIEFkZCB0byBBcHAgU2FuZGJveCB0aGUgbGlzdGVuZXI7XG4gICAgICAgIGFwcFNhbmRib3guYWRkTGlzdGVuZXIoJyonLCAobXNnKSA9PiB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1zZyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNyeXB0b01hbmFnZXIubWVzc2FnZUJ1cyA9IHRoaXMubWVzc2FnZUJ1cztcblxuICAgICAgICAvLyBSZWdpc3RlciBtZXNzYWdlQnVzIG9uIFJlZ2lzdHJ5XG4gICAgICAgIHRoaXMucmVnaXN0cnkubWVzc2FnZUJ1cyA9IHRoaXMubWVzc2FnZUJ1cztcblxuICAgICAgICAvLyBQb2xpY3kgRW5naW5lXG4gICAgICAgIHRoaXMucG9saWN5RW5naW5lLm1lc3NhZ2VCdXMgPSB0aGlzLm1lc3NhZ2VCdXM7XG5cbiAgICAgICAgLy8gUmVnaXN0ZXIgbWVzc2FnZUJ1cyBvbiBJRE1cbiAgICAgICAgdGhpcy5pZGVudGl0eU1vZHVsZS5tZXNzYWdlQnVzID0gdGhpcy5tZXNzYWdlQnVzO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIHJlZ2lzdHJ5IG9uIElkZW50aXR5TW9kdWxlXG4gICAgICAgIHRoaXMuaWRlbnRpdHlNb2R1bGUucmVnaXN0cnkgPSB0aGlzLnJlZ2lzdHJ5O1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIGNvcmVEaXNjb3Zlcnkgb24gSWRlbnRpdHlNb2R1bGVcbiAgICAgICAgdGhpcy5pZGVudGl0eU1vZHVsZS5jb3JlRGlzY292ZXJ5ID0gdGhpcy5jb3JlRGlzY292ZXJ5O1xuXG4gICAgICAgIC8vIFVzZSBzYW5kYm94IGZhY3RvcnkgdG8gdXNlIHNwZWNpZmljIG1ldGhvZHNcbiAgICAgICAgLy8gYW5kIHNldCB0aGUgbWVzc2FnZSBidXMgdG8gdGhlIGZhY3RvcnlcbiAgICAgICAgdGhpcy5ydW50aW1lRmFjdG9yeS5tZXNzYWdlQnVzID0gdGhpcy5tZXNzYWdlQnVzO1xuXG4gICAgICAgIC8vIEluc3RhbmNpYXRlIHRoZSBTeW5jaGVyTWFuYWdlcjtcbiAgICAgICAgdGhpcy5zeW5jaGVyTWFuYWdlciA9IG5ldyBTeW5jaGVyTWFuYWdlcih0aGlzLnJ1bnRpbWVVUkwsIHRoaXMubWVzc2FnZUJ1cywgdGhpcy5yZWdpc3RyeSwgdGhpcy5ydW50aW1lQ2F0YWxvZ3VlLCB0aGlzLnN0b3JhZ2VzLnN5bmNoZXJNYW5hZ2VyLCBudWxsLCB0aGlzLl9kYXRhT2JqZWN0c1N0b3JhZ2UsIHRoaXMuaWRlbnRpdHlNb2R1bGUpO1xuXG5cbiAgICAgICAgLy8gU2V0IGludG8gbG9hZGVyIHRoZSBuZWVkZWQgY29tcG9uZW50cztcbiAgICAgICAgdGhpcy5sb2FkZXIucnVudGltZVVSTCA9IHRoaXMucnVudGltZVVSTDtcbiAgICAgICAgdGhpcy5sb2FkZXIubWVzc2FnZUJ1cyA9IHRoaXMubWVzc2FnZUJ1cztcbiAgICAgICAgdGhpcy5sb2FkZXIucmVnaXN0cnkgPSB0aGlzLnJlZ2lzdHJ5O1xuICAgICAgICB0aGlzLmxvYWRlci5ydW50aW1lQ2F0YWxvZ3VlID0gdGhpcy5ydW50aW1lQ2F0YWxvZ3VlO1xuICAgICAgICB0aGlzLmxvYWRlci5ydW50aW1lRmFjdG9yeSA9IHRoaXMucnVudGltZUZhY3Rvcnk7XG5cbiAgICAgICAgLy9JbnN0YW50aWF0ZSBEaXNjb3ZlcnkgTGliIGZvciBub3RpZmljYXRpb24gdGVzdGluZ1xuICAgICAgICAvLyB0aGlzLmRpc2NvdmVyeSA9IG5ldyBEaXNjb3ZlcnkoXCJoeXBlcnR5Oi8vbG9jYWxob3N0L3Rlc3RcIiwgdGhpcy5ydW50aW1lVVJMLCB0aGlzLm1lc3NhZ2VCdXMpO1xuICAgICAgICAvLyB0aGlzLmxvYWRTdHViKFwibG9jYWxob3N0XCIpO1xuICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLy8gICB0aGlzLmRpc2NvdmVyeS5kaXNjb3Zlckh5cGVydGllc0RPKFwidXNlcjovL2dvb2dsZS5jb20vb3BlbmlkdGVzdDIwQGdtYWlsLmNvbVwiKVxuICAgICAgICAvLyAgIC50aGVuKGh5cGVydGllcyA9PiB7XG4gICAgICAgIC8vICAgICBoeXBlcnRpZXMuZm9yRWFjaChoeXBlcnR5ID0+e1xuICAgICAgICAvLyAgICAgICBoeXBlcnR5Lm9uTGl2ZSgoKSA9PiBsb2cubG9nKGBOb3RpZmljYXRpb24gZnJvbSAke2h5cGVydHkuZGF0YS5oeXBlcnR5SUR9IGNoYW5nZWQgdG8gbGl2ZWApKTtcbiAgICAgICAgLy8gICAgICAgaHlwZXJ0eS5vbkRpc2Nvbm5lY3RlZCgoKSA9PiBsb2cubG9nKGBOb3RpZmljYXRpb24gZnJvbSAke2h5cGVydHkuZGF0YS5oeXBlcnR5SUR9IGNoYW5nZWQgdG8gZGlzY29ubmVjdGVkYCkpO1xuICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgIC8vICAgfSk7XG4gICAgICAgIC8vIH0sIDIwMDApO1xuXG4gICAgICAgIC8vIEluc3RhbmNpYXRlIHRoZSBTdWJzY3JpcHRpb25NYW5hZ2VyO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbk1hbmFnZXIgPSBuZXcgU3Vic2NyaXB0aW9uTWFuYWdlcih0aGlzLnJ1bnRpbWVVUkwsIHRoaXMubWVzc2FnZUJ1cywgdGhpcy5zdG9yYWdlcy5zdWJzY3JpcHRpb25zKTtcblxuICAgICAgICAvLyB0aGlzLnN1YnNjcmlwdGlvbk1hbmFnZXIuaW5pdCgpLnRoZW4oKCk9PntcbiAgICAgICAgLy8gICByZXNvbHZlKHRydWUpO1xuICAgICAgICAvLyB9KTtcblxuICAgICAgICBjb25zdCBwcmVwYXJlQ29tcG9uZW50cyA9IFtdO1xuICAgICAgICBwcmVwYXJlQ29tcG9uZW50cy5wdXNoKHRoaXMuc3Vic2NyaXB0aW9uTWFuYWdlci5pbml0KCkpO1xuICAgICAgICBwcmVwYXJlQ29tcG9uZW50cy5wdXNoKHRoaXMuaWRlbnRpdHlNb2R1bGUuaW5pdCgpKTtcbiAgICAgICAgcHJlcGFyZUNvbXBvbmVudHMucHVzaChjcnlwdG9NYW5hZ2VyLmxvYWRTZXNzaW9uS2V5cygpKTtcblxuICAgICAgICBQcm9taXNlLmFsbChwcmVwYXJlQ29tcG9uZW50cykudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdCgnW1J1bnRpbWVVQS5fbG9hZENvbXBvbmVudHNdIEVycm9yIF0gJywgcmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcbiAgICAgICAgICB0aHJvdyBFcnJvcihyZWFzb24pO1xuICAgICAgICB9KTtcblxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG5cbiAgICB9KTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlcGxveSBIeXBlcnR5IGZyb20gQ2F0YWxvZ3VlIFVSTFxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3Qvc3BlY3MvdHJlZS9tYXN0ZXIvZGF0YW1vZGVsL2NvcmUvYWRkcmVzc1xuICAgKlxuICAgKiBAcGFyYW0ge1VSTC5IeXBlcnR5Q2F0YWxvZ3VlVVJMfSBoeXBlcnR5Q2F0YWxvZ3VlVVJMIC0gVGhlIENhdGFsb2d1ZSBVUkwgdXNlZCB0byBpZGVudGlmeSBkZXNjcmlwdG9ycyBpbiB0aGUgQ2F0YWxvZ3VlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW58VVJMLkh5cGVydHlVUkx9IFtyZXVzZVVSTD1mYWxzZV0gcmV1c2VVUkwgLSByZXVzZVVSTCBpcyB1c2VkIHRvIHJldXNlIHRoZSBoeXBlcnR5VVJMIHByZXZpb3VzbHkgcmVnaXN0cmVkLCBieSBkZWZhdWx0IHRoZSByZXVzZSBpcyBkaXNhYmxlZDtcbiAgICogQHBhcmFtIHtVUkx9IGFwcFVSTCAtIHRoZSBhcHAgdXJsIGFkZHJlc3M7IC8vIFRPRE86IGltcHJvdmUgdGhpcyBkZXNjcmlwdGlvbjtcbiAgICogQHJldHVybnMge1Byb21pc2U8Qm9vbGVhbiwgRXJyb3I+fSB0aGlzIGlzIFByb21pc2UgYW5kIHJldHVybnMgdHJ1ZSBpZiBhbGwgY29tcG9uZW50cyBhcmUgbG9hZGVkIHdpdGggc3VjY2VzcyBvciBhbiBlcnJvciBpZiBzb21lb25lIGZhaWxzLlxuICAgKlxuICAgKiBAbWVtYmVyT2YgUnVudGltZVVBXG4gICAqL1xuICBsb2FkSHlwZXJ0eShoeXBlcnR5Q2F0YWxvZ3VlVVJMLCByZXVzZVVSTCA9IGZhbHNlLCBhcHBVUkwpIHtcblxuICAgIGlmICghaHlwZXJ0eUNhdGFsb2d1ZVVSTCkgdGhyb3cgbmV3IEVycm9yKCdIeXBlcnR5IGRlc2NyaXB0b3IgdXJsIHBhcmFtZXRlciBpcyBuZWVkZWQnKTtcbiAgICByZXR1cm4gdGhpcy5sb2FkZXIubG9hZEh5cGVydHkoaHlwZXJ0eUNhdGFsb2d1ZVVSTCwgcmV1c2VVUkwsIGFwcFVSTCk7XG5cbiAgfVxuXG4gIC8qKlxuICAqIERlcGxveSBTdHViIGZyb20gQ2F0YWxvZ3VlIFVSTCBvciBkb21haW4gdXJsXG4gICogQHBhcmFtICB7VVJMLlVSTH0gICAgIGRvbWFpbiAgICAgICAgICBkb21haW5cbiAgKi9cbiAgbG9hZFN0dWIocHJvdG9jb2xzdHViQ2F0YWxvZ3VlVVJMKSB7XG5cbiAgICBpZiAoIXByb3RvY29sc3R1YkNhdGFsb2d1ZVVSTCkgdGhyb3cgbmV3IEVycm9yKCdQcm90b1N0dWIgZGVzY3JpcHRvciB1cmwgcGFyYW1ldGVyIGlzIG5lZWRlZCcpO1xuICAgIHJldHVybiB0aGlzLmxvYWRlci5sb2FkU3R1Yihwcm90b2NvbHN0dWJDYXRhbG9ndWVVUkwpO1xuXG4gIH1cblxuICAvKipcbiAgKiBEZXBsb3kgaWRwUHJveHkgZnJvbSBDYXRhbG9ndWUgVVJMIG9yIGRvbWFpbiB1cmxcbiAgKiBAcGFyYW0gIHtVUkwuVVJMfSAgICAgZG9tYWluICAgICAgICAgIGRvbWFpblxuICAqL1xuICBsb2FkSWRwUHJveHkoaXBkUHJveHlDYXRhbG9ndWVVUkwpIHtcbiAgICBsb2cubG9nKCdpcGRQcm94eUNhdGFsb2d1ZVVSTCcsIGlwZFByb3h5Q2F0YWxvZ3VlVVJMKTtcblxuICAgIGlmICghaXBkUHJveHlDYXRhbG9ndWVVUkwpIHRocm93IG5ldyBFcnJvcignVGhlIElEUCBQcm94eSBVUkwgaXMgYSBuZWVkZWQgcGFyYW1ldGVyLCBjb3VsZCBiZSBhIERPTUFJTiBvciBhIFVSTCcpO1xuICAgIHJldHVybiB0aGlzLmxvYWRlci5sb2FkSWRwUHJveHkoaXBkUHJveHlDYXRhbG9ndWVVUkwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gY2xvc2UgYWxsIHRoZSBydW50aW1lOyBVbnJlZ2lzdGVyIGFsbCBoeXBlcnRpZXM7XG4gICAqIEByZXR1cm4ge1Byb21pc2U8Qm9vbGVhbj59IHJlc3VsdCBvZiB0aGUgY2xvc2UgbWV0aG9kLCB3aXRoIHRydWUgb3IgZmFsc2UgdG8gdGhlIG9wZXJhdGlvbiBzdWNjZXNzO1xuICAgKi9cbiAgY2xvc2UobG9nT3V0KSB7XG4gICAgY29uc29sZS5sb2coJ1J1bnRpbWUgY29yZSBsb2dvdXQ6ICcsIGxvZ091dCk7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBpZiAobG9nT3V0ID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmlkZW50aXR5TWFuYWdlci5yZXNldCgpO1xuICAgIH1cblxuICAgIGxvZy5pbmZvKCdVbnJlZ2lzdGVyIGFsbCBoeXBlcnRpZXMnKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgIF90aGlzLnJlZ2lzdHJ5LnVucmVnaXN0ZXJBbGxIeXBlcnRpZXMoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICBsb2cuaW5mbygnQWxsIHRoZSBoeXBlcnRpZXMgYXJlIHVucmVnaXN0ZWQgd2l0aCBTdWNjZXNzOicsIHJlc3VsdCk7XG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihyZWFzb24pIHtcbiAgICAgICAgbG9nLmVycm9yKCdGYWlsZWQgdG8gdW5yZWdpc3RlciB0aGUgaHlwZXJ0aWVzJywgcmVhc29uKTtcbiAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgIH0pO1xuXG4gICAgfSk7XG5cbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IFJ1bnRpbWVVQTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcnVudGltZS9SdW50aW1lVUEuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkE7QUFDQTtBQUVBO0FBQ0E7QUFEQTtBQUNBO0FBR0E7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7QUFDQTtBQUNBO0FBQUE7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7QUExREE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFDQTtBQStCQTs7Ozs7Ozs7Ozs7Ozs7O0FBZUE7QUFDQTtBQUNBOzs7Ozs7QUFNQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FBUUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFKQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQVlBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7Ozs7O0FBSUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///416\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(182);\n__webpack_require__(128);\n__webpack_require__(190);\n__webpack_require__(426);\n__webpack_require__(434);\n__webpack_require__(435);\nmodule.exports = __webpack_require__(10).Promise;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDE3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlLmpzPzUzOTgiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnByb21pc2UnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczcucHJvbWlzZS50cnknKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9fY29yZScpLlByb21pc2U7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vcHJvbWlzZS5qc1xuLy8gbW9kdWxlIGlkID0gNDE3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///417\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(129);\nvar defined = __webpack_require__(130);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDE4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zdHJpbmctYXQuanM/ODdhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG4vLyB0cnVlICAtPiBTdHJpbmcjYXRcbi8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgcG9zKSB7XG4gICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG4gICAgdmFyIGkgPSB0b0ludGVnZXIocG9zKTtcbiAgICB2YXIgbCA9IHMubGVuZ3RoO1xuICAgIHZhciBhLCBiO1xuICAgIGlmIChpIDwgMCB8fCBpID49IGwpIHJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG4gICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qc1xuLy8gbW9kdWxlIGlkID0gNDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///418\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar create = __webpack_require__(133);\nvar descriptor = __webpack_require__(74);\nvar setToStringTag = __webpack_require__(97);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(58)(IteratorPrototype, __webpack_require__(22)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDE5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qcz9mNzg1Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2hpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA0MTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///419\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(40);\nvar anObject = __webpack_require__(41);\nvar getKeys = __webpack_require__(67);\n\nmodule.exports = __webpack_require__(46) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHBzLmpzP2FhMmEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXlzID0gZ2V0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBQO1xuICB3aGlsZSAobGVuZ3RoID4gaSkgZFAuZihPLCBQID0ga2V5c1tpKytdLCBQcm9wZXJ0aWVzW1BdKTtcbiAgcmV0dXJuIE87XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanNcbi8vIG1vZHVsZSBpZCA9IDQyMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///420\n")},function(module,exports,__webpack_require__){eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(47);\nvar toLength = __webpack_require__(134);\nvar toAbsoluteIndex = __webpack_require__(422);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qcz9iYzU3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzXG4vLyBtb2R1bGUgaWQgPSA0MjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///421\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(129);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcz83ZTQwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA0MjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///422\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar addToUnscopables = __webpack_require__(424);\nvar step = __webpack_require__(425);\nvar Iterators = __webpack_require__(75);\nvar toIObject = __webpack_require__(47);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(183)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qcz9jNDY5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJyk7XG52YXIgc3RlcCA9IHJlcXVpcmUoJy4vX2l0ZXItc3RlcCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcblxuLy8gMjIuMS4zLjQgQXJyYXkucHJvdG90eXBlLmVudHJpZXMoKVxuLy8gMjIuMS4zLjEzIEFycmF5LnByb3RvdHlwZS5rZXlzKClcbi8vIDIyLjEuMy4yOSBBcnJheS5wcm90b3R5cGUudmFsdWVzKClcbi8vIDIyLjEuMy4zMCBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgdGhpcy5fdCA9IHRvSU9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgLy8ga2luZFxuLy8gMjIuMS41LjIuMSAlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGtpbmQgPSB0aGlzLl9rO1xuICB2YXIgaW5kZXggPSB0aGlzLl9pKys7XG4gIGlmICghTyB8fCBpbmRleCA+PSBPLmxlbmd0aCkge1xuICAgIHRoaXMuX3QgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHN0ZXAoMSk7XG4gIH1cbiAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4gc3RlcCgwLCBpbmRleCk7XG4gIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7XG4gIHJldHVybiBzdGVwKDAsIFtpbmRleCwgT1tpbmRleF1dKTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuYWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuYWRkVG9VbnNjb3BhYmxlcygndmFsdWVzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDQyM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///423\n")},function(module,exports){eval("module.exports = function () { /* empty */ };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDI0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanM/ZTI2NyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanNcbi8vIG1vZHVsZSBpZCA9IDQyNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///424\n")},function(module,exports){eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDI1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLXN0ZXAuanM/MTA2NiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChkb25lLCB2YWx1ZSkge1xuICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6ICEhZG9uZSB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLXN0ZXAuanNcbi8vIG1vZHVsZSBpZCA9IDQyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///425\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(73);\nvar global = __webpack_require__(17);\nvar ctx = __webpack_require__(65);\nvar classof = __webpack_require__(191);\nvar $export = __webpack_require__(21);\nvar isObject = __webpack_require__(36);\nvar aFunction = __webpack_require__(95);\nvar anInstance = __webpack_require__(427);\nvar forOf = __webpack_require__(428);\nvar speciesConstructor = __webpack_require__(195);\nvar task = __webpack_require__(196).set;\nvar microtask = __webpack_require__(430)();\nvar newPromiseCapabilityModule = __webpack_require__(138);\nvar perform = __webpack_require__(197);\nvar userAgent = __webpack_require__(431);\nvar promiseResolve = __webpack_require__(198);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(22)('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(432)($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(97)($Promise, PROMISE);\n__webpack_require__(433)(PROMISE);\nWrapper = __webpack_require__(10)[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(199)(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDI2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5wcm9taXNlLmpzPzA5N2MiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKS5zZXQ7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi9fbWljcm90YXNrJykoKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi9fcGVyZm9ybScpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4vX3VzZXItYWdlbnQnKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xudmFyIFBST01JU0UgPSAnUHJvbWlzZSc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnM7XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52OCB8fCAnJztcbnZhciAkUHJvbWlzZSA9IGdsb2JhbFtQUk9NSVNFXTtcbnZhciBpc05vZGUgPSBjbGFzc29mKHByb2Nlc3MpID09ICdwcm9jZXNzJztcbnZhciBlbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBJbnRlcm5hbCwgbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5LCBPd25Qcm9taXNlQ2FwYWJpbGl0eSwgV3JhcHBlcjtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmY7XG5cbnZhciBVU0VfTkFUSVZFID0gISFmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgLy8gY29ycmVjdCBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gICAgdmFyIHByb21pc2UgPSAkUHJvbWlzZS5yZXNvbHZlKDEpO1xuICAgIHZhciBGYWtlUHJvbWlzZSA9IChwcm9taXNlLmNvbnN0cnVjdG9yID0ge30pW3JlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyldID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgICAgIGV4ZWMoZW1wdHksIGVtcHR5KTtcbiAgICB9O1xuICAgIC8vIHVuaGFuZGxlZCByZWplY3Rpb25zIHRyYWNraW5nIHN1cHBvcnQsIE5vZGVKUyBQcm9taXNlIHdpdGhvdXQgaXQgZmFpbHMgQEBzcGVjaWVzIHRlc3RcbiAgICByZXR1cm4gKGlzTm9kZSB8fCB0eXBlb2YgUHJvbWlzZVJlamVjdGlvbkV2ZW50ID09ICdmdW5jdGlvbicpXG4gICAgICAmJiBwcm9taXNlLnRoZW4oZW1wdHkpIGluc3RhbmNlb2YgRmFrZVByb21pc2VcbiAgICAgIC8vIHY4IDYuNiAoTm9kZSAxMCBhbmQgQ2hyb21lIDY2KSBoYXZlIGEgYnVnIHdpdGggcmVzb2x2aW5nIGN1c3RvbSB0aGVuYWJsZXNcbiAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTgzMDU2NVxuICAgICAgLy8gd2UgY2FuJ3QgZGV0ZWN0IGl0IHN5bmNocm9ub3VzbHksIHNvIGp1c3QgY2hlY2sgdmVyc2lvbnNcbiAgICAgICYmIHY4LmluZGV4T2YoJzYuNicpICE9PSAwXG4gICAgICAmJiB1c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lLzY2JykgPT09IC0xO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn0oKTtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgdHlwZW9mICh0aGVuID0gaXQudGhlbikgPT0gJ2Z1bmN0aW9uJyA/IHRoZW4gOiBmYWxzZTtcbn07XG52YXIgbm90aWZ5ID0gZnVuY3Rpb24gKHByb21pc2UsIGlzUmVqZWN0KSB7XG4gIGlmIChwcm9taXNlLl9uKSByZXR1cm47XG4gIHByb21pc2UuX24gPSB0cnVlO1xuICB2YXIgY2hhaW4gPSBwcm9taXNlLl9jO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIG9rID0gcHJvbWlzZS5fcyA9PSAxO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgcnVuID0gZnVuY3Rpb24gKHJlYWN0aW9uKSB7XG4gICAgICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsO1xuICAgICAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICAgICAgdmFyIHJlamVjdCA9IHJlYWN0aW9uLnJlamVjdDtcbiAgICAgIHZhciBkb21haW4gPSByZWFjdGlvbi5kb21haW47XG4gICAgICB2YXIgcmVzdWx0LCB0aGVuLCBleGl0ZWQ7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoaGFuZGxlcikge1xuICAgICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgIGlmIChwcm9taXNlLl9oID09IDIpIG9uSGFuZGxlVW5oYW5kbGVkKHByb21pc2UpO1xuICAgICAgICAgICAgcHJvbWlzZS5faCA9IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoYW5kbGVyID09PSB0cnVlKSByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChkb21haW4pIGRvbWFpbi5lbnRlcigpO1xuICAgICAgICAgICAgcmVzdWx0ID0gaGFuZGxlcih2YWx1ZSk7IC8vIG1heSB0aHJvd1xuICAgICAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgICAgICBkb21haW4uZXhpdCgpO1xuICAgICAgICAgICAgICBleGl0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzdWx0ID09PSByZWFjdGlvbi5wcm9taXNlKSB7XG4gICAgICAgICAgICByZWplY3QoVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhlbiA9IGlzVGhlbmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgdGhlbi5jYWxsKHJlc3VsdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9IGVsc2UgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9IGVsc2UgcmVqZWN0KHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGRvbWFpbiAmJiAhZXhpdGVkKSBkb21haW4uZXhpdCgpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoID4gaSkgcnVuKGNoYWluW2krK10pOyAvLyB2YXJpYWJsZSBsZW5ndGggLSBjYW4ndCB1c2UgZm9yRWFjaFxuICAgIHByb21pc2UuX2MgPSBbXTtcbiAgICBwcm9taXNlLl9uID0gZmFsc2U7XG4gICAgaWYgKGlzUmVqZWN0ICYmICFwcm9taXNlLl9oKSBvblVuaGFuZGxlZChwcm9taXNlKTtcbiAgfSk7XG59O1xudmFyIG9uVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIHVuaGFuZGxlZCA9IGlzVW5oYW5kbGVkKHByb21pc2UpO1xuICAgIHZhciByZXN1bHQsIGhhbmRsZXIsIGNvbnNvbGU7XG4gICAgaWYgKHVuaGFuZGxlZCkge1xuICAgICAgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChpc05vZGUpIHtcbiAgICAgICAgICBwcm9jZXNzLmVtaXQoJ3VuaGFuZGxlZFJlamVjdGlvbicsIHZhbHVlLCBwcm9taXNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChoYW5kbGVyID0gZ2xvYmFsLm9udW5oYW5kbGVkcmVqZWN0aW9uKSB7XG4gICAgICAgICAgaGFuZGxlcih7IHByb21pc2U6IHByb21pc2UsIHJlYXNvbjogdmFsdWUgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoKGNvbnNvbGUgPSBnbG9iYWwuY29uc29sZSkgJiYgY29uc29sZS5lcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBCcm93c2VycyBzaG91bGQgbm90IHRyaWdnZXIgYHJlamVjdGlvbkhhbmRsZWRgIGV2ZW50IGlmIGl0IHdhcyBoYW5kbGVkIGhlcmUsIE5vZGVKUyAtIHNob3VsZFxuICAgICAgcHJvbWlzZS5faCA9IGlzTm9kZSB8fCBpc1VuaGFuZGxlZChwcm9taXNlKSA/IDIgOiAxO1xuICAgIH0gcHJvbWlzZS5fYSA9IHVuZGVmaW5lZDtcbiAgICBpZiAodW5oYW5kbGVkICYmIHJlc3VsdC5lKSB0aHJvdyByZXN1bHQudjtcbiAgfSk7XG59O1xudmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgcmV0dXJuIHByb21pc2UuX2ggIT09IDEgJiYgKHByb21pc2UuX2EgfHwgcHJvbWlzZS5fYykubGVuZ3RoID09PSAwO1xufTtcbnZhciBvbkhhbmRsZVVuaGFuZGxlZCA9IGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaGFuZGxlcjtcbiAgICBpZiAoaXNOb2RlKSB7XG4gICAgICBwcm9jZXNzLmVtaXQoJ3JlamVjdGlvbkhhbmRsZWQnLCBwcm9taXNlKTtcbiAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub25yZWplY3Rpb25oYW5kbGVkKSB7XG4gICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiBwcm9taXNlLl92IH0pO1xuICAgIH1cbiAgfSk7XG59O1xudmFyICRyZWplY3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIHByb21pc2UgPSB0aGlzO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHByb21pc2UuX3YgPSB2YWx1ZTtcbiAgcHJvbWlzZS5fcyA9IDI7XG4gIGlmICghcHJvbWlzZS5fYSkgcHJvbWlzZS5fYSA9IHByb21pc2UuX2Muc2xpY2UoKTtcbiAgbm90aWZ5KHByb21pc2UsIHRydWUpO1xufTtcbnZhciAkcmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIHZhciB0aGVuO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHRyeSB7XG4gICAgaWYgKHByb21pc2UgPT09IHZhbHVlKSB0aHJvdyBUeXBlRXJyb3IoXCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZlwiKTtcbiAgICBpZiAodGhlbiA9IGlzVGhlbmFibGUodmFsdWUpKSB7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd3JhcHBlciA9IHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9OyAvLyB3cmFwXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhlbi5jYWxsKHZhbHVlLCBjdHgoJHJlc29sdmUsIHdyYXBwZXIsIDEpLCBjdHgoJHJlamVjdCwgd3JhcHBlciwgMSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgJHJlamVjdC5jYWxsKHdyYXBwZXIsIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICAgICAgcHJvbWlzZS5fcyA9IDE7XG4gICAgICBub3RpZnkocHJvbWlzZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgICRyZWplY3QuY2FsbCh7IF93OiBwcm9taXNlLCBfZDogZmFsc2UgfSwgZSk7IC8vIHdyYXBcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmICghVVNFX05BVElWRSkge1xuICAvLyAyNS40LjMuMSBQcm9taXNlKGV4ZWN1dG9yKVxuICAkUHJvbWlzZSA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsICRQcm9taXNlLCBQUk9NSVNFLCAnX2gnKTtcbiAgICBhRnVuY3Rpb24oZXhlY3V0b3IpO1xuICAgIEludGVybmFsLmNhbGwodGhpcyk7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yKGN0eCgkcmVzb2x2ZSwgdGhpcywgMSksIGN0eCgkcmVqZWN0LCB0aGlzLCAxKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAkcmVqZWN0LmNhbGwodGhpcywgZXJyKTtcbiAgICB9XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBJbnRlcm5hbCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICB0aGlzLl9jID0gW107ICAgICAgICAgICAgIC8vIDwtIGF3YWl0aW5nIHJlYWN0aW9uc1xuICAgIHRoaXMuX2EgPSB1bmRlZmluZWQ7ICAgICAgLy8gPC0gY2hlY2tlZCBpbiBpc1VuaGFuZGxlZCByZWFjdGlvbnNcbiAgICB0aGlzLl9zID0gMDsgICAgICAgICAgICAgIC8vIDwtIHN0YXRlXG4gICAgdGhpcy5fZCA9IGZhbHNlOyAgICAgICAgICAvLyA8LSBkb25lXG4gICAgdGhpcy5fdiA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSB2YWx1ZVxuICAgIHRoaXMuX2ggPSAwOyAgICAgICAgICAgICAgLy8gPC0gcmVqZWN0aW9uIHN0YXRlLCAwIC0gZGVmYXVsdCwgMSAtIGhhbmRsZWQsIDIgLSB1bmhhbmRsZWRcbiAgICB0aGlzLl9uID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIG5vdGlmeVxuICB9O1xuICBJbnRlcm5hbC5wcm90b3R5cGUgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKSgkUHJvbWlzZS5wcm90b3R5cGUsIHtcbiAgICAvLyAyNS40LjUuMyBQcm9taXNlLnByb3RvdHlwZS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKVxuICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgIHZhciByZWFjdGlvbiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCAkUHJvbWlzZSkpO1xuICAgICAgcmVhY3Rpb24ub2sgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogdHJ1ZTtcbiAgICAgIHJlYWN0aW9uLmZhaWwgPSB0eXBlb2Ygb25SZWplY3RlZCA9PSAnZnVuY3Rpb24nICYmIG9uUmVqZWN0ZWQ7XG4gICAgICByZWFjdGlvbi5kb21haW4gPSBpc05vZGUgPyBwcm9jZXNzLmRvbWFpbiA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2MucHVzaChyZWFjdGlvbik7XG4gICAgICBpZiAodGhpcy5fYSkgdGhpcy5fYS5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9zKSBub3RpZnkodGhpcywgZmFsc2UpO1xuICAgICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gICAgfSxcbiAgICAvLyAyNS40LjUuMSBQcm9taXNlLnByb3RvdHlwZS5jYXRjaChvblJlamVjdGVkKVxuICAgICdjYXRjaCc6IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gICAgfVxuICB9KTtcbiAgT3duUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBuZXcgSW50ZXJuYWwoKTtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGN0eCgkcmVzb2x2ZSwgcHJvbWlzZSwgMSk7XG4gICAgdGhpcy5yZWplY3QgPSBjdHgoJHJlamVjdCwgcHJvbWlzZSwgMSk7XG4gIH07XG4gIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gICAgcmV0dXJuIEMgPT09ICRQcm9taXNlIHx8IEMgPT09IFdyYXBwZXJcbiAgICAgID8gbmV3IE93blByb21pc2VDYXBhYmlsaXR5KEMpXG4gICAgICA6IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBQcm9taXNlOiAkUHJvbWlzZSB9KTtcbnJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJykoJFByb21pc2UsIFBST01JU0UpO1xucmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKShQUk9NSVNFKTtcbldyYXBwZXIgPSByZXF1aXJlKCcuL19jb3JlJylbUFJPTUlTRV07XG5cbi8vIHN0YXRpY3NcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjUgUHJvbWlzZS5yZWplY3QocilcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocikge1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkodGhpcyk7XG4gICAgdmFyICQkcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgJCRyZWplY3Qocik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChMSUJSQVJZIHx8ICFVU0VfTkFUSVZFKSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNiBQcm9taXNlLnJlc29sdmUoeClcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKExJQlJBUlkgJiYgdGhpcyA9PT0gV3JhcHBlciA/ICRQcm9taXNlIDogdGhpcywgeCk7XG4gIH1cbn0pO1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKFVTRV9OQVRJVkUgJiYgcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbiAoaXRlcikge1xuICAkUHJvbWlzZS5hbGwoaXRlcilbJ2NhdGNoJ10oZW1wdHkpO1xufSkpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC4xIFByb21pc2UuYWxsKGl0ZXJhYmxlKVxuICBhbGw6IGZ1bmN0aW9uIGFsbChpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciAkaW5kZXggPSBpbmRleCsrO1xuICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbJGluZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9LFxuICAvLyAyNS40LjQuNCBQcm9taXNlLnJhY2UoaXRlcmFibGUpXG4gIHJhY2U6IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgZm9yT2YoaXRlcmFibGUsIGZhbHNlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihjYXBhYmlsaXR5LnJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmUpIHJlamVjdChyZXN1bHQudik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYucHJvbWlzZS5qc1xuLy8gbW9kdWxlIGlkID0gNDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///426\n")},function(module,exports){eval("module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDI3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1pbnN0YW5jZS5qcz9kOGFjIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSwgZm9yYmlkZGVuRmllbGQpIHtcbiAgaWYgKCEoaXQgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikgfHwgKGZvcmJpZGRlbkZpZWxkICE9PSB1bmRlZmluZWQgJiYgZm9yYmlkZGVuRmllbGQgaW4gaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKG5hbWUgKyAnOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzXG4vLyBtb2R1bGUgaWQgPSA0Mjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///427\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(65);\nvar call = __webpack_require__(192);\nvar isArrayIter = __webpack_require__(193);\nvar anObject = __webpack_require__(41);\nvar toLength = __webpack_require__(134);\nvar getIterFn = __webpack_require__(194);\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDI4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mb3Itb2YuanM/MzU2YiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4vX2l0ZXItY2FsbCcpO1xudmFyIGlzQXJyYXlJdGVyID0gcmVxdWlyZSgnLi9faXMtYXJyYXktaXRlcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBnZXRJdGVyRm4gPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIEJSRUFLID0ge307XG52YXIgUkVUVVJOID0ge307XG52YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCBlbnRyaWVzLCBmbiwgdGhhdCwgSVRFUkFUT1IpIHtcbiAgdmFyIGl0ZXJGbiA9IElURVJBVE9SID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcmFibGU7IH0gOiBnZXRJdGVyRm4oaXRlcmFibGUpO1xuICB2YXIgZiA9IGN0eChmbiwgdGhhdCwgZW50cmllcyA/IDIgOiAxKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCwgc3RlcCwgaXRlcmF0b3IsIHJlc3VsdDtcbiAgaWYgKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ZXJhYmxlICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvclxuICBpZiAoaXNBcnJheUl0ZXIoaXRlckZuKSkgZm9yIChsZW5ndGggPSB0b0xlbmd0aChpdGVyYWJsZS5sZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgIHJlc3VsdCA9IGVudHJpZXMgPyBmKGFuT2JqZWN0KHN0ZXAgPSBpdGVyYWJsZVtpbmRleF0pWzBdLCBzdGVwWzFdKSA6IGYoaXRlcmFibGVbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIGZvciAoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChpdGVyYWJsZSk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTspIHtcbiAgICByZXN1bHQgPSBjYWxsKGl0ZXJhdG9yLCBmLCBzdGVwLnZhbHVlLCBlbnRyaWVzKTtcbiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcbmV4cG9ydHMuQlJFQUsgPSBCUkVBSztcbmV4cG9ydHMuUkVUVVJOID0gUkVUVVJOO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qc1xuLy8gbW9kdWxlIGlkID0gNDI4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///428\n")},function(module,exports){eval("// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDI5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pbnZva2UuanM/OTI3YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYXN0IGFwcGx5LCBodHRwOi8vanNwZXJmLmxua2l0LmNvbS9mYXN0LWFwcGx5LzVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCBhcmdzLCB0aGF0KSB7XG4gIHZhciB1biA9IHRoYXQgPT09IHVuZGVmaW5lZDtcbiAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIHVuID8gZm4oKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0KTtcbiAgICBjYXNlIDE6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICBjYXNlIDQ6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuICB9IHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmdzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW52b2tlLmpzXG4vLyBtb2R1bGUgaWQgPSA0Mjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///429\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(17);\nvar macrotask = __webpack_require__(196).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(76)(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19taWNyb3Rhc2suanM/ZjM2MyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbWFjcm90YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBPYnNlcnZlciA9IGdsb2JhbC5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBQcm9taXNlID0gZ2xvYmFsLlByb21pc2U7XG52YXIgaXNOb2RlID0gcmVxdWlyZSgnLi9fY29mJykocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhlYWQsIGxhc3QsIG5vdGlmeTtcblxuICB2YXIgZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBhcmVudCwgZm47XG4gICAgaWYgKGlzTm9kZSAmJiAocGFyZW50ID0gcHJvY2Vzcy5kb21haW4pKSBwYXJlbnQuZXhpdCgpO1xuICAgIHdoaWxlIChoZWFkKSB7XG4gICAgICBmbiA9IGhlYWQuZm47XG4gICAgICBoZWFkID0gaGVhZC5uZXh0O1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm4oKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGhlYWQpIG5vdGlmeSgpO1xuICAgICAgICBlbHNlIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgIGlmIChwYXJlbnQpIHBhcmVudC5lbnRlcigpO1xuICB9O1xuXG4gIC8vIE5vZGUuanNcbiAgaWYgKGlzTm9kZSkge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlciwgZXhjZXB0IGlPUyBTYWZhcmkgLSBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMzM5XG4gIH0gZWxzZSBpZiAoT2JzZXJ2ZXIgJiYgIShnbG9iYWwubmF2aWdhdG9yICYmIGdsb2JhbC5uYXZpZ2F0b3Iuc3RhbmRhbG9uZSkpIHtcbiAgICB2YXIgdG9nZ2xlID0gdHJ1ZTtcbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBuZXcgT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vZGUuZGF0YSA9IHRvZ2dsZSA9ICF0b2dnbGU7XG4gICAgfTtcbiAgLy8gZW52aXJvbm1lbnRzIHdpdGggbWF5YmUgbm9uLWNvbXBsZXRlbHkgY29ycmVjdCwgYnV0IGV4aXN0ZW50IFByb21pc2VcbiAgfSBlbHNlIGlmIChQcm9taXNlICYmIFByb21pc2UucmVzb2x2ZSkge1xuICAgIC8vIFByb21pc2UucmVzb2x2ZSB3aXRob3V0IGFuIGFyZ3VtZW50IHRocm93cyBhbiBlcnJvciBpbiBMRyBXZWJPUyAyXG4gICAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9taXNlLnRoZW4oZmx1c2gpO1xuICAgIH07XG4gIC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XG4gIC8vIC0gc2V0SW1tZWRpYXRlXG4gIC8vIC0gTWVzc2FnZUNoYW5uZWxcbiAgLy8gLSB3aW5kb3cucG9zdE1lc3NhZ1xuICAvLyAtIG9ucmVhZHlzdGF0ZWNoYW5nZVxuICAvLyAtIHNldFRpbWVvdXRcbiAgfSBlbHNlIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBzdHJhbmdlIElFICsgd2VicGFjayBkZXYgc2VydmVyIGJ1ZyAtIHVzZSAuY2FsbChnbG9iYWwpXG4gICAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChmbikge1xuICAgIHZhciB0YXNrID0geyBmbjogZm4sIG5leHQ6IHVuZGVmaW5lZCB9O1xuICAgIGlmIChsYXN0KSBsYXN0Lm5leHQgPSB0YXNrO1xuICAgIGlmICghaGVhZCkge1xuICAgICAgaGVhZCA9IHRhc2s7XG4gICAgICBub3RpZnkoKTtcbiAgICB9IGxhc3QgPSB0YXNrO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19taWNyb3Rhc2suanNcbi8vIG1vZHVsZSBpZCA9IDQzMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///430\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(17);\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191c2VyLWFnZW50LmpzPzg5NDYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIG5hdmlnYXRvciA9IGdsb2JhbC5uYXZpZ2F0b3I7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF2aWdhdG9yICYmIG5hdmlnYXRvci51c2VyQWdlbnQgfHwgJyc7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdXNlci1hZ2VudC5qc1xuLy8gbW9kdWxlIGlkID0gNDMxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///431\n")},function(module,exports,__webpack_require__){eval("var hide = __webpack_require__(58);\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS1hbGwuanM/YzQ3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc3JjLCBzYWZlKSB7XG4gIGZvciAodmFyIGtleSBpbiBzcmMpIHtcbiAgICBpZiAoc2FmZSAmJiB0YXJnZXRba2V5XSkgdGFyZ2V0W2tleV0gPSBzcmNba2V5XTtcbiAgICBlbHNlIGhpZGUodGFyZ2V0LCBrZXksIHNyY1trZXldKTtcbiAgfSByZXR1cm4gdGFyZ2V0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS1hbGwuanNcbi8vIG1vZHVsZSBpZCA9IDQzMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///432\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(17);\nvar core = __webpack_require__(10);\nvar dP = __webpack_require__(40);\nvar DESCRIPTORS = __webpack_require__(46);\nvar SPECIES = __webpack_require__(22)('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtc3BlY2llcy5qcz82ZDFhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgdmFyIEMgPSB0eXBlb2YgY29yZVtLRVldID09ICdmdW5jdGlvbicgPyBjb3JlW0tFWV0gOiBnbG9iYWxbS0VZXTtcbiAgaWYgKERFU0NSSVBUT1JTICYmIEMgJiYgIUNbU1BFQ0lFU10pIGRQLmYoQywgU1BFQ0lFUywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH1cbiAgfSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1zcGVjaWVzLmpzXG4vLyBtb2R1bGUgaWQgPSA0MzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///433\n")},function(module,exports,__webpack_require__){"use strict";eval("// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(21);\nvar core = __webpack_require__(10);\nvar global = __webpack_require__(17);\nvar speciesConstructor = __webpack_require__(195);\nvar promiseResolve = __webpack_require__(198);\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDM0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHkuanM/MTJhMCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wcm9taXNlLWZpbmFsbHlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuL19wcm9taXNlLXJlc29sdmUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdQcm9taXNlJywgeyAnZmluYWxseSc6IGZ1bmN0aW9uIChvbkZpbmFsbHkpIHtcbiAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgY29yZS5Qcm9taXNlIHx8IGdsb2JhbC5Qcm9taXNlKTtcbiAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2Ygb25GaW5hbGx5ID09ICdmdW5jdGlvbic7XG4gIHJldHVybiB0aGlzLnRoZW4oXG4gICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4geDsgfSk7XG4gICAgfSA6IG9uRmluYWxseSxcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHRocm93IGU7IH0pO1xuICAgIH0gOiBvbkZpbmFsbHlcbiAgKTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5LmpzXG4vLyBtb2R1bGUgaWQgPSA0MzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///434\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(21);\nvar newPromiseCapability = __webpack_require__(138);\nvar perform = __webpack_require__(197);\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDM1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeS5qcz84Y2E1Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtdHJ5XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUHJvbWlzZScsIHsgJ3RyeSc6IGZ1bmN0aW9uIChjYWxsYmFja2ZuKSB7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYodGhpcyk7XG4gIHZhciByZXN1bHQgPSBwZXJmb3JtKGNhbGxiYWNrZm4pO1xuICAocmVzdWx0LmUgPyBwcm9taXNlQ2FwYWJpbGl0eS5yZWplY3QgOiBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlKShyZXN1bHQudik7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeS5qc1xuLy8gbW9kdWxlIGlkID0gNDM1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///435\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(437);\nmodule.exports = __webpack_require__(10).Object.assign;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDM2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvYXNzaWduLmpzPzU3N2IiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmFzc2lnbjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvYXNzaWduLmpzXG4vLyBtb2R1bGUgaWQgPSA0MzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///436\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(21);\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(438) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDM3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuYXNzaWduLmpzPzQ3OGMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4zLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GLCAnT2JqZWN0JywgeyBhc3NpZ246IHJlcXVpcmUoJy4vX29iamVjdC1hc3NpZ24nKSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuYXNzaWduLmpzXG4vLyBtb2R1bGUgaWQgPSA0Mzdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///437\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(67);\nvar gOPS = __webpack_require__(139);\nvar pIE = __webpack_require__(78);\nvar toObject = __webpack_require__(77);\nvar IObject = __webpack_require__(187);\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(66)(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDM4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtYXNzaWduLmpzPzRlOGQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gMTkuMS4yLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSwgLi4uKVxudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgJGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbi8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxubW9kdWxlLmV4cG9ydHMgPSAhJGFzc2lnbiB8fCByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgdmFyIEEgPSB7fTtcbiAgdmFyIEIgPSB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHZhciBTID0gU3ltYm9sKCk7XG4gIHZhciBLID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0JztcbiAgQVtTXSA9IDc7XG4gIEsuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGspIHsgQltrXSA9IGs7IH0pO1xuICByZXR1cm4gJGFzc2lnbih7fSwgQSlbU10gIT0gNyB8fCBPYmplY3Qua2V5cygkYXNzaWduKHt9LCBCKSkuam9pbignJykgIT0gSztcbn0pID8gZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgdmFyIFQgPSB0b09iamVjdCh0YXJnZXQpO1xuICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDE7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICB2YXIgaXNFbnVtID0gcElFLmY7XG4gIHdoaWxlIChhTGVuID4gaW5kZXgpIHtcbiAgICB2YXIgUyA9IElPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKTtcbiAgICB2YXIga2V5cyA9IGdldFN5bWJvbHMgPyBnZXRLZXlzKFMpLmNvbmNhdChnZXRTeW1ib2xzKFMpKSA6IGdldEtleXMoUyk7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciBqID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChsZW5ndGggPiBqKSBpZiAoaXNFbnVtLmNhbGwoUywga2V5ID0ga2V5c1tqKytdKSkgVFtrZXldID0gU1trZXldO1xuICB9IHJldHVybiBUO1xufSA6ICRhc3NpZ247XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWFzc2lnbi5qc1xuLy8gbW9kdWxlIGlkID0gNDM4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///438\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(440);\nvar $Object = __webpack_require__(10).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDM5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzP2Y1YjAiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKSB7XG4gIHJldHVybiAkT2JqZWN0LmRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA0Mzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///439\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(21);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(46), 'Object', { defineProperty: __webpack_require__(40).f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzPzk4MjkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi40IC8gMTUuMi4zLjYgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZiB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA0NDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///440\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof2 = __webpack_require__(79);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _runtimeUtils = __webpack_require__(143);\n\nvar _Sandbox = __webpack_require__(455);\n\nvar _AddressAllocation = __webpack_require__(100);\n\nvar _AddressAllocation2 = _interopRequireDefault(_AddressAllocation);\n\nvar _HypertyInstance = __webpack_require__(467);\n\nvar _HypertyInstance2 = _interopRequireDefault(_HypertyInstance);\n\nvar _P2PConnectionResolve = __webpack_require__(469);\n\nvar _P2PConnectionResolve2 = _interopRequireDefault(_P2PConnectionResolve);\n\nvar _utils = __webpack_require__(11);\n\n__webpack_require__(470);\n\nvar _Utils = __webpack_require__(205);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('Registry'); /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\n// Log System\n\n\n// import DiscoveryServiceFramework from './DiscoveryServiceFramework';\n\nvar STATUS = { CREATED: 'created', LIVE: 'live', DEPLOYING: 'deploying', DEPLOYED: 'deployed', PROGRESS: 'in-progress', DISCONNECTED: 'disconnected', FAILED: 'deployment-failed', DEAD: 'dead' };\n\n/*import IdentityManager from './IdentityManager';\nimport Discovery from './Discovery';*/\n\n/**\n* Runtime Registry Interface\n*/\n\nvar Registry = function () {\n\n /**\n * To initialise the Runtime Registry with the RuntimeURL that will be the basis to derive the internal runtime addresses when allocating addresses to internal runtime component. In addition, the Registry domain back-end to be used to remotely register Runtime components, is also passed as input parameter.\n * @param {MessageBus} msgbus msgbus\n * @param {HypertyRuntimeURL} runtimeURL runtimeURL\n * @param {AppSandbox} appSandbox appSandbox\n * @param {runtimeCatalogue} runtimeCatalogue runtimeCatalogue\n * @param {DomainURL} remoteRegistry remoteRegistry\n * @param {storageManager} storageManager\n */\n function Registry(runtimeURL, appSandbox, identityModule, runtimeCatalogue, runtimeCapabilities, storageManager, p2pHandlerURL, remoteRegistry) {\n (0, _classCallCheck3.default)(this, Registry);\n\n\n // how some functions receive the parameters for example:\n // new Registry('hyperty-runtime://sp1/123', appSandbox, idModule, remoteRegistry);\n // registry.registerStub(sandbox, 'sp1');\n // registry.registerHyperty(sandBox, 'hyperty-runtime://sp1/123');\n // registry.resolve('hyperty-runtime://sp1/123');\n\n if (!runtimeURL) throw new Error('runtimeURL is missing.');\n if (!storageManager) throw new Error('storageManager is missing.');\n\n /*if (!remoteRegistry) throw new Error('remoteRegistry is missing');*/\n\n var _this = this;\n\n _this.registryURL = runtimeURL + '/registry/';\n _this.appSandbox = appSandbox;\n _this.runtimeURL = runtimeURL;\n _this.p2pHandlerURL = p2pHandlerURL;\n _this.runtimeCatalogue = runtimeCatalogue;\n _this.remoteRegistry = remoteRegistry;\n _this.idModule = identityModule;\n _this.storageManager = storageManager;\n _this.runtimeCapabilities = runtimeCapabilities;\n _this.identifier = (0, _utils.generateGUID)();\n _this.registrationRetries = 5; // number of attempts to register Hyperties and DataObjects when errors occurs\n\n // the expires in 3600, represents 1 hour\n //the expires is in seconds, unit of measure received by the domain registry\n _this.expiresTime = 3600;\n\n _this.hypertiesListToRemove = {};\n _this.hypertiesList = [];\n _this.remoteHypertyList = [];\n _this.remoteDataObjectList = [];\n _this.idpLegacyProxyList = {};\n\n _this.watchingYou = new _Utils.WatchingYou();\n _this.p2pHandlerStub = {};\n _this.p2pRequesterStub = _this.watchingYou.watch('p2pRequesterStub', {}, true);\n _this.p2pConnectionList = _this.watchingYou.watch('p2pConnectionList', {}, true);\n _this.p2pHandlerAssociation = {};\n\n _this.protostubsList = _this.watchingYou.watch('protostubsList', {}, true);\n _this.idpProxyList = _this.watchingYou.watch('idpProxyList', {}, true);\n _this.dataObjectList = {};\n _this.subscribedDataObjectList = {};\n _this.sandboxesList = { sandbox: {}, appSandbox: {} };\n _this.pepList = {};\n _this.registries = {};\n\n _this._domain = (0, _utils.divideURL)(_this.registryURL).domain;\n _this.sandboxesList.appSandbox[runtimeURL] = appSandbox;\n var p2pConnectionResolve = new _P2PConnectionResolve2.default(_this);\n\n _this._p2pConnectionResolve = p2pConnectionResolve;\n }\n\n (0, _createClass3.default)(Registry, [{\n key: '_getIdentityAssociated',\n value: function _getIdentityAssociated(type, hypertyURL) {\n var _this = this;\n\n for (var hyperty in _this.hypertiesList) {\n var value = _this.hypertiesList[hyperty];\n\n if (value._hypertyURL === hypertyURL) {\n switch (type) {\n case 'username':\n return value._user.username;\n case 'cn':\n return value._user.cn;\n case 'locale':\n return value._user.locale;\n case 'avatar':\n return value._user.avatar;\n case 'userURL':\n return value._user.userURL;\n case '.':\n return value._user;\n default:\n return '';\n }\n }\n }\n return '';\n }\n\n /**\n * This function is used to return the sandbox instance where the Application is executing. It is assumed there is just one App per Runtime instance.\n */\n\n }, {\n key: 'getAppSandbox',\n value: function getAppSandbox() {\n var _this = this;\n return _this.appSandbox;\n }\n\n /**\n * This function returns the user associated to the hyperty URL\n * @param {String} hypertyURL hyperty URL\n * @return {String} userURL user URL\n */\n\n }, {\n key: 'getHypertyOwner',\n value: function getHypertyOwner(hypertyURL) {\n\n var _this = this;\n var userURL = void 0;\n\n for (var index in _this.hypertiesList) {\n var hyperty = _this.hypertiesList[index];\n\n if (hyperty.hypertyURL === hypertyURL) {\n return hyperty.user.userURL;\n }\n }\n return userURL;\n }\n\n /**\n * This function returns the user associated to the hyperty URL\n * @param {String} dataObjectURL dataObjectURL URL\n * @return {String} userURL user URL\n */\n\n }, {\n key: 'getDataObjectReporter',\n value: function getDataObjectReporter(dataObjectURL) {\n\n var _this = this;\n var DOurl = (0, _utils.removePathFromURL)(dataObjectURL);\n for (var index in _this.dataObjectList) {\n var dataObject = _this.dataObjectList[index];\n\n if (dataObject.url === DOurl) {\n return dataObject.reporter;\n }\n }\n return null;\n }\n\n /**\n * returns the hyperty Name from a given url. This url could be from a dataObject or hyperty\n * @param {String} url hyperty or dataObject URL\n * @return {String} hypertyName hyperty Name\n */\n\n }, {\n key: 'getHypertyName',\n value: function getHypertyName(url) {\n var _this = this;\n\n var isHypertyURL = (0, _utils.divideURL)(url).type === 'hyperty';\n\n //value to be returned in the end\n var hypertyName = void 0;\n\n //if is not an hyperty, check if is a dataObject and obtain his reporter\n var hypertyURL = isHypertyURL ? url : _this.getReporterURLSynchonous(url);\n\n for (var index in _this.hypertiesList) {\n var hyperty = _this.hypertiesList[index];\n if (hyperty.hypertyURL === hypertyURL) {\n hypertyName = hyperty.objectName;\n break;\n }\n }\n return hypertyName;\n }\n\n /**\n * function to return the reporterURL associated with the dataobject URL\n * @param {String} dataObjectURL dataObjectURL\n * @return {String} reporterURL reporterURL\n */\n\n }, {\n key: 'getReporterURL',\n value: function getReporterURL(dataObjectURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var dataObject = _this.dataObjectList[dataObjectURL];\n\n if (dataObject) {\n resolve(dataObject.reporter);\n } else {\n reject('No reporter was found');\n }\n });\n }\n\n /**\n * function to return the reporterURL associated with the dataobject URL. no promise returned\n * @param {String} dataObjectURL dataObjectURL\n * @return {String} reporterURL reporterURL\n */\n\n }, {\n key: 'getReporterURLSynchonous',\n value: function getReporterURLSynchonous(dataObjectURL) {\n var _this = this;\n\n var dataObject = _this.dataObjectList[dataObjectURL];\n\n return dataObject ? dataObject.reporter : undefined;\n }\n\n /**\n * returns the hyperty URL that subscribed the dataObject\n * @param {String} url url format\n * @return {String} Hyperty URL subscribed to the URL\n */\n\n }, {\n key: 'getDataObjectSubscriberHyperty',\n value: function getDataObjectSubscriberHyperty(url) {\n var _this = this;\n\n return _this.subscribedDataObjectList[url];\n }\n\n /**\n * register a desired dataObject to subscribe\n * @param {String} dataObjectURL dataObject URL\n */\n\n }, {\n key: 'registerSubscribedDataObject',\n value: function registerSubscribedDataObject(dataObjectURL, hypertyURL) {\n var _this = this;\n if (_this.subscribedDataObjectList[dataObjectURL] === undefined) {\n _this.subscribedDataObjectList[dataObjectURL] = hypertyURL;\n }\n }\n\n /**\n * Function to return the list of pre authorised users received in the creation of a data object\n * @param {String} dataObjectURL dataObjectURL\n * @return {Array} preAuth List of pre authorised users\n */\n\n }, {\n key: 'getPreAuthSubscribers',\n value: function getPreAuthSubscribers(dataObjectURL) {\n var _this = this;\n var dataObject = _this.dataObjectList[dataObjectURL];\n var preAuth = [];\n\n if (dataObject) {\n preAuth = dataObject.authorise;\n }\n return preAuth;\n }\n\n /**\n * send requests to unregister all hyperties registered in domain registry\n * @return {Promise} return a promise if the result of unregistration all hyperties\n */\n\n }, {\n key: 'unregisterAllHyperties',\n value: function unregisterAllHyperties() {\n var _this = this;\n\n var unregisterResults = [];\n\n return new _promise2.default(function (resolve, reject) {\n\n for (var index in _this.hypertiesList) {\n var hyperty = _this.hypertiesList[index];\n var result = _this.unregisterHypertyInstance(hyperty.hypertyURL);\n unregisterResults.push(result);\n }\n\n _promise2.default.all(unregisterResults).then(function () {\n\n resolve('successfully unregistered all hyperties');\n }, function (error) {\n reject(error);\n });\n });\n }\n\n /**\n * function to unregister an hypertyInstance in the Domain Registry\n * @param {String} hypertyInstance HypertyInsntance url\n *\n */\n\n }, {\n key: 'unregisterHypertyInstance',\n value: function unregisterHypertyInstance(hypertyInstance) {\n //TODO working but the user\n var _this = this;\n\n var closeMsg = { type: 'execute', from: _this.registryURL,\n to: hypertyInstance,\n body: { method: 'close' } };\n\n // Send message to hyperty to close\n _this._messageBus.postMessage(closeMsg, function (reply) {\n log.log('[Registry.unregisterHypertyInstance] Close Reply', reply);\n\n var message = { type: 'update', from: _this.registryURL,\n to: 'domain://registry.' + _this._domain,\n body: { resource: '/hyperty/' + hypertyInstance, value: 'disconnected', attribute: 'status' } };\n\n _this._messageBus.postMessage(message, function (reply) {\n log.log('[Registry] unregister hyperty Reply', reply);\n });\n });\n }\n\n /**\n * function to unregister an hypertyInstance in the Domain Registry\n * @param {String} hypertyInstance HypertyInsntance url\n *\n */\n\n }, {\n key: 'unregisterDataObject',\n value: function unregisterDataObject(url) {\n var _this = this;\n\n var message = { type: 'update', from: _this.registryURL,\n to: 'domain://registry.' + _this._domain,\n body: {\n resource: url,\n value: {\n status: 'disconnected'\n }\n } };\n\n _this._messageBus.postMessage(message, function (reply) {\n log.log('[Registry] unregister dataObject Reply', reply);\n });\n }\n\n /**\n * function to delete an dataObjectInstance in the Domain Registry\n * @param {String} name DataObjectName\n */\n\n }, {\n key: 'deleteDataObjectInstance',\n value: function deleteDataObjectInstance(name) {\n var _this = this;\n\n var message = { type: 'delete', from: _this.registryURL,\n to: 'domain://registry.' + _this._domain,\n body: { value: { name: name } } };\n\n _this._messageBus.postMessage(message, function (reply) {\n log.log('[Registry] unregister dataObject Reply', reply);\n });\n }\n\n /**\n * Function to update an Hyperty\n */\n\n }, {\n key: 'updateHypertyInstance',\n value: function updateHypertyInstance(resource, value) {\n var _this = this;\n\n var message = { type: 'UPDATE', from: _this.registryURL,\n to: 'domain://registry.' + _this._domain,\n body: { resource: resource, value: value } };\n\n _this._messageBus.post.postMessage(message, function (reply) {\n // log.log('[Registry] Updated hyperty reply', reply);\n });\n }\n\n /**\n * register a new subscriber in the dataObject registered\n * @param {String} dataObjectURL dataObject URL\n * @param {String} subscriberURL subscriber URL\n */\n\n }, {\n key: 'registerSubscriber',\n value: function registerSubscriber(dataObjectURL, subscriberURL) {\n var _this = this;\n var dataObject = _this.dataObjectList[dataObjectURL];\n\n if (dataObject) {\n\n if (!dataObject.subscribers) dataObject.subscribers = [];\n\n dataObject.subscribers.push(subscriberURL);\n _this.dataObjectList[dataObjectURL] = dataObject;\n }\n }\n\n /**\n * get the subscribers registered within a dataObject\n * @param {String} dataObjectURL dataObject URL\n * @param {Array} Substribers List\n */\n\n }, {\n key: 'getDataObjectSubscribers',\n value: function getDataObjectSubscribers(dataObjectURL) {\n var _this = this;\n var dataObject = _this.dataObjectList[dataObjectURL];\n\n if (dataObject) {\n return dataObject.subscribers;\n } else {\n throw 'No dataObject was found';\n }\n }\n\n /**\n * To register a new Data Object in the runtime which returns the dataObjectURL allocated to the new Data Object.\n * @param {String} identifier identifier\n * @param {String} dataObjectschema dataObjectschema\n * @param {String} dataObjectUrl dataObjectUrl\n * @param {String} dataObjectReporter dataObjectReporter\n * @param {Array} resources dataObject resources\n * @param {Array} authorise list of pre authorised authorised IDs\n */\n //registerDataObject(identifier, dataObjectschema, dataObjectUrl, dataObjectReporter, resources, addressURL, authorise) {\n\n }, {\n key: 'registerDataObject',\n value: function registerDataObject(objectRegistration) {\n var _this = this;\n\n var registration = (0, _utils.deepClone)(objectRegistration);\n\n return new _promise2.default(function (resolve, reject) {\n\n var dataScheme = [];\n var filteredDataScheme = registration.url.split(':');\n dataScheme.push(filteredDataScheme[0]);\n\n _this.storageManager.get('registry:DataObjectURLs').then(function (urlsList) {\n\n if (!urlsList) {\n urlsList = {};\n }\n\n //update the list with the new elements\n urlsList[objectRegistration.name + objectRegistration.schema + objectRegistration.resources + objectRegistration.reporter] = objectRegistration.url;\n\n var p2pHandler = void 0;\n var p2pRequester = void 0;\n\n if ((0, _keys2.default)(_this.p2pHandlerStub).length !== 0) {\n p2pHandler = _this.p2pHandlerStub[_this.runtimeURL].url;\n p2pRequester = _runtimeUtils.runtimeUtils.runtimeDescriptor.p2pRequesterStub;\n }\n\n registration.startingTime = registration.created;\n\n delete registration.authorise;\n delete registration.created;\n delete registration.mutual;\n delete registration.resume;\n\n if (!registration.expires) registration.expires = _this.expiresTime;\n\n registration.dataSchemes = dataScheme;\n\n if (p2pHandler) {\n registration.p2pHandler = p2pHandler;\n registration.p2pRequester = p2pRequester;\n }\n\n if (_this.isInterworkingProtoStub(registration.reporter)) {\n registration.interworking = true;\n }\n\n registration.status = 'live';\n\n var message = void 0;\n\n if (!objectRegistration.resume) {\n\n log.log('[Registry.registerDataObject] registering new data object URL', registration);\n\n message = { type: 'create', from: _this.registryURL, to: 'domain://registry.' + _this.registryDomain, body: { value: registration, policy: 'policy' } };\n } else {\n\n log.log('[Registry.registerDataObject] registering previously registered data object URL', registration);\n\n message = {\n type: 'update',\n to: 'domain://registry.' + _this.registryDomain,\n from: _this.registryURL,\n body: { resource: registration.url, value: { status: 'live' } }\n };\n }\n\n _this.dataObjectList[registration.url] = objectRegistration;\n\n // step to obtain the list of all URL registered to updated with the new one.\n _this.storageManager.set('registry:DataObjectURLs', 0, urlsList).then(function () {\n\n try {\n _this._messageBus.postMessageWithRetries(message, _this._registrationRetries, function (reply) {\n // log.log('[Registry.registerDataObject] ===> registerDataObject Reply: ', reply);\n if (reply.body.code === 200) {\n resolve(registration);\n } else {\n reject('error on register DataObject');\n }\n });\n } catch (e) {\n log.error(e);\n reject(e);\n }\n\n //timer to keep the registration alive\n // the time is defined by a little less than half of the expires time defined\n var keepAliveTimer = setInterval(function () {\n\n var message = {\n type: 'update',\n from: _this.registryURL,\n to: 'domain://registry.' + _this.registryDomain,\n body: { resource: registration.url, value: { status: 'live' }, method: 'refresh' }\n };\n\n _this._messageBus.postMessage(message, function (reply) {\n // log.log('[Registry.registerDataObject] KeepAlive Reply: ', reply);\n });\n }, registration.expires / 1.1 / 2 * 1000);\n }).catch(function (reason) {\n log.error('[Registry registerHyperty] Error: ', reason);\n reject(reason);\n });\n });\n });\n }\n }, {\n key: '_getResourcesAndSchemes',\n value: function _getResourcesAndSchemes(descriptor) {\n var _this = this;\n\n return new _promise2.default(function (resolve) {\n\n var resources = void 0;\n\n // check if the hyperty resources is a vector or a string\n // TODO delete later when catalogue is fixed\n if (typeof descriptor.hypertyType === 'string') {\n resources = [];\n resources.push(descriptor.hypertyType);\n } else {\n resources = descriptor.hypertyType;\n }\n\n var objName = descriptor.objectName;\n\n var descriptorDataSchema = descriptor.dataObjects;\n var dataSchemasArray = [];\n\n //this will create a array with a Promise in each position\n for (var index in descriptorDataSchema) {\n dataSchemasArray.push(_this.runtimeCatalogue.getDataSchemaDescriptor(descriptorDataSchema[index]));\n }\n\n // as soon as the previous array is completed, this will wait for the resolve of all promises in the array\n _promise2.default.all(dataSchemasArray).then(function (dataSchemas) {\n\n var filteredDataSchemas = [];\n for (var _index in dataSchemas) {\n var dataSchema = dataSchemas[_index];\n filteredDataSchemas.push(dataSchema.sourcePackage.sourceCode.properties.scheme.constant);\n }\n\n // log.log('[Registry] Hyperty Schemas', filteredDataSchemas);\n // log.log('[Registry] Hyperty resources', resources);\n\n resolve({ resources: resources, dataSchema: filteredDataSchemas, name: objName });\n });\n });\n }\n\n /**\n * method that returns previously registered Hyperty or DataObjects URLS, for given characteristics\n * @param {JSON} info object or hyperty charateristics info\n * @return {addressURL} addressURL return the URL if there is any previousy registered URL, return undefined otherwise\n */\n\n }, {\n key: 'checkRegisteredURLs',\n value: function checkRegisteredURLs(info, reuseURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve) {\n\n var objectType = info.reporter ? 'registry:DataObjectURLs' : 'registry:HypertyURLs';\n\n if (typeof reuseURL === 'string') {\n objectType = reuseURL && (0, _utils.divideURL)(reuseURL).type !== 'hyperty' ? 'registry:DataObjectURLs' : 'registry:HypertyURLs';\n }\n //debugger;\n _this.storageManager.get(objectType).then(function (urlsList) {\n\n if (!urlsList) {\n urlsList = {};\n }\n\n if (typeof reuseURL === 'string') {\n log.info('[Registry - checkRegisteredURLs] - look for ' + reuseURL + ' on ', urlsList);\n\n var searchResult = (0, _keys2.default)(urlsList).map(function (key) {\n var indexOf = urlsList[key].indexOf(reuseURL);\n return urlsList[key][indexOf];\n });\n\n log.info('[Registry - checkRegisteredURLs] - found ' + searchResult.length + ' results on ', searchResult);\n if (searchResult.length === 1) {\n return resolve(searchResult);\n } else {\n return resolve(undefined);\n }\n }\n\n if (objectType === 'registry:HypertyURLs') {\n _this._getResourcesAndSchemes(info).then(function (value) {\n if (urlsList[value.resources + value.dataSchema + value.name]) {\n // log.log('[Registry] reusage of hyperty URL');\n return resolve(urlsList[value.resources + value.dataSchema + value.name]);\n } else {\n // log.log('[Registry] no hyperty URL was previously registered ');\n return resolve(undefined);\n }\n });\n } else {\n\n var characteristics = info.name + info.schema + info.resources + info.reporter;\n\n if (urlsList[characteristics]) {\n // log.log('[Registry] reusage of dataObject URL');\n if (typeof urlsList[characteristics] === 'string') {\n var arrayToResolve = [];\n arrayToResolve.push(urlsList[characteristics]);\n return resolve(arrayToResolve);\n } else {\n return resolve(urlsList[characteristics]);\n }\n } else {\n // log.log('[Registry] no dataObject URL was previously registered');\n return resolve(undefined);\n }\n }\n });\n });\n }\n\n /**\n * To register a new Hyperty in the runtime which returns the HypertyURL allocated to the new Hyperty.\n * @param {Sandbox} sandbox sandbox\n * @param {HypertyCatalogueURL} HypertyCatalogueURL descriptor\n * @param {object} IdpConstraint - constraints to be used when selecting the identity to be associated with the Hyperty including origin, idp, and idHint.\n * @return {HypertyURL} HypertyURL\n */\n\n }, {\n key: 'registerHyperty',\n value: function registerHyperty(sandbox, descriptorURL, descriptor, addressURL, IdpConstraint) {\n var _this = this;\n\n var hypertyCapabilities = void 0;\n\n return new _promise2.default(function (resolve, reject) {\n\n //assuming descriptor come in this format, the service-provider-domain url is retrieved by a split instruction\n //hyperty-catalogue:///\n var domainUrl = (0, _utils.divideURL)(descriptorURL).domain;\n\n if (domainUrl.includes('catalogue')) {\n domainUrl = domainUrl.replace('catalogue.', '');\n }\n\n _this.idModule.getIdentityAssertion(IdpConstraint).then(function (result) {\n\n var userProfile = result.userProfile;\n\n // log.log('[Registry registerHyperty] userProfile', userProfile);\n var emailURL = userProfile.userURL;\n\n if (_this._messageBus === undefined) {\n reject('[Registry registerHyperty] MessageBus is undefined');\n } else {\n //call check if the protostub exist: to be removed\n /* _this.resolve(domainUrl).then(function(a) {\n // log.log('[Registry registerHyperty] stub to domain registry- ', a);*/\n\n _this.storageManager.get('registry:HypertyURLs').then(function (urlsList) {\n\n // log.log('[Registry registerHyperty] storageManager] - ', urlsList);\n\n _this._getResourcesAndSchemes(descriptor).then(function (value) {\n\n hypertyCapabilities = value;\n\n if (!urlsList) {\n urlsList = {};\n }\n\n urlsList[hypertyCapabilities.resources + hypertyCapabilities.dataSchema + hypertyCapabilities.name] = addressURL.address;\n _this.storageManager.set('registry:HypertyURLs', 0, urlsList).then(function () {\n\n _this.registryDomain = domainUrl;\n\n //check whether the received sanbox e ApplicationSandbox or a normal sandbox\n if (sandbox.type === 'app') {\n _this.sandboxesList.appSandbox[addressURL.address[0]] = sandbox;\n } else if (sandbox.type === 'normal') {\n _this.sandboxesList.sandbox[addressURL.address[0]] = sandbox;\n } else {\n reject('Wrong SandboxType');\n }\n\n var p2pHandler = void 0;\n var p2pRequester = void 0;\n\n if ((0, _keys2.default)(_this.p2pHandlerStub).length !== 0) {\n p2pHandler = _this.p2pHandlerStub[_this.runtimeURL].url;\n p2pRequester = _runtimeUtils.runtimeUtils.runtimeDescriptor.p2pRequesterStub;\n }\n\n var runtime = _this.runtimeURL;\n var status = 'live';\n\n var hyperty = new _HypertyInstance2.default(_this.identifier, _this.registryURL, descriptorURL, descriptor, addressURL.address[0], userProfile, 'guid', _this.runtimeURL, 'ctx', p2pHandler, p2pRequester, hypertyCapabilities.dataSchema, hypertyCapabilities.resources);\n\n _this.hypertiesList.push(hyperty);\n\n //message to register the new hyperty, within the domain registry\n var messageValue = void 0;\n var message = void 0;\n var registrationExpires = _this.expiresTime;\n\n // set a different expires value if configured in the Hyperty descriptor\n\n if (descriptor.configuration && descriptor.configuration.expires) registrationExpires = descriptor.configuration.expires;\n\n if (addressURL.newAddress) {\n // log.log('[Registry registerHyperty] registering new Hyperty URL', addressURL.address[0]);\n\n messageValue = {\n user: emailURL,\n descriptor: descriptorURL,\n url: addressURL.address[0],\n expires: registrationExpires,\n resources: hypertyCapabilities.resources,\n dataSchemes: hypertyCapabilities.dataSchema,\n runtime: runtime,\n status: status\n };\n\n // set a different expires if defined in the hyperty configuration\n\n if (p2pHandler) {\n messageValue.p2pHandler = p2pHandler;\n messageValue.p2pRequester = p2pRequester;\n }\n\n // log.log('[Registry registerHyperty] registering new Hyperty at domain registry ', messageValue);\n\n message = { type: 'create', from: _this.registryURL, to: 'domain://registry.' + _this.registryDomain, body: { value: messageValue, policy: 'policy' } };\n } else {\n // log.log('[Registry registerHyperty] registering previously registered Hyperty URL', addressURL.address[0]);\n\n message = {\n type: 'update',\n to: 'domain://registry.' + _this.registryDomain,\n from: _this.registryURL,\n body: { resource: addressURL.address[0], value: { status: 'live', user: emailURL } }\n };\n\n if (p2pHandler) {\n message.body.value.p2pHandler = p2pHandler;\n message.body.value.p2pRequester = p2pRequester;\n }\n }\n\n // log.log('[Registry registerHyperty] Hyperty registration at domain registry - ', message);\n\n try {\n _this._messageBus.postMessageWithRetries(message, _this.registrationRetries, function (reply) {\n // log.log('[Registry registerHyperty] Hyperty registration response: ', reply);\n\n if (reply.body.code === 200) {\n var _result = { url: addressURL.address[0] };\n if (p2pHandler) {\n _result.p2pHandler = p2pHandler;\n _result.p2pRequester = p2pRequester;\n }\n\n resolve(_result);\n } else if (reply.body.code === 404) {\n // log.log('[Registry registerHyperty] The update was not possible. Registering new Hyperty at domain registry');\n\n messageValue = {\n user: emailURL,\n descriptor: descriptorURL,\n url: addressURL.address[0],\n expires: registrationExpires,\n resources: hypertyCapabilities.resources,\n dataSchemes: hypertyCapabilities.dataSchema,\n runtime: runtime,\n status: status\n };\n\n if (p2pHandler) {\n messageValue.p2pHandler = p2pHandler;\n messageValue.p2pRequester = p2pRequester;\n }\n\n message = { type: 'create', from: _this.registryURL, to: 'domain://registry.' + _this.registryDomain, body: { value: messageValue, policy: 'policy' } };\n\n try {\n _this._messageBus.postMessageWithRetries(message, _this.registrationRetries, function (reply) {\n // log.log('[Registry registerHyperty] Hyperty registration update response: ', reply);\n\n if (reply.body.code === 200) {\n var _result2 = { url: addressURL.address[0] };\n if (p2pHandler) {\n _result2.p2pHandler = p2pHandler;\n _result2.p2pRequester = p2pRequester;\n }\n\n resolve(_result2);\n } else {\n throw new Error('Failed to register an Hyperty: ' + reply);\n }\n });\n } catch (e) {\n log.error(e);\n reject(e);\n }\n } else {\n throw new Error('Failed to register an Hyperty: ', reply);\n }\n });\n } catch (e) {\n log.error(e);\n reject(e);\n }\n\n //timer to keep the registration alive\n // the time is defined by a little less than half of the expires time defined\n var keepAliveTimer = setInterval(function () {\n\n var message = {\n type: 'update',\n from: _this.registryURL,\n to: 'domain://registry.' + _this.registryDomain,\n body: { resource: addressURL.address[0], value: { status: 'live' }, method: 'refresh' } };\n\n _this._messageBus.postMessage(message, function (reply) {\n // log.log('[Registry registerHyperty] KeepAlive Reply: ', reply);\n });\n }, registrationExpires / 1.1 / 2 * 1000);\n }).catch(function (reason) {\n // log.log('[Registry registerHyperty] Error: ', reason);\n reject(reason);\n });\n });\n });\n }\n }, function (err) {\n reject('[Registry registerHyperty] ', err);\n });\n });\n }\n\n /**\n * To unregister a previously registered Hyperty\n * @param {HypertyURL} HypertyURL url url\n */\n\n }, {\n key: 'unregisterHyperty',\n value: function unregisterHyperty(url) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var found = false;\n var index = 0;\n\n for (index = 0; index < _this.hypertiesList.length; index++) {\n var hyperty = _this.hypertiesList[index];\n if (hyperty !== undefined) {\n if (hyperty.hypertyURL === url) {\n found = true;\n break;\n }\n }\n }\n\n if (found === false) {\n reject('Hyperty not found');\n } else {\n delete _this.hypertiesList[index];\n resolve('Hyperty successfully deleted');\n }\n });\n }\n\n /**\n * To discover protocol stubs available in the runtime for a certain domain. If available, it returns the runtime url for the protocol stub that connects to the requested domain. Required by the runtime BUS to route messages to remote servers or peers (do we need something similar for Hyperties?).\n * @param {DomainURL} DomainURL url\n * @return {RuntimeURL} RuntimeURL\n */\n\n }, {\n key: 'discoverProtostub',\n value: function discoverProtostub(url) {\n if (!url) throw new Error('Parameter url needed');\n var _this = this;\n\n var dividedURL = (0, _utils.divideURL)(url);\n var domainURL = dividedURL.domain;\n\n if (_this.protostubsList.hasOwnProperty(domainURL) && _this.protostubsList[domainURL].status === STATUS.LIVE) {\n return _this.protostubsList[domainURL];\n } else {\n\n _this.protostubsList[domainURL] = {\n status: STATUS.DEPLOYING\n };\n\n throw new Error('[Registry - discoverProtoStub ] Message Node Protostub Not Found. Creating one');\n }\n }\n\n /**\n * To discover protocol stubs available in the runtime for a certain remote runtime URL. If available, it returns the runtime url for the protocol stub that connects to the requested domain.\n * Required by the runtime BUS to route messages to remote servers or peers (do we need something similar for Hyperties?).\n * @param {RuntimeURL} RuntimeURL url\n * @return {p2pRequester} RuntimeURL\n */\n\n }, {\n key: 'discoverP2PStub',\n value: function discoverP2PStub(runtimeURL) {\n var _this = this;\n\n if (runtimeURL) {\n\n if (_this.p2pRequesterStub.hasOwnProperty(runtimeURL) && _this.p2pRequesterStub[runtimeURL].status === STATUS.LIVE) {\n return _this.p2pRequesterStub[runtimeURL];\n } else {\n _this.p2pRequesterStub[runtimeURL] = {\n status: STATUS.CREATED\n };\n\n throw new Error('[Registry - discoverP2PStub ] P2P Requester Stub Not Found. Creating one');\n }\n } else {\n\n if (_this.p2pHandlerStub.hasOwnProperty(_this.runtimeURL)) {\n return _this.p2pHandlerStub[_this.runtimeURL];\n } else {\n _this.p2pHandlerStub[_this.runtimeURL] = {\n status: STATUS.CREATED\n };\n\n throw new Error('[Registry - discoverP2PStub ] P2P Handler Stub Not Found.');\n }\n }\n }\n\n /**\n * To register a new Protocol Stub in the runtime including as input parameters the function to postMessage, the DomainURL that is connected with the stub, which returns the RuntimeURL allocated to the new ProtocolStub.\n * @param {Sandbox} Sandbox\n * @param {stubID} Domain or hyperty runtime to register the stub\n * @param {descriptorURL} Catalogue URL of the Protostub descriptor\n * @param {descriptor} Protostub descriptor\n * @return {RuntimeProtoStubURL}\n */\n\n }, {\n key: 'registerStub',\n value: function registerStub(sandbox, stubID, p2pConfig, descriptorURL, descriptor) {\n var _this = this;\n\n var _stubDescriptor = descriptor;\n\n return new _promise2.default(function (resolve, reject) {\n\n var runtimeProtoStubURL = void 0;\n\n //check if messageBus is registered in registry or not\n if (_this._messageBus === undefined) {\n reject('MessageBus not found on registerStub');\n }\n\n log.info('[Registry - registerStub] - stubID ', stubID);\n\n /* if (!stubID.indexOf('msg-node.')) {\n stubID = stubID.substring(stubID.indexOf('.') + 1);\n }*/\n\n var P2PRequesterStub = void 0;\n\n if (p2pConfig) {\n\n if (p2pConfig.hasOwnProperty('isHandlerStub') && p2pConfig.isHandlerStub) {\n runtimeProtoStubURL = _this.p2pHandlerURL;\n\n _this.p2pHandlerStub[stubID] = {\n url: runtimeProtoStubURL,\n status: STATUS.CREATED\n };\n\n _this.p2pHandlerAssociation[_this.runtimeURL] = [];\n\n _this.sandboxesList.sandbox[runtimeProtoStubURL] = sandbox;\n log.info('[Registry - registerStub - P2PHandlerStub] - ', stubID, ' - ', runtimeProtoStubURL);\n resolve(_this.p2pHandlerStub[stubID]);\n } else {\n P2PRequesterStub = p2pConfig.p2pRequesterStub;\n runtimeProtoStubURL = 'runtime://' + (0, _utils.divideURL)(p2pConfig.remoteRuntimeURL).domain + '/p2prequester/' + (0, _utils.generateGUID)();\n log.info('[Registry - registerStub - P2PRequesterStub] - ', P2PRequesterStub, ' - ', runtimeProtoStubURL);\n\n // to be clarified what is this p2pHandlerAssociation\n _this.p2pHandlerAssociation[_this.runtimeURL].push(runtimeProtoStubURL);\n _this.p2pRequesterStub[stubID] = {\n url: runtimeProtoStubURL,\n status: STATUS.CREATED\n };\n\n _this.sandboxesList.sandbox[runtimeProtoStubURL] = sandbox;\n\n //Setup P2P Requester path into MN\n\n var msg = {\n type: 'subscribe',\n from: _this.registryURL,\n to: 'domain://msg-node.' + _this._domain + '/sm',\n body: {\n subscribe: [runtimeProtoStubURL],\n source: _this.registryURL\n }\n };\n\n _this._messageBus.postMessage(msg, function (reply) {\n // log.log('[Registry - register Stub] p2pRequester path setup: ', reply);\n });\n\n resolve(_this.p2pRequesterStub[stubID]);\n }\n } else {\n console.log('[Registry - registerStub - Normal Stub] descriptor', descriptor);\n\n if (!(typeof descriptor === 'undefined' ? 'undefined' : (0, _typeof3.default)(descriptor)) === 'string' && descriptor.hasOwnProperty('_interworking') && descriptor._interworking) {\n runtimeProtoStubURL = 'runtime://' + stubID + '/protostub/' + 'scheme1';\n } else {\n runtimeProtoStubURL = 'runtime://' + stubID + '/protostub/' + (0, _utils.generateGUID)();\n }\n\n log.info('[Registry - registerStub - Normal Stub] - ', stubID);\n\n // TODO: Optimize this\n _this.protostubsList[stubID] = {\n url: runtimeProtoStubURL,\n status: STATUS.DEPLOYING\n };\n\n if (descriptorURL) {\n _this.protostubsList[stubID].descriptorURL = descriptorURL;\n }\n\n if (_stubDescriptor && _stubDescriptor.interworking) {\n _this.protostubsList[stubID].interworking = _stubDescriptor.interworking;\n }\n\n _this.sandboxesList.sandbox[runtimeProtoStubURL] = sandbox;\n\n resolve(_this.protostubsList[stubID]);\n }\n\n // resolve(runtimeProtoStubURL);\n\n _this._messageBus.addListener(runtimeProtoStubURL + '/status', function (msg) {\n _this._onProtostubStatusEvent(msg);\n });\n });\n }\n\n /**\n * To Process status events fired by protostubs\n * @param {Message} message Event Message\n */\n\n }, {\n key: '_onProtostubStatusEvent',\n value: function _onProtostubStatusEvent(msg) {\n\n var _this = this;\n\n // log.log('[Registry onProtostubStatusEvent]: ', msg);\n\n var runtimeProtoStubURL = msg.from;\n\n if (!msg.to.includes('/status')) {\n log.error('[Registry onProtostubStatusEvent] Not Status Event: ', msg);\n return;\n }\n\n // process status events from message node protostubs\n\n if (runtimeProtoStubURL.includes('/protostub/')) {\n\n // TODO: uncomment below when protostubs are updated with new status value \"live\"\n (0, _keys2.default)(_this.protostubsList).filter(function (key) {\n return _this.protostubsList[key].url === runtimeProtoStubURL;\n }).map(function (key) {\n _this.protostubsList[key].status = msg.body.value;\n\n // log.log('[Registry - onProtostubStatusEvent] - Protostub status: ', _this.protostubsList[key]);\n });\n } else {\n // process status events from p2p connections\n\n if (msg.body.resource) {\n var remoteRuntimeURL = msg.body.resource;\n\n if (_this.p2pConnectionList[remoteRuntimeURL]) {\n _this.p2pConnectionList[remoteRuntimeURL].status = msg.body.value;\n _this.p2pConnectionList[remoteRuntimeURL].url = runtimeProtoStubURL;\n } else {\n\n var p2pConnection = {\n status: msg.body.value,\n url: runtimeProtoStubURL\n };\n\n _this.p2pConnectionList[remoteRuntimeURL] = p2pConnection;\n }\n\n // log.log('[Registry - onProtostubStatusEvent] - P2PConnection status: ', _this.p2pConnectionList[remoteRuntimeURL]);\n\n // Update P2P Requester protostub if it is coming from there\n if (runtimeProtoStubURL.includes('/p2prequester/')) {\n _this.p2pRequesterStub[remoteRuntimeURL].status = msg.body.value;\n\n // log.log('[Registry - onProtostubStatusEvent] - P2P Requester status: ', _this.p2pRequesterStub[remoteRuntimeURL]);\n } else {\n // if from P2PHandler with status disconencted, lets remove from p2pConnectionList\n if (msg.body.value === 'disconnected') delete _this.p2pConnectionList[remoteRuntimeURL];\n }\n } else {\n if (runtimeProtoStubURL.includes('/p2prequester/')) {\n // It is an event from P2P Requester without mandatory \"resource\" field\n log.error('[Registry onProtostubStatusEvent] resource missing: ', msg);\n return;\n } else {\n // It is an event from P2P Handler\n _this.p2pHandlerStub[_this.runtimeURL].status = msg.body.value;\n\n // log.log('[Registry - onProtostubStatusEvent] - P2PHandler Stub status: ', _this.p2pHandlerStub[_this.runtimeURL]);\n }\n }\n }\n }\n\n /**\n * To unregister a previously registered protocol stub\n * @param {HypertyRuntimeURL} HypertyRuntimeURL hypertyRuntimeURL\n */\n\n }, {\n key: 'unregisterStub',\n value: function unregisterStub(hypertyRuntimeURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n if (_this.protostubsList.hasOwnProperty(hypertyRuntimeURL)) {\n delete _this.protostubsList[hypertyRuntimeURL];\n resolve('ProtostubURL removed');\n } else {\n reject('Error on unregisterStub: Hyperty not found');\n }\n });\n }\n\n /**\n * To register a new Identity Provider proxy in the runtime including as input parameters the function to postMessage, the DomainURL that is connected with the stub, which returns the RuntimeURL allocated to the new ProtocolStub.\n * @param {Sandbox} Sandbox\n * @param {DomainURL} DomainURL service provider domain\n * @return {RuntimeIdpProxyURL}\n */\n\n }, {\n key: 'registerIdpProxy',\n value: function registerIdpProxy(sandbox, domainURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var idpProxyStubURL = void 0;\n\n //check if messageBus is registered in registry or not\n if (_this._messageBus === undefined) {\n reject('MessageBus not found on registerStub');\n }\n\n idpProxyStubURL = 'domain-idp://' + domainURL + '/stub/' + (0, _utils.generateGUID)();\n\n // TODO: Optimize this\n _this.idpProxyList[domainURL] = {\n url: idpProxyStubURL,\n status: STATUS.DEPLOYING\n };\n\n _this.sandboxesList.sandbox[idpProxyStubURL] = sandbox;\n\n // sandbox.addListener('*', function(msg) {\n // _this._messageBus.postMessage(msg);\n // });\n\n resolve(idpProxyStubURL);\n\n _this._messageBus.addListener(idpProxyStubURL + '/status', function (msg) {\n _this._onIdpProxyStatusEvent(msg);\n });\n });\n }\n\n /**\n * To Process status events fired by Idp Proxies\n * @param {Message} message Event Message\n */\n\n }, {\n key: '_onIdpProxyStatusEvent',\n value: function _onIdpProxyStatusEvent(msg) {\n\n var _this = this;\n\n // log.log('[Registry onIdpProxyStatusEvent]: ', msg);\n\n var idpProxyURL = msg.from;\n\n if (!msg.to.includes('/status')) {\n log.error('[Registry onIdpProxyStatusEvent] Not Status Event: ', msg);\n return;\n }\n\n (0, _keys2.default)(_this.idpProxyList).filter(function (key) {\n return _this.idpProxyList[key].url === idpProxyURL;\n }).map(function (key) {\n _this.idpProxyList[key].status = msg.body.value;\n\n // log.log('[Registry - onIdpProxyStatusEvent] - Idp Proxy status: ', _this.idpProxyList[key]);\n });\n }\n\n /**\n * To discover idpProxy stubs available in the runtime for a certain domain. If available, it returns the runtime url for the idpProxy stub that connects to the requested domain. Required by the runtime BUS to route messages to remote servers or peers\n * @param {DomainURL} DomainURL url\n * @return {RuntimeURL} RuntimeURL idpProxyUrl\n */\n\n }, {\n key: 'discoverIdpProxy',\n value: function discoverIdpProxy(url) {\n if (!url) throw new Error('Parameter url needed');\n var _this = this;\n\n var dividedURL = (0, _utils.divideURL)(url);\n var domainURL = dividedURL.domain;\n\n if (_this.idpProxyList.hasOwnProperty(domainURL) && _this.idpProxyList[domainURL].status === STATUS.LIVE) {\n return _this.idpProxyList[domainURL];\n } else {\n\n _this.idpProxyList[domainURL] = {\n status: STATUS.PROGRESS\n };\n\n throw new Error('[Registry - discoverIdpProxy ] Idp Proxy Not Found. Creating one');\n }\n }\n\n /**\n * To register a new Policy Enforcer in the runtime including as input parameters the function to postMessage, the HypertyURL associated with the PEP, which returns the RuntimeURL allocated to the new Policy Enforcer component.\n * @param {Message.Message} postMessage postMessage\n * @param {HypertyURL} HypertyURL hyperty\n * @return {HypertyRuntimeURL} HypertyRuntimeURL\n */\n\n }, {\n key: 'registerPEP',\n value: function registerPEP(postMessage, hyperty) {\n var _this = this;\n\n return new _promise2.default(function (resolve) {\n //TODO check what parameter in the postMessage the pep is.\n _this.pepList[hyperty] = postMessage;\n resolve('PEP registered with success');\n });\n }\n\n /**\n * To unregister a previously registered protocol stub\n * @param {HypertyRuntimeURL} HypertyRuntimeURL HypertyRuntimeURL\n */\n\n }, {\n key: 'unregisterPEP',\n value: function unregisterPEP(HypertyRuntimeURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var result = _this.pepList[HypertyRuntimeURL];\n\n if (result === undefined) {\n reject('Pep Not found.');\n } else {\n resolve('PEP successfully removed.');\n }\n });\n }\n\n /**\n * To discover sandboxes available in the runtime for a certain domain and a certain set of capabilities. Required by the runtime UA to avoid more than one sandbox for the same domain.\n * @param {DomainURL} DomainURL url\n * @return {RuntimeSandbox} RuntimeSandbox\n */\n\n }, {\n key: 'getSandbox',\n value: function getSandbox(url, constraints) {\n if (!url) throw new Error('Parameter url needed');\n\n // log.log('[Registry getSandbox] getSandbox for: ', url, ' and capabilities: ', constraints);\n\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n\n var request = void 0;\n\n //first try to find the url in the appSandbox list\n request = _this.sandboxesList.appSandbox[url];\n\n //if no appSandbox was found, try to search in the normal sandboxes list\n if (!request) {\n request = _this.sandboxesList.sandbox[url];\n\n if (!request) {\n\n var domain = void 0;\n\n if (url.includes('://')) {\n domain = (0, _utils.divideURL)(url).domain;\n } else {\n domain = url;\n }\n\n // search in the sandboxes list for a entry containing the domain given\n for (var sandbox in _this.sandboxesList.sandbox) {\n //todo: uncomment sandbox constraints match condition with runtime sharing\n if (sandbox.includes(domain) && _this.sandboxesList.sandbox[sandbox].matches(constraints)) {\n var _ret = function () {\n var current = _this.sandboxesList.sandbox[sandbox];\n var match = (0, _keys2.default)(constraints).filter(function (constraint) {\n return constraint === 'browser' && current.type === _Sandbox.SandboxType.NORMAL || constraint === 'windowSanbox' && current.type === _Sandbox.SandboxType.WINDOW;\n }).length > 0 ? true : false;\n\n if (match) {\n request = current;\n }\n return 'break';\n }();\n\n if (_ret === 'break') break;\n }\n }\n }\n }\n\n if (!request) {\n reject('no sandbox found for: ' + url);\n } else {\n resolve(request);\n }\n });\n }\n }, {\n key: 'resolveNormalStub',\n value: function resolveNormalStub(url) {\n // log.log('resolveNormalStub ' + url);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n //split the url to find the domainURL. deals with the url for example as:\n //\"hyperty-runtime://sp1/protostub/123\",\n var dividedURL = (0, _utils.divideURL)(url);\n var domainUrl = dividedURL.domain;\n var type = dividedURL.type;\n\n if (url.includes(_this.runtimeURL)) {\n log.error('[Registry - resolve] URL to be resolved should have listeners ', url);\n reject('[Registry - resolve] URL to be resolved should have listeners ', url);\n }\n\n // resolve the domain protostub in case of a message to global registry\n if (url.includes('global://registry')) {\n domainUrl = _this._domain;\n } else {\n if (!domainUrl.indexOf('msg-node.') || !domainUrl.indexOf('registry.')) {\n domainUrl = domainUrl.substring(domainUrl.indexOf('.') + 1);\n }\n }\n\n _this.isLegacy(url).then(function (isLegacy) {\n\n // if legacy it should resolve for .\n if (isLegacy && type !== 'domain-idp') {\n domainUrl = type + '.' + (0, _utils.getUserIdentityDomain)(url);\n }\n\n log.info('[Registry.resolve] domainUrl:', domainUrl);\n\n var registredComponent = void 0;\n\n if (type === 'domain-idp') {\n registredComponent = _this.idpProxyList.hasOwnProperty(domainUrl) ? _this.idpProxyList[domainUrl] : false;\n } else {\n registredComponent = _this.protostubsList.hasOwnProperty(domainUrl) ? _this.protostubsList[domainUrl] : false;\n }\n\n log.info('[Registry.resolve] registred:', registredComponent);\n\n // TODO since the protostubs have other states this should be revised, because the status could change from DEPLOYED to LIVE\n // TODO and this validation will trigger a new load of IDPProxy or Protostub;\n if (registredComponent && registredComponent.hasOwnProperty('status') && (registredComponent.status === STATUS.DEPLOYED || registredComponent.status === STATUS.CREATED || registredComponent.status === STATUS.LIVE || registredComponent.status === STATUS.DISCONNECTED)) {\n log.info('[Registry.resolve] Resolved: ', registredComponent.url, registredComponent.status);\n resolve(registredComponent.url);\n } else {\n //todo: use switch-case to support other types of stubs\n if (type === 'domain-idp') {\n\n // The IdP Proxy does not exist, let's prepare its deployment by watching its status\n\n _this.watchingYou.observe('idpProxyList', function (change) {\n\n // log.log('[Registry - resolveNormalStub] idpProxyList changed ' + _this.idpProxyList);\n\n var keypath = change.keypath;\n\n if (keypath.includes('status')) keypath = keypath.replace('.status', '');\n\n if (keypath === domainUrl && change.name === 'status' && change.newValue === STATUS.CREATED) {\n // log.log('[Registry - resolveNormalStub] idpProxyList is live ' + _this.idpProxyList[domainUrl]);\n resolve(_this.idpProxyList[domainUrl].url);\n }\n });\n\n if (!registredComponent) {\n // this process will load the idp proxy, because is not yet registered;\n log.info('[Registry.resolveNormalStub] deploy new IDPProxy: ', domainUrl);\n _this.loader.loadIdpProxy(domainUrl).then(function () {\n\n log.info('[Registry.resolveNormalStub] IdP Proxy deployed: ', _this.idpProxyList[domainUrl]);\n }).catch(function (reason) {\n log.error('[Registry.resolve] Error resolving Load IDPProxy: ', reason);\n _this.idpProxyList[domainUrl].status = 'deployment-failed';\n reject(reason);\n });\n }\n } else {\n\n // The protoStub does not exist, let's prepare its deployment by watching its status\n\n _this.watchingYou.observe('protostubsList', function (change) {\n\n // log.log('[Registry - resolveNormalStub] protostubsList changed ' + _this.protostubsList);\n\n var keypath = change.keypath;\n\n if (keypath.includes('status')) keypath = keypath.replace('.status', '');\n\n if (keypath === domainUrl && change.name === 'status' && change.newValue === STATUS.CREATED) {\n // log.log('[Registry - resolve] protostub is live ' + _this.protostubsList[domainUrl]);\n resolve(_this.protostubsList[domainUrl].url);\n }\n });\n\n if (!registredComponent) {\n // lets deploy the protostub\n log.info('[Registry.resolve] trigger new ProtocolStub: ', domainUrl);\n _this.loader.loadStub(domainUrl).then(function () {\n\n // log.log('[Registry - resolveNormalStub] Stub deployed: ', _this.protostubsList[domainUrl]);\n }).catch(function (reason) {\n log.error('[Registry.resolveNormalStub] Error resolving Load ProtocolStub: ', reason);\n reject(reason);\n });\n }\n }\n }\n }).catch(function (reason) {\n log.error('[Registry.resolve] Error resolving islegacy: ', reason);\n reject(reason);\n });\n });\n }\n\n /**\n * To verify if source is valid and to resolve target runtime url address if needed (eg protostub runtime url in case the message is to be dispatched to a remote endpoint).\n * @param {URL.URL} url url\n * @return {Promise} Promise \n */\n\n }, {\n key: 'resolve',\n value: function resolve(msg) {\n log.info('[Registry - Resolve] - ', msg);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var url = msg.to ? msg.to : msg;\n\n var p2p = msg.body && msg.body.p2p ? msg.body.p2p : false;\n\n // log.log('P2P: ', p2p, url);\n // log.log('P2P - p2pHandlerStub: ', !_this.p2pHandlerStub[_this.runtimeURL], _this.p2pHandlerStub, _this.runtimeURL);\n // log.log('P2P - isBackendServiceURL: ', isBackendServiceURL(url), isBackendServiceURL, url);\n // log.log('P2P - includes runtimeURL: ', url.includes(_this.runtimeURL));\n // log.log('P2P - includes p2phandler: ', url.includes('/p2phandler/'));\n // log.log('P2P - includes p2prequester: ', url.includes('/p2prequester/'));\n\n // Skip p2p procedure when not supported by the Runtime or for backend services\n\n if (!_this.p2pHandlerStub[_this.runtimeURL] || (0, _utils.isBackendServiceURL)(url) || url.includes(_this.runtimeURL) || url.includes('/p2phandler/') || url.includes('/p2prequester/')) {\n\n log.info('[Registry - resolve] - Resolve normal stub: ', _this.p2pHandlerStub, _this.runtimeURL, (0, _utils.isBackendServiceURL)(url), p2p, url);\n _this.resolveNormalStub(url).then(function (returnURL) {\n resolve(returnURL);\n });\n } else {\n\n log.info('[Registry - resolve] - checkP2P: ', p2p, url, _this._p2pConnectionResolve);\n _this._p2pConnectionResolve.checkP2P(msg).then(function (registeredP2P) {\n\n // log.log('[Registry - resolve] found registered P2P: ', registeredP2P);\n\n var p2pConnection = _this.p2pConnectionList[registeredP2P.runtime];\n\n if (!p2pConnection) {\n p2pConnection = registeredP2P;\n _this.p2pConnectionList[registeredP2P.runtime] = p2pConnection;\n }\n\n switch (p2pConnection.status) {\n case STATUS.LIVE:\n msg.body.peer = registeredP2P.runtime;\n resolve(p2pConnection.url, msg);\n break;\n case STATUS.CREATED: // p2p connection setup is ongoing, use MN Stub\n case STATUS.PROGRESS:\n _this.resolveNormalStub(url).then(function (returnURL) {\n resolve(returnURL);\n });\n break;\n case STATUS.DISCONNECTED:\n // p2p connection stub was disconnected, let's ask to connect again\n log.info('[Registry - Resolve] - p2pConnection is disconnected lets try to reconnect');\n _this._p2pConnectionResolve.reconnectP2PRequester(p2pConnection).then(function (returnURL) {\n // log.log('[Registry - Resolve] - was reconnected with p2pRequesterStubt: ', returnURL);\n resolve(returnURL);\n }, function (reason) {\n log.info('[Registry - Resolve] - Reason: ', reason);\n\n _this.resolveNormalStub(url).then(function (returnURL) {\n resolve(returnURL);\n });\n });\n break;\n default:\n\n log.info('[Registry - resolve] - P2P: ', p2p);\n if (!p2p) {\n // no p2p connection exists and the message sender does not ask one. Lets use the MN Stub\n _this.resolveNormalStub(url).then(function (returnURL) {\n resolve(returnURL);\n });\n } else {\n _this._setupP2PRequester(registeredP2P).then(function (returnURL) {\n // no p2p connection exists but the message sender is asking one. Lets try to setup one\n resolve(returnURL);\n }, function (reason) {\n log.info('[Registry - Resolve] - Reason: ', reason);\n\n _this.resolveNormalStub(url).then(function (returnURL) {\n resolve(returnURL);\n });\n });\n }\n break;\n }\n }, function (reason) {\n log.info('[Registry - Resolve] - Reason: ', reason);\n\n _this.resolveNormalStub(url).then(function (returnURL) {\n resolve(returnURL);\n });\n });\n }\n });\n }\n }, {\n key: '_setupP2PRequester',\n value: function _setupP2PRequester(input) {\n var _this = this;\n\n log.log('[Registry._setupP2PConnection] loadStub with p2pRequester: ', input);\n\n return new _promise2.default(function (resolve, reject) {\n\n var remoteRuntime = input.runtime;\n\n var p2pConfig = { remoteRuntimeURL: remoteRuntime, p2pHandler: input.p2pHandler, p2pRequesterStub: true };\n\n // lets prepare the p2pRequesterSTub deployment by setting an observer to its status changes\n\n _this.watchingYou.observe('p2pRequesterStub', function (change) {\n\n log.log('[Registry._setupP2PConnection] p2pRequesterStubs changed ' + _this.p2pRequesterStub);\n\n if (change.keypath.split('.')[0] === remoteRuntime && change.name === 'status' && change.newValue === STATUS.LIVE) {\n log.log('[Registry._setupP2PConnection] p2pRequester is live ' + _this.p2pRequesterStub[remoteRuntime]);\n resolve(_this.p2pRequesterStub[remoteRuntime].url);\n }\n });\n\n // stub load\n _this.loader.loadStub(input.p2pRequester, p2pConfig).then(function () {\n\n log.log('[Registry._setupP2PConnection] p2pRequester deployed: ', _this.p2pRequesterStub[remoteRuntime]);\n }).catch(function (error) {\n reject(error);\n });\n });\n }\n\n /**\n * To verify if url is for a legacy service.\n * @param {URL.URL} url url\n * @return {boolean}\n */\n\n }, {\n key: 'isLegacy',\n value: function isLegacy(url) {\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n if (url === _this._domain) {\n return resolve(false);\n }\n\n log.log('[Registry] [Registry.Registry.isLegacy] ', url);\n\n // TODO: to be defined in the runtime configuration\n var nonLegacy = ['hyperty-runtime', 'domain', 'global', 'hyperty'];\n\n var urlDivided = (0, _utils.divideURL)(url);\n\n if (nonLegacy.indexOf(urlDivided.type) !== -1 || urlDivided.domain === _this._domain) {\n return resolve(false);\n }\n\n // process User URLs\n if (url.split('@').length > 1) {\n var domain = urlDivided.domain;\n\n // log.log('[Registry] [Registry.Registry.isLegacy] domain: ', domain);\n if (_this.idpLegacyProxyList.hasOwnProperty(domain)) {\n\n var result = _this.idpLegacyProxyList[domain];\n\n if (result.interworking) {\n return resolve(result.interworking);\n } else {\n return resolve(false);\n }\n }\n\n _this._loader.descriptors.getIdpProxyDescriptor(domain).then(function (result) {\n\n // log.log('[Registry] [Registry.Registry.isLegacy] Legacy stub descriptor: ', result);\n\n if (result.interworking) {\n _this.idpLegacyProxyList[domain] = result;\n resolve(result.interworking);\n } else {\n resolve(false);\n }\n }).catch(function (reason) {\n log.warn('problem loading idp proxy descriptor for domain:', domain, ' because ', reason);\n reject(reason);\n });\n } else {\n // process protostub URLs\n resolve(_this.isInterworkingProtoStub(url));\n }\n });\n }\n\n /**\n * To verify if URL is locally registered or not.\n * @param {URL.URL} url url\n * @return {boolean}\n */\n\n }, {\n key: 'isLocal',\n value: function isLocal(url) {\n\n var runtimeScheme = ['hyperty-runtime', 'runtime'];\n var hypertyScheme = ['hyperty'];\n var urlScheme = url.split('://')[0];\n\n // Process Runtime Core URLs.\n // Messages originated from protostubs should also not include the runtimeURL in its URL.\n\n if (runtimeScheme.indexOf(urlScheme) !== -1) {\n return url.includes(this.runtimeURL);\n }\n\n // Process Hyperty URLs\n // Todo: hypertiesList should be an object not an array\n\n if (hypertyScheme.indexOf(urlScheme) !== -1) {\n\n for (var index in this.hypertiesList) {\n var hyperty = this.hypertiesList[index];\n if (hyperty.hypertyURL === url) {\n return true;\n }\n }\n\n return false;\n }\n\n // Process Data Object URLs\n\n if (url.includes('/subscription')) {\n url = url.substring(0, url.indexOf('/subscription'));\n }\n\n var dataObject = this.dataObjectList[url];\n\n if (dataObject) {\n if (dataObject.interworking) {\n return !dataObject.interworking;\n }\n return true;\n }\n\n return false;\n }\n\n /**\n * To verify if protostub is to interwork with a legacy domain.\n * @param {URL.URL} runtimeProtostubURL The runtime URL of the Protostub\n * @return {boolean}\n */\n\n }, {\n key: 'isInterworkingProtoStub',\n value: function isInterworkingProtoStub(runtimeProtostubURL) {\n\n var _this = this;\n\n if (typeof runtimeProtostubURL === 'boolean') {\n return false;\n }\n\n if (!runtimeProtostubURL.includes('/protostub/')) {\n return false;\n }\n\n var filtered = (0, _keys2.default)(_this.protostubsList).filter(function (key) {\n return _this.protostubsList[key].url === runtimeProtostubURL;\n }).map(function (key) {\n\n if (_this.protostubsList[key].hasOwnProperty('interworking')) {\n return _this.protostubsList[key].interworking;\n } else {\n return false;\n }\n })[0];\n\n return filtered;\n }\n }, {\n key: 'loader',\n set: function set(loader) {\n var _this = this;\n _this._loader = loader;\n },\n get: function get() {\n var _this = this;\n return _this._loader;\n }\n\n /**\n * return the messageBus in this Registry\n * @param {MessageBus} messageBus\n */\n\n }, {\n key: 'messageBus',\n get: function get() {\n var _this = this;\n return _this._messageBus;\n }\n\n /**\n * Set the messageBus in this Registry\n * @param {MessageBus} messageBus\n */\n ,\n set: function set(messageBus) {\n var _this = this;\n _this._messageBus = messageBus;\n\n _this._messageBus.addListener(_this.registryURL, function (msg) {\n\n // log.log('[Registry listener] ', msg);\n\n var isHyperty = (0, _utils.isHypertyURL)(msg.from);\n var hasCriteria = msg.body.hasOwnProperty('criteria');\n var isURLResource = void 0;\n var isUserResource = void 0;\n var isHypertyResource = void 0;\n\n if (msg.body.hasOwnProperty('resource') && msg.body.resource !== '.') {\n isURLResource = (0, _utils.isURL)(msg.body.resource);\n isUserResource = (0, _utils.isUserURL)(msg.body.resource);\n isHypertyResource = (0, _utils.isHypertyURL)(msg.body.resource);\n }\n var isDelete = msg.type === 'delete';\n var hasName = void 0;\n var hasUser = void 0;\n\n if (msg.body.hasOwnProperty('value')) {\n hasName = msg.body.value.hasOwnProperty('name');\n hasUser = msg.body.value.hasOwnProperty('user');\n }\n\n if (msg.type === 'response') {\n log.error('[Register listener] skipping ', msg);\n return;\n }\n\n // msg sent by identity manager library\n var userUrl = _this._getIdentityAssociated(msg.body.resource, msg.body.criteria);\n\n var reply = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: { resource: userUrl } };\n reply.body.code = userUrl ? 200 : 404;\n\n _this._messageBus.postMessage(reply);\n });\n\n // Install AddressAllocation\n var addressAllocation = _AddressAllocation2.default.instance;\n _this.addressAllocation = addressAllocation;\n\n // log.log('[Registry - AddressAllocation] - ', addressAllocation);\n }\n }]);\n return Registry;\n}();\n\nexports.default = Registry;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9yZWdpc3RyeS9SZWdpc3RyeS5qcz82MTZlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cblxuLy8gTG9nIFN5c3RlbVxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdSZWdpc3RyeScpO1xuXG5pbXBvcnQgeyBydW50aW1lVXRpbHMgfSBmcm9tICcuLi9ydW50aW1lL3J1bnRpbWVVdGlscyc7XG5pbXBvcnQgeyBTYW5kYm94VHlwZX0gZnJvbSAnLi4vc2FuZGJveC9TYW5kYm94JztcblxuaW1wb3J0IEFkZHJlc3NBbGxvY2F0aW9uIGZyb20gJy4uL2FsbG9jYXRpb24vQWRkcmVzc0FsbG9jYXRpb24nO1xuaW1wb3J0IEh5cGVydHlJbnN0YW5jZSBmcm9tICcuL0h5cGVydHlJbnN0YW5jZSc7XG5pbXBvcnQgUDJQQ29ubmVjdGlvblJlc29sdmUgZnJvbSAnLi9QMlBDb25uZWN0aW9uUmVzb2x2ZSc7XG5cbmltcG9ydCB7IGRpdmlkZVVSTCwgaXNIeXBlcnR5VVJMLCBpc1VSTCwgaXNVc2VyVVJMLCBnZW5lcmF0ZUdVSUQsIGdldFVzZXJJZGVudGl0eURvbWFpbiwgaXNCYWNrZW5kU2VydmljZVVSTCwgZGVlcENsb25lLCByZW1vdmVQYXRoRnJvbVVSTCB9IGZyb20gJy4uL3V0aWxzL3V0aWxzLmpzJztcblxuaW1wb3J0ICdwcm94eS1vYnNlcnZlJztcbmltcG9ydCB7IFdhdGNoaW5nWW91IH0gZnJvbSAnc2VydmljZS1mcmFtZXdvcmsvZGlzdC9VdGlscyc7XG5cbi8vIGltcG9ydCBEaXNjb3ZlcnlTZXJ2aWNlRnJhbWV3b3JrIGZyb20gJy4vRGlzY292ZXJ5U2VydmljZUZyYW1ld29yayc7XG5cbmNvbnN0IFNUQVRVUyA9IHsgQ1JFQVRFRDogJ2NyZWF0ZWQnLCBMSVZFOiAnbGl2ZScsIERFUExPWUlORzogJ2RlcGxveWluZycsIERFUExPWUVEOiAnZGVwbG95ZWQnLCBQUk9HUkVTUzogJ2luLXByb2dyZXNzJywgRElTQ09OTkVDVEVEOiAnZGlzY29ubmVjdGVkJywgRkFJTEVEOiAnZGVwbG95bWVudC1mYWlsZWQnLCBERUFEOiAnZGVhZCcgfTtcblxuLyppbXBvcnQgSWRlbnRpdHlNYW5hZ2VyIGZyb20gJy4vSWRlbnRpdHlNYW5hZ2VyJztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi9EaXNjb3ZlcnknOyovXG5cbi8qKlxuKiBSdW50aW1lIFJlZ2lzdHJ5IEludGVyZmFjZVxuKi9cbmNsYXNzIFJlZ2lzdHJ5IHtcblxuICAvKipcbiAgKiBUbyBpbml0aWFsaXNlIHRoZSBSdW50aW1lIFJlZ2lzdHJ5IHdpdGggdGhlIFJ1bnRpbWVVUkwgdGhhdCB3aWxsIGJlIHRoZSBiYXNpcyB0byBkZXJpdmUgdGhlIGludGVybmFsIHJ1bnRpbWUgYWRkcmVzc2VzIHdoZW4gYWxsb2NhdGluZyBhZGRyZXNzZXMgdG8gaW50ZXJuYWwgcnVudGltZSBjb21wb25lbnQuIEluIGFkZGl0aW9uLCB0aGUgUmVnaXN0cnkgZG9tYWluIGJhY2stZW5kIHRvIGJlIHVzZWQgdG8gcmVtb3RlbHkgcmVnaXN0ZXIgUnVudGltZSBjb21wb25lbnRzLCBpcyBhbHNvIHBhc3NlZCBhcyBpbnB1dCBwYXJhbWV0ZXIuXG4gICogQHBhcmFtICB7TWVzc2FnZUJ1c30gICAgICAgICAgbXNnYnVzICAgICAgICAgICAgICAgIG1zZ2J1c1xuICAqIEBwYXJhbSAge0h5cGVydHlSdW50aW1lVVJMfSAgIHJ1bnRpbWVVUkwgICAgICAgICAgICBydW50aW1lVVJMXG4gICogQHBhcmFtICB7QXBwU2FuZGJveH0gICAgICAgICAgYXBwU2FuZGJveCAgICAgICAgICAgIGFwcFNhbmRib3hcbiAgKiBAcGFyYW0gIHtydW50aW1lQ2F0YWxvZ3VlfSAgICBydW50aW1lQ2F0YWxvZ3VlICAgICAgcnVudGltZUNhdGFsb2d1ZVxuICAqIEBwYXJhbSAge0RvbWFpblVSTH0gICAgICAgICAgIHJlbW90ZVJlZ2lzdHJ5ICAgICAgICByZW1vdGVSZWdpc3RyeVxuICAqIEBwYXJhbSAge3N0b3JhZ2VNYW5hZ2VyfSAgICAgIHN0b3JhZ2VNYW5hZ2VyXG4gICovXG4gIGNvbnN0cnVjdG9yKHJ1bnRpbWVVUkwsIGFwcFNhbmRib3gsIGlkZW50aXR5TW9kdWxlLCBydW50aW1lQ2F0YWxvZ3VlLCBydW50aW1lQ2FwYWJpbGl0aWVzLCBzdG9yYWdlTWFuYWdlciwgcDJwSGFuZGxlclVSTCwgcmVtb3RlUmVnaXN0cnkpIHtcblxuICAgIC8vIGhvdyBzb21lIGZ1bmN0aW9ucyByZWNlaXZlIHRoZSBwYXJhbWV0ZXJzIGZvciBleGFtcGxlOlxuICAgIC8vIG5ldyBSZWdpc3RyeSgnaHlwZXJ0eS1ydW50aW1lOi8vc3AxLzEyMycsIGFwcFNhbmRib3gsIGlkTW9kdWxlLCByZW1vdGVSZWdpc3RyeSk7XG4gICAgLy8gcmVnaXN0cnkucmVnaXN0ZXJTdHViKHNhbmRib3gsICdzcDEnKTtcbiAgICAvLyByZWdpc3RyeS5yZWdpc3Rlckh5cGVydHkoc2FuZEJveCwgJ2h5cGVydHktcnVudGltZTovL3NwMS8xMjMnKTtcbiAgICAvLyByZWdpc3RyeS5yZXNvbHZlKCdoeXBlcnR5LXJ1bnRpbWU6Ly9zcDEvMTIzJyk7XG5cbiAgICBpZiAoIXJ1bnRpbWVVUkwpIHRocm93IG5ldyBFcnJvcigncnVudGltZVVSTCBpcyBtaXNzaW5nLicpO1xuICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHRocm93IG5ldyBFcnJvcignc3RvcmFnZU1hbmFnZXIgaXMgbWlzc2luZy4nKTtcblxuICAgIC8qaWYgKCFyZW1vdGVSZWdpc3RyeSkgdGhyb3cgbmV3IEVycm9yKCdyZW1vdGVSZWdpc3RyeSBpcyBtaXNzaW5nJyk7Ki9cblxuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBfdGhpcy5yZWdpc3RyeVVSTCA9IHJ1bnRpbWVVUkwgKyAnL3JlZ2lzdHJ5Lyc7XG4gICAgX3RoaXMuYXBwU2FuZGJveCA9IGFwcFNhbmRib3g7XG4gICAgX3RoaXMucnVudGltZVVSTCA9IHJ1bnRpbWVVUkw7XG4gICAgX3RoaXMucDJwSGFuZGxlclVSTCA9IHAycEhhbmRsZXJVUkw7XG4gICAgX3RoaXMucnVudGltZUNhdGFsb2d1ZSA9IHJ1bnRpbWVDYXRhbG9ndWU7XG4gICAgX3RoaXMucmVtb3RlUmVnaXN0cnkgPSByZW1vdGVSZWdpc3RyeTtcbiAgICBfdGhpcy5pZE1vZHVsZSA9IGlkZW50aXR5TW9kdWxlO1xuICAgIF90aGlzLnN0b3JhZ2VNYW5hZ2VyID0gc3RvcmFnZU1hbmFnZXI7XG4gICAgX3RoaXMucnVudGltZUNhcGFiaWxpdGllcyA9IHJ1bnRpbWVDYXBhYmlsaXRpZXM7XG4gICAgX3RoaXMuaWRlbnRpZmllciA9IGdlbmVyYXRlR1VJRCgpO1xuICAgIF90aGlzLnJlZ2lzdHJhdGlvblJldHJpZXMgPSA1Oy8vIG51bWJlciBvZiBhdHRlbXB0cyB0byByZWdpc3RlciBIeXBlcnRpZXMgYW5kIERhdGFPYmplY3RzIHdoZW4gZXJyb3JzIG9jY3Vyc1xuXG4gICAgLy8gdGhlIGV4cGlyZXMgaW4gMzYwMCwgcmVwcmVzZW50cyAxIGhvdXJcbiAgICAvL3RoZSBleHBpcmVzIGlzIGluIHNlY29uZHMsIHVuaXQgb2YgbWVhc3VyZSByZWNlaXZlZCBieSB0aGUgZG9tYWluIHJlZ2lzdHJ5XG4gICAgX3RoaXMuZXhwaXJlc1RpbWUgPSAzNjAwO1xuXG4gICAgX3RoaXMuaHlwZXJ0aWVzTGlzdFRvUmVtb3ZlID0ge307XG4gICAgX3RoaXMuaHlwZXJ0aWVzTGlzdCA9IFtdO1xuICAgIF90aGlzLnJlbW90ZUh5cGVydHlMaXN0ID0gW107XG4gICAgX3RoaXMucmVtb3RlRGF0YU9iamVjdExpc3QgPSBbXTtcbiAgICBfdGhpcy5pZHBMZWdhY3lQcm94eUxpc3QgPSB7fTtcblxuICAgIF90aGlzLndhdGNoaW5nWW91ID0gbmV3IFdhdGNoaW5nWW91KCk7XG4gICAgX3RoaXMucDJwSGFuZGxlclN0dWIgPSB7fTtcbiAgICBfdGhpcy5wMnBSZXF1ZXN0ZXJTdHViID0gX3RoaXMud2F0Y2hpbmdZb3Uud2F0Y2goJ3AycFJlcXVlc3RlclN0dWInLCB7fSwgdHJ1ZSk7XG4gICAgX3RoaXMucDJwQ29ubmVjdGlvbkxpc3QgPSBfdGhpcy53YXRjaGluZ1lvdS53YXRjaCgncDJwQ29ubmVjdGlvbkxpc3QnLCB7fSwgdHJ1ZSk7XG4gICAgX3RoaXMucDJwSGFuZGxlckFzc29jaWF0aW9uID0ge307XG5cbiAgICBfdGhpcy5wcm90b3N0dWJzTGlzdCA9IF90aGlzLndhdGNoaW5nWW91LndhdGNoKCdwcm90b3N0dWJzTGlzdCcsIHt9LCB0cnVlKTtcbiAgICBfdGhpcy5pZHBQcm94eUxpc3QgPSBfdGhpcy53YXRjaGluZ1lvdS53YXRjaCgnaWRwUHJveHlMaXN0Jywge30sIHRydWUpO1xuICAgIF90aGlzLmRhdGFPYmplY3RMaXN0ID0ge307XG4gICAgX3RoaXMuc3Vic2NyaWJlZERhdGFPYmplY3RMaXN0ID0ge307XG4gICAgX3RoaXMuc2FuZGJveGVzTGlzdCA9IHtzYW5kYm94OiB7fSwgYXBwU2FuZGJveDoge30gfTtcbiAgICBfdGhpcy5wZXBMaXN0ID0ge307XG4gICAgX3RoaXMucmVnaXN0cmllcyA9IHt9O1xuXG4gICAgX3RoaXMuX2RvbWFpbiA9IGRpdmlkZVVSTChfdGhpcy5yZWdpc3RyeVVSTCkuZG9tYWluO1xuICAgIF90aGlzLnNhbmRib3hlc0xpc3QuYXBwU2FuZGJveFtydW50aW1lVVJMXSA9IGFwcFNhbmRib3g7XG4gICAgbGV0IHAycENvbm5lY3Rpb25SZXNvbHZlID0gbmV3IFAyUENvbm5lY3Rpb25SZXNvbHZlKF90aGlzKTtcblxuICAgIF90aGlzLl9wMnBDb25uZWN0aW9uUmVzb2x2ZSA9IHAycENvbm5lY3Rpb25SZXNvbHZlO1xuICB9XG5cbiAgc2V0IGxvYWRlcihsb2FkZXIpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIF90aGlzLl9sb2FkZXIgPSBsb2FkZXI7XG4gIH1cblxuICBnZXQgbG9hZGVyKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIF90aGlzLl9sb2FkZXI7XG4gIH1cblxuICAvKipcbiAgKiByZXR1cm4gdGhlIG1lc3NhZ2VCdXMgaW4gdGhpcyBSZWdpc3RyeVxuICAqIEBwYXJhbSB7TWVzc2FnZUJ1c30gICAgICAgICAgIG1lc3NhZ2VCdXNcbiAgKi9cbiAgZ2V0IG1lc3NhZ2VCdXMoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gX3RoaXMuX21lc3NhZ2VCdXM7XG4gIH1cblxuICAvKipcbiAgKiBTZXQgdGhlIG1lc3NhZ2VCdXMgaW4gdGhpcyBSZWdpc3RyeVxuICAqIEBwYXJhbSB7TWVzc2FnZUJ1c30gICAgICAgICAgIG1lc3NhZ2VCdXNcbiAgKi9cbiAgc2V0IG1lc3NhZ2VCdXMobWVzc2FnZUJ1cykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgX3RoaXMuX21lc3NhZ2VCdXMgPSBtZXNzYWdlQnVzO1xuXG4gICAgX3RoaXMuX21lc3NhZ2VCdXMuYWRkTGlzdGVuZXIoX3RoaXMucmVnaXN0cnlVUkwsIGZ1bmN0aW9uKG1zZykge1xuXG4gICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgbGlzdGVuZXJdICcsIG1zZyk7XG5cbiAgICAgIGxldCBpc0h5cGVydHkgPSBpc0h5cGVydHlVUkwobXNnLmZyb20pO1xuICAgICAgbGV0IGhhc0NyaXRlcmlhID0gbXNnLmJvZHkuaGFzT3duUHJvcGVydHkoJ2NyaXRlcmlhJyk7XG4gICAgICBsZXQgaXNVUkxSZXNvdXJjZTtcbiAgICAgIGxldCBpc1VzZXJSZXNvdXJjZTtcbiAgICAgIGxldCBpc0h5cGVydHlSZXNvdXJjZTtcblxuICAgICAgaWYgKG1zZy5ib2R5Lmhhc093blByb3BlcnR5KCdyZXNvdXJjZScpICYmIG1zZy5ib2R5LnJlc291cmNlICE9PSAnLicpIHtcbiAgICAgICAgaXNVUkxSZXNvdXJjZSA9IGlzVVJMKG1zZy5ib2R5LnJlc291cmNlKTtcbiAgICAgICAgaXNVc2VyUmVzb3VyY2UgPSBpc1VzZXJVUkwobXNnLmJvZHkucmVzb3VyY2UpO1xuICAgICAgICBpc0h5cGVydHlSZXNvdXJjZSA9IGlzSHlwZXJ0eVVSTChtc2cuYm9keS5yZXNvdXJjZSk7XG4gICAgICB9XG4gICAgICBsZXQgaXNEZWxldGUgPSBtc2cudHlwZSA9PT0gJ2RlbGV0ZSc7XG4gICAgICBsZXQgaGFzTmFtZTtcbiAgICAgIGxldCBoYXNVc2VyO1xuXG4gICAgICBpZiAobXNnLmJvZHkuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykpIHtcbiAgICAgICAgaGFzTmFtZSA9IG1zZy5ib2R5LnZhbHVlLmhhc093blByb3BlcnR5KCduYW1lJyk7XG4gICAgICAgIGhhc1VzZXIgPSBtc2cuYm9keS52YWx1ZS5oYXNPd25Qcm9wZXJ0eSgndXNlcicpO1xuICAgICAgfVxuXG4gICAgICBpZiAobXNnLnR5cGUgPT09ICdyZXNwb25zZScpIHtcbiAgICAgICAgbG9nLmVycm9yKCdbUmVnaXN0ZXIgbGlzdGVuZXJdIHNraXBwaW5nICcsIG1zZyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gbXNnIHNlbnQgYnkgaWRlbnRpdHkgbWFuYWdlciBsaWJyYXJ5XG4gICAgICBsZXQgdXNlclVybCA9IF90aGlzLl9nZXRJZGVudGl0eUFzc29jaWF0ZWQobXNnLmJvZHkucmVzb3VyY2UsIG1zZy5ib2R5LmNyaXRlcmlhKTtcblxuICAgICAgbGV0IHJlcGx5ID0ge2lkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIHRvOiBtc2cuZnJvbSwgZnJvbTogbXNnLnRvLCBib2R5OiB7cmVzb3VyY2U6IHVzZXJVcmx9fTtcbiAgICAgIHJlcGx5LmJvZHkuY29kZSA9ICh1c2VyVXJsKSA/IDIwMCA6IDQwNDtcblxuICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UocmVwbHkpO1xuXG4gICAgfSk7XG5cbiAgICAvLyBJbnN0YWxsIEFkZHJlc3NBbGxvY2F0aW9uXG4gICAgbGV0IGFkZHJlc3NBbGxvY2F0aW9uID0gQWRkcmVzc0FsbG9jYXRpb24uaW5zdGFuY2U7XG4gICAgX3RoaXMuYWRkcmVzc0FsbG9jYXRpb24gPSBhZGRyZXNzQWxsb2NhdGlvbjtcblxuICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSAtIEFkZHJlc3NBbGxvY2F0aW9uXSAtICcsIGFkZHJlc3NBbGxvY2F0aW9uKTtcbiAgfVxuXG5cbiAgX2dldElkZW50aXR5QXNzb2NpYXRlZCh0eXBlLCBoeXBlcnR5VVJMKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGZvciAobGV0IGh5cGVydHkgaW4gX3RoaXMuaHlwZXJ0aWVzTGlzdCkge1xuICAgICAgbGV0IHZhbHVlID0gX3RoaXMuaHlwZXJ0aWVzTGlzdFtoeXBlcnR5XTtcblxuICAgICAgaWYgKHZhbHVlLl9oeXBlcnR5VVJMID09PSBoeXBlcnR5VVJMKSB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgJ3VzZXJuYW1lJzpcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5fdXNlci51c2VybmFtZTtcbiAgICAgICAgICBjYXNlICdjbic6XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuX3VzZXIuY247XG4gICAgICAgICAgY2FzZSAnbG9jYWxlJzpcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5fdXNlci5sb2NhbGU7XG4gICAgICAgICAgY2FzZSAnYXZhdGFyJzpcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5fdXNlci5hdmF0YXI7XG4gICAgICAgICAgY2FzZSAndXNlclVSTCc6XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuX3VzZXIudXNlclVSTDtcbiAgICAgICAgICBjYXNlICcuJzpcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5fdXNlcjtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8qKlxuICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZXR1cm4gdGhlIHNhbmRib3ggaW5zdGFuY2Ugd2hlcmUgdGhlIEFwcGxpY2F0aW9uIGlzIGV4ZWN1dGluZy4gSXQgaXMgYXNzdW1lZCB0aGVyZSBpcyBqdXN0IG9uZSBBcHAgcGVyIFJ1bnRpbWUgaW5zdGFuY2UuXG4gICovXG4gIGdldEFwcFNhbmRib3goKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gX3RoaXMuYXBwU2FuZGJveDtcbiAgfVxuXG4gIC8qKlxuICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdXNlciBhc3NvY2lhdGVkIHRvIHRoZSBoeXBlcnR5IFVSTFxuICAqIEBwYXJhbSAgICB7U3RyaW5nfSAgICBoeXBlcnR5VVJMICAgICAgaHlwZXJ0eSBVUkxcbiAgKiBAcmV0dXJuICAge1N0cmluZ30gICAgdXNlclVSTCAgICAgICAgIHVzZXIgVVJMXG4gICovXG4gIGdldEh5cGVydHlPd25lcihoeXBlcnR5VVJMKSB7XG5cbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIGxldCB1c2VyVVJMO1xuXG4gICAgZm9yIChsZXQgaW5kZXggaW4gX3RoaXMuaHlwZXJ0aWVzTGlzdCkge1xuICAgICAgbGV0IGh5cGVydHkgPSBfdGhpcy5oeXBlcnRpZXNMaXN0W2luZGV4XTtcblxuICAgICAgaWYgKGh5cGVydHkuaHlwZXJ0eVVSTCA9PT0gaHlwZXJ0eVVSTCkge1xuICAgICAgICByZXR1cm4gaHlwZXJ0eS51c2VyLnVzZXJVUkw7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1c2VyVVJMO1xuICB9XG5cbiAgLyoqXG4gICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB1c2VyIGFzc29jaWF0ZWQgdG8gdGhlIGh5cGVydHkgVVJMXG4gICogQHBhcmFtICAgIHtTdHJpbmd9ICAgIGRhdGFPYmplY3RVUkwgICAgICBkYXRhT2JqZWN0VVJMIFVSTFxuICAqIEByZXR1cm4gICB7U3RyaW5nfSAgICB1c2VyVVJMICAgICAgICAgdXNlciBVUkxcbiAgKi9cbiAgZ2V0RGF0YU9iamVjdFJlcG9ydGVyKGRhdGFPYmplY3RVUkwpIHtcblxuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgbGV0IERPdXJsID0gcmVtb3ZlUGF0aEZyb21VUkwoZGF0YU9iamVjdFVSTCk7XG4gICAgZm9yIChsZXQgaW5kZXggaW4gX3RoaXMuZGF0YU9iamVjdExpc3QpIHtcbiAgICAgIGxldCBkYXRhT2JqZWN0ID0gX3RoaXMuZGF0YU9iamVjdExpc3RbaW5kZXhdO1xuXG4gICAgICBpZiAoZGF0YU9iamVjdC51cmwgPT09IERPdXJsKSB7XG4gICAgICAgIHJldHVybiBkYXRhT2JqZWN0LnJlcG9ydGVyO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAqIHJldHVybnMgdGhlIGh5cGVydHkgTmFtZSBmcm9tIGEgZ2l2ZW4gdXJsLiBUaGlzIHVybCBjb3VsZCBiZSBmcm9tIGEgZGF0YU9iamVjdCBvciBoeXBlcnR5XG4gICogQHBhcmFtICAgIHtTdHJpbmd9ICAgIHVybCAgICAgIGh5cGVydHkgb3IgZGF0YU9iamVjdCBVUkxcbiAgKiBAcmV0dXJuICAge1N0cmluZ30gICAgaHlwZXJ0eU5hbWUgICAgIGh5cGVydHkgTmFtZVxuICAqL1xuICBnZXRIeXBlcnR5TmFtZSh1cmwpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IGlzSHlwZXJ0eVVSTCA9IGRpdmlkZVVSTCh1cmwpLnR5cGUgPT09ICdoeXBlcnR5JztcblxuICAgIC8vdmFsdWUgdG8gYmUgcmV0dXJuZWQgaW4gdGhlIGVuZFxuICAgIGxldCBoeXBlcnR5TmFtZTtcblxuICAgIC8vaWYgaXMgbm90IGFuIGh5cGVydHksIGNoZWNrIGlmIGlzIGEgZGF0YU9iamVjdCBhbmQgb2J0YWluIGhpcyByZXBvcnRlclxuICAgIGxldCBoeXBlcnR5VVJMID0gaXNIeXBlcnR5VVJMID8gdXJsIDogX3RoaXMuZ2V0UmVwb3J0ZXJVUkxTeW5jaG9ub3VzKHVybCk7XG5cbiAgICBmb3IgKGxldCBpbmRleCBpbiBfdGhpcy5oeXBlcnRpZXNMaXN0KSB7XG4gICAgICBsZXQgaHlwZXJ0eSA9IF90aGlzLmh5cGVydGllc0xpc3RbaW5kZXhdO1xuICAgICAgaWYgKGh5cGVydHkuaHlwZXJ0eVVSTCA9PT0gaHlwZXJ0eVVSTCkge1xuICAgICAgICBoeXBlcnR5TmFtZSA9IGh5cGVydHkub2JqZWN0TmFtZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoeXBlcnR5TmFtZTtcbiAgfVxuXG4gIC8qKlxuICAqIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgcmVwb3J0ZXJVUkwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkYXRhb2JqZWN0IFVSTFxuICAqIEBwYXJhbSAgICB7U3RyaW5nfSAgICAgZGF0YU9iamVjdFVSTCAgICBkYXRhT2JqZWN0VVJMXG4gICogQHJldHVybiAgIHtTdHJpbmd9ICAgICByZXBvcnRlclVSTCAgICAgIHJlcG9ydGVyVVJMXG4gICovXG4gIGdldFJlcG9ydGVyVVJMKGRhdGFPYmplY3RVUkwpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICBsZXQgZGF0YU9iamVjdCA9IF90aGlzLmRhdGFPYmplY3RMaXN0W2RhdGFPYmplY3RVUkxdO1xuXG4gICAgICBpZiAoZGF0YU9iamVjdCkge1xuICAgICAgICByZXNvbHZlKGRhdGFPYmplY3QucmVwb3J0ZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVqZWN0KCdObyByZXBvcnRlciB3YXMgZm91bmQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgcmVwb3J0ZXJVUkwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkYXRhb2JqZWN0IFVSTC4gbm8gcHJvbWlzZSByZXR1cm5lZFxuICAqIEBwYXJhbSAgICB7U3RyaW5nfSAgICAgZGF0YU9iamVjdFVSTCAgICBkYXRhT2JqZWN0VVJMXG4gICogQHJldHVybiAgIHtTdHJpbmd9ICAgICByZXBvcnRlclVSTCAgICAgIHJlcG9ydGVyVVJMXG4gICovXG4gIGdldFJlcG9ydGVyVVJMU3luY2hvbm91cyhkYXRhT2JqZWN0VVJMKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGxldCBkYXRhT2JqZWN0ID0gX3RoaXMuZGF0YU9iamVjdExpc3RbZGF0YU9iamVjdFVSTF07XG5cbiAgICByZXR1cm4gKGRhdGFPYmplY3QpID8gZGF0YU9iamVjdC5yZXBvcnRlciA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAqIHJldHVybnMgdGhlIGh5cGVydHkgVVJMIHRoYXQgc3Vic2NyaWJlZCB0aGUgZGF0YU9iamVjdFxuICAqIEBwYXJhbSAgICB7U3RyaW5nfSAgICAgdXJsICAgICAgICAgICAgdXJsIGZvcm1hdFxuICAqIEByZXR1cm4gICB7U3RyaW5nfSAgICBIeXBlcnR5IFVSTCBzdWJzY3JpYmVkIHRvIHRoZSBVUkxcbiAgKi9cbiAgZ2V0RGF0YU9iamVjdFN1YnNjcmliZXJIeXBlcnR5KHVybCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gX3RoaXMuc3Vic2NyaWJlZERhdGFPYmplY3RMaXN0W3VybF07XG4gIH1cblxuICAvKipcbiAgKiByZWdpc3RlciBhIGRlc2lyZWQgZGF0YU9iamVjdCB0byBzdWJzY3JpYmVcbiAgKiBAcGFyYW0gICAge1N0cmluZ30gICAgZGF0YU9iamVjdFVSTCAgICAgIGRhdGFPYmplY3QgVVJMXG4gICovXG4gIHJlZ2lzdGVyU3Vic2NyaWJlZERhdGFPYmplY3QoZGF0YU9iamVjdFVSTCwgaHlwZXJ0eVVSTCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgaWYgKF90aGlzLnN1YnNjcmliZWREYXRhT2JqZWN0TGlzdFtkYXRhT2JqZWN0VVJMXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBfdGhpcy5zdWJzY3JpYmVkRGF0YU9iamVjdExpc3RbZGF0YU9iamVjdFVSTF0gPSBoeXBlcnR5VVJMO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAqIEZ1bmN0aW9uIHRvIHJldHVybiB0aGUgbGlzdCBvZiBwcmUgYXV0aG9yaXNlZCB1c2VycyByZWNlaXZlZCBpbiB0aGUgY3JlYXRpb24gb2YgYSBkYXRhIG9iamVjdFxuICAqIEBwYXJhbSAgICB7U3RyaW5nfSAgICAgICAgICAgIGRhdGFPYmplY3RVUkwgICAgZGF0YU9iamVjdFVSTFxuICAqIEByZXR1cm4gICB7QXJyYXk8U3RyaW5nPn0gICAgIHByZUF1dGggICAgICAgICBMaXN0IG9mIHByZSBhdXRob3Jpc2VkIHVzZXJzXG4gICovXG4gIGdldFByZUF1dGhTdWJzY3JpYmVycyhkYXRhT2JqZWN0VVJMKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBsZXQgZGF0YU9iamVjdCA9IF90aGlzLmRhdGFPYmplY3RMaXN0W2RhdGFPYmplY3RVUkxdO1xuICAgIGxldCBwcmVBdXRoID0gW107XG5cbiAgICBpZiAoZGF0YU9iamVjdCkge1xuICAgICAgcHJlQXV0aCA9IGRhdGFPYmplY3QuYXV0aG9yaXNlO1xuICAgIH1cbiAgICByZXR1cm4gcHJlQXV0aDtcbiAgfVxuXG4gIC8qKlxuICAqIHNlbmQgcmVxdWVzdHMgdG8gdW5yZWdpc3RlciBhbGwgaHlwZXJ0aWVzIHJlZ2lzdGVyZWQgaW4gZG9tYWluIHJlZ2lzdHJ5XG4gICogQHJldHVybiAgIHtQcm9taXNlfSAgICAgcmV0dXJuIGEgcHJvbWlzZSBpZiB0aGUgcmVzdWx0IG9mIHVucmVnaXN0cmF0aW9uIGFsbCBoeXBlcnRpZXNcbiAgKi9cbiAgdW5yZWdpc3RlckFsbEh5cGVydGllcygpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IHVucmVnaXN0ZXJSZXN1bHRzID0gW107XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgIGZvciAobGV0IGluZGV4IGluIF90aGlzLmh5cGVydGllc0xpc3QpIHtcbiAgICAgICAgbGV0IGh5cGVydHkgPSBfdGhpcy5oeXBlcnRpZXNMaXN0W2luZGV4XTtcbiAgICAgICAgbGV0IHJlc3VsdCA9IF90aGlzLnVucmVnaXN0ZXJIeXBlcnR5SW5zdGFuY2UoaHlwZXJ0eS5oeXBlcnR5VVJMKTtcbiAgICAgICAgdW5yZWdpc3RlclJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgfVxuXG4gICAgICBQcm9taXNlLmFsbCh1bnJlZ2lzdGVyUmVzdWx0cykudGhlbigoKSA9PiB7XG5cbiAgICAgICAgcmVzb2x2ZSgnc3VjY2Vzc2Z1bGx5IHVucmVnaXN0ZXJlZCBhbGwgaHlwZXJ0aWVzJyk7XG4gICAgICB9LCBlcnJvciA9PiB7IHJlamVjdChlcnJvcik7IH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogIGZ1bmN0aW9uIHRvIHVucmVnaXN0ZXIgYW4gaHlwZXJ0eUluc3RhbmNlIGluIHRoZSBEb21haW4gUmVnaXN0cnlcbiAgKiAgQHBhcmFtICAge1N0cmluZ30gICAgICBoeXBlcnR5SW5zdGFuY2UgICBIeXBlcnR5SW5zbnRhbmNlIHVybFxuICAqXG4gICovXG4gIHVucmVnaXN0ZXJIeXBlcnR5SW5zdGFuY2UoaHlwZXJ0eUluc3RhbmNlKSB7XG4gICAgLy9UT0RPIHdvcmtpbmcgYnV0IHRoZSB1c2VyXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGxldCBjbG9zZU1zZyA9IHsgdHlwZTogJ2V4ZWN1dGUnLCBmcm9tOiBfdGhpcy5yZWdpc3RyeVVSTCxcbiAgICAgIHRvOiBoeXBlcnR5SW5zdGFuY2UsXG4gICAgICBib2R5OiB7IG1ldGhvZDogJ2Nsb3NlJyB9fTtcblxuICAgIC8vIFNlbmQgbWVzc2FnZSB0byBoeXBlcnR5IHRvIGNsb3NlXG4gICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UoY2xvc2VNc2csIChyZXBseSkgPT4ge1xuICAgICAgbG9nLmxvZygnW1JlZ2lzdHJ5LnVucmVnaXN0ZXJIeXBlcnR5SW5zdGFuY2VdIENsb3NlIFJlcGx5JywgcmVwbHkpO1xuXG4gICAgICBsZXQgbWVzc2FnZSA9IHsgdHlwZTogJ3VwZGF0ZScsIGZyb206IF90aGlzLnJlZ2lzdHJ5VVJMLFxuICAgICAgICB0bzogJ2RvbWFpbjovL3JlZ2lzdHJ5LicgKyBfdGhpcy5fZG9tYWluLFxuICAgICAgICBib2R5OiB7IHJlc291cmNlOiAnL2h5cGVydHkvJyArIGh5cGVydHlJbnN0YW5jZSwgdmFsdWU6ICdkaXNjb25uZWN0ZWQnLCBhdHRyaWJ1dGU6ICdzdGF0dXMnIH19O1xuXG4gICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVwbHkpID0+IHtcbiAgICAgICAgbG9nLmxvZygnW1JlZ2lzdHJ5XSB1bnJlZ2lzdGVyIGh5cGVydHkgUmVwbHknLCByZXBseSk7XG5cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogIGZ1bmN0aW9uIHRvIHVucmVnaXN0ZXIgYW4gaHlwZXJ0eUluc3RhbmNlIGluIHRoZSBEb21haW4gUmVnaXN0cnlcbiAgKiAgQHBhcmFtICAge1N0cmluZ30gICAgICBoeXBlcnR5SW5zdGFuY2UgICBIeXBlcnR5SW5zbnRhbmNlIHVybFxuICAqXG4gICovXG4gIHVucmVnaXN0ZXJEYXRhT2JqZWN0KHVybCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgbWVzc2FnZSA9IHsgdHlwZTogJ3VwZGF0ZScsIGZyb206IF90aGlzLnJlZ2lzdHJ5VVJMLFxuICAgICAgdG86ICdkb21haW46Ly9yZWdpc3RyeS4nICsgX3RoaXMuX2RvbWFpbixcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgcmVzb3VyY2U6IHVybCxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBzdGF0dXM6ICdkaXNjb25uZWN0ZWQnXG4gICAgICAgIH1cbiAgICAgIH19O1xuXG4gICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobWVzc2FnZSwgKHJlcGx5KSA9PiB7XG4gICAgICBsb2cubG9nKCdbUmVnaXN0cnldIHVucmVnaXN0ZXIgZGF0YU9iamVjdCBSZXBseScsIHJlcGx5KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqICBmdW5jdGlvbiB0byBkZWxldGUgYW4gZGF0YU9iamVjdEluc3RhbmNlIGluIHRoZSBEb21haW4gUmVnaXN0cnlcbiAgKiAgQHBhcmFtICAge1N0cmluZ30gICAgbmFtZSAgICAgIERhdGFPYmplY3ROYW1lXG4gICovXG4gIGRlbGV0ZURhdGFPYmplY3RJbnN0YW5jZShuYW1lKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGxldCBtZXNzYWdlID0geyB0eXBlOiAnZGVsZXRlJywgZnJvbTogX3RoaXMucmVnaXN0cnlVUkwsXG4gICAgICB0bzogJ2RvbWFpbjovL3JlZ2lzdHJ5LicgKyBfdGhpcy5fZG9tYWluLFxuICAgICAgYm9keTogeyB2YWx1ZToge25hbWU6IG5hbWV9fX07XG5cbiAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVwbHkpID0+IHtcbiAgICAgIGxvZy5sb2coJ1tSZWdpc3RyeV0gdW5yZWdpc3RlciBkYXRhT2JqZWN0IFJlcGx5JywgcmVwbHkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogRnVuY3Rpb24gdG8gdXBkYXRlIGFuIEh5cGVydHlcbiAgKi9cbiAgdXBkYXRlSHlwZXJ0eUluc3RhbmNlKHJlc291cmNlLCB2YWx1ZSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgbWVzc2FnZSA9IHsgdHlwZTogJ1VQREFURScsIGZyb206IF90aGlzLnJlZ2lzdHJ5VVJMLFxuICAgICAgdG86ICdkb21haW46Ly9yZWdpc3RyeS4nICsgX3RoaXMuX2RvbWFpbixcbiAgICAgIGJvZHk6IHsgcmVzb3VyY2U6IHJlc291cmNlLCB2YWx1ZTogdmFsdWV9fTtcblxuICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3QucG9zdE1lc3NhZ2UobWVzc2FnZSwgKHJlcGx5KSA9PiB7XG4gICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnldIFVwZGF0ZWQgaHlwZXJ0eSByZXBseScsIHJlcGx5KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIHJlZ2lzdGVyIGEgbmV3IHN1YnNjcmliZXIgaW4gdGhlIGRhdGFPYmplY3QgcmVnaXN0ZXJlZFxuICAqIEBwYXJhbSAge1N0cmluZ30gICBkYXRhT2JqZWN0VVJMICAgIGRhdGFPYmplY3QgVVJMXG4gICogQHBhcmFtICB7U3RyaW5nfSAgIHN1YnNjcmliZXJVUkwgICAgc3Vic2NyaWJlciBVUkxcbiAgKi9cbiAgcmVnaXN0ZXJTdWJzY3JpYmVyKGRhdGFPYmplY3RVUkwsIHN1YnNjcmliZXJVUkwpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIGxldCBkYXRhT2JqZWN0ID0gX3RoaXMuZGF0YU9iamVjdExpc3RbZGF0YU9iamVjdFVSTF07XG5cbiAgICBpZiAoZGF0YU9iamVjdCkge1xuXG4gICAgICBpZiAoIWRhdGFPYmplY3Quc3Vic2NyaWJlcnMpIGRhdGFPYmplY3Quc3Vic2NyaWJlcnMgPSBbXTtcblxuICAgICAgZGF0YU9iamVjdC5zdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXJVUkwpO1xuICAgICAgX3RoaXMuZGF0YU9iamVjdExpc3RbZGF0YU9iamVjdFVSTF0gPSBkYXRhT2JqZWN0O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAqIGdldCB0aGUgc3Vic2NyaWJlcnMgcmVnaXN0ZXJlZCB3aXRoaW4gYSBkYXRhT2JqZWN0XG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICBkYXRhT2JqZWN0VVJMICAgIGRhdGFPYmplY3QgVVJMXG4gICogQHBhcmFtICB7QXJyYXk8U3RyaW5nPn0gICBTdWJzdHJpYmVycyBMaXN0XG4gICovXG4gIGdldERhdGFPYmplY3RTdWJzY3JpYmVycyhkYXRhT2JqZWN0VVJMKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBsZXQgZGF0YU9iamVjdCA9IF90aGlzLmRhdGFPYmplY3RMaXN0W2RhdGFPYmplY3RVUkxdO1xuXG4gICAgaWYgKGRhdGFPYmplY3QpIHtcbiAgICAgIHJldHVybiBkYXRhT2JqZWN0LnN1YnNjcmliZXJzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyAnTm8gZGF0YU9iamVjdCB3YXMgZm91bmQnO1xuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICogVG8gcmVnaXN0ZXIgYSBuZXcgRGF0YSBPYmplY3QgaW4gdGhlIHJ1bnRpbWUgd2hpY2ggcmV0dXJucyB0aGUgZGF0YU9iamVjdFVSTCBhbGxvY2F0ZWQgdG8gdGhlIG5ldyBEYXRhIE9iamVjdC5cbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgaWRlbnRpZmllciAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgZGF0YU9iamVjdHNjaGVtYSAgICAgICAgICAgIGRhdGFPYmplY3RzY2hlbWFcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgZGF0YU9iamVjdFVybCAgICAgICAgICAgICAgIGRhdGFPYmplY3RVcmxcbiAgKiBAcGFyYW0ge1N0cmluZ30gICAgICBkYXRhT2JqZWN0UmVwb3J0ZXIgICAgICAgICAgIGRhdGFPYmplY3RSZXBvcnRlclxuICAqIEBwYXJhbSAge0FycmF5fSAgICAgcmVzb3VyY2VzICAgICAgICAgICAgICAgICAgICAgZGF0YU9iamVjdCByZXNvdXJjZXNcbiAgKiBAcGFyYW0gIHtBcnJheX0gICAgIGF1dGhvcmlzZSAgICAgICAgICAgICAgICAgICAgIGxpc3Qgb2YgcHJlIGF1dGhvcmlzZWQgYXV0aG9yaXNlZCBJRHNcbiAgKi9cbiAgLy9yZWdpc3RlckRhdGFPYmplY3QoaWRlbnRpZmllciwgZGF0YU9iamVjdHNjaGVtYSwgZGF0YU9iamVjdFVybCwgZGF0YU9iamVjdFJlcG9ydGVyLCByZXNvdXJjZXMsIGFkZHJlc3NVUkwsIGF1dGhvcmlzZSkge1xuICByZWdpc3RlckRhdGFPYmplY3Qob2JqZWN0UmVnaXN0cmF0aW9uKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGxldCByZWdpc3RyYXRpb24gPSBkZWVwQ2xvbmUob2JqZWN0UmVnaXN0cmF0aW9uKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgbGV0IGRhdGFTY2hlbWUgPSBbXTtcbiAgICAgIGxldCBmaWx0ZXJlZERhdGFTY2hlbWUgPSByZWdpc3RyYXRpb24udXJsLnNwbGl0KCc6Jyk7XG4gICAgICBkYXRhU2NoZW1lLnB1c2goZmlsdGVyZWREYXRhU2NoZW1lWzBdKTtcblxuICAgICAgX3RoaXMuc3RvcmFnZU1hbmFnZXIuZ2V0KCdyZWdpc3RyeTpEYXRhT2JqZWN0VVJMcycpLnRoZW4oKHVybHNMaXN0KSA9PiB7XG5cbiAgICAgICAgaWYgKCF1cmxzTGlzdCkge1xuICAgICAgICAgIHVybHNMaXN0ID0ge307XG4gICAgICAgIH1cblxuICAgICAgICAvL3VwZGF0ZSB0aGUgbGlzdCB3aXRoIHRoZSBuZXcgZWxlbWVudHNcbiAgICAgICAgdXJsc0xpc3Rbb2JqZWN0UmVnaXN0cmF0aW9uLm5hbWUgKyBvYmplY3RSZWdpc3RyYXRpb24uc2NoZW1hICsgb2JqZWN0UmVnaXN0cmF0aW9uLnJlc291cmNlcyArIG9iamVjdFJlZ2lzdHJhdGlvbi5yZXBvcnRlcl0gPSBvYmplY3RSZWdpc3RyYXRpb24udXJsO1xuXG4gICAgICAgIGxldCBwMnBIYW5kbGVyO1xuICAgICAgICBsZXQgcDJwUmVxdWVzdGVyO1xuXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhfdGhpcy5wMnBIYW5kbGVyU3R1YikubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgcDJwSGFuZGxlciA9IF90aGlzLnAycEhhbmRsZXJTdHViW190aGlzLnJ1bnRpbWVVUkxdLnVybDtcbiAgICAgICAgICBwMnBSZXF1ZXN0ZXIgPSBydW50aW1lVXRpbHMucnVudGltZURlc2NyaXB0b3IucDJwUmVxdWVzdGVyU3R1YjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlZ2lzdHJhdGlvbi5zdGFydGluZ1RpbWUgPSByZWdpc3RyYXRpb24uY3JlYXRlZDtcblxuICAgICAgICBkZWxldGUgcmVnaXN0cmF0aW9uLmF1dGhvcmlzZTtcbiAgICAgICAgZGVsZXRlIHJlZ2lzdHJhdGlvbi5jcmVhdGVkO1xuICAgICAgICBkZWxldGUgcmVnaXN0cmF0aW9uLm11dHVhbDtcbiAgICAgICAgZGVsZXRlIHJlZ2lzdHJhdGlvbi5yZXN1bWU7XG5cbiAgICAgICAgaWYgKCFyZWdpc3RyYXRpb24uZXhwaXJlcykgcmVnaXN0cmF0aW9uLmV4cGlyZXMgPSBfdGhpcy5leHBpcmVzVGltZTtcblxuICAgICAgICByZWdpc3RyYXRpb24uZGF0YVNjaGVtZXMgPSBkYXRhU2NoZW1lO1xuXG4gICAgICAgIGlmIChwMnBIYW5kbGVyKSB7XG4gICAgICAgICAgcmVnaXN0cmF0aW9uLnAycEhhbmRsZXIgPSBwMnBIYW5kbGVyO1xuICAgICAgICAgIHJlZ2lzdHJhdGlvbi5wMnBSZXF1ZXN0ZXIgPSBwMnBSZXF1ZXN0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX3RoaXMuaXNJbnRlcndvcmtpbmdQcm90b1N0dWIocmVnaXN0cmF0aW9uLnJlcG9ydGVyKSkge1xuICAgICAgICAgIHJlZ2lzdHJhdGlvbi5pbnRlcndvcmtpbmcgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVnaXN0cmF0aW9uLnN0YXR1cyA9ICdsaXZlJztcblxuICAgICAgICBsZXQgbWVzc2FnZTtcblxuICAgICAgICBpZiAoIW9iamVjdFJlZ2lzdHJhdGlvbi5yZXN1bWUpIHtcblxuICAgICAgICAgIGxvZy5sb2coJ1tSZWdpc3RyeS5yZWdpc3RlckRhdGFPYmplY3RdIHJlZ2lzdGVyaW5nIG5ldyBkYXRhIG9iamVjdCBVUkwnLCByZWdpc3RyYXRpb24pO1xuXG4gICAgICAgICAgbWVzc2FnZSA9IHt0eXBlOiAnY3JlYXRlJywgZnJvbTogX3RoaXMucmVnaXN0cnlVUkwsIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIF90aGlzLnJlZ2lzdHJ5RG9tYWluLCBib2R5OiB7dmFsdWU6IHJlZ2lzdHJhdGlvbiwgcG9saWN5OiAncG9saWN5J319O1xuXG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICBsb2cubG9nKCdbUmVnaXN0cnkucmVnaXN0ZXJEYXRhT2JqZWN0XSByZWdpc3RlcmluZyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgZGF0YSBvYmplY3QgVVJMJywgcmVnaXN0cmF0aW9uKTtcblxuICAgICAgICAgIG1lc3NhZ2UgPSB7XG4gICAgICAgICAgICB0eXBlOiAndXBkYXRlJyxcbiAgICAgICAgICAgIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIF90aGlzLnJlZ2lzdHJ5RG9tYWluLFxuICAgICAgICAgICAgZnJvbTogX3RoaXMucmVnaXN0cnlVUkwsXG4gICAgICAgICAgICBib2R5OiB7cmVzb3VyY2U6IHJlZ2lzdHJhdGlvbi51cmwsIHZhbHVlOiB7c3RhdHVzOiAnbGl2ZSd9IH1cbiAgICAgICAgICB9O1xuXG4gICAgICAgIH1cblxuICAgICAgICBfdGhpcy5kYXRhT2JqZWN0TGlzdFtyZWdpc3RyYXRpb24udXJsXSA9IG9iamVjdFJlZ2lzdHJhdGlvbjtcblxuICAgICAgICAvLyBzdGVwIHRvIG9idGFpbiB0aGUgbGlzdCBvZiBhbGwgVVJMIHJlZ2lzdGVyZWQgdG8gdXBkYXRlZCB3aXRoIHRoZSBuZXcgb25lLlxuICAgICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5zZXQoJ3JlZ2lzdHJ5OkRhdGFPYmplY3RVUkxzJywgMCwgdXJsc0xpc3QpLnRoZW4oKCkgPT4ge1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlV2l0aFJldHJpZXMobWVzc2FnZSwgX3RoaXMuX3JlZ2lzdHJhdGlvblJldHJpZXMsIChyZXBseSkgPT4ge1xuICAgICAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkucmVnaXN0ZXJEYXRhT2JqZWN0XSA9PT0+IHJlZ2lzdGVyRGF0YU9iamVjdCBSZXBseTogJywgcmVwbHkpO1xuICAgICAgICAgICAgICBpZiAocmVwbHkuYm9keS5jb2RlID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlZ2lzdHJhdGlvbik7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KCdlcnJvciBvbiByZWdpc3RlciBEYXRhT2JqZWN0Jyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcihlKTtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICB9XG5cblxuICAgICAgICAgIC8vdGltZXIgdG8ga2VlcCB0aGUgcmVnaXN0cmF0aW9uIGFsaXZlXG4gICAgICAgICAgLy8gdGhlIHRpbWUgaXMgZGVmaW5lZCBieSBhIGxpdHRsZSBsZXNzIHRoYW4gaGFsZiBvZiB0aGUgZXhwaXJlcyB0aW1lIGRlZmluZWRcbiAgICAgICAgICBsZXQga2VlcEFsaXZlVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSB7XG4gICAgICAgICAgICAgIHR5cGU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgICBmcm9tOiBfdGhpcy5yZWdpc3RyeVVSTCxcbiAgICAgICAgICAgICAgdG86ICdkb21haW46Ly9yZWdpc3RyeS4nICsgX3RoaXMucmVnaXN0cnlEb21haW4sXG4gICAgICAgICAgICAgIGJvZHk6IHsgcmVzb3VyY2U6IHJlZ2lzdHJhdGlvbi51cmwsIHZhbHVlOiB7c3RhdHVzOiAnbGl2ZSd9LCBtZXRob2Q6ICdyZWZyZXNoJyB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVwbHkpID0+IHtcbiAgICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5LnJlZ2lzdGVyRGF0YU9iamVjdF0gS2VlcEFsaXZlIFJlcGx5OiAnLCByZXBseSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LCAoKChyZWdpc3RyYXRpb24uZXhwaXJlcyAvIDEuMSkgLyAyKSAqIDEwMDApKTtcblxuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihyZWFzb24pIHtcbiAgICAgICAgICBsb2cuZXJyb3IoJ1tSZWdpc3RyeSByZWdpc3Rlckh5cGVydHldIEVycm9yOiAnLCByZWFzb24pO1xuICAgICAgICAgIHJlamVjdChyZWFzb24pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgX2dldFJlc291cmNlc0FuZFNjaGVtZXMoZGVzY3JpcHRvcikge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpPT4ge1xuXG4gICAgICBsZXQgcmVzb3VyY2VzO1xuXG4gICAgICAvLyBjaGVjayBpZiB0aGUgaHlwZXJ0eSByZXNvdXJjZXMgaXMgYSB2ZWN0b3Igb3IgYSBzdHJpbmdcbiAgICAgIC8vIFRPRE8gZGVsZXRlIGxhdGVyIHdoZW4gY2F0YWxvZ3VlIGlzIGZpeGVkXG4gICAgICBpZiAodHlwZW9mIChkZXNjcmlwdG9yLmh5cGVydHlUeXBlKSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmVzb3VyY2VzID0gW107XG4gICAgICAgIHJlc291cmNlcy5wdXNoKGRlc2NyaXB0b3IuaHlwZXJ0eVR5cGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb3VyY2VzID0gZGVzY3JpcHRvci5oeXBlcnR5VHlwZTtcbiAgICAgIH1cblxuICAgICAgbGV0IG9iak5hbWUgPSBkZXNjcmlwdG9yLm9iamVjdE5hbWU7XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRGF0YVNjaGVtYSA9IGRlc2NyaXB0b3IuZGF0YU9iamVjdHM7XG4gICAgICBsZXQgZGF0YVNjaGVtYXNBcnJheSA9IFtdO1xuXG4gICAgICAvL3RoaXMgd2lsbCBjcmVhdGUgYSBhcnJheSB3aXRoIGEgUHJvbWlzZSBpbiBlYWNoIHBvc2l0aW9uXG4gICAgICBmb3IgKGxldCBpbmRleCBpbiBkZXNjcmlwdG9yRGF0YVNjaGVtYSkge1xuICAgICAgICBkYXRhU2NoZW1hc0FycmF5LnB1c2goX3RoaXMucnVudGltZUNhdGFsb2d1ZS5nZXREYXRhU2NoZW1hRGVzY3JpcHRvcihkZXNjcmlwdG9yRGF0YVNjaGVtYVtpbmRleF0pKTtcbiAgICAgIH1cblxuICAgICAgLy8gYXMgc29vbiBhcyB0aGUgcHJldmlvdXMgYXJyYXkgaXMgY29tcGxldGVkLCB0aGlzIHdpbGwgd2FpdCBmb3IgdGhlIHJlc29sdmUgb2YgYWxsIHByb21pc2VzIGluIHRoZSBhcnJheVxuICAgICAgUHJvbWlzZS5hbGwoZGF0YVNjaGVtYXNBcnJheSkudGhlbihmdW5jdGlvbihkYXRhU2NoZW1hcykge1xuXG4gICAgICAgIGxldCBmaWx0ZXJlZERhdGFTY2hlbWFzID0gW107XG4gICAgICAgIGZvciAobGV0IGluZGV4IGluIGRhdGFTY2hlbWFzKSB7XG4gICAgICAgICAgbGV0IGRhdGFTY2hlbWEgPSBkYXRhU2NoZW1hc1tpbmRleF07XG4gICAgICAgICAgZmlsdGVyZWREYXRhU2NoZW1hcy5wdXNoKGRhdGFTY2hlbWEuc291cmNlUGFja2FnZS5zb3VyY2VDb2RlLnByb3BlcnRpZXMuc2NoZW1lLmNvbnN0YW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeV0gSHlwZXJ0eSBTY2hlbWFzJywgZmlsdGVyZWREYXRhU2NoZW1hcyk7XG4gICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeV0gSHlwZXJ0eSByZXNvdXJjZXMnLCByZXNvdXJjZXMpO1xuXG4gICAgICAgIHJlc29sdmUoe3Jlc291cmNlczogcmVzb3VyY2VzLCBkYXRhU2NoZW1hOiBmaWx0ZXJlZERhdGFTY2hlbWFzLCBuYW1lOiBvYmpOYW1lfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIG1ldGhvZCB0aGF0IHJldHVybnMgcHJldmlvdXNseSByZWdpc3RlcmVkIEh5cGVydHkgb3IgRGF0YU9iamVjdHMgVVJMUywgZm9yIGdpdmVuIGNoYXJhY3RlcmlzdGljc1xuICAqIEBwYXJhbSAge0pTT059ICAgICAgICBpbmZvICAgICAgICAgICBvYmplY3Qgb3IgaHlwZXJ0eSBjaGFyYXRlcmlzdGljcyBpbmZvXG4gICogQHJldHVybiB7YWRkcmVzc1VSTH0gIGFkZHJlc3NVUkwgICAgIHJldHVybiB0aGUgVVJMIGlmIHRoZXJlIGlzIGFueSBwcmV2aW91c3kgcmVnaXN0ZXJlZCBVUkwsIHJldHVybiB1bmRlZmluZWQgb3RoZXJ3aXNlXG4gICovXG4gIGNoZWNrUmVnaXN0ZXJlZFVSTHMoaW5mbywgcmV1c2VVUkwpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cbiAgICAgIGxldCBvYmplY3RUeXBlID0gKGluZm8ucmVwb3J0ZXIpID8gJ3JlZ2lzdHJ5OkRhdGFPYmplY3RVUkxzJyA6ICdyZWdpc3RyeTpIeXBlcnR5VVJMcyc7XG5cbiAgICAgIGlmICh0eXBlb2YocmV1c2VVUkwpID09PSAnc3RyaW5nJykge1xuICAgICAgICBvYmplY3RUeXBlID0gcmV1c2VVUkwgJiYgZGl2aWRlVVJMKHJldXNlVVJMKS50eXBlICE9PSAnaHlwZXJ0eScgPyAncmVnaXN0cnk6RGF0YU9iamVjdFVSTHMnIDogJ3JlZ2lzdHJ5Okh5cGVydHlVUkxzJztcbiAgICAgIH1cbiAgICAgIC8vZGVidWdnZXI7XG4gICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5nZXQob2JqZWN0VHlwZSkudGhlbigodXJsc0xpc3QpID0+IHtcblxuICAgICAgICBpZiAoIXVybHNMaXN0KSB7XG4gICAgICAgICAgdXJsc0xpc3QgPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YocmV1c2VVUkwpID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGxvZy5pbmZvKCdbUmVnaXN0cnkgLSBjaGVja1JlZ2lzdGVyZWRVUkxzXSAtIGxvb2sgZm9yICcgKyByZXVzZVVSTCArICcgb24gJywgdXJsc0xpc3QpO1xuXG4gICAgICAgICAgbGV0IHNlYXJjaFJlc3VsdCA9IE9iamVjdC5rZXlzKHVybHNMaXN0KS5tYXAoKGtleSkgPT4ge1xuICAgICAgICAgICAgbGV0IGluZGV4T2YgPSB1cmxzTGlzdFtrZXldLmluZGV4T2YocmV1c2VVUkwpO1xuICAgICAgICAgICAgcmV0dXJuIHVybHNMaXN0W2tleV1baW5kZXhPZl07XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5IC0gY2hlY2tSZWdpc3RlcmVkVVJMc10gLSBmb3VuZCAnICsgc2VhcmNoUmVzdWx0Lmxlbmd0aCArICcgcmVzdWx0cyBvbiAnLCBzZWFyY2hSZXN1bHQpO1xuICAgICAgICAgIGlmIChzZWFyY2hSZXN1bHQubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShzZWFyY2hSZXN1bHQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmplY3RUeXBlID09PSAncmVnaXN0cnk6SHlwZXJ0eVVSTHMnKSB7XG4gICAgICAgICAgX3RoaXMuX2dldFJlc291cmNlc0FuZFNjaGVtZXMoaW5mbykudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmICh1cmxzTGlzdFt2YWx1ZS5yZXNvdXJjZXMgKyB2YWx1ZS5kYXRhU2NoZW1hICsgdmFsdWUubmFtZV0pIHtcbiAgICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5XSByZXVzYWdlIG9mIGh5cGVydHkgVVJMJyk7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHVybHNMaXN0W3ZhbHVlLnJlc291cmNlcyArIHZhbHVlLmRhdGFTY2hlbWEgKyB2YWx1ZS5uYW1lXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnldIG5vIGh5cGVydHkgVVJMIHdhcyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgJyk7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICBsZXQgY2hhcmFjdGVyaXN0aWNzID0gaW5mby5uYW1lICsgaW5mby5zY2hlbWEgKyBpbmZvLnJlc291cmNlcyArIGluZm8ucmVwb3J0ZXI7XG5cbiAgICAgICAgICBpZiAodXJsc0xpc3RbY2hhcmFjdGVyaXN0aWNzXSkge1xuICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5XSByZXVzYWdlIG9mIGRhdGFPYmplY3QgVVJMJyk7XG4gICAgICAgICAgICBpZiAodHlwZW9mKHVybHNMaXN0W2NoYXJhY3RlcmlzdGljc10pID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBsZXQgYXJyYXlUb1Jlc29sdmUgPSBbXTtcbiAgICAgICAgICAgICAgYXJyYXlUb1Jlc29sdmUucHVzaCh1cmxzTGlzdFtjaGFyYWN0ZXJpc3RpY3NdKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoYXJyYXlUb1Jlc29sdmUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodXJsc0xpc3RbY2hhcmFjdGVyaXN0aWNzXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeV0gbm8gZGF0YU9iamVjdCBVUkwgd2FzIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCcpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodW5kZWZpbmVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfVxuXG5cbiAgLyoqXG4gICogVG8gcmVnaXN0ZXIgYSBuZXcgSHlwZXJ0eSBpbiB0aGUgcnVudGltZSB3aGljaCByZXR1cm5zIHRoZSBIeXBlcnR5VVJMIGFsbG9jYXRlZCB0byB0aGUgbmV3IEh5cGVydHkuXG4gICogQHBhcmFtICB7U2FuZGJveH0gICAgICAgICAgICAgc2FuZGJveCAgICAgICAgICAgICAgIHNhbmRib3hcbiAgKiBAcGFyYW0gIHtIeXBlcnR5Q2F0YWxvZ3VlVVJMfSBIeXBlcnR5Q2F0YWxvZ3VlVVJMICAgZGVzY3JpcHRvclxuICAqIEBwYXJhbSB7b2JqZWN0fSBJZHBDb25zdHJhaW50IC0gY29uc3RyYWludHMgdG8gYmUgdXNlZCB3aGVuIHNlbGVjdGluZyB0aGUgaWRlbnRpdHkgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBIeXBlcnR5IGluY2x1ZGluZyBvcmlnaW4sIGlkcCwgYW5kIGlkSGludC5cbiAgKiBAcmV0dXJuIHtIeXBlcnR5VVJMfSAgICAgICAgICBIeXBlcnR5VVJMXG4gICovXG4gIHJlZ2lzdGVySHlwZXJ0eShzYW5kYm94LCBkZXNjcmlwdG9yVVJMLCBkZXNjcmlwdG9yLCBhZGRyZXNzVVJMLCBJZHBDb25zdHJhaW50KSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGxldCBoeXBlcnR5Q2FwYWJpbGl0aWVzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICAvL2Fzc3VtaW5nIGRlc2NyaXB0b3IgY29tZSBpbiB0aGlzIGZvcm1hdCwgdGhlIHNlcnZpY2UtcHJvdmlkZXItZG9tYWluIHVybCBpcyByZXRyaWV2ZWQgYnkgYSBzcGxpdCBpbnN0cnVjdGlvblxuICAgICAgLy9oeXBlcnR5LWNhdGFsb2d1ZTovLzxzZXJ2aWNlLXByb3ZpZGVyLWRvbWFpbj4vPGNhdGFsb2d1ZS1vYmplY3QtaWRlbnRpZmllcj5cbiAgICAgIGxldCBkb21haW5VcmwgPSBkaXZpZGVVUkwoZGVzY3JpcHRvclVSTCkuZG9tYWluO1xuXG4gICAgICBpZiAoZG9tYWluVXJsLmluY2x1ZGVzKCdjYXRhbG9ndWUnKSkge1xuICAgICAgICBkb21haW5VcmwgPSBkb21haW5VcmwucmVwbGFjZSgnY2F0YWxvZ3VlLicsICcnKTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuaWRNb2R1bGUuZ2V0SWRlbnRpdHlBc3NlcnRpb24oSWRwQ29uc3RyYWludCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHtcblxuICAgICAgICBsZXQgdXNlclByb2ZpbGUgPSByZXN1bHQudXNlclByb2ZpbGU7XG5cbiAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IHJlZ2lzdGVySHlwZXJ0eV0gdXNlclByb2ZpbGUnLCB1c2VyUHJvZmlsZSk7XG4gICAgICAgIGxldCBlbWFpbFVSTCA9IHVzZXJQcm9maWxlLnVzZXJVUkw7XG5cbiAgICAgICAgaWYgKF90aGlzLl9tZXNzYWdlQnVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZWplY3QoJ1tSZWdpc3RyeSByZWdpc3Rlckh5cGVydHldIE1lc3NhZ2VCdXMgaXMgdW5kZWZpbmVkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy9jYWxsIGNoZWNrIGlmIHRoZSBwcm90b3N0dWIgZXhpc3Q6IHRvIGJlIHJlbW92ZWRcbiAgICAgICAgICAvKiAgX3RoaXMucmVzb2x2ZShkb21haW5VcmwpLnRoZW4oZnVuY3Rpb24oYSkge1xuICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IHJlZ2lzdGVySHlwZXJ0eV0gc3R1YiB0byBkb21haW4gcmVnaXN0cnktICcsIGEpOyovXG5cbiAgICAgICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5nZXQoJ3JlZ2lzdHJ5Okh5cGVydHlVUkxzJykudGhlbigodXJsc0xpc3QpID0+IHtcblxuICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IHJlZ2lzdGVySHlwZXJ0eV0gc3RvcmFnZU1hbmFnZXJdIC0gJywgdXJsc0xpc3QpO1xuXG4gICAgICAgICAgICBfdGhpcy5fZ2V0UmVzb3VyY2VzQW5kU2NoZW1lcyhkZXNjcmlwdG9yKS50aGVuKCh2YWx1ZSkgPT4ge1xuXG4gICAgICAgICAgICAgIGh5cGVydHlDYXBhYmlsaXRpZXMgPSB2YWx1ZTtcblxuICAgICAgICAgICAgICBpZiAoIXVybHNMaXN0KSB7XG4gICAgICAgICAgICAgICAgdXJsc0xpc3QgPSB7fTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHVybHNMaXN0W2h5cGVydHlDYXBhYmlsaXRpZXMucmVzb3VyY2VzICsgaHlwZXJ0eUNhcGFiaWxpdGllcy5kYXRhU2NoZW1hICsgaHlwZXJ0eUNhcGFiaWxpdGllcy5uYW1lXSA9IGFkZHJlc3NVUkwuYWRkcmVzcztcbiAgICAgICAgICAgICAgX3RoaXMuc3RvcmFnZU1hbmFnZXIuc2V0KCdyZWdpc3RyeTpIeXBlcnR5VVJMcycsIDAsIHVybHNMaXN0KS50aGVuKCgpID0+IHtcblxuICAgICAgICAgICAgICAgIF90aGlzLnJlZ2lzdHJ5RG9tYWluID0gZG9tYWluVXJsO1xuXG4gICAgICAgICAgICAgICAgLy9jaGVjayB3aGV0aGVyIHRoZSByZWNlaXZlZCBzYW5ib3ggZSBBcHBsaWNhdGlvblNhbmRib3ggb3IgYSBub3JtYWwgc2FuZGJveFxuICAgICAgICAgICAgICAgIGlmIChzYW5kYm94LnR5cGUgPT09ICdhcHAnKSB7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5zYW5kYm94ZXNMaXN0LmFwcFNhbmRib3hbYWRkcmVzc1VSTC5hZGRyZXNzWzBdXSA9IHNhbmRib3g7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzYW5kYm94LnR5cGUgPT09ICdub3JtYWwnKSB7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5zYW5kYm94ZXNMaXN0LnNhbmRib3hbYWRkcmVzc1VSTC5hZGRyZXNzWzBdXSA9IHNhbmRib3g7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJlamVjdCgnV3JvbmcgU2FuZGJveFR5cGUnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcDJwSGFuZGxlcjtcbiAgICAgICAgICAgICAgICBsZXQgcDJwUmVxdWVzdGVyO1xuXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKF90aGlzLnAycEhhbmRsZXJTdHViKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgICAgICAgIHAycEhhbmRsZXIgPSBfdGhpcy5wMnBIYW5kbGVyU3R1YltfdGhpcy5ydW50aW1lVVJMXS51cmw7XG4gICAgICAgICAgICAgICAgICBwMnBSZXF1ZXN0ZXIgPSBydW50aW1lVXRpbHMucnVudGltZURlc2NyaXB0b3IucDJwUmVxdWVzdGVyU3R1YjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcnVudGltZSA9IF90aGlzLnJ1bnRpbWVVUkw7XG4gICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9ICdsaXZlJztcblxuICAgICAgICAgICAgICAgIGxldCBoeXBlcnR5ID0gbmV3IEh5cGVydHlJbnN0YW5jZShfdGhpcy5pZGVudGlmaWVyLCBfdGhpcy5yZWdpc3RyeVVSTCwgZGVzY3JpcHRvclVSTCwgZGVzY3JpcHRvciwgYWRkcmVzc1VSTC5hZGRyZXNzWzBdLCB1c2VyUHJvZmlsZSwgJ2d1aWQnLCBfdGhpcy5ydW50aW1lVVJMLCAnY3R4JywgcDJwSGFuZGxlciwgcDJwUmVxdWVzdGVyLCBoeXBlcnR5Q2FwYWJpbGl0aWVzLmRhdGFTY2hlbWEsIGh5cGVydHlDYXBhYmlsaXRpZXMucmVzb3VyY2VzKTtcblxuICAgICAgICAgICAgICAgIF90aGlzLmh5cGVydGllc0xpc3QucHVzaChoeXBlcnR5KTtcblxuICAgICAgICAgICAgICAgIC8vbWVzc2FnZSB0byByZWdpc3RlciB0aGUgbmV3IGh5cGVydHksIHdpdGhpbiB0aGUgZG9tYWluIHJlZ2lzdHJ5XG4gICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2VWYWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZTtcbiAgICAgICAgICAgICAgICBsZXQgcmVnaXN0cmF0aW9uRXhwaXJlcyA9IF90aGlzLmV4cGlyZXNUaW1lO1xuXG4gICAgICAgICAgICAgICAgLy8gc2V0IGEgZGlmZmVyZW50IGV4cGlyZXMgdmFsdWUgaWYgY29uZmlndXJlZCBpbiB0aGUgSHlwZXJ0eSBkZXNjcmlwdG9yXG5cbiAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmF0aW9uICYmIGRlc2NyaXB0b3IuY29uZmlndXJhdGlvbi5leHBpcmVzKSByZWdpc3RyYXRpb25FeHBpcmVzID0gZGVzY3JpcHRvci5jb25maWd1cmF0aW9uLmV4cGlyZXM7XG5cbiAgICAgICAgICAgICAgICBpZiAoYWRkcmVzc1VSTC5uZXdBZGRyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgcmVnaXN0ZXJIeXBlcnR5XSByZWdpc3RlcmluZyBuZXcgSHlwZXJ0eSBVUkwnLCBhZGRyZXNzVVJMLmFkZHJlc3NbMF0pO1xuXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlVmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXI6IGVtYWlsVVJMLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yVVJMLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3NVUkwuYWRkcmVzc1swXSxcbiAgICAgICAgICAgICAgICAgICAgZXhwaXJlczogcmVnaXN0cmF0aW9uRXhwaXJlcyxcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBoeXBlcnR5Q2FwYWJpbGl0aWVzLnJlc291cmNlcyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNjaGVtZXM6IGh5cGVydHlDYXBhYmlsaXRpZXMuZGF0YVNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgcnVudGltZTogcnVudGltZSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXNcbiAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgIC8vIHNldCBhIGRpZmZlcmVudCBleHBpcmVzIGlmIGRlZmluZWQgaW4gdGhlIGh5cGVydHkgY29uZmlndXJhdGlvblxuXG4gICAgICAgICAgICAgICAgICBpZiAocDJwSGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVmFsdWUucDJwSGFuZGxlciA9IHAycEhhbmRsZXI7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VWYWx1ZS5wMnBSZXF1ZXN0ZXIgPSBwMnBSZXF1ZXN0ZXI7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSByZWdpc3Rlckh5cGVydHldIHJlZ2lzdGVyaW5nIG5ldyBIeXBlcnR5IGF0IGRvbWFpbiByZWdpc3RyeSAnLCBtZXNzYWdlVmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlID0ge3R5cGU6ICdjcmVhdGUnLCBmcm9tOiBfdGhpcy5yZWdpc3RyeVVSTCwgdG86ICdkb21haW46Ly9yZWdpc3RyeS4nICsgX3RoaXMucmVnaXN0cnlEb21haW4sIGJvZHk6IHt2YWx1ZTogbWVzc2FnZVZhbHVlLCBwb2xpY3k6ICdwb2xpY3knfX07XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IHJlZ2lzdGVySHlwZXJ0eV0gcmVnaXN0ZXJpbmcgcHJldmlvdXNseSByZWdpc3RlcmVkIEh5cGVydHkgVVJMJywgYWRkcmVzc1VSTC5hZGRyZXNzWzBdKTtcblxuICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3VwZGF0ZScsXG4gICAgICAgICAgICAgICAgICAgIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIF90aGlzLnJlZ2lzdHJ5RG9tYWluLFxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBfdGhpcy5yZWdpc3RyeVVSTCxcbiAgICAgICAgICAgICAgICAgICAgYm9keToge3Jlc291cmNlOiBhZGRyZXNzVVJMLmFkZHJlc3NbMF0sIHZhbHVlOiB7IHN0YXR1czogJ2xpdmUnLCB1c2VyOiBlbWFpbFVSTCB9fVxuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgaWYgKHAycEhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5ib2R5LnZhbHVlLnAycEhhbmRsZXIgPSBwMnBIYW5kbGVyO1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLmJvZHkudmFsdWUucDJwUmVxdWVzdGVyID0gcDJwUmVxdWVzdGVyO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSByZWdpc3Rlckh5cGVydHldIEh5cGVydHkgcmVnaXN0cmF0aW9uIGF0IGRvbWFpbiByZWdpc3RyeSAgLSAnLCBtZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZVdpdGhSZXRyaWVzKG1lc3NhZ2UsIF90aGlzLnJlZ2lzdHJhdGlvblJldHJpZXMsIChyZXBseSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgcmVnaXN0ZXJIeXBlcnR5XSBIeXBlcnR5IHJlZ2lzdHJhdGlvbiByZXNwb25zZTogJywgcmVwbHkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXBseS5ib2R5LmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7IHVybDogYWRkcmVzc1VSTC5hZGRyZXNzWzBdfTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocDJwSGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnAycEhhbmRsZXIgPSBwMnBIYW5kbGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnAycFJlcXVlc3RlciA9IHAycFJlcXVlc3RlcjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVwbHkuYm9keS5jb2RlID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgcmVnaXN0ZXJIeXBlcnR5XSBUaGUgdXBkYXRlIHdhcyBub3QgcG9zc2libGUuIFJlZ2lzdGVyaW5nIG5ldyBIeXBlcnR5IGF0IGRvbWFpbiByZWdpc3RyeScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXNlcjogZW1haWxVUkwsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yVVJMLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzVVJMLmFkZHJlc3NbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcmVzOiByZWdpc3RyYXRpb25FeHBpcmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBoeXBlcnR5Q2FwYWJpbGl0aWVzLnJlc291cmNlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTY2hlbWVzOiBoeXBlcnR5Q2FwYWJpbGl0aWVzLmRhdGFTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lOiBydW50aW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHAycEhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VWYWx1ZS5wMnBIYW5kbGVyID0gcDJwSGFuZGxlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VWYWx1ZS5wMnBSZXF1ZXN0ZXIgPSBwMnBSZXF1ZXN0ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHt0eXBlOiAnY3JlYXRlJywgZnJvbTogX3RoaXMucmVnaXN0cnlVUkwsIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIF90aGlzLnJlZ2lzdHJ5RG9tYWluLCBib2R5OiB7dmFsdWU6IG1lc3NhZ2VWYWx1ZSwgcG9saWN5OiAncG9saWN5J319O1xuXG4gICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlV2l0aFJldHJpZXMobWVzc2FnZSwgX3RoaXMucmVnaXN0cmF0aW9uUmV0cmllcywgKHJlcGx5KSA9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IHJlZ2lzdGVySHlwZXJ0eV0gSHlwZXJ0eSByZWdpc3RyYXRpb24gdXBkYXRlIHJlc3BvbnNlOiAnLCByZXBseSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHsgdXJsOiBhZGRyZXNzVVJMLmFkZHJlc3NbMF19O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwMnBIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucDJwSGFuZGxlciA9IHAycEhhbmRsZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucDJwUmVxdWVzdGVyID0gcDJwUmVxdWVzdGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHJlZ2lzdGVyIGFuIEh5cGVydHk6ICcgKyByZXBseSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byByZWdpc3RlciBhbiBIeXBlcnR5OiAnLCByZXBseSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICBsb2cuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy90aW1lciB0byBrZWVwIHRoZSByZWdpc3RyYXRpb24gYWxpdmVcbiAgICAgICAgICAgICAgICAvLyB0aGUgdGltZSBpcyBkZWZpbmVkIGJ5IGEgbGl0dGxlIGxlc3MgdGhhbiBoYWxmIG9mIHRoZSBleHBpcmVzIHRpbWUgZGVmaW5lZFxuICAgICAgICAgICAgICAgIGxldCBrZWVwQWxpdmVUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3VwZGF0ZScsXG4gICAgICAgICAgICAgICAgICAgIGZyb206IF90aGlzLnJlZ2lzdHJ5VVJMLFxuICAgICAgICAgICAgICAgICAgICB0bzogJ2RvbWFpbjovL3JlZ2lzdHJ5LicgKyBfdGhpcy5yZWdpc3RyeURvbWFpbixcbiAgICAgICAgICAgICAgICAgICAgYm9keTogeyByZXNvdXJjZTogYWRkcmVzc1VSTC5hZGRyZXNzWzBdLCB2YWx1ZToge3N0YXR1czogJ2xpdmUnfSwgbWV0aG9kOiAncmVmcmVzaCcgfX07XG5cbiAgICAgICAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1lc3NhZ2UsIChyZXBseSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgcmVnaXN0ZXJIeXBlcnR5XSBLZWVwQWxpdmUgUmVwbHk6ICcsIHJlcGx5KTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sICgoKHJlZ2lzdHJhdGlvbkV4cGlyZXMgLyAxLjEpIC8gMikgKiAxMDAwKSk7XG5cbiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24ocmVhc29uKSB7XG4gICAgICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IHJlZ2lzdGVySHlwZXJ0eV0gRXJyb3I6ICcsIHJlYXNvbik7XG4gICAgICAgICAgICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICByZWplY3QoJ1tSZWdpc3RyeSByZWdpc3Rlckh5cGVydHldICcsIGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIFRvIHVucmVnaXN0ZXIgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgSHlwZXJ0eVxuICAqIEBwYXJhbSAge0h5cGVydHlVUkx9ICAgICAgICAgIEh5cGVydHlVUkwgdXJsICAgICAgICB1cmxcbiAgKi9cbiAgdW5yZWdpc3Rlckh5cGVydHkodXJsKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICBsZXQgaW5kZXggPSAwO1xuXG4gICAgICBmb3JcdChpbmRleCA9IDA7IGluZGV4IDwgX3RoaXMuaHlwZXJ0aWVzTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgbGV0IGh5cGVydHkgPSBfdGhpcy5oeXBlcnRpZXNMaXN0W2luZGV4XTtcbiAgICAgICAgaWYgKGh5cGVydHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmIChoeXBlcnR5Lmh5cGVydHlVUkwgPT09IHVybCkge1xuICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3VuZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmVqZWN0KCdIeXBlcnR5IG5vdCBmb3VuZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVsZXRlIF90aGlzLmh5cGVydGllc0xpc3RbaW5kZXhdO1xuICAgICAgICByZXNvbHZlKCdIeXBlcnR5IHN1Y2Nlc3NmdWxseSBkZWxldGVkJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICAqIFRvIGRpc2NvdmVyIHByb3RvY29sIHN0dWJzIGF2YWlsYWJsZSBpbiB0aGUgcnVudGltZSBmb3IgYSBjZXJ0YWluIGRvbWFpbi4gSWYgYXZhaWxhYmxlLCBpdCByZXR1cm5zIHRoZSBydW50aW1lIHVybCBmb3IgdGhlIHByb3RvY29sIHN0dWIgdGhhdCBjb25uZWN0cyB0byB0aGUgcmVxdWVzdGVkIGRvbWFpbi4gUmVxdWlyZWQgYnkgdGhlIHJ1bnRpbWUgQlVTIHRvIHJvdXRlIG1lc3NhZ2VzIHRvIHJlbW90ZSBzZXJ2ZXJzIG9yIHBlZXJzIChkbyB3ZSBuZWVkIHNvbWV0aGluZyBzaW1pbGFyIGZvciBIeXBlcnRpZXM/KS5cbiAgKiBAcGFyYW0gIHtEb21haW5VUkx9ICAgICAgICAgICBEb21haW5VUkwgICAgICAgICAgICB1cmxcbiAgKiBAcmV0dXJuIHtSdW50aW1lVVJMfSAgICAgICAgICAgUnVudGltZVVSTFxuICAqL1xuICBkaXNjb3ZlclByb3Rvc3R1Yih1cmwpIHtcbiAgICBpZiAoIXVybCkgdGhyb3cgbmV3IEVycm9yKCdQYXJhbWV0ZXIgdXJsIG5lZWRlZCcpO1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgZGl2aWRlZFVSTCA9IGRpdmlkZVVSTCh1cmwpO1xuICAgIGxldCBkb21haW5VUkwgPSBkaXZpZGVkVVJMLmRvbWFpbjtcblxuICAgIGlmIChfdGhpcy5wcm90b3N0dWJzTGlzdC5oYXNPd25Qcm9wZXJ0eShkb21haW5VUkwpICYmIF90aGlzLnByb3Rvc3R1YnNMaXN0W2RvbWFpblVSTF0uc3RhdHVzID09PSBTVEFUVVMuTElWRSkge1xuICAgICAgcmV0dXJuIChfdGhpcy5wcm90b3N0dWJzTGlzdFtkb21haW5VUkxdKTtcbiAgICB9IGVsc2Uge1xuXG4gICAgICBfdGhpcy5wcm90b3N0dWJzTGlzdFtkb21haW5VUkxdID0ge1xuICAgICAgICBzdGF0dXM6IFNUQVRVUy5ERVBMT1lJTkdcbiAgICAgIH07XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcignW1JlZ2lzdHJ5IC0gZGlzY292ZXJQcm90b1N0dWIgXSBNZXNzYWdlIE5vZGUgUHJvdG9zdHViIE5vdCBGb3VuZC4gQ3JlYXRpbmcgb25lJyk7XG5cbiAgICB9XG5cbiAgfVxuXG4gIC8qKlxuICAqIFRvIGRpc2NvdmVyIHByb3RvY29sIHN0dWJzIGF2YWlsYWJsZSBpbiB0aGUgcnVudGltZSBmb3IgYSBjZXJ0YWluIHJlbW90ZSBydW50aW1lIFVSTC4gSWYgYXZhaWxhYmxlLCBpdCByZXR1cm5zIHRoZSBydW50aW1lIHVybCBmb3IgdGhlIHByb3RvY29sIHN0dWIgdGhhdCBjb25uZWN0cyB0byB0aGUgcmVxdWVzdGVkIGRvbWFpbi5cbiAgKiBSZXF1aXJlZCBieSB0aGUgcnVudGltZSBCVVMgdG8gcm91dGUgbWVzc2FnZXMgdG8gcmVtb3RlIHNlcnZlcnMgb3IgcGVlcnMgKGRvIHdlIG5lZWQgc29tZXRoaW5nIHNpbWlsYXIgZm9yIEh5cGVydGllcz8pLlxuICAqIEBwYXJhbSAge1J1bnRpbWVVUkx9ICAgICAgICAgICBSdW50aW1lVVJMICAgICAgICAgICAgdXJsXG4gICogQHJldHVybiB7cDJwUmVxdWVzdGVyfSAgICAgICAgICAgUnVudGltZVVSTFxuICAqL1xuICBkaXNjb3ZlclAyUFN0dWIocnVudGltZVVSTCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAocnVudGltZVVSTCkge1xuXG4gICAgICBpZiAoX3RoaXMucDJwUmVxdWVzdGVyU3R1Yi5oYXNPd25Qcm9wZXJ0eShydW50aW1lVVJMKSAmJiBfdGhpcy5wMnBSZXF1ZXN0ZXJTdHViW3J1bnRpbWVVUkxdLnN0YXR1cyA9PT0gU1RBVFVTLkxJVkUpIHtcbiAgICAgICAgcmV0dXJuIChfdGhpcy5wMnBSZXF1ZXN0ZXJTdHViW3J1bnRpbWVVUkxdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF90aGlzLnAycFJlcXVlc3RlclN0dWJbcnVudGltZVVSTF0gPSB7XG4gICAgICAgICAgc3RhdHVzOiBTVEFUVVMuQ1JFQVRFRFxuICAgICAgICB9O1xuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignW1JlZ2lzdHJ5IC0gZGlzY292ZXJQMlBTdHViIF0gUDJQIFJlcXVlc3RlciBTdHViIE5vdCBGb3VuZC4gQ3JlYXRpbmcgb25lJyk7XG5cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuXG4gICAgICBpZiAoX3RoaXMucDJwSGFuZGxlclN0dWIuaGFzT3duUHJvcGVydHkoX3RoaXMucnVudGltZVVSTCkpIHtcbiAgICAgICAgcmV0dXJuIChfdGhpcy5wMnBIYW5kbGVyU3R1YltfdGhpcy5ydW50aW1lVVJMXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5wMnBIYW5kbGVyU3R1YltfdGhpcy5ydW50aW1lVVJMXSA9IHtcbiAgICAgICAgICBzdGF0dXM6IFNUQVRVUy5DUkVBVEVEXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdbUmVnaXN0cnkgLSBkaXNjb3ZlclAyUFN0dWIgXSBQMlAgSGFuZGxlciBTdHViIE5vdCBGb3VuZC4nKTtcbiAgICAgIH1cblxuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICAqIFRvIHJlZ2lzdGVyIGEgbmV3IFByb3RvY29sIFN0dWIgaW4gdGhlIHJ1bnRpbWUgaW5jbHVkaW5nIGFzIGlucHV0IHBhcmFtZXRlcnMgdGhlIGZ1bmN0aW9uIHRvIHBvc3RNZXNzYWdlLCB0aGUgRG9tYWluVVJMIHRoYXQgaXMgY29ubmVjdGVkIHdpdGggdGhlIHN0dWIsIHdoaWNoIHJldHVybnMgdGhlIFJ1bnRpbWVVUkwgYWxsb2NhdGVkIHRvIHRoZSBuZXcgUHJvdG9jb2xTdHViLlxuICAgKiBAcGFyYW0gIHtTYW5kYm94fSAgICAgICBTYW5kYm94XG4gICAqIEBwYXJhbSAge3N0dWJJRH0gICAgICAgIERvbWFpbiBvciBoeXBlcnR5IHJ1bnRpbWUgdG8gcmVnaXN0ZXIgdGhlIHN0dWJcbiAgICogQHBhcmFtICB7ZGVzY3JpcHRvclVSTH0gICAgIENhdGFsb2d1ZSBVUkwgb2YgdGhlIFByb3Rvc3R1YiBkZXNjcmlwdG9yXG4gICAqIEBwYXJhbSAge2Rlc2NyaXB0b3J9ICAgICBQcm90b3N0dWIgZGVzY3JpcHRvclxuICAgKiBAcmV0dXJuIHtSdW50aW1lUHJvdG9TdHViVVJMfVxuICAgKi9cbiAgcmVnaXN0ZXJTdHViKHNhbmRib3gsIHN0dWJJRCwgcDJwQ29uZmlnLCBkZXNjcmlwdG9yVVJMLCBkZXNjcmlwdG9yKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGxldCBfc3R1YkRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICBsZXQgcnVudGltZVByb3RvU3R1YlVSTDtcblxuICAgICAgLy9jaGVjayBpZiBtZXNzYWdlQnVzIGlzIHJlZ2lzdGVyZWQgaW4gcmVnaXN0cnkgb3Igbm90XG4gICAgICBpZiAoX3RoaXMuX21lc3NhZ2VCdXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZWplY3QoJ01lc3NhZ2VCdXMgbm90IGZvdW5kIG9uIHJlZ2lzdGVyU3R1YicpO1xuICAgICAgfVxuXG4gICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5IC0gcmVnaXN0ZXJTdHViXSAtIHN0dWJJRCAnLCBzdHViSUQpO1xuXG4gICAgICAvKiBpZiAoIXN0dWJJRC5pbmRleE9mKCdtc2ctbm9kZS4nKSkge1xuICAgICAgICBzdHViSUQgPSBzdHViSUQuc3Vic3RyaW5nKHN0dWJJRC5pbmRleE9mKCcuJykgKyAxKTtcbiAgICAgIH0qL1xuXG4gICAgICBsZXQgUDJQUmVxdWVzdGVyU3R1YjtcblxuICAgICAgaWYgKHAycENvbmZpZykge1xuXG4gICAgICAgIGlmIChwMnBDb25maWcuaGFzT3duUHJvcGVydHkoJ2lzSGFuZGxlclN0dWInKSAmJiBwMnBDb25maWcuaXNIYW5kbGVyU3R1Yikge1xuICAgICAgICAgIHJ1bnRpbWVQcm90b1N0dWJVUkwgPSBfdGhpcy5wMnBIYW5kbGVyVVJMO1xuXG4gICAgICAgICAgX3RoaXMucDJwSGFuZGxlclN0dWJbc3R1YklEXSA9IHtcbiAgICAgICAgICAgIHVybDogcnVudGltZVByb3RvU3R1YlVSTCxcbiAgICAgICAgICAgIHN0YXR1czogU1RBVFVTLkNSRUFURURcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgX3RoaXMucDJwSGFuZGxlckFzc29jaWF0aW9uW190aGlzLnJ1bnRpbWVVUkxdID0gW107XG5cbiAgICAgICAgICBfdGhpcy5zYW5kYm94ZXNMaXN0LnNhbmRib3hbcnVudGltZVByb3RvU3R1YlVSTF0gPSBzYW5kYm94O1xuICAgICAgICAgIGxvZy5pbmZvKCdbUmVnaXN0cnkgLSByZWdpc3RlclN0dWIgLSBQMlBIYW5kbGVyU3R1Yl0gLSAnLCBzdHViSUQsICcgLSAnLCBydW50aW1lUHJvdG9TdHViVVJMKTtcbiAgICAgICAgICByZXNvbHZlKF90aGlzLnAycEhhbmRsZXJTdHViW3N0dWJJRF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFAyUFJlcXVlc3RlclN0dWIgPSBwMnBDb25maWcucDJwUmVxdWVzdGVyU3R1YjtcbiAgICAgICAgICBydW50aW1lUHJvdG9TdHViVVJMID0gJ3J1bnRpbWU6Ly8nICsgZGl2aWRlVVJMKHAycENvbmZpZy5yZW1vdGVSdW50aW1lVVJMKS5kb21haW4gKyAnL3AycHJlcXVlc3Rlci8nICsgZ2VuZXJhdGVHVUlEKCk7XG4gICAgICAgICAgbG9nLmluZm8oJ1tSZWdpc3RyeSAtIHJlZ2lzdGVyU3R1YiAtIFAyUFJlcXVlc3RlclN0dWJdIC0gJywgUDJQUmVxdWVzdGVyU3R1YiwgJyAtICcsIHJ1bnRpbWVQcm90b1N0dWJVUkwpO1xuXG4gICAgICAgICAgLy8gdG8gYmUgY2xhcmlmaWVkIHdoYXQgaXMgdGhpcyBwMnBIYW5kbGVyQXNzb2NpYXRpb25cbiAgICAgICAgICBfdGhpcy5wMnBIYW5kbGVyQXNzb2NpYXRpb25bX3RoaXMucnVudGltZVVSTF0ucHVzaChydW50aW1lUHJvdG9TdHViVVJMKTtcbiAgICAgICAgICBfdGhpcy5wMnBSZXF1ZXN0ZXJTdHViW3N0dWJJRF0gPSB7XG4gICAgICAgICAgICB1cmw6IHJ1bnRpbWVQcm90b1N0dWJVUkwsXG4gICAgICAgICAgICBzdGF0dXM6IFNUQVRVUy5DUkVBVEVEXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIF90aGlzLnNhbmRib3hlc0xpc3Quc2FuZGJveFtydW50aW1lUHJvdG9TdHViVVJMXSA9IHNhbmRib3g7XG5cbiAgICAgICAgICAvL1NldHVwIFAyUCBSZXF1ZXN0ZXIgcGF0aCBpbnRvIE1OXG5cbiAgICAgICAgICBsZXQgbXNnID0ge1xuICAgICAgICAgICAgdHlwZTogJ3N1YnNjcmliZScsXG4gICAgICAgICAgICBmcm9tOiBfdGhpcy5yZWdpc3RyeVVSTCxcbiAgICAgICAgICAgIHRvOiAnZG9tYWluOi8vbXNnLW5vZGUuJyArIF90aGlzLl9kb21haW4gKyAnL3NtJyxcbiAgICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgICAgc3Vic2NyaWJlOiBbcnVudGltZVByb3RvU3R1YlVSTF0sXG4gICAgICAgICAgICAgIHNvdXJjZTogX3RoaXMucmVnaXN0cnlVUkxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobXNnLCAocmVwbHkpID0+IHtcbiAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSAtIHJlZ2lzdGVyIFN0dWJdIHAycFJlcXVlc3RlciBwYXRoIHNldHVwOiAnLCByZXBseSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXNvbHZlKF90aGlzLnAycFJlcXVlc3RlclN0dWJbc3R1YklEXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbUmVnaXN0cnkgLSByZWdpc3RlclN0dWIgLSBOb3JtYWwgU3R1Yl0gZGVzY3JpcHRvcicsIGRlc2NyaXB0b3IpO1xuXG4gICAgICAgIGlmICggIXR5cGVvZihkZXNjcmlwdG9yKSA9PT0gJ3N0cmluZycgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgnX2ludGVyd29ya2luZycpICYmIGRlc2NyaXB0b3IuX2ludGVyd29ya2luZykge1xuICAgICAgICAgIHJ1bnRpbWVQcm90b1N0dWJVUkwgPSAncnVudGltZTovLycgKyBzdHViSUQgKyAnL3Byb3Rvc3R1Yi8nICsgJ3NjaGVtZTEnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJ1bnRpbWVQcm90b1N0dWJVUkwgPSAncnVudGltZTovLycgKyBzdHViSUQgKyAnL3Byb3Rvc3R1Yi8nICsgZ2VuZXJhdGVHVUlEKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5IC0gcmVnaXN0ZXJTdHViIC0gTm9ybWFsIFN0dWJdIC0gJywgc3R1YklEKTtcblxuICAgICAgICAvLyBUT0RPOiBPcHRpbWl6ZSB0aGlzXG4gICAgICAgIF90aGlzLnByb3Rvc3R1YnNMaXN0W3N0dWJJRF0gPSB7XG4gICAgICAgICAgdXJsOiBydW50aW1lUHJvdG9TdHViVVJMLFxuICAgICAgICAgIHN0YXR1czogU1RBVFVTLkRFUExPWUlOR1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChkZXNjcmlwdG9yVVJMKSB7XG4gICAgICAgICAgX3RoaXMucHJvdG9zdHVic0xpc3Rbc3R1YklEXS5kZXNjcmlwdG9yVVJMID0gZGVzY3JpcHRvclVSTDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfc3R1YkRlc2NyaXB0b3IgJiYgKF9zdHViRGVzY3JpcHRvci5pbnRlcndvcmtpbmcpKSB7XG4gICAgICAgICAgX3RoaXMucHJvdG9zdHVic0xpc3Rbc3R1YklEXS5pbnRlcndvcmtpbmcgPSBfc3R1YkRlc2NyaXB0b3IuaW50ZXJ3b3JraW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuc2FuZGJveGVzTGlzdC5zYW5kYm94W3J1bnRpbWVQcm90b1N0dWJVUkxdID0gc2FuZGJveDtcblxuICAgICAgICByZXNvbHZlKF90aGlzLnByb3Rvc3R1YnNMaXN0W3N0dWJJRF0pO1xuICAgICAgfVxuXG4gICAgICAvLyByZXNvbHZlKHJ1bnRpbWVQcm90b1N0dWJVUkwpO1xuXG4gICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5hZGRMaXN0ZW5lcihydW50aW1lUHJvdG9TdHViVVJMICsgJy9zdGF0dXMnLCAobXNnKSA9PiB7XG4gICAgICAgIF90aGlzLl9vblByb3Rvc3R1YlN0YXR1c0V2ZW50KG1zZyk7XG4gICAgICB9KTtcblxuICAgIH0pO1xuXG4gIH1cblxuICAvKipcbiAgKiBUbyBQcm9jZXNzIHN0YXR1cyBldmVudHMgZmlyZWQgYnkgcHJvdG9zdHVic1xuICAqIEBwYXJhbSAge01lc3NhZ2V9ICAgbWVzc2FnZSAgICAgRXZlbnQgTWVzc2FnZVxuICAqL1xuXG4gIF9vblByb3Rvc3R1YlN0YXR1c0V2ZW50KG1zZykge1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSBvblByb3Rvc3R1YlN0YXR1c0V2ZW50XTogJywgbXNnKTtcblxuICAgIGxldCBydW50aW1lUHJvdG9TdHViVVJMID0gbXNnLmZyb207XG5cbiAgICBpZiAoIW1zZy50by5pbmNsdWRlcygnL3N0YXR1cycpKSB7XG4gICAgICBsb2cuZXJyb3IoJ1tSZWdpc3RyeSBvblByb3Rvc3R1YlN0YXR1c0V2ZW50XSBOb3QgU3RhdHVzIEV2ZW50OiAnLCBtc2cpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHByb2Nlc3Mgc3RhdHVzIGV2ZW50cyBmcm9tIG1lc3NhZ2Ugbm9kZSBwcm90b3N0dWJzXG5cbiAgICBpZiAocnVudGltZVByb3RvU3R1YlVSTC5pbmNsdWRlcygnL3Byb3Rvc3R1Yi8nKSkge1xuXG4gICAgLy8gVE9ETzogdW5jb21tZW50IGJlbG93IHdoZW4gcHJvdG9zdHVicyBhcmUgdXBkYXRlZCB3aXRoIG5ldyBzdGF0dXMgdmFsdWUgXCJsaXZlXCJcbiAgICAgIE9iamVjdC5rZXlzKF90aGlzLnByb3Rvc3R1YnNMaXN0KS5maWx0ZXIoKGtleSkgPT4ge1xuICAgICAgICByZXR1cm4gX3RoaXMucHJvdG9zdHVic0xpc3Rba2V5XS51cmwgPT09IHJ1bnRpbWVQcm90b1N0dWJVUkw7XG4gICAgICB9KS5tYXAoKGtleSkgPT4ge1xuICAgICAgICBfdGhpcy5wcm90b3N0dWJzTGlzdFtrZXldLnN0YXR1cyA9IG1zZy5ib2R5LnZhbHVlO1xuXG4gICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSAtIG9uUHJvdG9zdHViU3RhdHVzRXZlbnRdIC0gUHJvdG9zdHViIHN0YXR1czogJywgX3RoaXMucHJvdG9zdHVic0xpc3Rba2V5XSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgeyAvLyBwcm9jZXNzIHN0YXR1cyBldmVudHMgZnJvbSBwMnAgY29ubmVjdGlvbnNcblxuICAgICAgaWYgKG1zZy5ib2R5LnJlc291cmNlKSB7XG4gICAgICAgIGxldCByZW1vdGVSdW50aW1lVVJMID0gbXNnLmJvZHkucmVzb3VyY2U7XG5cbiAgICAgICAgaWYgKF90aGlzLnAycENvbm5lY3Rpb25MaXN0W3JlbW90ZVJ1bnRpbWVVUkxdKSB7XG4gICAgICAgICAgX3RoaXMucDJwQ29ubmVjdGlvbkxpc3RbcmVtb3RlUnVudGltZVVSTF0uc3RhdHVzID0gIG1zZy5ib2R5LnZhbHVlO1xuICAgICAgICAgIF90aGlzLnAycENvbm5lY3Rpb25MaXN0W3JlbW90ZVJ1bnRpbWVVUkxdLnVybCA9ICBydW50aW1lUHJvdG9TdHViVVJMO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgbGV0ICBwMnBDb25uZWN0aW9uID0ge1xuICAgICAgICAgICAgc3RhdHVzOiBtc2cuYm9keS52YWx1ZSxcbiAgICAgICAgICAgIHVybDogcnVudGltZVByb3RvU3R1YlVSTFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBfdGhpcy5wMnBDb25uZWN0aW9uTGlzdFtyZW1vdGVSdW50aW1lVVJMXSA9ICBwMnBDb25uZWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IC0gb25Qcm90b3N0dWJTdGF0dXNFdmVudF0gLSBQMlBDb25uZWN0aW9uIHN0YXR1czogJywgX3RoaXMucDJwQ29ubmVjdGlvbkxpc3RbcmVtb3RlUnVudGltZVVSTF0pO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBQMlAgUmVxdWVzdGVyIHByb3Rvc3R1YiBpZiBpdCBpcyBjb21pbmcgZnJvbSB0aGVyZVxuICAgICAgICBpZiAocnVudGltZVByb3RvU3R1YlVSTC5pbmNsdWRlcygnL3AycHJlcXVlc3Rlci8nKSkge1xuICAgICAgICAgIF90aGlzLnAycFJlcXVlc3RlclN0dWJbcmVtb3RlUnVudGltZVVSTF0uc3RhdHVzID0gbXNnLmJvZHkudmFsdWU7XG5cbiAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgLSBvblByb3Rvc3R1YlN0YXR1c0V2ZW50XSAtIFAyUCBSZXF1ZXN0ZXIgc3RhdHVzOiAnLCBfdGhpcy5wMnBSZXF1ZXN0ZXJTdHViW3JlbW90ZVJ1bnRpbWVVUkxdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBpZiBmcm9tIFAyUEhhbmRsZXIgd2l0aCBzdGF0dXMgZGlzY29uZW5jdGVkLCBsZXRzIHJlbW92ZSBmcm9tIHAycENvbm5lY3Rpb25MaXN0XG4gICAgICAgICAgaWYgKG1zZy5ib2R5LnZhbHVlID09PSAnZGlzY29ubmVjdGVkJykgZGVsZXRlIF90aGlzLnAycENvbm5lY3Rpb25MaXN0W3JlbW90ZVJ1bnRpbWVVUkxdO1xuICAgICAgICB9XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChydW50aW1lUHJvdG9TdHViVVJMLmluY2x1ZGVzKCcvcDJwcmVxdWVzdGVyLycpKSB7XG4gICAgICAgICAgLy8gSXQgaXMgYW4gZXZlbnQgZnJvbSBQMlAgUmVxdWVzdGVyIHdpdGhvdXQgbWFuZGF0b3J5IFwicmVzb3VyY2VcIiBmaWVsZFxuICAgICAgICAgIGxvZy5lcnJvcignW1JlZ2lzdHJ5IG9uUHJvdG9zdHViU3RhdHVzRXZlbnRdIHJlc291cmNlIG1pc3Npbmc6ICcsIG1zZyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEl0IGlzIGFuIGV2ZW50IGZyb20gUDJQIEhhbmRsZXJcbiAgICAgICAgICBfdGhpcy5wMnBIYW5kbGVyU3R1YltfdGhpcy5ydW50aW1lVVJMXS5zdGF0dXMgPSBtc2cuYm9keS52YWx1ZTtcblxuICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSAtIG9uUHJvdG9zdHViU3RhdHVzRXZlbnRdIC0gUDJQSGFuZGxlciBTdHViIHN0YXR1czogJywgX3RoaXMucDJwSGFuZGxlclN0dWJbX3RoaXMucnVudGltZVVSTF0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG5cbiAgfVxuXG4gIC8qKlxuICAqIFRvIHVucmVnaXN0ZXIgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgcHJvdG9jb2wgc3R1YlxuICAqIEBwYXJhbSAge0h5cGVydHlSdW50aW1lVVJMfSAgIEh5cGVydHlSdW50aW1lVVJMICAgICBoeXBlcnR5UnVudGltZVVSTFxuICAqL1xuICB1bnJlZ2lzdGVyU3R1YihoeXBlcnR5UnVudGltZVVSTCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgIGlmIChfdGhpcy5wcm90b3N0dWJzTGlzdC5oYXNPd25Qcm9wZXJ0eShoeXBlcnR5UnVudGltZVVSTCkpIHtcbiAgICAgICAgZGVsZXRlIF90aGlzLnByb3Rvc3R1YnNMaXN0W2h5cGVydHlSdW50aW1lVVJMXTtcbiAgICAgICAgcmVzb2x2ZSgnUHJvdG9zdHViVVJMIHJlbW92ZWQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlamVjdCgnRXJyb3Igb24gdW5yZWdpc3RlclN0dWI6IEh5cGVydHkgbm90IGZvdW5kJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVG8gcmVnaXN0ZXIgYSBuZXcgSWRlbnRpdHkgUHJvdmlkZXIgcHJveHkgaW4gdGhlIHJ1bnRpbWUgaW5jbHVkaW5nIGFzIGlucHV0IHBhcmFtZXRlcnMgdGhlIGZ1bmN0aW9uIHRvIHBvc3RNZXNzYWdlLCB0aGUgRG9tYWluVVJMIHRoYXQgaXMgY29ubmVjdGVkIHdpdGggdGhlIHN0dWIsIHdoaWNoIHJldHVybnMgdGhlIFJ1bnRpbWVVUkwgYWxsb2NhdGVkIHRvIHRoZSBuZXcgUHJvdG9jb2xTdHViLlxuICAgKiBAcGFyYW0ge1NhbmRib3h9ICAgICAgICBTYW5kYm94XG4gICAqIEBwYXJhbSAge0RvbWFpblVSTH0gICAgIERvbWFpblVSTCBzZXJ2aWNlIHByb3ZpZGVyIGRvbWFpblxuICAgKiBAcmV0dXJuIHtSdW50aW1lSWRwUHJveHlVUkx9XG4gICAqL1xuICByZWdpc3RlcklkcFByb3h5KHNhbmRib3gsIGRvbWFpblVSTCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgIGxldCBpZHBQcm94eVN0dWJVUkw7XG5cbiAgICAgIC8vY2hlY2sgaWYgbWVzc2FnZUJ1cyBpcyByZWdpc3RlcmVkIGluIHJlZ2lzdHJ5IG9yIG5vdFxuICAgICAgaWYgKF90aGlzLl9tZXNzYWdlQnVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVqZWN0KCdNZXNzYWdlQnVzIG5vdCBmb3VuZCBvbiByZWdpc3RlclN0dWInKTtcbiAgICAgIH1cblxuICAgICAgaWRwUHJveHlTdHViVVJMID0gJ2RvbWFpbi1pZHA6Ly8nICsgZG9tYWluVVJMICsgJy9zdHViLycgKyBnZW5lcmF0ZUdVSUQoKTtcblxuICAgICAgLy8gVE9ETzogT3B0aW1pemUgdGhpc1xuICAgICAgX3RoaXMuaWRwUHJveHlMaXN0W2RvbWFpblVSTF0gPSB7XG4gICAgICAgIHVybDogaWRwUHJveHlTdHViVVJMLFxuICAgICAgICBzdGF0dXM6IFNUQVRVUy5ERVBMT1lJTkdcbiAgICAgIH07XG5cbiAgICAgIF90aGlzLnNhbmRib3hlc0xpc3Quc2FuZGJveFtpZHBQcm94eVN0dWJVUkxdID0gc2FuZGJveDtcblxuICAgICAgLy8gc2FuZGJveC5hZGRMaXN0ZW5lcignKicsIGZ1bmN0aW9uKG1zZykge1xuICAgICAgLy8gICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtc2cpO1xuICAgICAgLy8gfSk7XG5cbiAgICAgIHJlc29sdmUoaWRwUHJveHlTdHViVVJMKTtcblxuICAgICAgX3RoaXMuX21lc3NhZ2VCdXMuYWRkTGlzdGVuZXIoaWRwUHJveHlTdHViVVJMICsgJy9zdGF0dXMnLCAobXNnKSA9PiB7XG4gICAgICAgIF90aGlzLl9vbklkcFByb3h5U3RhdHVzRXZlbnQobXNnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogVG8gUHJvY2VzcyBzdGF0dXMgZXZlbnRzIGZpcmVkIGJ5IElkcCBQcm94aWVzXG4gICogQHBhcmFtICB7TWVzc2FnZX0gICBtZXNzYWdlICAgICBFdmVudCBNZXNzYWdlXG4gICovXG5cbiAgX29uSWRwUHJveHlTdGF0dXNFdmVudChtc2cpIHtcblxuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgb25JZHBQcm94eVN0YXR1c0V2ZW50XTogJywgbXNnKTtcblxuICAgIGxldCBpZHBQcm94eVVSTCA9IG1zZy5mcm9tO1xuXG4gICAgaWYgKCFtc2cudG8uaW5jbHVkZXMoJy9zdGF0dXMnKSkge1xuICAgICAgbG9nLmVycm9yKCdbUmVnaXN0cnkgb25JZHBQcm94eVN0YXR1c0V2ZW50XSBOb3QgU3RhdHVzIEV2ZW50OiAnLCBtc2cpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIE9iamVjdC5rZXlzKF90aGlzLmlkcFByb3h5TGlzdCkuZmlsdGVyKChrZXkpID0+IHtcbiAgICAgIHJldHVybiBfdGhpcy5pZHBQcm94eUxpc3Rba2V5XS51cmwgPT09IGlkcFByb3h5VVJMO1xuICAgIH0pLm1hcCgoa2V5KSA9PiB7XG4gICAgICBfdGhpcy5pZHBQcm94eUxpc3Rba2V5XS5zdGF0dXMgPSBtc2cuYm9keS52YWx1ZTtcblxuICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IC0gb25JZHBQcm94eVN0YXR1c0V2ZW50XSAtIElkcCBQcm94eSBzdGF0dXM6ICcsIF90aGlzLmlkcFByb3h5TGlzdFtrZXldKTtcbiAgICB9KTtcblxuICB9XG5cbiAgLyoqXG4gICogVG8gZGlzY292ZXIgaWRwUHJveHkgc3R1YnMgYXZhaWxhYmxlIGluIHRoZSBydW50aW1lIGZvciBhIGNlcnRhaW4gZG9tYWluLiBJZiBhdmFpbGFibGUsIGl0IHJldHVybnMgdGhlIHJ1bnRpbWUgdXJsIGZvciB0aGUgaWRwUHJveHkgc3R1YiB0aGF0IGNvbm5lY3RzIHRvIHRoZSByZXF1ZXN0ZWQgZG9tYWluLiBSZXF1aXJlZCBieSB0aGUgcnVudGltZSBCVVMgdG8gcm91dGUgbWVzc2FnZXMgdG8gcmVtb3RlIHNlcnZlcnMgb3IgcGVlcnNcbiAgKiBAcGFyYW0gIHtEb21haW5VUkx9ICAgICAgICAgICBEb21haW5VUkwgICAgICAgICAgICB1cmxcbiAgKiBAcmV0dXJuIHtSdW50aW1lVVJMfSAgICAgICAgICAgUnVudGltZVVSTCAgICAgICAgIGlkcFByb3h5VXJsXG4gICovXG4gIGRpc2NvdmVySWRwUHJveHkodXJsKSB7XG4gICAgaWYgKCF1cmwpIHRocm93IG5ldyBFcnJvcignUGFyYW1ldGVyIHVybCBuZWVkZWQnKTtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IGRpdmlkZWRVUkwgPSBkaXZpZGVVUkwodXJsKTtcbiAgICBsZXQgZG9tYWluVVJMID0gZGl2aWRlZFVSTC5kb21haW47XG5cbiAgICBpZiAoX3RoaXMuaWRwUHJveHlMaXN0Lmhhc093blByb3BlcnR5KGRvbWFpblVSTCkgJiYgX3RoaXMuaWRwUHJveHlMaXN0W2RvbWFpblVSTF0uc3RhdHVzID09PSBTVEFUVVMuTElWRSkge1xuICAgICAgcmV0dXJuIChfdGhpcy5pZHBQcm94eUxpc3RbZG9tYWluVVJMXSk7XG4gICAgfSBlbHNlIHtcblxuICAgICAgX3RoaXMuaWRwUHJveHlMaXN0W2RvbWFpblVSTF0gPSB7XG4gICAgICAgIHN0YXR1czogU1RBVFVTLlBST0dSRVNTXG4gICAgICB9O1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tSZWdpc3RyeSAtIGRpc2NvdmVySWRwUHJveHkgXSBJZHAgUHJveHkgTm90IEZvdW5kLiBDcmVhdGluZyBvbmUnKTtcblxuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICogVG8gcmVnaXN0ZXIgYSBuZXcgUG9saWN5IEVuZm9yY2VyIGluIHRoZSBydW50aW1lIGluY2x1ZGluZyBhcyBpbnB1dCBwYXJhbWV0ZXJzIHRoZSBmdW5jdGlvbiB0byBwb3N0TWVzc2FnZSwgdGhlIEh5cGVydHlVUkwgYXNzb2NpYXRlZCB3aXRoIHRoZSBQRVAsIHdoaWNoIHJldHVybnMgdGhlIFJ1bnRpbWVVUkwgYWxsb2NhdGVkIHRvIHRoZSBuZXcgUG9saWN5IEVuZm9yY2VyIGNvbXBvbmVudC5cbiAgKiBAcGFyYW0gIHtNZXNzYWdlLk1lc3NhZ2V9IHBvc3RNZXNzYWdlIHBvc3RNZXNzYWdlXG4gICogQHBhcmFtICB7SHlwZXJ0eVVSTH0gICAgICAgICAgSHlwZXJ0eVVSTCAgICAgICAgICAgIGh5cGVydHlcbiAgKiBAcmV0dXJuIHtIeXBlcnR5UnVudGltZVVSTH0gICBIeXBlcnR5UnVudGltZVVSTFxuICAqL1xuICByZWdpc3RlclBFUChwb3N0TWVzc2FnZSwgaHlwZXJ0eSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkge1xuICAgICAgLy9UT0RPIGNoZWNrIHdoYXQgcGFyYW1ldGVyIGluIHRoZSBwb3N0TWVzc2FnZSB0aGUgcGVwIGlzLlxuICAgICAgX3RoaXMucGVwTGlzdFtoeXBlcnR5XSA9IHBvc3RNZXNzYWdlO1xuICAgICAgcmVzb2x2ZSgnUEVQIHJlZ2lzdGVyZWQgd2l0aCBzdWNjZXNzJyk7XG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICAqIFRvIHVucmVnaXN0ZXIgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgcHJvdG9jb2wgc3R1YlxuICAqIEBwYXJhbSAge0h5cGVydHlSdW50aW1lVVJMfSAgIEh5cGVydHlSdW50aW1lVVJMICAgICBIeXBlcnR5UnVudGltZVVSTFxuICAqL1xuICB1bnJlZ2lzdGVyUEVQKEh5cGVydHlSdW50aW1lVVJMKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgbGV0IHJlc3VsdCA9IF90aGlzLnBlcExpc3RbSHlwZXJ0eVJ1bnRpbWVVUkxdO1xuXG4gICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVqZWN0KCdQZXAgTm90IGZvdW5kLicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSgnUEVQIHN1Y2Nlc3NmdWxseSByZW1vdmVkLicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIH1cblxuICAvKipcbiAgKiBUbyBkaXNjb3ZlciBzYW5kYm94ZXMgYXZhaWxhYmxlIGluIHRoZSBydW50aW1lIGZvciBhIGNlcnRhaW4gZG9tYWluIGFuZCBhIGNlcnRhaW4gc2V0IG9mIGNhcGFiaWxpdGllcy4gUmVxdWlyZWQgYnkgdGhlIHJ1bnRpbWUgVUEgdG8gYXZvaWQgbW9yZSB0aGFuIG9uZSBzYW5kYm94IGZvciB0aGUgc2FtZSBkb21haW4uXG4gICogQHBhcmFtICB7RG9tYWluVVJMfSBEb21haW5VUkwgdXJsXG4gICogQHJldHVybiB7UnVudGltZVNhbmRib3h9ICAgICAgICAgICBSdW50aW1lU2FuZGJveFxuICAqL1xuICBnZXRTYW5kYm94KHVybCwgY29uc3RyYWludHMpIHtcbiAgICBpZiAoIXVybCkgdGhyb3cgbmV3IEVycm9yKCdQYXJhbWV0ZXIgdXJsIG5lZWRlZCcpO1xuXG4gICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IGdldFNhbmRib3hdIGdldFNhbmRib3ggZm9yOiAnLCB1cmwsICcgYW5kIGNhcGFiaWxpdGllczogJywgY29uc3RyYWludHMpO1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgIGxldCByZXF1ZXN0O1xuXG4gICAgICAvL2ZpcnN0IHRyeSB0byBmaW5kIHRoZSB1cmwgaW4gdGhlIGFwcFNhbmRib3ggbGlzdFxuICAgICAgcmVxdWVzdCA9IF90aGlzLnNhbmRib3hlc0xpc3QuYXBwU2FuZGJveFt1cmxdO1xuXG4gICAgICAvL2lmIG5vIGFwcFNhbmRib3ggd2FzIGZvdW5kLCB0cnkgdG8gc2VhcmNoIGluIHRoZSBub3JtYWwgc2FuZGJveGVzIGxpc3RcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXF1ZXN0ID0gX3RoaXMuc2FuZGJveGVzTGlzdC5zYW5kYm94W3VybF07XG5cbiAgICAgICAgaWYgKCFyZXF1ZXN0KSB7XG5cbiAgICAgICAgICBsZXQgZG9tYWluO1xuXG4gICAgICAgICAgaWYgKHVybC5pbmNsdWRlcygnOi8vJykpIHtcbiAgICAgICAgICAgIGRvbWFpbiA9IGRpdmlkZVVSTCh1cmwpLmRvbWFpbjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZG9tYWluID0gdXJsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIHNlYXJjaCBpbiB0aGUgc2FuZGJveGVzIGxpc3QgZm9yIGEgZW50cnkgY29udGFpbmluZyB0aGUgZG9tYWluIGdpdmVuXG4gICAgICAgICAgZm9yIChsZXQgc2FuZGJveCBpbiBfdGhpcy5zYW5kYm94ZXNMaXN0LnNhbmRib3gpIHtcbiAgICAgICAgICAgIC8vdG9kbzogdW5jb21tZW50IHNhbmRib3ggY29uc3RyYWludHMgbWF0Y2ggY29uZGl0aW9uIHdpdGggcnVudGltZSBzaGFyaW5nXG4gICAgICAgICAgICBpZiAoc2FuZGJveC5pbmNsdWRlcyhkb21haW4pICYmIF90aGlzLnNhbmRib3hlc0xpc3Quc2FuZGJveFtzYW5kYm94XS5tYXRjaGVzKGNvbnN0cmFpbnRzKSkge1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gX3RoaXMuc2FuZGJveGVzTGlzdC5zYW5kYm94W3NhbmRib3hdO1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IE9iamVjdC5rZXlzKGNvbnN0cmFpbnRzKS5maWx0ZXIoY29uc3RyYWludCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChjb25zdHJhaW50ID09PSAnYnJvd3NlcicgJiYgY3VycmVudC50eXBlID09PSBTYW5kYm94VHlwZS5OT1JNQUwpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgKGNvbnN0cmFpbnQgPT09ICd3aW5kb3dTYW5ib3gnICYmIGN1cnJlbnQudHlwZSA9PT0gU2FuZGJveFR5cGUuV0lORE9XKTtcblxuICAgICAgICAgICAgICB9KS5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgICAgICAgIGlmIChtYXRjaCkgeyByZXF1ZXN0ID0gY3VycmVudDsgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJlamVjdCgnbm8gc2FuZGJveCBmb3VuZCBmb3I6ICcgKyB1cmwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShyZXF1ZXN0KTtcbiAgICAgIH1cblxuICAgIH0pO1xuICB9XG5cbiAgcmVzb2x2ZU5vcm1hbFN0dWIodXJsKSB7XG4gICAgLy8gbG9nLmxvZygncmVzb2x2ZU5vcm1hbFN0dWIgJyArIHVybCk7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgIC8vc3BsaXQgdGhlIHVybCB0byBmaW5kIHRoZSBkb21haW5VUkwuIGRlYWxzIHdpdGggdGhlIHVybCBmb3IgZXhhbXBsZSBhczpcbiAgICAgIC8vXCJoeXBlcnR5LXJ1bnRpbWU6Ly9zcDEvcHJvdG9zdHViLzEyM1wiLFxuICAgICAgbGV0IGRpdmlkZWRVUkwgPSBkaXZpZGVVUkwodXJsKTtcbiAgICAgIGxldCBkb21haW5VcmwgPSBkaXZpZGVkVVJMLmRvbWFpbjtcbiAgICAgIGxldCB0eXBlID0gZGl2aWRlZFVSTC50eXBlO1xuXG4gICAgICBpZiAodXJsLmluY2x1ZGVzKF90aGlzLnJ1bnRpbWVVUkwpKSB7XG4gICAgICAgIGxvZy5lcnJvcignW1JlZ2lzdHJ5IC0gcmVzb2x2ZV0gVVJMIHRvIGJlIHJlc29sdmVkIHNob3VsZCBoYXZlIGxpc3RlbmVycyAnLCB1cmwpO1xuICAgICAgICByZWplY3QoJ1tSZWdpc3RyeSAtIHJlc29sdmVdIFVSTCB0byBiZSByZXNvbHZlZCBzaG91bGQgaGF2ZSBsaXN0ZW5lcnMgJywgdXJsKTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVzb2x2ZSB0aGUgZG9tYWluIHByb3Rvc3R1YiBpbiBjYXNlIG9mIGEgbWVzc2FnZSB0byBnbG9iYWwgcmVnaXN0cnlcbiAgICAgIGlmICh1cmwuaW5jbHVkZXMoJ2dsb2JhbDovL3JlZ2lzdHJ5JykpIHtcbiAgICAgICAgZG9tYWluVXJsID0gX3RoaXMuX2RvbWFpbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghZG9tYWluVXJsLmluZGV4T2YoJ21zZy1ub2RlLicpIHx8ICFkb21haW5VcmwuaW5kZXhPZigncmVnaXN0cnkuJykpIHtcbiAgICAgICAgICBkb21haW5VcmwgPSBkb21haW5Vcmwuc3Vic3RyaW5nKGRvbWFpblVybC5pbmRleE9mKCcuJykgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBfdGhpcy5pc0xlZ2FjeSh1cmwpLnRoZW4oKGlzTGVnYWN5KSA9PiB7XG5cbiAgICAgICAgLy8gaWYgbGVnYWN5IGl0IHNob3VsZCByZXNvbHZlIGZvciA8cHJvdG9jb2w+Ljxkb21haW4+XG4gICAgICAgIGlmIChpc0xlZ2FjeSAmJiB0eXBlICE9PSAnZG9tYWluLWlkcCcpIHtcbiAgICAgICAgICBkb21haW5VcmwgPSB0eXBlICsgJy4nICsgZ2V0VXNlcklkZW50aXR5RG9tYWluKHVybCk7XG4gICAgICAgIH1cblxuICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5LnJlc29sdmVdIGRvbWFpblVybDonLCBkb21haW5VcmwpO1xuXG4gICAgICAgIGxldCByZWdpc3RyZWRDb21wb25lbnQ7XG5cbiAgICAgICAgaWYgKHR5cGUgPT09ICdkb21haW4taWRwJykge1xuICAgICAgICAgIHJlZ2lzdHJlZENvbXBvbmVudCAgPSBfdGhpcy5pZHBQcm94eUxpc3QuaGFzT3duUHJvcGVydHkoZG9tYWluVXJsKSA/IF90aGlzLmlkcFByb3h5TGlzdFtkb21haW5VcmxdIDogZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVnaXN0cmVkQ29tcG9uZW50ICA9IF90aGlzLnByb3Rvc3R1YnNMaXN0Lmhhc093blByb3BlcnR5KGRvbWFpblVybCkgPyBfdGhpcy5wcm90b3N0dWJzTGlzdFtkb21haW5VcmxdIDogZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5LnJlc29sdmVdIHJlZ2lzdHJlZDonLCByZWdpc3RyZWRDb21wb25lbnQpO1xuXG4gICAgICAgIC8vIFRPRE8gc2luY2UgdGhlIHByb3Rvc3R1YnMgaGF2ZSBvdGhlciBzdGF0ZXMgdGhpcyBzaG91bGQgYmUgcmV2aXNlZCwgYmVjYXVzZSB0aGUgc3RhdHVzIGNvdWxkIGNoYW5nZSBmcm9tIERFUExPWUVEIHRvIExJVkVcbiAgICAgICAgLy8gVE9ETyBhbmQgdGhpcyB2YWxpZGF0aW9uIHdpbGwgdHJpZ2dlciBhIG5ldyBsb2FkIG9mIElEUFByb3h5IG9yIFByb3Rvc3R1YjtcbiAgICAgICAgaWYgKHJlZ2lzdHJlZENvbXBvbmVudCAmJiByZWdpc3RyZWRDb21wb25lbnQuaGFzT3duUHJvcGVydHkoJ3N0YXR1cycpICYmXG4gICAgICAgICAocmVnaXN0cmVkQ29tcG9uZW50LnN0YXR1cyA9PT0gU1RBVFVTLkRFUExPWUVEIHx8IHJlZ2lzdHJlZENvbXBvbmVudC5zdGF0dXMgPT09IFNUQVRVUy5DUkVBVEVEIHx8XG4gICAgICAgICAgcmVnaXN0cmVkQ29tcG9uZW50LnN0YXR1cyA9PT0gU1RBVFVTLkxJVkUgfHwgcmVnaXN0cmVkQ29tcG9uZW50LnN0YXR1cyA9PT0gU1RBVFVTLkRJU0NPTk5FQ1RFRCkpIHtcbiAgICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5LnJlc29sdmVdIFJlc29sdmVkOiAnLCByZWdpc3RyZWRDb21wb25lbnQudXJsLCByZWdpc3RyZWRDb21wb25lbnQuc3RhdHVzKTtcbiAgICAgICAgICByZXNvbHZlKHJlZ2lzdHJlZENvbXBvbmVudC51cmwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vdG9kbzogdXNlIHN3aXRjaC1jYXNlIHRvIHN1cHBvcnQgb3RoZXIgdHlwZXMgb2Ygc3R1YnNcbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RvbWFpbi1pZHAnKSB7XG5cbiAgICAgICAgICAgIC8vIFRoZSBJZFAgUHJveHkgZG9lcyBub3QgZXhpc3QsIGxldCdzIHByZXBhcmUgaXRzIGRlcGxveW1lbnQgYnkgd2F0Y2hpbmcgaXRzIHN0YXR1c1xuXG4gICAgICAgICAgICBfdGhpcy53YXRjaGluZ1lvdS5vYnNlcnZlKCdpZHBQcm94eUxpc3QnLCAoY2hhbmdlKSA9PiB7XG5cbiAgICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IC0gcmVzb2x2ZU5vcm1hbFN0dWJdIGlkcFByb3h5TGlzdCBjaGFuZ2VkICcgKyBfdGhpcy5pZHBQcm94eUxpc3QpO1xuXG4gICAgICAgICAgICAgIGxldCBrZXlwYXRoID0gY2hhbmdlLmtleXBhdGg7XG5cbiAgICAgICAgICAgICAgaWYgKGtleXBhdGguaW5jbHVkZXMoJ3N0YXR1cycpKVxuICAgICAgICAgICAgICAgIGtleXBhdGggPSBrZXlwYXRoLnJlcGxhY2UoJy5zdGF0dXMnLCAnJyk7XG5cbiAgICAgICAgICAgICAgaWYgKGtleXBhdGggPT09IGRvbWFpblVybCAmJiBjaGFuZ2UubmFtZSA9PT0gJ3N0YXR1cycgJiYgY2hhbmdlLm5ld1ZhbHVlID09PSBTVEFUVVMuQ1JFQVRFRCkge1xuICAgICAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSAtIHJlc29sdmVOb3JtYWxTdHViXSBpZHBQcm94eUxpc3QgaXMgbGl2ZSAnICsgX3RoaXMuaWRwUHJveHlMaXN0W2RvbWFpblVybF0pO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoX3RoaXMuaWRwUHJveHlMaXN0W2RvbWFpblVybF0udXJsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghcmVnaXN0cmVkQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgIC8vIHRoaXMgcHJvY2VzcyB3aWxsIGxvYWQgdGhlIGlkcCBwcm94eSwgYmVjYXVzZSBpcyBub3QgeWV0IHJlZ2lzdGVyZWQ7XG4gICAgICAgICAgICAgIGxvZy5pbmZvKCdbUmVnaXN0cnkucmVzb2x2ZU5vcm1hbFN0dWJdIGRlcGxveSBuZXcgSURQUHJveHk6ICcsIGRvbWFpblVybCk7XG4gICAgICAgICAgICAgIF90aGlzLmxvYWRlci5sb2FkSWRwUHJveHkoZG9tYWluVXJsKS50aGVuKCgpID0+IHtcblxuICAgICAgICAgICAgICAgIGxvZy5pbmZvKCdbUmVnaXN0cnkucmVzb2x2ZU5vcm1hbFN0dWJdIElkUCBQcm94eSBkZXBsb3llZDogJywgX3RoaXMuaWRwUHJveHlMaXN0W2RvbWFpblVybF0pO1xuXG4gICAgICAgICAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcbiAgICAgICAgICAgICAgICBsb2cuZXJyb3IoJ1tSZWdpc3RyeS5yZXNvbHZlXSBFcnJvciByZXNvbHZpbmcgTG9hZCBJRFBQcm94eTogJywgcmVhc29uKTtcbiAgICAgICAgICAgICAgICBfdGhpcy5pZHBQcm94eUxpc3RbZG9tYWluVXJsXS5zdGF0dXMgPSAnZGVwbG95bWVudC1mYWlsZWQnO1xuICAgICAgICAgICAgICAgIHJlamVjdChyZWFzb24pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgLy8gVGhlIHByb3RvU3R1YiBkb2VzIG5vdCBleGlzdCwgbGV0J3MgcHJlcGFyZSBpdHMgZGVwbG95bWVudCBieSB3YXRjaGluZyBpdHMgc3RhdHVzXG5cbiAgICAgICAgICAgIF90aGlzLndhdGNoaW5nWW91Lm9ic2VydmUoJ3Byb3Rvc3R1YnNMaXN0JywgKGNoYW5nZSkgPT4ge1xuXG4gICAgICAgICAgICAgIC8vIGxvZy5sb2coJ1tSZWdpc3RyeSAtIHJlc29sdmVOb3JtYWxTdHViXSBwcm90b3N0dWJzTGlzdCBjaGFuZ2VkICcgKyBfdGhpcy5wcm90b3N0dWJzTGlzdCk7XG5cbiAgICAgICAgICAgICAgbGV0IGtleXBhdGggPSBjaGFuZ2Uua2V5cGF0aDtcblxuICAgICAgICAgICAgICBpZiAoa2V5cGF0aC5pbmNsdWRlcygnc3RhdHVzJykpXG4gICAgICAgICAgICAgICAga2V5cGF0aCA9IGtleXBhdGgucmVwbGFjZSgnLnN0YXR1cycsICcnKTtcblxuICAgICAgICAgICAgICBpZiAoa2V5cGF0aCA9PT0gZG9tYWluVXJsICYmIGNoYW5nZS5uYW1lID09PSAnc3RhdHVzJyAmJiBjaGFuZ2UubmV3VmFsdWUgPT09IFNUQVRVUy5DUkVBVEVEKSB7XG4gICAgICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IC0gcmVzb2x2ZV0gcHJvdG9zdHViIGlzIGxpdmUgJyArIF90aGlzLnByb3Rvc3R1YnNMaXN0W2RvbWFpblVybF0pO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoX3RoaXMucHJvdG9zdHVic0xpc3RbZG9tYWluVXJsXS51cmwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFyZWdpc3RyZWRDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgLy8gbGV0cyBkZXBsb3kgdGhlIHByb3Rvc3R1YlxuICAgICAgICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5LnJlc29sdmVdIHRyaWdnZXIgbmV3IFByb3RvY29sU3R1YjogJywgZG9tYWluVXJsKTtcbiAgICAgICAgICAgICAgX3RoaXMubG9hZGVyLmxvYWRTdHViKGRvbWFpblVybCkudGhlbigoKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgLSByZXNvbHZlTm9ybWFsU3R1Yl0gU3R1YiBkZXBsb3llZDogJywgX3RoaXMucHJvdG9zdHVic0xpc3RbZG9tYWluVXJsXSk7XG4gICAgICAgICAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcbiAgICAgICAgICAgICAgICBsb2cuZXJyb3IoJ1tSZWdpc3RyeS5yZXNvbHZlTm9ybWFsU3R1Yl0gRXJyb3IgcmVzb2x2aW5nIExvYWQgUHJvdG9jb2xTdHViOiAnLCByZWFzb24pO1xuICAgICAgICAgICAgICAgIHJlamVjdChyZWFzb24pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcbiAgICAgICAgbG9nLmVycm9yKCdbUmVnaXN0cnkucmVzb2x2ZV0gRXJyb3IgcmVzb2x2aW5nIGlzbGVnYWN5OiAnLCByZWFzb24pO1xuICAgICAgICByZWplY3QocmVhc29uKTtcbiAgICAgIH0pO1xuXG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICAqIFRvIHZlcmlmeSBpZiBzb3VyY2UgaXMgdmFsaWQgYW5kIHRvIHJlc29sdmUgdGFyZ2V0IHJ1bnRpbWUgdXJsIGFkZHJlc3MgaWYgbmVlZGVkIChlZyBwcm90b3N0dWIgcnVudGltZSB1cmwgaW4gY2FzZSB0aGUgbWVzc2FnZSBpcyB0byBiZSBkaXNwYXRjaGVkIHRvIGEgcmVtb3RlIGVuZHBvaW50KS5cbiAgKiBAcGFyYW0gIHtVUkwuVVJMfSAgdXJsICAgICAgIHVybFxuICAqIEByZXR1cm4ge1Byb21pc2U8VVJMLlVSTD59ICAgICAgICAgICAgICAgICBQcm9taXNlIDxVUkwuVVJMPlxuICAqL1xuICByZXNvbHZlKG1zZykge1xuICAgIGxvZy5pbmZvKCdbUmVnaXN0cnkgLSBSZXNvbHZlXSAtICAnLCBtc2cpO1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBsZXQgdXJsID0gbXNnLnRvID8gbXNnLnRvIDogbXNnO1xuXG4gICAgICBsZXQgcDJwID0gKG1zZy5ib2R5ICYmIG1zZy5ib2R5LnAycCkgPyBtc2cuYm9keS5wMnAgOiBmYWxzZTtcblxuICAgICAgLy8gbG9nLmxvZygnUDJQOiAnLCBwMnAsIHVybCk7XG4gICAgICAvLyBsb2cubG9nKCdQMlAgLSBwMnBIYW5kbGVyU3R1YjogJywgIV90aGlzLnAycEhhbmRsZXJTdHViW190aGlzLnJ1bnRpbWVVUkxdLCBfdGhpcy5wMnBIYW5kbGVyU3R1YiwgX3RoaXMucnVudGltZVVSTCk7XG4gICAgICAvLyBsb2cubG9nKCdQMlAgLSBpc0JhY2tlbmRTZXJ2aWNlVVJMOiAnLCBpc0JhY2tlbmRTZXJ2aWNlVVJMKHVybCksIGlzQmFja2VuZFNlcnZpY2VVUkwsIHVybCk7XG4gICAgICAvLyBsb2cubG9nKCdQMlAgLSBpbmNsdWRlcyBydW50aW1lVVJMOiAnLCB1cmwuaW5jbHVkZXMoX3RoaXMucnVudGltZVVSTCkpO1xuICAgICAgLy8gbG9nLmxvZygnUDJQIC0gaW5jbHVkZXMgcDJwaGFuZGxlcjogJywgdXJsLmluY2x1ZGVzKCcvcDJwaGFuZGxlci8nKSk7XG4gICAgICAvLyBsb2cubG9nKCdQMlAgLSBpbmNsdWRlcyBwMnByZXF1ZXN0ZXI6ICcsIHVybC5pbmNsdWRlcygnL3AycHJlcXVlc3Rlci8nKSk7XG5cbiAgICAgIC8vIFNraXAgcDJwIHByb2NlZHVyZSB3aGVuIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIFJ1bnRpbWUgb3IgZm9yIGJhY2tlbmQgc2VydmljZXNcblxuICAgICAgaWYgKCFfdGhpcy5wMnBIYW5kbGVyU3R1YltfdGhpcy5ydW50aW1lVVJMXSB8fCBpc0JhY2tlbmRTZXJ2aWNlVVJMKHVybCkgfHwgdXJsLmluY2x1ZGVzKF90aGlzLnJ1bnRpbWVVUkwpIHx8IHVybC5pbmNsdWRlcygnL3AycGhhbmRsZXIvJykgfHwgdXJsLmluY2x1ZGVzKCcvcDJwcmVxdWVzdGVyLycpKSB7XG5cbiAgICAgICAgbG9nLmluZm8oJ1tSZWdpc3RyeSAtIHJlc29sdmVdIC0gUmVzb2x2ZSBub3JtYWwgc3R1YjogJywgX3RoaXMucDJwSGFuZGxlclN0dWIsIF90aGlzLnJ1bnRpbWVVUkwsIGlzQmFja2VuZFNlcnZpY2VVUkwodXJsKSwgcDJwLCB1cmwpO1xuICAgICAgICBfdGhpcy5yZXNvbHZlTm9ybWFsU3R1Yih1cmwpLnRoZW4oKHJldHVyblVSTCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUocmV0dXJuVVJMKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgbG9nLmluZm8oJ1tSZWdpc3RyeSAtIHJlc29sdmVdIC0gY2hlY2tQMlA6ICcsIHAycCwgdXJsLCBfdGhpcy5fcDJwQ29ubmVjdGlvblJlc29sdmUpO1xuICAgICAgICBfdGhpcy5fcDJwQ29ubmVjdGlvblJlc29sdmUuY2hlY2tQMlAobXNnKS50aGVuKChyZWdpc3RlcmVkUDJQKSA9PiB7XG5cbiAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnkgLSByZXNvbHZlXSBmb3VuZCByZWdpc3RlcmVkIFAyUDogJywgcmVnaXN0ZXJlZFAyUCk7XG5cbiAgICAgICAgICBsZXQgcDJwQ29ubmVjdGlvbiA9IF90aGlzLnAycENvbm5lY3Rpb25MaXN0W3JlZ2lzdGVyZWRQMlAucnVudGltZV07XG5cbiAgICAgICAgICBpZiAoIXAycENvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgIHAycENvbm5lY3Rpb24gPSByZWdpc3RlcmVkUDJQO1xuICAgICAgICAgICAgX3RoaXMucDJwQ29ubmVjdGlvbkxpc3RbcmVnaXN0ZXJlZFAyUC5ydW50aW1lXSA9IHAycENvbm5lY3Rpb247XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3dpdGNoIChwMnBDb25uZWN0aW9uLnN0YXR1cykge1xuICAgICAgICAgICAgY2FzZSBTVEFUVVMuTElWRTpcbiAgICAgICAgICAgICAgbXNnLmJvZHkucGVlciA9IHJlZ2lzdGVyZWRQMlAucnVudGltZTtcbiAgICAgICAgICAgICAgcmVzb2x2ZShwMnBDb25uZWN0aW9uLnVybCwgbXNnKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNUQVRVUy5DUkVBVEVEOiAvLyBwMnAgY29ubmVjdGlvbiBzZXR1cCBpcyBvbmdvaW5nLCB1c2UgTU4gU3R1YlxuICAgICAgICAgICAgY2FzZSBTVEFUVVMuUFJPR1JFU1M6XG4gICAgICAgICAgICAgIF90aGlzLnJlc29sdmVOb3JtYWxTdHViKHVybCkudGhlbigocmV0dXJuVVJMKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXR1cm5VUkwpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNUQVRVUy5ESVNDT05ORUNURUQ6IC8vIHAycCBjb25uZWN0aW9uIHN0dWIgd2FzIGRpc2Nvbm5lY3RlZCwgbGV0J3MgYXNrIHRvIGNvbm5lY3QgYWdhaW5cbiAgICAgICAgICAgICAgbG9nLmluZm8oJ1tSZWdpc3RyeSAtIFJlc29sdmVdIC0gcDJwQ29ubmVjdGlvbiBpcyBkaXNjb25uZWN0ZWQgbGV0cyB0cnkgdG8gcmVjb25uZWN0Jyk7XG4gICAgICAgICAgICAgIF90aGlzLl9wMnBDb25uZWN0aW9uUmVzb2x2ZS5yZWNvbm5lY3RQMlBSZXF1ZXN0ZXIocDJwQ29ubmVjdGlvbikudGhlbigocmV0dXJuVVJMKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gbG9nLmxvZygnW1JlZ2lzdHJ5IC0gUmVzb2x2ZV0gLSB3YXMgcmVjb25uZWN0ZWQgd2l0aCBwMnBSZXF1ZXN0ZXJTdHVidDogJywgcmV0dXJuVVJMKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJldHVyblVSTCk7XG4gICAgICAgICAgICAgIH0sIChyZWFzb24pID0+IHtcbiAgICAgICAgICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5IC0gUmVzb2x2ZV0gLSBSZWFzb246ICcsIHJlYXNvbik7XG5cbiAgICAgICAgICAgICAgICBfdGhpcy5yZXNvbHZlTm9ybWFsU3R1Yih1cmwpLnRoZW4oKHJldHVyblVSTCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXR1cm5VUkwpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuXG4gICAgICAgICAgICAgIGxvZy5pbmZvKCdbUmVnaXN0cnkgLSByZXNvbHZlXSAtIFAyUDogJywgcDJwKTtcbiAgICAgICAgICAgICAgaWYgKCFwMnApIHsgLy8gbm8gcDJwIGNvbm5lY3Rpb24gZXhpc3RzIGFuZCB0aGUgbWVzc2FnZSBzZW5kZXIgZG9lcyBub3QgYXNrIG9uZS4gTGV0cyB1c2UgdGhlIE1OIFN0dWJcbiAgICAgICAgICAgICAgICBfdGhpcy5yZXNvbHZlTm9ybWFsU3R1Yih1cmwpLnRoZW4oKHJldHVyblVSTCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXR1cm5VUkwpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuX3NldHVwUDJQUmVxdWVzdGVyKHJlZ2lzdGVyZWRQMlApLnRoZW4oKHJldHVyblVSTCkgPT4geyAvLyBubyBwMnAgY29ubmVjdGlvbiBleGlzdHMgYnV0IHRoZSBtZXNzYWdlIHNlbmRlciBpcyBhc2tpbmcgb25lLiBMZXRzIHRyeSB0byBzZXR1cCBvbmVcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUocmV0dXJuVVJMKTtcbiAgICAgICAgICAgICAgICB9LCAocmVhc29uKSA9PiB7XG4gICAgICAgICAgICAgICAgICBsb2cuaW5mbygnW1JlZ2lzdHJ5IC0gUmVzb2x2ZV0gLSBSZWFzb246ICcsIHJlYXNvbik7XG5cbiAgICAgICAgICAgICAgICAgIF90aGlzLnJlc29sdmVOb3JtYWxTdHViKHVybCkudGhlbigocmV0dXJuVVJMKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmV0dXJuVVJMKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgKHJlYXNvbikgPT4ge1xuICAgICAgICAgIGxvZy5pbmZvKCdbUmVnaXN0cnkgLSBSZXNvbHZlXSAtIFJlYXNvbjogJywgcmVhc29uKTtcblxuICAgICAgICAgIF90aGlzLnJlc29sdmVOb3JtYWxTdHViKHVybCkudGhlbigocmV0dXJuVVJMKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHJldHVyblVSTCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgfSk7XG4gIH1cblxuICBfc2V0dXBQMlBSZXF1ZXN0ZXIoaW5wdXQpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbG9nLmxvZygnW1JlZ2lzdHJ5Ll9zZXR1cFAyUENvbm5lY3Rpb25dIGxvYWRTdHViIHdpdGggcDJwUmVxdWVzdGVyOiAnLCBpbnB1dCk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBsZXQgcmVtb3RlUnVudGltZSA9IGlucHV0LnJ1bnRpbWU7XG5cbiAgICAgIGxldCBwMnBDb25maWcgPSB7IHJlbW90ZVJ1bnRpbWVVUkw6IHJlbW90ZVJ1bnRpbWUsIHAycEhhbmRsZXI6IGlucHV0LnAycEhhbmRsZXIsIHAycFJlcXVlc3RlclN0dWI6IHRydWUgfTtcblxuICAgICAgLy8gbGV0cyBwcmVwYXJlIHRoZSBwMnBSZXF1ZXN0ZXJTVHViIGRlcGxveW1lbnQgYnkgc2V0dGluZyBhbiBvYnNlcnZlciB0byBpdHMgc3RhdHVzIGNoYW5nZXNcblxuICAgICAgX3RoaXMud2F0Y2hpbmdZb3Uub2JzZXJ2ZSgncDJwUmVxdWVzdGVyU3R1YicsIChjaGFuZ2UpID0+IHtcblxuICAgICAgICBsb2cubG9nKCdbUmVnaXN0cnkuX3NldHVwUDJQQ29ubmVjdGlvbl0gcDJwUmVxdWVzdGVyU3R1YnMgY2hhbmdlZCAnICsgX3RoaXMucDJwUmVxdWVzdGVyU3R1Yik7XG5cbiAgICAgICAgaWYgKGNoYW5nZS5rZXlwYXRoLnNwbGl0KCcuJylbMF0gPT09IHJlbW90ZVJ1bnRpbWUgJiYgY2hhbmdlLm5hbWUgPT09ICdzdGF0dXMnICYmIGNoYW5nZS5uZXdWYWx1ZSA9PT0gU1RBVFVTLkxJVkUpIHtcbiAgICAgICAgICBsb2cubG9nKCdbUmVnaXN0cnkuX3NldHVwUDJQQ29ubmVjdGlvbl0gcDJwUmVxdWVzdGVyIGlzIGxpdmUgJyArIF90aGlzLnAycFJlcXVlc3RlclN0dWJbcmVtb3RlUnVudGltZV0pO1xuICAgICAgICAgIHJlc29sdmUoX3RoaXMucDJwUmVxdWVzdGVyU3R1YltyZW1vdGVSdW50aW1lXS51cmwpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gIHN0dWIgbG9hZFxuICAgICAgX3RoaXMubG9hZGVyLmxvYWRTdHViKGlucHV0LnAycFJlcXVlc3RlciwgcDJwQ29uZmlnKS50aGVuKCgpID0+IHtcblxuICAgICAgICBsb2cubG9nKCdbUmVnaXN0cnkuX3NldHVwUDJQQ29ubmVjdGlvbl0gcDJwUmVxdWVzdGVyIGRlcGxveWVkOiAnLCBfdGhpcy5wMnBSZXF1ZXN0ZXJTdHViW3JlbW90ZVJ1bnRpbWVdKTtcblxuXG4gICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogVG8gdmVyaWZ5IGlmIHVybCBpcyBmb3IgYSBsZWdhY3kgc2VydmljZS5cbiAgKiBAcGFyYW0gIHtVUkwuVVJMfSAgdXJsICAgICAgdXJsXG4gICogQHJldHVybiB7Ym9vbGVhbn1cbiAgKi9cbiAgaXNMZWdhY3kodXJsKSB7XG5cbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgaWYgKHVybCA9PT0gX3RoaXMuX2RvbWFpbikge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIGxvZy5sb2coJ1tSZWdpc3RyeV0gW1JlZ2lzdHJ5LlJlZ2lzdHJ5LmlzTGVnYWN5XSAnLCB1cmwpO1xuXG4gICAgICAvLyBUT0RPOiB0byBiZSBkZWZpbmVkIGluIHRoZSBydW50aW1lIGNvbmZpZ3VyYXRpb25cbiAgICAgIGxldCBub25MZWdhY3kgPSBbJ2h5cGVydHktcnVudGltZScsICdkb21haW4nLCAnZ2xvYmFsJywgJ2h5cGVydHknXTtcblxuICAgICAgbGV0IHVybERpdmlkZWQgPSBkaXZpZGVVUkwodXJsKTtcblxuICAgICAgaWYgKG5vbkxlZ2FjeS5pbmRleE9mKHVybERpdmlkZWQudHlwZSkgIT09IC0xIHx8IHVybERpdmlkZWQuZG9tYWluID09PSBfdGhpcy5fZG9tYWluKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgLy8gcHJvY2VzcyBVc2VyIFVSTHNcbiAgICAgIGlmICh1cmwuc3BsaXQoJ0AnKS5sZW5ndGggPiAxKSB7XG4gICAgICAgIGxldCBkb21haW4gPSB1cmxEaXZpZGVkLmRvbWFpbjtcblxuICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnldIFtSZWdpc3RyeS5SZWdpc3RyeS5pc0xlZ2FjeV0gZG9tYWluOiAnLCBkb21haW4pO1xuICAgICAgICBpZiAoX3RoaXMuaWRwTGVnYWN5UHJveHlMaXN0Lmhhc093blByb3BlcnR5KGRvbWFpbikpIHtcblxuICAgICAgICAgIGxldCByZXN1bHQgPSBfdGhpcy5pZHBMZWdhY3lQcm94eUxpc3RbZG9tYWluXTtcblxuICAgICAgICAgIGlmIChyZXN1bHQuaW50ZXJ3b3JraW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXN1bHQuaW50ZXJ3b3JraW5nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLl9sb2FkZXIuZGVzY3JpcHRvcnMuZ2V0SWRwUHJveHlEZXNjcmlwdG9yKGRvbWFpbikudGhlbigocmVzdWx0KSA9PiB7XG5cbiAgICAgICAgICAvLyBsb2cubG9nKCdbUmVnaXN0cnldIFtSZWdpc3RyeS5SZWdpc3RyeS5pc0xlZ2FjeV0gTGVnYWN5IHN0dWIgZGVzY3JpcHRvcjogJywgcmVzdWx0KTtcblxuICAgICAgICAgIGlmIChyZXN1bHQuaW50ZXJ3b3JraW5nKSB7XG4gICAgICAgICAgICBfdGhpcy5pZHBMZWdhY3lQcm94eUxpc3RbZG9tYWluXSA9IHJlc3VsdDtcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0LmludGVyd29ya2luZyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9KS5jYXRjaCgocmVhc29uKSA9PiB7XG4gICAgICAgICAgbG9nLndhcm4oJ3Byb2JsZW0gbG9hZGluZyBpZHAgcHJveHkgZGVzY3JpcHRvciBmb3IgZG9tYWluOicsIGRvbWFpbiwgJyBiZWNhdXNlICcsIHJlYXNvbik7XG4gICAgICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHsgLy8gcHJvY2VzcyBwcm90b3N0dWIgVVJMc1xuICAgICAgICByZXNvbHZlKF90aGlzLmlzSW50ZXJ3b3JraW5nUHJvdG9TdHViKHVybCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogVG8gdmVyaWZ5IGlmIFVSTCBpcyBsb2NhbGx5IHJlZ2lzdGVyZWQgb3Igbm90LlxuICAqIEBwYXJhbSAge1VSTC5VUkx9ICB1cmwgICAgICB1cmxcbiAgKiBAcmV0dXJuIHtib29sZWFufVxuICAqL1xuXG4gIGlzTG9jYWwodXJsKSB7XG5cbiAgICBsZXQgcnVudGltZVNjaGVtZSA9IFsnaHlwZXJ0eS1ydW50aW1lJywgJ3J1bnRpbWUnXTtcbiAgICBsZXQgaHlwZXJ0eVNjaGVtZSA9IFsnaHlwZXJ0eSddO1xuICAgIGxldCB1cmxTY2hlbWUgPSB1cmwuc3BsaXQoJzovLycpWzBdO1xuXG4gICAgLy8gUHJvY2VzcyBSdW50aW1lIENvcmUgVVJMcy5cbiAgICAvLyBNZXNzYWdlcyBvcmlnaW5hdGVkIGZyb20gcHJvdG9zdHVicyBzaG91bGQgYWxzbyBub3QgaW5jbHVkZSB0aGUgcnVudGltZVVSTCBpbiBpdHMgVVJMLlxuXG4gICAgaWYgKHJ1bnRpbWVTY2hlbWUuaW5kZXhPZih1cmxTY2hlbWUpICE9PSAtMSkge1xuICAgICAgcmV0dXJuIHVybC5pbmNsdWRlcyh0aGlzLnJ1bnRpbWVVUkwpO1xuICAgIH1cblxuICAgIC8vIFByb2Nlc3MgSHlwZXJ0eSBVUkxzXG4gICAgLy8gVG9kbzogaHlwZXJ0aWVzTGlzdCBzaG91bGQgYmUgYW4gb2JqZWN0IG5vdCBhbiBhcnJheVxuXG4gICAgaWYgKGh5cGVydHlTY2hlbWUuaW5kZXhPZih1cmxTY2hlbWUpICE9PSAtMSkge1xuXG4gICAgICBmb3IgKGxldCBpbmRleCBpbiB0aGlzLmh5cGVydGllc0xpc3QpIHtcbiAgICAgICAgbGV0IGh5cGVydHkgPSB0aGlzLmh5cGVydGllc0xpc3RbaW5kZXhdO1xuICAgICAgICBpZiAoaHlwZXJ0eS5oeXBlcnR5VVJMID09PSB1cmwpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyBEYXRhIE9iamVjdCBVUkxzXG5cbiAgICBpZiAodXJsLmluY2x1ZGVzKCcvc3Vic2NyaXB0aW9uJykpIHtcbiAgICAgIHVybCA9IHVybC5zdWJzdHJpbmcoMCwgdXJsLmluZGV4T2YoJy9zdWJzY3JpcHRpb24nKSk7XG4gICAgfVxuXG4gICAgbGV0IGRhdGFPYmplY3QgPSB0aGlzLmRhdGFPYmplY3RMaXN0W3VybF07XG5cbiAgICBpZiAoZGF0YU9iamVjdCkge1xuICAgICAgaWYgKGRhdGFPYmplY3QuaW50ZXJ3b3JraW5nKSB7XG4gICAgICAgIHJldHVybiAhZGF0YU9iamVjdC5pbnRlcndvcmtpbmc7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgKiBUbyB2ZXJpZnkgaWYgcHJvdG9zdHViIGlzIHRvIGludGVyd29yayB3aXRoIGEgbGVnYWN5IGRvbWFpbi5cbiAgKiBAcGFyYW0gIHtVUkwuVVJMfSAgcnVudGltZVByb3Rvc3R1YlVSTCAgICAgIFRoZSBydW50aW1lIFVSTCBvZiB0aGUgUHJvdG9zdHViXG4gICogQHJldHVybiB7Ym9vbGVhbn1cbiAgKi9cblxuICBpc0ludGVyd29ya2luZ1Byb3RvU3R1YihydW50aW1lUHJvdG9zdHViVVJMKSB7XG5cbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKHR5cGVvZiBydW50aW1lUHJvdG9zdHViVVJMID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIShydW50aW1lUHJvdG9zdHViVVJMLmluY2x1ZGVzKCcvcHJvdG9zdHViLycpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBmaWx0ZXJlZCA9IE9iamVjdC5rZXlzKF90aGlzLnByb3Rvc3R1YnNMaXN0KS5maWx0ZXIoKGtleSkgPT4ge1xuICAgICAgcmV0dXJuIF90aGlzLnByb3Rvc3R1YnNMaXN0W2tleV0udXJsID09PSBydW50aW1lUHJvdG9zdHViVVJMO1xuICAgIH0pLm1hcCgoa2V5KSA9PiB7XG5cbiAgICAgIGlmIChfdGhpcy5wcm90b3N0dWJzTGlzdFtrZXldLmhhc093blByb3BlcnR5KCdpbnRlcndvcmtpbmcnKSkge1xuICAgICAgICByZXR1cm4gX3RoaXMucHJvdG9zdHVic0xpc3Rba2V5XS5pbnRlcndvcmtpbmc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSlbMF07XG5cbiAgICByZXR1cm4gZmlsdGVyZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cnk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3JlZ2lzdHJ5L1JlZ2lzdHJ5LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7OztBQWJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUZBO0FBQ0E7QUFDQTtBQWNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOzs7O0FBR0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFTQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQTJFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWRBO0FBZ0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUZBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQVNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFDQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFDQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBR0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUpBO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFHQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQVRBO0FBQ0E7QUFEQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEzQ0E7QUE2Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBanVEQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBNnBEQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///441\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(443), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9zeW1ib2wvaXRlcmF0b3IuanM/NjczOCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vc3ltYm9sL2l0ZXJhdG9yXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNDQyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///442\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(128);\n__webpack_require__(190);\nmodule.exports = __webpack_require__(140).f('iterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3IuanM/ZmU3ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL193a3MtZXh0JykuZignaXRlcmF0b3InKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDQ0M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///443\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(445), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQ0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9zeW1ib2wuanM/ZTUwNSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vc3ltYm9sXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC5qc1xuLy8gbW9kdWxlIGlkID0gNDQ0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///444\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(446);\n__webpack_require__(182);\n__webpack_require__(451);\n__webpack_require__(452);\nmodule.exports = __webpack_require__(10).Symbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQ1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaW5kZXguanM/MDcwNyJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5zeW1ib2wnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLlN5bWJvbDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDQ0NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///445\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(17);\nvar has = __webpack_require__(59);\nvar DESCRIPTORS = __webpack_require__(46);\nvar $export = __webpack_require__(21);\nvar redefine = __webpack_require__(185);\nvar META = __webpack_require__(447).KEY;\nvar $fails = __webpack_require__(66);\nvar shared = __webpack_require__(136);\nvar setToStringTag = __webpack_require__(97);\nvar uid = __webpack_require__(96);\nvar wks = __webpack_require__(22);\nvar wksExt = __webpack_require__(140);\nvar wksDefine = __webpack_require__(141);\nvar enumKeys = __webpack_require__(448);\nvar isArray = __webpack_require__(449);\nvar anObject = __webpack_require__(41);\nvar isObject = __webpack_require__(36);\nvar toIObject = __webpack_require__(47);\nvar toPrimitive = __webpack_require__(132);\nvar createDesc = __webpack_require__(74);\nvar _create = __webpack_require__(133);\nvar gOPNExt = __webpack_require__(450);\nvar $GOPD = __webpack_require__(142);\nvar $DP = __webpack_require__(40);\nvar $keys = __webpack_require__(67);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(202).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(78).f = $propertyIsEnumerable;\n __webpack_require__(139).f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(73)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(58)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQ2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zeW1ib2wuanM/N2Q2NyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBFQ01BU2NyaXB0IDYgc3ltYm9scyBzaGltXG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgTUVUQSA9IHJlcXVpcmUoJy4vX21ldGEnKS5LRVk7XG52YXIgJGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgd2tzID0gcmVxdWlyZSgnLi9fd2tzJyk7XG52YXIgd2tzRXh0ID0gcmVxdWlyZSgnLi9fd2tzLWV4dCcpO1xudmFyIHdrc0RlZmluZSA9IHJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKTtcbnZhciBlbnVtS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0ta2V5cycpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL19pcy1hcnJheScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIF9jcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZ09QTkV4dCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuLWV4dCcpO1xudmFyICRHT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbnZhciAkRFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QRCA9ICRHT1BELmY7XG52YXIgZFAgPSAkRFAuZjtcbnZhciBnT1BOID0gZ09QTkV4dC5mO1xudmFyICRTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyICRKU09OID0gZ2xvYmFsLkpTT047XG52YXIgX3N0cmluZ2lmeSA9ICRKU09OICYmICRKU09OLnN0cmluZ2lmeTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBISURERU4gPSB3a3MoJ19oaWRkZW4nKTtcbnZhciBUT19QUklNSVRJVkUgPSB3a3MoJ3RvUHJpbWl0aXZlJyk7XG52YXIgaXNFbnVtID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgU3ltYm9sUmVnaXN0cnkgPSBzaGFyZWQoJ3N5bWJvbC1yZWdpc3RyeScpO1xudmFyIEFsbFN5bWJvbHMgPSBzaGFyZWQoJ3N5bWJvbHMnKTtcbnZhciBPUFN5bWJvbHMgPSBzaGFyZWQoJ29wLXN5bWJvbHMnKTtcbnZhciBPYmplY3RQcm90byA9IE9iamVjdFtQUk9UT1RZUEVdO1xudmFyIFVTRV9OQVRJVkUgPSB0eXBlb2YgJFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xudmFyIFFPYmplY3QgPSBnbG9iYWwuUU9iamVjdDtcbi8vIERvbid0IHVzZSBzZXR0ZXJzIGluIFF0IFNjcmlwdCwgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzE3M1xudmFyIHNldHRlciA9ICFRT2JqZWN0IHx8ICFRT2JqZWN0W1BST1RPVFlQRV0gfHwgIVFPYmplY3RbUFJPVE9UWVBFXS5maW5kQ2hpbGQ7XG5cbi8vIGZhbGxiYWNrIGZvciBvbGQgQW5kcm9pZCwgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTY4N1xudmFyIHNldFN5bWJvbERlc2MgPSBERVNDUklQVE9SUyAmJiAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gX2NyZWF0ZShkUCh7fSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBkUCh0aGlzLCAnYScsIHsgdmFsdWU6IDcgfSkuYTsgfVxuICB9KSkuYSAhPSA3O1xufSkgPyBmdW5jdGlvbiAoaXQsIGtleSwgRCkge1xuICB2YXIgcHJvdG9EZXNjID0gZ09QRChPYmplY3RQcm90bywga2V5KTtcbiAgaWYgKHByb3RvRGVzYykgZGVsZXRlIE9iamVjdFByb3RvW2tleV07XG4gIGRQKGl0LCBrZXksIEQpO1xuICBpZiAocHJvdG9EZXNjICYmIGl0ICE9PSBPYmplY3RQcm90bykgZFAoT2JqZWN0UHJvdG8sIGtleSwgcHJvdG9EZXNjKTtcbn0gOiBkUDtcblxudmFyIHdyYXAgPSBmdW5jdGlvbiAodGFnKSB7XG4gIHZhciBzeW0gPSBBbGxTeW1ib2xzW3RhZ10gPSBfY3JlYXRlKCRTeW1ib2xbUFJPVE9UWVBFXSk7XG4gIHN5bS5fayA9IHRhZztcbiAgcmV0dXJuIHN5bTtcbn07XG5cbnZhciBpc1N5bWJvbCA9IFVTRV9OQVRJVkUgJiYgdHlwZW9mICRTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCcgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0IGluc3RhbmNlb2YgJFN5bWJvbDtcbn07XG5cbnZhciAkZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBEKSB7XG4gIGlmIChpdCA9PT0gT2JqZWN0UHJvdG8pICRkZWZpbmVQcm9wZXJ0eShPUFN5bWJvbHMsIGtleSwgRCk7XG4gIGFuT2JqZWN0KGl0KTtcbiAga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKTtcbiAgYW5PYmplY3QoRCk7XG4gIGlmIChoYXMoQWxsU3ltYm9scywga2V5KSkge1xuICAgIGlmICghRC5lbnVtZXJhYmxlKSB7XG4gICAgICBpZiAoIWhhcyhpdCwgSElEREVOKSkgZFAoaXQsIEhJRERFTiwgY3JlYXRlRGVzYygxLCB7fSkpO1xuICAgICAgaXRbSElEREVOXVtrZXldID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pIGl0W0hJRERFTl1ba2V5XSA9IGZhbHNlO1xuICAgICAgRCA9IF9jcmVhdGUoRCwgeyBlbnVtZXJhYmxlOiBjcmVhdGVEZXNjKDAsIGZhbHNlKSB9KTtcbiAgICB9IHJldHVybiBzZXRTeW1ib2xEZXNjKGl0LCBrZXksIEQpO1xuICB9IHJldHVybiBkUChpdCwga2V5LCBEKTtcbn07XG52YXIgJGRlZmluZVByb3BlcnRpZXMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGl0LCBQKSB7XG4gIGFuT2JqZWN0KGl0KTtcbiAgdmFyIGtleXMgPSBlbnVtS2V5cyhQID0gdG9JT2JqZWN0KFApKTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbCA9IGtleXMubGVuZ3RoO1xuICB2YXIga2V5O1xuICB3aGlsZSAobCA+IGkpICRkZWZpbmVQcm9wZXJ0eShpdCwga2V5ID0ga2V5c1tpKytdLCBQW2tleV0pO1xuICByZXR1cm4gaXQ7XG59O1xudmFyICRjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaXQsIFApIHtcbiAgcmV0dXJuIFAgPT09IHVuZGVmaW5lZCA/IF9jcmVhdGUoaXQpIDogJGRlZmluZVByb3BlcnRpZXMoX2NyZWF0ZShpdCksIFApO1xufTtcbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShrZXkpIHtcbiAgdmFyIEUgPSBpc0VudW0uY2FsbCh0aGlzLCBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpKTtcbiAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBFIHx8ICFoYXModGhpcywga2V5KSB8fCAhaGFzKEFsbFN5bWJvbHMsIGtleSkgfHwgaGFzKHRoaXMsIEhJRERFTikgJiYgdGhpc1tISURERU5dW2tleV0gPyBFIDogdHJ1ZTtcbn07XG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KSB7XG4gIGl0ID0gdG9JT2JqZWN0KGl0KTtcbiAga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKTtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90byAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhaGFzKE9QU3ltYm9scywga2V5KSkgcmV0dXJuO1xuICB2YXIgRCA9IGdPUEQoaXQsIGtleSk7XG4gIGlmIChEICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICEoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkpIEQuZW51bWVyYWJsZSA9IHRydWU7XG4gIHJldHVybiBEO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlOYW1lcyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHtcbiAgdmFyIG5hbWVzID0gZ09QTih0b0lPYmplY3QoaXQpKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgaSA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSB7XG4gICAgaWYgKCFoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYga2V5ICE9IEhJRERFTiAmJiBrZXkgIT0gTUVUQSkgcmVzdWx0LnB1c2goa2V5KTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSB7XG4gIHZhciBJU19PUCA9IGl0ID09PSBPYmplY3RQcm90bztcbiAgdmFyIG5hbWVzID0gZ09QTihJU19PUCA/IE9QU3ltYm9scyA6IHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIChJU19PUCA/IGhhcyhPYmplY3RQcm90bywga2V5KSA6IHRydWUpKSByZXN1bHQucHVzaChBbGxTeW1ib2xzW2tleV0pO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyAxOS40LjEuMSBTeW1ib2woW2Rlc2NyaXB0aW9uXSlcbmlmICghVVNFX05BVElWRSkge1xuICAkU3ltYm9sID0gZnVuY3Rpb24gU3ltYm9sKCkge1xuICAgIGlmICh0aGlzIGluc3RhbmNlb2YgJFN5bWJvbCkgdGhyb3cgVHlwZUVycm9yKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IhJyk7XG4gICAgdmFyIHRhZyA9IHVpZChhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7XG4gICAgdmFyICRzZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzID09PSBPYmplY3RQcm90bykgJHNldC5jYWxsKE9QU3ltYm9scywgdmFsdWUpO1xuICAgICAgaWYgKGhhcyh0aGlzLCBISURERU4pICYmIGhhcyh0aGlzW0hJRERFTl0sIHRhZykpIHRoaXNbSElEREVOXVt0YWddID0gZmFsc2U7XG4gICAgICBzZXRTeW1ib2xEZXNjKHRoaXMsIHRhZywgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xuICAgIH07XG4gICAgaWYgKERFU0NSSVBUT1JTICYmIHNldHRlcikgc2V0U3ltYm9sRGVzYyhPYmplY3RQcm90bywgdGFnLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgc2V0OiAkc2V0IH0pO1xuICAgIHJldHVybiB3cmFwKHRhZyk7XG4gIH07XG4gIHJlZGVmaW5lKCRTeW1ib2xbUFJPVE9UWVBFXSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2s7XG4gIH0pO1xuXG4gICRHT1BELmYgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAkRFAuZiA9ICRkZWZpbmVQcm9wZXJ0eTtcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mID0gZ09QTkV4dC5mID0gJGdldE93blByb3BlcnR5TmFtZXM7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1waWUnKS5mID0gJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuICByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpLmYgPSAkZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4gIGlmIChERVNDUklQVE9SUyAmJiAhcmVxdWlyZSgnLi9fbGlicmFyeScpKSB7XG4gICAgcmVkZWZpbmUoT2JqZWN0UHJvdG8sICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICRwcm9wZXJ0eUlzRW51bWVyYWJsZSwgdHJ1ZSk7XG4gIH1cblxuICB3a3NFeHQuZiA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIHdyYXAod2tzKG5hbWUpKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBTeW1ib2w6ICRTeW1ib2wgfSk7XG5cbmZvciAodmFyIGVzNlN5bWJvbHMgPSAoXG4gIC8vIDE5LjQuMi4yLCAxOS40LjIuMywgMTkuNC4yLjQsIDE5LjQuMi42LCAxOS40LjIuOCwgMTkuNC4yLjksIDE5LjQuMi4xMCwgMTkuNC4yLjExLCAxOS40LjIuMTIsIDE5LjQuMi4xMywgMTkuNC4yLjE0XG4gICdoYXNJbnN0YW5jZSxpc0NvbmNhdFNwcmVhZGFibGUsaXRlcmF0b3IsbWF0Y2gscmVwbGFjZSxzZWFyY2gsc3BlY2llcyxzcGxpdCx0b1ByaW1pdGl2ZSx0b1N0cmluZ1RhZyx1bnNjb3BhYmxlcydcbikuc3BsaXQoJywnKSwgaiA9IDA7IGVzNlN5bWJvbHMubGVuZ3RoID4gajspd2tzKGVzNlN5bWJvbHNbaisrXSk7XG5cbmZvciAodmFyIHdlbGxLbm93blN5bWJvbHMgPSAka2V5cyh3a3Muc3RvcmUpLCBrID0gMDsgd2VsbEtub3duU3ltYm9scy5sZW5ndGggPiBrOykgd2tzRGVmaW5lKHdlbGxLbm93blN5bWJvbHNbaysrXSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdTeW1ib2wnLCB7XG4gIC8vIDE5LjQuMi4xIFN5bWJvbC5mb3Ioa2V5KVxuICAnZm9yJzogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBoYXMoU3ltYm9sUmVnaXN0cnksIGtleSArPSAnJylcbiAgICAgID8gU3ltYm9sUmVnaXN0cnlba2V5XVxuICAgICAgOiBTeW1ib2xSZWdpc3RyeVtrZXldID0gJFN5bWJvbChrZXkpO1xuICB9LFxuICAvLyAxOS40LjIuNSBTeW1ib2wua2V5Rm9yKHN5bSlcbiAga2V5Rm9yOiBmdW5jdGlvbiBrZXlGb3Ioc3ltKSB7XG4gICAgaWYgKCFpc1N5bWJvbChzeW0pKSB0aHJvdyBUeXBlRXJyb3Ioc3ltICsgJyBpcyBub3QgYSBzeW1ib2whJyk7XG4gICAgZm9yICh2YXIga2V5IGluIFN5bWJvbFJlZ2lzdHJ5KSBpZiAoU3ltYm9sUmVnaXN0cnlba2V5XSA9PT0gc3ltKSByZXR1cm4ga2V5O1xuICB9LFxuICB1c2VTZXR0ZXI6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gdHJ1ZTsgfSxcbiAgdXNlU2ltcGxlOiBmdW5jdGlvbiAoKSB7IHNldHRlciA9IGZhbHNlOyB9XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ09iamVjdCcsIHtcbiAgLy8gMTkuMS4yLjIgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuICBjcmVhdGU6ICRjcmVhdGUsXG4gIC8vIDE5LjEuMi40IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuICBkZWZpbmVQcm9wZXJ0eTogJGRlZmluZVByb3BlcnR5LFxuICAvLyAxOS4xLjIuMyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKVxuICBkZWZpbmVQcm9wZXJ0aWVzOiAkZGVmaW5lUHJvcGVydGllcyxcbiAgLy8gMTkuMS4yLjYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKVxuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG4gIC8vIDE5LjEuMi43IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG4gIGdldE93blByb3BlcnR5TmFtZXM6ICRnZXRPd25Qcm9wZXJ0eU5hbWVzLFxuICAvLyAxOS4xLjIuOCBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKE8pXG4gIGdldE93blByb3BlcnR5U3ltYm9sczogJGdldE93blByb3BlcnR5U3ltYm9sc1xufSk7XG5cbi8vIDI0LjMuMiBKU09OLnN0cmluZ2lmeSh2YWx1ZSBbLCByZXBsYWNlciBbLCBzcGFjZV1dKVxuJEpTT04gJiYgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoIVVTRV9OQVRJVkUgfHwgJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIFMgPSAkU3ltYm9sKCk7XG4gIC8vIE1TIEVkZ2UgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIHt9XG4gIC8vIFdlYktpdCBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMgbnVsbFxuICAvLyBWOCB0aHJvd3Mgb24gYm94ZWQgc3ltYm9sc1xuICByZXR1cm4gX3N0cmluZ2lmeShbU10pICE9ICdbbnVsbF0nIHx8IF9zdHJpbmdpZnkoeyBhOiBTIH0pICE9ICd7fScgfHwgX3N0cmluZ2lmeShPYmplY3QoUykpICE9ICd7fSc7XG59KSksICdKU09OJywge1xuICBzdHJpbmdpZnk6IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCkge1xuICAgIHZhciBhcmdzID0gW2l0XTtcbiAgICB2YXIgaSA9IDE7XG4gICAgdmFyIHJlcGxhY2VyLCAkcmVwbGFjZXI7XG4gICAgd2hpbGUgKGFyZ3VtZW50cy5sZW5ndGggPiBpKSBhcmdzLnB1c2goYXJndW1lbnRzW2krK10pO1xuICAgICRyZXBsYWNlciA9IHJlcGxhY2VyID0gYXJnc1sxXTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlcGxhY2VyKSAmJiBpdCA9PT0gdW5kZWZpbmVkIHx8IGlzU3ltYm9sKGl0KSkgcmV0dXJuOyAvLyBJRTggcmV0dXJucyBzdHJpbmcgb24gdW5kZWZpbmVkXG4gICAgaWYgKCFpc0FycmF5KHJlcGxhY2VyKSkgcmVwbGFjZXIgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiAkcmVwbGFjZXIgPT0gJ2Z1bmN0aW9uJykgdmFsdWUgPSAkcmVwbGFjZXIuY2FsbCh0aGlzLCBrZXksIHZhbHVlKTtcbiAgICAgIGlmICghaXNTeW1ib2wodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICBhcmdzWzFdID0gcmVwbGFjZXI7XG4gICAgcmV0dXJuIF9zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3MpO1xuICB9XG59KTtcblxuLy8gMTkuNC4zLjQgU3ltYm9sLnByb3RvdHlwZVtAQHRvUHJpbWl0aXZlXShoaW50KVxuJFN5bWJvbFtQUk9UT1RZUEVdW1RPX1BSSU1JVElWRV0gfHwgcmVxdWlyZSgnLi9faGlkZScpKCRTeW1ib2xbUFJPVE9UWVBFXSwgVE9fUFJJTUlUSVZFLCAkU3ltYm9sW1BST1RPVFlQRV0udmFsdWVPZik7XG4vLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZygkU3ltYm9sLCAnU3ltYm9sJyk7XG4vLyAyMC4yLjEuOSBNYXRoW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZyhNYXRoLCAnTWF0aCcsIHRydWUpO1xuLy8gMjQuMy4zIEpTT05bQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qc1xuLy8gbW9kdWxlIGlkID0gNDQ2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///446\n")},function(module,exports,__webpack_require__){eval("var META = __webpack_require__(96)('meta');\nvar isObject = __webpack_require__(36);\nvar has = __webpack_require__(59);\nvar setDesc = __webpack_require__(40).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(66)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQ3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19tZXRhLmpzP2QzYTMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIE1FVEEgPSByZXF1aXJlKCcuL191aWQnKSgnbWV0YScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgc2V0RGVzYyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaWQgPSAwO1xudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgRlJFRVpFID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpO1xufSk7XG52YXIgc2V0TWV0YSA9IGZ1bmN0aW9uIChpdCkge1xuICBzZXREZXNjKGl0LCBNRVRBLCB7IHZhbHVlOiB7XG4gICAgaTogJ08nICsgKytpZCwgLy8gb2JqZWN0IElEXG4gICAgdzoge30gICAgICAgICAgLy8gd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSB9KTtcbn07XG52YXIgZmFzdEtleSA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7XG4gIC8vIHJldHVybiBwcmltaXRpdmUgd2l0aCBwcmVmaXhcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG4gIGlmICghaGFzKGl0LCBNRVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gJ0YnO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiAnRSc7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIG9iamVjdCBJRFxuICB9IHJldHVybiBpdFtNRVRBXS5pO1xufTtcbnZhciBnZXRXZWFrID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiB0cnVlO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiBmYWxzZTtcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gaGFzaCB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IHJldHVybiBpdFtNRVRBXS53O1xufTtcbi8vIGFkZCBtZXRhZGF0YSBvbiBmcmVlemUtZmFtaWx5IG1ldGhvZHMgY2FsbGluZ1xudmFyIG9uRnJlZXplID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChGUkVFWkUgJiYgbWV0YS5ORUVEICYmIGlzRXh0ZW5zaWJsZShpdCkgJiYgIWhhcyhpdCwgTUVUQSkpIHNldE1ldGEoaXQpO1xuICByZXR1cm4gaXQ7XG59O1xudmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgS0VZOiBNRVRBLFxuICBORUVEOiBmYWxzZSxcbiAgZmFzdEtleTogZmFzdEtleSxcbiAgZ2V0V2VhazogZ2V0V2VhayxcbiAgb25GcmVlemU6IG9uRnJlZXplXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanNcbi8vIG1vZHVsZSBpZCA9IDQ0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///447\n")},function(module,exports,__webpack_require__){eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(67);\nvar gOPS = __webpack_require__(139);\nvar pIE = __webpack_require__(78);\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQ4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWtleXMuanM/NWRjZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhbGwgZW51bWVyYWJsZSBvYmplY3Qga2V5cywgaW5jbHVkZXMgc3ltYm9sc1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciByZXN1bHQgPSBnZXRLZXlzKGl0KTtcbiAgdmFyIGdldFN5bWJvbHMgPSBnT1BTLmY7XG4gIGlmIChnZXRTeW1ib2xzKSB7XG4gICAgdmFyIHN5bWJvbHMgPSBnZXRTeW1ib2xzKGl0KTtcbiAgICB2YXIgaXNFbnVtID0gcElFLmY7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKHN5bWJvbHMubGVuZ3RoID4gaSkgaWYgKGlzRW51bS5jYWxsKGl0LCBrZXkgPSBzeW1ib2xzW2krK10pKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0ta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gNDQ4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///448\n")},function(module,exports,__webpack_require__){eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(76);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQ5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1hcnJheS5qcz9lZDQzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMi4yIElzQXJyYXkoYXJndW1lbnQpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIGNvZihhcmcpID09ICdBcnJheSc7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LmpzXG4vLyBtb2R1bGUgaWQgPSA0NDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///449\n")},function(module,exports,__webpack_require__){eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(47);\nvar gOPN = __webpack_require__(202).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi1leHQuanM/NDZiNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3IgSUUxMSBidWdneSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB3aXRoIGlmcmFtZSBhbmQgd2luZG93XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmY7XG52YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxudmFyIHdpbmRvd05hbWVzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcbiAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpIDogW107XG5cbnZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uIChpdCkge1xuICB0cnkge1xuICAgIHJldHVybiBnT1BOKGl0KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB3aW5kb3dOYW1lcy5zbGljZSgpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICByZXR1cm4gd2luZG93TmFtZXMgJiYgdG9TdHJpbmcuY2FsbChpdCkgPT0gJ1tvYmplY3QgV2luZG93XScgPyBnZXRXaW5kb3dOYW1lcyhpdCkgOiBnT1BOKHRvSU9iamVjdChpdCkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi1leHQuanNcbi8vIG1vZHVsZSBpZCA9IDQ1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///450\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(141)('asyncIterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wuYXN5bmMtaXRlcmF0b3IuanM/Mzk4OSJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuL193a3MtZGVmaW5lJykoJ2FzeW5jSXRlcmF0b3InKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wuYXN5bmMtaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDQ1MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///451\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(141)('observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZS5qcz80MTY3Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnb2JzZXJ2YWJsZScpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSA0NTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///452\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(454);\nmodule.exports = __webpack_require__(10).Object.keys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qcz84YzU2Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Qua2V5cztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gNDUzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///453\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(77);\nvar $keys = __webpack_require__(67);\n\n__webpack_require__(99)('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDU0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qcz8wOWRjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2tleXMnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBrZXlzKGl0KSB7XG4gICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gNDU0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///454\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SandboxType = undefined;\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _getPrototypeOf = __webpack_require__(60);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(68);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(69);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SandboxRegistry = __webpack_require__(464);\n\nvar _SandboxRegistry2 = _interopRequireDefault(_SandboxRegistry);\n\nvar _MiniBus2 = __webpack_require__(465);\n\nvar _MiniBus3 = _interopRequireDefault(_MiniBus2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\nvar SandboxType = exports.SandboxType = { APP: 'app', NORMAL: 'normal', WINDOW: 'window' };\n\n/**\n * @author micaelpedrosa@gmail.com\n * Base class to implement external sandbox component\n */\n\nvar Sandbox = function (_MiniBus) {\n (0, _inherits3.default)(Sandbox, _MiniBus);\n\n function Sandbox(capabilities) {\n (0, _classCallCheck3.default)(this, Sandbox);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (Sandbox.__proto__ || (0, _getPrototypeOf2.default)(Sandbox)).call(this));\n\n var _this = _this2;\n\n if (capabilities) {\n _this.capabilities = capabilities;\n }\n\n return _this2;\n }\n\n /**\n * Deploy an instance of the component into the sandbox.\n * @param {string} componentSourceCode Component source code (Hyperty, ProtoStub, etc)\n * @param {URL} componentURL Hyperty, ProtoStub, or any other component address.\n * @param {Config} configuration Config parameters of the component\n * @return {Promise} return deployed if successful, or any other string with an error\n */\n\n\n (0, _createClass3.default)(Sandbox, [{\n key: 'deployComponent',\n value: function deployComponent(componentSourceCode, componentURL, configuration) {\n\n var _this = this;\n\n // let messageFactory = _this.messageFactory;\n\n return new _promise2.default(function (resolve, reject) {\n //FLOW-OUT: deploy message for the internal SandboxRegistry -> _onDeploy\n var deployMessage = {\n type: 'create', from: _SandboxRegistry2.default.ExternalDeployAddress, to: _SandboxRegistry2.default.InternalDeployAddress,\n body: { url: componentURL, sourceCode: componentSourceCode, config: configuration }\n };\n\n //send message into the sandbox internals and wait for reply\n _this.postMessage(deployMessage, function (reply) {\n if (reply.body.code === 200) {\n //is this response complaint with the spec?\n resolve('deployed');\n } else {\n reject(reply.body.desc);\n }\n });\n });\n }\n\n /**\n * Remove the instance of a previously deployed component.\n * @param {URL} componentURL Hyperty, ProtoStub, or any other component address.\n * @return {Promise} return undeployed if successful, or any other string with an error\n */\n\n }, {\n key: 'removeComponent',\n value: function removeComponent(componentURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n //FLOW-OUT: un-deploy message for the internal SandboxRegistry -> _onRemove\n var removeMessage = {\n type: 'delete', from: _SandboxRegistry2.default.ExternalDeployAddress, to: _SandboxRegistry2.default.InternalDeployAddress,\n body: { url: componentURL }\n };\n\n //send message into the sandbox internals and wait for reply\n _this.postMessage(removeMessage, function (reply) {\n if (reply.body.code === 200) {\n //is this response complaint with the spec?\n resolve('undeployed');\n } else {\n reject(reply.body.desc);\n }\n });\n });\n }\n\n /**\n * Matches Sandbox capabilities against provided capabilities. Used to check if sandbox provides all required capabilities\n * @param {RuntimeCapabilities} constraints set of RuntimeCapabilities to match with.\n * @return {boolean} return true if constraints are matched false otherwise\n */\n\n }, {\n key: 'matches',\n value: function matches(constraints) {\n var _this = this;\n\n var filtered = (0, _keys2.default)(constraints).filter(function (key) {\n return !(_this.capabilities[key] && _this.capabilities[key] === constraints[key]);\n });\n\n if (filtered.length === 0) {\n return true;\n } else {\n return !constraints[filtered];\n }\n }\n }]);\n return Sandbox;\n}(_MiniBus3.default);\n\nexports.default = Sandbox;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDU1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zYW5kYm94L1NhbmRib3guanM/MGEzMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKiovXG5pbXBvcnQgU2FuZGJveFJlZ2lzdHJ5IGZyb20gJy4uL3NhbmRib3gvU2FuZGJveFJlZ2lzdHJ5JztcbmltcG9ydCBNaW5pQnVzIGZyb20gJy4uL2J1cy9NaW5pQnVzJztcblxuZXhwb3J0IGxldCBTYW5kYm94VHlwZSA9IHtBUFA6ICdhcHAnLCBOT1JNQUw6ICdub3JtYWwnLCBXSU5ET1c6ICd3aW5kb3cnfTtcblxuLyoqXG4gKiBAYXV0aG9yIG1pY2FlbHBlZHJvc2FAZ21haWwuY29tXG4gKiBCYXNlIGNsYXNzIHRvIGltcGxlbWVudCBleHRlcm5hbCBzYW5kYm94IGNvbXBvbmVudFxuICovXG5jbGFzcyBTYW5kYm94IGV4dGVuZHMgTWluaUJ1cyB7XG5cbiAgY29uc3RydWN0b3IoY2FwYWJpbGl0aWVzKSB7XG5cbiAgICBzdXBlcigpO1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGlmIChjYXBhYmlsaXRpZXMpICAgICAgeyBfdGhpcy5jYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXRpZXM7IH1cblxuICB9XG5cbiAgLyoqXG4gICAqIERlcGxveSBhbiBpbnN0YW5jZSBvZiB0aGUgY29tcG9uZW50IGludG8gdGhlIHNhbmRib3guXG4gICAqIEBwYXJhbSAge3N0cmluZ30gY29tcG9uZW50U291cmNlQ29kZSBDb21wb25lbnQgc291cmNlIGNvZGUgKEh5cGVydHksIFByb3RvU3R1YiwgZXRjKVxuICAgKiBAcGFyYW0gIHtVUkx9IGNvbXBvbmVudFVSTCBIeXBlcnR5LCBQcm90b1N0dWIsIG9yIGFueSBvdGhlciBjb21wb25lbnQgYWRkcmVzcy5cbiAgICogQHBhcmFtICB7Q29uZmlnfSBjb25maWd1cmF0aW9uIENvbmZpZyBwYXJhbWV0ZXJzIG9mIHRoZSBjb21wb25lbnRcbiAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSByZXR1cm4gZGVwbG95ZWQgaWYgc3VjY2Vzc2Z1bCwgb3IgYW55IG90aGVyIHN0cmluZyB3aXRoIGFuIGVycm9yXG4gICAqL1xuICBkZXBsb3lDb21wb25lbnQoY29tcG9uZW50U291cmNlQ29kZSwgY29tcG9uZW50VVJMLCBjb25maWd1cmF0aW9uKSB7XG5cbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgLy8gbGV0IG1lc3NhZ2VGYWN0b3J5ID0gX3RoaXMubWVzc2FnZUZhY3Rvcnk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgLy9GTE9XLU9VVDogZGVwbG95IG1lc3NhZ2UgZm9yIHRoZSBpbnRlcm5hbCBTYW5kYm94UmVnaXN0cnkgLT4gX29uRGVwbG95XG4gICAgICBsZXQgZGVwbG95TWVzc2FnZSA9IHtcbiAgICAgICAgdHlwZTogJ2NyZWF0ZScsIGZyb206IFNhbmRib3hSZWdpc3RyeS5FeHRlcm5hbERlcGxveUFkZHJlc3MsIHRvOiBTYW5kYm94UmVnaXN0cnkuSW50ZXJuYWxEZXBsb3lBZGRyZXNzLFxuICAgICAgICBib2R5OiB7IHVybDogY29tcG9uZW50VVJMLCBzb3VyY2VDb2RlOiBjb21wb25lbnRTb3VyY2VDb2RlLCBjb25maWc6IGNvbmZpZ3VyYXRpb24gfVxuICAgICAgfTtcblxuICAgICAgLy9zZW5kIG1lc3NhZ2UgaW50byB0aGUgc2FuZGJveCBpbnRlcm5hbHMgYW5kIHdhaXQgZm9yIHJlcGx5XG4gICAgICBfdGhpcy5wb3N0TWVzc2FnZShkZXBsb3lNZXNzYWdlLCAocmVwbHkpID0+IHtcbiAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgLy9pcyB0aGlzIHJlc3BvbnNlIGNvbXBsYWludCB3aXRoIHRoZSBzcGVjP1xuICAgICAgICAgIHJlc29sdmUoJ2RlcGxveWVkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KHJlcGx5LmJvZHkuZGVzYyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgaW5zdGFuY2Ugb2YgYSBwcmV2aW91c2x5IGRlcGxveWVkIGNvbXBvbmVudC5cbiAgICogQHBhcmFtICB7VVJMfSBjb21wb25lbnRVUkwgSHlwZXJ0eSwgUHJvdG9TdHViLCBvciBhbnkgb3RoZXIgY29tcG9uZW50IGFkZHJlc3MuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gcmV0dXJuIHVuZGVwbG95ZWQgaWYgc3VjY2Vzc2Z1bCwgb3IgYW55IG90aGVyIHN0cmluZyB3aXRoIGFuIGVycm9yXG4gICAqL1xuICByZW1vdmVDb21wb25lbnQoY29tcG9uZW50VVJMKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvL0ZMT1ctT1VUOiB1bi1kZXBsb3kgbWVzc2FnZSBmb3IgdGhlIGludGVybmFsIFNhbmRib3hSZWdpc3RyeSAtPiBfb25SZW1vdmVcbiAgICAgIGxldCByZW1vdmVNZXNzYWdlID0ge1xuICAgICAgICB0eXBlOiAnZGVsZXRlJywgZnJvbTogU2FuZGJveFJlZ2lzdHJ5LkV4dGVybmFsRGVwbG95QWRkcmVzcywgdG86IFNhbmRib3hSZWdpc3RyeS5JbnRlcm5hbERlcGxveUFkZHJlc3MsXG4gICAgICAgIGJvZHk6IHsgdXJsOiBjb21wb25lbnRVUkwgfVxuICAgICAgfTtcblxuICAgICAgLy9zZW5kIG1lc3NhZ2UgaW50byB0aGUgc2FuZGJveCBpbnRlcm5hbHMgYW5kIHdhaXQgZm9yIHJlcGx5XG4gICAgICBfdGhpcy5wb3N0TWVzc2FnZShyZW1vdmVNZXNzYWdlLCAocmVwbHkpID0+IHtcbiAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgLy9pcyB0aGlzIHJlc3BvbnNlIGNvbXBsYWludCB3aXRoIHRoZSBzcGVjP1xuICAgICAgICAgIHJlc29sdmUoJ3VuZGVwbG95ZWQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QocmVwbHkuYm9keS5kZXNjKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBNYXRjaGVzIFNhbmRib3ggY2FwYWJpbGl0aWVzIGFnYWluc3QgcHJvdmlkZWQgY2FwYWJpbGl0aWVzLiBVc2VkIHRvIGNoZWNrIGlmIHNhbmRib3ggcHJvdmlkZXMgYWxsIHJlcXVpcmVkIGNhcGFiaWxpdGllc1xuICAqIEBwYXJhbSAge1J1bnRpbWVDYXBhYmlsaXRpZXN9IGNvbnN0cmFpbnRzIHNldCBvZiBSdW50aW1lQ2FwYWJpbGl0aWVzIHRvIG1hdGNoIHdpdGguXG4gICogQHJldHVybiB7Ym9vbGVhbn0gcmV0dXJuIHRydWUgaWYgY29uc3RyYWludHMgYXJlIG1hdGNoZWQgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuXG4gIG1hdGNoZXMoY29uc3RyYWludHMpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IGZpbHRlcmVkID0gT2JqZWN0LmtleXMoY29uc3RyYWludHMpLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICByZXR1cm4gIShfdGhpcy5jYXBhYmlsaXRpZXNba2V5XSAmJiBfdGhpcy5jYXBhYmlsaXRpZXNba2V5XSA9PT0gY29uc3RyYWludHNba2V5XSk7XG4gICAgfSk7XG5cbiAgICBpZiAoZmlsdGVyZWQubGVuZ3RoID09PSAwKSAgICAgIHsgcmV0dXJuIHRydWU7IH0gICAgZWxzZSAgICAgIHsgcmV0dXJuICEoY29uc3RyYWludHNbZmlsdGVyZWRdKTsgfVxuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2FuZGJveDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvc2FuZGJveC9TYW5kYm94LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTtBQUNBOzs7QUFBQTtBQUNBOzs7OztBQXhCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlCQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7OztBQUVBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFQQTtBQVFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7OztBQXJGQTtBQUNBO0FBd0ZBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///455\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(457);\nmodule.exports = __webpack_require__(10).Object.getPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDU2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qcz83ZDJlIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2dldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDQ1NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///456\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(77);\nvar $getPrototypeOf = __webpack_require__(189);\n\n__webpack_require__(99)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDU3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LXByb3RvdHlwZS1vZi5qcz8yYTFlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi45IE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2dldFByb3RvdHlwZU9mJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2YoaXQpIHtcbiAgICByZXR1cm4gJGdldFByb3RvdHlwZU9mKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gNDU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///457\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(459), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDU4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz85MjIwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gNDU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///458\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(460);\nmodule.exports = __webpack_require__(10).Object.setPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDU5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz84YmYwIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Quc2V0UHJvdG90eXBlT2Y7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L3NldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDQ1OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///459\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(21);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(461).set });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcz83YjE4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMy4xOSBPYmplY3Quc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IHNldFByb3RvdHlwZU9mOiByZXF1aXJlKCcuL19zZXQtcHJvdG8nKS5zZXQgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDQ2MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///460\n")},function(module,exports,__webpack_require__){eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(36);\nvar anObject = __webpack_require__(41);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(65)(Function.call, __webpack_require__(142).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtcHJvdG8uanM/NjVhNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXByb3RvLmpzXG4vLyBtb2R1bGUgaWQgPSA0NjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///461\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(463);\nvar $Object = __webpack_require__(10).Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlLmpzP2EwY2UiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGUoUCwgRCkge1xuICByZXR1cm4gJE9iamVjdC5jcmVhdGUoUCwgRCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDQ2MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///462\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(21);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(133) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlLmpzP2IwNWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IGNyZWF0ZTogcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDQ2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///463\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n/**\n * @author micaelpedrosa@gmail.com\n * Base class to implement internal deploy manager of components.\n */\n\n/**\n * @author micaelpedrosa@gmail.com\n * Internal component registry of all sandboxes.\n * Process internal request's for component deploy.\n */\nvar SandboxRegistry = function () {\n /* private\n _components: \n */\n\n function SandboxRegistry(bus) {\n (0, _classCallCheck3.default)(this, SandboxRegistry);\n\n var _this = this;\n\n _this._bus = bus;\n _this._components = {};\n\n bus.addListener(SandboxRegistry.InternalDeployAddress, function (msg) {\n //console.log('SandboxRegistry-RCV: ', msg);\n // let responseMsg = {\n // id: msg.id, type: 'response', from: SandboxRegistry.InternalDeployAddress, to: SandboxRegistry.ExternalDeployAddress\n // };\n\n switch (msg.type) {\n case 'create':\n _this._onDeploy(msg);break;\n case 'delete':\n _this._onRemove(msg);break;\n }\n });\n }\n\n (0, _createClass3.default)(SandboxRegistry, [{\n key: '_responseMsg',\n value: function _responseMsg(msg, code, value) {\n\n var _this = this;\n\n // let messageFactory = _this.messageFactory;\n\n //FLOW-OUT: generic response message to external Sandbox (deploy and un-deploy responses)\n var responseMsg = {\n id: msg.id, type: 'response', from: SandboxRegistry.InternalDeployAddress, to: SandboxRegistry.ExternalDeployAddress\n };\n\n // Chanege the origin message, because the response;\n // msg.from = SandboxRegistry.InternalDeployAddress;\n // msg.to = SandboxRegistry.ExternalDeployAddress;\n\n var body = {};\n if (code) body.code = code;\n if (value) body.desc = value;\n\n responseMsg.body = body;\n\n // return messageFactory.createResponse(msg, code, value);\n return responseMsg;\n }\n\n //FLOW-IN: message from the runtime core Sandbox -> deployComponent\n\n }, {\n key: '_onDeploy',\n value: function _onDeploy(msg) {\n var _this = this;\n var config = msg.body.config;\n var componentURL = msg.body.url;\n var sourceCode = msg.body.sourceCode;\n var responseCode = void 0;\n var responseDesc = void 0;\n\n if (!_this._components.hasOwnProperty(componentURL)) {\n try {\n _this._components[componentURL] = _this._create(componentURL, sourceCode, config);\n responseCode = 200;\n } catch (error) {\n responseCode = 500;\n responseDesc = error;\n }\n } else {\n responseCode = 500;\n responseDesc = 'Instance ' + componentURL + ' already exist!';\n }\n\n var responseMsg = _this._responseMsg(msg, responseCode, responseDesc);\n _this._bus.postMessage(responseMsg);\n }\n\n //FLOW-IN: message from the runtime core Sandbox -> removeComponent\n\n }, {\n key: '_onRemove',\n value: function _onRemove(msg) {\n var _this = this;\n var componentURL = msg.body.url;\n var responseCode = void 0;\n var responseDesc = void 0;\n\n if (_this._components.hasOwnProperty(componentURL)) {\n //remove component from the pool and all listeners\n delete _this._components[componentURL];\n _this._bus.removeAllListenersOf(componentURL);\n responseCode = 200;\n } else {\n responseCode = 500;\n responseDesc = 'Instance ' + componentURL + ' doesn\\'t exist!';\n }\n\n var responseMsg = _this._responseMsg(msg, responseCode, responseDesc);\n\n _this._bus.postMessage(responseMsg);\n }\n\n /**\n * This method should be implemented by the internal sandbox code.\n * @param {ComponentURL} url URL used for the instance\n * @param {string} sourceCode Code of the component\n * @param {Config} config Configuration parameters\n * @return {Object} Returns instance of the component or throw an error \"throw 'error message'\"\n */\n\n }, {\n key: '_create',\n value: function _create(url, sourceCode, config) {\n //implementation specific\n /* example code:\n eval(sourceCode);\n return activate(url, _this._bus, config);\n */\n }\n }, {\n key: 'components',\n get: function get() {\n return this._components;\n }\n }]);\n return SandboxRegistry;\n}();\n\nSandboxRegistry.ExternalDeployAddress = 'hyperty-runtime://sandbox/external';\nSandboxRegistry.InternalDeployAddress = 'hyperty-runtime://sandbox/internal';\n\nexports.default = SandboxRegistry;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDY0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zYW5kYm94L1NhbmRib3hSZWdpc3RyeS5qcz9lZTFjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cbi8qKlxuICogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxuICogQmFzZSBjbGFzcyB0byBpbXBsZW1lbnQgaW50ZXJuYWwgZGVwbG95IG1hbmFnZXIgb2YgY29tcG9uZW50cy5cbiAqL1xuXG4vKipcbiAqIEBhdXRob3IgbWljYWVscGVkcm9zYUBnbWFpbC5jb21cbiAqIEludGVybmFsIGNvbXBvbmVudCByZWdpc3RyeSBvZiBhbGwgc2FuZGJveGVzLlxuICogUHJvY2VzcyBpbnRlcm5hbCByZXF1ZXN0J3MgZm9yIGNvbXBvbmVudCBkZXBsb3kuXG4gKi9cbmNsYXNzIFNhbmRib3hSZWdpc3RyeSB7XG4gIC8qIHByaXZhdGVcbiAgX2NvbXBvbmVudHM6IDx1cmw6IGluc3RhbmNlPlxuICAqL1xuXG4gIGNvbnN0cnVjdG9yKGJ1cykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBfdGhpcy5fYnVzID0gYnVzO1xuICAgIF90aGlzLl9jb21wb25lbnRzID0ge307XG5cbiAgICBidXMuYWRkTGlzdGVuZXIoU2FuZGJveFJlZ2lzdHJ5LkludGVybmFsRGVwbG95QWRkcmVzcywgKG1zZykgPT4ge1xuICAgICAgLy9jb25zb2xlLmxvZygnU2FuZGJveFJlZ2lzdHJ5LVJDVjogJywgbXNnKTtcbiAgICAgIC8vIGxldCByZXNwb25zZU1zZyA9IHtcbiAgICAgIC8vICAgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgZnJvbTogU2FuZGJveFJlZ2lzdHJ5LkludGVybmFsRGVwbG95QWRkcmVzcywgdG86IFNhbmRib3hSZWdpc3RyeS5FeHRlcm5hbERlcGxveUFkZHJlc3NcbiAgICAgIC8vIH07XG5cbiAgICAgIHN3aXRjaCAobXNnLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnY3JlYXRlJzogX3RoaXMuX29uRGVwbG95KG1zZyk7IGJyZWFrO1xuICAgICAgICBjYXNlICdkZWxldGUnOiBfdGhpcy5fb25SZW1vdmUobXNnKTsgYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXQgY29tcG9uZW50cygpIHsgcmV0dXJuIHRoaXMuX2NvbXBvbmVudHM7IH1cblxuICBfcmVzcG9uc2VNc2cobXNnLCBjb2RlLCB2YWx1ZSkge1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIC8vIGxldCBtZXNzYWdlRmFjdG9yeSA9IF90aGlzLm1lc3NhZ2VGYWN0b3J5O1xuXG4gICAgLy9GTE9XLU9VVDogZ2VuZXJpYyByZXNwb25zZSBtZXNzYWdlIHRvIGV4dGVybmFsIFNhbmRib3ggKGRlcGxveSBhbmQgdW4tZGVwbG95IHJlc3BvbnNlcylcbiAgICBsZXQgcmVzcG9uc2VNc2cgPSB7XG4gICAgICBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCBmcm9tOiBTYW5kYm94UmVnaXN0cnkuSW50ZXJuYWxEZXBsb3lBZGRyZXNzLCB0bzogU2FuZGJveFJlZ2lzdHJ5LkV4dGVybmFsRGVwbG95QWRkcmVzc1xuICAgIH07XG5cbiAgICAvLyBDaGFuZWdlIHRoZSBvcmlnaW4gbWVzc2FnZSwgYmVjYXVzZSB0aGUgcmVzcG9uc2U7XG4gICAgLy8gbXNnLmZyb20gPSBTYW5kYm94UmVnaXN0cnkuSW50ZXJuYWxEZXBsb3lBZGRyZXNzO1xuICAgIC8vIG1zZy50byA9IFNhbmRib3hSZWdpc3RyeS5FeHRlcm5hbERlcGxveUFkZHJlc3M7XG5cbiAgICBsZXQgYm9keSA9IHt9O1xuICAgIGlmIChjb2RlKSBib2R5LmNvZGUgPSBjb2RlO1xuICAgIGlmICh2YWx1ZSkgYm9keS5kZXNjID0gdmFsdWU7XG5cbiAgICByZXNwb25zZU1zZy5ib2R5ID0gYm9keTtcblxuICAgIC8vIHJldHVybiBtZXNzYWdlRmFjdG9yeS5jcmVhdGVSZXNwb25zZShtc2csIGNvZGUsIHZhbHVlKTtcbiAgICByZXR1cm4gcmVzcG9uc2VNc2c7XG4gIH1cblxuICAvL0ZMT1ctSU46IG1lc3NhZ2UgZnJvbSB0aGUgcnVudGltZSBjb3JlIFNhbmRib3ggLT4gZGVwbG95Q29tcG9uZW50XG4gIF9vbkRlcGxveShtc2cpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIGxldCBjb25maWcgPSBtc2cuYm9keS5jb25maWc7XG4gICAgbGV0IGNvbXBvbmVudFVSTCA9IG1zZy5ib2R5LnVybDtcbiAgICBsZXQgc291cmNlQ29kZSA9IG1zZy5ib2R5LnNvdXJjZUNvZGU7XG4gICAgbGV0IHJlc3BvbnNlQ29kZTtcbiAgICBsZXQgcmVzcG9uc2VEZXNjO1xuXG4gICAgaWYgKCFfdGhpcy5fY29tcG9uZW50cy5oYXNPd25Qcm9wZXJ0eShjb21wb25lbnRVUkwpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBfdGhpcy5fY29tcG9uZW50c1tjb21wb25lbnRVUkxdID0gX3RoaXMuX2NyZWF0ZShjb21wb25lbnRVUkwsIHNvdXJjZUNvZGUsIGNvbmZpZyk7XG4gICAgICAgIHJlc3BvbnNlQ29kZSA9IDIwMDtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlc3BvbnNlQ29kZSA9IDUwMDtcbiAgICAgICAgcmVzcG9uc2VEZXNjID0gZXJyb3I7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3BvbnNlQ29kZSA9IDUwMDtcbiAgICAgIHJlc3BvbnNlRGVzYyA9ICdJbnN0YW5jZSAnICsgY29tcG9uZW50VVJMICsgJyBhbHJlYWR5IGV4aXN0ISc7XG4gICAgfVxuXG4gICAgbGV0IHJlc3BvbnNlTXNnID0gX3RoaXMuX3Jlc3BvbnNlTXNnKG1zZywgcmVzcG9uc2VDb2RlLCByZXNwb25zZURlc2MpO1xuICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2UocmVzcG9uc2VNc2cpO1xuICB9XG5cbiAgLy9GTE9XLUlOOiBtZXNzYWdlIGZyb20gdGhlIHJ1bnRpbWUgY29yZSBTYW5kYm94IC0+IHJlbW92ZUNvbXBvbmVudFxuICBfb25SZW1vdmUobXNnKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBsZXQgY29tcG9uZW50VVJMID0gbXNnLmJvZHkudXJsO1xuICAgIGxldCByZXNwb25zZUNvZGU7XG4gICAgbGV0IHJlc3BvbnNlRGVzYztcblxuICAgIGlmIChfdGhpcy5fY29tcG9uZW50cy5oYXNPd25Qcm9wZXJ0eShjb21wb25lbnRVUkwpKSB7XG4gICAgICAvL3JlbW92ZSBjb21wb25lbnQgZnJvbSB0aGUgcG9vbCBhbmQgYWxsIGxpc3RlbmVyc1xuICAgICAgZGVsZXRlIF90aGlzLl9jb21wb25lbnRzW2NvbXBvbmVudFVSTF07XG4gICAgICBfdGhpcy5fYnVzLnJlbW92ZUFsbExpc3RlbmVyc09mKGNvbXBvbmVudFVSTCk7XG4gICAgICByZXNwb25zZUNvZGUgPSAyMDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3BvbnNlQ29kZSA9IDUwMDtcbiAgICAgIHJlc3BvbnNlRGVzYyA9ICdJbnN0YW5jZSAnICsgY29tcG9uZW50VVJMICsgJyBkb2VzblxcJ3QgZXhpc3QhJztcbiAgICB9XG5cbiAgICBsZXQgcmVzcG9uc2VNc2cgPSBfdGhpcy5fcmVzcG9uc2VNc2cobXNnLCByZXNwb25zZUNvZGUsIHJlc3BvbnNlRGVzYyk7XG5cbiAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHJlc3BvbnNlTXNnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgdGhlIGludGVybmFsIHNhbmRib3ggY29kZS5cbiAgICogQHBhcmFtICB7Q29tcG9uZW50VVJMfSB1cmwgVVJMIHVzZWQgZm9yIHRoZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IHNvdXJjZUNvZGUgQ29kZSBvZiB0aGUgY29tcG9uZW50XG4gICAqIEBwYXJhbSAge0NvbmZpZ30gY29uZmlnIENvbmZpZ3VyYXRpb24gcGFyYW1ldGVyc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgaW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudCBvciB0aHJvdyBhbiBlcnJvciBcInRocm93ICdlcnJvciBtZXNzYWdlJ1wiXG4gICAqL1xuICBfY3JlYXRlKHVybCwgc291cmNlQ29kZSwgY29uZmlnKSB7XG4gICAgLy9pbXBsZW1lbnRhdGlvbiBzcGVjaWZpY1xuICAgIC8qIGV4YW1wbGUgY29kZTpcbiAgICAgIGV2YWwoc291cmNlQ29kZSk7XG4gICAgICByZXR1cm4gYWN0aXZhdGUodXJsLCBfdGhpcy5fYnVzLCBjb25maWcpO1xuICAgICovXG4gIH1cbn1cblxuU2FuZGJveFJlZ2lzdHJ5LkV4dGVybmFsRGVwbG95QWRkcmVzcyA9ICdoeXBlcnR5LXJ1bnRpbWU6Ly9zYW5kYm94L2V4dGVybmFsJztcblNhbmRib3hSZWdpc3RyeS5JbnRlcm5hbERlcGxveUFkZHJlc3MgPSAnaHlwZXJ0eS1ydW50aW1lOi8vc2FuZGJveC9pbnRlcm5hbCc7XG5cbmV4cG9ydCBkZWZhdWx0IFNhbmRib3hSZWdpc3RyeTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvc2FuZGJveC9TYW5kYm94UmVnaXN0cnkuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTs7Ozs7QUFLQTs7Ozs7QUFLQTtBQUNBOzs7O0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFGQTtBQUlBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBOzs7O0FBSUE7OztBQXhGQTtBQUFBO0FBQUE7Ozs7O0FBMkZBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///464\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(60);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(68);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(69);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Bus2 = __webpack_require__(204);\n\nvar _Bus3 = _interopRequireDefault(_Bus2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* @author micaelpedrosa@gmail.com\n* Message BUS Interface is an extension of the Bus\n* It is used mainly in the internal sandbox routing.\n*/\nvar MiniBus = function (_Bus) {\n (0, _inherits3.default)(MiniBus, _Bus);\n\n function MiniBus() {\n (0, _classCallCheck3.default)(this, MiniBus);\n return (0, _possibleConstructorReturn3.default)(this, (MiniBus.__proto__ || (0, _getPrototypeOf2.default)(MiniBus)).call(this));\n }\n\n /**\n * Post a message for routing. Message is routed directly to the external routing _onPostMessage.\n * @param {Message} inMsg JSON with mandatory Message structure {id, type, from, to}\n * @param {Callback} responseCallback Optional callback if a response is expected from the request. A response will be always sent, even if it is a \"Timeout\".\n * @return {number} the Message id\n */\n\n\n (0, _createClass3.default)(MiniBus, [{\n key: 'postMessage',\n value: function postMessage(inMsg, responseCallback, timeout) {\n var _this = this;\n\n _this._genId(inMsg);\n _this._responseCallback(inMsg, responseCallback, timeout);\n\n //always send to external (to core MessageBus)\n _this._onPostMessage(inMsg);\n\n return inMsg.id;\n }\n\n //internal method used when a message is received by an external routing system\n\n }, {\n key: '_onMessage',\n value: function _onMessage(msg) {\n var _this = this;\n\n if (!_this._onResponse(msg)) {\n var itemList = _this._subscriptions[msg.to];\n if (itemList) {\n _this._publishOn(itemList, msg);\n if (!msg.to.startsWith('hyperty')) {\n _this._publishOnDefault(msg);\n }\n } else {\n _this._publishOnDefault(msg);\n }\n }\n }\n }]);\n return MiniBus;\n}(_Bus3.default); /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\n\nexports.default = MiniBus;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDY1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvTWluaUJ1cy5qcz9lNTIwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cbmltcG9ydCBCdXMgZnJvbSAnLi9CdXMnO1xuXG4vKipcbiogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxuKiBNZXNzYWdlIEJVUyBJbnRlcmZhY2UgaXMgYW4gZXh0ZW5zaW9uIG9mIHRoZSBCdXNcbiogSXQgaXMgdXNlZCBtYWlubHkgaW4gdGhlIGludGVybmFsIHNhbmRib3ggcm91dGluZy5cbiovXG5jbGFzcyBNaW5pQnVzIGV4dGVuZHMgQnVzIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBvc3QgYSBtZXNzYWdlIGZvciByb3V0aW5nLiBNZXNzYWdlIGlzIHJvdXRlZCBkaXJlY3RseSB0byB0aGUgZXh0ZXJuYWwgcm91dGluZyBfb25Qb3N0TWVzc2FnZS5cbiAgICogQHBhcmFtICB7TWVzc2FnZX0gaW5Nc2cgICAgICAgICAgICBKU09OIHdpdGggbWFuZGF0b3J5IE1lc3NhZ2Ugc3RydWN0dXJlIHtpZCwgdHlwZSwgZnJvbSwgdG99XG4gICAqIEBwYXJhbSAge0NhbGxiYWNrfSByZXNwb25zZUNhbGxiYWNrIE9wdGlvbmFsIGNhbGxiYWNrIGlmIGEgcmVzcG9uc2UgaXMgZXhwZWN0ZWQgZnJvbSB0aGUgcmVxdWVzdC4gQSByZXNwb25zZSB3aWxsIGJlIGFsd2F5cyBzZW50LCBldmVuIGlmIGl0IGlzIGEgXCJUaW1lb3V0XCIuXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgICAgICAgICAgICB0aGUgTWVzc2FnZSBpZFxuICAgKi9cbiAgcG9zdE1lc3NhZ2UoaW5Nc2csIHJlc3BvbnNlQ2FsbGJhY2ssIHRpbWVvdXQpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMuX2dlbklkKGluTXNnKTtcbiAgICBfdGhpcy5fcmVzcG9uc2VDYWxsYmFjayhpbk1zZywgcmVzcG9uc2VDYWxsYmFjaywgdGltZW91dCk7XG5cbiAgICAvL2Fsd2F5cyBzZW5kIHRvIGV4dGVybmFsICh0byBjb3JlIE1lc3NhZ2VCdXMpXG4gICAgX3RoaXMuX29uUG9zdE1lc3NhZ2UoaW5Nc2cpO1xuXG4gICAgcmV0dXJuIGluTXNnLmlkO1xuICB9XG5cbiAgLy9pbnRlcm5hbCBtZXRob2QgdXNlZCB3aGVuIGEgbWVzc2FnZSBpcyByZWNlaXZlZCBieSBhbiBleHRlcm5hbCByb3V0aW5nIHN5c3RlbVxuICBfb25NZXNzYWdlKG1zZykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIV90aGlzLl9vblJlc3BvbnNlKG1zZykpIHtcbiAgICAgIGxldCBpdGVtTGlzdCA9IF90aGlzLl9zdWJzY3JpcHRpb25zW21zZy50b107XG4gICAgICBpZiAoaXRlbUxpc3QpIHtcbiAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKTtcbiAgICAgICAgaWYgKCFtc2cudG8uc3RhcnRzV2l0aCgnaHlwZXJ0eScpKSB7XG4gICAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbkRlZmF1bHQobXNnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbkRlZmF1bHQobXNnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBNaW5pQnVzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9idXMvTWluaUJ1cy5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkE7QUFDQTs7Ozs7QUFDQTs7Ozs7QUFLQTs7O0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUF2Q0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///465\n")},function(module,exports,__webpack_require__){eval("var core = __webpack_require__(10);\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDY2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9qc29uL3N0cmluZ2lmeS5qcz9hYTQyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpO1xudmFyICRKU09OID0gY29yZS5KU09OIHx8IChjb3JlLkpTT04gPSB7IHN0cmluZ2lmeTogSlNPTi5zdHJpbmdpZnkgfSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHJldHVybiAkSlNPTi5zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3VtZW50cyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5LmpzXG4vLyBtb2R1bGUgaWQgPSA0NjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///466\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(60);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(68);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(69);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _RegistryDataModel2 = __webpack_require__(468);\n\nvar _RegistryDataModel3 = _interopRequireDefault(_RegistryDataModel2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* @author: Gil Dias (gil.dias@tecnico.ulisboa.pt)\n* HypertyInstance Data Model used to model instances of Hyperties running in devices and servers.\n*/\nvar HypertyInstance = function (_RegistryDataModel) {\n (0, _inherits3.default)(HypertyInstance, _RegistryDataModel);\n\n function HypertyInstance(id, url, descriptorURL, descriptor, hypertyURL, user, guid, runtime, context, p2pHandler, p2pRequester, dataSchemes, resources, startingTime, lastModified) {\n (0, _classCallCheck3.default)(this, HypertyInstance);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (HypertyInstance.__proto__ || (0, _getPrototypeOf2.default)(HypertyInstance)).call(this, id, url, descriptorURL, p2pRequester, startingTime, lastModified));\n\n var _this = _this2;\n _this._descriptor = descriptor;\n _this._hypertyURL = hypertyURL;\n _this._user = user;\n _this._guid = guid;\n _this._runtime = runtime;\n _this._context = context;\n _this._p2pHandler = p2pHandler;\n _this._dataSchemes = dataSchemes;\n _this._resources = resources;\n return _this2;\n }\n\n (0, _createClass3.default)(HypertyInstance, [{\n key: 'user',\n set: function set(identity) {\n var _this = this;\n _this.user = identity;\n },\n get: function get() {\n var _this = this;\n return _this._user;\n }\n }, {\n key: 'hypertyURL',\n get: function get() {\n var _this = this;\n return _this._hypertyURL;\n }\n }, {\n key: 'descriptor',\n get: function get() {\n var _this = this;\n return _this._descriptor;\n }\n }, {\n key: 'objectName',\n get: function get() {\n var _this = this;\n return _this._descriptor._objectName;\n }\n }, {\n key: 'p2pHandler',\n get: function get() {\n var _this = this;\n return _this._p2pHandler;\n }\n }, {\n key: 'dataSchemes',\n get: function get() {\n var _this = this;\n return _this._dataSchemes;\n }\n }, {\n key: 'resources',\n get: function get() {\n var _this = this;\n return _this._resources;\n }\n }, {\n key: 'runtimeURL',\n get: function get() {\n var _this = this;\n return _this._runtime;\n }\n }]);\n return HypertyInstance;\n}(_RegistryDataModel3.default); /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\n\nexports.default = HypertyInstance;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDY3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9yZWdpc3RyeS9IeXBlcnR5SW5zdGFuY2UuanM/Zjg1OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKiovXG5pbXBvcnQgUmVnaXN0cnlEYXRhTW9kZWwgZnJvbSAnLi9SZWdpc3RyeURhdGFNb2RlbCc7XG5cbi8qKlxuKiAgIEBhdXRob3I6IEdpbCBEaWFzIChnaWwuZGlhc0B0ZWNuaWNvLnVsaXNib2EucHQpXG4qICAgSHlwZXJ0eUluc3RhbmNlIERhdGEgTW9kZWwgdXNlZCB0byBtb2RlbCBpbnN0YW5jZXMgb2YgSHlwZXJ0aWVzIHJ1bm5pbmcgaW4gZGV2aWNlcyBhbmQgc2VydmVycy5cbiovXG5jbGFzcyBIeXBlcnR5SW5zdGFuY2UgZXh0ZW5kcyBSZWdpc3RyeURhdGFNb2RlbCB7XG5cbiAgY29uc3RydWN0b3IoaWQsIHVybCwgZGVzY3JpcHRvclVSTCwgZGVzY3JpcHRvciwgaHlwZXJ0eVVSTCwgdXNlciwgZ3VpZCwgcnVudGltZSwgY29udGV4dCwgcDJwSGFuZGxlciwgcDJwUmVxdWVzdGVyLCBkYXRhU2NoZW1lcywgcmVzb3VyY2VzLCBzdGFydGluZ1RpbWUsIGxhc3RNb2RpZmllZCkge1xuICAgIHN1cGVyKGlkLCB1cmwsIGRlc2NyaXB0b3JVUkwsIHAycFJlcXVlc3Rlciwgc3RhcnRpbmdUaW1lLCBsYXN0TW9kaWZpZWQpO1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgX3RoaXMuX2Rlc2NyaXB0b3IgPSBkZXNjcmlwdG9yO1xuICAgIF90aGlzLl9oeXBlcnR5VVJMID0gaHlwZXJ0eVVSTDtcbiAgICBfdGhpcy5fdXNlciA9IHVzZXI7XG4gICAgX3RoaXMuX2d1aWQgPSBndWlkO1xuICAgIF90aGlzLl9ydW50aW1lID0gcnVudGltZTtcbiAgICBfdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gICAgX3RoaXMuX3AycEhhbmRsZXIgPSBwMnBIYW5kbGVyO1xuICAgIF90aGlzLl9kYXRhU2NoZW1lcyA9IGRhdGFTY2hlbWVzO1xuICAgIF90aGlzLl9yZXNvdXJjZXMgPSByZXNvdXJjZXM7XG4gIH1cblxuICBzZXQgdXNlcihpZGVudGl0eSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgX3RoaXMudXNlciA9IGlkZW50aXR5O1xuICB9XG5cbiAgZ2V0IHVzZXIoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gX3RoaXMuX3VzZXI7XG4gIH1cblxuICBnZXQgaHlwZXJ0eVVSTCgpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBfdGhpcy5faHlwZXJ0eVVSTDtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdG9yKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIF90aGlzLl9kZXNjcmlwdG9yO1xuICB9XG5cbiAgZ2V0IG9iamVjdE5hbWUoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gX3RoaXMuX2Rlc2NyaXB0b3IuX29iamVjdE5hbWU7XG4gIH1cblxuICBnZXQgcDJwSGFuZGxlcigpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBfdGhpcy5fcDJwSGFuZGxlcjtcbiAgfVxuXG4gIGdldCBkYXRhU2NoZW1lcygpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBfdGhpcy5fZGF0YVNjaGVtZXM7XG4gIH1cblxuICBnZXQgcmVzb3VyY2VzKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIF90aGlzLl9yZXNvdXJjZXM7XG4gIH1cblxuICBnZXQgcnVudGltZVVSTCgpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBfdGhpcy5fcnVudGltZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBIeXBlcnR5SW5zdGFuY2U7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3JlZ2lzdHJ5L0h5cGVydHlJbnN0YW5jZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkE7QUFDQTs7Ozs7QUFDQTs7OztBQUlBOzs7QUFFQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFYQTtBQVlBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUEzREE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThEQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///467\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the "License");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an "AS IS" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n/**\n* @author: Gil Dias (gil.dias@tecnico.ulisboa.pt)\n* Registry Data Model includes all Objects to be handled by the Registry functionality including\n*/\nvar RegistryDataModel = function () {\n function RegistryDataModel(id, url, descriptorURL, p2pRequester, startingTime, lastModified, status, stubs, stubsConfiguration) {\n (0, _classCallCheck3.default)(this, RegistryDataModel);\n\n var _this = this;\n\n _this._id = id;\n _this._url = url;\n _this._descriptorURL = descriptorURL;\n _this._startingTime = startingTime;\n _this._lastModified = lastModified;\n _this._status = status;\n _this._stubs = stubs;\n _this._stubsConfiguration = stubsConfiguration;\n _this._p2pRequester = p2pRequester;\n }\n\n (0, _createClass3.default)(RegistryDataModel, [{\n key: "id",\n get: function get() {\n var _this = this;\n return _this._id;\n }\n }, {\n key: "url",\n get: function get() {\n var _this = this;\n return _this._url;\n }\n }, {\n key: "descriptor",\n get: function get() {\n var _this = this;\n return _this._descriptorURL;\n }\n }, {\n key: "p2pRequester",\n get: function get() {\n var _this = this;\n return _this._p2pRequester;\n }\n }, {\n key: "lastModified",\n get: function get() {\n var _this = this;\n return _this._lastModified;\n }\n }]);\n return RegistryDataModel;\n}();\n\nexports.default = RegistryDataModel;\nmodule.exports = exports["default"];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDY4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9yZWdpc3RyeS9SZWdpc3RyeURhdGFNb2RlbC5qcz83YTJmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cbi8qKlxuKiAgIEBhdXRob3I6IEdpbCBEaWFzIChnaWwuZGlhc0B0ZWNuaWNvLnVsaXNib2EucHQpXG4qICAgUmVnaXN0cnkgRGF0YSBNb2RlbCBpbmNsdWRlcyBhbGwgT2JqZWN0cyB0byBiZSBoYW5kbGVkIGJ5IHRoZSBSZWdpc3RyeSBmdW5jdGlvbmFsaXR5IGluY2x1ZGluZ1xuKi9cbmNsYXNzIFJlZ2lzdHJ5RGF0YU1vZGVsIHtcblxuICBjb25zdHJ1Y3RvcihpZCwgdXJsLCBkZXNjcmlwdG9yVVJMLCBwMnBSZXF1ZXN0ZXIsIHN0YXJ0aW5nVGltZSwgbGFzdE1vZGlmaWVkLCBzdGF0dXMsIHN0dWJzLCBzdHVic0NvbmZpZ3VyYXRpb24pIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMuX2lkID0gaWQ7XG4gICAgX3RoaXMuX3VybCA9IHVybDtcbiAgICBfdGhpcy5fZGVzY3JpcHRvclVSTCA9IGRlc2NyaXB0b3JVUkw7XG4gICAgX3RoaXMuX3N0YXJ0aW5nVGltZSA9IHN0YXJ0aW5nVGltZTtcbiAgICBfdGhpcy5fbGFzdE1vZGlmaWVkID0gbGFzdE1vZGlmaWVkO1xuICAgIF90aGlzLl9zdGF0dXMgPSBzdGF0dXM7XG4gICAgX3RoaXMuX3N0dWJzID0gc3R1YnM7XG4gICAgX3RoaXMuX3N0dWJzQ29uZmlndXJhdGlvbiA9IHN0dWJzQ29uZmlndXJhdGlvbjtcbiAgICBfdGhpcy5fcDJwUmVxdWVzdGVyID0gcDJwUmVxdWVzdGVyO1xuICB9XG5cbiAgZ2V0IGlkKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIF90aGlzLl9pZDtcbiAgfVxuXG4gIGdldCB1cmwoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gX3RoaXMuX3VybDtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdG9yKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIF90aGlzLl9kZXNjcmlwdG9yVVJMO1xuICB9XG5cbiAgZ2V0IHAycFJlcXVlc3RlcigpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBfdGhpcy5fcDJwUmVxdWVzdGVyO1xuICB9XG5cbiAgZ2V0IGxhc3RNb2RpZmllZCgpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBfdGhpcy5fbGFzdE1vZGlmaWVkO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cnlEYXRhTW9kZWw7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3JlZ2lzdHJ5L1JlZ2lzdHJ5RGF0YU1vZGVsLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkE7Ozs7QUFJQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///468\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('P2PConnectionResolve');\n\n/**\n* To process address resolution for p2p connections\n*/\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n\n// Log System\n\nvar P2PConnectionResolve = function () {\n function P2PConnectionResolve(registry) {\n (0, _classCallCheck3.default)(this, P2PConnectionResolve);\n\n var _this = this;\n _this._registry = registry;\n _this._remoteP2PEntities = {}; // All remote entities and associated runtime url that are reachable with existing p2p connections\n }\n\n /**\n * Verifies if remote Entity can be reached with a P2P Connection.\n * @param {URL.URL} info object URL\n * @return {HypertyDataObjectInstance} addressURL return the Data Object instance registered URL, return undefined otherwise\n */\n\n (0, _createClass3.default)(P2PConnectionResolve, [{\n key: 'checkP2P',\n value: function checkP2P(msg) {\n\n if (!msg.hasOwnProperty('to')) {\n // throw Error('The p2p verification was failed');\n return _promise2.default.reject('The p2p verification was failed');\n }\n\n var scheme = msg.to.split('://')[0];\n\n var comp = msg.to.split('://')[1].split('/')[2];\n\n var url = void 0;\n\n if (comp) url = msg.to.substring(0, msg.to.indexOf('/' + comp));else url = msg.to;\n\n var p2p = {};\n\n if (msg.body && msg.body.p2p) p2p.p2p = msg.body.p2p;\n\n if (msg.body && msg.body.p2pHandler && msg.body.p2pRequester) {\n p2p.p2pHandler = msg.body.p2pHandler;\n p2p.p2pRequester = msg.body.p2pRequester;\n p2p.runtime = msg.body.p2pHandler.split('/p2phandler/')[0];\n }\n\n switch (scheme) {\n case 'runtime':\n return this.checkP2PRuntime(url, p2p);\n break;\n default:\n return this.checkP2PEntity(url, p2p);\n break;\n\n }\n }\n\n /**\n * Verifies if remote Entity (Hyperty or Data Object) can be reached with a P2P Connection.\n * @param {string} url Remote Entity URL to be checked\n * @param {object} p2p p2p information to be used including ´runtime´ with remote Runtime URL, 'p2pHandler' remote P2P Handler Stub URL and p2pRequester with Catalogue URL of P2P Requester to be used\n * @return {promise} registeredEntity if p2p connection is possible it returns p2p information to be used in the connection, otherwise the promise is rejected\n */\n\n }, {\n key: 'checkP2PEntity',\n value: function checkP2PEntity(url, p2p) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n var remoteEntity = _this._remoteP2PEntities[url];\n\n if (remoteEntity) resolve(remoteEntity);else if (p2p.runtime) resolve(p2p); // use provided p2p if available in the message body\n else if (p2p.p2p) {\n // otherwise look on Domain Registry\n\n log.log('[Registry - checkP2PEntity] - search in Domain Registry: ', url);\n\n var message = {\n type: 'read',\n from: _this._registry.registryURL,\n to: 'domain://registry.' + _this._registry._domain,\n body: {\n resource: url\n }\n };\n\n _this._registry._messageBus.postMessage(message, function (reply) {\n log.log('[Registry - checkP2PEntity] Domain Registry reply', reply);\n if ('value' in reply.body) {\n\n //todo: store retrieved entity\n var resolvedEntity = reply.body.value;\n\n if (resolvedEntity.hasOwnProperty('p2pHandler')) {\n resolve(resolvedEntity);\n } else {\n reject('[Registry checkP2PEntity] Hyperty found does not support P2P', reply.body.value);\n }\n } else {\n reject('[Registry checkP2PEntity] Hyperty with P2PHandler not found', reply.body.code);\n }\n });\n } else reject('[Registry checkP2PEntity] No P2P Connection available for ', url);\n });\n }\n\n /**\n * Verifies if remote Runtime can be reached with a P2P Connection.\n * @param {URL.URL} runtimeURL Runtime URL\n * @return {Object} p2pConnection return the P2PConnection instance registered URL, return undefined otherwise\n */\n\n }, {\n key: 'checkP2PRuntime',\n value: function checkP2PRuntime(runtimeURL, p2p) {\n var _this = this;\n\n var registeredRuntime = {};\n\n // look on locally stored p2p connections\n return new _promise2.default(function (resolve, reject) {\n if (_this._registry.p2pConnectionList[runtimeURL]) {\n resolve({ runtime: runtimeURL });\n } else if (p2p.runtime) {\n registeredRuntime = p2p;\n resolve(registeredRuntime);\n } else reject('[Registry.P2PConnectionResolve.checkP2PRuntime] No P2P Connection found to ', runtimeURL);\n });\n }\n\n /**\n * Verifies if remote Hyperty can be reached with a P2P Connection.\n * @param {JSON} info object or entity charateristics info\n * @return {addressURL} addressURL return the URL if there is any previousy registered URL, return undefined otherwise\n */\n\n }, {\n key: 'checkP2PHyperty',\n value: function checkP2PHyperty(hypertyURL, p2p) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n var hyperty = void 0;\n\n // look on locally stored hyperties\n\n for (var i in _this._registry.remoteHypertyList) {\n hyperty = _this._registry.remoteHypertyList[i];\n\n log.log('[Registry - checkP2PHyperty] - for each Hyperty: ', hyperty);\n\n // todo: change to \"hyperty.url\" to be aligned with hyperty instance data model spec\n\n if (hyperty.hypertyID === hypertyURL) {\n\n if (hyperty.hasOwnProperty('p2pHandler')) {\n resolve(hyperty);\n } else {\n reject('[Registry checkP2PHyperty] Hyperty found does not support P2P', hyperty);\n }\n return;\n }\n }\n\n if (!hyperty && p2p.runtime) resolve(p2p); // use provided p2p if available in the message body\n else if (!hyperty && p2p.p2p) {\n // otherwise look on Domain Registry\n\n log.log('[Registry - checkP2PHyperty] - search in Domain Registry: ', hyperty);\n\n var message = {\n type: 'read',\n from: _this._registry.registryURL,\n to: 'domain://registry.' + _this._registry._domain,\n body: {\n resource: hypertyURL\n }\n };\n\n _this._registry._messageBus.postMessage(message, function (reply) {\n log.log('[Registry - checkP2PHyperty] Domain Registry reply', reply);\n if ('value' in reply.body) {\n\n //todo: store retrieved hyperty\n var resolvedHyperty = reply.body.value;\n\n _this._registry.remoteHypertyList.push(resolvedHyperty);\n\n if (resolvedHyperty.hasOwnProperty('p2pHandler')) {\n resolve(resolvedHyperty);\n } else {\n reject('[Registry checkP2PHyperty] Hyperty found does not support P2P', reply.body.value);\n }\n } else {\n reject('[Registry checkP2PHyperty] Hyperty with P2PHandler not found', reply.body.code);\n }\n });\n } else reject('[Registry checkP2PHyperty] No P2P Connection available for ', hypertyURL);\n });\n }\n\n /**\n * Verifies if remote Data Object can be reached with a P2P Connection.\n * @param {URL.URL} DataObjectURL object URL\n * @return {HypertyDataObjectInstance} addressURL return the Data Object instance registered URL, return undefined otherwise\n */\n\n }, {\n key: 'checkP2PDataObject',\n value: function checkP2PDataObject(url, p2p) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n // look on locally stored Remote Data Objects\n\n var dataobject = _this._registry.remoteDataObjectList.filter(function (i) {\n return _this._registry.remoteDataObjectList[i].url === url;\n });\n\n if (dataobject.length !== 0 && dataobject[0].p2pRequester) {\n resolve(dataobject[0]);\n } else if (dataobject.length !== 0) {\n reject('[Registry checkP2PDataObject] Data Object found does not support P2P', dataobject[0]);\n } else if (dataobject.length === 0 && p2p.runtime) resolve(p2p); // use provided p2p info if available in the message body\n else if (dataobject.length && p2p.p2p) {\n // otherwise look on Domain Registry\n\n // look on Domain Registry\n\n var message = {\n type: 'read',\n from: _this._registry.registryURL,\n to: 'domain://registry.' + _this._registry._domain,\n body: {\n resource: url\n }\n };\n\n _this._registry._messageBus.postMessage(message, function (reply) {\n log.log('discover data object per url reply', reply);\n if ('value' in reply.body) {\n\n //todo: store retrieved hyperty\n var resolvedDataObject = reply.body.value;\n\n _this._registry.remoteDataObjectList.push(resolvedDataObject);\n\n if (resolvedDataObject.p2pRequester) {\n resolve(resolvedDataObject);\n } else {\n reject('[Registry checkP2PDataObject] Data Object found does not support P2P', reply.body.value);\n }\n } else {\n reject('[Registry checkP2PDataObject] not found', reply.body.code);\n }\n });\n } else reject('[Registry checkP2PDataObject] no P2P Connection found');\n });\n }\n }, {\n key: 'addRemoteP2PEntity',\n value: function addRemoteP2PEntity(url, runtime) {\n this._remoteP2PEntities[url] = runtime;\n }\n }, {\n key: 'removeRemoteP2PEntity',\n value: function removeRemoteP2PEntity(url) {\n delete this._remoteP2PEntities[url];\n }\n }, {\n key: 'reconnectP2PRequester',\n value: function reconnectP2PRequester(p2pRequester) {\n var _this = this;\n\n log.log('[P2PConenctionResolve.reconnectP2PRequester] lets try to reconnect P2P Requester Stub: ', p2pRequester);\n\n return new _promise2.default(function (resolve, reject) {\n\n var remoteRuntime = p2pRequester.runtime;\n\n var message = {\n type: 'execute',\n from: _this._registry.registryURL,\n to: p2pRequester.url,\n body: {\n method: 'connect',\n params: [p2pRequester.p2pHandler]\n }\n };\n\n // lets prepare the p2pRequesterSTub reconnect by setting an observer to its status changes\n\n _this._registry.watchingYou.observe('p2pRequesterStub', function (change) {\n\n log.log('[P2PConenctionResolve.reconnectP2PRequester] p2pRequesterStubs changed ' + _this._registry.p2pRequesterStub);\n\n if (change.keypath.split('.')[0] === remoteRuntime && change.name === 'status') {\n switch (change.newValue) {\n case 'live':\n log.log('[P2PConenctionResolve.reconnectP2PRequester] p2pRequester is live ' + _this._registry.p2pRequesterStub[remoteRuntime]);\n resolve(_this._registry.p2pRequesterStub[remoteRuntime].url);\n break;\n case 'failed':\n log.log('[P2PConenctionResolve.reconnectP2PRequester] p2pRequester reconnect failed ' + _this._registry.p2pRequesterStub[remoteRuntime]);\n reject('P2P Requester reconnect failed');\n break;\n default:\n }\n }\n });\n\n // stub load\n _this._registry._messageBus.postMessage(message, function (reply) {\n log.log('[P2PConenctionResolve.reconnectP2PRequester] reconnect request reply', reply);\n });\n });\n }\n }]);\n return P2PConnectionResolve;\n}();\n\nexports.default = P2PConnectionResolve;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDY5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9yZWdpc3RyeS9QMlBDb25uZWN0aW9uUmVzb2x2ZS5qcz9iNTVkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cblxuLy8gTG9nIFN5c3RlbVxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdQMlBDb25uZWN0aW9uUmVzb2x2ZScpO1xuXG4vKipcbiogICBUbyBwcm9jZXNzIGFkZHJlc3MgcmVzb2x1dGlvbiBmb3IgcDJwIGNvbm5lY3Rpb25zXG4qL1xuY2xhc3MgUDJQQ29ubmVjdGlvblJlc29sdmUgIHtcblxuICBjb25zdHJ1Y3RvcihyZWdpc3RyeSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgX3RoaXMuX3JlZ2lzdHJ5ID0gcmVnaXN0cnk7XG4gICAgX3RoaXMuX3JlbW90ZVAyUEVudGl0aWVzID0ge307IC8vIEFsbCByZW1vdGUgZW50aXRpZXMgYW5kIGFzc29jaWF0ZWQgcnVudGltZSB1cmwgdGhhdCBhcmUgcmVhY2hhYmxlIHdpdGggZXhpc3RpbmcgcDJwIGNvbm5lY3Rpb25zXG5cbiAgfVxuXG5cbiAgLyoqXG4gICogVmVyaWZpZXMgaWYgcmVtb3RlIEVudGl0eSBjYW4gYmUgcmVhY2hlZCB3aXRoIGEgUDJQIENvbm5lY3Rpb24uXG4gICogQHBhcmFtICB7VVJMLlVSTH0gICAgICAgIGluZm8gICAgICAgICAgIG9iamVjdCBVUkxcbiAgKiBAcmV0dXJuIHtIeXBlcnR5RGF0YU9iamVjdEluc3RhbmNlfSAgYWRkcmVzc1VSTCAgICAgcmV0dXJuIHRoZSBEYXRhIE9iamVjdCBpbnN0YW5jZSByZWdpc3RlcmVkIFVSTCwgcmV0dXJuIHVuZGVmaW5lZCBvdGhlcndpc2VcbiAgKi9cblxuICBjaGVja1AyUChtc2cpIHtcblxuICAgIGlmICghbXNnLmhhc093blByb3BlcnR5KCd0bycpKSB7XG4gICAgICAvLyB0aHJvdyBFcnJvcignVGhlIHAycCB2ZXJpZmljYXRpb24gd2FzIGZhaWxlZCcpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdUaGUgcDJwIHZlcmlmaWNhdGlvbiB3YXMgZmFpbGVkJyk7XG4gICAgfVxuXG4gICAgbGV0IHNjaGVtZSA9IG1zZy50by5zcGxpdCgnOi8vJylbMF07XG5cbiAgICBsZXQgY29tcCA9IG1zZy50by5zcGxpdCgnOi8vJylbMV0uc3BsaXQoJy8nKVsyXTtcblxuICAgIGxldCB1cmw7XG5cbiAgICBpZiAoY29tcCkgdXJsID0gbXNnLnRvLnN1YnN0cmluZygwLCBtc2cudG8uaW5kZXhPZignLycgKyBjb21wKSk7XG4gICAgZWxzZSB1cmwgPSBtc2cudG87XG5cbiAgICBsZXQgcDJwID0ge307XG5cbiAgICBpZiAobXNnLmJvZHkgJiYgbXNnLmJvZHkucDJwKSBwMnAucDJwID0gbXNnLmJvZHkucDJwO1xuXG4gICAgaWYgKG1zZy5ib2R5ICYmIG1zZy5ib2R5LnAycEhhbmRsZXIgJiYgbXNnLmJvZHkucDJwUmVxdWVzdGVyKSB7XG4gICAgICBwMnAucDJwSGFuZGxlciA9IG1zZy5ib2R5LnAycEhhbmRsZXI7XG4gICAgICBwMnAucDJwUmVxdWVzdGVyID0gbXNnLmJvZHkucDJwUmVxdWVzdGVyO1xuICAgICAgcDJwLnJ1bnRpbWUgPSBtc2cuYm9keS5wMnBIYW5kbGVyLnNwbGl0KCcvcDJwaGFuZGxlci8nKVswXTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHNjaGVtZSkge1xuICAgICAgY2FzZSAncnVudGltZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrUDJQUnVudGltZSh1cmwsIHAycCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tQMlBFbnRpdHkodXJsLCBwMnApO1xuICAgICAgICBicmVhaztcblxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAqIFZlcmlmaWVzIGlmIHJlbW90ZSBFbnRpdHkgKEh5cGVydHkgb3IgRGF0YSBPYmplY3QpIGNhbiBiZSByZWFjaGVkIHdpdGggYSBQMlAgQ29ubmVjdGlvbi5cbiAgKiBAcGFyYW0gIHtzdHJpbmd9ICAgICAgICB1cmwgICAgICAgICAgIFJlbW90ZSBFbnRpdHkgVVJMIHRvIGJlIGNoZWNrZWRcbiAgKiBAcGFyYW0gIHtvYmplY3R9ICAgICAgICBwMnAgICAgICAgICAgIHAycCBpbmZvcm1hdGlvbiB0byBiZSB1c2VkIGluY2x1ZGluZyDCtHJ1bnRpbWXCtCB3aXRoIHJlbW90ZSBSdW50aW1lIFVSTCwgJ3AycEhhbmRsZXInIHJlbW90ZSBQMlAgSGFuZGxlciBTdHViIFVSTCBhbmQgcDJwUmVxdWVzdGVyIHdpdGggQ2F0YWxvZ3VlIFVSTCBvZiBQMlAgUmVxdWVzdGVyIHRvIGJlIHVzZWRcbiAgKiBAcmV0dXJuIHtwcm9taXNlfSByZWdpc3RlcmVkRW50aXR5ICAgICBpZiBwMnAgY29ubmVjdGlvbiBpcyBwb3NzaWJsZSBpdCByZXR1cm5zIHAycCBpbmZvcm1hdGlvbiB0byBiZSB1c2VkIGluIHRoZSBjb25uZWN0aW9uLCBvdGhlcndpc2UgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWRcbiAgKi9cblxuICBjaGVja1AyUEVudGl0eSh1cmwsIHAycCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IHJlbW90ZUVudGl0eSA9IF90aGlzLl9yZW1vdGVQMlBFbnRpdGllc1t1cmxdO1xuXG4gICAgICBpZiAocmVtb3RlRW50aXR5KSByZXNvbHZlKHJlbW90ZUVudGl0eSk7XG4gICAgICBlbHNlIGlmIChwMnAucnVudGltZSkgcmVzb2x2ZShwMnApOyAvLyB1c2UgcHJvdmlkZWQgcDJwIGlmIGF2YWlsYWJsZSBpbiB0aGUgbWVzc2FnZSBib2R5XG4gICAgICBlbHNlIGlmIChwMnAucDJwKSB7IC8vIG90aGVyd2lzZSBsb29rIG9uIERvbWFpbiBSZWdpc3RyeVxuXG4gICAgICAgIGxvZy5sb2coJ1tSZWdpc3RyeSAtIGNoZWNrUDJQRW50aXR5XSAtIHNlYXJjaCBpbiBEb21haW4gUmVnaXN0cnk6ICcsIHVybCk7XG5cbiAgICAgICAgbGV0IG1lc3NhZ2UgPSB7XG4gICAgICAgICAgdHlwZTogJ3JlYWQnLFxuICAgICAgICAgIGZyb206IF90aGlzLl9yZWdpc3RyeS5yZWdpc3RyeVVSTCxcbiAgICAgICAgICB0bzogJ2RvbWFpbjovL3JlZ2lzdHJ5LicgKyBfdGhpcy5fcmVnaXN0cnkuX2RvbWFpbixcbiAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICByZXNvdXJjZTogdXJsXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIF90aGlzLl9yZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVwbHkpID0+IHtcbiAgICAgICAgICBsb2cubG9nKCdbUmVnaXN0cnkgLSBjaGVja1AyUEVudGl0eV0gRG9tYWluIFJlZ2lzdHJ5IHJlcGx5JywgcmVwbHkpO1xuICAgICAgICAgIGlmICgndmFsdWUnIGluIHJlcGx5LmJvZHkpIHtcblxuICAgICAgICAgICAgLy90b2RvOiBzdG9yZSByZXRyaWV2ZWQgZW50aXR5XG4gICAgICAgICAgICBsZXQgcmVzb2x2ZWRFbnRpdHkgPSByZXBseS5ib2R5LnZhbHVlO1xuXG4gICAgICAgICAgICBpZiAocmVzb2x2ZWRFbnRpdHkuaGFzT3duUHJvcGVydHkoJ3AycEhhbmRsZXInKSkge1xuICAgICAgICAgICAgICByZXNvbHZlKHJlc29sdmVkRW50aXR5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlamVjdCgnW1JlZ2lzdHJ5IGNoZWNrUDJQRW50aXR5XSBIeXBlcnR5IGZvdW5kIGRvZXMgbm90IHN1cHBvcnQgUDJQJywgcmVwbHkuYm9keS52YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0KCdbUmVnaXN0cnkgY2hlY2tQMlBFbnRpdHldIEh5cGVydHkgd2l0aCBQMlBIYW5kbGVyIG5vdCBmb3VuZCcsIHJlcGx5LmJvZHkuY29kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSByZWplY3QoJ1tSZWdpc3RyeSBjaGVja1AyUEVudGl0eV0gTm8gUDJQIENvbm5lY3Rpb24gYXZhaWxhYmxlIGZvciAnLCB1cmwpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogVmVyaWZpZXMgaWYgcmVtb3RlIFJ1bnRpbWUgY2FuIGJlIHJlYWNoZWQgd2l0aCBhIFAyUCBDb25uZWN0aW9uLlxuICAqIEBwYXJhbSAge1VSTC5VUkx9ICAgICAgICBydW50aW1lVVJMICAgICAgICAgICBSdW50aW1lIFVSTFxuICAqIEByZXR1cm4ge09iamVjdH0gIHAycENvbm5lY3Rpb24gICAgcmV0dXJuIHRoZSBQMlBDb25uZWN0aW9uIGluc3RhbmNlIHJlZ2lzdGVyZWQgVVJMLCByZXR1cm4gdW5kZWZpbmVkIG90aGVyd2lzZVxuICAqL1xuXG4gIGNoZWNrUDJQUnVudGltZShydW50aW1lVVJMLCBwMnApIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IHJlZ2lzdGVyZWRSdW50aW1lID0ge307XG5cbiAgICAvLyBsb29rIG9uIGxvY2FsbHkgc3RvcmVkIHAycCBjb25uZWN0aW9uc1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoX3RoaXMuX3JlZ2lzdHJ5LnAycENvbm5lY3Rpb25MaXN0W3J1bnRpbWVVUkxdKSB7XG4gICAgICAgIHJlc29sdmUoe3J1bnRpbWU6IHJ1bnRpbWVVUkx9KTtcbiAgICAgIH0gZWxzZSBpZiAoIHAycC5ydW50aW1lKSB7XG4gICAgICAgIHJlZ2lzdGVyZWRSdW50aW1lID0gcDJwO1xuICAgICAgICByZXNvbHZlKHJlZ2lzdGVyZWRSdW50aW1lKTtcbiAgICAgIH0gZWxzZSByZWplY3QoJ1tSZWdpc3RyeS5QMlBDb25uZWN0aW9uUmVzb2x2ZS5jaGVja1AyUFJ1bnRpbWVdIE5vIFAyUCBDb25uZWN0aW9uIGZvdW5kIHRvICcsIHJ1bnRpbWVVUkwpO1xuXG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICAqIFZlcmlmaWVzIGlmIHJlbW90ZSBIeXBlcnR5IGNhbiBiZSByZWFjaGVkIHdpdGggYSBQMlAgQ29ubmVjdGlvbi5cbiAgKiBAcGFyYW0gIHtKU09OfSAgICAgICAgaW5mbyAgICAgICAgICAgb2JqZWN0IG9yIGVudGl0eSBjaGFyYXRlcmlzdGljcyBpbmZvXG4gICogQHJldHVybiB7YWRkcmVzc1VSTH0gIGFkZHJlc3NVUkwgICAgIHJldHVybiB0aGUgVVJMIGlmIHRoZXJlIGlzIGFueSBwcmV2aW91c3kgcmVnaXN0ZXJlZCBVUkwsIHJldHVybiB1bmRlZmluZWQgb3RoZXJ3aXNlXG4gICovXG5cbiAgY2hlY2tQMlBIeXBlcnR5KGh5cGVydHlVUkwsIHAycCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IGh5cGVydHk7XG5cblxuICAgICAgLy8gbG9vayBvbiBsb2NhbGx5IHN0b3JlZCBoeXBlcnRpZXNcblxuICAgICAgZm9yIChsZXQgaSBpbiBfdGhpcy5fcmVnaXN0cnkucmVtb3RlSHlwZXJ0eUxpc3QpIHtcbiAgICAgICAgaHlwZXJ0eSA9IF90aGlzLl9yZWdpc3RyeS5yZW1vdGVIeXBlcnR5TGlzdFtpXTtcblxuICAgICAgICBsb2cubG9nKCdbUmVnaXN0cnkgLSBjaGVja1AyUEh5cGVydHldIC0gZm9yIGVhY2ggSHlwZXJ0eTogJywgaHlwZXJ0eSk7XG5cbiAgICAgICAgLy8gdG9kbzogY2hhbmdlIHRvIFwiaHlwZXJ0eS51cmxcIiB0byBiZSBhbGlnbmVkIHdpdGggaHlwZXJ0eSBpbnN0YW5jZSBkYXRhIG1vZGVsIHNwZWNcblxuICAgICAgICBpZiAoaHlwZXJ0eS5oeXBlcnR5SUQgPT09IGh5cGVydHlVUkwpIHtcblxuICAgICAgICAgIGlmIChoeXBlcnR5Lmhhc093blByb3BlcnR5KCdwMnBIYW5kbGVyJykpIHtcbiAgICAgICAgICAgIHJlc29sdmUoaHlwZXJ0eSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdCgnW1JlZ2lzdHJ5IGNoZWNrUDJQSHlwZXJ0eV0gSHlwZXJ0eSBmb3VuZCBkb2VzIG5vdCBzdXBwb3J0IFAyUCcsIGh5cGVydHkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFoeXBlcnR5ICYmIHAycC5ydW50aW1lKSByZXNvbHZlKHAycCk7IC8vIHVzZSBwcm92aWRlZCBwMnAgaWYgYXZhaWxhYmxlIGluIHRoZSBtZXNzYWdlIGJvZHlcbiAgICAgIGVsc2UgaWYgKCFoeXBlcnR5ICYmIHAycC5wMnApIHsgLy8gb3RoZXJ3aXNlIGxvb2sgb24gRG9tYWluIFJlZ2lzdHJ5XG5cbiAgICAgICAgbG9nLmxvZygnW1JlZ2lzdHJ5IC0gY2hlY2tQMlBIeXBlcnR5XSAtIHNlYXJjaCBpbiBEb21haW4gUmVnaXN0cnk6ICcsIGh5cGVydHkpO1xuXG4gICAgICAgIGxldCBtZXNzYWdlID0ge1xuICAgICAgICAgIHR5cGU6ICdyZWFkJyxcbiAgICAgICAgICBmcm9tOiBfdGhpcy5fcmVnaXN0cnkucmVnaXN0cnlVUkwsXG4gICAgICAgICAgdG86ICdkb21haW46Ly9yZWdpc3RyeS4nICsgX3RoaXMuX3JlZ2lzdHJ5Ll9kb21haW4sXG4gICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgcmVzb3VyY2U6IGh5cGVydHlVUkxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgX3RoaXMuX3JlZ2lzdHJ5Ll9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1lc3NhZ2UsIChyZXBseSkgPT4ge1xuICAgICAgICAgIGxvZy5sb2coJ1tSZWdpc3RyeSAtIGNoZWNrUDJQSHlwZXJ0eV0gRG9tYWluIFJlZ2lzdHJ5IHJlcGx5JywgcmVwbHkpO1xuICAgICAgICAgIGlmICgndmFsdWUnIGluIHJlcGx5LmJvZHkpIHtcblxuICAgICAgICAgICAgLy90b2RvOiBzdG9yZSByZXRyaWV2ZWQgaHlwZXJ0eVxuICAgICAgICAgICAgbGV0IHJlc29sdmVkSHlwZXJ0eSA9IHJlcGx5LmJvZHkudmFsdWU7XG5cbiAgICAgICAgICAgIF90aGlzLl9yZWdpc3RyeS5yZW1vdGVIeXBlcnR5TGlzdC5wdXNoKHJlc29sdmVkSHlwZXJ0eSk7XG5cbiAgICAgICAgICAgIGlmIChyZXNvbHZlZEh5cGVydHkuaGFzT3duUHJvcGVydHkoJ3AycEhhbmRsZXInKSkge1xuICAgICAgICAgICAgICByZXNvbHZlKHJlc29sdmVkSHlwZXJ0eSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZWplY3QoJ1tSZWdpc3RyeSBjaGVja1AyUEh5cGVydHldIEh5cGVydHkgZm91bmQgZG9lcyBub3Qgc3VwcG9ydCBQMlAnLCByZXBseS5ib2R5LnZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWplY3QoJ1tSZWdpc3RyeSBjaGVja1AyUEh5cGVydHldIEh5cGVydHkgd2l0aCBQMlBIYW5kbGVyIG5vdCBmb3VuZCcsIHJlcGx5LmJvZHkuY29kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSByZWplY3QoJ1tSZWdpc3RyeSBjaGVja1AyUEh5cGVydHldIE5vIFAyUCBDb25uZWN0aW9uIGF2YWlsYWJsZSBmb3IgJywgaHlwZXJ0eVVSTCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBWZXJpZmllcyBpZiByZW1vdGUgRGF0YSBPYmplY3QgY2FuIGJlIHJlYWNoZWQgd2l0aCBhIFAyUCBDb25uZWN0aW9uLlxuICAqIEBwYXJhbSAge1VSTC5VUkx9ICAgICAgICBEYXRhT2JqZWN0VVJMICAgICAgICAgICBvYmplY3QgVVJMXG4gICogQHJldHVybiB7SHlwZXJ0eURhdGFPYmplY3RJbnN0YW5jZX0gIGFkZHJlc3NVUkwgICAgIHJldHVybiB0aGUgRGF0YSBPYmplY3QgaW5zdGFuY2UgcmVnaXN0ZXJlZCBVUkwsIHJldHVybiB1bmRlZmluZWQgb3RoZXJ3aXNlXG4gICovXG5cbiAgY2hlY2tQMlBEYXRhT2JqZWN0KHVybCwgcDJwKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgIC8vIGxvb2sgb24gbG9jYWxseSBzdG9yZWQgUmVtb3RlIERhdGEgT2JqZWN0c1xuXG4gICAgICBsZXQgZGF0YW9iamVjdCA9IF90aGlzLl9yZWdpc3RyeS5yZW1vdGVEYXRhT2JqZWN0TGlzdC5maWx0ZXIoKGkpID0+IHtcbiAgICAgICAgcmV0dXJuIChfdGhpcy5fcmVnaXN0cnkucmVtb3RlRGF0YU9iamVjdExpc3RbaV0udXJsID09PSB1cmwpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChkYXRhb2JqZWN0Lmxlbmd0aCAhPT0gMCAmJiBkYXRhb2JqZWN0WzBdLnAycFJlcXVlc3Rlcikge1xuICAgICAgICByZXNvbHZlKGRhdGFvYmplY3RbMF0pO1xuICAgICAgfSBlbHNlIGlmIChkYXRhb2JqZWN0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICByZWplY3QoJ1tSZWdpc3RyeSBjaGVja1AyUERhdGFPYmplY3RdIERhdGEgT2JqZWN0IGZvdW5kIGRvZXMgbm90IHN1cHBvcnQgUDJQJywgZGF0YW9iamVjdFswXSk7XG4gICAgICB9IGVsc2UgaWYgKGRhdGFvYmplY3QubGVuZ3RoID09PSAwICYmIHAycC5ydW50aW1lKSByZXNvbHZlKHAycCk7IC8vIHVzZSBwcm92aWRlZCBwMnAgaW5mbyBpZiBhdmFpbGFibGUgaW4gdGhlIG1lc3NhZ2UgYm9keVxuICAgICAgZWxzZSBpZiAoZGF0YW9iamVjdC5sZW5ndGggJiYgcDJwLnAycCkgeyAvLyBvdGhlcndpc2UgbG9vayBvbiBEb21haW4gUmVnaXN0cnlcblxuICAgICAgLy8gbG9vayBvbiBEb21haW4gUmVnaXN0cnlcblxuICAgICAgICBsZXQgbWVzc2FnZSA9IHtcbiAgICAgICAgICB0eXBlOiAncmVhZCcsXG4gICAgICAgICAgZnJvbTogX3RoaXMuX3JlZ2lzdHJ5LnJlZ2lzdHJ5VVJMLFxuICAgICAgICAgIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIF90aGlzLl9yZWdpc3RyeS5fZG9tYWluLFxuICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgIHJlc291cmNlOiB1cmxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgX3RoaXMuX3JlZ2lzdHJ5Ll9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1lc3NhZ2UsIChyZXBseSkgPT4ge1xuICAgICAgICAgIGxvZy5sb2coJ2Rpc2NvdmVyIGRhdGEgb2JqZWN0IHBlciB1cmwgcmVwbHknLCByZXBseSk7XG4gICAgICAgICAgaWYgKCd2YWx1ZScgaW4gcmVwbHkuYm9keSkge1xuXG4gICAgICAgICAgICAvL3RvZG86IHN0b3JlIHJldHJpZXZlZCBoeXBlcnR5XG4gICAgICAgICAgICBsZXQgcmVzb2x2ZWREYXRhT2JqZWN0ID0gcmVwbHkuYm9keS52YWx1ZTtcblxuICAgICAgICAgICAgX3RoaXMuX3JlZ2lzdHJ5LnJlbW90ZURhdGFPYmplY3RMaXN0LnB1c2gocmVzb2x2ZWREYXRhT2JqZWN0KTtcblxuICAgICAgICAgICAgaWYgKHJlc29sdmVkRGF0YU9iamVjdC5wMnBSZXF1ZXN0ZXIpIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShyZXNvbHZlZERhdGFPYmplY3QpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVqZWN0KCdbUmVnaXN0cnkgY2hlY2tQMlBEYXRhT2JqZWN0XSBEYXRhIE9iamVjdCBmb3VuZCBkb2VzIG5vdCBzdXBwb3J0IFAyUCcsIHJlcGx5LmJvZHkudmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdCgnW1JlZ2lzdHJ5IGNoZWNrUDJQRGF0YU9iamVjdF0gbm90IGZvdW5kJywgcmVwbHkuYm9keS5jb2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHJlamVjdCgnW1JlZ2lzdHJ5IGNoZWNrUDJQRGF0YU9iamVjdF0gbm8gUDJQIENvbm5lY3Rpb24gZm91bmQnKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFJlbW90ZVAyUEVudGl0eSh1cmwsIHJ1bnRpbWUpIHtcbiAgICB0aGlzLl9yZW1vdGVQMlBFbnRpdGllc1t1cmxdID0gcnVudGltZTtcbiAgfVxuXG4gIHJlbW92ZVJlbW90ZVAyUEVudGl0eSh1cmwpIHtcbiAgICBkZWxldGUgdGhpcy5fcmVtb3RlUDJQRW50aXRpZXNbdXJsXTtcbiAgfVxuXG4gIHJlY29ubmVjdFAyUFJlcXVlc3RlcihwMnBSZXF1ZXN0ZXIpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbG9nLmxvZygnW1AyUENvbmVuY3Rpb25SZXNvbHZlLnJlY29ubmVjdFAyUFJlcXVlc3Rlcl0gbGV0cyB0cnkgdG8gcmVjb25uZWN0IFAyUCBSZXF1ZXN0ZXIgU3R1YjogJywgcDJwUmVxdWVzdGVyKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgIGxldCByZW1vdGVSdW50aW1lID0gcDJwUmVxdWVzdGVyLnJ1bnRpbWU7XG5cbiAgICAgIGxldCBtZXNzYWdlID0ge1xuICAgICAgICB0eXBlOiAnZXhlY3V0ZScsXG4gICAgICAgIGZyb206IF90aGlzLl9yZWdpc3RyeS5yZWdpc3RyeVVSTCxcbiAgICAgICAgdG86IHAycFJlcXVlc3Rlci51cmwsXG4gICAgICAgIGJvZHk6IHtcbiAgICAgICAgICBtZXRob2Q6ICdjb25uZWN0JyxcbiAgICAgICAgICBwYXJhbXM6IFtwMnBSZXF1ZXN0ZXIucDJwSGFuZGxlcl1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgLy8gbGV0cyBwcmVwYXJlIHRoZSBwMnBSZXF1ZXN0ZXJTVHViIHJlY29ubmVjdCBieSBzZXR0aW5nIGFuIG9ic2VydmVyIHRvIGl0cyBzdGF0dXMgY2hhbmdlc1xuXG4gICAgICBfdGhpcy5fcmVnaXN0cnkud2F0Y2hpbmdZb3Uub2JzZXJ2ZSgncDJwUmVxdWVzdGVyU3R1YicsIChjaGFuZ2UpID0+IHtcblxuICAgICAgICBsb2cubG9nKCdbUDJQQ29uZW5jdGlvblJlc29sdmUucmVjb25uZWN0UDJQUmVxdWVzdGVyXSBwMnBSZXF1ZXN0ZXJTdHVicyBjaGFuZ2VkICcgKyBfdGhpcy5fcmVnaXN0cnkucDJwUmVxdWVzdGVyU3R1Yik7XG5cbiAgICAgICAgaWYgKGNoYW5nZS5rZXlwYXRoLnNwbGl0KCcuJylbMF0gPT09IHJlbW90ZVJ1bnRpbWUgJiYgY2hhbmdlLm5hbWUgPT09ICdzdGF0dXMnKSB7XG4gICAgICAgICAgc3dpdGNoIChjaGFuZ2UubmV3VmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2xpdmUnOlxuICAgICAgICAgICAgICBsb2cubG9nKCdbUDJQQ29uZW5jdGlvblJlc29sdmUucmVjb25uZWN0UDJQUmVxdWVzdGVyXSBwMnBSZXF1ZXN0ZXIgaXMgbGl2ZSAnICsgX3RoaXMuX3JlZ2lzdHJ5LnAycFJlcXVlc3RlclN0dWJbcmVtb3RlUnVudGltZV0pO1xuICAgICAgICAgICAgICByZXNvbHZlKF90aGlzLl9yZWdpc3RyeS5wMnBSZXF1ZXN0ZXJTdHViW3JlbW90ZVJ1bnRpbWVdLnVybCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgICAgICAgbG9nLmxvZygnW1AyUENvbmVuY3Rpb25SZXNvbHZlLnJlY29ubmVjdFAyUFJlcXVlc3Rlcl0gcDJwUmVxdWVzdGVyIHJlY29ubmVjdCBmYWlsZWQgJyArIF90aGlzLl9yZWdpc3RyeS5wMnBSZXF1ZXN0ZXJTdHViW3JlbW90ZVJ1bnRpbWVdKTtcbiAgICAgICAgICAgICAgcmVqZWN0KCdQMlAgUmVxdWVzdGVyIHJlY29ubmVjdCBmYWlsZWQnKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vICBzdHViIGxvYWRcbiAgICAgIF90aGlzLl9yZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVwbHkpID0+IHtcbiAgICAgICAgbG9nLmxvZygnW1AyUENvbmVuY3Rpb25SZXNvbHZlLnJlY29ubmVjdFAyUFJlcXVlc3Rlcl0gcmVjb25uZWN0IHJlcXVlc3QgcmVwbHknLCByZXBseSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IFAyUENvbm5lY3Rpb25SZXNvbHZlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9yZWdpc3RyeS9QMlBDb25uZWN0aW9uUmVzb2x2ZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBO0FBQ0E7QUFEQTtBQUNBOzs7OztBQUFBO0FBQ0E7QUFDQTs7O0FBM0JBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTtBQUNBO0FBTUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFTQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUpBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFKQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///469\n")},function(module,exports){eval('// proxy-observe v0.0.18\r\n// Copyright (c) 2015, 2016 Simon Y. Blackwell, AnyWhichWay\r\n// MIT License - http://opensource.org/licenses/mit-license.php\r\n(function() {\r\n\t"use strict";\r\n\t// Creates and returns a Proxy wrapping a target so that all changes can be trapped and forwarded to\r\n\t// a callback. The callback takes an array of changes just like the traditional original Chrome Object.observe\r\n\t// {object:,name:,type:add|update|delete|reconfigure|preventExtensions|setPrototype,oldValue:}\r\n\t// The acceptlist can be add|update|delete|reconfigure|preventExtensions|setPrototype.\r\n\t// v 0.0.10 to support pausing and restarting observation two additional constructor arguments are available to Object.observe:\r\n\t// pausable - create the Observer so it can be paused\r\n\t// pause - create observer in paused state\r\n\t// if pausable is true then an additional method deliver(ignorePrevious) is available to start delivery\r\n\t// to pause delivery set a property called pause on the function deliver to true\r\n\t// pausable is optional to reduce the chance of shadowing a property or method on any existing code called deliver\r\n\tif(!Object.observe && typeof(Proxy)==="function") {\r\n\t\tfunction Observer(target,callback,acceptlist,pausable,pause,delay) {\r\n\t \tvar me = this, proxy;\r\n\t \tfunction deliver(ignorePrevious,delay) {\r\n\t \t\tdeliver.delay = delay;\r\n\t \t\tif(!deliver.pause) {\r\n\t \t\tif(me.changeset.length>0) {\r\n\t \t\t\tif(!ignorePrevious) {\r\n\t\t \t \t\tvar changes = me.changeset.filter(function(change) { return !acceptlist || acceptlist.indexOf(change.type)>=0; });\r\n\t\t \t\t\tif(changes.length>0) {\r\n\t\t \t\t\t\tcallback(changes);\r\n\t\t \t\t\t}\r\n\t \t\t\t}\r\n\t \t\t\tme.changeset = [];\r\n\t \t\t}\r\n\t \t\t}\r\n\t \t}\r\n\t \tdeliver.pause = pause;\r\n\t \tdeliver.delay = delay;\r\n\t\t me.get = function(target, property) {\r\n\t\t \tif(property==="__observer__") {\r\n\t\t \t\treturn me;\r\n\t\t \t}\r\n\t\t \tif(property==="unobserve") {\r\n\t\t \t\treturn function() {\r\n\t\t \t\t\tObject.unobserve(target);\r\n\t\t \t\t\treturn target;\r\n\t\t \t\t};\r\n\t\t \t}\r\n\t\t \tif(property==="deliver") {\r\n\t\t \t\treturn deliver;\r\n\t\t \t}\r\n\t\t \treturn target[property];\r\n\t\t }\r\n\t \tme.target = target;\r\n\t \tme.changeset = [];\r\n\t \tif(!me.target.__observerCallbacks__) {\r\n\t \t\t// __observerCallbacks__ is used as an index to get at the proxy which is the observer, so we can unobserve\r\n\t \t\tObject.defineProperty(target,"__observerCallbacks__",{enumerable:false,configurable:true,writable:false,value:[]});\r\n\t \t\tObject.defineProperty(target,"__observers__",{enumerable:false,configurable:true,writable:false,value:[]});\r\n\t \t}\r\n\t \tme.target.__observerCallbacks__.push(callback);\r\n\t \tme.target.__observers__.push(this);\r\n\t \tproxy = new Proxy(target,me);\r\n\t \tdeliver(false,delay);\r\n\t \treturn proxy;\r\n\t }\r\n\t\tObserver.prototype.deliver = function() {\r\n\t\t\treturn this.get(null,"deliver");\r\n\t\t}\r\n\t Observer.prototype.set = function(target, property, value) { // , receiver\r\n\t \tvar oldvalue = target[property];\r\n\t \tvar type = (oldvalue===undefined ? "add" : "update");\r\n\t \ttarget[property] = value;\r\n\t \tif(target.__observers__.indexOf(this)>=0 && (!this.acceptlist || this.acceptlist.indexOf(type)>=0)) {\r\n\t \tvar change = {object:target,name:property,type:type},\r\n\t \t\tstart = this.changeset.length === 0,\r\n\t \t\tdeliver = this.deliver();\r\n\t \tif(type==="update") {\r\n\t \t\tchange.oldValue = oldvalue;\r\n\t \t}\r\n\t \tthis.changeset.push(change);\r\n\t \tif(start) {\r\n\t \t\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\r\n\t \t}\r\n\t \t}\r\n\t \treturn true;\r\n\t };\r\n\t Observer.prototype.deleteProperty = function(target, property) {\r\n\t \tvar oldvalue = target[property];\r\n\t \t//if(typeof(oldvalue)!=="undefined") {\r\n\t\t \tdelete target[property];\r\n\t\t \tif(target.__observers__.indexOf(this)>=0 && !this.acceptlist || this.acceptlist.indexOf("delete")>=0) {\r\n\t\t \tvar change = {object:target,name:property,type:"delete",oldValue:oldvalue},\r\n\t\t \t\tstart = this.changeset.length === 0,\r\n\t\t \t\tdeliver = this.deliver();\r\n\t\t \tthis.changeset.push(change);\r\n\t\t \tif(start) {\r\n\t\t \t\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\r\n\t\t \t}\r\n\t\t \t}\r\n\t \t//}\r\n\t \treturn true;\r\n\t };\r\n\t Observer.prototype.defineProperty = function(target, property, descriptor) {\r\n\t \tObject.defineProperty(target, property, descriptor);\r\n\t \tif(target.__observers__.indexOf(this)>=0 && !this.acceptlist || this.acceptlist.indexOf("reconfigure")>=0) {\r\n\t \tvar change = {object:target,name:property,type:"reconfigure"},\r\n \t\t\tstart = this.changeset.length === 0,\r\n \t\t\tdeliver = this.deliver();\r\n\t \tthis.changeset.push(change);\r\n\t \tif(start) {\r\n\t \t\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\r\n\t \t}\r\n\t \t}\r\n\t \treturn true;\r\n\t };\r\n\t Observer.prototype.setPrototypeOf = function(target, prototype) {\r\n\t \tvar oldvalue = Object.getPrototypeOf(target);\r\n\t \tObject.setPrototypeOf(target, prototype);\r\n\t \tif(target.__observers__.indexOf(this)>=0 && !this.acceptlist || this.acceptlist.indexOf("setPrototype")>=0) {\r\n\t \tvar change = {object:target,name:"__proto__",type:"setPrototype",oldValue:oldvalue},\r\n \t\t\t\tstart = this.changeset.length === 0,\r\n \t\t\t\tdeliver = this.deliver();\r\n\t \tthis.changeset.push(change);\r\n\t \tif(start) {\r\n\t \t\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\r\n\t \t}\r\n\t \t}\r\n\t \treturn true;\r\n\t };\r\n\t Observer.prototype.preventExtensions = function(target) {\r\n\t Object.preventExtensions(target);\r\n\t \tif(target.__observers__.indexOf(this)>=0 && !this.acceptlist || this.acceptlist.indexOf("preventExtensions")>=0) {\r\n\t \tvar change = {object:target,type:"preventExtensions"},\r\n\t\t\t\t\tstart = this.changeset.length === 0,\r\n\t\t\t\t\tdeliver = this.deliver();\r\n\t \tthis.changeset.push(change);\r\n\t \tif(start) {\r\n\t \t\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\r\n\t \t}\r\n\t \t}\r\n\t \treturn true;\r\n\t };\r\n\t Object.observe = function(object,callback,acceptlist,pausable,pause,delay) {\r\n\t \treturn new Observer(object,callback,acceptlist,pausable,pause,delay);\r\n\t };\r\n\t Object.unobserve = function(object,callback) {\r\n\t \tif(object.__observerCallbacks__) {\r\n\t \t\tif(!callback) {\r\n\t \t\t\tobject.__observerCallbacks__.splice(0,object.__observerCallbacks__.length);\r\n\t \t\t\tobject.__observers__.splice(0,object.__observers__.length);\r\n\t \t\t\treturn;\r\n\t \t\t}\r\n\t \t\tobject.__observerCallbacks__.forEach(function(observercallback,i) {\r\n\t \t\t\tif(callback===observercallback) {\r\n\t \t\t\t\tobject.__observerCallbacks__.splice(i,1);\r\n\t \t\t\t\tdelete object.__observers__[i].callback;\r\n\t \t\t\t\tobject.__observers__.splice(i,1);\r\n\t \t\t\t}\r\n\t \t\t});\r\n\t \t}\r\n\t };\r\n\t Array.observe = function(object,callback,acceptlist,pausable,pause,delay) {\r\n\t \tif(!(object instanceof Array) && !Array.isArray(object)) {\r\n\t \t\tthrow new TypeError("First argument to Array.observer is not an Array");\r\n\t \t}\r\n \tacceptlist = acceptlist || ["add", "update", "delete", "splice"];\r\n\t \tvar arrayproxy = new Proxy(object,{get: function(target,property) {\r\n\t \t\tif(property==="unobserve") {\r\n\t\t \t\treturn function(callback) {\r\n\t\t \t\t\tif(callback) {\r\n\t\t \t\t\t\treturn Object.unobserve(target,callback);\r\n\t\t \t\t\t}\r\n\t\t \t\t\treturn target.unobserve();\r\n\t\t \t\t};\r\n\t\t \t}\r\n\t \t\tif(property==="splice") {\r\n\t \t\t\treturn function(start,end) {\r\n\t \t\t\t\tif(typeof(start)!=="number" || typeof(end)!=="number") {\r\n\t \t\t\t\t\tthrow new TypeError("First two arguments to Array splice are not number, number");\r\n\t \t\t\t\t}\r\n\t \t \t\tvar removed = this.slice(start,start+end),\r\n\t \t \t\t\taddedCount = (arguments.length > 1 ? arguments.length-2 : 0),\r\n\t \t \t\t\tchange = {object:object,type:"splice",index:start,removed:removed,addedCount:addedCount};\r\n\t \t \t\ttarget.splice.apply(target,arguments);\r\n\t \t \t\tif(acceptlist.indexOf("splice")>=0) {\r\n\t \t \t\t\tvar start = proxy.__observer__.changeset.length === 0,\r\n\t \t \t\t\tdeliver = proxy.__observer__.deliver();\r\n\t \t \t\t\tproxy.__observer__.changeset.push(change);\r\n\t \t \t\t\tif(start) {\r\n\t \t\t \t\tdeliver(false,(typeof(deliver.delay)==="number" ? deliver.delay : 10));\r\n\t \t\t \t}\r\n\t \t \t\t}\r\n\t \t \t}\r\n\t \t\t}\r\n\t \t\tif(property==="push") {\r\n\t \t\t\t return function(item) {\r\n\t \t\t \treturn this.splice(this.length,0,item);\r\n\t \t\t }\r\n\t \t\t}\r\n\t \t\tif(property==="pop") {\r\n\t \t\t\t return function() {\r\n\t \t\t \treturn this.splice(this.length-1,1);\r\n\t \t\t }\r\n\t \t\t}\r\n\t \t\tif(property==="unshift") {\r\n\t \t\t\t return function(item) {\r\n \t\t \t\treturn this.splice(0,0,item);\r\n \t\t \t}\r\n\t \t\t}\r\n\t \t\tif(property==="shift") {\r\n\t \t\t\treturn function() {\r\n\t \t \t\treturn this.splice(0,1);\r\n\t \t \t}\r\n\t \t\t}\r\n\t \t\treturn target[property];\r\n\t \t}});\r\n\t \tvar proxy = Object.observe(arrayproxy,function(changeset) { \r\n\t \t\tvar changes = changeset.filter(function(change) { return change.name!=="length" && change.name!=="add" && (!acceptlist || acceptlist.indexOf(change.type)>=0); });\r\n\t \t\tif(changes.length>0) {\r\n\t \t\t\tcallback(changes);\r\n\t \t\t}\r\n\t \t},acceptlist,pausable,pause,delay);\r\n\t \treturn proxy;\r\n\t };\r\n\t Array.unobserve = function(object,callback) {\r\n\t\t return object.unobserve(callback);\r\n\t }\r\n\t}\r\n\tObject.deepObserve = function(object,callback,parts) {\r\n\r\n\t\tparts = (parts ? parts : []);\r\n\r\n\t\tvar toTypeName = function(obj) {\r\n\t\t\treturn ({}).toString.call(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase()\r\n\t\t}\r\n\r\n\t\tfunction reobserve(value, parts) {\r\n\t\t\tvar keys = Object.keys(value);\r\n\t\t\tkeys.forEach(function(key) {\r\n\t\t\t\tif((toTypeName(value[key]) === \'object\' || toTypeName(value[key]) === \'array\') && !value[key].hasOwnProperty(\'__observers__\')) {\r\n\t\t\t\t\tvar newparts = parts.slice(0);\r\n\t\t\t\t\tnewparts.push(key);\r\n\t\t\t\t\tvalue[key] = Object.deepObserve(value[key],callback,newparts);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treobserve(object, parts);\r\n\r\n\t\tvar observed = Object.observe(object,function(changeset) {\r\n\t\t\tvar changes = [];\r\n\t\t\tfunction recurse(name,rootObject,oldObject,newObject,path) {\r\n\t\t\t\tif(newObject instanceof Object) {\r\n\t\t\t\t\tvar newkeys = Object.keys(newObject);\r\n\t\t\t\t\tnewkeys.forEach(function(key) {\r\n\t\t\t\t\t\tif(!oldObject || (oldObject[key]!==newObject[key])) {\r\n\t\t\t\t\t\t\tvar oldvalue = (oldObject && oldObject[key]!==undefined ? oldObject[key] : undefined),\r\n\t\t\t\t\t\t\t\tchange = (oldvalue===undefined ? "add" : "update"),\r\n\t\t\t\t\t\t\t\tkeypath = path + "." + key;\r\n\r\n\t\t\t\t\t\t\tchanges.push({name:name,object:rootObject,type:change,oldValue:oldvalue,newValue:newObject[key],keypath:keypath});\r\n\t\t\t\t\t\t\trecurse(name,rootObject,oldvalue,newObject[key],keypath);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if(oldObject instanceof Object) {\r\n\t\t\t\t\tvar oldkeys = Object.keys(oldObject);\r\n\t\t\t\t\toldkeys.forEach(function(key) {\r\n\t\t\t\t\t\tvar change = (newObject===null ? "update" : "delete"),\r\n\t\t\t\t\t\t\tkeypath = path + "." + key;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\tchanges.push({name:name,object:rootObject,type:change,oldValue:oldObject[key],newValue:newObject,keypath:keypath});\r\n\t\t\t\t\t\trecurse(name,rootObject,oldObject[key],undefined,keypath);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tchangeset.forEach(function(change) {\r\n\t\t\t\tvar keypath = (parts.length>0 ? parts.join(".") + "." : "") + change.name;\r\n\r\n\t\t\t\tif (change.type === "update" || change.type === "add") { \r\n\t\t\t\t\treobserve(change.object, parts);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tchanges.push({name:change.name,object:change.object,type:change.type,oldValue:change.oldValue,newValue:change.object[change.name],keypath:keypath});\r\n\t\t\t\trecurse(change.name,change.object,change.oldValue,change.object[change.name],keypath);\r\n\t\t\t});\r\n\t\t\tcallback(changes);\r\n\t\t});\r\n\t\treturn observed;\r\n\t};\r\n})();\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3h5LW9ic2VydmUvaW5kZXguanM/MTIwYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAgICAgcHJveHktb2JzZXJ2ZSB2MC4wLjE4XHJcbi8vICAgICBDb3B5cmlnaHQgKGMpIDIwMTUsIDIwMTYgU2ltb24gWS4gQmxhY2t3ZWxsLCBBbnlXaGljaFdheVxyXG4vLyAgICAgTUlUIExpY2Vuc2UgLSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXHJcbihmdW5jdGlvbigpIHtcclxuXHRcInVzZSBzdHJpY3RcIjtcclxuXHQvLyBDcmVhdGVzIGFuZCByZXR1cm5zIGEgUHJveHkgd3JhcHBpbmcgYSB0YXJnZXQgc28gdGhhdCBhbGwgY2hhbmdlcyBjYW4gYmUgdHJhcHBlZCBhbmQgZm9yd2FyZGVkIHRvXHJcblx0Ly8gYSBjYWxsYmFjay4gVGhlIGNhbGxiYWNrIHRha2VzIGFuIGFycmF5IG9mIGNoYW5nZXMganVzdCBsaWtlIHRoZSB0cmFkaXRpb25hbCBvcmlnaW5hbCBDaHJvbWUgT2JqZWN0Lm9ic2VydmVcclxuXHQvLyB7b2JqZWN0OjxvYmplY3QgY2hhbmdlZD4sbmFtZTo8ZmllbGQgY2hhbmdlZD4sdHlwZTphZGR8dXBkYXRlfGRlbGV0ZXxyZWNvbmZpZ3VyZXxwcmV2ZW50RXh0ZW5zaW9uc3xzZXRQcm90b3R5cGUsb2xkVmFsdWU6PG9sZCB2YWx1ZSBpZiB1cGRhdGUgfCBkZWxldGU+fVxyXG5cdC8vIFRoZSBhY2NlcHRsaXN0IGNhbiBiZSBhZGR8dXBkYXRlfGRlbGV0ZXxyZWNvbmZpZ3VyZXxwcmV2ZW50RXh0ZW5zaW9uc3xzZXRQcm90b3R5cGUuXHJcblx0Ly8gdiAwLjAuMTAgdG8gc3VwcG9ydCBwYXVzaW5nIGFuZCByZXN0YXJ0aW5nIG9ic2VydmF0aW9uIHR3byBhZGRpdGlvbmFsIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBhcmUgYXZhaWxhYmxlIHRvIE9iamVjdC5vYnNlcnZlOlxyXG5cdC8vIHBhdXNhYmxlIC0gY3JlYXRlIHRoZSBPYnNlcnZlciBzbyBpdCBjYW4gYmUgcGF1c2VkXHJcblx0Ly8gcGF1c2UgLSBjcmVhdGUgb2JzZXJ2ZXIgaW4gcGF1c2VkIHN0YXRlXHJcblx0Ly8gaWYgcGF1c2FibGUgaXMgdHJ1ZSB0aGVuIGFuIGFkZGl0aW9uYWwgbWV0aG9kIGRlbGl2ZXIoaWdub3JlUHJldmlvdXMpIGlzIGF2YWlsYWJsZSB0byBzdGFydCBkZWxpdmVyeVxyXG5cdC8vIHRvIHBhdXNlIGRlbGl2ZXJ5IHNldCBhIHByb3BlcnR5IGNhbGxlZCBwYXVzZSBvbiB0aGUgZnVuY3Rpb24gZGVsaXZlciB0byB0cnVlXHJcblx0Ly8gcGF1c2FibGUgaXMgb3B0aW9uYWwgdG8gcmVkdWNlIHRoZSBjaGFuY2Ugb2Ygc2hhZG93aW5nIGEgcHJvcGVydHkgb3IgbWV0aG9kIG9uIGFueSBleGlzdGluZyBjb2RlIGNhbGxlZCBkZWxpdmVyXHJcblx0aWYoIU9iamVjdC5vYnNlcnZlICYmIHR5cGVvZihQcm94eSk9PT1cImZ1bmN0aW9uXCIpIHtcclxuXHRcdGZ1bmN0aW9uIE9ic2VydmVyKHRhcmdldCxjYWxsYmFjayxhY2NlcHRsaXN0LHBhdXNhYmxlLHBhdXNlLGRlbGF5KSB7XHJcblx0ICAgIFx0dmFyIG1lID0gdGhpcywgcHJveHk7XHJcblx0ICAgIFx0ZnVuY3Rpb24gZGVsaXZlcihpZ25vcmVQcmV2aW91cyxkZWxheSkge1xyXG5cdCAgICBcdFx0ZGVsaXZlci5kZWxheSA9IGRlbGF5O1xyXG5cdCAgICBcdFx0aWYoIWRlbGl2ZXIucGF1c2UpIHtcclxuXHQgICAgICAgIFx0XHRpZihtZS5jaGFuZ2VzZXQubGVuZ3RoPjApIHtcclxuXHQgICAgICAgIFx0XHRcdGlmKCFpZ25vcmVQcmV2aW91cykge1xyXG5cdFx0ICAgIFx0ICAgIFx0XHR2YXIgY2hhbmdlcyA9IG1lLmNoYW5nZXNldC5maWx0ZXIoZnVuY3Rpb24oY2hhbmdlKSB7IHJldHVybiAhYWNjZXB0bGlzdCB8fCBhY2NlcHRsaXN0LmluZGV4T2YoY2hhbmdlLnR5cGUpPj0wOyB9KTtcclxuXHRcdCAgICAgICAgXHRcdFx0aWYoY2hhbmdlcy5sZW5ndGg+MCkge1xyXG5cdFx0ICAgICAgICBcdFx0XHRcdGNhbGxiYWNrKGNoYW5nZXMpO1xyXG5cdFx0ICAgICAgICBcdFx0XHR9XHJcblx0ICAgICAgICBcdFx0XHR9XHJcblx0ICAgICAgICBcdFx0XHRtZS5jaGFuZ2VzZXQgPSBbXTtcclxuXHQgICAgICAgIFx0XHR9XHJcblx0ICAgIFx0XHR9XHJcblx0ICAgIFx0fVxyXG5cdCAgICBcdGRlbGl2ZXIucGF1c2UgPSBwYXVzZTtcclxuXHQgICAgXHRkZWxpdmVyLmRlbGF5ID0gZGVsYXk7XHJcblx0XHQgICAgbWUuZ2V0ID0gZnVuY3Rpb24odGFyZ2V0LCBwcm9wZXJ0eSkge1xyXG5cdFx0ICAgIFx0aWYocHJvcGVydHk9PT1cIl9fb2JzZXJ2ZXJfX1wiKSB7XHJcblx0XHQgICAgXHRcdHJldHVybiBtZTtcclxuXHRcdCAgICBcdH1cclxuXHRcdCAgICBcdGlmKHByb3BlcnR5PT09XCJ1bm9ic2VydmVcIikge1xyXG5cdFx0ICAgIFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XHJcblx0XHQgICAgXHRcdFx0T2JqZWN0LnVub2JzZXJ2ZSh0YXJnZXQpO1xyXG5cdFx0ICAgIFx0XHRcdHJldHVybiB0YXJnZXQ7XHJcblx0XHQgICAgXHRcdH07XHJcblx0XHQgICAgXHR9XHJcblx0XHQgICAgXHRpZihwcm9wZXJ0eT09PVwiZGVsaXZlclwiKSB7XHJcblx0XHQgICAgXHRcdHJldHVybiBkZWxpdmVyO1xyXG5cdFx0ICAgIFx0fVxyXG5cdFx0ICAgIFx0cmV0dXJuIHRhcmdldFtwcm9wZXJ0eV07XHJcblx0XHQgICAgfVxyXG5cdCAgICBcdG1lLnRhcmdldCA9IHRhcmdldDtcclxuXHQgICAgXHRtZS5jaGFuZ2VzZXQgPSBbXTtcclxuXHQgICAgXHRpZighbWUudGFyZ2V0Ll9fb2JzZXJ2ZXJDYWxsYmFja3NfXykge1xyXG5cdCAgICBcdFx0Ly8gX19vYnNlcnZlckNhbGxiYWNrc19fIGlzIHVzZWQgYXMgYW4gaW5kZXggdG8gZ2V0IGF0IHRoZSBwcm94eSB3aGljaCBpcyB0aGUgb2JzZXJ2ZXIsIHNvIHdlIGNhbiB1bm9ic2VydmVcclxuXHQgICAgXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsXCJfX29ic2VydmVyQ2FsbGJhY2tzX19cIix7ZW51bWVyYWJsZTpmYWxzZSxjb25maWd1cmFibGU6dHJ1ZSx3cml0YWJsZTpmYWxzZSx2YWx1ZTpbXX0pO1xyXG5cdCAgICBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCxcIl9fb2JzZXJ2ZXJzX19cIix7ZW51bWVyYWJsZTpmYWxzZSxjb25maWd1cmFibGU6dHJ1ZSx3cml0YWJsZTpmYWxzZSx2YWx1ZTpbXX0pO1xyXG5cdCAgICBcdH1cclxuXHQgICAgXHRtZS50YXJnZXQuX19vYnNlcnZlckNhbGxiYWNrc19fLnB1c2goY2FsbGJhY2spO1xyXG5cdCAgICBcdG1lLnRhcmdldC5fX29ic2VydmVyc19fLnB1c2godGhpcyk7XHJcblx0ICAgIFx0cHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LG1lKTtcclxuXHQgICAgXHRkZWxpdmVyKGZhbHNlLGRlbGF5KTtcclxuXHQgICAgXHRyZXR1cm4gcHJveHk7XHJcblx0ICAgIH1cclxuXHRcdE9ic2VydmVyLnByb3RvdHlwZS5kZWxpdmVyID0gZnVuY3Rpb24oKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmdldChudWxsLFwiZGVsaXZlclwiKTtcclxuXHRcdH1cclxuXHQgICAgT2JzZXJ2ZXIucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKHRhcmdldCwgcHJvcGVydHksIHZhbHVlKSB7IC8vICwgcmVjZWl2ZXJcclxuXHQgICAgXHR2YXIgb2xkdmFsdWUgPSB0YXJnZXRbcHJvcGVydHldO1xyXG5cdCAgICBcdHZhciB0eXBlID0gKG9sZHZhbHVlPT09dW5kZWZpbmVkID8gXCJhZGRcIiA6IFwidXBkYXRlXCIpO1xyXG5cdCAgICBcdHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcclxuXHQgICAgXHRpZih0YXJnZXQuX19vYnNlcnZlcnNfXy5pbmRleE9mKHRoaXMpPj0wICYmICghdGhpcy5hY2NlcHRsaXN0IHx8IHRoaXMuYWNjZXB0bGlzdC5pbmRleE9mKHR5cGUpPj0wKSkge1xyXG5cdCAgICAgICAgXHR2YXIgY2hhbmdlID0ge29iamVjdDp0YXJnZXQsbmFtZTpwcm9wZXJ0eSx0eXBlOnR5cGV9LFxyXG5cdCAgICAgICAgXHRcdHN0YXJ0ID0gdGhpcy5jaGFuZ2VzZXQubGVuZ3RoID09PSAwLFxyXG5cdCAgICAgICAgXHRcdGRlbGl2ZXIgPSB0aGlzLmRlbGl2ZXIoKTtcclxuXHQgICAgICAgIFx0aWYodHlwZT09PVwidXBkYXRlXCIpIHtcclxuXHQgICAgICAgIFx0XHRjaGFuZ2Uub2xkVmFsdWUgPSBvbGR2YWx1ZTtcclxuXHQgICAgICAgIFx0fVxyXG5cdCAgICAgICAgXHR0aGlzLmNoYW5nZXNldC5wdXNoKGNoYW5nZSk7XHJcblx0ICAgICAgICBcdGlmKHN0YXJ0KSB7XHJcblx0ICAgICAgICBcdFx0ZGVsaXZlcihmYWxzZSwodHlwZW9mKGRlbGl2ZXIuZGVsYXkpPT09XCJudW1iZXJcIiA/IGRlbGl2ZXIuZGVsYXkgOiAxMCkpO1xyXG5cdCAgICAgICAgXHR9XHJcblx0ICAgIFx0fVxyXG5cdCAgICBcdHJldHVybiB0cnVlO1xyXG5cdCAgICB9O1xyXG5cdCAgICBPYnNlcnZlci5wcm90b3R5cGUuZGVsZXRlUHJvcGVydHkgPSBmdW5jdGlvbih0YXJnZXQsIHByb3BlcnR5KSB7XHJcblx0ICAgIFx0dmFyIG9sZHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcclxuXHQgICAgXHQvL2lmKHR5cGVvZihvbGR2YWx1ZSkhPT1cInVuZGVmaW5lZFwiKSB7XHJcblx0XHQgICAgXHRkZWxldGUgdGFyZ2V0W3Byb3BlcnR5XTtcclxuXHRcdCAgICBcdGlmKHRhcmdldC5fX29ic2VydmVyc19fLmluZGV4T2YodGhpcyk+PTAgJiYgIXRoaXMuYWNjZXB0bGlzdCB8fCB0aGlzLmFjY2VwdGxpc3QuaW5kZXhPZihcImRlbGV0ZVwiKT49MCkge1xyXG5cdFx0ICAgICAgICBcdHZhciBjaGFuZ2UgPSB7b2JqZWN0OnRhcmdldCxuYW1lOnByb3BlcnR5LHR5cGU6XCJkZWxldGVcIixvbGRWYWx1ZTpvbGR2YWx1ZX0sXHJcblx0XHQgICAgICAgIFx0XHRzdGFydCA9IHRoaXMuY2hhbmdlc2V0Lmxlbmd0aCA9PT0gMCxcclxuXHRcdCAgICAgICAgXHRcdGRlbGl2ZXIgPSB0aGlzLmRlbGl2ZXIoKTtcclxuXHRcdCAgICAgICAgXHR0aGlzLmNoYW5nZXNldC5wdXNoKGNoYW5nZSk7XHJcblx0XHQgICAgICAgIFx0aWYoc3RhcnQpIHtcclxuXHRcdCAgICAgICAgXHRcdGRlbGl2ZXIoZmFsc2UsKHR5cGVvZihkZWxpdmVyLmRlbGF5KT09PVwibnVtYmVyXCIgPyBkZWxpdmVyLmRlbGF5IDogMTApKTtcclxuXHRcdCAgICAgICAgXHR9XHJcblx0XHQgICAgXHR9XHJcblx0ICAgIFx0Ly99XHJcblx0ICAgIFx0cmV0dXJuIHRydWU7XHJcblx0ICAgIH07XHJcblx0ICAgIE9ic2VydmVyLnByb3RvdHlwZS5kZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uKHRhcmdldCwgcHJvcGVydHksIGRlc2NyaXB0b3IpIHtcclxuXHQgICAgXHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eSwgZGVzY3JpcHRvcik7XHJcblx0ICAgIFx0aWYodGFyZ2V0Ll9fb2JzZXJ2ZXJzX18uaW5kZXhPZih0aGlzKT49MCAmJiAhdGhpcy5hY2NlcHRsaXN0IHx8IHRoaXMuYWNjZXB0bGlzdC5pbmRleE9mKFwicmVjb25maWd1cmVcIik+PTApIHtcclxuXHQgICAgICAgIFx0dmFyIGNoYW5nZSA9IHtvYmplY3Q6dGFyZ2V0LG5hbWU6cHJvcGVydHksdHlwZTpcInJlY29uZmlndXJlXCJ9LFxyXG4gICAgICAgIFx0XHRcdHN0YXJ0ID0gdGhpcy5jaGFuZ2VzZXQubGVuZ3RoID09PSAwLFxyXG4gICAgICAgIFx0XHRcdGRlbGl2ZXIgPSB0aGlzLmRlbGl2ZXIoKTtcclxuXHQgICAgICAgIFx0dGhpcy5jaGFuZ2VzZXQucHVzaChjaGFuZ2UpO1xyXG5cdCAgICAgICAgXHRpZihzdGFydCkge1xyXG5cdCAgICAgICAgXHRcdGRlbGl2ZXIoZmFsc2UsKHR5cGVvZihkZWxpdmVyLmRlbGF5KT09PVwibnVtYmVyXCIgPyBkZWxpdmVyLmRlbGF5IDogMTApKTtcclxuXHQgICAgICAgIFx0fVxyXG5cdCAgICBcdH1cclxuXHQgICAgXHRyZXR1cm4gdHJ1ZTtcclxuXHQgICAgfTtcclxuXHQgICAgT2JzZXJ2ZXIucHJvdG90eXBlLnNldFByb3RvdHlwZU9mID0gZnVuY3Rpb24odGFyZ2V0LCBwcm90b3R5cGUpIHtcclxuXHQgICAgXHR2YXIgb2xkdmFsdWUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KTtcclxuXHQgICAgXHRPYmplY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCBwcm90b3R5cGUpO1xyXG5cdCAgICBcdGlmKHRhcmdldC5fX29ic2VydmVyc19fLmluZGV4T2YodGhpcyk+PTAgJiYgIXRoaXMuYWNjZXB0bGlzdCB8fCB0aGlzLmFjY2VwdGxpc3QuaW5kZXhPZihcInNldFByb3RvdHlwZVwiKT49MCkge1xyXG5cdCAgICAgICAgXHR2YXIgY2hhbmdlID0ge29iamVjdDp0YXJnZXQsbmFtZTpcIl9fcHJvdG9fX1wiLHR5cGU6XCJzZXRQcm90b3R5cGVcIixvbGRWYWx1ZTpvbGR2YWx1ZX0sXHJcbiAgICBcdFx0XHRcdHN0YXJ0ID0gdGhpcy5jaGFuZ2VzZXQubGVuZ3RoID09PSAwLFxyXG4gICAgXHRcdFx0XHRkZWxpdmVyID0gdGhpcy5kZWxpdmVyKCk7XHJcblx0ICAgICAgICBcdHRoaXMuY2hhbmdlc2V0LnB1c2goY2hhbmdlKTtcclxuXHQgICAgICAgIFx0aWYoc3RhcnQpIHtcclxuXHQgICAgICAgIFx0XHRkZWxpdmVyKGZhbHNlLCh0eXBlb2YoZGVsaXZlci5kZWxheSk9PT1cIm51bWJlclwiID8gZGVsaXZlci5kZWxheSA6IDEwKSk7XHJcblx0ICAgICAgICBcdH1cclxuXHQgICAgXHR9XHJcblx0ICAgIFx0cmV0dXJuIHRydWU7XHJcblx0ICAgIH07XHJcblx0ICAgIE9ic2VydmVyLnByb3RvdHlwZS5wcmV2ZW50RXh0ZW5zaW9ucyA9IGZ1bmN0aW9uKHRhcmdldCkge1xyXG5cdCAgICAgICAgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHRhcmdldCk7XHJcblx0ICAgIFx0aWYodGFyZ2V0Ll9fb2JzZXJ2ZXJzX18uaW5kZXhPZih0aGlzKT49MCAmJiAhdGhpcy5hY2NlcHRsaXN0IHx8IHRoaXMuYWNjZXB0bGlzdC5pbmRleE9mKFwicHJldmVudEV4dGVuc2lvbnNcIik+PTApIHtcclxuXHQgICAgICAgIFx0dmFyIGNoYW5nZSA9IHtvYmplY3Q6dGFyZ2V0LHR5cGU6XCJwcmV2ZW50RXh0ZW5zaW9uc1wifSxcclxuXHRcdFx0XHRcdHN0YXJ0ID0gdGhpcy5jaGFuZ2VzZXQubGVuZ3RoID09PSAwLFxyXG5cdFx0XHRcdFx0ZGVsaXZlciA9IHRoaXMuZGVsaXZlcigpO1xyXG5cdCAgICAgICAgXHR0aGlzLmNoYW5nZXNldC5wdXNoKGNoYW5nZSk7XHJcblx0ICAgICAgICBcdGlmKHN0YXJ0KSB7XHJcblx0ICAgICAgICBcdFx0ZGVsaXZlcihmYWxzZSwodHlwZW9mKGRlbGl2ZXIuZGVsYXkpPT09XCJudW1iZXJcIiA/IGRlbGl2ZXIuZGVsYXkgOiAxMCkpO1xyXG5cdCAgICAgICAgXHR9XHJcblx0ICAgIFx0fVxyXG5cdCAgICBcdHJldHVybiB0cnVlO1xyXG5cdCAgICB9O1xyXG5cdCAgICBPYmplY3Qub2JzZXJ2ZSA9IGZ1bmN0aW9uKG9iamVjdCxjYWxsYmFjayxhY2NlcHRsaXN0LHBhdXNhYmxlLHBhdXNlLGRlbGF5KSB7XHJcblx0ICAgIFx0cmV0dXJuIG5ldyBPYnNlcnZlcihvYmplY3QsY2FsbGJhY2ssYWNjZXB0bGlzdCxwYXVzYWJsZSxwYXVzZSxkZWxheSk7XHJcblx0ICAgIH07XHJcblx0ICAgIE9iamVjdC51bm9ic2VydmUgPSBmdW5jdGlvbihvYmplY3QsY2FsbGJhY2spIHtcclxuXHQgICAgXHRpZihvYmplY3QuX19vYnNlcnZlckNhbGxiYWNrc19fKSB7XHJcblx0ICAgIFx0XHRpZighY2FsbGJhY2spIHtcclxuXHQgICAgXHRcdFx0b2JqZWN0Ll9fb2JzZXJ2ZXJDYWxsYmFja3NfXy5zcGxpY2UoMCxvYmplY3QuX19vYnNlcnZlckNhbGxiYWNrc19fLmxlbmd0aCk7XHJcblx0ICAgIFx0XHRcdG9iamVjdC5fX29ic2VydmVyc19fLnNwbGljZSgwLG9iamVjdC5fX29ic2VydmVyc19fLmxlbmd0aCk7XHJcblx0ICAgIFx0XHRcdHJldHVybjtcclxuXHQgICAgXHRcdH1cclxuXHQgICAgXHRcdG9iamVjdC5fX29ic2VydmVyQ2FsbGJhY2tzX18uZm9yRWFjaChmdW5jdGlvbihvYnNlcnZlcmNhbGxiYWNrLGkpIHtcclxuXHQgICAgXHRcdFx0aWYoY2FsbGJhY2s9PT1vYnNlcnZlcmNhbGxiYWNrKSB7XHJcblx0ICAgIFx0XHRcdFx0b2JqZWN0Ll9fb2JzZXJ2ZXJDYWxsYmFja3NfXy5zcGxpY2UoaSwxKTtcclxuXHQgICAgXHRcdFx0XHRkZWxldGUgb2JqZWN0Ll9fb2JzZXJ2ZXJzX19baV0uY2FsbGJhY2s7XHJcblx0ICAgIFx0XHRcdFx0b2JqZWN0Ll9fb2JzZXJ2ZXJzX18uc3BsaWNlKGksMSk7XHJcblx0ICAgIFx0XHRcdH1cclxuXHQgICAgXHRcdH0pO1xyXG5cdCAgICBcdH1cclxuXHQgICAgfTtcclxuXHQgICAgQXJyYXkub2JzZXJ2ZSA9IGZ1bmN0aW9uKG9iamVjdCxjYWxsYmFjayxhY2NlcHRsaXN0LHBhdXNhYmxlLHBhdXNlLGRlbGF5KSB7XHJcblx0ICAgIFx0aWYoIShvYmplY3QgaW5zdGFuY2VvZiBBcnJheSkgJiYgIUFycmF5LmlzQXJyYXkob2JqZWN0KSkge1xyXG5cdCAgICBcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpcnN0IGFyZ3VtZW50IHRvIEFycmF5Lm9ic2VydmVyIGlzIG5vdCBhbiBBcnJheVwiKTtcclxuXHQgICAgXHR9XHJcbiAgICAgICAgICAgIFx0YWNjZXB0bGlzdCA9IGFjY2VwdGxpc3QgfHwgW1wiYWRkXCIsIFwidXBkYXRlXCIsIFwiZGVsZXRlXCIsIFwic3BsaWNlXCJdO1xyXG5cdCAgICBcdHZhciBhcnJheXByb3h5ID0gbmV3IFByb3h5KG9iamVjdCx7Z2V0OiBmdW5jdGlvbih0YXJnZXQscHJvcGVydHkpIHtcclxuXHQgICAgXHRcdGlmKHByb3BlcnR5PT09XCJ1bm9ic2VydmVcIikge1xyXG5cdFx0ICAgIFx0XHRyZXR1cm4gZnVuY3Rpb24oY2FsbGJhY2spIHtcclxuXHRcdCAgICBcdFx0XHRpZihjYWxsYmFjaykge1xyXG5cdFx0ICAgIFx0XHRcdFx0cmV0dXJuIE9iamVjdC51bm9ic2VydmUodGFyZ2V0LGNhbGxiYWNrKTtcclxuXHRcdCAgICBcdFx0XHR9XHJcblx0XHQgICAgXHRcdFx0cmV0dXJuIHRhcmdldC51bm9ic2VydmUoKTtcclxuXHRcdCAgICBcdFx0fTtcclxuXHRcdCAgICBcdH1cclxuXHQgICAgXHRcdGlmKHByb3BlcnR5PT09XCJzcGxpY2VcIikge1xyXG5cdCAgICBcdFx0XHRyZXR1cm4gZnVuY3Rpb24oc3RhcnQsZW5kKSB7XHJcblx0ICAgIFx0XHRcdFx0aWYodHlwZW9mKHN0YXJ0KSE9PVwibnVtYmVyXCIgfHwgdHlwZW9mKGVuZCkhPT1cIm51bWJlclwiKSB7XHJcblx0ICAgIFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlyc3QgdHdvIGFyZ3VtZW50cyB0byBBcnJheSBzcGxpY2UgYXJlIG5vdCBudW1iZXIsIG51bWJlclwiKTtcclxuXHQgICAgXHRcdFx0XHR9XHJcblx0ICAgIFx0ICAgIFx0XHR2YXIgcmVtb3ZlZCA9IHRoaXMuc2xpY2Uoc3RhcnQsc3RhcnQrZW5kKSxcclxuXHQgICAgXHQgICAgXHRcdFx0YWRkZWRDb3VudCA9IChhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50cy5sZW5ndGgtMiA6IDApLFxyXG5cdCAgICBcdCAgICBcdFx0XHRjaGFuZ2UgPSAge29iamVjdDpvYmplY3QsdHlwZTpcInNwbGljZVwiLGluZGV4OnN0YXJ0LHJlbW92ZWQ6cmVtb3ZlZCxhZGRlZENvdW50OmFkZGVkQ291bnR9O1xyXG5cdCAgICBcdCAgICBcdFx0dGFyZ2V0LnNwbGljZS5hcHBseSh0YXJnZXQsYXJndW1lbnRzKTtcclxuXHQgICAgXHQgICAgXHRcdGlmKGFjY2VwdGxpc3QuaW5kZXhPZihcInNwbGljZVwiKT49MCkge1xyXG5cdCAgICBcdCAgICBcdFx0XHR2YXIgc3RhcnQgPSBwcm94eS5fX29ic2VydmVyX18uY2hhbmdlc2V0Lmxlbmd0aCA9PT0gMCxcclxuXHQgICAgXHQgICAgICAgIFx0XHRcdGRlbGl2ZXIgPSBwcm94eS5fX29ic2VydmVyX18uZGVsaXZlcigpO1xyXG5cdCAgICBcdCAgICBcdFx0XHRwcm94eS5fX29ic2VydmVyX18uY2hhbmdlc2V0LnB1c2goY2hhbmdlKTtcclxuXHQgICAgXHQgICAgXHRcdFx0aWYoc3RhcnQpIHtcclxuXHQgICAgXHRcdCAgICAgICAgXHRcdGRlbGl2ZXIoZmFsc2UsKHR5cGVvZihkZWxpdmVyLmRlbGF5KT09PVwibnVtYmVyXCIgPyBkZWxpdmVyLmRlbGF5IDogMTApKTtcclxuXHQgICAgXHRcdCAgICAgICAgXHR9XHJcblx0ICAgIFx0ICAgIFx0XHR9XHJcblx0ICAgIFx0ICAgIFx0fVxyXG5cdCAgICBcdFx0fVxyXG5cdCAgICBcdFx0aWYocHJvcGVydHk9PT1cInB1c2hcIikge1xyXG5cdCAgICBcdFx0XHQgcmV0dXJuIGZ1bmN0aW9uKGl0ZW0pIHtcclxuXHQgICAgXHRcdCAgICBcdHJldHVybiB0aGlzLnNwbGljZSh0aGlzLmxlbmd0aCwwLGl0ZW0pO1xyXG5cdCAgICBcdFx0ICAgIH1cclxuXHQgICAgXHRcdH1cclxuXHQgICAgXHRcdGlmKHByb3BlcnR5PT09XCJwb3BcIikge1xyXG5cdCAgICBcdFx0XHQgcmV0dXJuIGZ1bmN0aW9uKCkge1xyXG5cdCAgICBcdFx0ICAgIFx0cmV0dXJuIHRoaXMuc3BsaWNlKHRoaXMubGVuZ3RoLTEsMSk7XHJcblx0ICAgIFx0XHQgICAgfVxyXG5cdCAgICBcdFx0fVxyXG5cdCAgICBcdFx0aWYocHJvcGVydHk9PT1cInVuc2hpZnRcIikge1xyXG5cdCAgICBcdFx0XHQgcmV0dXJuIGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIFx0XHQgICAgXHRcdHJldHVybiB0aGlzLnNwbGljZSgwLDAsaXRlbSk7XHJcbiAgICBcdFx0ICAgIFx0fVxyXG5cdCAgICBcdFx0fVxyXG5cdCAgICBcdFx0aWYocHJvcGVydHk9PT1cInNoaWZ0XCIpIHtcclxuXHQgICAgXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xyXG5cdCAgICBcdCAgICBcdFx0cmV0dXJuIHRoaXMuc3BsaWNlKDAsMSk7XHJcblx0ICAgIFx0ICAgIFx0fVxyXG5cdCAgICBcdFx0fVxyXG5cdCAgICBcdFx0cmV0dXJuIHRhcmdldFtwcm9wZXJ0eV07XHJcblx0ICAgIFx0fX0pO1xyXG5cdCAgICBcdHZhciBwcm94eSA9IE9iamVjdC5vYnNlcnZlKGFycmF5cHJveHksZnVuY3Rpb24oY2hhbmdlc2V0KSB7IFxyXG5cdCAgICBcdFx0dmFyIGNoYW5nZXMgPSBjaGFuZ2VzZXQuZmlsdGVyKGZ1bmN0aW9uKGNoYW5nZSkgeyByZXR1cm4gY2hhbmdlLm5hbWUhPT1cImxlbmd0aFwiICYmIGNoYW5nZS5uYW1lIT09XCJhZGRcIiAmJiAoIWFjY2VwdGxpc3QgfHwgYWNjZXB0bGlzdC5pbmRleE9mKGNoYW5nZS50eXBlKT49MCk7IH0pO1xyXG5cdCAgICBcdFx0aWYoY2hhbmdlcy5sZW5ndGg+MCkge1xyXG5cdCAgICBcdFx0XHRjYWxsYmFjayhjaGFuZ2VzKTtcclxuXHQgICAgXHRcdH1cclxuXHQgICAgXHR9LGFjY2VwdGxpc3QscGF1c2FibGUscGF1c2UsZGVsYXkpO1xyXG5cdCAgICBcdHJldHVybiBwcm94eTtcclxuXHQgICAgfTtcclxuXHQgICAgQXJyYXkudW5vYnNlcnZlID0gZnVuY3Rpb24ob2JqZWN0LGNhbGxiYWNrKSB7XHJcblx0XHQgIHJldHVybiBvYmplY3QudW5vYnNlcnZlKGNhbGxiYWNrKTtcclxuXHQgICAgfVxyXG5cdH1cclxuXHRPYmplY3QuZGVlcE9ic2VydmUgPSBmdW5jdGlvbihvYmplY3QsY2FsbGJhY2sscGFydHMpIHtcclxuXHJcblx0XHRwYXJ0cyA9IChwYXJ0cyA/IHBhcnRzIDogW10pO1xyXG5cclxuXHRcdHZhciB0b1R5cGVOYW1lID0gZnVuY3Rpb24ob2JqKSB7XHJcblx0XHRcdHJldHVybiAoe30pLnRvU3RyaW5nLmNhbGwob2JqKS5tYXRjaCgvXFxzKFthLXpBLVpdKykvKVsxXS50b0xvd2VyQ2FzZSgpXHJcblx0XHR9XHJcblxyXG5cdFx0ZnVuY3Rpb24gcmVvYnNlcnZlKHZhbHVlLCBwYXJ0cykge1xyXG5cdFx0XHR2YXIga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcclxuXHRcdFx0a2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xyXG5cdFx0XHRcdGlmKCh0b1R5cGVOYW1lKHZhbHVlW2tleV0pID09PSAnb2JqZWN0JyB8fCB0b1R5cGVOYW1lKHZhbHVlW2tleV0pID09PSAnYXJyYXknKSAmJiAhdmFsdWVba2V5XS5oYXNPd25Qcm9wZXJ0eSgnX19vYnNlcnZlcnNfXycpKSB7XHJcblx0XHRcdFx0XHR2YXIgbmV3cGFydHMgPSBwYXJ0cy5zbGljZSgwKTtcclxuXHRcdFx0XHRcdG5ld3BhcnRzLnB1c2goa2V5KTtcclxuXHRcdFx0XHRcdHZhbHVlW2tleV0gPSBPYmplY3QuZGVlcE9ic2VydmUodmFsdWVba2V5XSxjYWxsYmFjayxuZXdwYXJ0cyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZW9ic2VydmUob2JqZWN0LCBwYXJ0cyk7XHJcblxyXG5cdFx0dmFyIG9ic2VydmVkID0gT2JqZWN0Lm9ic2VydmUob2JqZWN0LGZ1bmN0aW9uKGNoYW5nZXNldCkge1xyXG5cdFx0XHR2YXIgY2hhbmdlcyA9IFtdO1xyXG5cdFx0XHRmdW5jdGlvbiByZWN1cnNlKG5hbWUscm9vdE9iamVjdCxvbGRPYmplY3QsbmV3T2JqZWN0LHBhdGgpIHtcclxuXHRcdFx0XHRpZihuZXdPYmplY3QgaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuXHRcdFx0XHRcdHZhciBuZXdrZXlzID0gT2JqZWN0LmtleXMobmV3T2JqZWN0KTtcclxuXHRcdFx0XHRcdG5ld2tleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcclxuXHRcdFx0XHRcdFx0aWYoIW9sZE9iamVjdCB8fCAob2xkT2JqZWN0W2tleV0hPT1uZXdPYmplY3Rba2V5XSkpIHtcclxuXHRcdFx0XHRcdFx0XHR2YXIgb2xkdmFsdWUgPSAob2xkT2JqZWN0ICYmIG9sZE9iamVjdFtrZXldIT09dW5kZWZpbmVkID8gb2xkT2JqZWN0W2tleV0gOiB1bmRlZmluZWQpLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y2hhbmdlID0gKG9sZHZhbHVlPT09dW5kZWZpbmVkID8gXCJhZGRcIiA6IFwidXBkYXRlXCIpLFxyXG5cdFx0XHRcdFx0XHRcdFx0a2V5cGF0aCA9IHBhdGggKyBcIi5cIiArIGtleTtcclxuXHJcblx0XHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtuYW1lOm5hbWUsb2JqZWN0OnJvb3RPYmplY3QsdHlwZTpjaGFuZ2Usb2xkVmFsdWU6b2xkdmFsdWUsbmV3VmFsdWU6bmV3T2JqZWN0W2tleV0sa2V5cGF0aDprZXlwYXRofSk7XHJcblx0XHRcdFx0XHRcdFx0cmVjdXJzZShuYW1lLHJvb3RPYmplY3Qsb2xkdmFsdWUsbmV3T2JqZWN0W2tleV0sa2V5cGF0aCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0gZWxzZSBpZihvbGRPYmplY3QgaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuXHRcdFx0XHRcdHZhciBvbGRrZXlzID0gT2JqZWN0LmtleXMob2xkT2JqZWN0KTtcclxuXHRcdFx0XHRcdG9sZGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcclxuXHRcdFx0XHRcdFx0dmFyIGNoYW5nZSA9IChuZXdPYmplY3Q9PT1udWxsID8gXCJ1cGRhdGVcIiA6IFwiZGVsZXRlXCIpLFxyXG5cdFx0XHRcdFx0XHRcdGtleXBhdGggPSBwYXRoICsgXCIuXCIgKyBrZXk7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7bmFtZTpuYW1lLG9iamVjdDpyb290T2JqZWN0LHR5cGU6Y2hhbmdlLG9sZFZhbHVlOm9sZE9iamVjdFtrZXldLG5ld1ZhbHVlOm5ld09iamVjdCxrZXlwYXRoOmtleXBhdGh9KTtcclxuXHRcdFx0XHRcdFx0cmVjdXJzZShuYW1lLHJvb3RPYmplY3Qsb2xkT2JqZWN0W2tleV0sdW5kZWZpbmVkLGtleXBhdGgpO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGNoYW5nZXNldC5mb3JFYWNoKGZ1bmN0aW9uKGNoYW5nZSkge1xyXG5cdFx0XHRcdHZhciBrZXlwYXRoID0gKHBhcnRzLmxlbmd0aD4wID8gcGFydHMuam9pbihcIi5cIikgKyBcIi5cIiA6IFwiXCIpICsgY2hhbmdlLm5hbWU7XHJcblxyXG5cdFx0XHRcdGlmIChjaGFuZ2UudHlwZSA9PT0gXCJ1cGRhdGVcIiB8fCBjaGFuZ2UudHlwZSA9PT0gXCJhZGRcIikgeyBcclxuXHRcdFx0XHRcdHJlb2JzZXJ2ZShjaGFuZ2Uub2JqZWN0LCBwYXJ0cyk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRjaGFuZ2VzLnB1c2goe25hbWU6Y2hhbmdlLm5hbWUsb2JqZWN0OmNoYW5nZS5vYmplY3QsdHlwZTpjaGFuZ2UudHlwZSxvbGRWYWx1ZTpjaGFuZ2Uub2xkVmFsdWUsbmV3VmFsdWU6Y2hhbmdlLm9iamVjdFtjaGFuZ2UubmFtZV0sa2V5cGF0aDprZXlwYXRofSk7XHJcblx0XHRcdFx0cmVjdXJzZShjaGFuZ2UubmFtZSxjaGFuZ2Uub2JqZWN0LGNoYW5nZS5vbGRWYWx1ZSxjaGFuZ2Uub2JqZWN0W2NoYW5nZS5uYW1lXSxrZXlwYXRoKTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdGNhbGxiYWNrKGNoYW5nZXMpO1xyXG5cdFx0fSk7XHJcblx0XHRyZXR1cm4gb2JzZXJ2ZWQ7XHJcblx0fTtcclxufSkoKTtcclxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcHJveHktb2JzZXJ2ZS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNDcwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///470\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(42);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(11);\n\nvar _runtimeConfiguration = __webpack_require__(144);\n\nvar _Identities = __webpack_require__(206);\n\nvar _Identities2 = _interopRequireDefault(_Identities);\n\nvar _GuiFake = __webpack_require__(476);\n\nvar _GuiFake2 = _interopRequireDefault(_GuiFake);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('IdentityModule'); // Log System\n\n/**\n*\n* The Identity Module (Id Module) is the component responsible for handling the\n* user identity and the association of this identity with the Hyperty instances,\n* in order to make Hyperty instances identifiable. The identity in the reTHINK project\n* is not fixed to a unique Identity Service Provider, but obtained through several\n* different Identity sources. With this approach, the Id Module provides to the user the\n* option to choose the preferred method for authentication.\n* This module will thus able to support multiple Identity acquisition methods,\n* such as OpenID connect 1.0, Kerberos System, or authentication through smart cards.\n* For example, a user with a Google account can use the Google as an Identity Provider to provide Identity Tokens,\n* which can be used by the Identity Module to associate it with a Hyperty instance.\n*\n* The Identity Module uses a node package, the HelloJS, which is a client-side JavaScript API for authentication\n* that facilitates the requests for the OpenID connect protocol. This method allows for some abstraction\n* when making requests for different Identity Providers, such as OpenID connect used by Google, Facebook, Microsoft, for example.\n*\n* When a request for a user identity is made using the method loginWithRP(identifier, scope),\n* this method will analyse the Identity Provider chosen to obtain an identity and will use the HelloJS node package\n* with the selected Identity Provider and identity scope. After the HelloJS request for an Access Token\n* to the Identity Providers, the user will be prompted to authenticate towards the Identity Provider.\n* Upon receiving the Access Token, this token is validated with a RESTful web service request to an endpoint\n* on the Identity Provider Authorization Server, and after the validation is done,\n* an ID token is obtained with the information according to the scope required.\n* This ID token is then preserved in this module that can obtained through the getIdentities()\n* and is passed as return value of the loginWithRP function. The methods generateAssertion and validateAssertion have not yet been developed.\n*\n*/\nvar IdentityModule = function () {\n\n /**\n * This is the constructor to initialise the Identity Module it does not require any input.\n */\n function IdentityModule(runtimeURL, runtimeCapabilities, storageManager, dataObjectsStorage, cryptoManager, runtimeCatalogue) {\n (0, _classCallCheck3.default)(this, IdentityModule);\n\n var _this = this;\n\n if (!runtimeURL) throw new Error('runtimeURL is missing.');\n if (!storageManager) throw new Error('storageManager is missing');\n if (!cryptoManager) throw new Error('cryptoManager is missing');\n if (!runtimeCatalogue) throw new Error('runtimeCatalogue is missing');\n\n _this._runtimeURL = runtimeURL;\n\n _this._runtimeCatalogue = runtimeCatalogue;\n\n _this.dataObjectsStorage = dataObjectsStorage;\n _this._idmURL = _this._runtimeURL + '/idm';\n _this._guiURL = _this._runtimeURL + '/identity-gui';\n _this.runtimeCapabilities = runtimeCapabilities;\n\n _this._domain = (0, _utils.divideURL)(_this._runtimeURL).domain;\n\n //to store items with this format: {identity: identityURL, token: tokenID}\n _this._identities = new _Identities2.default('human', storageManager);\n\n // to be reviewed: watchingYou identitiesList or identities?\n // _this.identitiesList = _this.watchingYou.watch('identitiesList', {}, true);\n _this._crypto = cryptoManager;\n\n /* _this.emailsList = [];\n let newIdentity = new Identity('guid', 'HUMAN');\n _this.identity = newIdentity;\n _this.currentIdentity;\n _this.identities.defaultIdentity;*/\n\n //stores the association of the dataObject and the Hyperty registered within\n _this.dataObjectsIdentity = {}; // is this needed?\n\n _this._listOfIdps = [];\n\n // variable to know if the GUI is deployed to choose the identity. if the real GUI is not deployed, a fake gui is deployed instead.\n _this.guiDeployed = false;\n }\n\n //******************* GET AND SET METHODS *******************\n\n /**\n * return the messageBus in this Registry\n * @param {MessageBus} messageBus\n */\n\n\n (0, _createClass3.default)(IdentityModule, [{\n key: 'getIdentity',\n\n\n //******************* IDENTITY RELEATED METHODS *******************\n /**\n * gets all the information from a given userURL\n * @param {String} userURL user url\n * @return {JSON} identity identity bundle from the userURL\n */\n value: function getIdentity(userURL) {\n return this.identities.getIdentity(userURL);\n }\n\n /**\n * Function to set the current Identity with a given Identity\n * @param {Identity} identity identity\n */\n\n /* setCurrentIdentity(identity) {\n let _this = this;\n _this.currentIdentity = identity;\n }*/\n\n /**\n * Function to return all the identities registered within a session by a user.\n * These identities are returned in an array containing a JSON package for each user identity.\n * @return {Array} Identities\n */\n\n }, {\n key: 'getIdentitiesToChoose',\n value: function getIdentitiesToChoose() {\n var _this2 = this;\n\n // let identities = _this.identities.identifiers;\n\n // let idps = [\n // { domain: 'google.com', type: 'idToken'},\n // { domain: 'microsoft.com', type: 'idToken'},\n // { domain: 'orange.fr', type: 'idToken'},\n // { domain: 'slack.com', type: 'Legacy'}\n // ];\n\n // todo: retrieve available idps from runtime catalogue\n // todo: enable oauth idps\n // let idps = [\n // { domain: 'google.com', type: 'idToken' },\n // { domain: 'microsoft.com', type: 'idToken' },\n // { domain: 'facebook.com', type: 'idToken' },\n // { domain: 'slack.com', type: 'idToken' }\n // ];\n\n return new _promise2.default(function (resolve) {\n\n var url = _runtimeConfiguration.runtimeConfiguration.catalogueURLs.idpProxy.prefix + _this2._domain + _runtimeConfiguration.runtimeConfiguration.catalogueURLs.idpProxy.suffix;\n\n _promise2.default.all([_this2.runtimeCapabilities.isAvailable('browser'), _this2.runtimeCapabilities.isAvailable('node')]).then(function (result) {\n\n var isBrowser = result[0];\n var isNode = result[1];\n\n var constraints = { constraints: {} };\n constraints.constraints.node = isNode;\n constraints.constraints.browser = isBrowser;\n\n _this2._runtimeCatalogue.getTypeList(url, constraints).then(function (idps) {\n var listOfIdps = idps.map(function (key) {\n return { domain: key, type: 'idToken' };\n });\n log.info('[IdentityModule.getIdentityAssertion:getIdentitiesToChoose]', idps, listOfIdps);\n _this2._listOfIdps = listOfIdps;\n return resolve({ defaultIdentity: _this2.identities.defaultIdentity, identities: _this2.identities.identities, idps: listOfIdps });\n });\n });\n });\n }\n\n /**\n * Function to return the selected Identity within a session\n * @return {Identity} identity identity\n */\n /* getCurrentIdentity() {\n let _this = this;\n return _this.currentIdentity;\n }*/\n\n }, {\n key: 'init',\n value: function init() {\n var _this = this;\n return new _promise2.default(function (resolve) {\n _this._identities.loadIdentities().then(function () {\n\n _this._crypto.getMyPublicKey().then(function (key) {\n var hash = _this._crypto.crypto._sha256((0, _utils.stringify)(key)).then(function (hash) {\n\n var guid = 'user-guid://' + hash;\n _this.identities.guid = guid;\n _this._identities.loadAccessTokens().then(function () {\n\n resolve();\n });\n }).catch(function (error) {\n console.log('[IdentityModule] error', error);\n });\n });\n });\n });\n }\n\n /**\n * Function that fetch an identityAssertion from a user.\n *\n * @return {IdAssertion} IdAssertion\n */\n\n }, {\n key: 'getIdentityAssertion',\n value: function getIdentityAssertion(identityBundle) {\n log.log('[IdentityModule.getIdentityAssertion:identityBundle]', identityBundle);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n //CHECK whether is browser environment or nodejs\n //if it is browser, then create a fake identity\n\n _this.runtimeCapabilities.isAvailable('browser').then(function (result) {\n log.log('runtime browser identity acquisition', result);\n\n if (!result) return;\n\n //todo: only idp should be mandatory when identityBundle exists\n\n if (identityBundle && identityBundle.hasOwnProperty('idp')) {\n\n var idp = identityBundle.idp;\n var origin = identityBundle.hasOwnProperty('origin') ? identityBundle.origin : 'origin';\n var idHint = identityBundle.hasOwnProperty('idHint') ? identityBundle.idHint : '';\n\n _this.selectIdentityForHyperty(origin, idp, idHint).then(function (assertion) {\n log.log('[IdentityModule] Identity selected by hyperty.');\n return resolve(assertion);\n }, function (err) {\n // if it got an error then just select identity from GUI\n log.error('[IdentityModule] Could not select identity from hyperty:', err);\n _this.selectIdentityFromGUI().then(function (newAssertion) {\n log.log('[IdentityModule] Identity selected by hyperty.');\n return resolve(newAssertion);\n }, function (err) {\n return reject(err);\n });\n });\n } else {\n\n if (_this.identities.defaultIdentity && _this.identities.defaultIdentity.expires > (0, _utils.secondsSinceEpoch)()) {\n return resolve(_this.identities.defaultIdentity);\n } else {\n _this.selectIdentityFromGUI().then(function (assertion) {\n\n log.log('[IdentityModule] Identity selected from GUI.');\n\n /*\n _this.identities.defaultIdentity = assertion.userProfile.userURL;\n return resolve(assertion);\n }*/\n\n _this.identities.defaultIdentity = assertion.userProfile.userURL;\n return resolve(assertion);\n }, function (err) {\n return reject(err);\n });\n }\n }\n }).catch(function (error) {\n log.error('Error on identity acquisition ', error);\n return reject(error);\n });\n\n _this.runtimeCapabilities.isAvailable('node').then(function (result) {\n log.log('node identity acquisition', result);\n\n if (!result) return;\n\n if (_this.identities.currentIdentity) {\n //TODO verify whether the token is still valid or not.\n // should be needed to make further requests, to obtain a valid token\n return resolve(_this.identities.currentIdentity);\n } else {\n log.log('getIdentityAssertion for nodejs');\n\n var idp = { type: 'idp', value: 'nodejs-idp', code: 200, auth: false };\n _this.callNodeJsGenerateMethods(idp.value, 'origin').then(function (value) {\n resolve(value);\n }, function (err) {\n reject(err);\n });\n }\n }).catch(function (error) {\n log.error('Error on identity acquisition ', error);\n reject(error);\n });\n });\n }\n\n /**\n * Function to return all the users URLs registered within a session\n * These users URLs are returned in an array of strings.\n * @return {Array} users\n */\n\n }, {\n key: 'getUsersIDs',\n value: function getUsersIDs() {\n /* log.log('[getUsersIDs:emailFormat]', emailFormat);\n log.log('getUsersIDs:emailFormat', emailFormat);\n let _this = this;\n let users = [];*/\n\n //if request comes with the emailFormat option, then convert url to email format\n /* let converter = (emailFormat) ? getUserEmailFromURL : (value) => { return value; };\n for (let index in _this.identities) {\n let identity = _this.identities[index];\n users.push(converter(identity.identity));\n }*/\n\n return this.identities.identifiers;\n }\n\n /**\n * Function to remove an identity\n * @param {String} userURL userURL\n * @return {Promise}\n */\n\n }, {\n key: 'deleteIdentity',\n value: function deleteIdentity(userURL) {\n\n return this.identities.removeIdentity(userURL);\n }\n\n /**\n * Function to unregister an identity from the emailsList array and not show in to the GUI\n * @param {String} email email\n */\n /* unregisterIdentity(email) {\n let _this = this;\n for (let e in _this.emailsList) {\n if (_this.emailsList[e] === email) {\n _this.emailsList.splice(e, 1);\n }\n }\n }*/\n\n /**\n * Function that sends a request to the GUI using messages. Sends all identities registered and\n * the Idps supported, and return the identity/idp received by the GUI\n * @param {Array} identities list of identitiies\n * @param {Array} idps list of idps to authenticate\n * @return {Promise} returns a chosen identity or idp\n */\n\n }, {\n key: 'requestIdentityToGUI',\n value: function requestIdentityToGUI(identities, idps) {\n log.log('[IdentityModule.requestIdentityToGUI:identities]', identities);\n log.log('[IdentityModule.requestIdentityToGUI:idps]', idps);\n\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n\n //condition to check if the real GUI is deployed. If not, deploys a fake gui\n if (_this.guiDeployed === false) {\n var guiFakeURL = _this._guiURL;\n var guiFake = new _GuiFake2.default(guiFakeURL, _this._messageBus);\n _this.guiFake = guiFake;\n _this.guiDeployed = true;\n }\n\n var message = {\n type: 'create', to: _this._guiURL, from: _this._idmURL,\n body: { value: { identities: identities, idps: idps } }\n };\n\n var callback = function callback(msg) {\n _this._messageBus.removeResponseListener(_this._idmURL, msg.id);\n\n // todo: to return the user URL and not the email or identifier\n\n if (msg.body.code === 200) {\n var selectedIdentity = msg.body;\n\n log.log('selectedIdentity: ', selectedIdentity.value);\n resolve(selectedIdentity);\n } else {\n reject('error on requesting an identity to the GUI');\n }\n };\n\n //postMessage with callback but without timeout\n try {\n _this._messageBus.postMessage(message, callback, false);\n } catch (err) {\n reject('In method callIdentityModuleFunc error: ' + err);\n }\n });\n }\n }, {\n key: 'callNodeJsGenerateMethods',\n value: function callNodeJsGenerateMethods(idp, origin) {\n log.log('[callNodeJsGenerateMethods:idp]', idp);\n log.log('[callNodeJsGenerateMethods:origin]', origin);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n //debugger;\n var publicKey = void 0;\n\n //let keyPair = nodeJSKeyPairPopulate;\n\n //generates the RSA key pair\n _this._crypto.getMyPublicKey().then(function (key) {\n\n log.log('[callNodeJsGenerateMethods:key]', key);\n\n publicKey = (0, _utils.stringify)(key);\n\n log.log('[callNodeJsGenerateMethods] NO_URL');\n\n return _this.generateAssertion(publicKey, origin, 'url', idp);\n }).then(function (value) {\n if (value) {\n resolve(value);\n } else {\n reject('Error on obtaining Identity');\n }\n }).catch(function (err) {\n log.log(err);\n reject(err);\n });\n });\n }\n }, {\n key: 'callGenerateMethods',\n value: function callGenerateMethods(idp, origin) {\n log.log('[callGenerateMethods:idp]', idp);\n log.log('[callGenerateMethods:origin]', origin);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var publicKey = void 0;\n\n //generates the RSA key pair\n _this._crypto.getMyPublicKey().then(function (key) {\n\n log.log('[callNodeJsGenerateMethods:key]', key);\n\n publicKey = (0, _utils.stringify)(key);\n\n // userkeyPair = keyPair;\n log.log('generateAssertion:no_hint');\n return _this.generateAssertion(publicKey, origin, '', idp);\n }).then(function (url) {\n _this.myHint = url;\n log.log('generateAssertion:hint');\n return _this.generateAssertion(publicKey, origin, url, idp);\n }).then(function (value) {\n if (value) {\n resolve(value);\n } else {\n reject('Error on obtaining Identity');\n }\n }).catch(function (err) {\n log.error(err);\n reject(err);\n });\n });\n }\n }, {\n key: 'loginSelectedIdentity',\n value: function loginSelectedIdentity(publicKey, origin, idp, loginUrl) {\n log.log('[loginSelectedIdentity:publicKey]', publicKey);\n log.log('[loginSelectedIdentity:origin]', origin);\n log.log('[loginSelectedIdentity:idp]', idp);\n\n // log.log('[loginSelectedIdentity:keyPair]', keyPair);\n log.log('[loginSelectedIdentity:loginUrl]', loginUrl);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n log.log('[IdentityModule] openPopup');\n _this.callIdentityModuleFunc('openPopup', { urlreceived: loginUrl }).then(function (idCode) {\n return idCode;\n }, function (err) {\n log.error('Error while logging in for the selected identity.');\n return reject(err);\n }).then(function (idCode) {\n _this.sendGenerateMessage(publicKey, origin, idCode, idp).then(function (newResponse) {\n if (newResponse.hasOwnProperty('assertion')) {\n _this.identities.addAssertion(newResponse).then(function (result) {\n resolve('Login was successfull');\n }).catch(function (err) {\n reject('Login has failed:' + err);\n });\n } else {\n log.error('Error while logging in for the selected identity.');\n return reject('Could not generate a valid assertion for selected identity.');\n }\n }).catch(function (err) {\n reject('On loginSelectedIdentity from method sendGenerateMessage error: ' + err);\n });\n });\n });\n }\n }, {\n key: 'selectIdentityForHyperty',\n value: function selectIdentityForHyperty(origin, idp, idHint) {\n log.log('[selectIdentityForHyperty:origin]', origin);\n log.log('[selectIdentityForHyperty:idp]', idp);\n log.log('[selectIdentityForHyperty:idHint]', idHint);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n //generates the RSA key pair\n _this._crypto.getMyPublicKey().then(function (key) {\n var publicKey = (0, _utils.stringify)(key);\n\n _this.sendGenerateMessage(publicKey, origin, idHint, idp).then(function (response) {\n if (response.hasOwnProperty('assertion')) {\n // identity was logged in, just save it\n _this.identities.addAssertion(response).then(function (value) {\n return resolve(response);\n }, function (err) {\n return reject(err);\n });\n } else if (response.hasOwnProperty('loginUrl')) {\n // identity was not logged in\n _this.loginSelectedIdentity(publicKey, origin, idp, response.loginUrl).then(function (value) {\n return resolve(value);\n }, function (err) {\n return reject(err);\n });\n } else {\n // you should never get here, if you do then the IdP Proxy is not well implemented\n // log.error('GenerateAssertion returned invalid response.');\n log.log('Proceeding by logging in.');\n _this.callGenerateMethods(idp, origin).then(function (value) {\n return resolve(value);\n }, function (err) {\n return reject(err);\n });\n }\n }).catch(function (err) {\n reject('On selectIdentityForHyperty from method sendGenerateMessage error: ' + err);\n });\n }).catch(function (err) {\n reject('On selectIdentityForHyperty from method generateRSAKeyPair error: ' + err);\n });\n });\n }\n }, {\n key: 'selectIdentityFromGUI',\n value: function selectIdentityFromGUI(origin) {\n var _this3 = this;\n\n log.log('[IdentityModule.selectIdentityFromGUI:origin]', origin);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this3.getIdentitiesToChoose().then(function (identitiesInfo) {\n return _this.requestIdentityToGUI(identitiesInfo.identities, identitiesInfo.idps);\n }).then(function (value) {\n\n if (value.type === 'identity') {\n\n // let chosenID = getUserURLFromEmail(value.value);\n // hack while the user url is not returned from requestIdentityToGUI;\n\n /* let chosenID = 'user://' + _this.identities.currentIdentity.idp.domain + '/' + value.value;\n _this.identities.defaultIdentity = _this.identities.currentIdentity;*/\n\n // returns the identity info from the chosen id\n // if (_this.identities.currentIdentity) resolve(_this.identities.currentIdentity.assertion);\n if (_this.identities.identities[value.value]) resolve(_this.identities.identities[value.value]);else reject('[IdentityModule.selectIdentityFromGUI] identity not found: ', value.value);\n } else if (value.type === 'idp') {\n\n _this.callGenerateMethods(value.value, origin).then(function (value) {\n return resolve(value);\n }, function (err) {\n return reject(err);\n });\n } else {\n return reject('error on GUI received message.');\n }\n }).catch(function (err) {\n reject('On selectIdentityFromGUI from method requestIdentityToGUI error: ' + err);\n });\n });\n }\n }, {\n key: 'callIdentityModuleFunc',\n value: function callIdentityModuleFunc(methodName, parameters) {\n log.log('[callIdentityModuleFunc:methodName]', methodName);\n log.log('[callIdentityModuleFunc:parameters]', parameters);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n var message = {\n type: 'execute', to: _this._guiURL, from: _this._idmURL,\n body: { resource: 'identity', method: methodName, params: parameters }\n };\n\n //post msg with callback but without timout\n var callback = function callback(msg) {\n _this._messageBus.removeResponseListener(_this._idmURL, msg.id);\n var result = msg.body.value;\n resolve(result);\n };\n try {\n\n _this._messageBus.postMessage(message, callback, false);\n } catch (err) {\n reject('In method callIdentityModuleFunc error: ' + err);\n }\n });\n }\n\n //******************* TOKEN METHODS *******************\n /**\n * get a Token to be added to a message\n * @param {String} fromURL origin of the message\n * @param {String} toURL target of the messageok\n * @return {JSON} token token to be added to the message\n */\n\n }, {\n key: 'getToken',\n value: function getToken(msg) {\n var _this = this;\n var fromURL = msg.from;\n var toUrl = msg.to;\n if (msg.hasOwnProperty('body') && msg.body.hasOwnProperty('source')) {\n fromURL = msg.body.source;\n }\n\n if (msg.type === 'forward') {\n fromURL = msg.body.from;\n }\n\n if (msg.hasOwnProperty('body') && msg.body.hasOwnProperty('subscriber')) {\n fromURL = msg.body.subscriber;\n }\n\n return new _promise2.default(function (resolve, reject) {\n log.log('[IdentityModule.getToken] for msg ', msg);\n\n //log.log('toUrl', toUrl);\n _this.registry.isLegacy(toUrl).then(function (result) {\n // log.log('[Identity.IdentityModule.getToken] isLEGACY: ', result);\n if (result) {\n\n _this._getAccessToken(msg).then(function (token) {\n log.log('[IdentityModule.getToken] access token ', token);\n resolve((0, _utils.deepClone)(token));\n }).catch(function (err) {\n reject('[IdentityModule.getToken] Access Token error ' + err);\n });\n } else {\n _this._getValidToken(fromURL).then(function (token) {\n resolve(token);\n }).catch(function (err) {\n reject('On getToken from method _getValidToken error: ' + err);\n });\n }\n }).catch(function (err) {\n reject('On getToken from method isLegacy error: ' + err);\n });\n });\n }\n\n /**\n * get an Id Token for a HypertyURL\n * @param {String} hypertyURL the Hyperty address\n * @return {JSON} token Id token to be added to the message\n */\n\n }, {\n key: 'getIdToken',\n value: function getIdToken(hypertyURL) {\n log.info('getIdToken:hypertyURL ', hypertyURL);\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n var splitURL = hypertyURL.split('://');\n var userURL = void 0;\n if (splitURL[0] !== 'hyperty') {\n // it is a Data Object URL\n\n _this._getHypertyFromDataObject(hypertyURL).then(function (returnedHypertyURL) {\n\n userURL = _this.registry.getHypertyOwner(returnedHypertyURL);\n\n if (userURL) {\n var identity = _this.identities.getIdentity(userURL);\n if (identity) return resolve(identity);else return reject('[IdentityModule.getIdToken] Identity not found for: ', userURL);\n } else {\n return reject('[IdentityModule.getIdToken] User not found for hyperty: ', returnedHypertyURL);\n }\n }).catch(function (reason) {\n log.error('[IdentityModule.getIdToken] Error: ', reason);\n reject(reason);\n });\n } else {\n userURL = _this.registry.getHypertyOwner(hypertyURL);\n if (userURL) {\n\n var identity = _this.identities.getIdentity(userURL);\n if (identity) return resolve(identity);else return reject('[IdentityModule.getIdToken] Identity not found for: ', userURL);\n } else {\n return reject('[IdentityModule.getIdToken] User not found for hyperty: ', userURL);\n }\n }\n });\n }\n\n /**\n * get an Access Token for an external API\n * @param {String} url the external url\n * @return {JSON} token Access token to be added to the message\n */\n\n }, {\n key: '_getAccessToken',\n value: function _getAccessToken(msg) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n var url = msg.to;\n var token = void 0;\n\n if (!msg.hasOwnProperty('body')) {\n return reject('[IdentityModule._getAccessToken] missing mandatory msg body: ', msg);\n }\n if (!msg.body.hasOwnProperty('value')) {\n return reject('[IdentityModule._getAccessToken] missing mandatory msg body value: ', msg);\n }\n if (!msg.body.value.hasOwnProperty('resources')) {\n return reject('[IdentityModule._getAccessToken] missing mandatory msg body value resources: ', msg);\n }\n var domainToCheck = (0, _utils.divideURL)(url).domain;\n\n if (url.includes('protostub')) {\n domainToCheck = domainToCheck.replace(domainToCheck.split('.')[0] + '.', '');\n }\n\n var resources = msg.body.value.resources;\n\n try {\n token = _this.identities.getAccessToken(domainToCheck, resources);\n } catch (e) {\n return reject('[IdentityModule._getAccessToken] Access Token error ' + err);\n }\n\n if (!token) {\n _this._getNewAccessToken(domainToCheck, resources).then(function (token) {\n log.log('[Identity.IdentityModule.getAccessToken] new Access Token ', token);\n return resolve(token);\n }).catch(function (err) {\n reject('[IdentityModule._getAccessToken] on getNewAccessToken ' + err);\n });\n } else if (token.status === 'in-progress') {\n return resolve(_this._inProgressAccessToken(domainToCheck, resources));\n } else {\n var timeNow = (0, _utils.secondsSinceEpoch)();\n\n log.log('[Identity.IdentityModule.getAccessToken] found Access Token ', token);\n\n if (timeNow >= token.expires) return resolve(_this._getNewAccessToken(domainToCheck, resources));else return resolve(token);\n }\n });\n }\n }, {\n key: '_inProgressAccessToken',\n value: function _inProgressAccessToken(domain, resources) {\n var _this4 = this;\n\n this.identities.watchingYou.observe('accessTokens', function (change) {\n\n log.log('[IdentityModule._inProgressAccessToken] accessTokens changed ' + _this4.identities.accessTokens);\n\n var keypath = change.keypath;\n\n if (keypath.includes('status')) {\n keypath = keypath.replace('.status', '');\n }\n\n if (keypath === domain && change.name === 'status' && change.newValue === 'created') {\n // log.log('[Identity.IdentityModule.getToken] token is created ' + _this.identitiesList[domain]);\n return _this4.identities.getAccessToken(domain, resources);\n }\n });\n }\n }, {\n key: '_getNewAccessToken',\n value: function _getNewAccessToken(domain, resources) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this.identities.setAccessTokenInProgress(domain);\n\n var message = {\n type: 'execute',\n to: _this._resolveDomain(domain),\n from: _this._idmURL,\n body: {\n method: 'getAccessTokenAuthorisationEndpoint',\n params: resources\n }\n };\n\n //let's first get the authorisation URL from the Idp Proxy\n _this._messageBus.postMessage(message, function (res) {\n if (res.body.code > 299) {\n return reject('[IdentityModule._getNewAccessToken] Error on getAccessTokenAuthorisationEndpoint from IdP Proxy: ', res.body.desc);\n }\n\n // let's ask the user for authorisation\n _this.callIdentityModuleFunc('openPopup', { urlreceived: res.body.value }).then(function (authorisation) {\n log.log('[IdentityModule:callIdentityModuleFunc:openPopup] auhtorisation result: ', authorisation);\n\n message.body.method = 'getAccessToken';\n message.body.params = {\n resources: resources,\n login: authorisation\n };\n\n //wihtout callback to avoid timeout errors?\n\n // let's ask Access Token from the Idp Proxy\n _this._messageBus.postMessage(message, function (res) {\n if (res.body.code > 299) return reject('[IdentityModule._getNewAccessToken] Error on getAccessToken from IdP Proxy: ', res.body.desc);\n\n _this.identities.addAccessToken(res.body.value).then(function (token) {\n log.info('[IdentityModule._getNewAccessToken] resolving token: ', token);\n return resolve(res.body.value);\n }, function (err) {\n reject(err);\n });\n });\n }, function (err) {\n reject(err);\n });\n });\n });\n }\n }, {\n key: 'sendRefreshMessage',\n value: function sendRefreshMessage(oldIdentity) {\n var _this = this;\n\n // let domain = _this._resolveDomain(oldIdentity.idp);\n // let message;\n // let assertion = _this.getIdentity(oldIdentity.userProfile.userURL);\n\n log.log('sendRefreshMessage:oldIdentity', oldIdentity);\n\n return new _promise2.default(function (resolve, reject) {\n var domain = _this._resolveDomain(oldIdentity.idp);\n var message = void 0;\n var assertion = _this.getIdentity(oldIdentity.userProfile.userURL);\n\n log.info('sendRefreshMessage:oldIdentity', oldIdentity);\n\n message = { type: 'execute', to: domain, from: _this._idmURL, body: { resource: 'identity', method: 'refreshAssertion', params: { identity: assertion } } };\n try {\n _this._messageBus.postMessage(message, function (res) {\n var result = res.body.value;\n resolve(result);\n });\n } catch (err) {\n reject('In sendRefreshMessage on postMessage error: ' + err);\n }\n });\n }\n }, {\n key: 'getAccessToken',\n value: function getAccessToken(idpDomain, resources, login) {\n log.log('[getAccessToken:idpDomain]', idpDomain);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var domain = _this._resolveDomain(idpDomain);\n var message = void 0;\n\n message = {\n type: 'execute', to: domain, from: _this._idmURL, body: { resource: 'identity', method: 'getAccessToken', params: { resources: resources, login: login } }\n };\n try {\n _this._messageBus.postMessage(message, function (res) {\n var result = res.body.value;\n resolve(result);\n });\n } catch (err) {\n reject('In sendRefreshMessage on postMessage error: ' + err);\n }\n });\n }\n }, {\n key: 'getAccessTokenAuthorisationEndpoint',\n value: function getAccessTokenAuthorisationEndpoint(scope, idpDomain) {\n log.log('[getAccessTokenAuthorisationEndpoint:idpDomain]', idpDomain);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var domain = _this._resolveDomain(idpDomain);\n var message = void 0;\n\n message = {\n type: 'execute', to: domain, from: _this._idmURL, body: { resource: 'identity', method: 'getAccessTokenAuthorisationEndpoint', params: { resources: scope } }\n };\n try {\n _this._messageBus.postMessage(message, function (res) {\n var result = res.body.value;\n resolve(result);\n });\n } catch (err) {\n reject('In sendRefreshMessage on postMessage error: ' + err);\n }\n });\n }\n }, {\n key: 'sendGenerateMessage',\n value: function sendGenerateMessage(contents, origin, usernameHint, idpDomain) {\n console.log('[sendGenerateMessage:contents]', contents);\n console.log('[sendGenerateMessage:origin]', origin);\n console.log('[sendGenerateMessage:usernameHint]', usernameHint);\n console.log('[sendGenerateMessage:idpDomain]', idpDomain);\n console.log('sendGenerateMessage_hint');\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var domain = _this._resolveDomain(idpDomain);\n var message = void 0;\n\n message = {\n type: 'execute', to: domain, from: _this._idmURL, body: { resource: 'identity', method: 'generateAssertion', params: { contents: contents, origin: origin, usernameHint: usernameHint } }\n };\n try {\n\n _this._messageBus.postMessage(message, function (res) {\n\n var result = res.body.value;\n resolve(result);\n });\n } catch (err) {\n reject('In sendRefreshMessage on postMessage error: ' + err);\n }\n });\n }\n\n /**\n * Requests the IdpProxy from a given Domain for an identityAssertion\n *\n * @param {DOMString} contents contents\n * @param {DOMString} origin origin\n * @param {DOMString} usernameHint usernameHint\n * @param {JSON} keyPair user keyPair\n * @return {IdAssertion} IdAssertion\n */\n\n }, {\n key: 'generateAssertion',\n value: function generateAssertion(contents, origin, usernameHint, idpDomain) {\n log.log('[generateAssertion:contents]', contents);\n log.log('[generateAssertion:origin]', origin);\n log.log('[generateAssertion:usernameHint]', usernameHint);\n\n // log.log('[generateAssertion:keyPair]', keyPair);\n log.log('[generateAssertion:idpDomain]', idpDomain);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n log.log('[IdentityModule:sendGenerateMessage:sendGenerateMessage]', usernameHint);\n _this.sendGenerateMessage(contents, origin, usernameHint, idpDomain).then(function (result) {\n console.log('generateAssertion.sendGenerateMessage result: ', (0, _stringify2.default)(result));\n\n if (result.loginUrl) {\n\n _this.callIdentityModuleFunc('openPopup', { urlreceived: result.loginUrl }).then(function (value) {\n console.log('[generateAssertion.callIdentityModuleFunc:openPopup]', value);\n\n resolve(value);\n }, function (err) {\n reject(err);\n });\n } else if (result) {\n\n _this.identities.addAssertion(result).then(function (value) {\n console.log('addAssertion', value);\n resolve(result);\n }, function (err) {\n reject(err);\n });\n } else {\n reject('error on obtaining identity information');\n }\n }).catch(function (err) {\n reject('On generateAssertion from method sendGenerateMessage error: ' + err);\n });\n });\n }\n\n /**\n * Requests the IdpProxy from a given Domain to validate an IdentityAssertion\n * Returns a promise with the result from the validation.\n * @param {DOMString} assertion\n * @param {DOMString} origin origin\n * @return {Promise} Promise promise with the result from the validation\n */\n\n }, {\n key: 'validateAssertion',\n value: function validateAssertion(assertion, origin, idpDomain) {\n log.log('[validateAssertion:assertion]', assertion);\n log.log('[validateAssertion:origin]', origin);\n log.log('[validateAssertion:idpDomain]', idpDomain);\n var _this = this;\n\n var domain = _this._resolveDomain(idpDomain);\n\n var message = {\n type: 'execute', to: domain, from: _this._idmURL, body: {\n resource: 'identity', method: 'validateAssertion',\n params: { assertion: assertion, origin: origin }\n }\n };\n\n return new _promise2.default(function (resolve, reject) {\n try {\n _this._messageBus.postMessage(message, function (result) {\n if (result.body.code === 200) {\n resolve(result.body.value);\n } else {\n reject('error', result.body.code);\n }\n });\n } catch (err) {\n reject('On validateAssertion from method postMessage error: ' + err);\n }\n });\n }\n }, {\n key: 'addGUIListeners',\n value: function addGUIListeners() {\n var _this = this;\n\n _this._messageBus.addListener(_this._idmURL, function (msg) {\n var funcName = msg.body.method;\n\n log.log('[IdentityModule:addGUIListeners]', msg, msg.body, funcName);\n\n var returnedValue = void 0;\n\n if (funcName === 'deployGUI') {\n returnedValue = _this.deployGUI();\n } else if (funcName === 'getIdentitiesToChoose') {\n _this.getIdentitiesToChoose().then(function (result) {\n // if the function requested is not a promise\n var value = { type: 'execute', value: result, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if storeIdentity method postMessage error: ' + err);\n }\n });\n return;\n } else if (funcName === 'unregisterIdentity') {\n var email = msg.body.params.email;\n returnedValue = _this.unregisterIdentity(email);\n } else if (funcName === 'getMyPublicKey') {\n // because generateRSAKeyPair is a promise\n // we have to send the message only after getting the key pair\n _this._crypto.getMyPublicKey().then(function (pubKey) {\n pubKey = (0, _utils.stringify)(pubKey);\n var value = { type: 'execute', value: pubKey, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if generateRSAKeyPair method postMessage error: ' + err);\n }\n });\n return;\n } else if (funcName === 'sendGenerateMessage') {\n var contents = msg.body.params.contents;\n var origin = msg.body.params.origin;\n var usernameHint = msg.body.params.usernameHint;\n var idpDomain = msg.body.params.idpDomain;\n _this.sendGenerateMessage(contents, origin, usernameHint, idpDomain).then(function (returnedValue) {\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if sendGenerateMessage method postMessage error: ' + err);\n }\n });\n return;\n } else if (funcName === 'getAccessTokenAuthorisationEndpoint') {\n var scope = msg.body.params.scope;\n var _idpDomain = msg.body.params.idpDomain;\n _this.getAccessTokenAuthorisationEndpoint(scope, _idpDomain).then(function (returnedValue) {\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if sendGenerateMessage method postMessage error: ' + err);\n }\n });\n return;\n } else if (funcName === 'addAccessToken') {\n var accessToken = msg.body.params;\n\n _this.identities.addAccessToken(accessToken).then(function (returnedValue) {\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if storeIdentity method postMessage error: ' + err);\n }\n });\n return;\n } else if (funcName === 'getAccessToken') {\n\n var domain = msg.body.params.idpDomain;\n var resources = msg.body.params.resources;\n var login = msg.body.params.login;\n\n _this.getAccessToken(domain, resources, login).then(function (returnedValue) {\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if sendGenerateMessage method postMessage error: ' + err);\n }\n });\n return;\n } else if (funcName === 'addAssertion') {\n var result = msg.body.params;\n\n // let keyPair = msg.body.params.keyPair;\n _this.identities.addAssertion(result).then(function (returnedValue) {\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if storeIdentity method postMessage error: ' + err);\n }\n });\n return;\n } /*else if (funcName === 'selectIdentityForHyperty') {\n let origin = msg.body.params.origin;\n let idp = msg.body.params.idp;\n let idHint = msg.body.params.idHint;\n _this.selectIdentityForHyperty(origin, idp, idHint);\n return;\n }*/\n\n // if the function requested is not a promise\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n try {\n _this._messageBus.postMessage(replyMsg);\n } catch (err) {\n log.error('On addGUIListeners from if storeIdentity method postMessage error: ' + err);\n }\n });\n }\n }, {\n key: 'deployGUI',\n value: function deployGUI() {\n var _this = this;\n _this.guiDeployed = true;\n }\n\n //******************* PRIVATE METHODS *******************\n /**\n * GetValidToken is for non legacy hyperties and verifies if the Token is still valid\n * if the token is invalid it requests a new token\n * @param {String} hypertyURL hypertyURL\n * @return {Promise}\n */\n\n }, {\n key: '_getValidToken',\n value: function _getValidToken(hypertyURL) {\n log.log('[IdentityModule._getValidToken]:hypertyURL', hypertyURL);\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n _this.getIdToken(hypertyURL).then(function (assertion) {\n log.log('[IdentityModule._getValidToken] retrieved IdAssertion', assertion);\n var timeNow = (0, _utils.secondsSinceEpoch)();\n\n if (!assertion.hasOwnProperty('expires')) return resolve(assertion);\n\n var expirationDate = assertion.expires;\n\n /* if (completeId.hasOwnProperty('info')) {\n if (completeId.info.hasOwnProperty('expires')) {\n expirationDate = completeId.info.expires;\n } else if (completeId.info.hasOwnProperty('tokenIDJSON')) {\n expirationDate = completeId.info.tokenIDJSON.exp;\n } else {\n // throw 'The ID Token does not have an expiration time';\n log.info('The ID Token does not have an expiration time');\n resolve(assertion);\n }\n } else if (completeId.hasOwnProperty('infoToken') && completeId.infoToken.hasOwnProperty('exp')) {\n expirationDate = completeId.infoToken.exp;\n } else {\n // throw 'The ID Token does not have an expiration time';\n log.info('The ID Token does not have an expiration time');\n resolve(assertion);\n }*/\n\n log.log('[Identity.IdentityModule.getValidToken] Token expires in', expirationDate);\n log.log('[Identity.IdentityModule.getValidToken] time now:', timeNow);\n\n if (timeNow >= expirationDate) {\n if (assertion.hasOwnProperty('refresh')) {\n _this.sendRefreshMessage(assertion).then(function (newAssertion) {\n _this.identities.updateAssertion(newAssertion).then(function () {\n resolve(newAssertion);\n }, function (err) {\n log.error('[IdentityModule.getValidToken] error updating the assertion ', err);\n reject(err);\n });\n }, function (err) {\n log.error('[IdentityModule.getValidToken] error refreshing the assertion ', err);\n reject(err);\n });\n } else {\n // no refresh token available, user has to authenticate again to get a new assertion\n // generate new idToken\n _this.callGenerateMethods(assertion.idp.domain).then(function (value) {\n resolve(value);\n }).catch(function (err) {\n reject('[IdentityModule.getValidToken] error when generating a new assertion ' + err);\n });\n }\n } else {\n resolve(assertion);\n }\n }).catch(function (error) {\n log.error('[IdentityModule.getValidToken] error on getIdToken', error);\n reject(error);\n });\n });\n }\n\n /**\n * returns the reporter associated to the dataObject URL\n * @param {String} dataObjectURL dataObject url\n * @return {String} reporter dataObject url reporter\n */\n\n }, {\n key: '_getHypertyFromDataObject',\n value: function _getHypertyFromDataObject(dataObjectURL) {\n log.info('_getHypertyFromDataObject:dataObjectURL', dataObjectURL);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var splitedURL = (0, _utils.divideURL)(dataObjectURL);\n var domain = splitedURL.domain;\n var finalURL = (0, _utils.parseMessageURL)(dataObjectURL);\n\n // check if is the creator of the hyperty\n var reporterURL = _this.registry.getReporterURLSynchonous(finalURL);\n log.info('_getHypertyFromDataObject:reporterURL', reporterURL);\n\n if (reporterURL) {\n resolve(reporterURL);\n } else {\n // check if there is already an association from an hypertyURL to the dataObject\n var storedReporterURL = _this.dataObjectsIdentity[finalURL];\n log.info('_getHypertyFromDataObject:storedReporterURL', storedReporterURL);\n\n if (storedReporterURL) {\n resolve(storedReporterURL);\n } else {\n // check if there is any hyperty that subscribed the dataObjectURL\n var subscriberHyperty = _this.registry.getDataObjectSubscriberHyperty(dataObjectURL);\n log.info('_getHypertyFromDataObject:subscriberHyperty', subscriberHyperty);\n\n if (subscriberHyperty) {\n resolve(subscriberHyperty);\n } else {\n // search in domain registry for the hyperty associated to the dataObject\n // search in case is a subscriber who wants to know the reporter\n // To be reviewed in order to avoid the discovery transaction\n _this._coreDiscovery.discoverDataObjectPerURL(finalURL, domain).then(function (dataObject) {\n log.info('_getHypertyFromDataObject:dataObject', dataObject);\n _this.dataObjectsIdentity[finalURL] = dataObject.reporter;\n log.info('_getHypertyFromDataObject:dataObject.reporter', dataObject.reporter);\n resolve(dataObject.reporter);\n }, function (err) {\n reject(err);\n });\n }\n }\n }\n });\n }\n\n /**\n * Function that resolve and create the domainURL in case it is provided one. If not, resolve the default domainURL\n * @param {String} idpDomain idpDomain (Optional)\n */\n\n }, {\n key: '_resolveDomain',\n value: function _resolveDomain(idpDomain) {\n if (!idpDomain) {\n return 'domain-idp://google.com';\n } else {\n return 'domain-idp://' + idpDomain;\n }\n }\n\n /*\n _secondsSinceEpoch() {\n return Math.floor(Date.now() / 1000);\n }*/\n\n }, {\n key: 'messageBus',\n get: function get() {\n var _this = this;\n return _this._messageBus;\n }\n\n /**\n * Set the messageBus in this Registry\n * @param {MessageBus} messageBus\n */\n ,\n set: function set(messageBus) {\n var _this = this;\n _this._messageBus = messageBus;\n _this.addGUIListeners();\n }\n\n /**\n * return the coreDiscovery component\n * do we need this??\n */\n\n }, {\n key: 'coreDiscovery',\n get: function get() {\n var _this = this;\n return _this._coreDiscovery;\n }\n\n /**\n * Set the coreDiscovery component\n * @param {coreDiscovery} coreDiscovery\n */\n ,\n set: function set(coreDiscovery) {\n var _this = this;\n _this._coreDiscovery = coreDiscovery;\n }\n\n /**\n * return the registry in this idModule\n * @param {registry} registry\n */\n\n }, {\n key: 'registry',\n get: function get() {\n var _this = this;\n return _this._registry;\n }\n\n /**\n * Set the registry in this idModule\n * @param {registry} reg\n */\n ,\n set: function set(registry) {\n var _this = this;\n _this._registry = registry;\n }\n }, {\n key: 'identities',\n get: function get() {\n var _this = this;\n return _this._identities;\n },\n set: function set(identities) {\n var _this = this;\n _this._identities = identities;\n }\n }, {\n key: 'idps',\n get: function get() {\n return this._listOfIdps;\n }\n }]);\n return IdentityModule;\n}();\n\nexports.default = IdentityModule;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9pZGVudGl0eS9JZGVudGl0eU1vZHVsZS5qcz81MTE1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIExvZyBTeXN0ZW1cbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignSWRlbnRpdHlNb2R1bGUnKTtcblxuaW1wb3J0IHsgc2Vjb25kc1NpbmNlRXBvY2gsIGRpdmlkZVVSTCwgcGFyc2VNZXNzYWdlVVJMLCBzdHJpbmdpZnksIGRlZXBDbG9uZSB9IGZyb20gJy4uL3V0aWxzL3V0aWxzLmpzJztcbmltcG9ydCB7IHJ1bnRpbWVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vcnVudGltZS9ydW50aW1lQ29uZmlndXJhdGlvbic7XG5cbmltcG9ydCBJZGVudGl0aWVzIGZyb20gJy4vSWRlbnRpdGllcyc7XG5pbXBvcnQgR3VpRmFrZSBmcm9tICcuL0d1aUZha2UnO1xuXG4vKipcbipcbiogVGhlIElkZW50aXR5IE1vZHVsZSAoSWQgTW9kdWxlKSBpcyB0aGUgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGVcbiogdXNlciBpZGVudGl0eSBhbmQgdGhlIGFzc29jaWF0aW9uIG9mIHRoaXMgaWRlbnRpdHkgd2l0aCB0aGUgSHlwZXJ0eSBpbnN0YW5jZXMsXG4qIGluIG9yZGVyIHRvIG1ha2UgSHlwZXJ0eSBpbnN0YW5jZXMgaWRlbnRpZmlhYmxlLiBUaGUgaWRlbnRpdHkgaW4gdGhlIHJlVEhJTksgcHJvamVjdFxuKiBpcyBub3QgZml4ZWQgdG8gYSB1bmlxdWUgSWRlbnRpdHkgU2VydmljZSBQcm92aWRlciwgYnV0IG9idGFpbmVkIHRocm91Z2ggc2V2ZXJhbFxuKiBkaWZmZXJlbnQgSWRlbnRpdHkgc291cmNlcy4gV2l0aCB0aGlzIGFwcHJvYWNoLCB0aGUgSWQgTW9kdWxlIHByb3ZpZGVzIHRvIHRoZSB1c2VyIHRoZVxuKiBvcHRpb24gdG8gY2hvb3NlIHRoZSBwcmVmZXJyZWQgbWV0aG9kIGZvciBhdXRoZW50aWNhdGlvbi5cbiogVGhpcyBtb2R1bGUgd2lsbCB0aHVzIGFibGUgdG8gc3VwcG9ydCBtdWx0aXBsZSBJZGVudGl0eSBhY3F1aXNpdGlvbiBtZXRob2RzLFxuKiBzdWNoIGFzIE9wZW5JRCBjb25uZWN0IDEuMCwgS2VyYmVyb3MgU3lzdGVtLCBvciBhdXRoZW50aWNhdGlvbiB0aHJvdWdoIHNtYXJ0IGNhcmRzLlxuKiBGb3IgZXhhbXBsZSwgYSB1c2VyIHdpdGggYSBHb29nbGUgYWNjb3VudCBjYW4gdXNlIHRoZSBHb29nbGUgYXMgYW4gSWRlbnRpdHkgUHJvdmlkZXIgdG8gcHJvdmlkZSBJZGVudGl0eSBUb2tlbnMsXG4qICB3aGljaCBjYW4gYmUgdXNlZCBieSB0aGUgSWRlbnRpdHkgTW9kdWxlIHRvIGFzc29jaWF0ZSBpdCB3aXRoIGEgSHlwZXJ0eSBpbnN0YW5jZS5cbipcbiogVGhlIElkZW50aXR5IE1vZHVsZSB1c2VzIGEgbm9kZSBwYWNrYWdlLCB0aGUgSGVsbG9KUywgd2hpY2ggaXMgYSBjbGllbnQtc2lkZSBKYXZhU2NyaXB0IEFQSSBmb3IgYXV0aGVudGljYXRpb25cbiogdGhhdCBmYWNpbGl0YXRlcyB0aGUgcmVxdWVzdHMgZm9yIHRoZSBPcGVuSUQgY29ubmVjdCBwcm90b2NvbC4gVGhpcyBtZXRob2QgYWxsb3dzIGZvciBzb21lIGFic3RyYWN0aW9uXG4qIHdoZW4gbWFraW5nIHJlcXVlc3RzIGZvciBkaWZmZXJlbnQgSWRlbnRpdHkgUHJvdmlkZXJzLCBzdWNoIGFzIE9wZW5JRCBjb25uZWN0IHVzZWQgYnkgR29vZ2xlLCBGYWNlYm9vaywgTWljcm9zb2Z0LCBmb3IgZXhhbXBsZS5cbipcbiogV2hlbiBhIHJlcXVlc3QgZm9yIGEgdXNlciBpZGVudGl0eSBpcyBtYWRlIHVzaW5nIHRoZSBtZXRob2QgbG9naW5XaXRoUlAoaWRlbnRpZmllciwgc2NvcGUpLFxuKiB0aGlzIG1ldGhvZCB3aWxsIGFuYWx5c2UgdGhlIElkZW50aXR5IFByb3ZpZGVyIGNob3NlbiB0byBvYnRhaW4gYW4gaWRlbnRpdHkgYW5kIHdpbGwgdXNlIHRoZSBIZWxsb0pTIG5vZGUgcGFja2FnZVxuKiB3aXRoIHRoZSBzZWxlY3RlZCBJZGVudGl0eSBQcm92aWRlciBhbmQgaWRlbnRpdHkgc2NvcGUuIEFmdGVyIHRoZSBIZWxsb0pTIHJlcXVlc3QgZm9yIGFuIEFjY2VzcyBUb2tlblxuKiB0byB0aGUgSWRlbnRpdHkgUHJvdmlkZXJzLCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGF1dGhlbnRpY2F0ZSB0b3dhcmRzIHRoZSBJZGVudGl0eSBQcm92aWRlci5cbiogVXBvbiByZWNlaXZpbmcgdGhlIEFjY2VzcyBUb2tlbiwgdGhpcyB0b2tlbiBpcyB2YWxpZGF0ZWQgd2l0aCBhIFJFU1RmdWwgd2ViIHNlcnZpY2UgcmVxdWVzdCB0byBhbiBlbmRwb2ludFxuKiBvbiB0aGUgSWRlbnRpdHkgUHJvdmlkZXIgQXV0aG9yaXphdGlvbiBTZXJ2ZXIsIGFuZCBhZnRlciB0aGUgdmFsaWRhdGlvbiBpcyBkb25lLFxuKiBhbiBJRCB0b2tlbiBpcyBvYnRhaW5lZCB3aXRoIHRoZSBpbmZvcm1hdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHNjb3BlIHJlcXVpcmVkLlxuKiBUaGlzIElEIHRva2VuIGlzIHRoZW4gcHJlc2VydmVkIGluIHRoaXMgbW9kdWxlIHRoYXQgY2FuIG9idGFpbmVkIHRocm91Z2ggdGhlIGdldElkZW50aXRpZXMoKVxuKiBhbmQgaXMgcGFzc2VkIGFzIHJldHVybiB2YWx1ZSBvZiB0aGUgbG9naW5XaXRoUlAgZnVuY3Rpb24uIFRoZSBtZXRob2RzIGdlbmVyYXRlQXNzZXJ0aW9uIGFuZCB2YWxpZGF0ZUFzc2VydGlvbiBoYXZlIG5vdCB5ZXQgYmVlbiBkZXZlbG9wZWQuXG4qXG4qL1xuY2xhc3MgSWRlbnRpdHlNb2R1bGUge1xuXG4gIC8qKlxuICAqIFRoaXMgaXMgdGhlIGNvbnN0cnVjdG9yIHRvIGluaXRpYWxpc2UgdGhlIElkZW50aXR5IE1vZHVsZSBpdCBkb2VzIG5vdCByZXF1aXJlIGFueSBpbnB1dC5cbiAgKi9cbiAgY29uc3RydWN0b3IocnVudGltZVVSTCwgcnVudGltZUNhcGFiaWxpdGllcywgc3RvcmFnZU1hbmFnZXIsIGRhdGFPYmplY3RzU3RvcmFnZSwgY3J5cHRvTWFuYWdlciwgcnVudGltZUNhdGFsb2d1ZSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIXJ1bnRpbWVVUkwpIHRocm93IG5ldyBFcnJvcigncnVudGltZVVSTCBpcyBtaXNzaW5nLicpO1xuICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHRocm93IG5ldyBFcnJvcignc3RvcmFnZU1hbmFnZXIgaXMgbWlzc2luZycpO1xuICAgIGlmICghY3J5cHRvTWFuYWdlcikgdGhyb3cgbmV3IEVycm9yKCdjcnlwdG9NYW5hZ2VyIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXJ1bnRpbWVDYXRhbG9ndWUpIHRocm93IG5ldyBFcnJvcigncnVudGltZUNhdGFsb2d1ZSBpcyBtaXNzaW5nJyk7XG5cbiAgICBfdGhpcy5fcnVudGltZVVSTCA9IHJ1bnRpbWVVUkw7XG5cbiAgICBfdGhpcy5fcnVudGltZUNhdGFsb2d1ZSA9IHJ1bnRpbWVDYXRhbG9ndWU7XG5cbiAgICBfdGhpcy5kYXRhT2JqZWN0c1N0b3JhZ2UgPSBkYXRhT2JqZWN0c1N0b3JhZ2U7XG4gICAgX3RoaXMuX2lkbVVSTCA9IF90aGlzLl9ydW50aW1lVVJMICsgJy9pZG0nO1xuICAgIF90aGlzLl9ndWlVUkwgPSBfdGhpcy5fcnVudGltZVVSTCArICcvaWRlbnRpdHktZ3VpJztcbiAgICBfdGhpcy5ydW50aW1lQ2FwYWJpbGl0aWVzID0gcnVudGltZUNhcGFiaWxpdGllcztcblxuICAgIF90aGlzLl9kb21haW4gPSBkaXZpZGVVUkwoX3RoaXMuX3J1bnRpbWVVUkwpLmRvbWFpbjtcblxuXG4gICAgLy90byBzdG9yZSBpdGVtcyB3aXRoIHRoaXMgZm9ybWF0OiB7aWRlbnRpdHk6IGlkZW50aXR5VVJMLCB0b2tlbjogdG9rZW5JRH1cbiAgICBfdGhpcy5faWRlbnRpdGllcyA9IG5ldyBJZGVudGl0aWVzKCdodW1hbicsIHN0b3JhZ2VNYW5hZ2VyKTtcblxuICAgIC8vIHRvIGJlIHJldmlld2VkOiB3YXRjaGluZ1lvdSBpZGVudGl0aWVzTGlzdCBvciBpZGVudGl0aWVzP1xuICAgIC8vICAgIF90aGlzLmlkZW50aXRpZXNMaXN0ID0gX3RoaXMud2F0Y2hpbmdZb3Uud2F0Y2goJ2lkZW50aXRpZXNMaXN0Jywge30sIHRydWUpO1xuICAgIF90aGlzLl9jcnlwdG8gPSBjcnlwdG9NYW5hZ2VyO1xuXG4gICAgLyogICAgX3RoaXMuZW1haWxzTGlzdCA9IFtdO1xuICAgIGxldCBuZXdJZGVudGl0eSA9IG5ldyBJZGVudGl0eSgnZ3VpZCcsICdIVU1BTicpO1xuICAgIF90aGlzLmlkZW50aXR5ID0gbmV3SWRlbnRpdHk7XG4gICAgX3RoaXMuY3VycmVudElkZW50aXR5O1xuICAgIF90aGlzLmlkZW50aXRpZXMuZGVmYXVsdElkZW50aXR5OyovXG5cbiAgICAvL3N0b3JlcyB0aGUgYXNzb2NpYXRpb24gb2YgdGhlIGRhdGFPYmplY3QgYW5kIHRoZSBIeXBlcnR5IHJlZ2lzdGVyZWQgd2l0aGluXG4gICAgX3RoaXMuZGF0YU9iamVjdHNJZGVudGl0eSA9IHt9OyAvLyBpcyB0aGlzIG5lZWRlZD9cblxuICAgIF90aGlzLl9saXN0T2ZJZHBzID0gW107XG5cbiAgICAvLyB2YXJpYWJsZSB0byBrbm93IGlmIHRoZSBHVUkgaXMgZGVwbG95ZWQgdG8gY2hvb3NlIHRoZSBpZGVudGl0eS4gaWYgdGhlIHJlYWwgR1VJIGlzIG5vdCBkZXBsb3llZCwgYSBmYWtlIGd1aSBpcyBkZXBsb3llZCBpbnN0ZWFkLlxuICAgIF90aGlzLmd1aURlcGxveWVkID0gZmFsc2U7XG5cbiAgfVxuXG4gIC8vKioqKioqKioqKioqKioqKioqKiBHRVQgQU5EIFNFVCBNRVRIT0RTICoqKioqKioqKioqKioqKioqKipcblxuICAvKipcbiAgKiByZXR1cm4gdGhlIG1lc3NhZ2VCdXMgaW4gdGhpcyBSZWdpc3RyeVxuICAqIEBwYXJhbSB7TWVzc2FnZUJ1c30gICAgICAgICAgIG1lc3NhZ2VCdXNcbiAgKi9cbiAgZ2V0IG1lc3NhZ2VCdXMoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gX3RoaXMuX21lc3NhZ2VCdXM7XG4gIH1cblxuICAvKipcbiAgKiBTZXQgdGhlIG1lc3NhZ2VCdXMgaW4gdGhpcyBSZWdpc3RyeVxuICAqIEBwYXJhbSB7TWVzc2FnZUJ1c30gICAgICAgICAgIG1lc3NhZ2VCdXNcbiAgKi9cbiAgc2V0IG1lc3NhZ2VCdXMobWVzc2FnZUJ1cykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgX3RoaXMuX21lc3NhZ2VCdXMgPSBtZXNzYWdlQnVzO1xuICAgIF90aGlzLmFkZEdVSUxpc3RlbmVycygpO1xuICB9XG5cbiAgLyoqXG4gICogcmV0dXJuIHRoZSBjb3JlRGlzY292ZXJ5IGNvbXBvbmVudFxuICAqIGRvIHdlIG5lZWQgdGhpcz8/XG4gICovXG4gIGdldCBjb3JlRGlzY292ZXJ5KCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIF90aGlzLl9jb3JlRGlzY292ZXJ5O1xuICB9XG5cbiAgLyoqXG4gICogU2V0IHRoZSBjb3JlRGlzY292ZXJ5IGNvbXBvbmVudFxuICAqIEBwYXJhbSB7Y29yZURpc2NvdmVyeX0gY29yZURpc2NvdmVyeVxuICAqL1xuICBzZXQgY29yZURpc2NvdmVyeShjb3JlRGlzY292ZXJ5KSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBfdGhpcy5fY29yZURpc2NvdmVyeSA9IGNvcmVEaXNjb3Zlcnk7XG4gIH1cblxuICAvKipcbiAgKiByZXR1cm4gdGhlIHJlZ2lzdHJ5IGluIHRoaXMgaWRNb2R1bGVcbiAgKiBAcGFyYW0ge3JlZ2lzdHJ5fSAgICAgICAgICAgcmVnaXN0cnlcbiAgKi9cbiAgZ2V0IHJlZ2lzdHJ5KCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIF90aGlzLl9yZWdpc3RyeTtcbiAgfVxuXG4gIC8qKlxuICAqIFNldCB0aGUgcmVnaXN0cnkgaW4gdGhpcyBpZE1vZHVsZVxuICAqIEBwYXJhbSB7cmVnaXN0cnl9ICAgICByZWdcbiAgKi9cbiAgc2V0IHJlZ2lzdHJ5KHJlZ2lzdHJ5KSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBfdGhpcy5fcmVnaXN0cnkgPSByZWdpc3RyeTtcbiAgfVxuXG5cbiAgLy8qKioqKioqKioqKioqKioqKioqIElERU5USVRZIFJFTEVBVEVEIE1FVEhPRFMgKioqKioqKioqKioqKioqKioqKlxuICAvKipcbiAgKiBnZXRzIGFsbCB0aGUgaW5mb3JtYXRpb24gZnJvbSBhIGdpdmVuIHVzZXJVUkxcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICB1c2VyVVJMICAgICB1c2VyIHVybFxuICAqIEByZXR1cm4ge0pTT059ICAgIGlkZW50aXR5ICAgIGlkZW50aXR5IGJ1bmRsZSBmcm9tIHRoZSB1c2VyVVJMXG4gICovXG4gIGdldElkZW50aXR5KHVzZXJVUkwpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0aWVzLmdldElkZW50aXR5KHVzZXJVUkwpO1xuICB9XG5cbiAgLyoqXG4gICogRnVuY3Rpb24gdG8gc2V0IHRoZSBjdXJyZW50IElkZW50aXR5IHdpdGggYSBnaXZlbiBJZGVudGl0eVxuICAqIEBwYXJhbSB7SWRlbnRpdHl9ICAgICAgICBpZGVudGl0eSAgICAgICAgIGlkZW50aXR5XG4gICovXG5cbiAgLyogIHNldEN1cnJlbnRJZGVudGl0eShpZGVudGl0eSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgX3RoaXMuY3VycmVudElkZW50aXR5ID0gaWRlbnRpdHk7XG4gIH0qL1xuXG4gIC8qKlxuICAqIEZ1bmN0aW9uIHRvIHJldHVybiBhbGwgdGhlIGlkZW50aXRpZXMgcmVnaXN0ZXJlZCB3aXRoaW4gYSBzZXNzaW9uIGJ5IGEgdXNlci5cbiAgKiBUaGVzZSBpZGVudGl0aWVzIGFyZSByZXR1cm5lZCBpbiBhbiBhcnJheSBjb250YWluaW5nIGEgSlNPTiBwYWNrYWdlIGZvciBlYWNoIHVzZXIgaWRlbnRpdHkuXG4gICogQHJldHVybiB7QXJyYXk8SWRlbnRpdGllcz59ICAgICAgICAgSWRlbnRpdGllc1xuICAqL1xuICBnZXQgaWRlbnRpdGllcygpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBfdGhpcy5faWRlbnRpdGllcztcbiAgfVxuXG4gIHNldCBpZGVudGl0aWVzKGlkZW50aXRpZXMpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIF90aGlzLl9pZGVudGl0aWVzID0gaWRlbnRpdGllcztcbiAgfVxuXG4gIGdldCBpZHBzKCkge1xuICAgIHJldHVybiB0aGlzLl9saXN0T2ZJZHBzO1xuICB9XG5cbiAgZ2V0SWRlbnRpdGllc1RvQ2hvb3NlKCkge1xuICAgIC8vICAgIGxldCBpZGVudGl0aWVzID0gX3RoaXMuaWRlbnRpdGllcy5pZGVudGlmaWVycztcblxuICAgIC8vIGxldCBpZHBzID0gW1xuICAgIC8vICAgeyBkb21haW46ICdnb29nbGUuY29tJywgdHlwZTogJ2lkVG9rZW4nfSxcbiAgICAvLyAgIHsgZG9tYWluOiAnbWljcm9zb2Z0LmNvbScsIHR5cGU6ICdpZFRva2VuJ30sXG4gICAgLy8gICB7IGRvbWFpbjogJ29yYW5nZS5mcicsIHR5cGU6ICdpZFRva2VuJ30sXG4gICAgLy8gICB7IGRvbWFpbjogJ3NsYWNrLmNvbScsIHR5cGU6ICdMZWdhY3knfVxuICAgIC8vIF07XG5cbiAgICAvLyB0b2RvOiByZXRyaWV2ZSBhdmFpbGFibGUgaWRwcyBmcm9tIHJ1bnRpbWUgY2F0YWxvZ3VlXG4gICAgLy8gdG9kbzogZW5hYmxlIG9hdXRoIGlkcHNcbiAgICAvLyBsZXQgaWRwcyA9IFtcbiAgICAvLyAgIHsgZG9tYWluOiAnZ29vZ2xlLmNvbScsIHR5cGU6ICdpZFRva2VuJyB9LFxuICAgIC8vICAgeyBkb21haW46ICdtaWNyb3NvZnQuY29tJywgdHlwZTogJ2lkVG9rZW4nIH0sXG4gICAgLy8gICB7IGRvbWFpbjogJ2ZhY2Vib29rLmNvbScsIHR5cGU6ICdpZFRva2VuJyB9LFxuICAgIC8vICAgeyBkb21haW46ICdzbGFjay5jb20nLCB0eXBlOiAnaWRUb2tlbicgfVxuICAgIC8vIF07XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblxuICAgICAgY29uc3QgdXJsID0gcnVudGltZUNvbmZpZ3VyYXRpb24uY2F0YWxvZ3VlVVJMcy5pZHBQcm94eS5wcmVmaXggKyB0aGlzLl9kb21haW4gKyBydW50aW1lQ29uZmlndXJhdGlvbi5jYXRhbG9ndWVVUkxzLmlkcFByb3h5LnN1ZmZpeDtcblxuICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICB0aGlzLnJ1bnRpbWVDYXBhYmlsaXRpZXMuaXNBdmFpbGFibGUoJ2Jyb3dzZXInKSxcbiAgICAgICAgdGhpcy5ydW50aW1lQ2FwYWJpbGl0aWVzLmlzQXZhaWxhYmxlKCdub2RlJyldKVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG5cbiAgICAgICAgICBjb25zdCBpc0Jyb3dzZXIgPSByZXN1bHRbMF07XG4gICAgICAgICAgY29uc3QgaXNOb2RlID0gcmVzdWx0WzFdO1xuXG4gICAgICAgICAgY29uc3QgY29uc3RyYWludHMgPSB7IGNvbnN0cmFpbnRzOiB7fSB9O1xuICAgICAgICAgIGNvbnN0cmFpbnRzLmNvbnN0cmFpbnRzLm5vZGUgPSBpc05vZGU7XG4gICAgICAgICAgY29uc3RyYWludHMuY29uc3RyYWludHMuYnJvd3NlciA9IGlzQnJvd3NlcjtcblxuICAgICAgICAgIHRoaXMuX3J1bnRpbWVDYXRhbG9ndWUuZ2V0VHlwZUxpc3QodXJsLCBjb25zdHJhaW50cykudGhlbigoaWRwcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGlzdE9mSWRwcyA9IGlkcHMubWFwKGtleSA9PiB7IHJldHVybiB7ZG9tYWluOiBrZXksIHR5cGU6ICdpZFRva2VuJ307IH0pO1xuICAgICAgICAgICAgbG9nLmluZm8oJ1tJZGVudGl0eU1vZHVsZS5nZXRJZGVudGl0eUFzc2VydGlvbjpnZXRJZGVudGl0aWVzVG9DaG9vc2VdJywgaWRwcywgbGlzdE9mSWRwcyk7XG4gICAgICAgICAgICB0aGlzLl9saXN0T2ZJZHBzID0gbGlzdE9mSWRwcztcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHsgZGVmYXVsdElkZW50aXR5OiB0aGlzLmlkZW50aXRpZXMuZGVmYXVsdElkZW50aXR5LCBpZGVudGl0aWVzOiB0aGlzLmlkZW50aXRpZXMuaWRlbnRpdGllcywgaWRwczogbGlzdE9mSWRwcyB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICB9KTtcblxuICAgIH0pO1xuXG4gIH1cblxuICAvKipcbiAgKiBGdW5jdGlvbiB0byByZXR1cm4gdGhlIHNlbGVjdGVkIElkZW50aXR5IHdpdGhpbiBhIHNlc3Npb25cbiAgKiBAcmV0dXJuIHtJZGVudGl0eX0gICAgICAgIGlkZW50aXR5ICAgICAgICAgaWRlbnRpdHlcbiAgKi9cbiAgLyogIGdldEN1cnJlbnRJZGVudGl0eSgpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBfdGhpcy5jdXJyZW50SWRlbnRpdHk7XG4gIH0qL1xuXG4gIGluaXQoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIF90aGlzLl9pZGVudGl0aWVzLmxvYWRJZGVudGl0aWVzKCkudGhlbigoKSA9PiB7XG5cbiAgICAgICAgX3RoaXMuX2NyeXB0by5nZXRNeVB1YmxpY0tleSgpLnRoZW4oKGtleSkgPT4ge1xuICAgICAgICAgIGxldCBoYXNoID0gX3RoaXMuX2NyeXB0by5jcnlwdG8uX3NoYTI1NihzdHJpbmdpZnkoa2V5KSkudGhlbigoaGFzaCkgPT4ge1xuXG4gICAgICAgICAgICBsZXQgZ3VpZCA9ICd1c2VyLWd1aWQ6Ly8nICsgaGFzaDtcbiAgICAgICAgICAgIF90aGlzLmlkZW50aXRpZXMuZ3VpZCA9IGd1aWQ7XG4gICAgICAgICAgICBfdGhpcy5faWRlbnRpdGllcy5sb2FkQWNjZXNzVG9rZW5zKCkudGhlbigoKSA9PiB7XG5cbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiAge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1tJZGVudGl0eU1vZHVsZV0gZXJyb3InLCBlcnJvcik7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgfSk7XG5cbiAgICAgIH0pO1xuXG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICAqIEZ1bmN0aW9uIHRoYXQgZmV0Y2ggYW4gaWRlbnRpdHlBc3NlcnRpb24gZnJvbSBhIHVzZXIuXG4gICpcbiAgKiBAcmV0dXJuIHtJZEFzc2VydGlvbn0gICAgICAgICAgICAgIElkQXNzZXJ0aW9uXG4gICovXG4gIGdldElkZW50aXR5QXNzZXJ0aW9uKGlkZW50aXR5QnVuZGxlKSB7XG4gICAgbG9nLmxvZygnW0lkZW50aXR5TW9kdWxlLmdldElkZW50aXR5QXNzZXJ0aW9uOmlkZW50aXR5QnVuZGxlXScsIGlkZW50aXR5QnVuZGxlKTtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICAvL0NIRUNLIHdoZXRoZXIgaXMgYnJvd3NlciBlbnZpcm9ubWVudCBvciBub2RlanNcbiAgICAgIC8vaWYgaXQgaXMgYnJvd3NlciwgdGhlbiBjcmVhdGUgYSBmYWtlIGlkZW50aXR5XG5cbiAgICAgIF90aGlzLnJ1bnRpbWVDYXBhYmlsaXRpZXMuaXNBdmFpbGFibGUoJ2Jyb3dzZXInKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgbG9nLmxvZygncnVudGltZSBicm93c2VyIGlkZW50aXR5IGFjcXVpc2l0aW9uJywgcmVzdWx0KTtcblxuICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuO1xuXG4gICAgICAgIC8vdG9kbzogb25seSBpZHAgc2hvdWxkIGJlIG1hbmRhdG9yeSB3aGVuIGlkZW50aXR5QnVuZGxlIGV4aXN0c1xuXG4gICAgICAgIGlmIChpZGVudGl0eUJ1bmRsZSAmJlxuICAgICAgICAgIGlkZW50aXR5QnVuZGxlLmhhc093blByb3BlcnR5KCdpZHAnKSkge1xuXG4gICAgICAgICAgbGV0IGlkcCA9IGlkZW50aXR5QnVuZGxlLmlkcDtcbiAgICAgICAgICBsZXQgb3JpZ2luID0gaWRlbnRpdHlCdW5kbGUuaGFzT3duUHJvcGVydHkoJ29yaWdpbicpID8gaWRlbnRpdHlCdW5kbGUub3JpZ2luIDogJ29yaWdpbic7XG4gICAgICAgICAgbGV0IGlkSGludCA9IGlkZW50aXR5QnVuZGxlLmhhc093blByb3BlcnR5KCdpZEhpbnQnKSA/IGlkZW50aXR5QnVuZGxlLmlkSGludCA6ICcnO1xuXG4gICAgICAgICAgX3RoaXMuc2VsZWN0SWRlbnRpdHlGb3JIeXBlcnR5KG9yaWdpbiwgaWRwLCBpZEhpbnQpLnRoZW4oKGFzc2VydGlvbikgPT4ge1xuICAgICAgICAgICAgbG9nLmxvZygnW0lkZW50aXR5TW9kdWxlXSBJZGVudGl0eSBzZWxlY3RlZCBieSBoeXBlcnR5LicpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoYXNzZXJ0aW9uKTtcbiAgICAgICAgICB9LCAoZXJyKSA9PiB7IC8vIGlmIGl0IGdvdCBhbiBlcnJvciB0aGVuIGp1c3Qgc2VsZWN0IGlkZW50aXR5IGZyb20gR1VJXG4gICAgICAgICAgICBsb2cuZXJyb3IoJ1tJZGVudGl0eU1vZHVsZV0gQ291bGQgbm90IHNlbGVjdCBpZGVudGl0eSBmcm9tIGh5cGVydHk6JywgZXJyKTtcbiAgICAgICAgICAgIF90aGlzLnNlbGVjdElkZW50aXR5RnJvbUdVSSgpLnRoZW4oKG5ld0Fzc2VydGlvbikgPT4ge1xuICAgICAgICAgICAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGVdIElkZW50aXR5IHNlbGVjdGVkIGJ5IGh5cGVydHkuJyk7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKG5ld0Fzc2VydGlvbik7XG4gICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgaWYgKF90aGlzLmlkZW50aXRpZXMuZGVmYXVsdElkZW50aXR5ICYmIF90aGlzLmlkZW50aXRpZXMuZGVmYXVsdElkZW50aXR5LmV4cGlyZXMgPiBzZWNvbmRzU2luY2VFcG9jaCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShfdGhpcy5pZGVudGl0aWVzLmRlZmF1bHRJZGVudGl0eSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzLnNlbGVjdElkZW50aXR5RnJvbUdVSSgpLnRoZW4oKGFzc2VydGlvbikgPT4ge1xuXG4gICAgICAgICAgICAgIGxvZy5sb2coJ1tJZGVudGl0eU1vZHVsZV0gSWRlbnRpdHkgc2VsZWN0ZWQgZnJvbSBHVUkuJyk7XG5cbiAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICBfdGhpcy5pZGVudGl0aWVzLmRlZmF1bHRJZGVudGl0eSA9IGFzc2VydGlvbi51c2VyUHJvZmlsZS51c2VyVVJMO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKGFzc2VydGlvbik7XG4gICAgICAgICAgICAgIH0qL1xuXG4gICAgICAgICAgICAgIF90aGlzLmlkZW50aXRpZXMuZGVmYXVsdElkZW50aXR5ID0gYXNzZXJ0aW9uLnVzZXJQcm9maWxlLnVzZXJVUkw7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKGFzc2VydGlvbik7XG5cbiAgICAgICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGxvZy5lcnJvcignRXJyb3Igb24gaWRlbnRpdHkgYWNxdWlzaXRpb24gJywgZXJyb3IpO1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuXG4gICAgICBfdGhpcy5ydW50aW1lQ2FwYWJpbGl0aWVzLmlzQXZhaWxhYmxlKCdub2RlJykudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIGxvZy5sb2coJ25vZGUgaWRlbnRpdHkgYWNxdWlzaXRpb24nLCByZXN1bHQpO1xuXG4gICAgICAgIGlmICghcmVzdWx0KSByZXR1cm47XG5cbiAgICAgICAgaWYgKF90aGlzLmlkZW50aXRpZXMuY3VycmVudElkZW50aXR5KSB7XG4gICAgICAgICAgLy9UT0RPIHZlcmlmeSB3aGV0aGVyIHRoZSB0b2tlbiBpcyBzdGlsbCB2YWxpZCBvciBub3QuXG4gICAgICAgICAgLy8gc2hvdWxkIGJlIG5lZWRlZCB0byBtYWtlIGZ1cnRoZXIgcmVxdWVzdHMsIHRvIG9idGFpbiBhIHZhbGlkIHRva2VuXG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoX3RoaXMuaWRlbnRpdGllcy5jdXJyZW50SWRlbnRpdHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZy5sb2coJ2dldElkZW50aXR5QXNzZXJ0aW9uIGZvciBub2RlanMnKTtcblxuICAgICAgICAgIGxldCBpZHAgPSB7IHR5cGU6ICdpZHAnLCB2YWx1ZTogJ25vZGVqcy1pZHAnLCBjb2RlOiAyMDAsIGF1dGg6IGZhbHNlIH07XG4gICAgICAgICAgX3RoaXMuY2FsbE5vZGVKc0dlbmVyYXRlTWV0aG9kcyhpZHAudmFsdWUsICdvcmlnaW4nKS50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBsb2cuZXJyb3IoJ0Vycm9yIG9uIGlkZW50aXR5IGFjcXVpc2l0aW9uICcsIGVycm9yKTtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cblxuICAvKipcbiAgKiBGdW5jdGlvbiB0byByZXR1cm4gYWxsIHRoZSB1c2VycyBVUkxzIHJlZ2lzdGVyZWQgd2l0aGluIGEgc2Vzc2lvblxuICAqIFRoZXNlIHVzZXJzIFVSTHMgYXJlIHJldHVybmVkIGluIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gICogQHJldHVybiB7QXJyYXk8U3RyaW5nPn0gICAgICAgICB1c2Vyc1xuICAqL1xuICBnZXRVc2Vyc0lEcygpIHtcbiAgICAvKiAgbG9nLmxvZygnW2dldFVzZXJzSURzOmVtYWlsRm9ybWF0XScsIGVtYWlsRm9ybWF0KTtcbiAgICAgIGxvZy5sb2coJ2dldFVzZXJzSURzOmVtYWlsRm9ybWF0JywgZW1haWxGb3JtYXQpO1xuICAgICAgbGV0IF90aGlzID0gdGhpcztcbiAgICAgIGxldCB1c2VycyA9IFtdOyovXG5cbiAgICAvL2lmIHJlcXVlc3QgY29tZXMgd2l0aCB0aGUgZW1haWxGb3JtYXQgb3B0aW9uLCB0aGVuIGNvbnZlcnQgdXJsIHRvIGVtYWlsIGZvcm1hdFxuICAgIC8qICAgIGxldCBjb252ZXJ0ZXIgPSAoZW1haWxGb3JtYXQpID8gZ2V0VXNlckVtYWlsRnJvbVVSTCA6ICh2YWx1ZSkgPT4geyByZXR1cm4gdmFsdWU7IH07XG5cbiAgICBmb3IgKGxldCBpbmRleCBpbiBfdGhpcy5pZGVudGl0aWVzKSB7XG4gICAgICBsZXQgaWRlbnRpdHkgPSBfdGhpcy5pZGVudGl0aWVzW2luZGV4XTtcbiAgICAgIHVzZXJzLnB1c2goY29udmVydGVyKGlkZW50aXR5LmlkZW50aXR5KSk7XG4gICAgfSovXG5cbiAgICByZXR1cm4gdGhpcy5pZGVudGl0aWVzLmlkZW50aWZpZXJzO1xuICB9XG5cbiAgLyoqXG4gICogRnVuY3Rpb24gdG8gcmVtb3ZlIGFuIGlkZW50aXR5XG4gICogQHBhcmFtIHtTdHJpbmd9ICAgIHVzZXJVUkwgICAgICB1c2VyVVJMXG4gICogQHJldHVybiB7UHJvbWlzZX1cbiAgKi9cblxuICBkZWxldGVJZGVudGl0eSh1c2VyVVJMKSB7XG5cbiAgICByZXR1cm4gdGhpcy5pZGVudGl0aWVzLnJlbW92ZUlkZW50aXR5KHVzZXJVUkwpO1xuXG4gIH1cblxuICAvKipcbiAgKiBGdW5jdGlvbiB0byB1bnJlZ2lzdGVyIGFuIGlkZW50aXR5IGZyb20gdGhlIGVtYWlsc0xpc3QgYXJyYXkgYW5kIG5vdCBzaG93IGluIHRvIHRoZSBHVUlcbiAgKiBAcGFyYW0ge1N0cmluZ30gICAgZW1haWwgICAgICBlbWFpbFxuICAqL1xuICAvKiAgdW5yZWdpc3RlcklkZW50aXR5KGVtYWlsKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGZvciAobGV0IGUgaW4gX3RoaXMuZW1haWxzTGlzdCkge1xuICAgICAgaWYgKF90aGlzLmVtYWlsc0xpc3RbZV0gPT09IGVtYWlsKSB7XG4gICAgICAgIF90aGlzLmVtYWlsc0xpc3Quc3BsaWNlKGUsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfSovXG5cbiAgLyoqXG4gICogRnVuY3Rpb24gdGhhdCBzZW5kcyBhIHJlcXVlc3QgdG8gdGhlIEdVSSB1c2luZyBtZXNzYWdlcy4gU2VuZHMgYWxsIGlkZW50aXRpZXMgcmVnaXN0ZXJlZCBhbmRcbiAgKiB0aGUgSWRwcyBzdXBwb3J0ZWQsIGFuZCByZXR1cm4gdGhlIGlkZW50aXR5L2lkcCByZWNlaXZlZCBieSB0aGUgR1VJXG4gICogQHBhcmFtIHtBcnJheTxpZGVudGl0eT59ICBpZGVudGl0aWVzICAgICAgbGlzdCBvZiBpZGVudGl0aWllc1xuICAqIEBwYXJhbSB7QXJyYXk8U3RyaW5nPn0gICAgaWRwcyAgICAgICAgICAgIGxpc3Qgb2YgaWRwcyB0byBhdXRoZW50aWNhdGVcbiAgKiBAcmV0dXJuIHtQcm9taXNlfSAgICAgICAgIHJldHVybnMgYSBjaG9zZW4gaWRlbnRpdHkgb3IgaWRwXG4gICovXG4gIHJlcXVlc3RJZGVudGl0eVRvR1VJKGlkZW50aXRpZXMsIGlkcHMpIHtcbiAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGUucmVxdWVzdElkZW50aXR5VG9HVUk6aWRlbnRpdGllc10nLCBpZGVudGl0aWVzKTtcbiAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGUucmVxdWVzdElkZW50aXR5VG9HVUk6aWRwc10nLCBpZHBzKTtcblxuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICAvL2NvbmRpdGlvbiB0byBjaGVjayBpZiB0aGUgcmVhbCBHVUkgaXMgZGVwbG95ZWQuIElmIG5vdCwgZGVwbG95cyBhIGZha2UgZ3VpXG4gICAgICBpZiAoX3RoaXMuZ3VpRGVwbG95ZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIGxldCBndWlGYWtlVVJMID0gX3RoaXMuX2d1aVVSTDtcbiAgICAgICAgbGV0IGd1aUZha2UgPSBuZXcgR3VpRmFrZShndWlGYWtlVVJMLCBfdGhpcy5fbWVzc2FnZUJ1cyk7XG4gICAgICAgIF90aGlzLmd1aUZha2UgPSBndWlGYWtlO1xuICAgICAgICBfdGhpcy5ndWlEZXBsb3llZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGxldCBtZXNzYWdlID0ge1xuICAgICAgICB0eXBlOiAnY3JlYXRlJywgdG86IF90aGlzLl9ndWlVUkwsIGZyb206IF90aGlzLl9pZG1VUkwsXG4gICAgICAgIGJvZHk6IHsgdmFsdWU6IHsgaWRlbnRpdGllczogaWRlbnRpdGllcywgaWRwczogaWRwcyB9IH1cbiAgICAgIH07XG5cbiAgICAgIGxldCBjYWxsYmFjayA9IG1zZyA9PiB7XG4gICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnJlbW92ZVJlc3BvbnNlTGlzdGVuZXIoX3RoaXMuX2lkbVVSTCwgbXNnLmlkKTtcblxuXG4gICAgICAgIC8vIHRvZG86IHRvIHJldHVybiB0aGUgdXNlciBVUkwgYW5kIG5vdCB0aGUgZW1haWwgb3IgaWRlbnRpZmllclxuXG4gICAgICAgIGlmIChtc2cuYm9keS5jb2RlID09PSAyMDApIHtcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRJZGVudGl0eSA9IG1zZy5ib2R5O1xuXG4gICAgICAgICAgbG9nLmxvZygnc2VsZWN0ZWRJZGVudGl0eTogJywgc2VsZWN0ZWRJZGVudGl0eS52YWx1ZSk7XG4gICAgICAgICAgcmVzb2x2ZShzZWxlY3RlZElkZW50aXR5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QoJ2Vycm9yIG9uIHJlcXVlc3RpbmcgYW4gaWRlbnRpdHkgdG8gdGhlIEdVSScpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICAvL3Bvc3RNZXNzYWdlIHdpdGggY2FsbGJhY2sgYnV0IHdpdGhvdXQgdGltZW91dFxuICAgICAgdHJ5IHtcbiAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobWVzc2FnZSwgY2FsbGJhY2ssIGZhbHNlKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZWplY3QoJ0luIG1ldGhvZCBjYWxsSWRlbnRpdHlNb2R1bGVGdW5jIGVycm9yOiAnICsgZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNhbGxOb2RlSnNHZW5lcmF0ZU1ldGhvZHMoaWRwLCBvcmlnaW4pIHtcbiAgICBsb2cubG9nKCdbY2FsbE5vZGVKc0dlbmVyYXRlTWV0aG9kczppZHBdJywgaWRwKTtcbiAgICBsb2cubG9nKCdbY2FsbE5vZGVKc0dlbmVyYXRlTWV0aG9kczpvcmlnaW5dJywgb3JpZ2luKTtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vZGVidWdnZXI7XG4gICAgICBsZXQgcHVibGljS2V5O1xuXG4gICAgICAvL2xldCBrZXlQYWlyID0gbm9kZUpTS2V5UGFpclBvcHVsYXRlO1xuXG4gICAgICAvL2dlbmVyYXRlcyB0aGUgUlNBIGtleSBwYWlyXG4gICAgICBfdGhpcy5fY3J5cHRvLmdldE15UHVibGljS2V5KCkudGhlbihmdW5jdGlvbihrZXkpIHtcblxuICAgICAgICBsb2cubG9nKCdbY2FsbE5vZGVKc0dlbmVyYXRlTWV0aG9kczprZXldJywga2V5KTtcblxuICAgICAgICBwdWJsaWNLZXkgPSBzdHJpbmdpZnkoa2V5KTtcblxuICAgICAgICBsb2cubG9nKCdbY2FsbE5vZGVKc0dlbmVyYXRlTWV0aG9kc10gTk9fVVJMJyk7XG5cbiAgICAgICAgcmV0dXJuIF90aGlzLmdlbmVyYXRlQXNzZXJ0aW9uKHB1YmxpY0tleSwgb3JpZ2luLCAndXJsJywgaWRwKTtcblxuICAgICAgfSkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QoJ0Vycm9yIG9uIG9idGFpbmluZyBJZGVudGl0eScpO1xuICAgICAgICB9XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgbG9nLmxvZyhlcnIpO1xuICAgICAgICByZWplY3QoZXJyKTtcblxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjYWxsR2VuZXJhdGVNZXRob2RzKGlkcCwgb3JpZ2luKSB7XG4gICAgbG9nLmxvZygnW2NhbGxHZW5lcmF0ZU1ldGhvZHM6aWRwXScsIGlkcCk7XG4gICAgbG9nLmxvZygnW2NhbGxHZW5lcmF0ZU1ldGhvZHM6b3JpZ2luXScsIG9yaWdpbik7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgIGxldCBwdWJsaWNLZXk7XG5cbiAgICAgIC8vZ2VuZXJhdGVzIHRoZSBSU0Ega2V5IHBhaXJcbiAgICAgIF90aGlzLl9jcnlwdG8uZ2V0TXlQdWJsaWNLZXkoKS50aGVuKGZ1bmN0aW9uKGtleSkge1xuXG4gICAgICAgIGxvZy5sb2coJ1tjYWxsTm9kZUpzR2VuZXJhdGVNZXRob2RzOmtleV0nLCBrZXkpO1xuXG4gICAgICAgIHB1YmxpY0tleSA9IHN0cmluZ2lmeShrZXkpO1xuXG4gICAgICAgIC8vICAgICAgICB1c2Vya2V5UGFpciA9IGtleVBhaXI7XG4gICAgICAgIGxvZy5sb2coJ2dlbmVyYXRlQXNzZXJ0aW9uOm5vX2hpbnQnKTtcbiAgICAgICAgcmV0dXJuIF90aGlzLmdlbmVyYXRlQXNzZXJ0aW9uKHB1YmxpY0tleSwgb3JpZ2luLCAnJywgaWRwKTtcblxuICAgICAgfSkudGhlbihmdW5jdGlvbih1cmwpIHtcbiAgICAgICAgX3RoaXMubXlIaW50ID0gdXJsO1xuICAgICAgICBsb2cubG9nKCdnZW5lcmF0ZUFzc2VydGlvbjpoaW50Jyk7XG4gICAgICAgIHJldHVybiBfdGhpcy5nZW5lcmF0ZUFzc2VydGlvbihwdWJsaWNLZXksIG9yaWdpbiwgdXJsLCBpZHApO1xuXG4gICAgICB9KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdCgnRXJyb3Igb24gb2J0YWluaW5nIElkZW50aXR5Jyk7XG4gICAgICAgIH1cbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICBsb2cuZXJyb3IoZXJyKTtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG5cbiAgbG9naW5TZWxlY3RlZElkZW50aXR5KHB1YmxpY0tleSwgb3JpZ2luLCBpZHAsIGxvZ2luVXJsKSB7XG4gICAgbG9nLmxvZygnW2xvZ2luU2VsZWN0ZWRJZGVudGl0eTpwdWJsaWNLZXldJywgcHVibGljS2V5KTtcbiAgICBsb2cubG9nKCdbbG9naW5TZWxlY3RlZElkZW50aXR5Om9yaWdpbl0nLCBvcmlnaW4pO1xuICAgIGxvZy5sb2coJ1tsb2dpblNlbGVjdGVkSWRlbnRpdHk6aWRwXScsIGlkcCk7XG5cbiAgICAvLyAgICBsb2cubG9nKCdbbG9naW5TZWxlY3RlZElkZW50aXR5OmtleVBhaXJdJywga2V5UGFpcik7XG4gICAgbG9nLmxvZygnW2xvZ2luU2VsZWN0ZWRJZGVudGl0eTpsb2dpblVybF0nLCBsb2dpblVybCk7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGVdIG9wZW5Qb3B1cCcpO1xuICAgICAgX3RoaXMuY2FsbElkZW50aXR5TW9kdWxlRnVuYygnb3BlblBvcHVwJywgeyB1cmxyZWNlaXZlZDogbG9naW5VcmwgfSkudGhlbigoaWRDb2RlKSA9PiB7XG4gICAgICAgIHJldHVybiBpZENvZGU7XG4gICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgIGxvZy5lcnJvcignRXJyb3Igd2hpbGUgbG9nZ2luZyBpbiBmb3IgdGhlIHNlbGVjdGVkIGlkZW50aXR5LicpO1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICB9KS50aGVuKChpZENvZGUpID0+IHtcbiAgICAgICAgX3RoaXMuc2VuZEdlbmVyYXRlTWVzc2FnZShwdWJsaWNLZXksIG9yaWdpbiwgaWRDb2RlLCBpZHApLnRoZW4oKG5ld1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKG5ld1Jlc3BvbnNlLmhhc093blByb3BlcnR5KCdhc3NlcnRpb24nKSkge1xuICAgICAgICAgICAgX3RoaXMuaWRlbnRpdGllcy5hZGRBc3NlcnRpb24obmV3UmVzcG9uc2UpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSgnTG9naW4gd2FzIHN1Y2Nlc3NmdWxsJyk7XG4gICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4geyByZWplY3QoJ0xvZ2luIGhhcyBmYWlsZWQ6JyArIGVycik7IH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2cuZXJyb3IoJ0Vycm9yIHdoaWxlIGxvZ2dpbmcgaW4gZm9yIHRoZSBzZWxlY3RlZCBpZGVudGl0eS4nKTtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBhIHZhbGlkIGFzc2VydGlvbiBmb3Igc2VsZWN0ZWQgaWRlbnRpdHkuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaChlcnIgPT4geyByZWplY3QoJ09uIGxvZ2luU2VsZWN0ZWRJZGVudGl0eSBmcm9tIG1ldGhvZCBzZW5kR2VuZXJhdGVNZXNzYWdlIGVycm9yOiAgJyArIGVycik7IH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuXG4gIHNlbGVjdElkZW50aXR5Rm9ySHlwZXJ0eShvcmlnaW4sIGlkcCwgaWRIaW50KSB7XG4gICAgbG9nLmxvZygnW3NlbGVjdElkZW50aXR5Rm9ySHlwZXJ0eTpvcmlnaW5dJywgb3JpZ2luKTtcbiAgICBsb2cubG9nKCdbc2VsZWN0SWRlbnRpdHlGb3JIeXBlcnR5OmlkcF0nLCBpZHApO1xuICAgIGxvZy5sb2coJ1tzZWxlY3RJZGVudGl0eUZvckh5cGVydHk6aWRIaW50XScsIGlkSGludCk7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgIC8vZ2VuZXJhdGVzIHRoZSBSU0Ega2V5IHBhaXJcbiAgICAgIF90aGlzLl9jcnlwdG8uZ2V0TXlQdWJsaWNLZXkoKS50aGVuKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBsZXQgcHVibGljS2V5ID0gc3RyaW5naWZ5KGtleSk7XG5cbiAgICAgICAgX3RoaXMuc2VuZEdlbmVyYXRlTWVzc2FnZShwdWJsaWNLZXksIG9yaWdpbiwgaWRIaW50LCBpZHApLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmhhc093blByb3BlcnR5KCdhc3NlcnRpb24nKSkgeyAvLyBpZGVudGl0eSB3YXMgbG9nZ2VkIGluLCBqdXN0IHNhdmUgaXRcbiAgICAgICAgICAgIF90aGlzLmlkZW50aXRpZXMuYWRkQXNzZXJ0aW9uKHJlc3BvbnNlKS50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoJ2xvZ2luVXJsJykpIHsgLy8gaWRlbnRpdHkgd2FzIG5vdCBsb2dnZWQgaW5cbiAgICAgICAgICAgIF90aGlzLmxvZ2luU2VsZWN0ZWRJZGVudGl0eShwdWJsaWNLZXksIG9yaWdpbiwgaWRwLCByZXNwb25zZS5sb2dpblVybCkudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodmFsdWUpO1xuICAgICAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgeyAvLyB5b3Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBpZiB5b3UgZG8gdGhlbiB0aGUgSWRQIFByb3h5IGlzIG5vdCB3ZWxsIGltcGxlbWVudGVkXG4gICAgICAgICAgICAvLyBsb2cuZXJyb3IoJ0dlbmVyYXRlQXNzZXJ0aW9uIHJldHVybmVkIGludmFsaWQgcmVzcG9uc2UuJyk7XG4gICAgICAgICAgICBsb2cubG9nKCdQcm9jZWVkaW5nIGJ5IGxvZ2dpbmcgaW4uJyk7XG4gICAgICAgICAgICBfdGhpcy5jYWxsR2VuZXJhdGVNZXRob2RzKGlkcCwgb3JpZ2luKS50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHsgcmVqZWN0KCdPbiBzZWxlY3RJZGVudGl0eUZvckh5cGVydHkgZnJvbSBtZXRob2Qgc2VuZEdlbmVyYXRlTWVzc2FnZSBlcnJvcjogICcgKyBlcnIpOyB9KTtcbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnT24gc2VsZWN0SWRlbnRpdHlGb3JIeXBlcnR5IGZyb20gbWV0aG9kIGdlbmVyYXRlUlNBS2V5UGFpciBlcnJvcjogICcgKyBlcnIpOyB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHNlbGVjdElkZW50aXR5RnJvbUdVSShvcmlnaW4pIHtcbiAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGUuc2VsZWN0SWRlbnRpdHlGcm9tR1VJOm9yaWdpbl0nLCBvcmlnaW4pO1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICB0aGlzLmdldElkZW50aXRpZXNUb0Nob29zZSgpLnRoZW4oKGlkZW50aXRpZXNJbmZvKSA9PiB7XG4gICAgICAgIHJldHVybiBfdGhpcy5yZXF1ZXN0SWRlbnRpdHlUb0dVSShpZGVudGl0aWVzSW5mby5pZGVudGl0aWVzLCBpZGVudGl0aWVzSW5mby5pZHBzKTtcbiAgICAgIH0pLnRoZW4odmFsdWUgPT4ge1xuXG4gICAgICAgIGlmICh2YWx1ZS50eXBlID09PSAnaWRlbnRpdHknKSB7XG5cbiAgICAgICAgICAvLyAgbGV0IGNob3NlbklEID0gZ2V0VXNlclVSTEZyb21FbWFpbCh2YWx1ZS52YWx1ZSk7XG4gICAgICAgICAgLy8gaGFjayB3aGlsZSB0aGUgdXNlciB1cmwgaXMgbm90IHJldHVybmVkIGZyb20gcmVxdWVzdElkZW50aXR5VG9HVUk7XG5cbiAgICAgICAgICAvKiAgICAgICAgICBsZXQgY2hvc2VuSUQgPSAndXNlcjovLycgKyBfdGhpcy5pZGVudGl0aWVzLmN1cnJlbnRJZGVudGl0eS5pZHAuZG9tYWluICsgJy8nICsgdmFsdWUudmFsdWU7XG5cbiAgICAgICAgICBfdGhpcy5pZGVudGl0aWVzLmRlZmF1bHRJZGVudGl0eSA9IF90aGlzLmlkZW50aXRpZXMuY3VycmVudElkZW50aXR5OyovXG5cbiAgICAgICAgICAvLyByZXR1cm5zIHRoZSBpZGVudGl0eSBpbmZvIGZyb20gdGhlIGNob3NlbiBpZFxuICAgICAgICAgIC8vICAgICAgICAgIGlmIChfdGhpcy5pZGVudGl0aWVzLmN1cnJlbnRJZGVudGl0eSkgcmVzb2x2ZShfdGhpcy5pZGVudGl0aWVzLmN1cnJlbnRJZGVudGl0eS5hc3NlcnRpb24pO1xuICAgICAgICAgIGlmIChfdGhpcy5pZGVudGl0aWVzLmlkZW50aXRpZXNbdmFsdWUudmFsdWVdKSByZXNvbHZlKF90aGlzLmlkZW50aXRpZXMuaWRlbnRpdGllc1t2YWx1ZS52YWx1ZV0pO1xuICAgICAgICAgIGVsc2UgcmVqZWN0KCdbSWRlbnRpdHlNb2R1bGUuc2VsZWN0SWRlbnRpdHlGcm9tR1VJXSBpZGVudGl0eSBub3QgZm91bmQ6ICcsIHZhbHVlLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS50eXBlID09PSAnaWRwJykge1xuXG4gICAgICAgICAgX3RoaXMuY2FsbEdlbmVyYXRlTWV0aG9kcyh2YWx1ZS52YWx1ZSwgb3JpZ2luKS50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodmFsdWUpO1xuICAgICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZWplY3QoJ2Vycm9yIG9uIEdVSSByZWNlaXZlZCBtZXNzYWdlLicpO1xuICAgICAgICB9XG4gICAgICB9KS5jYXRjaChlcnIgPT4geyByZWplY3QoJ09uIHNlbGVjdElkZW50aXR5RnJvbUdVSSBmcm9tIG1ldGhvZCByZXF1ZXN0SWRlbnRpdHlUb0dVSSBlcnJvcjogICcgKyBlcnIpOyB9KTtcbiAgICB9KTtcbiAgfVxuXG5cbiAgY2FsbElkZW50aXR5TW9kdWxlRnVuYyhtZXRob2ROYW1lLCBwYXJhbWV0ZXJzKSB7XG4gICAgbG9nLmxvZygnW2NhbGxJZGVudGl0eU1vZHVsZUZ1bmM6bWV0aG9kTmFtZV0nLCBtZXRob2ROYW1lKTtcbiAgICBsb2cubG9nKCdbY2FsbElkZW50aXR5TW9kdWxlRnVuYzpwYXJhbWV0ZXJzXScsIHBhcmFtZXRlcnMpO1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IG1lc3NhZ2UgPSB7XG4gICAgICAgIHR5cGU6ICdleGVjdXRlJywgdG86IF90aGlzLl9ndWlVUkwsIGZyb206IF90aGlzLl9pZG1VUkwsXG4gICAgICAgIGJvZHk6IHsgcmVzb3VyY2U6ICdpZGVudGl0eScsIG1ldGhvZDogbWV0aG9kTmFtZSwgcGFyYW1zOiBwYXJhbWV0ZXJzIH1cbiAgICAgIH07XG5cbiAgICAgIC8vcG9zdCBtc2cgd2l0aCBjYWxsYmFjayBidXQgd2l0aG91dCB0aW1vdXRcbiAgICAgIGxldCBjYWxsYmFjayA9IG1zZyA9PiB7XG4gICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnJlbW92ZVJlc3BvbnNlTGlzdGVuZXIoX3RoaXMuX2lkbVVSTCwgbXNnLmlkKTtcbiAgICAgICAgbGV0IHJlc3VsdCA9IG1zZy5ib2R5LnZhbHVlO1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9O1xuICAgICAgdHJ5IHtcblxuICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCBjYWxsYmFjaywgZmFsc2UpO1xuXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KCdJbiBtZXRob2QgY2FsbElkZW50aXR5TW9kdWxlRnVuYyBlcnJvcjogJyArIGVycik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyoqKioqKioqKioqKioqKioqKiogVE9LRU4gTUVUSE9EUyAqKioqKioqKioqKioqKioqKioqXG4gIC8qKlxuICAqIGdldCBhIFRva2VuIHRvIGJlIGFkZGVkIHRvIGEgbWVzc2FnZVxuICAqIEBwYXJhbSAge1N0cmluZ30gIGZyb21VUkwgICAgIG9yaWdpbiBvZiB0aGUgbWVzc2FnZVxuICAqIEBwYXJhbSAge1N0cmluZ30gIHRvVVJMICAgICB0YXJnZXQgb2YgdGhlIG1lc3NhZ2Vva1xuICAqIEByZXR1cm4ge0pTT059ICAgIHRva2VuICAgIHRva2VuIHRvIGJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlXG4gICovXG4gIGdldFRva2VuKG1zZykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgbGV0IGZyb21VUkwgPSBtc2cuZnJvbTtcbiAgICBsZXQgdG9VcmwgPSBtc2cudG87XG4gICAgaWYgKG1zZy5oYXNPd25Qcm9wZXJ0eSgnYm9keScpICYmIG1zZy5ib2R5Lmhhc093blByb3BlcnR5KCdzb3VyY2UnKSkge1xuICAgICAgZnJvbVVSTCA9IG1zZy5ib2R5LnNvdXJjZTtcbiAgICB9XG5cbiAgICBpZiAobXNnLnR5cGUgPT09ICdmb3J3YXJkJykge1xuICAgICAgZnJvbVVSTCA9IG1zZy5ib2R5LmZyb207XG4gICAgfVxuXG4gICAgaWYgKG1zZy5oYXNPd25Qcm9wZXJ0eSgnYm9keScpICYmIG1zZy5ib2R5Lmhhc093blByb3BlcnR5KCdzdWJzY3JpYmVyJykpIHtcbiAgICAgIGZyb21VUkwgPSBtc2cuYm9keS5zdWJzY3JpYmVyO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGxvZy5sb2coJ1tJZGVudGl0eU1vZHVsZS5nZXRUb2tlbl0gZm9yIG1zZyAnLCBtc2cpO1xuXG4gICAgICAvL2xvZy5sb2coJ3RvVXJsJywgdG9VcmwpO1xuICAgICAgX3RoaXMucmVnaXN0cnkuaXNMZWdhY3kodG9VcmwpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgIC8vIGxvZy5sb2coJ1tJZGVudGl0eS5JZGVudGl0eU1vZHVsZS5nZXRUb2tlbl0gaXNMRUdBQ1k6ICcsIHJlc3VsdCk7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcblxuICAgICAgICAgIF90aGlzLl9nZXRBY2Nlc3NUb2tlbihtc2cpLnRoZW4oKHRva2VuKSA9PiB7XG4gICAgICAgICAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGUuZ2V0VG9rZW5dIGFjY2VzcyB0b2tlbiAnLCB0b2tlbik7XG4gICAgICAgICAgICByZXNvbHZlKGRlZXBDbG9uZSh0b2tlbikpO1xuICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnW0lkZW50aXR5TW9kdWxlLmdldFRva2VuXSBBY2Nlc3MgVG9rZW4gZXJyb3IgJyArIGVycik7IH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzLl9nZXRWYWxpZFRva2VuKGZyb21VUkwpLnRoZW4oKHRva2VuKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHRva2VuKTtcbiAgICAgICAgICB9KS5jYXRjaChlcnIgPT4geyByZWplY3QoJ09uIGdldFRva2VuIGZyb20gbWV0aG9kIF9nZXRWYWxpZFRva2VuIGVycm9yOiAnICsgZXJyKTsgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnT24gZ2V0VG9rZW4gZnJvbSBtZXRob2QgaXNMZWdhY3kgZXJyb3I6ICcgKyBlcnIpOyB9KTtcbiAgICB9KTtcbiAgfVxuXG5cbiAgLyoqXG4gICogZ2V0IGFuIElkIFRva2VuIGZvciBhIEh5cGVydHlVUkxcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICBoeXBlcnR5VVJMICAgICB0aGUgSHlwZXJ0eSBhZGRyZXNzXG4gICogQHJldHVybiB7SlNPTn0gICAgdG9rZW4gICAgSWQgdG9rZW4gdG8gYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2VcbiAgKi9cbiAgZ2V0SWRUb2tlbihoeXBlcnR5VVJMKSB7XG4gICAgbG9nLmluZm8oJ2dldElkVG9rZW46aHlwZXJ0eVVSTCAnLCBoeXBlcnR5VVJMKTtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGxldCBzcGxpdFVSTCA9IGh5cGVydHlVUkwuc3BsaXQoJzovLycpO1xuICAgICAgbGV0IHVzZXJVUkw7XG4gICAgICBpZiAoc3BsaXRVUkxbMF0gIT09ICdoeXBlcnR5JykgeyAvLyBpdCBpcyBhIERhdGEgT2JqZWN0IFVSTFxuXG4gICAgICAgIF90aGlzLl9nZXRIeXBlcnR5RnJvbURhdGFPYmplY3QoaHlwZXJ0eVVSTCkudGhlbigocmV0dXJuZWRIeXBlcnR5VVJMKSA9PiB7XG5cbiAgICAgICAgICB1c2VyVVJMID0gX3RoaXMucmVnaXN0cnkuZ2V0SHlwZXJ0eU93bmVyKHJldHVybmVkSHlwZXJ0eVVSTCk7XG5cbiAgICAgICAgICBpZiAodXNlclVSTCkge1xuICAgICAgICAgICAgbGV0IGlkZW50aXR5ID0gX3RoaXMuaWRlbnRpdGllcy5nZXRJZGVudGl0eSh1c2VyVVJMKTtcbiAgICAgICAgICAgIGlmIChpZGVudGl0eSkgcmV0dXJuIHJlc29sdmUoaWRlbnRpdHkpO1xuICAgICAgICAgICAgZWxzZSByZXR1cm4gcmVqZWN0KCdbSWRlbnRpdHlNb2R1bGUuZ2V0SWRUb2tlbl0gSWRlbnRpdHkgbm90IGZvdW5kIGZvcjogJywgdXNlclVSTCk7XG4gICAgICAgICAgfSBlbHNlIHsgcmV0dXJuIHJlamVjdCgnW0lkZW50aXR5TW9kdWxlLmdldElkVG9rZW5dIFVzZXIgbm90IGZvdW5kIGZvciBoeXBlcnR5OiAnLCByZXR1cm5lZEh5cGVydHlVUkwpOyB9XG4gICAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcbiAgICAgICAgICBsb2cuZXJyb3IoJ1tJZGVudGl0eU1vZHVsZS5nZXRJZFRva2VuXSBFcnJvcjogJywgcmVhc29uKTtcbiAgICAgICAgICByZWplY3QocmVhc29uKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1c2VyVVJMID0gX3RoaXMucmVnaXN0cnkuZ2V0SHlwZXJ0eU93bmVyKGh5cGVydHlVUkwpO1xuICAgICAgICBpZiAodXNlclVSTCkge1xuXG4gICAgICAgICAgbGV0IGlkZW50aXR5ID0gX3RoaXMuaWRlbnRpdGllcy5nZXRJZGVudGl0eSh1c2VyVVJMKTtcbiAgICAgICAgICBpZiAoaWRlbnRpdHkpIHJldHVybiByZXNvbHZlKGlkZW50aXR5KTtcbiAgICAgICAgICBlbHNlIHJldHVybiByZWplY3QoJ1tJZGVudGl0eU1vZHVsZS5nZXRJZFRva2VuXSBJZGVudGl0eSBub3QgZm91bmQgZm9yOiAnLCB1c2VyVVJMKTtcblxuICAgICAgICB9IGVsc2UgeyByZXR1cm4gcmVqZWN0KCdbSWRlbnRpdHlNb2R1bGUuZ2V0SWRUb2tlbl0gVXNlciBub3QgZm91bmQgZm9yIGh5cGVydHk6ICcsIHVzZXJVUkwpOyB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBnZXQgYW4gQWNjZXNzIFRva2VuIGZvciBhbiBleHRlcm5hbCBBUElcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICB1cmwgICAgIHRoZSBleHRlcm5hbCB1cmxcbiAgKiBAcmV0dXJuIHtKU09OfSAgICB0b2tlbiAgICBBY2Nlc3MgdG9rZW4gdG8gYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2VcbiAgKi9cblxuICBfZ2V0QWNjZXNzVG9rZW4obXNnKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsZXQgdXJsID0gbXNnLnRvO1xuICAgICAgbGV0IHRva2VuO1xuXG4gICAgICBpZiAoIW1zZy5oYXNPd25Qcm9wZXJ0eSgnYm9keScpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoJ1tJZGVudGl0eU1vZHVsZS5fZ2V0QWNjZXNzVG9rZW5dIG1pc3NpbmcgbWFuZGF0b3J5IG1zZyBib2R5OiAnLCBtc2cpO1xuICAgICAgfVxuICAgICAgaWYgKCFtc2cuYm9keS5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KCdbSWRlbnRpdHlNb2R1bGUuX2dldEFjY2Vzc1Rva2VuXSBtaXNzaW5nIG1hbmRhdG9yeSBtc2cgYm9keSB2YWx1ZTogJywgbXNnKTtcbiAgICAgIH1cbiAgICAgIGlmICghbXNnLmJvZHkudmFsdWUuaGFzT3duUHJvcGVydHkoJ3Jlc291cmNlcycpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoJ1tJZGVudGl0eU1vZHVsZS5fZ2V0QWNjZXNzVG9rZW5dIG1pc3NpbmcgbWFuZGF0b3J5IG1zZyBib2R5IHZhbHVlIHJlc291cmNlczogJywgbXNnKTtcbiAgICAgIH1cbiAgICAgIGxldCBkb21haW5Ub0NoZWNrID0gZGl2aWRlVVJMKHVybCkuZG9tYWluO1xuXG4gICAgICBpZiAodXJsLmluY2x1ZGVzKCdwcm90b3N0dWInKSkge1xuICAgICAgICBkb21haW5Ub0NoZWNrID0gZG9tYWluVG9DaGVjay5yZXBsYWNlKGRvbWFpblRvQ2hlY2suc3BsaXQoJy4nKVswXSArICcuJywgJycpO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmVzb3VyY2VzID0gbXNnLmJvZHkudmFsdWUucmVzb3VyY2VzO1xuXG4gICAgICB0cnkge1xuICAgICAgICB0b2tlbiA9IF90aGlzLmlkZW50aXRpZXMuZ2V0QWNjZXNzVG9rZW4oZG9tYWluVG9DaGVjaywgcmVzb3VyY2VzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdCgnW0lkZW50aXR5TW9kdWxlLl9nZXRBY2Nlc3NUb2tlbl0gQWNjZXNzIFRva2VuIGVycm9yICcgKyBlcnIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgIF90aGlzLl9nZXROZXdBY2Nlc3NUb2tlbihkb21haW5Ub0NoZWNrLCByZXNvdXJjZXMpLnRoZW4oKHRva2VuKSA9PiB7XG4gICAgICAgICAgbG9nLmxvZygnW0lkZW50aXR5LklkZW50aXR5TW9kdWxlLmdldEFjY2Vzc1Rva2VuXSBuZXcgQWNjZXNzIFRva2VuICcsIHRva2VuKTtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh0b2tlbik7XG4gICAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnW0lkZW50aXR5TW9kdWxlLl9nZXRBY2Nlc3NUb2tlbl0gb24gZ2V0TmV3QWNjZXNzVG9rZW4gJyArIGVycik7IH0pO1xuICAgICAgfSBlbHNlIGlmICh0b2tlbi5zdGF0dXMgPT09ICdpbi1wcm9ncmVzcycpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoX3RoaXMuX2luUHJvZ3Jlc3NBY2Nlc3NUb2tlbihkb21haW5Ub0NoZWNrLCByZXNvdXJjZXMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCB0aW1lTm93ID0gc2Vjb25kc1NpbmNlRXBvY2goKTtcblxuICAgICAgICBsb2cubG9nKCdbSWRlbnRpdHkuSWRlbnRpdHlNb2R1bGUuZ2V0QWNjZXNzVG9rZW5dIGZvdW5kICBBY2Nlc3MgVG9rZW4gJywgdG9rZW4pO1xuXG4gICAgICAgIGlmICh0aW1lTm93ID49IHRva2VuLmV4cGlyZXMpIHJldHVybiByZXNvbHZlKF90aGlzLl9nZXROZXdBY2Nlc3NUb2tlbihkb21haW5Ub0NoZWNrLCByZXNvdXJjZXMpKTtcbiAgICAgICAgZWxzZSByZXR1cm4gcmVzb2x2ZSh0b2tlbik7XG4gICAgICB9XG5cbiAgICB9KTtcbiAgfVxuXG4gIF9pblByb2dyZXNzQWNjZXNzVG9rZW4oZG9tYWluLCByZXNvdXJjZXMpIHtcbiAgICB0aGlzLmlkZW50aXRpZXMud2F0Y2hpbmdZb3Uub2JzZXJ2ZSgnYWNjZXNzVG9rZW5zJywgKGNoYW5nZSkgPT4ge1xuXG4gICAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGUuX2luUHJvZ3Jlc3NBY2Nlc3NUb2tlbl0gYWNjZXNzVG9rZW5zIGNoYW5nZWQgJyArIHRoaXMuaWRlbnRpdGllcy5hY2Nlc3NUb2tlbnMpO1xuXG4gICAgICBsZXQga2V5cGF0aCA9IGNoYW5nZS5rZXlwYXRoO1xuXG4gICAgICBpZiAoa2V5cGF0aC5pbmNsdWRlcygnc3RhdHVzJykpIHtcbiAgICAgICAga2V5cGF0aCA9IGtleXBhdGgucmVwbGFjZSgnLnN0YXR1cycsICcnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGtleXBhdGggPT09IGRvbWFpbiAmJiBjaGFuZ2UubmFtZSA9PT0gJ3N0YXR1cycgJiYgY2hhbmdlLm5ld1ZhbHVlID09PSAnY3JlYXRlZCcpIHtcbiAgICAgICAgLy8gbG9nLmxvZygnW0lkZW50aXR5LklkZW50aXR5TW9kdWxlLmdldFRva2VuXSB0b2tlbiBpcyBjcmVhdGVkICcgKyBfdGhpcy5pZGVudGl0aWVzTGlzdFtkb21haW5dKTtcbiAgICAgICAgcmV0dXJuICh0aGlzLmlkZW50aXRpZXMuZ2V0QWNjZXNzVG9rZW4oZG9tYWluLCByZXNvdXJjZXMpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICB9XG5cblxuICBfZ2V0TmV3QWNjZXNzVG9rZW4oZG9tYWluLCByZXNvdXJjZXMpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICBfdGhpcy5pZGVudGl0aWVzLnNldEFjY2Vzc1Rva2VuSW5Qcm9ncmVzcyhkb21haW4pO1xuXG4gICAgICBsZXQgbWVzc2FnZSA9IHtcbiAgICAgICAgdHlwZTogJ2V4ZWN1dGUnLFxuICAgICAgICB0bzogX3RoaXMuX3Jlc29sdmVEb21haW4oZG9tYWluKSxcbiAgICAgICAgZnJvbTogX3RoaXMuX2lkbVVSTCxcbiAgICAgICAgYm9keToge1xuICAgICAgICAgIG1ldGhvZDogJ2dldEFjY2Vzc1Rva2VuQXV0aG9yaXNhdGlvbkVuZHBvaW50JyxcbiAgICAgICAgICBwYXJhbXM6IHJlc291cmNlc1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICAvL2xldCdzIGZpcnN0IGdldCB0aGUgYXV0aG9yaXNhdGlvbiBVUkwgZnJvbSB0aGUgSWRwIFByb3h5XG4gICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVzKSA9PiB7XG4gICAgICAgIGlmIChyZXMuYm9keS5jb2RlID4gMjk5KSB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdCgnW0lkZW50aXR5TW9kdWxlLl9nZXROZXdBY2Nlc3NUb2tlbl0gRXJyb3Igb24gZ2V0QWNjZXNzVG9rZW5BdXRob3Jpc2F0aW9uRW5kcG9pbnQgZnJvbSBJZFAgUHJveHk6ICcsIHJlcy5ib2R5LmRlc2MpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbGV0J3MgYXNrIHRoZSB1c2VyIGZvciBhdXRob3Jpc2F0aW9uXG4gICAgICAgIF90aGlzLmNhbGxJZGVudGl0eU1vZHVsZUZ1bmMoJ29wZW5Qb3B1cCcsIHsgdXJscmVjZWl2ZWQ6IHJlcy5ib2R5LnZhbHVlIH0pLnRoZW4oKGF1dGhvcmlzYXRpb24pID0+IHtcbiAgICAgICAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGU6Y2FsbElkZW50aXR5TW9kdWxlRnVuYzpvcGVuUG9wdXBdIGF1aHRvcmlzYXRpb24gcmVzdWx0OiAnLCBhdXRob3Jpc2F0aW9uKTtcblxuICAgICAgICAgIG1lc3NhZ2UuYm9keS5tZXRob2QgPSAnZ2V0QWNjZXNzVG9rZW4nO1xuICAgICAgICAgIG1lc3NhZ2UuYm9keS5wYXJhbXMgPSB7XG4gICAgICAgICAgICByZXNvdXJjZXM6IHJlc291cmNlcyxcbiAgICAgICAgICAgIGxvZ2luOiBhdXRob3Jpc2F0aW9uXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vd2lodG91dCBjYWxsYmFjayB0byBhdm9pZCB0aW1lb3V0IGVycm9ycz9cblxuICAgICAgICAgIC8vIGxldCdzIGFzayBBY2Nlc3MgVG9rZW4gZnJvbSB0aGUgSWRwIFByb3h5XG4gICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobWVzc2FnZSwgKHJlcykgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcy5ib2R5LmNvZGUgPiAyOTkpIHJldHVybiByZWplY3QoJ1tJZGVudGl0eU1vZHVsZS5fZ2V0TmV3QWNjZXNzVG9rZW5dIEVycm9yIG9uIGdldEFjY2Vzc1Rva2VuIGZyb20gSWRQIFByb3h5OiAnLCByZXMuYm9keS5kZXNjKTtcblxuICAgICAgICAgICAgX3RoaXMuaWRlbnRpdGllcy5hZGRBY2Nlc3NUb2tlbihyZXMuYm9keS52YWx1ZSkudGhlbigodG9rZW4pID0+IHtcbiAgICAgICAgICAgICAgbG9nLmluZm8oJ1tJZGVudGl0eU1vZHVsZS5fZ2V0TmV3QWNjZXNzVG9rZW5dIHJlc29sdmluZyB0b2tlbjogJywgdG9rZW4pO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXMuYm9keS52YWx1ZSk7XG5cbiAgICAgICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICB9KTtcblxuICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfVxuXG5cbiAgc2VuZFJlZnJlc2hNZXNzYWdlKG9sZElkZW50aXR5KSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIC8vICAgIGxldCBkb21haW4gPSBfdGhpcy5fcmVzb2x2ZURvbWFpbihvbGRJZGVudGl0eS5pZHApO1xuICAgIC8vICAgIGxldCBtZXNzYWdlO1xuICAgIC8vICAgIGxldCBhc3NlcnRpb24gPSBfdGhpcy5nZXRJZGVudGl0eShvbGRJZGVudGl0eS51c2VyUHJvZmlsZS51c2VyVVJMKTtcblxuICAgIGxvZy5sb2coJ3NlbmRSZWZyZXNoTWVzc2FnZTpvbGRJZGVudGl0eScsIG9sZElkZW50aXR5KTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsZXQgZG9tYWluID0gX3RoaXMuX3Jlc29sdmVEb21haW4ob2xkSWRlbnRpdHkuaWRwKTtcbiAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgbGV0IGFzc2VydGlvbiA9IF90aGlzLmdldElkZW50aXR5KG9sZElkZW50aXR5LnVzZXJQcm9maWxlLnVzZXJVUkwpO1xuXG4gICAgICBsb2cuaW5mbygnc2VuZFJlZnJlc2hNZXNzYWdlOm9sZElkZW50aXR5Jywgb2xkSWRlbnRpdHkpO1xuXG4gICAgICBtZXNzYWdlID0geyB0eXBlOiAnZXhlY3V0ZScsIHRvOiBkb21haW4sIGZyb206IF90aGlzLl9pZG1VUkwsIGJvZHk6IHsgcmVzb3VyY2U6ICdpZGVudGl0eScsIG1ldGhvZDogJ3JlZnJlc2hBc3NlcnRpb24nLCBwYXJhbXM6IHsgaWRlbnRpdHk6IGFzc2VydGlvbiB9IH0gfTtcbiAgICAgIHRyeSB7XG4gICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1lc3NhZ2UsIChyZXMpID0+IHtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzLmJvZHkudmFsdWU7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZWplY3QoJ0luIHNlbmRSZWZyZXNoTWVzc2FnZSBvbiBwb3N0TWVzc2FnZSBlcnJvcjogJyArIGVycik7XG4gICAgICB9XG5cbiAgICB9KTtcblxuICB9XG5cbiAgZ2V0QWNjZXNzVG9rZW4oaWRwRG9tYWluLCByZXNvdXJjZXMsIGxvZ2luKSB7XG4gICAgbG9nLmxvZygnW2dldEFjY2Vzc1Rva2VuOmlkcERvbWFpbl0nLCBpZHBEb21haW4pO1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBsZXQgZG9tYWluID0gX3RoaXMuX3Jlc29sdmVEb21haW4oaWRwRG9tYWluKTtcbiAgICAgIGxldCBtZXNzYWdlO1xuXG4gICAgICBtZXNzYWdlID0ge1xuICAgICAgICB0eXBlOiAnZXhlY3V0ZScsIHRvOiBkb21haW4sIGZyb206IF90aGlzLl9pZG1VUkwsIGJvZHk6IHsgcmVzb3VyY2U6ICdpZGVudGl0eScsIG1ldGhvZDogJ2dldEFjY2Vzc1Rva2VuJywgcGFyYW1zOiB7IHJlc291cmNlczogcmVzb3VyY2VzLCBsb2dpbjogbG9naW4gfSB9XG4gICAgICB9O1xuICAgICAgdHJ5IHtcbiAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobWVzc2FnZSwgKHJlcykgPT4ge1xuICAgICAgICAgIGxldCByZXN1bHQgPSByZXMuYm9keS52YWx1ZTtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJlamVjdCgnSW4gc2VuZFJlZnJlc2hNZXNzYWdlIG9uIHBvc3RNZXNzYWdlIGVycm9yOiAnICsgZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldEFjY2Vzc1Rva2VuQXV0aG9yaXNhdGlvbkVuZHBvaW50KHNjb3BlLCBpZHBEb21haW4pIHtcbiAgICBsb2cubG9nKCdbZ2V0QWNjZXNzVG9rZW5BdXRob3Jpc2F0aW9uRW5kcG9pbnQ6aWRwRG9tYWluXScsIGlkcERvbWFpbik7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgIGxldCBkb21haW4gPSBfdGhpcy5fcmVzb2x2ZURvbWFpbihpZHBEb21haW4pO1xuICAgICAgbGV0IG1lc3NhZ2U7XG5cbiAgICAgIG1lc3NhZ2UgPSB7XG4gICAgICAgIHR5cGU6ICdleGVjdXRlJywgdG86IGRvbWFpbiwgZnJvbTogX3RoaXMuX2lkbVVSTCwgYm9keTogeyByZXNvdXJjZTogJ2lkZW50aXR5JywgbWV0aG9kOiAnZ2V0QWNjZXNzVG9rZW5BdXRob3Jpc2F0aW9uRW5kcG9pbnQnLCBwYXJhbXM6IHsgcmVzb3VyY2VzOiBzY29wZSB9IH1cbiAgICAgIH07XG4gICAgICB0cnkge1xuICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVzKSA9PiB7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlcy5ib2R5LnZhbHVlO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KCdJbiBzZW5kUmVmcmVzaE1lc3NhZ2Ugb24gcG9zdE1lc3NhZ2UgZXJyb3I6ICcgKyBlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2VuZEdlbmVyYXRlTWVzc2FnZShjb250ZW50cywgb3JpZ2luLCB1c2VybmFtZUhpbnQsIGlkcERvbWFpbikge1xuICAgIGNvbnNvbGUubG9nKCdbc2VuZEdlbmVyYXRlTWVzc2FnZTpjb250ZW50c10nLCBjb250ZW50cyk7XG4gICAgY29uc29sZS5sb2coJ1tzZW5kR2VuZXJhdGVNZXNzYWdlOm9yaWdpbl0nLCBvcmlnaW4pO1xuICAgIGNvbnNvbGUubG9nKCdbc2VuZEdlbmVyYXRlTWVzc2FnZTp1c2VybmFtZUhpbnRdJywgdXNlcm5hbWVIaW50KTtcbiAgICBjb25zb2xlLmxvZygnW3NlbmRHZW5lcmF0ZU1lc3NhZ2U6aWRwRG9tYWluXScsIGlkcERvbWFpbik7XG4gICAgY29uc29sZS5sb2coJ3NlbmRHZW5lcmF0ZU1lc3NhZ2VfaGludCcpO1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBsZXQgZG9tYWluID0gX3RoaXMuX3Jlc29sdmVEb21haW4oaWRwRG9tYWluKTtcbiAgICAgIGxldCBtZXNzYWdlO1xuXG4gICAgICBtZXNzYWdlID0ge1xuICAgICAgICB0eXBlOiAnZXhlY3V0ZScsIHRvOiBkb21haW4sIGZyb206IF90aGlzLl9pZG1VUkwsIGJvZHk6IHsgcmVzb3VyY2U6ICdpZGVudGl0eScsIG1ldGhvZDogJ2dlbmVyYXRlQXNzZXJ0aW9uJywgcGFyYW1zOiB7IGNvbnRlbnRzOiBjb250ZW50cywgb3JpZ2luOiBvcmlnaW4sIHVzZXJuYW1lSGludDogdXNlcm5hbWVIaW50IH0gfVxuICAgICAgfTtcbiAgICAgIHRyeSB7XG5cbiAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobWVzc2FnZSwgKHJlcykgPT4ge1xuXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlcy5ib2R5LnZhbHVlO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KCdJbiBzZW5kUmVmcmVzaE1lc3NhZ2Ugb24gcG9zdE1lc3NhZ2UgZXJyb3I6ICcgKyBlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogUmVxdWVzdHMgdGhlIElkcFByb3h5IGZyb20gYSBnaXZlbiBEb21haW4gZm9yIGFuIGlkZW50aXR5QXNzZXJ0aW9uXG4gICpcbiAgKiBAcGFyYW0gIHtET01TdHJpbmd9IGNvbnRlbnRzICAgICBjb250ZW50c1xuICAqIEBwYXJhbSAge0RPTVN0cmluZ30gb3JpZ2luICAgICAgIG9yaWdpblxuICAqIEBwYXJhbSAge0RPTVN0cmluZ30gdXNlcm5hbWVIaW50IHVzZXJuYW1lSGludFxuICAqIEBwYXJhbSAge0pTT059ICAgICAga2V5UGFpciAgICAgICB1c2VyIGtleVBhaXJcbiAgKiBAcmV0dXJuIHtJZEFzc2VydGlvbn0gICAgICAgICAgICAgIElkQXNzZXJ0aW9uXG4gICovXG4gIGdlbmVyYXRlQXNzZXJ0aW9uKGNvbnRlbnRzLCBvcmlnaW4sIHVzZXJuYW1lSGludCwgaWRwRG9tYWluKSB7XG4gICAgbG9nLmxvZygnW2dlbmVyYXRlQXNzZXJ0aW9uOmNvbnRlbnRzXScsIGNvbnRlbnRzKTtcbiAgICBsb2cubG9nKCdbZ2VuZXJhdGVBc3NlcnRpb246b3JpZ2luXScsIG9yaWdpbik7XG4gICAgbG9nLmxvZygnW2dlbmVyYXRlQXNzZXJ0aW9uOnVzZXJuYW1lSGludF0nLCB1c2VybmFtZUhpbnQpO1xuXG4gICAgLy8gICAgbG9nLmxvZygnW2dlbmVyYXRlQXNzZXJ0aW9uOmtleVBhaXJdJywga2V5UGFpcik7XG4gICAgbG9nLmxvZygnW2dlbmVyYXRlQXNzZXJ0aW9uOmlkcERvbWFpbl0nLCBpZHBEb21haW4pO1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGU6c2VuZEdlbmVyYXRlTWVzc2FnZTpzZW5kR2VuZXJhdGVNZXNzYWdlXScsIHVzZXJuYW1lSGludCk7XG4gICAgICBfdGhpcy5zZW5kR2VuZXJhdGVNZXNzYWdlKGNvbnRlbnRzLCBvcmlnaW4sIHVzZXJuYW1lSGludCwgaWRwRG9tYWluKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ2dlbmVyYXRlQXNzZXJ0aW9uLnNlbmRHZW5lcmF0ZU1lc3NhZ2UgcmVzdWx0OiAnLCBKU09OLnN0cmluZ2lmeShyZXN1bHQpKTtcblxuICAgICAgICBpZiAocmVzdWx0LmxvZ2luVXJsKSB7XG5cbiAgICAgICAgICBfdGhpcy5jYWxsSWRlbnRpdHlNb2R1bGVGdW5jKCdvcGVuUG9wdXAnLCB7IHVybHJlY2VpdmVkOiByZXN1bHQubG9naW5VcmwgfSkudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbZ2VuZXJhdGVBc3NlcnRpb24uY2FsbElkZW50aXR5TW9kdWxlRnVuYzpvcGVuUG9wdXBdJywgdmFsdWUpO1xuXG4gICAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQpIHtcblxuICAgICAgICAgIF90aGlzLmlkZW50aXRpZXMuYWRkQXNzZXJ0aW9uKHJlc3VsdCkudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdhZGRBc3NlcnRpb24nLCB2YWx1ZSk7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QoJ2Vycm9yIG9uIG9idGFpbmluZyBpZGVudGl0eSBpbmZvcm1hdGlvbicpO1xuICAgICAgICB9XG5cbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7IHJlamVjdCgnT24gZ2VuZXJhdGVBc3NlcnRpb24gZnJvbSBtZXRob2Qgc2VuZEdlbmVyYXRlTWVzc2FnZSBlcnJvcjogJyArIGVycik7IH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogUmVxdWVzdHMgdGhlIElkcFByb3h5IGZyb20gYSBnaXZlbiBEb21haW4gdG8gdmFsaWRhdGUgYW4gSWRlbnRpdHlBc3NlcnRpb25cbiAgKiBSZXR1cm5zIGEgcHJvbWlzZSB3aXRoIHRoZSByZXN1bHQgZnJvbSB0aGUgdmFsaWRhdGlvbi5cbiAgKiBAcGFyYW0gIHtET01TdHJpbmd9IGFzc2VydGlvblxuICAqIEBwYXJhbSAge0RPTVN0cmluZ30gb3JpZ2luICAgICAgIG9yaWdpblxuICAqIEByZXR1cm4ge1Byb21pc2V9ICAgICAgICAgUHJvbWlzZSAgICAgICAgIHByb21pc2Ugd2l0aCB0aGUgcmVzdWx0IGZyb20gdGhlIHZhbGlkYXRpb25cbiAgKi9cbiAgdmFsaWRhdGVBc3NlcnRpb24oYXNzZXJ0aW9uLCBvcmlnaW4sIGlkcERvbWFpbikge1xuICAgIGxvZy5sb2coJ1t2YWxpZGF0ZUFzc2VydGlvbjphc3NlcnRpb25dJywgYXNzZXJ0aW9uKTtcbiAgICBsb2cubG9nKCdbdmFsaWRhdGVBc3NlcnRpb246b3JpZ2luXScsIG9yaWdpbik7XG4gICAgbG9nLmxvZygnW3ZhbGlkYXRlQXNzZXJ0aW9uOmlkcERvbWFpbl0nLCBpZHBEb21haW4pO1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgZG9tYWluID0gX3RoaXMuX3Jlc29sdmVEb21haW4oaWRwRG9tYWluKTtcblxuICAgIGxldCBtZXNzYWdlID0ge1xuICAgICAgdHlwZTogJ2V4ZWN1dGUnLCB0bzogZG9tYWluLCBmcm9tOiBfdGhpcy5faWRtVVJMLCBib2R5OiB7XG4gICAgICAgIHJlc291cmNlOiAnaWRlbnRpdHknLCBtZXRob2Q6ICd2YWxpZGF0ZUFzc2VydGlvbicsXG4gICAgICAgIHBhcmFtczogeyBhc3NlcnRpb246IGFzc2VydGlvbiwgb3JpZ2luOiBvcmlnaW4gfVxuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB0cnkge1xuICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdC5ib2R5LmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQuYm9keS52YWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdCgnZXJyb3InLCByZXN1bHQuYm9keS5jb2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJlamVjdCgnT24gdmFsaWRhdGVBc3NlcnRpb24gZnJvbSBtZXRob2QgcG9zdE1lc3NhZ2UgZXJyb3I6ICcgKyBlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYWRkR1VJTGlzdGVuZXJzKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBfdGhpcy5fbWVzc2FnZUJ1cy5hZGRMaXN0ZW5lcihfdGhpcy5faWRtVVJMLCAobXNnKSA9PiB7XG4gICAgICBsZXQgZnVuY05hbWUgPSBtc2cuYm9keS5tZXRob2Q7XG5cbiAgICAgIGxvZy5sb2coJ1tJZGVudGl0eU1vZHVsZTphZGRHVUlMaXN0ZW5lcnNdJywgbXNnLCBtc2cuYm9keSwgZnVuY05hbWUpO1xuXG4gICAgICBsZXQgcmV0dXJuZWRWYWx1ZTtcblxuICAgICAgaWYgKGZ1bmNOYW1lID09PSAnZGVwbG95R1VJJykge1xuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuZGVwbG95R1VJKCk7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnZ2V0SWRlbnRpdGllc1RvQ2hvb3NlJykge1xuICAgICAgICBfdGhpcy5nZXRJZGVudGl0aWVzVG9DaG9vc2UoKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAvLyBpZiB0aGUgZnVuY3Rpb24gcmVxdWVzdGVkIGlzIG5vdCBhIHByb21pc2VcbiAgICAgICAgICBsZXQgdmFsdWUgPSB7IHR5cGU6ICdleGVjdXRlJywgdmFsdWU6IHJlc3VsdCwgY29kZTogMjAwIH07XG4gICAgICAgICAgbGV0IHJlcGx5TXNnID0geyBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCB0bzogbXNnLmZyb20sIGZyb206IG1zZy50bywgYm9keTogdmFsdWUgfTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UocmVwbHlNc2cpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgbG9nLmVycm9yKCdPbiBhZGRHVUlMaXN0ZW5lcnMgZnJvbSBpZiBzdG9yZUlkZW50aXR5IG1ldGhvZCBwb3N0TWVzc2FnZSBlcnJvcjogJyArIGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAndW5yZWdpc3RlcklkZW50aXR5Jykge1xuICAgICAgICBsZXQgZW1haWwgPSBtc2cuYm9keS5wYXJhbXMuZW1haWw7XG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy51bnJlZ2lzdGVySWRlbnRpdHkoZW1haWwpO1xuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ2dldE15UHVibGljS2V5Jykge1xuICAgICAgICAvLyBiZWNhdXNlIGdlbmVyYXRlUlNBS2V5UGFpciBpcyBhIHByb21pc2VcbiAgICAgICAgLy8gd2UgaGF2ZSB0byBzZW5kIHRoZSBtZXNzYWdlIG9ubHkgYWZ0ZXIgZ2V0dGluZyB0aGUga2V5IHBhaXJcbiAgICAgICAgX3RoaXMuX2NyeXB0by5nZXRNeVB1YmxpY0tleSgpLnRoZW4oKHB1YktleSkgPT4ge1xuICAgICAgICAgIHB1YktleSA9IHN0cmluZ2lmeShwdWJLZXkpO1xuICAgICAgICAgIGxldCB2YWx1ZSA9IHsgdHlwZTogJ2V4ZWN1dGUnLCB2YWx1ZTogcHViS2V5LCBjb2RlOiAyMDAgfTtcbiAgICAgICAgICBsZXQgcmVwbHlNc2cgPSB7IGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIHRvOiBtc2cuZnJvbSwgZnJvbTogbXNnLnRvLCBib2R5OiB2YWx1ZSB9O1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShyZXBseU1zZyk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBsb2cuZXJyb3IoJ09uIGFkZEdVSUxpc3RlbmVycyBmcm9tIGlmIGdlbmVyYXRlUlNBS2V5UGFpciBtZXRob2QgcG9zdE1lc3NhZ2UgZXJyb3I6ICcgKyBlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdzZW5kR2VuZXJhdGVNZXNzYWdlJykge1xuICAgICAgICBsZXQgY29udGVudHMgPSBtc2cuYm9keS5wYXJhbXMuY29udGVudHM7XG4gICAgICAgIGxldCBvcmlnaW4gPSBtc2cuYm9keS5wYXJhbXMub3JpZ2luO1xuICAgICAgICBsZXQgdXNlcm5hbWVIaW50ID0gbXNnLmJvZHkucGFyYW1zLnVzZXJuYW1lSGludDtcbiAgICAgICAgbGV0IGlkcERvbWFpbiA9IG1zZy5ib2R5LnBhcmFtcy5pZHBEb21haW47XG4gICAgICAgIF90aGlzLnNlbmRHZW5lcmF0ZU1lc3NhZ2UoY29udGVudHMsIG9yaWdpbiwgdXNlcm5hbWVIaW50LCBpZHBEb21haW4pLnRoZW4oKHJldHVybmVkVmFsdWUpID0+IHtcbiAgICAgICAgICBsZXQgdmFsdWUgPSB7IHR5cGU6ICdleGVjdXRlJywgdmFsdWU6IHJldHVybmVkVmFsdWUsIGNvZGU6IDIwMCB9O1xuICAgICAgICAgIGxldCByZXBseU1zZyA9IHsgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgdG86IG1zZy5mcm9tLCBmcm9tOiBtc2cudG8sIGJvZHk6IHZhbHVlIH07XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHJlcGx5TXNnKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcignT24gYWRkR1VJTGlzdGVuZXJzIGZyb20gaWYgc2VuZEdlbmVyYXRlTWVzc2FnZSBtZXRob2QgcG9zdE1lc3NhZ2UgZXJyb3I6ICcgKyBlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ2dldEFjY2Vzc1Rva2VuQXV0aG9yaXNhdGlvbkVuZHBvaW50Jykge1xuICAgICAgICBsZXQgc2NvcGUgPSBtc2cuYm9keS5wYXJhbXMuc2NvcGU7XG4gICAgICAgIGxldCBpZHBEb21haW4gPSBtc2cuYm9keS5wYXJhbXMuaWRwRG9tYWluO1xuICAgICAgICBfdGhpcy5nZXRBY2Nlc3NUb2tlbkF1dGhvcmlzYXRpb25FbmRwb2ludChzY29wZSwgaWRwRG9tYWluKS50aGVuKChyZXR1cm5lZFZhbHVlKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0geyB0eXBlOiAnZXhlY3V0ZScsIHZhbHVlOiByZXR1cm5lZFZhbHVlLCBjb2RlOiAyMDAgfTtcbiAgICAgICAgICBsZXQgcmVwbHlNc2cgPSB7IGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIHRvOiBtc2cuZnJvbSwgZnJvbTogbXNnLnRvLCBib2R5OiB2YWx1ZSB9O1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBfdGhpcy5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShyZXBseU1zZyk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBsb2cuZXJyb3IoJ09uIGFkZEdVSUxpc3RlbmVycyBmcm9tIGlmIHNlbmRHZW5lcmF0ZU1lc3NhZ2UgbWV0aG9kIHBvc3RNZXNzYWdlIGVycm9yOiAnICsgZXJyKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdhZGRBY2Nlc3NUb2tlbicpIHtcbiAgICAgICAgbGV0IGFjY2Vzc1Rva2VuID0gbXNnLmJvZHkucGFyYW1zO1xuXG4gICAgICAgIF90aGlzLmlkZW50aXRpZXMuYWRkQWNjZXNzVG9rZW4oYWNjZXNzVG9rZW4pLnRoZW4oKHJldHVybmVkVmFsdWUpID0+IHtcbiAgICAgICAgICBsZXQgdmFsdWUgPSB7IHR5cGU6ICdleGVjdXRlJywgdmFsdWU6IHJldHVybmVkVmFsdWUsIGNvZGU6IDIwMCB9O1xuICAgICAgICAgIGxldCByZXBseU1zZyA9IHsgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgdG86IG1zZy5mcm9tLCBmcm9tOiBtc2cudG8sIGJvZHk6IHZhbHVlIH07XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHJlcGx5TXNnKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcignT24gYWRkR1VJTGlzdGVuZXJzIGZyb20gaWYgc3RvcmVJZGVudGl0eSBtZXRob2QgcG9zdE1lc3NhZ2UgZXJyb3I6ICcgKyBlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ2dldEFjY2Vzc1Rva2VuJykge1xuXG4gICAgICAgIGxldCBkb21haW4gPSBtc2cuYm9keS5wYXJhbXMuaWRwRG9tYWluO1xuICAgICAgICBsZXQgcmVzb3VyY2VzID0gbXNnLmJvZHkucGFyYW1zLnJlc291cmNlcztcbiAgICAgICAgbGV0IGxvZ2luID0gbXNnLmJvZHkucGFyYW1zLmxvZ2luO1xuXG4gICAgICAgIF90aGlzLmdldEFjY2Vzc1Rva2VuKGRvbWFpbiwgcmVzb3VyY2VzLCBsb2dpbikudGhlbigocmV0dXJuZWRWYWx1ZSkgPT4ge1xuICAgICAgICAgIGxldCB2YWx1ZSA9IHsgdHlwZTogJ2V4ZWN1dGUnLCB2YWx1ZTogcmV0dXJuZWRWYWx1ZSwgY29kZTogMjAwIH07XG4gICAgICAgICAgbGV0IHJlcGx5TXNnID0geyBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCB0bzogbXNnLmZyb20sIGZyb206IG1zZy50bywgYm9keTogdmFsdWUgfTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UocmVwbHlNc2cpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgbG9nLmVycm9yKCdPbiBhZGRHVUlMaXN0ZW5lcnMgZnJvbSBpZiBzZW5kR2VuZXJhdGVNZXNzYWdlIG1ldGhvZCBwb3N0TWVzc2FnZSBlcnJvcjogJyArIGVycik7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnYWRkQXNzZXJ0aW9uJykge1xuICAgICAgICBsZXQgcmVzdWx0ID0gbXNnLmJvZHkucGFyYW1zO1xuXG4gICAgICAgIC8vICAgICAgICBsZXQga2V5UGFpciA9IG1zZy5ib2R5LnBhcmFtcy5rZXlQYWlyO1xuICAgICAgICBfdGhpcy5pZGVudGl0aWVzLmFkZEFzc2VydGlvbihyZXN1bHQpLnRoZW4oKHJldHVybmVkVmFsdWUpID0+IHtcbiAgICAgICAgICBsZXQgdmFsdWUgPSB7IHR5cGU6ICdleGVjdXRlJywgdmFsdWU6IHJldHVybmVkVmFsdWUsIGNvZGU6IDIwMCB9O1xuICAgICAgICAgIGxldCByZXBseU1zZyA9IHsgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgdG86IG1zZy5mcm9tLCBmcm9tOiBtc2cudG8sIGJvZHk6IHZhbHVlIH07XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIF90aGlzLl9tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHJlcGx5TXNnKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcignT24gYWRkR1VJTGlzdGVuZXJzIGZyb20gaWYgc3RvcmVJZGVudGl0eSBtZXRob2QgcG9zdE1lc3NhZ2UgZXJyb3I6ICcgKyBlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvKmVsc2UgaWYgKGZ1bmNOYW1lID09PSAnc2VsZWN0SWRlbnRpdHlGb3JIeXBlcnR5Jykge1xuICAgICAgICBsZXQgb3JpZ2luID0gbXNnLmJvZHkucGFyYW1zLm9yaWdpbjtcbiAgICAgICAgbGV0IGlkcCA9IG1zZy5ib2R5LnBhcmFtcy5pZHA7XG4gICAgICAgIGxldCBpZEhpbnQgPSBtc2cuYm9keS5wYXJhbXMuaWRIaW50O1xuICAgICAgICBfdGhpcy5zZWxlY3RJZGVudGl0eUZvckh5cGVydHkob3JpZ2luLCBpZHAsIGlkSGludCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0qL1xuXG4gICAgICAvLyBpZiB0aGUgZnVuY3Rpb24gcmVxdWVzdGVkIGlzIG5vdCBhIHByb21pc2VcbiAgICAgIGxldCB2YWx1ZSA9IHsgdHlwZTogJ2V4ZWN1dGUnLCB2YWx1ZTogcmV0dXJuZWRWYWx1ZSwgY29kZTogMjAwIH07XG4gICAgICBsZXQgcmVwbHlNc2cgPSB7IGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIHRvOiBtc2cuZnJvbSwgZnJvbTogbXNnLnRvLCBib2R5OiB2YWx1ZSB9O1xuICAgICAgdHJ5IHtcbiAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UocmVwbHlNc2cpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZy5lcnJvcignT24gYWRkR1VJTGlzdGVuZXJzIGZyb20gaWYgc3RvcmVJZGVudGl0eSBtZXRob2QgcG9zdE1lc3NhZ2UgZXJyb3I6ICcgKyBlcnIpO1xuICAgICAgfVxuXG4gICAgfSk7XG4gIH1cblxuICBkZXBsb3lHVUkoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBfdGhpcy5ndWlEZXBsb3llZCA9IHRydWU7XG4gIH1cblxuICAvLyoqKioqKioqKioqKioqKioqKiogUFJJVkFURSBNRVRIT0RTICoqKioqKioqKioqKioqKioqKipcbiAgLyoqXG4gICAqIEdldFZhbGlkVG9rZW4gaXMgZm9yIG5vbiBsZWdhY3kgaHlwZXJ0aWVzIGFuZCB2ZXJpZmllcyBpZiB0aGUgVG9rZW4gaXMgc3RpbGwgdmFsaWRcbiAgICogaWYgdGhlIHRva2VuIGlzIGludmFsaWQgaXQgcmVxdWVzdHMgYSBuZXcgdG9rZW5cbiAgICogQHBhcmFtICB7U3RyaW5nfSBoeXBlcnR5VVJMIGh5cGVydHlVUkxcbiAgICogQHJldHVybiB7UHJvbWlzZX1cbiAgICovXG4gIF9nZXRWYWxpZFRva2VuKGh5cGVydHlVUkwpIHtcbiAgICBsb2cubG9nKCdbSWRlbnRpdHlNb2R1bGUuX2dldFZhbGlkVG9rZW5dOmh5cGVydHlVUkwnLCBoeXBlcnR5VVJMKTtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBfdGhpcy5nZXRJZFRva2VuKGh5cGVydHlVUkwpLnRoZW4oZnVuY3Rpb24oYXNzZXJ0aW9uKSB7XG4gICAgICAgIGxvZy5sb2coJ1tJZGVudGl0eU1vZHVsZS5fZ2V0VmFsaWRUb2tlbl0gcmV0cmlldmVkIElkQXNzZXJ0aW9uJywgYXNzZXJ0aW9uKTtcbiAgICAgICAgbGV0IHRpbWVOb3cgPSBzZWNvbmRzU2luY2VFcG9jaCgpO1xuXG4gICAgICAgIGlmICghYXNzZXJ0aW9uLmhhc093blByb3BlcnR5KCdleHBpcmVzJykpIHJldHVybiByZXNvbHZlKGFzc2VydGlvbik7XG5cbiAgICAgICAgbGV0IGV4cGlyYXRpb25EYXRlID0gYXNzZXJ0aW9uLmV4cGlyZXM7XG5cbiAgICAgICAgLyogaWYgKGNvbXBsZXRlSWQuaGFzT3duUHJvcGVydHkoJ2luZm8nKSkge1xuICAgICAgICAgIGlmIChjb21wbGV0ZUlkLmluZm8uaGFzT3duUHJvcGVydHkoJ2V4cGlyZXMnKSkge1xuICAgICAgICAgICAgZXhwaXJhdGlvbkRhdGUgPSBjb21wbGV0ZUlkLmluZm8uZXhwaXJlcztcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBsZXRlSWQuaW5mby5oYXNPd25Qcm9wZXJ0eSgndG9rZW5JREpTT04nKSkge1xuICAgICAgICAgICAgZXhwaXJhdGlvbkRhdGUgPSBjb21wbGV0ZUlkLmluZm8udG9rZW5JREpTT04uZXhwO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB0aHJvdyAnVGhlIElEIFRva2VuIGRvZXMgbm90IGhhdmUgYW4gZXhwaXJhdGlvbiB0aW1lJztcbiAgICAgICAgICAgIGxvZy5pbmZvKCdUaGUgSUQgVG9rZW4gZG9lcyBub3QgaGF2ZSBhbiBleHBpcmF0aW9uIHRpbWUnKTtcbiAgICAgICAgICAgIHJlc29sdmUoYXNzZXJ0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY29tcGxldGVJZC5oYXNPd25Qcm9wZXJ0eSgnaW5mb1Rva2VuJykgJiYgY29tcGxldGVJZC5pbmZvVG9rZW4uaGFzT3duUHJvcGVydHkoJ2V4cCcpKSB7XG4gICAgICAgICAgZXhwaXJhdGlvbkRhdGUgPSBjb21wbGV0ZUlkLmluZm9Ub2tlbi5leHA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gdGhyb3cgJ1RoZSBJRCBUb2tlbiBkb2VzIG5vdCBoYXZlIGFuIGV4cGlyYXRpb24gdGltZSc7XG4gICAgICAgICAgbG9nLmluZm8oJ1RoZSBJRCBUb2tlbiBkb2VzIG5vdCBoYXZlIGFuIGV4cGlyYXRpb24gdGltZScpO1xuICAgICAgICAgIHJlc29sdmUoYXNzZXJ0aW9uKTtcbiAgICAgICAgfSovXG5cbiAgICAgICAgbG9nLmxvZygnW0lkZW50aXR5LklkZW50aXR5TW9kdWxlLmdldFZhbGlkVG9rZW5dIFRva2VuIGV4cGlyZXMgaW4nLCBleHBpcmF0aW9uRGF0ZSk7XG4gICAgICAgIGxvZy5sb2coJ1tJZGVudGl0eS5JZGVudGl0eU1vZHVsZS5nZXRWYWxpZFRva2VuXSB0aW1lIG5vdzonLCB0aW1lTm93KTtcblxuICAgICAgICBpZiAodGltZU5vdyA+PSBleHBpcmF0aW9uRGF0ZSkge1xuICAgICAgICAgIGlmIChhc3NlcnRpb24uaGFzT3duUHJvcGVydHkoJ3JlZnJlc2gnKSkge1xuICAgICAgICAgICAgX3RoaXMuc2VuZFJlZnJlc2hNZXNzYWdlKGFzc2VydGlvbikudGhlbigobmV3QXNzZXJ0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIF90aGlzLmlkZW50aXRpZXMudXBkYXRlQXNzZXJ0aW9uKG5ld0Fzc2VydGlvbikudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShuZXdBc3NlcnRpb24pO1xuICAgICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nLmVycm9yKCdbSWRlbnRpdHlNb2R1bGUuZ2V0VmFsaWRUb2tlbl0gZXJyb3IgdXBkYXRpbmcgdGhlIGFzc2VydGlvbiAnLCBlcnIpO1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgbG9nLmVycm9yKCdbSWRlbnRpdHlNb2R1bGUuZ2V0VmFsaWRUb2tlbl0gZXJyb3IgcmVmcmVzaGluZyB0aGUgYXNzZXJ0aW9uICcsIGVycik7XG4gICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHsgLy8gbm8gcmVmcmVzaCB0b2tlbiBhdmFpbGFibGUsIHVzZXIgaGFzIHRvIGF1dGhlbnRpY2F0ZSBhZ2FpbiB0byBnZXQgYSBuZXcgYXNzZXJ0aW9uXG4gICAgICAgICAgICAvLyBnZW5lcmF0ZSBuZXcgaWRUb2tlblxuICAgICAgICAgICAgX3RoaXMuY2FsbEdlbmVyYXRlTWV0aG9kcyhhc3NlcnRpb24uaWRwLmRvbWFpbikudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4geyByZWplY3QoJ1tJZGVudGl0eU1vZHVsZS5nZXRWYWxpZFRva2VuXSBlcnJvciB3aGVuIGdlbmVyYXRpbmcgYSBuZXcgYXNzZXJ0aW9uICcgKyBlcnIpOyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShhc3NlcnRpb24pO1xuICAgICAgICB9XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikge1xuICAgICAgICBsb2cuZXJyb3IoJ1tJZGVudGl0eU1vZHVsZS5nZXRWYWxpZFRva2VuXSBlcnJvciBvbiBnZXRJZFRva2VuJywgZXJyb3IpO1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiByZXR1cm5zIHRoZSByZXBvcnRlciBhc3NvY2lhdGVkIHRvIHRoZSBkYXRhT2JqZWN0IFVSTFxuICAqIEBwYXJhbSAgIHtTdHJpbmd9ICAgZGF0YU9iamVjdFVSTCAgICAgICAgIGRhdGFPYmplY3QgdXJsXG4gICogQHJldHVybiAgIHtTdHJpbmd9ICByZXBvcnRlciAgICAgICAgICAgICAgZGF0YU9iamVjdCB1cmwgcmVwb3J0ZXJcbiAgKi9cbiAgX2dldEh5cGVydHlGcm9tRGF0YU9iamVjdChkYXRhT2JqZWN0VVJMKSB7XG4gICAgbG9nLmluZm8oJ19nZXRIeXBlcnR5RnJvbURhdGFPYmplY3Q6ZGF0YU9iamVjdFVSTCcsIGRhdGFPYmplY3RVUkwpO1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgIGxldCBzcGxpdGVkVVJMID0gZGl2aWRlVVJMKGRhdGFPYmplY3RVUkwpO1xuICAgICAgbGV0IGRvbWFpbiA9IHNwbGl0ZWRVUkwuZG9tYWluO1xuICAgICAgbGV0IGZpbmFsVVJMID0gcGFyc2VNZXNzYWdlVVJMKGRhdGFPYmplY3RVUkwpO1xuXG4gICAgICAvLyBjaGVjayBpZiBpcyB0aGUgY3JlYXRvciBvZiB0aGUgaHlwZXJ0eVxuICAgICAgbGV0IHJlcG9ydGVyVVJMID0gX3RoaXMucmVnaXN0cnkuZ2V0UmVwb3J0ZXJVUkxTeW5jaG9ub3VzKGZpbmFsVVJMKTtcbiAgICAgIGxvZy5pbmZvKCdfZ2V0SHlwZXJ0eUZyb21EYXRhT2JqZWN0OnJlcG9ydGVyVVJMJywgcmVwb3J0ZXJVUkwpO1xuXG4gICAgICBpZiAocmVwb3J0ZXJVUkwpIHtcbiAgICAgICAgcmVzb2x2ZShyZXBvcnRlclVSTCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhbHJlYWR5IGFuIGFzc29jaWF0aW9uIGZyb20gYW4gaHlwZXJ0eVVSTCB0byB0aGUgZGF0YU9iamVjdFxuICAgICAgICBsZXQgc3RvcmVkUmVwb3J0ZXJVUkwgPSBfdGhpcy5kYXRhT2JqZWN0c0lkZW50aXR5W2ZpbmFsVVJMXTtcbiAgICAgICAgbG9nLmluZm8oJ19nZXRIeXBlcnR5RnJvbURhdGFPYmplY3Q6c3RvcmVkUmVwb3J0ZXJVUkwnLCBzdG9yZWRSZXBvcnRlclVSTCk7XG5cbiAgICAgICAgaWYgKHN0b3JlZFJlcG9ydGVyVVJMKSB7XG4gICAgICAgICAgcmVzb2x2ZShzdG9yZWRSZXBvcnRlclVSTCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYW55IGh5cGVydHkgdGhhdCBzdWJzY3JpYmVkIHRoZSBkYXRhT2JqZWN0VVJMXG4gICAgICAgICAgbGV0IHN1YnNjcmliZXJIeXBlcnR5ID0gX3RoaXMucmVnaXN0cnkuZ2V0RGF0YU9iamVjdFN1YnNjcmliZXJIeXBlcnR5KGRhdGFPYmplY3RVUkwpO1xuICAgICAgICAgIGxvZy5pbmZvKCdfZ2V0SHlwZXJ0eUZyb21EYXRhT2JqZWN0OnN1YnNjcmliZXJIeXBlcnR5Jywgc3Vic2NyaWJlckh5cGVydHkpO1xuXG4gICAgICAgICAgaWYgKHN1YnNjcmliZXJIeXBlcnR5KSB7XG4gICAgICAgICAgICByZXNvbHZlKHN1YnNjcmliZXJIeXBlcnR5KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gc2VhcmNoIGluIGRvbWFpbiByZWdpc3RyeSBmb3IgdGhlIGh5cGVydHkgYXNzb2NpYXRlZCB0byB0aGUgZGF0YU9iamVjdFxuICAgICAgICAgICAgLy8gc2VhcmNoIGluIGNhc2UgaXMgYSBzdWJzY3JpYmVyIHdobyB3YW50cyB0byBrbm93IHRoZSByZXBvcnRlclxuICAgICAgICAgICAgLy8gVG8gYmUgcmV2aWV3ZWQgaW4gb3JkZXIgdG8gYXZvaWQgdGhlIGRpc2NvdmVyeSB0cmFuc2FjdGlvblxuICAgICAgICAgICAgX3RoaXMuX2NvcmVEaXNjb3ZlcnkuZGlzY292ZXJEYXRhT2JqZWN0UGVyVVJMKGZpbmFsVVJMLCBkb21haW4pLnRoZW4oZGF0YU9iamVjdCA9PiB7XG4gICAgICAgICAgICAgIGxvZy5pbmZvKCdfZ2V0SHlwZXJ0eUZyb21EYXRhT2JqZWN0OmRhdGFPYmplY3QnLCBkYXRhT2JqZWN0KTtcbiAgICAgICAgICAgICAgX3RoaXMuZGF0YU9iamVjdHNJZGVudGl0eVtmaW5hbFVSTF0gPSBkYXRhT2JqZWN0LnJlcG9ydGVyO1xuICAgICAgICAgICAgICBsb2cuaW5mbygnX2dldEh5cGVydHlGcm9tRGF0YU9iamVjdDpkYXRhT2JqZWN0LnJlcG9ydGVyJywgZGF0YU9iamVjdC5yZXBvcnRlcik7XG4gICAgICAgICAgICAgIHJlc29sdmUoZGF0YU9iamVjdC5yZXBvcnRlcik7XG4gICAgICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogRnVuY3Rpb24gdGhhdCByZXNvbHZlIGFuZCBjcmVhdGUgdGhlIGRvbWFpblVSTCBpbiBjYXNlIGl0IGlzIHByb3ZpZGVkIG9uZS4gSWYgbm90LCByZXNvbHZlIHRoZSBkZWZhdWx0IGRvbWFpblVSTFxuICAqIEBwYXJhbSB7U3RyaW5nfSAgICAgaWRwRG9tYWluICAgICBpZHBEb21haW4gKE9wdGlvbmFsKVxuICAqL1xuICBfcmVzb2x2ZURvbWFpbihpZHBEb21haW4pIHtcbiAgICBpZiAoIWlkcERvbWFpbikge1xuICAgICAgcmV0dXJuICdkb21haW4taWRwOi8vZ29vZ2xlLmNvbSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnZG9tYWluLWlkcDovLycgKyBpZHBEb21haW47XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICBfc2Vjb25kc1NpbmNlRXBvY2goKSB7XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XG4gICAgfSovXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgSWRlbnRpdHlNb2R1bGU7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2lkZW50aXR5L0lkZW50aXR5TW9kdWxlLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7QUFQQTtBQUNBO0FBT0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0QkE7QUFDQTtBQUNBOzs7QUFHQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUF3REE7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBOzs7OztBQUtBOzs7Ozs7OztBQW1CQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7O0FBSUE7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBS0E7QUFDQTs7Ozs7QUFLQTtBQUNBOzs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7QUFJQTs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSkE7QUFDQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQURBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFqdkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7OztBQTRCQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7Ozs7O0FBK3BDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///471\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(473), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9udW1iZXIvaXMtaW50ZWdlci5qcz80NTFhIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9udW1iZXIvaXMtaW50ZWdlclwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9udW1iZXIvaXMtaW50ZWdlci5qc1xuLy8gbW9kdWxlIGlkID0gNDcyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///472\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(474);\nmodule.exports = __webpack_require__(10).Number.isInteger;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDczLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9udW1iZXIvaXMtaW50ZWdlci5qcz83MzhlIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm51bWJlci5pcy1pbnRlZ2VyJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5OdW1iZXIuaXNJbnRlZ2VyO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL251bWJlci9pcy1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSA0NzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///473\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.3 Number.isInteger(number)\nvar $export = __webpack_require__(21);\n\n$export($export.S, 'Number', { isInteger: __webpack_require__(475) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDc0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5udW1iZXIuaXMtaW50ZWdlci5qcz9kNWE5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDIwLjEuMi4zIE51bWJlci5pc0ludGVnZXIobnVtYmVyKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IGlzSW50ZWdlcjogcmVxdWlyZSgnLi9faXMtaW50ZWdlcicpIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm51bWJlci5pcy1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSA0NzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///474\n")},function(module,exports,__webpack_require__){eval("// 20.1.2.3 Number.isInteger(number)\nvar isObject = __webpack_require__(36);\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDc1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1pbnRlZ2VyLmpzPzAwYTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMjAuMS4yLjMgTnVtYmVyLmlzSW50ZWdlcihudW1iZXIpXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzSW50ZWdlcihpdCkge1xuICByZXR1cm4gIWlzT2JqZWN0KGl0KSAmJiBpc0Zpbml0ZShpdCkgJiYgZmxvb3IoaXQpID09PSBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtaW50ZWdlci5qc1xuLy8gbW9kdWxlIGlkID0gNDc1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///475\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('IdentityModule');\n\n/**\n* fake class for the gui to select the identity,\n* TODO replace with the proper identity GUI\n*\n*/\n// Log System\n\nvar GuiFake = function GuiFake(url, messageBus) {\n (0, _classCallCheck3.default)(this, GuiFake);\n\n log.log('FakeGUI_deployed');\n var _this = this;\n\n _this._url = url;\n _this._waitTime = 10000;\n _this._messageBus = messageBus;\n\n _this._messageBus.addListener(_this._url, function (msg) {\n\n if (msg.hasOwnProperty('type') && msg.type === 'create' && msg.body.hasOwnProperty('value') && msg.body.value.hasOwnProperty('identities') && msg.body.value.hasOwnProperty('idps')) {\n\n var identities = msg.body.value.identities;\n var idps = msg.body.value.idps;\n\n var value = void 0;\n\n if (identities[0] !== undefined) {\n value = { type: 'identity', value: identities[0], code: 200 };\n } else {\n value = { type: 'idp', value: idps[1].domain, code: 200 };\n }\n\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n\n // to test on the identity side the listener without the timeout\n // can represent the time the user takes to choose and identity\n if (msg.body.value === 'wait') {\n\n setTimeout(function () {\n _this._messageBus.postMessage(replyMsg);\n }, _this._waitTime);\n } else {\n _this._messageBus.postMessage(replyMsg);\n }\n } else {\n log.log('Ignoring messages not intended to FakeGUI.', msg);\n }\n });\n};\n\nexports.default = GuiFake;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDc2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9pZGVudGl0eS9HdWlGYWtlLmpzP2Q4YTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9nIFN5c3RlbVxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdJZGVudGl0eU1vZHVsZScpO1xuXG4vKipcbiogZmFrZSBjbGFzcyBmb3IgdGhlIGd1aSB0byBzZWxlY3QgdGhlIGlkZW50aXR5LFxuKiBUT0RPIHJlcGxhY2Ugd2l0aCB0aGUgcHJvcGVyIGlkZW50aXR5IEdVSVxuKlxuKi9cbmNsYXNzIEd1aUZha2Uge1xuXG4gIGNvbnN0cnVjdG9yKHVybCwgbWVzc2FnZUJ1cykge1xuICAgIGxvZy5sb2coJ0Zha2VHVUlfZGVwbG95ZWQnKTtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMuX3VybCA9IHVybDtcbiAgICBfdGhpcy5fd2FpdFRpbWUgPSAxMDAwMDtcbiAgICBfdGhpcy5fbWVzc2FnZUJ1cyA9IG1lc3NhZ2VCdXM7XG5cbiAgICBfdGhpcy5fbWVzc2FnZUJ1cy5hZGRMaXN0ZW5lcihfdGhpcy5fdXJsLCBtc2cgPT4ge1xuXG4gICAgICBpZiAobXNnLmhhc093blByb3BlcnR5KCd0eXBlJykgJiZcbiAgICAgICAgICBtc2cudHlwZSA9PT0gJ2NyZWF0ZScgJiZcbiAgICAgICAgICBtc2cuYm9keS5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSAmJlxuICAgICAgICAgIG1zZy5ib2R5LnZhbHVlLmhhc093blByb3BlcnR5KCdpZGVudGl0aWVzJykgJiZcbiAgICAgICAgICBtc2cuYm9keS52YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnaWRwcycpKSB7XG5cbiAgICAgICAgbGV0IGlkZW50aXRpZXMgPSBtc2cuYm9keS52YWx1ZS5pZGVudGl0aWVzO1xuICAgICAgICBsZXQgaWRwcyA9IG1zZy5ib2R5LnZhbHVlLmlkcHM7XG5cbiAgICAgICAgbGV0IHZhbHVlO1xuXG4gICAgICAgIGlmIChpZGVudGl0aWVzWzBdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YWx1ZSA9IHt0eXBlOiAnaWRlbnRpdHknLCB2YWx1ZTogaWRlbnRpdGllc1swXSwgY29kZTogMjAwfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZSA9IHt0eXBlOiAnaWRwJywgdmFsdWU6IGlkcHNbMV0uZG9tYWluLCBjb2RlOiAyMDB9O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlcGx5TXNnID0ge2lkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIHRvOiBtc2cuZnJvbSwgZnJvbTogbXNnLnRvLCBib2R5OiB2YWx1ZX07XG5cbiAgICAgICAgLy8gdG8gdGVzdCBvbiB0aGUgaWRlbnRpdHkgc2lkZSB0aGUgbGlzdGVuZXIgd2l0aG91dCB0aGUgdGltZW91dFxuICAgICAgICAvLyBjYW4gcmVwcmVzZW50IHRoZSB0aW1lIHRoZSB1c2VyIHRha2VzIHRvIGNob29zZSBhbmQgaWRlbnRpdHlcbiAgICAgICAgaWYgKG1zZy5ib2R5LnZhbHVlID09PSAnd2FpdCcpIHtcblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UocmVwbHlNc2cpO1xuICAgICAgICAgIH0sIF90aGlzLl93YWl0VGltZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMuX21lc3NhZ2VCdXMucG9zdE1lc3NhZ2UocmVwbHlNc2cpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2cubG9nKCdJZ25vcmluZyBtZXNzYWdlcyBub3QgaW50ZW5kZWQgdG8gRmFrZUdVSS4nLCBtc2cpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgR3VpRmFrZTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvaWRlbnRpdHkvR3VpRmFrZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFEQTtBQUNBOzs7OztBQUFBO0FBQ0E7QUFDQTs7Ozs7QUFKQTtBQUNBO0FBUUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///476\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _Identities = __webpack_require__(206);\n\nvar _Identities2 = _interopRequireDefault(_Identities);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Provides an API to manage identities from msg bus pipeline\n*\n*/\nvar log = logger.getLogger('IdentityManager');\n\nvar IdentityManager = function () {\n function IdentityManager(idm) {\n (0, _classCallCheck3.default)(this, IdentityManager);\n\n var _this = this;\n\n _this._idm = idm;\n }\n\n (0, _createClass3.default)(IdentityManager, [{\n key: 'reset',\n value: function reset() {\n console.log('IM reset');\n\n // this._idm.identities.reset();\n this._idm.identities = new _Identities2.default(this._idm.identities._type, this._idm.identities._storageManager);\n console.log(this._idm.identities);\n }\n }, {\n key: '_isToSetID',\n value: function _isToSetID(message) {\n var schemasToIgnore = ['domain-idp', 'runtime', 'domain'];\n\n var _from = message.from;\n\n if (message.body && message.body.hasOwnProperty('source')) {\n _from = message.body.source;\n }\n\n if (message.body && message.body.hasOwnProperty('subscriber')) {\n _from = message.body.subscriber;\n }\n\n if (message.type === 'forward') {\n return false;\n }\n\n // Signalling Messages between P2P Stubs don't have Identities. FFS\n if (_from.includes('/p2prequester/') || _from.includes('/p2phandler/')) {\n return false;\n }\n\n var splitFrom = _from.split('://');\n var fromSchema = splitFrom[0];\n var isToIgnore = schemasToIgnore.indexOf(fromSchema) === -1;\n\n return isToIgnore;\n }\n }, {\n key: 'processMessage',\n value: function processMessage(message) {\n var _this2 = this;\n\n log.log('[IdentityManager.processMessage] ', message);\n\n return new _promise2.default(function (resolve, reject) {\n\n // skip messages that don't need identity tokens in the body\n\n if (!_this2._isToSetID(message)) return resolve(message);\n\n /* let from = message.from;\n let sourceURL = undefined;\n if ( message.hasOwnProperty('body') && message.body.hasOwnProperty('source')) {\n from = message.body.source;\n }\n if (message.type === 'forward') {\n from = message.body.from;\n }\n if (message.hasOwnProperty('body') && message.body.hasOwnProperty('subscriber')) {\n from = message.body.subscriber;\n }*/\n\n _this2._idm.getToken(message).then(function (identity) {\n\n if (!message.hasOwnProperty('body')) message.body = {};\n\n message.body.identity = identity;\n resolve(message);\n }).catch(function (reason) {\n log.error(reason);\n reject(reason);\n });\n });\n }\n }]);\n return IdentityManager;\n}();\n\nexports.default = IdentityManager;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDc3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9pZGVudGl0eS9JZGVudGl0eU1hbmFnZXIuanM/ZjI3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogUHJvdmlkZXMgYW4gQVBJIHRvIG1hbmFnZSBpZGVudGl0aWVzIGZyb20gbXNnIGJ1cyBwaXBlbGluZVxuKlxuKi9cbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XG5pbXBvcnQgSWRlbnRpdGllcyBmcm9tICcuL0lkZW50aXRpZXMnO1xubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0lkZW50aXR5TWFuYWdlcicpO1xuXG5jbGFzcyBJZGVudGl0eU1hbmFnZXIge1xuXG4gIGNvbnN0cnVjdG9yKGlkbSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBfdGhpcy5faWRtID0gaWRtO1xuXG4gIH1cblxuICByZXNldCgpIHtcbiAgICBjb25zb2xlLmxvZygnSU0gcmVzZXQnKTtcblxuICAgIC8vIHRoaXMuX2lkbS5pZGVudGl0aWVzLnJlc2V0KCk7XG4gICAgdGhpcy5faWRtLmlkZW50aXRpZXMgPSBuZXcgSWRlbnRpdGllcyh0aGlzLl9pZG0uaWRlbnRpdGllcy5fdHlwZSwgdGhpcy5faWRtLmlkZW50aXRpZXMuX3N0b3JhZ2VNYW5hZ2VyKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLl9pZG0uaWRlbnRpdGllcyk7XG4gIH1cblxuICBfaXNUb1NldElEKG1lc3NhZ2UpIHtcbiAgICBsZXQgc2NoZW1hc1RvSWdub3JlID0gWydkb21haW4taWRwJywgJ3J1bnRpbWUnLCAnZG9tYWluJ107XG5cbiAgICBsZXQgX2Zyb20gPSBtZXNzYWdlLmZyb207XG5cbiAgICBpZiAobWVzc2FnZS5ib2R5ICYmIG1lc3NhZ2UuYm9keS5oYXNPd25Qcm9wZXJ0eSgnc291cmNlJykpIHtcbiAgICAgIF9mcm9tID0gbWVzc2FnZS5ib2R5LnNvdXJjZTtcbiAgICB9XG5cbiAgICBpZiAobWVzc2FnZS5ib2R5ICYmIG1lc3NhZ2UuYm9keS5oYXNPd25Qcm9wZXJ0eSgnc3Vic2NyaWJlcicpKSB7XG4gICAgICBfZnJvbSA9IG1lc3NhZ2UuYm9keS5zdWJzY3JpYmVyO1xuICAgIH1cblxuICAgIGlmIChtZXNzYWdlLnR5cGUgPT09ICdmb3J3YXJkJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNpZ25hbGxpbmcgTWVzc2FnZXMgYmV0d2VlbiBQMlAgU3R1YnMgZG9uJ3QgaGF2ZSBJZGVudGl0aWVzLiBGRlNcbiAgICBpZiAoX2Zyb20uaW5jbHVkZXMoJy9wMnByZXF1ZXN0ZXIvJykgfHwgX2Zyb20uaW5jbHVkZXMoJy9wMnBoYW5kbGVyLycpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IHNwbGl0RnJvbSA9IChfZnJvbSkuc3BsaXQoJzovLycpO1xuICAgIGxldCBmcm9tU2NoZW1hID0gc3BsaXRGcm9tWzBdO1xuICAgIGxldCBpc1RvSWdub3JlID0gc2NoZW1hc1RvSWdub3JlLmluZGV4T2YoZnJvbVNjaGVtYSkgPT09IC0xO1xuXG4gICAgcmV0dXJuIGlzVG9JZ25vcmU7XG4gIH1cblxuICBwcm9jZXNzTWVzc2FnZShtZXNzYWdlKSB7XG4gICAgbG9nLmxvZygnW0lkZW50aXR5TWFuYWdlci5wcm9jZXNzTWVzc2FnZV0gJywgbWVzc2FnZSk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICAvLyBza2lwIG1lc3NhZ2VzIHRoYXQgZG9uJ3QgbmVlZCBpZGVudGl0eSB0b2tlbnMgaW4gdGhlIGJvZHlcblxuICAgICAgaWYgKCF0aGlzLl9pc1RvU2V0SUQobWVzc2FnZSkpIHJldHVybiByZXNvbHZlKG1lc3NhZ2UpO1xuXG4gICAgICAvKiAgICAgIGxldCBmcm9tID0gbWVzc2FnZS5mcm9tO1xuICAgICAgbGV0IHNvdXJjZVVSTCA9IHVuZGVmaW5lZDtcbiAgICAgIGlmICggbWVzc2FnZS5oYXNPd25Qcm9wZXJ0eSgnYm9keScpICYmIG1lc3NhZ2UuYm9keS5oYXNPd25Qcm9wZXJ0eSgnc291cmNlJykpIHtcbiAgICAgICAgZnJvbSA9IG1lc3NhZ2UuYm9keS5zb3VyY2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09ICdmb3J3YXJkJykge1xuICAgICAgICBmcm9tID0gbWVzc2FnZS5ib2R5LmZyb207XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXNzYWdlLmhhc093blByb3BlcnR5KCdib2R5JykgJiYgbWVzc2FnZS5ib2R5Lmhhc093blByb3BlcnR5KCdzdWJzY3JpYmVyJykpIHtcbiAgICAgICAgZnJvbSA9IG1lc3NhZ2UuYm9keS5zdWJzY3JpYmVyO1xuICAgICAgfSovXG5cbiAgICAgIHRoaXMuX2lkbS5nZXRUb2tlbihtZXNzYWdlKS50aGVuKChpZGVudGl0eSkgPT4ge1xuXG4gICAgICAgIGlmICghbWVzc2FnZS5oYXNPd25Qcm9wZXJ0eSgnYm9keScpKSBtZXNzYWdlLmJvZHkgPSB7fTtcblxuICAgICAgICBtZXNzYWdlLmJvZHkuaWRlbnRpdHkgPSBpZGVudGl0eTtcbiAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcbiAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcbiAgICAgICAgbG9nLmVycm9yKHJlYXNvbik7XG4gICAgICAgIHJlamVjdChyZWFzb24pO1xuICAgICAgfSk7XG5cbiAgICB9KTtcblxuXG4gIH1cblxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IElkZW50aXR5TWFuYWdlcjtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvaWRlbnRpdHkvSWRlbnRpdHlNYW5hZ2VyLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7QUFOQTs7OztBQU1BO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7Ozs7O0FBS0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///477\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _ActionsService = __webpack_require__(479);\n\nvar _ActionsService2 = _interopRequireDefault(_ActionsService);\n\nvar _PDP = __webpack_require__(480);\n\nvar _PDP2 = _interopRequireDefault(_PDP);\n\nvar _Policy = __webpack_require__(481);\n\nvar _Policy2 = _interopRequireDefault(_Policy);\n\nvar _utils = __webpack_require__(11);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('PEP'); // Log System\n\nvar PEP = function () {\n\n /**\n * Creates a Policy Enforcement Point (PEP) instance\n * @param {Object} context\n */\n function PEP(context) {\n (0, _classCallCheck3.default)(this, PEP);\n\n var _this = this;\n\n _this.pdp = new _PDP2.default(context);\n _this.actionsService = new _ActionsService2.default(context);\n _this.context = context;\n context.pep = _this;\n\n //TODO should be added a trigger to verify when the loadConfigurations is successfully completed\n context.loadConfigurations();\n }\n\n /**\n * return the messageBus in this Registry\n * @param {MessageBus} messageBus\n */\n\n\n (0, _createClass3.default)(PEP, [{\n key: 'addGUIListeners',\n value: function addGUIListeners() {\n var _this = this;\n\n _this.context.messageBus.addListener(_this.context.pepURL, function (msg) {\n var funcName = msg.body.method;\n\n var returnedValue = void 0;\n if (funcName === 'addToGroup') {\n var groupName = msg.body.params.groupName;\n var userEmail = msg.body.params.userEmail;\n returnedValue = _this.context.addToGroup(groupName, userEmail);\n } else if (funcName === 'createGroup') {\n var _groupName = msg.body.params.groupName;\n returnedValue = _this.context.createGroup(_groupName);\n } else if (funcName === 'addPolicy') {\n var source = msg.body.params.source;\n var key = msg.body.params.key;\n var policy = msg.body.params.policy;\n var combiningAlgorithm = msg.body.params.combiningAlgorithm;\n returnedValue = _this.addPolicy(source, key, policy, combiningAlgorithm);\n } else if (funcName === 'deleteGroup') {\n var _groupName2 = msg.body.params.groupName;\n returnedValue = _this.context.deleteGroup(_groupName2);\n } else if (funcName === 'removePolicy') {\n var _source = msg.body.params.source;\n var _key = msg.body.params.key;\n returnedValue = _this.removePolicy(_source, _key);\n } else if (funcName === 'savePolicies') {\n var _source2 = msg.body.params.source;\n returnedValue = _this.context.savePolicies(_source2);\n } else if (funcName === 'userPolicies') {\n returnedValue = _this.context.userPolicies;\n } else if (funcName === 'activeUserPolicy') {\n var userPolicy = msg.body.params.userPolicy;\n if (userPolicy) {\n _this.context.activeUserPolicy = userPolicy;\n }\n returnedValue = _this.context.activeUserPolicy;\n } else if (funcName === 'userPolicy') {\n var _key2 = msg.body.params.key;\n returnedValue = _this.context.userPolicies[_key2];\n } else if (funcName === 'saveActivePolicy') {\n returnedValue = _this.context.saveActivePolicy();\n } else if (funcName === 'getMyEmails') {\n returnedValue = _this.context.getMyEmails();\n } else if (funcName === 'getMyHyperties') {\n returnedValue = _this.context.getMyHyperties();\n } else if (funcName === 'groups') {\n returnedValue = _this.context.groups;\n } else if (funcName === 'getGroupsNames') {\n returnedValue = _this.context.getGroupsNames();\n }if (funcName === 'removeFromGroup') {\n var _groupName3 = msg.body.params.groupName;\n var _userEmail = msg.body.params.userEmail;\n returnedValue = _this.context.removeFromGroup(_groupName3, _userEmail);\n }\n\n var value = { type: 'execute', value: returnedValue, code: 200 };\n var replyMsg = { id: msg.id, type: 'response', to: msg.from, from: msg.to, body: value };\n _this.context.messageBus.postMessage(replyMsg);\n });\n }\n\n /**\n * Adds a policy to the Policy Enforcement Point (PEP). The policy can be created by the service\n * provider or by the user.\n * @param {String} source\n * @param {String} key\n * @param {Object} policy\n */\n\n }, {\n key: 'addPolicy',\n value: function addPolicy(source, key, policy, combiningAlgorithm) {\n if (!source) throw new Error('source is not defined');\n if (!key) throw new Error('key is not defined');\n\n if (policy === undefined) {\n policy = new _Policy2.default(key, [], [], combiningAlgorithm);\n } else {\n if (!(policy instanceof _Policy2.default)) {\n policy = new _Policy2.default(policy.key, policy.rules, policy.actions, policy.combiningAlgorithm);\n }\n }\n\n switch (source) {\n case 'SERVICE_PROVIDER':\n this.context.savePolicies(source, policy, key);\n break;\n case 'USER':\n this.context.userPolicies[key] = policy;\n this.context.savePolicies(source);\n break;\n default:\n throw Error('Unknown policy source: ' + source);\n }\n }\n }, {\n key: 'authorise',\n value: function authorise(message, isIncoming) {\n var _this2 = this;\n\n // log.log('[Policy.PEP Authorise] ', message);\n // log.log(message);\n if (!message) throw new Error('message is not defined');\n if (!message.from) throw new Error('message.from is not defined');\n if (!message.to) throw new Error('message.to is not defined');\n if (!message.type) throw new Error('message.type is not defined');\n message.body = message.body || {};\n\n return new _promise2.default(function (resolve, reject) {\n\n message.body = message.body || {};\n var _this = _this2;\n\n var result = _this.pdp.evaluatePolicies(message, isIncoming);\n if (result === 'Not Applicable') {\n result = _this.context.defaultBehaviour;\n message.body.auth = false;\n }\n _this.actionsService.enforcePolicies(message, isIncoming).then(function (messages) {\n for (var i in messages) {\n message = messages[i];\n if (result) {\n message.body.auth = message.body.auth === undefined ? true : message.body.auth;\n resolve(message);\n } else {\n var errorMessage = { body: { code: 403, description: 'Blocked by policy' }, from: message.to, to: message.from, type: 'response' };\n reject(errorMessage);\n }\n }\n }, function (error) {\n reject(error);\n });\n });\n }\n }, {\n key: 'authoriseSync',\n value: function authoriseSync(message) {\n var result = void 0;\n message.body = message.body || {};\n result = this.pdp.evaluatePolicies(message, true);\n if (result === 'Not Applicable') {\n result = this.context.defaultBehaviour;\n }\n return result;\n }\n }, {\n key: 'removePolicy',\n value: function removePolicy(source, key) {\n if (!source) throw new Error('source is not defined');\n if (source !== '*' && !key) throw new Error('key is not defined');\n\n switch (source) {\n case '*':\n this.context.serviceProviderPolicy = {};\n this.context.userPolicies = {};\n this.context.activeUserPolicy = undefined;\n this.context.savePolicies('USER');\n this.context.savePolicies('SERVICE_PROVIDER');\n this.context.saveActivePolicy();\n break;\n case 'SERVICE_PROVIDER':\n delete this.context.serviceProviderPolicy[key];\n this.context.savePolicies();\n break;\n case 'USER':\n delete this.context.userPolicies[key];\n if (key === this.context.activeUserPolicy) {\n this.context.activeUserPolicy = undefined;\n this.context.saveActivePolicy();\n }\n this.context.savePolicies('USER');\n break;\n default:\n throw Error('Unknown policy source: ' + source);\n }\n }\n }, {\n key: 'messageBus',\n get: function get() {\n var _this = this;\n return _this.context.messageBus;\n }\n\n /**\n * Set the messageBus in this Registry\n * @param {MessageBus} messageBus\n */\n ,\n set: function set(messageBus) {\n var _this = this;\n _this.context.messageBus = messageBus;\n _this.addGUIListeners();\n }\n }]);\n return PEP;\n}();\n\nexports.default = PEP;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDc4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUEVQLmpzPzQ3ZjIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9nIFN5c3RlbVxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdQRVAnKTtcblxuaW1wb3J0IEFjdGlvbnNTZXJ2aWNlIGZyb20gJy4vQWN0aW9uc1NlcnZpY2UnO1xuaW1wb3J0IFBEUCBmcm9tICcuL1BEUCc7XG5pbXBvcnQgUG9saWN5IGZyb20gJy4vUG9saWN5JztcbmltcG9ydCB7aXNIeXBlcnR5VVJMfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5cbmNsYXNzIFBFUCB7XG5cbiAgLyoqXG4gICogQ3JlYXRlcyBhIFBvbGljeSBFbmZvcmNlbWVudCBQb2ludCAoUEVQKSBpbnN0YW5jZVxuICAqIEBwYXJhbSAgICB7T2JqZWN0fSAgICBjb250ZXh0XG4gICovXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMucGRwID0gbmV3IFBEUChjb250ZXh0KTtcbiAgICBfdGhpcy5hY3Rpb25zU2VydmljZSA9IG5ldyBBY3Rpb25zU2VydmljZShjb250ZXh0KTtcbiAgICBfdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICBjb250ZXh0LnBlcCA9IF90aGlzO1xuXG4gICAgLy9UT0RPIHNob3VsZCBiZSBhZGRlZCBhIHRyaWdnZXIgdG8gdmVyaWZ5IHdoZW4gdGhlIGxvYWRDb25maWd1cmF0aW9ucyBpcyBzdWNjZXNzZnVsbHkgY29tcGxldGVkXG4gICAgY29udGV4dC5sb2FkQ29uZmlndXJhdGlvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAqIHJldHVybiB0aGUgbWVzc2FnZUJ1cyBpbiB0aGlzIFJlZ2lzdHJ5XG4gICogQHBhcmFtIHtNZXNzYWdlQnVzfSAgICAgICAgICAgbWVzc2FnZUJ1c1xuICAqL1xuICBnZXQgbWVzc2FnZUJ1cygpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBfdGhpcy5jb250ZXh0Lm1lc3NhZ2VCdXM7XG4gIH1cblxuICAvKipcbiAgKiBTZXQgdGhlIG1lc3NhZ2VCdXMgaW4gdGhpcyBSZWdpc3RyeVxuICAqIEBwYXJhbSB7TWVzc2FnZUJ1c30gICAgICAgICAgIG1lc3NhZ2VCdXNcbiAgKi9cbiAgc2V0IG1lc3NhZ2VCdXMobWVzc2FnZUJ1cykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgX3RoaXMuY29udGV4dC5tZXNzYWdlQnVzID0gbWVzc2FnZUJ1cztcbiAgICBfdGhpcy5hZGRHVUlMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIGFkZEdVSUxpc3RlbmVycygpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMuY29udGV4dC5tZXNzYWdlQnVzLmFkZExpc3RlbmVyKF90aGlzLmNvbnRleHQucGVwVVJMLCAobXNnKSA9PiB7XG4gICAgICBsZXQgZnVuY05hbWUgPSBtc2cuYm9keS5tZXRob2Q7XG5cbiAgICAgIGxldCByZXR1cm5lZFZhbHVlO1xuICAgICAgaWYgKGZ1bmNOYW1lID09PSAnYWRkVG9Hcm91cCcpIHtcbiAgICAgICAgbGV0IGdyb3VwTmFtZSA9IG1zZy5ib2R5LnBhcmFtcy5ncm91cE5hbWU7XG4gICAgICAgIGxldCB1c2VyRW1haWwgPSBtc2cuYm9keS5wYXJhbXMudXNlckVtYWlsO1xuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC5hZGRUb0dyb3VwKGdyb3VwTmFtZSwgdXNlckVtYWlsKTtcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdjcmVhdGVHcm91cCcpIHtcbiAgICAgICAgbGV0IGdyb3VwTmFtZSA9IG1zZy5ib2R5LnBhcmFtcy5ncm91cE5hbWU7XG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5jb250ZXh0LmNyZWF0ZUdyb3VwKGdyb3VwTmFtZSk7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnYWRkUG9saWN5Jykge1xuICAgICAgICBsZXQgc291cmNlID0gbXNnLmJvZHkucGFyYW1zLnNvdXJjZTtcbiAgICAgICAgbGV0IGtleSA9IG1zZy5ib2R5LnBhcmFtcy5rZXk7XG4gICAgICAgIGxldCBwb2xpY3kgPSBtc2cuYm9keS5wYXJhbXMucG9saWN5O1xuICAgICAgICBsZXQgY29tYmluaW5nQWxnb3JpdGhtID0gbXNnLmJvZHkucGFyYW1zLmNvbWJpbmluZ0FsZ29yaXRobTtcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmFkZFBvbGljeShzb3VyY2UsIGtleSwgcG9saWN5LCBjb21iaW5pbmdBbGdvcml0aG0pO1xuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ2RlbGV0ZUdyb3VwJykge1xuICAgICAgICBsZXQgZ3JvdXBOYW1lID0gbXNnLmJvZHkucGFyYW1zLmdyb3VwTmFtZTtcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuZGVsZXRlR3JvdXAoZ3JvdXBOYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdyZW1vdmVQb2xpY3knKSB7XG4gICAgICAgIGxldCBzb3VyY2UgPSBtc2cuYm9keS5wYXJhbXMuc291cmNlO1xuICAgICAgICBsZXQga2V5ID0gbXNnLmJvZHkucGFyYW1zLmtleTtcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLnJlbW92ZVBvbGljeShzb3VyY2UsIGtleSk7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnc2F2ZVBvbGljaWVzJykge1xuICAgICAgICBsZXQgc291cmNlID0gbXNnLmJvZHkucGFyYW1zLnNvdXJjZTtcbiAgICAgICAgcmV0dXJuZWRWYWx1ZSA9IF90aGlzLmNvbnRleHQuc2F2ZVBvbGljaWVzKHNvdXJjZSk7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAndXNlclBvbGljaWVzJykge1xuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC51c2VyUG9saWNpZXM7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnYWN0aXZlVXNlclBvbGljeScpIHtcbiAgICAgICAgbGV0IHVzZXJQb2xpY3kgPSBtc2cuYm9keS5wYXJhbXMudXNlclBvbGljeTtcbiAgICAgICAgaWYgKHVzZXJQb2xpY3kpIHsgX3RoaXMuY29udGV4dC5hY3RpdmVVc2VyUG9saWN5ID0gdXNlclBvbGljeTsgfVxuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC5hY3RpdmVVc2VyUG9saWN5O1xuICAgICAgfSBlbHNlIGlmIChmdW5jTmFtZSA9PT0gJ3VzZXJQb2xpY3knKSB7XG4gICAgICAgIGxldCBrZXkgPSBtc2cuYm9keS5wYXJhbXMua2V5O1xuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC51c2VyUG9saWNpZXNba2V5XTtcbiAgICAgIH0gZWxzZSBpZiAoZnVuY05hbWUgPT09ICdzYXZlQWN0aXZlUG9saWN5Jykge1xuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC5zYXZlQWN0aXZlUG9saWN5KCk7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnZ2V0TXlFbWFpbHMnKSB7XG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5jb250ZXh0LmdldE15RW1haWxzKCk7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnZ2V0TXlIeXBlcnRpZXMnKSB7XG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5jb250ZXh0LmdldE15SHlwZXJ0aWVzKCk7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnZ3JvdXBzJykge1xuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC5ncm91cHM7XG4gICAgICB9IGVsc2UgaWYgKGZ1bmNOYW1lID09PSAnZ2V0R3JvdXBzTmFtZXMnKSB7XG4gICAgICAgIHJldHVybmVkVmFsdWUgPSBfdGhpcy5jb250ZXh0LmdldEdyb3Vwc05hbWVzKCk7XG4gICAgICB9IGlmIChmdW5jTmFtZSA9PT0gJ3JlbW92ZUZyb21Hcm91cCcpIHtcbiAgICAgICAgbGV0IGdyb3VwTmFtZSA9IG1zZy5ib2R5LnBhcmFtcy5ncm91cE5hbWU7XG4gICAgICAgIGxldCB1c2VyRW1haWwgPSBtc2cuYm9keS5wYXJhbXMudXNlckVtYWlsO1xuICAgICAgICByZXR1cm5lZFZhbHVlID0gX3RoaXMuY29udGV4dC5yZW1vdmVGcm9tR3JvdXAoZ3JvdXBOYW1lLCB1c2VyRW1haWwpO1xuICAgICAgfVxuXG4gICAgICBsZXQgdmFsdWUgPSB7dHlwZTogJ2V4ZWN1dGUnLCB2YWx1ZTogcmV0dXJuZWRWYWx1ZSwgY29kZTogMjAwfTtcbiAgICAgIGxldCByZXBseU1zZyA9IHtpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCB0bzogbXNnLmZyb20sIGZyb206IG1zZy50bywgYm9keTogdmFsdWV9O1xuICAgICAgX3RoaXMuY29udGV4dC5tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKHJlcGx5TXNnKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIEFkZHMgYSBwb2xpY3kgdG8gdGhlIFBvbGljeSBFbmZvcmNlbWVudCBQb2ludCAoUEVQKS4gVGhlIHBvbGljeSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgc2VydmljZVxuICAqIHByb3ZpZGVyIG9yIGJ5IHRoZSB1c2VyLlxuICAqIEBwYXJhbSAgICB7U3RyaW5nfSAgICBzb3VyY2VcbiAgKiBAcGFyYW0gICAge1N0cmluZ30gICAga2V5XG4gICogQHBhcmFtICAgIHtPYmplY3R9ICAgIHBvbGljeVxuICAqL1xuICBhZGRQb2xpY3koc291cmNlLCBrZXksIHBvbGljeSwgY29tYmluaW5nQWxnb3JpdGhtKSB7XG4gICAgaWYgKCFzb3VyY2UpIHRocm93IG5ldyBFcnJvcignc291cmNlIGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgaWYgKCFrZXkpIHRocm93IG5ldyBFcnJvcigna2V5IGlzIG5vdCBkZWZpbmVkJyk7XG5cbiAgICBpZiAocG9saWN5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHBvbGljeSA9IG5ldyBQb2xpY3koa2V5LCBbXSwgW10sIGNvbWJpbmluZ0FsZ29yaXRobSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghKHBvbGljeSBpbnN0YW5jZW9mIFBvbGljeSkpIHtcbiAgICAgICAgcG9saWN5ID0gbmV3IFBvbGljeShwb2xpY3kua2V5LCBwb2xpY3kucnVsZXMsIHBvbGljeS5hY3Rpb25zLCBwb2xpY3kuY29tYmluaW5nQWxnb3JpdGhtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKHNvdXJjZSkge1xuICAgICAgY2FzZSAnU0VSVklDRV9QUk9WSURFUic6XG4gICAgICAgIHRoaXMuY29udGV4dC5zYXZlUG9saWNpZXMoc291cmNlLCBwb2xpY3ksIGtleSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVVNFUic6XG4gICAgICAgIHRoaXMuY29udGV4dC51c2VyUG9saWNpZXNba2V5XSA9IHBvbGljeTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmVQb2xpY2llcyhzb3VyY2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IEVycm9yKCdVbmtub3duIHBvbGljeSBzb3VyY2U6ICcgKyBzb3VyY2UpO1xuICAgIH1cbiAgfVxuXG4gIGF1dGhvcmlzZShtZXNzYWdlLCBpc0luY29taW5nKSB7XG4gICAgLy8gbG9nLmxvZygnW1BvbGljeS5QRVAgQXV0aG9yaXNlXSAnLCBtZXNzYWdlKTtcbiAgICAvLyBsb2cubG9nKG1lc3NhZ2UpO1xuICAgIGlmICghbWVzc2FnZSkgdGhyb3cgbmV3IEVycm9yKCdtZXNzYWdlIGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgaWYgKCFtZXNzYWdlLmZyb20pIHRocm93IG5ldyBFcnJvcignbWVzc2FnZS5mcm9tIGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgaWYgKCFtZXNzYWdlLnRvKSB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UudG8gaXMgbm90IGRlZmluZWQnKTtcbiAgICBpZiAoIW1lc3NhZ2UudHlwZSkgdGhyb3cgbmV3IEVycm9yKCdtZXNzYWdlLnR5cGUgaXMgbm90IGRlZmluZWQnKTtcbiAgICBtZXNzYWdlLmJvZHkgPSBtZXNzYWdlLmJvZHkgfHwge307XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBtZXNzYWdlLmJvZHkgPSBtZXNzYWdlLmJvZHkgfHwge307XG4gICAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBsZXQgcmVzdWx0ID0gX3RoaXMucGRwLmV2YWx1YXRlUG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZyk7XG4gICAgICBpZiAocmVzdWx0ID09PSAnTm90IEFwcGxpY2FibGUnKSB7XG4gICAgICAgIHJlc3VsdCA9IF90aGlzLmNvbnRleHQuZGVmYXVsdEJlaGF2aW91cjtcbiAgICAgICAgbWVzc2FnZS5ib2R5LmF1dGggPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIF90aGlzLmFjdGlvbnNTZXJ2aWNlLmVuZm9yY2VQb2xpY2llcyhtZXNzYWdlLCBpc0luY29taW5nKS50aGVuKG1lc3NhZ2VzID0+IHtcbiAgICAgICAgZm9yIChsZXQgaSBpbiBtZXNzYWdlcykge1xuICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlc1tpXTtcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICBtZXNzYWdlLmJvZHkuYXV0aCA9IChtZXNzYWdlLmJvZHkuYXV0aCA9PT0gdW5kZWZpbmVkKSA/IHRydWUgOiBtZXNzYWdlLmJvZHkuYXV0aDtcbiAgICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSB7IGJvZHk6IHsgY29kZTogNDAzLCBkZXNjcmlwdGlvbjogJ0Jsb2NrZWQgYnkgcG9saWN5JyB9LCBmcm9tOiBtZXNzYWdlLnRvLCB0bzogbWVzc2FnZS5mcm9tLCB0eXBlOiAncmVzcG9uc2UnIH07XG4gICAgICAgICAgICByZWplY3QoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfVxuICBhdXRob3Jpc2VTeW5jKG1lc3NhZ2UpIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIG1lc3NhZ2UuYm9keSA9IG1lc3NhZ2UuYm9keSB8fCB7fTtcbiAgICByZXN1bHQgPSB0aGlzLnBkcC5ldmFsdWF0ZVBvbGljaWVzKG1lc3NhZ2UsIHRydWUpO1xuICAgIGlmIChyZXN1bHQgPT09ICdOb3QgQXBwbGljYWJsZScpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuY29udGV4dC5kZWZhdWx0QmVoYXZpb3VyO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuXG4gIH1cblxuICByZW1vdmVQb2xpY3koc291cmNlLCBrZXkpIHtcbiAgICBpZiAoIXNvdXJjZSkgdGhyb3cgbmV3IEVycm9yKCdzb3VyY2UgaXMgbm90IGRlZmluZWQnKTtcbiAgICBpZiAoc291cmNlICE9PSAnKicgJiYgIWtleSkgdGhyb3cgbmV3IEVycm9yKCdrZXkgaXMgbm90IGRlZmluZWQnKTtcblxuICAgIHN3aXRjaCAoc291cmNlKSB7XG4gICAgICBjYXNlICcqJzpcbiAgICAgICAgdGhpcy5jb250ZXh0LnNlcnZpY2VQcm92aWRlclBvbGljeSA9IHt9O1xuICAgICAgICB0aGlzLmNvbnRleHQudXNlclBvbGljaWVzID0ge307XG4gICAgICAgIHRoaXMuY29udGV4dC5hY3RpdmVVc2VyUG9saWN5ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNvbnRleHQuc2F2ZVBvbGljaWVzKCdVU0VSJyk7XG4gICAgICAgIHRoaXMuY29udGV4dC5zYXZlUG9saWNpZXMoJ1NFUlZJQ0VfUFJPVklERVInKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmVBY3RpdmVQb2xpY3koKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdTRVJWSUNFX1BST1ZJREVSJzpcbiAgICAgICAgZGVsZXRlIHRoaXMuY29udGV4dC5zZXJ2aWNlUHJvdmlkZXJQb2xpY3lba2V5XTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmVQb2xpY2llcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1VTRVInOlxuICAgICAgICBkZWxldGUgdGhpcy5jb250ZXh0LnVzZXJQb2xpY2llc1trZXldO1xuICAgICAgICBpZiAoa2V5ID09PSB0aGlzLmNvbnRleHQuYWN0aXZlVXNlclBvbGljeSkge1xuICAgICAgICAgIHRoaXMuY29udGV4dC5hY3RpdmVVc2VyUG9saWN5ID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHRoaXMuY29udGV4dC5zYXZlQWN0aXZlUG9saWN5KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmVQb2xpY2llcygnVVNFUicpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IEVycm9yKCdVbmtub3duIHBvbGljeSBzb3VyY2U6ICcgKyBzb3VyY2UpO1xuICAgIH1cbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IFBFUDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L1BFUC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7OztBQU5BO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVdBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF0QkE7QUF3QkE7OztBQXZMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUE4S0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///478\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ActionsService = function () {\n function ActionsService(context) {\n (0, _classCallCheck3.default)(this, ActionsService);\n\n this.context = context;\n }\n\n (0, _createClass3.default)(ActionsService, [{\n key: 'enforcePolicies',\n value: function enforcePolicies(message, isIncomingMessage) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n\n var policies = _this.context.getPolicies(message, isIncomingMessage);\n\n if (policies !== undefined) {\n if (policies.serviceProviderPolicy !== undefined) {\n policies.serviceProviderPolicy.enforceActions(_this.context, message).then(function (messages) {\n resolve(messages);\n }, function (error) {\n reject(error);\n });\n } else {\n if (policies.userPolicy !== undefined) {\n policies.userPolicy.enforceActions(_this.context, message).then(function (messages) {\n resolve(messages);\n }, function (error) {\n reject(error);\n });\n } else {\n resolve([message]);\n }\n }\n } else {\n resolve([message]);\n }\n });\n }\n }, {\n key: 'forwardToID',\n value: function forwardToID(message, email) {\n var _this = this;\n if (!_this.context.runtimeRegistry) throw new Error('forward message to given ID is unsupported in this environment');\n\n return new _promise2.default(function (resolve, reject) {\n if (_this.context.runtimeRegistry.hypertiesList[0].hypertyURL === message.to) {\n var splitTo = message.to.split('://');\n if (splitTo[0] !== 'runtime') {\n _this.context.runtimeRegistry.discoverHypertyPerUser(email).then(function (result) {\n message.to = result.hypertyURL;\n message.body.via = undefined;\n resolve(message);\n _this.context.runtimeRegistry._messageBus.postMessage(message);\n }, function (error) {\n reject(error);\n });\n } else {\n resolve(message);\n }\n } else {\n resolve(message);\n }\n });\n }\n }, {\n key: 'forwardToHyperty',\n value: function forwardToHyperty(message, hypertyURL) {\n var _this = this;\n if (!_this.context.runtimeRegistry) throw new Error('forward message to given ID is unsupported in this environment');\n\n return new _promise2.default(function (resolve) {\n if (_this.context.runtimeRegistry.hypertiesList[0].hypertyURL === message.to) {\n var splitTo = message.to.split('://');\n if (splitTo[0] !== 'runtime') {\n message.to = hypertyURL;\n message.body.via = undefined;\n resolve(message);\n _this.context.runtimeRegistry._messageBus.postMessage(message);\n } else {\n resolve(message);\n }\n } else {\n resolve(message);\n }\n });\n }\n }, {\n key: 'sendAutomaticMessage',\n value: function sendAutomaticMessage(message, text) {\n var _this = this;\n return new _promise2.default(function (resolve) {\n var automaticMessage = {\n from: message.to,\n to: message.from,\n body: {\n value: text\n },\n type: message.type\n };\n resolve(message);\n _this.context.runtimeRegistry._messageBus.postMessage(automaticMessage);\n });\n }\n }]);\n return ActionsService;\n}();\n\nexports.default = ActionsService;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDc5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvQWN0aW9uc1NlcnZpY2UuanM/MjliZCJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBBY3Rpb25zU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dCkge1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gIH1cblxuICBlbmZvcmNlUG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZ01lc3NhZ2UpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgIGxldCBwb2xpY2llcyA9IF90aGlzLmNvbnRleHQuZ2V0UG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZ01lc3NhZ2UpO1xuXG4gICAgICBpZiAocG9saWNpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAocG9saWNpZXMuc2VydmljZVByb3ZpZGVyUG9saWN5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwb2xpY2llcy5zZXJ2aWNlUHJvdmlkZXJQb2xpY3kuZW5mb3JjZUFjdGlvbnMoX3RoaXMuY29udGV4dCwgbWVzc2FnZSkudGhlbihtZXNzYWdlcyA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2VzKTtcbiAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHBvbGljaWVzLnVzZXJQb2xpY3kgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcG9saWNpZXMudXNlclBvbGljeS5lbmZvcmNlQWN0aW9ucyhfdGhpcy5jb250ZXh0LCBtZXNzYWdlKS50aGVuKG1lc3NhZ2VzID0+IHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShtZXNzYWdlcyk7XG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKFttZXNzYWdlXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKFttZXNzYWdlXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmb3J3YXJkVG9JRChtZXNzYWdlLCBlbWFpbCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgaWYgKCFfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeSkgdGhyb3cgbmV3IEVycm9yKCdmb3J3YXJkIG1lc3NhZ2UgdG8gZ2l2ZW4gSUQgaXMgdW5zdXBwb3J0ZWQgaW4gdGhpcyBlbnZpcm9ubWVudCcpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeS5oeXBlcnRpZXNMaXN0WzBdLmh5cGVydHlVUkwgPT09IG1lc3NhZ2UudG8pIHtcbiAgICAgICAgbGV0IHNwbGl0VG8gPSAobWVzc2FnZS50bykuc3BsaXQoJzovLycpO1xuICAgICAgICBpZiAoc3BsaXRUb1swXSAhPT0gJ3J1bnRpbWUnKSB7XG4gICAgICAgICAgX3RoaXMuY29udGV4dC5ydW50aW1lUmVnaXN0cnkuZGlzY292ZXJIeXBlcnR5UGVyVXNlcihlbWFpbCkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgbWVzc2FnZS50byA9IHJlc3VsdC5oeXBlcnR5VVJMO1xuICAgICAgICAgICAgbWVzc2FnZS5ib2R5LnZpYSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7XG4gICAgICAgICAgICBfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZvcndhcmRUb0h5cGVydHkobWVzc2FnZSwgaHlwZXJ0eVVSTCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgaWYgKCFfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeSkgdGhyb3cgbmV3IEVycm9yKCdmb3J3YXJkIG1lc3NhZ2UgdG8gZ2l2ZW4gSUQgaXMgdW5zdXBwb3J0ZWQgaW4gdGhpcyBlbnZpcm9ubWVudCcpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBpZiAoX3RoaXMuY29udGV4dC5ydW50aW1lUmVnaXN0cnkuaHlwZXJ0aWVzTGlzdFswXS5oeXBlcnR5VVJMID09PSBtZXNzYWdlLnRvKSB7XG4gICAgICAgIGxldCBzcGxpdFRvID0gKG1lc3NhZ2UudG8pLnNwbGl0KCc6Ly8nKTtcbiAgICAgICAgaWYgKHNwbGl0VG9bMF0gIT09ICdydW50aW1lJykge1xuICAgICAgICAgIG1lc3NhZ2UudG8gPSBoeXBlcnR5VVJMO1xuICAgICAgICAgIG1lc3NhZ2UuYm9keS52aWEgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcbiAgICAgICAgICBfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2VuZEF1dG9tYXRpY01lc3NhZ2UobWVzc2FnZSwgdGV4dCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBsZXQgYXV0b21hdGljTWVzc2FnZSA9IHtcbiAgICAgICAgZnJvbTogbWVzc2FnZS50byxcbiAgICAgICAgdG86IG1lc3NhZ2UuZnJvbSxcbiAgICAgICAgYm9keToge1xuICAgICAgICAgIHZhbHVlOiB0ZXh0XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IG1lc3NhZ2UudHlwZVxuICAgICAgfTtcbiAgICAgIHJlc29sdmUobWVzc2FnZSk7XG4gICAgICBfdGhpcy5jb250ZXh0LnJ1bnRpbWVSZWdpc3RyeS5fbWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShhdXRvbWF0aWNNZXNzYWdlKTtcbiAgICB9KTtcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFjdGlvbnNTZXJ2aWNlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvQWN0aW9uc1NlcnZpY2UuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFOQTtBQVFBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///479\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Operators = __webpack_require__(145);\n\nvar _Operators2 = _interopRequireDefault(_Operators);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* The Policy Decision Point (PDP) decides if a message is to be authorised by checking a set of\n* policies. The resource to be verified is specified in the first word of the 'condition' field of\n* a Policy object. The implementation that verifies if the message is compliant with a policy is\n* specified in a hashtable to allow dynamic definition of the implementation, providing\n* extensibility to the Policy Engine functionalities.\n*/\nvar PDP = function () {\n function PDP(context) {\n (0, _classCallCheck3.default)(this, PDP);\n\n this.context = context;\n this.operators = new _Operators2.default();\n }\n\n (0, _createClass3.default)(PDP, [{\n key: 'evaluatePolicies',\n value: function evaluatePolicies(message, isIncomingMessage) {\n var policies = this.context.getPolicies(message, isIncomingMessage);\n var result = 'Not Applicable';\n if (policies !== undefined) {\n result = this.evaluatePolicy(message, policies.serviceProviderPolicy, isIncomingMessage);\n if (result || result === 'Not Applicable') {\n var userResult = this.evaluatePolicy(message, policies.userPolicy, isIncomingMessage);\n if (userResult !== 'Not Applicable') {\n result = userResult;\n }\n }\n }\n\n return result;\n }\n }, {\n key: 'evaluatePolicy',\n value: function evaluatePolicy(message, policy, isIncoming) {\n var result = 'Not Applicable';\n if (policy) {\n result = policy.evaluateRules(this.context, message, isIncoming);\n }\n\n return result;\n }\n }]);\n return PDP;\n}();\n\nexports.default = PDP;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDgwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUERQLmpzP2U5YmEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9wZXJhdG9ycyBmcm9tICcuL09wZXJhdG9ycyc7XG5cbi8qKlxuKiBUaGUgUG9saWN5IERlY2lzaW9uIFBvaW50IChQRFApIGRlY2lkZXMgaWYgYSBtZXNzYWdlIGlzIHRvIGJlIGF1dGhvcmlzZWQgYnkgY2hlY2tpbmcgYSBzZXQgb2ZcbiogcG9saWNpZXMuIFRoZSByZXNvdXJjZSB0byBiZSB2ZXJpZmllZCBpcyBzcGVjaWZpZWQgaW4gdGhlIGZpcnN0IHdvcmQgb2YgdGhlICdjb25kaXRpb24nIGZpZWxkIG9mXG4qIGEgUG9saWN5IG9iamVjdC4gVGhlIGltcGxlbWVudGF0aW9uIHRoYXQgdmVyaWZpZXMgaWYgdGhlIG1lc3NhZ2UgaXMgY29tcGxpYW50IHdpdGggYSBwb2xpY3kgaXNcbiogc3BlY2lmaWVkIGluIGEgaGFzaHRhYmxlIHRvIGFsbG93IGR5bmFtaWMgZGVmaW5pdGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24sIHByb3ZpZGluZ1xuKiBleHRlbnNpYmlsaXR5IHRvIHRoZSBQb2xpY3kgRW5naW5lIGZ1bmN0aW9uYWxpdGllcy5cbiovXG5jbGFzcyBQRFAge1xuXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQpIHtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMub3BlcmF0b3JzID0gbmV3IE9wZXJhdG9ycygpO1xuICB9XG5cbiAgZXZhbHVhdGVQb2xpY2llcyhtZXNzYWdlLCBpc0luY29taW5nTWVzc2FnZSkge1xuICAgIGxldCBwb2xpY2llcyA9IHRoaXMuY29udGV4dC5nZXRQb2xpY2llcyhtZXNzYWdlLCBpc0luY29taW5nTWVzc2FnZSk7XG4gICAgbGV0IHJlc3VsdCA9ICdOb3QgQXBwbGljYWJsZSc7XG4gICAgaWYgKHBvbGljaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuZXZhbHVhdGVQb2xpY3kobWVzc2FnZSwgcG9saWNpZXMuc2VydmljZVByb3ZpZGVyUG9saWN5LCBpc0luY29taW5nTWVzc2FnZSk7XG4gICAgICBpZiAocmVzdWx0IHx8IHJlc3VsdCA9PT0gJ05vdCBBcHBsaWNhYmxlJykge1xuICAgICAgICBsZXQgdXNlclJlc3VsdCA9IHRoaXMuZXZhbHVhdGVQb2xpY3kobWVzc2FnZSwgcG9saWNpZXMudXNlclBvbGljeSwgaXNJbmNvbWluZ01lc3NhZ2UpO1xuICAgICAgICBpZiAodXNlclJlc3VsdCAhPT0gJ05vdCBBcHBsaWNhYmxlJykge1xuICAgICAgICAgIHJlc3VsdCA9IHVzZXJSZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZXZhbHVhdGVQb2xpY3kobWVzc2FnZSwgcG9saWN5LCBpc0luY29taW5nKSB7XG4gICAgbGV0IHJlc3VsdCA9ICdOb3QgQXBwbGljYWJsZSc7XG4gICAgaWYgKHBvbGljeSkge1xuICAgICAgcmVzdWx0ID0gcG9saWN5LmV2YWx1YXRlUnVsZXModGhpcy5jb250ZXh0LCBtZXNzYWdlLCBpc0luY29taW5nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUERQO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvUERQLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7Ozs7O0FBQ0E7Ozs7Ozs7QUFPQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///480\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _AllowOverrides = __webpack_require__(207);\n\nvar _AllowOverrides2 = _interopRequireDefault(_AllowOverrides);\n\nvar _BlockOverrides = __webpack_require__(208);\n\nvar _BlockOverrides2 = _interopRequireDefault(_BlockOverrides);\n\nvar _FirstApplicable = __webpack_require__(209);\n\nvar _FirstApplicable2 = _interopRequireDefault(_FirstApplicable);\n\nvar _Rule = __webpack_require__(482);\n\nvar _Rule2 = _interopRequireDefault(_Rule);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Policy = function () {\n function Policy(key, rules, actions, combiningAlgorithm) {\n (0, _classCallCheck3.default)(this, Policy);\n\n if (!key) throw new Error('key is not defined');\n if (!actions) throw new Error('actions are not defined');\n\n this.actions = actions;\n this.key = key;\n this._setRules(rules);\n this._setCombiningAlgorithm(combiningAlgorithm);\n }\n\n (0, _createClass3.default)(Policy, [{\n key: 'addAction',\n value: function addAction(method, param) {\n this.actions.push({ method: method, param: param });\n }\n }, {\n key: 'createRule',\n value: function createRule(decision, condition, scope, target, priority) {\n if (priority === undefined) {\n priority = this.getLastPriority() + 1;\n }\n var rule = new _Rule2.default(decision, condition, scope, target, priority);\n this.rules.push(rule);\n }\n }, {\n key: 'deleteRule',\n value: function deleteRule(rule) {\n var indexToRemove = this.rules.indexOf(rule);\n this.rules.splice(indexToRemove, 1);\n }\n }, {\n key: 'enforceActions',\n value: function enforceActions(context, message) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n var results = [];\n if (_this.actions.length !== 0) {\n for (var i in _this.actions) {\n var result = context.pep.actionsService[_this.actions[i].method](message, _this.actions[i].param);\n results.push(result);\n }\n _promise2.default.all(results).then(function (messages) {\n resolve(messages);\n }, function (error) {\n reject(error);\n });\n } else {\n resolve([message]);\n }\n });\n }\n }, {\n key: 'evaluateRules',\n value: function evaluateRules(context, message, isIncoming) {\n var results = [];\n for (var i in this.rules) {\n results.push(this.rules[i].evaluate(context, message, isIncoming));\n }\n\n return this.combiningAlgorithm.combine(results);\n }\n }, {\n key: 'getLastPriority',\n value: function getLastPriority() {\n var priorities = [];\n\n if (this.rules.length !== 0) {\n for (var i in this.rules) {\n priorities.push(this.rules[i].priority);\n }\n return Math.max.apply(Math, priorities);\n } else {\n return -1;\n }\n }\n }, {\n key: 'getRuleByPriority',\n value: function getRuleByPriority(priority) {\n for (var i in this.rules) {\n if (String(this.rules[i].priority) === String(priority)) {\n return this.rules[i];\n }\n }\n throw Error('Rule with priority ' + priority + ' does not exist!');\n }\n }, {\n key: '_setCombiningAlgorithm',\n value: function _setCombiningAlgorithm(combiningAlgorithm) {\n if (!combiningAlgorithm) {\n combiningAlgorithm = 'blockOverrides';\n }\n switch (combiningAlgorithm) {\n case 'blockOverrides':\n this.combiningAlgorithm = new _BlockOverrides2.default();\n break;\n case 'allowOverrides':\n this.combiningAlgorithm = new _AllowOverrides2.default();\n break;\n case 'firstApplicable':\n this.combiningAlgorithm = new _FirstApplicable2.default();\n break;\n default:\n throw Error('Unknown algorithm: ' + combiningAlgorithm);\n }\n }\n }, {\n key: '_setRules',\n value: function _setRules(rules) {\n this.rules = [];\n\n for (var i in rules) {\n var rule = rules[i];\n if (rule.priority === undefined) {\n rule.priority = this.getLastPriority() + 1;\n }\n if (!(rule instanceof _Rule2.default)) {\n rule = new _Rule2.default(rule.decision, rule.condition, rule.scope, rule.target, rule.priority);\n }\n this.rules.push(rule);\n }\n }\n }, {\n key: 'sortRules',\n value: function sortRules() {\n return this.rules.sort(function (a, b) {\n var x = a.priority;var y = b.priority;\n return x < y ? -1 : x > y ? 1 : 0;\n });\n }\n }]);\n return Policy;\n}();\n\nexports.default = Policy;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDgxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUG9saWN5LmpzPzk4NDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFsbG93T3ZlcnJpZGVzIGZyb20gJy4vY29tYmluaW5nQWxnb3JpdGhtcy9BbGxvd092ZXJyaWRlcyc7XG5pbXBvcnQgQmxvY2tPdmVycmlkZXMgZnJvbSAnLi9jb21iaW5pbmdBbGdvcml0aG1zL0Jsb2NrT3ZlcnJpZGVzJztcbmltcG9ydCBGaXJzdEFwcGxpY2FibGUgZnJvbSAnLi9jb21iaW5pbmdBbGdvcml0aG1zL0ZpcnN0QXBwbGljYWJsZSc7XG5pbXBvcnQgUnVsZSBmcm9tICcuL1J1bGUnO1xuXG5jbGFzcyBQb2xpY3kge1xuXG4gIGNvbnN0cnVjdG9yKGtleSwgcnVsZXMsIGFjdGlvbnMsIGNvbWJpbmluZ0FsZ29yaXRobSkge1xuICAgIGlmICgha2V5KSB0aHJvdyBuZXcgRXJyb3IoJ2tleSBpcyBub3QgZGVmaW5lZCcpO1xuICAgIGlmICghYWN0aW9ucykgdGhyb3cgbmV3IEVycm9yKCdhY3Rpb25zIGFyZSBub3QgZGVmaW5lZCcpO1xuXG4gICAgdGhpcy5hY3Rpb25zID0gYWN0aW9ucztcbiAgICB0aGlzLmtleSA9IGtleTtcbiAgICB0aGlzLl9zZXRSdWxlcyhydWxlcyk7XG4gICAgdGhpcy5fc2V0Q29tYmluaW5nQWxnb3JpdGhtKGNvbWJpbmluZ0FsZ29yaXRobSk7XG4gIH1cblxuICBhZGRBY3Rpb24obWV0aG9kLCBwYXJhbSkge1xuICAgIHRoaXMuYWN0aW9ucy5wdXNoKHsgbWV0aG9kOiBtZXRob2QsIHBhcmFtOiBwYXJhbSB9KTtcbiAgfVxuXG4gIGNyZWF0ZVJ1bGUoZGVjaXNpb24sIGNvbmRpdGlvbiwgc2NvcGUsIHRhcmdldCwgcHJpb3JpdHkpIHtcbiAgICBpZiAocHJpb3JpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJpb3JpdHkgPSB0aGlzLmdldExhc3RQcmlvcml0eSgpICsgMTtcbiAgICB9XG4gICAgbGV0IHJ1bGUgPSBuZXcgUnVsZShkZWNpc2lvbiwgY29uZGl0aW9uLCBzY29wZSwgdGFyZ2V0LCBwcmlvcml0eSk7XG4gICAgdGhpcy5ydWxlcy5wdXNoKHJ1bGUpO1xuICB9XG5cbiAgZGVsZXRlUnVsZShydWxlKSB7XG4gICAgbGV0IGluZGV4VG9SZW1vdmUgPSB0aGlzLnJ1bGVzLmluZGV4T2YocnVsZSk7XG4gICAgdGhpcy5ydWxlcy5zcGxpY2UoaW5kZXhUb1JlbW92ZSwgMSk7XG4gIH1cblxuICBlbmZvcmNlQWN0aW9ucyhjb250ZXh0LCBtZXNzYWdlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCByZXN1bHRzID0gW107XG4gICAgICBpZiAodGhpcy5hY3Rpb25zLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBmb3IgKGxldCBpIGluIHRoaXMuYWN0aW9ucykge1xuICAgICAgICAgIGxldCByZXN1bHQgPSBjb250ZXh0LnBlcC5hY3Rpb25zU2VydmljZVt0aGlzLmFjdGlvbnNbaV0ubWV0aG9kXShtZXNzYWdlLCB0aGlzLmFjdGlvbnNbaV0ucGFyYW0pO1xuICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIFByb21pc2UuYWxsKHJlc3VsdHMpLnRoZW4oKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShtZXNzYWdlcyk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoW21lc3NhZ2VdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGV2YWx1YXRlUnVsZXMoY29udGV4dCwgbWVzc2FnZSwgaXNJbmNvbWluZykge1xuICAgIGxldCByZXN1bHRzID0gW107XG4gICAgZm9yIChsZXQgaSBpbiB0aGlzLnJ1bGVzKSB7XG4gICAgICByZXN1bHRzLnB1c2godGhpcy5ydWxlc1tpXS5ldmFsdWF0ZShjb250ZXh0LCBtZXNzYWdlLCBpc0luY29taW5nKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29tYmluaW5nQWxnb3JpdGhtLmNvbWJpbmUocmVzdWx0cyk7XG4gIH1cblxuICBnZXRMYXN0UHJpb3JpdHkoKSB7XG4gICAgbGV0IHByaW9yaXRpZXMgPSBbXTtcblxuICAgIGlmICh0aGlzLnJ1bGVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgZm9yIChsZXQgaSBpbiB0aGlzLnJ1bGVzKSB7XG4gICAgICAgIHByaW9yaXRpZXMucHVzaCh0aGlzLnJ1bGVzW2ldLnByaW9yaXR5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBNYXRoLm1heC5hcHBseShNYXRoLCBwcmlvcml0aWVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxuXG4gIGdldFJ1bGVCeVByaW9yaXR5KHByaW9yaXR5KSB7XG4gICAgZm9yIChsZXQgaSBpbiB0aGlzLnJ1bGVzKSB7XG4gICAgICBpZiAoU3RyaW5nKHRoaXMucnVsZXNbaV0ucHJpb3JpdHkpID09PSBTdHJpbmcocHJpb3JpdHkpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJ1bGVzW2ldO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBFcnJvcignUnVsZSB3aXRoIHByaW9yaXR5ICcgKyBwcmlvcml0eSArICcgZG9lcyBub3QgZXhpc3QhJyk7XG4gIH1cblxuICBfc2V0Q29tYmluaW5nQWxnb3JpdGhtKGNvbWJpbmluZ0FsZ29yaXRobSkge1xuICAgIGlmICghY29tYmluaW5nQWxnb3JpdGhtKSB7XG4gICAgICBjb21iaW5pbmdBbGdvcml0aG0gPSAnYmxvY2tPdmVycmlkZXMnO1xuICAgIH1cbiAgICBzd2l0Y2ggKGNvbWJpbmluZ0FsZ29yaXRobSkge1xuICAgICAgY2FzZSAnYmxvY2tPdmVycmlkZXMnOlxuICAgICAgICB0aGlzLmNvbWJpbmluZ0FsZ29yaXRobSA9IG5ldyBCbG9ja092ZXJyaWRlcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FsbG93T3ZlcnJpZGVzJzpcbiAgICAgICAgdGhpcy5jb21iaW5pbmdBbGdvcml0aG0gPSBuZXcgQWxsb3dPdmVycmlkZXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmaXJzdEFwcGxpY2FibGUnOlxuICAgICAgICB0aGlzLmNvbWJpbmluZ0FsZ29yaXRobSA9IG5ldyBGaXJzdEFwcGxpY2FibGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBFcnJvcignVW5rbm93biBhbGdvcml0aG06ICcgKyBjb21iaW5pbmdBbGdvcml0aG0pO1xuICAgIH1cbiAgfVxuXG4gIF9zZXRSdWxlcyhydWxlcykge1xuICAgIHRoaXMucnVsZXMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgaW4gcnVsZXMpIHtcbiAgICAgIGxldCBydWxlID0gcnVsZXNbaV07XG4gICAgICBpZiAocnVsZS5wcmlvcml0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJ1bGUucHJpb3JpdHkgPSB0aGlzLmdldExhc3RQcmlvcml0eSgpICsgMTtcbiAgICAgIH1cbiAgICAgIGlmICghKHJ1bGUgaW5zdGFuY2VvZiBSdWxlKSkge1xuICAgICAgICBydWxlID0gbmV3IFJ1bGUocnVsZS5kZWNpc2lvbiwgcnVsZS5jb25kaXRpb24sIHJ1bGUuc2NvcGUsIHJ1bGUudGFyZ2V0LCBydWxlLnByaW9yaXR5KTtcbiAgICAgIH1cbiAgICAgIHRoaXMucnVsZXMucHVzaChydWxlKTtcbiAgICB9XG4gIH1cblxuICBzb3J0UnVsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucnVsZXMuc29ydChmdW5jdGlvbihhLCBiKSB7XG4gICAgICBsZXQgeCA9IGEucHJpb3JpdHk7IGxldCB5ID0gYi5wcmlvcml0eTtcbiAgICAgIHJldHVybiAoKHggPCB5KSA/IC0xIDogKCh4ID4geSkgPyAxIDogMCkpO1xuICAgIH0pO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUG9saWN5O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvUG9saWN5LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7OztBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVhBO0FBYUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///481\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _AdvancedCondition = __webpack_require__(483);\n\nvar _AdvancedCondition2 = _interopRequireDefault(_AdvancedCondition);\n\nvar _Condition = __webpack_require__(146);\n\nvar _Condition2 = _interopRequireDefault(_Condition);\n\nvar _utils = __webpack_require__(11);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Rule = function () {\n function Rule(decision, condition, scope, target, priority) {\n (0, _classCallCheck3.default)(this, Rule);\n\n this.decision = decision;\n this.setCondition(condition);\n this.priority = priority;\n this.scope = scope;\n this.target = target;\n }\n\n (0, _createClass3.default)(Rule, [{\n key: 'setCondition',\n value: function setCondition(condition) {\n if (!(condition instanceof _Condition2.default || condition instanceof _AdvancedCondition2.default || condition instanceof _AdvancedCondition2.default)) {\n var attribute = condition.attribute;\n switch (attribute) {\n case 'subscription':\n this.condition = new _AdvancedCondition2.default(condition.attribute, condition.operator, condition.params);\n break;\n case undefined:\n this.condition = new _AdvancedCondition2.default(condition);\n break;\n default:\n this.condition = new _Condition2.default(condition.attribute, condition.operator, condition.params);\n }\n } else {\n this.condition = condition;\n }\n }\n }, {\n key: 'evaluate',\n value: function evaluate(context, message, isIncoming) {\n var field = isIncoming ? message.to : message.from;\n var hypertyName = void 0;\n switch (this.scope) {\n case 'global':\n break;\n\n case 'hyperty':\n if ((0, _utils.isDataObjectURL)(field)) {\n var reporter = context.runtimeRegistry.getReporterURLSynchonous((0, _utils.removePathFromURL)(field));\n if (reporter !== undefined) {\n hypertyName = context.runtimeRegistry.getHypertyName(reporter);\n }\n } else {\n if (field.split('://')[0] === 'hyperty') {\n hypertyName = context.runtimeRegistry.getHypertyName((0, _utils.removePathFromURL)(field));\n }\n }\n if (hypertyName === this.target) {\n break;\n }\n\n return 'Not Applicable';\n\n case 'identity':\n var owner = void 0;\n\n if ((0, _utils.isDataObjectURL)(field)) {\n var _reporter = context.runtimeRegistry.getReporterURLSynchonous((0, _utils.removePathFromURL)(field));\n owner = context.runtimeRegistry.getHypertyOwner(_reporter);\n } else {\n if (field.split('://')[0] === 'hyperty') {\n owner = context.runtimeRegistry.getHypertyOwner((0, _utils.removePathFromURL)(field));\n }\n }\n if (owner !== undefined) {\n owner = (0, _utils.getUserEmailFromURL)(owner);\n }\n if (owner === this.target) {\n break;\n }\n\n return 'Not Applicable';\n }\n\n if (this.condition.isApplicable(context, message, this.scope, this.target)) {\n return this.decision;\n } else {\n return 'Not Applicable';\n }\n }\n }]);\n return Rule;\n}();\n\nexports.default = Rule;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDgyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUnVsZS5qcz9jOWU4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBZHZhbmNlZENvbmRpdGlvbiBmcm9tICcuL2NvbmRpdGlvbnMvQWR2YW5jZWRDb25kaXRpb24nO1xuaW1wb3J0IENvbmRpdGlvbiBmcm9tICcuL2NvbmRpdGlvbnMvQ29uZGl0aW9uJztcbmltcG9ydCB7Z2V0VXNlckVtYWlsRnJvbVVSTCwgaXNEYXRhT2JqZWN0VVJMLCByZW1vdmVQYXRoRnJvbVVSTH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IFN1YnNjcmlwdGlvbkNvbmRpdGlvbiBmcm9tICcuL2NvbmRpdGlvbnMvQWR2YW5jZWRDb25kaXRpb24nO1xuXG5jbGFzcyBSdWxlIHtcblxuICBjb25zdHJ1Y3RvcihkZWNpc2lvbiwgY29uZGl0aW9uLCBzY29wZSwgdGFyZ2V0LCBwcmlvcml0eSkge1xuICAgIHRoaXMuZGVjaXNpb24gPSBkZWNpc2lvbjtcbiAgICB0aGlzLnNldENvbmRpdGlvbihjb25kaXRpb24pO1xuICAgIHRoaXMucHJpb3JpdHkgPSBwcmlvcml0eTtcbiAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gIH1cblxuICBzZXRDb25kaXRpb24oY29uZGl0aW9uKSB7XG4gICAgaWYgKCEoY29uZGl0aW9uIGluc3RhbmNlb2YgQ29uZGl0aW9uIHx8IGNvbmRpdGlvbiBpbnN0YW5jZW9mIFN1YnNjcmlwdGlvbkNvbmRpdGlvbiB8fCBjb25kaXRpb24gaW5zdGFuY2VvZiBBZHZhbmNlZENvbmRpdGlvbikpIHtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBjb25kaXRpb24uYXR0cmlidXRlO1xuICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgY2FzZSAnc3Vic2NyaXB0aW9uJzpcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbiA9IG5ldyBTdWJzY3JpcHRpb25Db25kaXRpb24oY29uZGl0aW9uLmF0dHJpYnV0ZSwgY29uZGl0aW9uLm9wZXJhdG9yLCBjb25kaXRpb24ucGFyYW1zKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgdGhpcy5jb25kaXRpb24gPSBuZXcgQWR2YW5jZWRDb25kaXRpb24oY29uZGl0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbiA9IG5ldyBDb25kaXRpb24oY29uZGl0aW9uLmF0dHJpYnV0ZSwgY29uZGl0aW9uLm9wZXJhdG9yLCBjb25kaXRpb24ucGFyYW1zKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25kaXRpb24gPSBjb25kaXRpb247XG4gICAgfVxuICB9XG5cbiAgZXZhbHVhdGUoY29udGV4dCwgbWVzc2FnZSwgaXNJbmNvbWluZykge1xuICAgIGxldCBmaWVsZCA9IChpc0luY29taW5nKSA/IG1lc3NhZ2UudG8gOiBtZXNzYWdlLmZyb207XG4gICAgbGV0IGh5cGVydHlOYW1lO1xuICAgIHN3aXRjaCAodGhpcy5zY29wZSkge1xuICAgICAgY2FzZSAnZ2xvYmFsJzpcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2h5cGVydHknOlxuICAgICAgICBpZiAoaXNEYXRhT2JqZWN0VVJMKGZpZWxkKSkge1xuICAgICAgICAgIGxldCByZXBvcnRlciA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldFJlcG9ydGVyVVJMU3luY2hvbm91cyhyZW1vdmVQYXRoRnJvbVVSTChmaWVsZCkpO1xuICAgICAgICAgIGlmIChyZXBvcnRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoeXBlcnR5TmFtZSA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldEh5cGVydHlOYW1lKHJlcG9ydGVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGZpZWxkLnNwbGl0KCc6Ly8nKVswXSA9PT0gJ2h5cGVydHknKSB7XG4gICAgICAgICAgICBoeXBlcnR5TmFtZSA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldEh5cGVydHlOYW1lKHJlbW92ZVBhdGhGcm9tVVJMKGZpZWxkKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChoeXBlcnR5TmFtZSA9PT0gdGhpcy50YXJnZXQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnTm90IEFwcGxpY2FibGUnO1xuXG4gICAgICBjYXNlICdpZGVudGl0eSc6XG4gICAgICAgIGxldCBvd25lcjtcblxuICAgICAgICBpZiAoaXNEYXRhT2JqZWN0VVJMKGZpZWxkKSkge1xuICAgICAgICAgIGxldCByZXBvcnRlciA9IGNvbnRleHQucnVudGltZVJlZ2lzdHJ5LmdldFJlcG9ydGVyVVJMU3luY2hvbm91cyhyZW1vdmVQYXRoRnJvbVVSTChmaWVsZCkpO1xuICAgICAgICAgIG93bmVyID0gY29udGV4dC5ydW50aW1lUmVnaXN0cnkuZ2V0SHlwZXJ0eU93bmVyKHJlcG9ydGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZmllbGQuc3BsaXQoJzovLycpWzBdID09PSAnaHlwZXJ0eScpIHtcbiAgICAgICAgICAgIG93bmVyID0gY29udGV4dC5ydW50aW1lUmVnaXN0cnkuZ2V0SHlwZXJ0eU93bmVyKHJlbW92ZVBhdGhGcm9tVVJMKGZpZWxkKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvd25lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgb3duZXIgPSBnZXRVc2VyRW1haWxGcm9tVVJMKG93bmVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3duZXIgPT09IHRoaXMudGFyZ2V0KSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ05vdCBBcHBsaWNhYmxlJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25kaXRpb24uaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UsIHRoaXMuc2NvcGUsIHRoaXMudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVjaXNpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnTm90IEFwcGxpY2FibGUnO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSdWxlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9wb2xpY3kvUnVsZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFFQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXZDQTtBQUNBO0FBeUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFHQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///482\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Condition = __webpack_require__(146);\n\nvar _Condition2 = _interopRequireDefault(_Condition);\n\nvar _Operators = __webpack_require__(145);\n\nvar _Operators2 = _interopRequireDefault(_Operators);\n\nvar _SubscriptionCondition = __webpack_require__(484);\n\nvar _SubscriptionCondition2 = _interopRequireDefault(_SubscriptionCondition);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AdvancedCondition = function () {\n function AdvancedCondition(condition) {\n (0, _classCallCheck3.default)(this, AdvancedCondition);\n\n this.operators = new _Operators2.default();\n if (condition.operators !== undefined) {\n condition = condition.condition;\n }\n condition = this.buildCondition(condition);\n this.condition = condition;\n }\n\n (0, _createClass3.default)(AdvancedCondition, [{\n key: 'buildCondition',\n value: function buildCondition(condition) {\n if (Array.isArray(condition[1])) {\n condition[1] = this.buildCondition(condition[1]);\n } else {\n if (condition[1].attribute === 'subscription') {\n condition[1] = new _SubscriptionCondition2.default(condition[1].attribute, condition[1].operator, condition[1].params);\n } else {\n condition[1] = new _Condition2.default(condition[1].attribute, condition[1].operator, condition[1].params);\n }\n }\n\n if (condition[2] !== undefined) {\n if (Array.isArray(condition[2])) {\n condition[2] = this.buildCondition(condition[2]);\n } else {\n if (condition[2].attribute === 'subscription') {\n condition[2] = new _SubscriptionCondition2.default(condition[2].attribute, condition[2].operator, condition[2].params);\n } else {\n condition[2] = new _Condition2.default(condition[2].attribute, condition[2].operator, condition[2].params);\n }\n }\n }\n return condition;\n }\n }, {\n key: 'isApplicable',\n value: function isApplicable(context, message, scope, target, operator, left, right) {\n if (!operator) {\n operator = this.condition[0];\n left = this.condition[1];\n right = this.condition[2];\n }\n\n while (!(left instanceof _Condition2.default) & !(left instanceof _SubscriptionCondition2.default) & typeof left !== 'boolean') {\n left = this.isApplicable(context, message, scope, target, left[0], left[1], left[2]);\n }\n if (right !== undefined) {\n while (!(right instanceof _Condition2.default) & !(right instanceof _SubscriptionCondition2.default) & typeof right !== 'boolean') {\n right = this.isApplicable(context, message, scope, target, right[0], right[1], right[2]);\n }\n }\n\n var resultLeft = typeof left === 'boolean' ? left : left.isApplicable(context, message, scope, target);\n var resultRight = void 0;\n if (right !== undefined) {\n resultRight = typeof right === 'boolean' ? right : right.isApplicable(context, message, scope, target);\n }\n return this.operators[operator]([resultLeft, resultRight]);\n }\n }]);\n return AdvancedCondition;\n}();\n\nexports.default = AdvancedCondition;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDgzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29uZGl0aW9ucy9BZHZhbmNlZENvbmRpdGlvbi5qcz9iZDBmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb25kaXRpb24gZnJvbSAnLi9Db25kaXRpb24nO1xuaW1wb3J0IE9wZXJhdG9ycyBmcm9tICcuLi9PcGVyYXRvcnMnO1xuaW1wb3J0IFN1YnNjcmlwdGlvbkNvbmRpdGlvbiBmcm9tICcuL1N1YnNjcmlwdGlvbkNvbmRpdGlvbic7XG5cbmNsYXNzIEFkdmFuY2VkQ29uZGl0aW9uIHtcblxuICBjb25zdHJ1Y3Rvcihjb25kaXRpb24pIHtcbiAgICB0aGlzLm9wZXJhdG9ycyA9IG5ldyBPcGVyYXRvcnMoKTtcbiAgICBpZiAoY29uZGl0aW9uLm9wZXJhdG9ycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25kaXRpb24gPSBjb25kaXRpb24uY29uZGl0aW9uO1xuICAgIH1cbiAgICBjb25kaXRpb24gPSB0aGlzLmJ1aWxkQ29uZGl0aW9uKGNvbmRpdGlvbik7XG4gICAgdGhpcy5jb25kaXRpb24gPSBjb25kaXRpb247XG4gIH1cblxuICBidWlsZENvbmRpdGlvbihjb25kaXRpb24pIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb25kaXRpb25bMV0pKSB7XG4gICAgICBjb25kaXRpb25bMV0gPSB0aGlzLmJ1aWxkQ29uZGl0aW9uKGNvbmRpdGlvblsxXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb25kaXRpb25bMV0uYXR0cmlidXRlID09PSAnc3Vic2NyaXB0aW9uJykge1xuICAgICAgICBjb25kaXRpb25bMV0gPSBuZXcgU3Vic2NyaXB0aW9uQ29uZGl0aW9uKGNvbmRpdGlvblsxXS5hdHRyaWJ1dGUsIGNvbmRpdGlvblsxXS5vcGVyYXRvciwgY29uZGl0aW9uWzFdLnBhcmFtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25kaXRpb25bMV0gPSBuZXcgQ29uZGl0aW9uKGNvbmRpdGlvblsxXS5hdHRyaWJ1dGUsIGNvbmRpdGlvblsxXS5vcGVyYXRvciwgY29uZGl0aW9uWzFdLnBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvbmRpdGlvblsyXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25kaXRpb25bMl0pKSB7XG4gICAgICAgIGNvbmRpdGlvblsyXSA9IHRoaXMuYnVpbGRDb25kaXRpb24oY29uZGl0aW9uWzJdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjb25kaXRpb25bMl0uYXR0cmlidXRlID09PSAnc3Vic2NyaXB0aW9uJykge1xuICAgICAgICAgIGNvbmRpdGlvblsyXSA9IG5ldyBTdWJzY3JpcHRpb25Db25kaXRpb24oY29uZGl0aW9uWzJdLmF0dHJpYnV0ZSwgY29uZGl0aW9uWzJdLm9wZXJhdG9yLCBjb25kaXRpb25bMl0ucGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25kaXRpb25bMl0gPSBuZXcgQ29uZGl0aW9uKGNvbmRpdGlvblsyXS5hdHRyaWJ1dGUsIGNvbmRpdGlvblsyXS5vcGVyYXRvciwgY29uZGl0aW9uWzJdLnBhcmFtcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbmRpdGlvbjtcbiAgfVxuXG4gIGlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlLCBzY29wZSwgdGFyZ2V0LCBvcGVyYXRvciwgbGVmdCwgcmlnaHQpIHtcbiAgICBpZiAoIW9wZXJhdG9yKSB7XG4gICAgICBvcGVyYXRvciA9IHRoaXMuY29uZGl0aW9uWzBdO1xuICAgICAgbGVmdCA9IHRoaXMuY29uZGl0aW9uWzFdO1xuICAgICAgcmlnaHQgPSB0aGlzLmNvbmRpdGlvblsyXTtcbiAgICB9XG5cbiAgICB3aGlsZSAoIShsZWZ0IGluc3RhbmNlb2YgQ29uZGl0aW9uKSAmICEobGVmdCBpbnN0YW5jZW9mIFN1YnNjcmlwdGlvbkNvbmRpdGlvbikgJiAodHlwZW9mIGxlZnQgIT09ICdib29sZWFuJykpIHtcbiAgICAgIGxlZnQgPSB0aGlzLmlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlLCBzY29wZSwgdGFyZ2V0LCBsZWZ0WzBdLCBsZWZ0WzFdLCBsZWZ0WzJdKTtcbiAgICB9XG4gICAgaWYgKHJpZ2h0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdoaWxlICghKHJpZ2h0IGluc3RhbmNlb2YgQ29uZGl0aW9uKSAmICEocmlnaHQgaW5zdGFuY2VvZiBTdWJzY3JpcHRpb25Db25kaXRpb24pICYgKHR5cGVvZiByaWdodCAhPT0gJ2Jvb2xlYW4nKSkge1xuICAgICAgICByaWdodCA9IHRoaXMuaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UsIHNjb3BlLCB0YXJnZXQsIHJpZ2h0WzBdLCByaWdodFsxXSwgcmlnaHRbMl0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCByZXN1bHRMZWZ0ID0gKHR5cGVvZiBsZWZ0ID09PSAnYm9vbGVhbicpID8gbGVmdCA6IGxlZnQuaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UsIHNjb3BlLCB0YXJnZXQpO1xuICAgIGxldCByZXN1bHRSaWdodDtcbiAgICBpZiAocmlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0UmlnaHQgPSAodHlwZW9mIHJpZ2h0ID09PSAnYm9vbGVhbicpID8gcmlnaHQgOiByaWdodC5pc0FwcGxpY2FibGUoY29udGV4dCwgbWVzc2FnZSwgc2NvcGUsIHRhcmdldCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wZXJhdG9yc1tvcGVyYXRvcl0oW3Jlc3VsdExlZnQsIHJlc3VsdFJpZ2h0XSk7XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBBZHZhbmNlZENvbmRpdGlvbjtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L2NvbmRpdGlvbnMvQWR2YW5jZWRDb25kaXRpb24uanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7Ozs7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///483\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(60);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(68);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = __webpack_require__(485);\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = __webpack_require__(69);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Condition2 = __webpack_require__(146);\n\nvar _Condition3 = _interopRequireDefault(_Condition2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* @author Ana Caldeira \n* @classdesc Class to represent a subscription condition and evaluate its applicability.\n*/\nvar SubscriptionCondition = function (_Condition) {\n (0, _inherits3.default)(SubscriptionCondition, _Condition);\n\n /**\n * Creates a new SubscriptionCondition.\n * @class\n * @param {string} attribute\n * @param {string} operator\n * @param {*} params\n */\n function SubscriptionCondition(attribute, operator, params) {\n (0, _classCallCheck3.default)(this, SubscriptionCondition);\n return (0, _possibleConstructorReturn3.default)(this, (SubscriptionCondition.__proto__ || (0, _getPrototypeOf2.default)(SubscriptionCondition)).call(this, attribute, operator, params));\n }\n\n /**\n * Verifies if the subscription condition is applicable to the message. First, verifies if the message is of the subscription type; second, verifies if the message is from a remote runtime to guarantee that the subscription is being validated in the destination runtime; third, verifies if the subscription preference is met.\n * @param {Object} context environment where the Policy Engine is being used\n * @param {Object} message\n */\n\n\n (0, _createClass3.default)(SubscriptionCondition, [{\n key: 'isApplicable',\n value: function isApplicable(context, message) {\n var isSubscription = message.type === 'subscribe';\n var isFromRemoteSM = context.isFromRemoteSM(message.from);\n if (isSubscription & isFromRemoteSM) {\n return (0, _get3.default)(SubscriptionCondition.prototype.__proto__ || (0, _getPrototypeOf2.default)(SubscriptionCondition.prototype), 'isApplicable', this).call(this, context, message);\n } else {\n return false;\n }\n }\n }]);\n return SubscriptionCondition;\n}(_Condition3.default); /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nexports.default = SubscriptionCondition;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDg0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29uZGl0aW9ucy9TdWJzY3JpcHRpb25Db25kaXRpb24uanM/YTkwMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKiovXG5cbmltcG9ydCBDb25kaXRpb24gZnJvbSAnLi9Db25kaXRpb24nO1xuXG4vKipcbiogQGF1dGhvciBBbmEgQ2FsZGVpcmEgPGFuYS5jYWxkZWlyYUB0ZWNuaWNvLnVsaXNib2EucHQ+XG4qIEBjbGFzc2Rlc2MgQ2xhc3MgdG8gcmVwcmVzZW50IGEgc3Vic2NyaXB0aW9uIGNvbmRpdGlvbiBhbmQgZXZhbHVhdGUgaXRzIGFwcGxpY2FiaWxpdHkuXG4qL1xuY2xhc3MgU3Vic2NyaXB0aW9uQ29uZGl0aW9uIGV4dGVuZHMgQ29uZGl0aW9uIHtcblxuICAvKipcbiAgKiBDcmVhdGVzIGEgbmV3IFN1YnNjcmlwdGlvbkNvbmRpdGlvbi5cbiAgKiBAY2xhc3NcbiAgKiBAcGFyYW0gIHtzdHJpbmd9ICBhdHRyaWJ1dGVcbiAgKiBAcGFyYW0gIHtzdHJpbmd9ICBvcGVyYXRvclxuICAqIEBwYXJhbSAgeyp9ICAgICAgIHBhcmFtc1xuICAqL1xuICBjb25zdHJ1Y3RvcihhdHRyaWJ1dGUsIG9wZXJhdG9yLCBwYXJhbXMpIHtcbiAgICBzdXBlcihhdHRyaWJ1dGUsIG9wZXJhdG9yLCBwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICogVmVyaWZpZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBjb25kaXRpb24gaXMgYXBwbGljYWJsZSB0byB0aGUgbWVzc2FnZS4gRmlyc3QsIHZlcmlmaWVzIGlmIHRoZSBtZXNzYWdlIGlzIG9mIHRoZSBzdWJzY3JpcHRpb24gdHlwZTsgc2Vjb25kLCB2ZXJpZmllcyBpZiB0aGUgbWVzc2FnZSBpcyBmcm9tIGEgcmVtb3RlIHJ1bnRpbWUgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIHN1YnNjcmlwdGlvbiBpcyBiZWluZyB2YWxpZGF0ZWQgaW4gdGhlIGRlc3RpbmF0aW9uIHJ1bnRpbWU7IHRoaXJkLCB2ZXJpZmllcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHByZWZlcmVuY2UgaXMgbWV0LlxuICAqIEBwYXJhbSAge09iamVjdH0gICAgY29udGV4dCAgIGVudmlyb25tZW50IHdoZXJlIHRoZSBQb2xpY3kgRW5naW5lIGlzIGJlaW5nIHVzZWRcbiAgKiBAcGFyYW0gIHtPYmplY3R9ICAgIG1lc3NhZ2VcbiAgKi9cbiAgaXNBcHBsaWNhYmxlKGNvbnRleHQsIG1lc3NhZ2UpIHtcbiAgICBsZXQgaXNTdWJzY3JpcHRpb24gPSBtZXNzYWdlLnR5cGUgPT09ICdzdWJzY3JpYmUnO1xuICAgIGxldCBpc0Zyb21SZW1vdGVTTSA9IGNvbnRleHQuaXNGcm9tUmVtb3RlU00obWVzc2FnZS5mcm9tKTtcbiAgICBpZiAoaXNTdWJzY3JpcHRpb24gJiBpc0Zyb21SZW1vdGVTTSkge1xuICAgICAgcmV0dXJuIHN1cGVyLmlzQXBwbGljYWJsZShjb250ZXh0LCBtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IFN1YnNjcmlwdGlvbkNvbmRpdGlvbjtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L2NvbmRpdGlvbnMvU3Vic2NyaXB0aW9uQ29uZGl0aW9uLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7QUFDQTs7Ozs7QUFDQTs7OztBQUlBOzs7QUFFQTs7Ozs7OztBQU9BO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUExQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBOEJBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///484\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _getPrototypeOf = __webpack_require__(60);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _getOwnPropertyDescriptor = __webpack_require__(486);\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = (0, _getOwnPropertyDescriptor2.default)(object, property);\n\n if (desc === undefined) {\n var parent = (0, _getPrototypeOf2.default)(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if ("value" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDg1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9nZXQuanM/Yzg0YiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9nZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpO1xuXG52YXIgX2dldFByb3RvdHlwZU9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldFByb3RvdHlwZU9mKTtcblxudmFyIF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yXCIpO1xuXG52YXIgX2dldE93blByb3BlcnR5RGVzY3JpcHRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiBnZXQob2JqZWN0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpIHtcbiAgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuICB2YXIgZGVzYyA9ICgwLCBfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yMi5kZWZhdWx0KShvYmplY3QsIHByb3BlcnR5KTtcblxuICBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIHBhcmVudCA9ICgwLCBfZ2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKG9iamVjdCk7XG5cbiAgICBpZiAocGFyZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ2V0KHBhcmVudCwgcHJvcGVydHksIHJlY2VpdmVyKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoXCJ2YWx1ZVwiIGluIGRlc2MpIHtcbiAgICByZXR1cm4gZGVzYy52YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7XG5cbiAgICBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTtcbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvZ2V0LmpzXG4vLyBtb2R1bGUgaWQgPSA0ODVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///485\n')},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(487), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDg2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzPzJiYTEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2dldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1xuLy8gbW9kdWxlIGlkID0gNDg2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///486\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(488);\nvar $Object = __webpack_require__(10).Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDg3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzPzcyNzkiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICByZXR1cm4gJE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDQ4N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///487\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(47);\nvar $getOwnPropertyDescriptor = __webpack_require__(142).f;\n\n__webpack_require__(99)('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDg4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzPzg4ODkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKVxudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodG9JT2JqZWN0KGl0KSwga2V5KTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDQ4OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///488\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(42);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _getPrototypeOf = __webpack_require__(60);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(68);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(69);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _Bus2 = __webpack_require__(204);\n\nvar _Bus3 = _interopRequireDefault(_Bus2);\n\nvar _Pipeline = __webpack_require__(490);\n\nvar _Pipeline2 = _interopRequireDefault(_Pipeline);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('MessageBus'); /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\n// Log system\n\n/**\n* @author micaelpedrosa@gmail.com\n* Message BUS Interface is an extension of the Bus\n* It doesn't support the default '*' listener, instead it uses the registry.resolve(..)\n*/\nvar MessageBus = function (_Bus) {\n (0, _inherits3.default)(MessageBus, _Bus);\n\n /* private\n _registry: Registry\n _forwards: { : { fl: MsgListener, sandboxToUrls: Map(Sandbox, [to-url]), urlToSandbox: { to-url: Sandbox } } }\n _pipeline: Pipeline\n */\n\n //TODO: future optimization\n //1. message batch processing with setInterval\n //2. resolve default gateway/protostub with register.resolve\n\n function MessageBus(registry) {\n (0, _classCallCheck3.default)(this, MessageBus);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (MessageBus.__proto__ || (0, _getPrototypeOf2.default)(MessageBus)).call(this));\n\n _this2._registry = registry;\n _this2._forwards = {};\n\n _this2._pipelineIn = new _Pipeline2.default(function (error) {\n log.error('PIPELINE-ERROR: ', (0, _stringify2.default)(error));\n });\n\n _this2._pipelineOut = new _Pipeline2.default(function (error) {\n log.error('PIPELINE-ERROR: ', (0, _stringify2.default)(error));\n });\n return _this2;\n }\n\n (0, _createClass3.default)(MessageBus, [{\n key: 'postMessage',\n\n\n /**\n * Post a message for routing. It will first search for a listener, if there is no one, it sends to a external routing using the _onPostMessage.\n * External routing use the registry.resolve(..) method to decide the destination sandbox.\n * @param {Message} inMsg JSON with mandatory Message structure {id, type, from, to}\n * @param {Callback} responseCallback Optional callback if a response is expected from the request. A response will be always sent, even if it is a \"Timeout\".\n * @return {number} the Message id\n */\n value: function postMessage(inMsg, responseCallback, timeout) {\n log.info('onPOSTMessage: ', inMsg);\n var _this = this;\n\n var deliver = function deliver(msg) {\n\n _this._responseCallback(inMsg, responseCallback, timeout);\n\n if (!_this._onResponse(msg)) {\n var itemList = _this._subscriptions[msg.to];\n if (itemList) {\n //do not publish on default address, because of loopback cycle\n _this._publishOn(itemList, msg);\n } else {\n //if there is no listener, send to external interface\n _this._onPostMessage(msg);\n }\n }\n };\n\n _this._genId(inMsg);\n\n if (_this._isToProcess(inMsg)) {\n var isIncoming = _this._isIncomingMessage(inMsg);\n\n if (isIncoming) _this._pipelineIn.process(inMsg, deliver);else _this._pipelineOut.process(inMsg, deliver);\n } else deliver(inMsg);\n\n return inMsg.id;\n }\n }, {\n key: '_isToProcess',\n value: function _isToProcess(message) {\n var schemasToIgnore = ['domain', 'domain-idp', 'global', 'hyperty-runtime', 'runtime'];\n var splitFrom = message.from.split('://');\n var fromSchema = splitFrom[0];\n var splitTo = message.to.split('://');\n var toSchema = splitTo[0];\n var from = message.from;\n var to = message.to;\n\n // Signalling messages between P2P Stubs don't have to be verified. FFS\n\n if (message.body && message.body.source) {\n from = message.body.source;\n }\n\n if (message.body && message.body.subscriber) {\n from = message.body.subscriber;\n }\n\n if (from.indexOf('/p2phandler/') !== -1 || from.indexOf('/p2prequester/') !== -1 || to.indexOf('/p2phandler/') !== -1 || to.indexOf('/p2prequester/') !== -1) {\n return false;\n }\n\n if (this._registry.isLocal(from) && this._registry.isLocal(message.to)) return false;\n\n if (message.from === fromSchema || message.to === toSchema || message.type === 'read' || message.type === 'response' || message.from.includes('hyperty://') && message.type === 'delete') {\n return false;\n } else {\n return schemasToIgnore.indexOf(fromSchema) === -1 || schemasToIgnore.indexOf(toSchema) === -1;\n }\n }\n }, {\n key: '_isIncomingMessage',\n value: function _isIncomingMessage(message) {\n var from = void 0;\n\n if (message.type === 'forward') {\n log.info('[MessageBus - isIncomingMessage] - message.type: ', message.type);\n from = message.body.from;\n } else if (message.hasOwnProperty('body') && message.body.hasOwnProperty('source') && message.body.source) {\n log.info('[MessageBus - isIncomingMessage] - message.body.source: ', message.body.source);\n from = message.body.source;\n } else if (message.hasOwnProperty('body') && message.body.hasOwnProperty('subscriber') && message.body.subscriber) {\n //TODO: this subscriber validation should not exist, because is outdated\n //TODO: the syncher and syncher manager not following the correct spec;\n log.info('[MessageBus - isIncomingMessage] - message.body.subscriber: ', message.body.subscriber);\n from = message.body.subscriber;\n } else if (message.hasOwnProperty('body') && message.body.hasOwnProperty('reporter') && message.body.reporter) {\n //TODO: this subscriber validation should not exist, because is outdated\n //TODO: the syncher and syncher manager not following the correct spec;\n log.info('[MessageBus - isIncomingMessage] - message.body.reporter: ', message.body.reporter);\n from = message.body.reporter;\n } else {\n log.info('[MessageBus - isIncomingMessage] - message.from ', message.from);\n from = message.from;\n }\n\n log.info('[MessageBus - isIncomingMessage] - check if isLocal: ', from);\n return !this._registry.isLocal(from);\n }\n\n /**\n * Adds an external publish address listener. Every message for the address will be forwarded to the external routing by _onPostMessage.\n * This means, even if there is a listener for the address, it will also send the message to the external routing.\n * @param {URL} from Publish address.\n */\n\n }, {\n key: 'addPublish',\n value: function addPublish(from) {\n var _this3 = this;\n\n var _this = this;\n\n //verify if forward exist\n var refCount = _this._forwards[from];\n if (!refCount) {\n var forwardListener = _this.addListener(from, function (msg) {\n log.info('MB-PUBLISH: ( ' + from + ' )');\n _this._onPostMessage(msg);\n });\n\n refCount = {\n counter: 0,\n fl: forwardListener,\n remove: function remove() {\n _this3.counter--;\n if (_this3.counter === 0) {\n _this3.fl.remove();\n delete _this._forwards[from];\n }\n }\n };\n\n _this._forwards[from] = refCount;\n }\n\n refCount.counter++;\n return refCount;\n }\n\n /**\n * Adds a forward listener for a message destination. Every message reaching an address will be also sent to the forward address.\n * @param {URL} from Message destination, it's actually the field \"to\" of the message.\n * @param {URL} to Forward address.\n */\n\n }, {\n key: 'addForward',\n value: function addForward(from, to) {\n var _this = this;\n\n return _this.addListener(from, function (msg) {\n log.info('MB-FORWARD: ( ' + from + ' to ' + to + ' )');\n _this.forward(to, msg);\n });\n }\n\n /**\n * Just forward's a message to the forward address. Listeners should be available for the forward address.\n * @param {URL} url Forward address.\n * @param {Message} msg Message to forward\n */\n\n }, {\n key: 'forward',\n value: function forward(url, msg) {\n var _this = this;\n\n var itemList = _this._subscriptions[url];\n if (itemList) {\n _this._publishOn(itemList, msg);\n }\n }\n\n //default route, if there are no listeners available for a message destination.\n\n }, {\n key: '_onPostMessage',\n value: function _onPostMessage(msg) {\n var _this = this;\n\n //resolve external protostub...\n _this._registry.resolve(msg).then(function (route, msg2route) {\n if (msg2route) _this.forward(route, msg2route);else _this.forward(route, msg);\n }).catch(function (e) {\n log.error('RESOLVE-ERROR: ', e);\n });\n }\n }, {\n key: 'pipelineIn',\n get: function get() {\n return this._pipelineIn;\n }\n }, {\n key: 'pipelineOut',\n get: function get() {\n return this._pipelineOut;\n }\n }]);\n return MessageBus;\n}(_Bus3.default);\n\nexports.default = MessageBus;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDg5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvTWVzc2FnZUJ1cy5qcz8zYTNhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cblxuLy8gTG9nIHN5c3RlbVxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdNZXNzYWdlQnVzJyk7XG5cbmltcG9ydCBCdXMgZnJvbSAnLi9CdXMnO1xuaW1wb3J0IFBpcGVsaW5lIGZyb20gJy4vUGlwZWxpbmUnO1xuXG4vKipcbiogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxuKiBNZXNzYWdlIEJVUyBJbnRlcmZhY2UgaXMgYW4gZXh0ZW5zaW9uIG9mIHRoZSBCdXNcbiogSXQgZG9lc24ndCBzdXBwb3J0IHRoZSBkZWZhdWx0ICcqJyBsaXN0ZW5lciwgaW5zdGVhZCBpdCB1c2VzIHRoZSByZWdpc3RyeS5yZXNvbHZlKC4uKVxuKi9cbmNsYXNzIE1lc3NhZ2VCdXMgZXh0ZW5kcyBCdXMge1xuICAvKiBwcml2YXRlXG4gIF9yZWdpc3RyeTogUmVnaXN0cnlcbiAgX2ZvcndhcmRzOiB7IDxmcm9tLXVybD46IHsgZmw6IE1zZ0xpc3RlbmVyLCBzYW5kYm94VG9VcmxzOiBNYXAoU2FuZGJveCwgW3RvLXVybF0pLCB1cmxUb1NhbmRib3g6IHsgdG8tdXJsOiBTYW5kYm94IH0gfSB9XG5cbiAgX3BpcGVsaW5lOiBQaXBlbGluZVxuICAqL1xuXG4gIC8vVE9ETzogZnV0dXJlIG9wdGltaXphdGlvblxuICAvLzEuIG1lc3NhZ2UgYmF0Y2ggcHJvY2Vzc2luZyB3aXRoIHNldEludGVydmFsXG4gIC8vMi4gcmVzb2x2ZSBkZWZhdWx0IGdhdGV3YXkvcHJvdG9zdHViIHdpdGggcmVnaXN0ZXIucmVzb2x2ZVxuXG4gIGNvbnN0cnVjdG9yKHJlZ2lzdHJ5KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9yZWdpc3RyeSA9IHJlZ2lzdHJ5O1xuICAgIHRoaXMuX2ZvcndhcmRzID0ge307XG5cbiAgICB0aGlzLl9waXBlbGluZUluID0gbmV3IFBpcGVsaW5lKChlcnJvcikgPT4ge1xuICAgICAgbG9nLmVycm9yKCdQSVBFTElORS1FUlJPUjogJywgSlNPTi5zdHJpbmdpZnkoZXJyb3IpKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3BpcGVsaW5lT3V0ID0gbmV3IFBpcGVsaW5lKChlcnJvcikgPT4ge1xuICAgICAgbG9nLmVycm9yKCdQSVBFTElORS1FUlJPUjogJywgSlNPTi5zdHJpbmdpZnkoZXJyb3IpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBwaXBlbGluZUluKCkgeyByZXR1cm4gdGhpcy5fcGlwZWxpbmVJbjsgfVxuXG4gIGdldCBwaXBlbGluZU91dCgpIHsgcmV0dXJuIHRoaXMuX3BpcGVsaW5lT3V0OyB9XG5cbiAgLyoqXG4gICAqIFBvc3QgYSBtZXNzYWdlIGZvciByb3V0aW5nLiBJdCB3aWxsIGZpcnN0IHNlYXJjaCBmb3IgYSBsaXN0ZW5lciwgaWYgdGhlcmUgaXMgbm8gb25lLCBpdCBzZW5kcyB0byBhIGV4dGVybmFsIHJvdXRpbmcgdXNpbmcgdGhlIF9vblBvc3RNZXNzYWdlLlxuICAgKiBFeHRlcm5hbCByb3V0aW5nIHVzZSB0aGUgcmVnaXN0cnkucmVzb2x2ZSguLikgbWV0aG9kIHRvIGRlY2lkZSB0aGUgZGVzdGluYXRpb24gc2FuZGJveC5cbiAgICogQHBhcmFtICB7TWVzc2FnZX0gaW5Nc2cgICAgICAgICAgICBKU09OIHdpdGggbWFuZGF0b3J5IE1lc3NhZ2Ugc3RydWN0dXJlIHtpZCwgdHlwZSwgZnJvbSwgdG99XG4gICAqIEBwYXJhbSAge0NhbGxiYWNrfSByZXNwb25zZUNhbGxiYWNrIE9wdGlvbmFsIGNhbGxiYWNrIGlmIGEgcmVzcG9uc2UgaXMgZXhwZWN0ZWQgZnJvbSB0aGUgcmVxdWVzdC4gQSByZXNwb25zZSB3aWxsIGJlIGFsd2F5cyBzZW50LCBldmVuIGlmIGl0IGlzIGEgXCJUaW1lb3V0XCIuXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgICAgICAgICAgICB0aGUgTWVzc2FnZSBpZFxuICAgKi9cbiAgcG9zdE1lc3NhZ2UoaW5Nc2csIHJlc3BvbnNlQ2FsbGJhY2ssIHRpbWVvdXQpIHtcbiAgICBsb2cuaW5mbygnb25QT1NUTWVzc2FnZTogJywgaW5Nc2cpO1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgZGVsaXZlciA9IChtc2cpID0+IHtcblxuICAgICAgICAgIF90aGlzLl9yZXNwb25zZUNhbGxiYWNrKGluTXNnLCByZXNwb25zZUNhbGxiYWNrLCB0aW1lb3V0KTtcblxuICAgICAgICAgIGlmICghX3RoaXMuX29uUmVzcG9uc2UobXNnKSkge1xuICAgICAgICAgICAgbGV0IGl0ZW1MaXN0ID0gX3RoaXMuX3N1YnNjcmlwdGlvbnNbbXNnLnRvXTtcbiAgICAgICAgICAgIGlmIChpdGVtTGlzdCkge1xuICAgICAgICAgICAgICAvL2RvIG5vdCBwdWJsaXNoIG9uIGRlZmF1bHQgYWRkcmVzcywgYmVjYXVzZSBvZiBsb29wYmFjayBjeWNsZVxuICAgICAgICAgICAgICBfdGhpcy5fcHVibGlzaE9uKGl0ZW1MaXN0LCBtc2cpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy9pZiB0aGVyZSBpcyBubyBsaXN0ZW5lciwgc2VuZCB0byBleHRlcm5hbCBpbnRlcmZhY2VcbiAgICAgICAgICAgICAgX3RoaXMuX29uUG9zdE1lc3NhZ2UobXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgfVxuXG4gICAgX3RoaXMuX2dlbklkKGluTXNnKTtcblxuICAgIGlmIChfdGhpcy5faXNUb1Byb2Nlc3MoaW5Nc2cpKSB7XG4gICAgICBsZXQgaXNJbmNvbWluZyA9IF90aGlzLl9pc0luY29taW5nTWVzc2FnZShpbk1zZyk7XG5cbiAgICAgIGlmIChpc0luY29taW5nKSBfdGhpcy5fcGlwZWxpbmVJbi5wcm9jZXNzKGluTXNnLCBkZWxpdmVyKTtcbiAgICAgIGVsc2UgX3RoaXMuX3BpcGVsaW5lT3V0LnByb2Nlc3MoaW5Nc2csIGRlbGl2ZXIpO1xuICAgIH0gZWxzZSBkZWxpdmVyKGluTXNnKTtcblxuICAgIHJldHVybiBpbk1zZy5pZDtcblxuICB9XG5cblxuICBfaXNUb1Byb2Nlc3MobWVzc2FnZSkge1xuICAgIGxldCBzY2hlbWFzVG9JZ25vcmUgPSBbJ2RvbWFpbicsICdkb21haW4taWRwJywgJ2dsb2JhbCcsICdoeXBlcnR5LXJ1bnRpbWUnLCAncnVudGltZSddO1xuICAgIGxldCBzcGxpdEZyb20gPSAobWVzc2FnZS5mcm9tKS5zcGxpdCgnOi8vJyk7XG4gICAgbGV0IGZyb21TY2hlbWEgPSBzcGxpdEZyb21bMF07XG4gICAgbGV0IHNwbGl0VG8gPSAobWVzc2FnZS50bykuc3BsaXQoJzovLycpO1xuICAgIGxldCB0b1NjaGVtYSA9ICBzcGxpdFRvWzBdO1xuICAgIGxldCBmcm9tID0gbWVzc2FnZS5mcm9tO1xuICAgIGxldCB0byA9IG1lc3NhZ2UudG87XG5cbiAgICAvLyBTaWduYWxsaW5nIG1lc3NhZ2VzIGJldHdlZW4gUDJQIFN0dWJzIGRvbid0IGhhdmUgdG8gYmUgdmVyaWZpZWQuIEZGU1xuXG4gICAgaWYgKG1lc3NhZ2UuYm9keSAmJiBtZXNzYWdlLmJvZHkuc291cmNlKSB7XG4gICAgICBmcm9tID0gbWVzc2FnZS5ib2R5LnNvdXJjZTtcbiAgICB9XG5cbiAgICBpZiAobWVzc2FnZS5ib2R5ICYmIG1lc3NhZ2UuYm9keS5zdWJzY3JpYmVyKSB7XG4gICAgICBmcm9tID0gbWVzc2FnZS5ib2R5LnN1YnNjcmliZXI7XG4gICAgfVxuXG4gICAgaWYgKGZyb20uaW5kZXhPZignL3AycGhhbmRsZXIvJykgIT09IC0xIHx8IGZyb20uaW5kZXhPZignL3AycHJlcXVlc3Rlci8nKSAhPT0gLTEgfHwgdG8uaW5kZXhPZignL3AycGhhbmRsZXIvJykgIT09IC0xIHx8IHRvLmluZGV4T2YoJy9wMnByZXF1ZXN0ZXIvJykgIT09IC0xKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3JlZ2lzdHJ5LmlzTG9jYWwoZnJvbSkgJiYgdGhpcy5fcmVnaXN0cnkuaXNMb2NhbChtZXNzYWdlLnRvKSlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChtZXNzYWdlLmZyb20gPT09IGZyb21TY2hlbWEgfHwgbWVzc2FnZS50byA9PT0gdG9TY2hlbWEgfHwgbWVzc2FnZS50eXBlID09PSAncmVhZCcgfHwgbWVzc2FnZS50eXBlID09PSAncmVzcG9uc2UnIHx8IChtZXNzYWdlLmZyb20uaW5jbHVkZXMoJ2h5cGVydHk6Ly8nKSAmJiBtZXNzYWdlLnR5cGUgPT09ICdkZWxldGUnKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc2NoZW1hc1RvSWdub3JlLmluZGV4T2YoZnJvbVNjaGVtYSkgPT09IC0xIHx8IHNjaGVtYXNUb0lnbm9yZS5pbmRleE9mKHRvU2NoZW1hKSA9PT0gLTE7XG4gICAgfVxuICB9XG5cbiAgX2lzSW5jb21pbmdNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgICBsZXQgZnJvbTtcblxuICAgIGlmIChtZXNzYWdlLnR5cGUgPT09ICdmb3J3YXJkJykge1xuICAgICAgbG9nLmluZm8oJ1tNZXNzYWdlQnVzIC0gaXNJbmNvbWluZ01lc3NhZ2VdIC0gbWVzc2FnZS50eXBlOiAnLCBtZXNzYWdlLnR5cGUpO1xuICAgICAgZnJvbSA9IG1lc3NhZ2UuYm9keS5mcm9tO1xuICAgIH0gZWxzZSBpZiAobWVzc2FnZS5oYXNPd25Qcm9wZXJ0eSgnYm9keScpICYmIG1lc3NhZ2UuYm9keS5oYXNPd25Qcm9wZXJ0eSgnc291cmNlJykgJiYgbWVzc2FnZS5ib2R5LnNvdXJjZSkge1xuICAgICAgbG9nLmluZm8oJ1tNZXNzYWdlQnVzIC0gaXNJbmNvbWluZ01lc3NhZ2VdIC0gbWVzc2FnZS5ib2R5LnNvdXJjZTogJywgbWVzc2FnZS5ib2R5LnNvdXJjZSk7XG4gICAgICBmcm9tID0gbWVzc2FnZS5ib2R5LnNvdXJjZTtcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaGFzT3duUHJvcGVydHkoJ2JvZHknKSAmJiBtZXNzYWdlLmJvZHkuaGFzT3duUHJvcGVydHkoJ3N1YnNjcmliZXInKSAmJiBtZXNzYWdlLmJvZHkuc3Vic2NyaWJlcikge1xuICAgICAgLy9UT0RPOiB0aGlzIHN1YnNjcmliZXIgdmFsaWRhdGlvbiBzaG91bGQgbm90IGV4aXN0LCBiZWNhdXNlIGlzIG91dGRhdGVkXG4gICAgICAvL1RPRE86IHRoZSBzeW5jaGVyIGFuZCBzeW5jaGVyIG1hbmFnZXIgbm90IGZvbGxvd2luZyB0aGUgY29ycmVjdCBzcGVjO1xuICAgICAgbG9nLmluZm8oJ1tNZXNzYWdlQnVzIC0gaXNJbmNvbWluZ01lc3NhZ2VdIC0gbWVzc2FnZS5ib2R5LnN1YnNjcmliZXI6ICcsIG1lc3NhZ2UuYm9keS5zdWJzY3JpYmVyKTtcbiAgICAgIGZyb20gPSBtZXNzYWdlLmJvZHkuc3Vic2NyaWJlcjtcbiAgICB9ICBlbHNlIGlmIChtZXNzYWdlLmhhc093blByb3BlcnR5KCdib2R5JykgJiYgbWVzc2FnZS5ib2R5Lmhhc093blByb3BlcnR5KCdyZXBvcnRlcicpICYmIG1lc3NhZ2UuYm9keS5yZXBvcnRlcikge1xuICAgICAgLy9UT0RPOiB0aGlzIHN1YnNjcmliZXIgdmFsaWRhdGlvbiBzaG91bGQgbm90IGV4aXN0LCBiZWNhdXNlIGlzIG91dGRhdGVkXG4gICAgICAvL1RPRE86IHRoZSBzeW5jaGVyIGFuZCBzeW5jaGVyIG1hbmFnZXIgbm90IGZvbGxvd2luZyB0aGUgY29ycmVjdCBzcGVjO1xuICAgICAgbG9nLmluZm8oJ1tNZXNzYWdlQnVzIC0gaXNJbmNvbWluZ01lc3NhZ2VdIC0gbWVzc2FnZS5ib2R5LnJlcG9ydGVyOiAnLCBtZXNzYWdlLmJvZHkucmVwb3J0ZXIpO1xuICAgICAgZnJvbSA9IG1lc3NhZ2UuYm9keS5yZXBvcnRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmluZm8oJ1tNZXNzYWdlQnVzIC0gaXNJbmNvbWluZ01lc3NhZ2VdIC0gbWVzc2FnZS5mcm9tICcsIG1lc3NhZ2UuZnJvbSk7XG4gICAgICBmcm9tID0gbWVzc2FnZS5mcm9tO1xuICAgIH1cblxuICAgIGxvZy5pbmZvKCdbTWVzc2FnZUJ1cyAtIGlzSW5jb21pbmdNZXNzYWdlXSAtIGNoZWNrIGlmIGlzTG9jYWw6ICcsIGZyb20pO1xuICAgIHJldHVybiAhdGhpcy5fcmVnaXN0cnkuaXNMb2NhbChmcm9tKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZXh0ZXJuYWwgcHVibGlzaCBhZGRyZXNzIGxpc3RlbmVyLiBFdmVyeSBtZXNzYWdlIGZvciB0aGUgYWRkcmVzcyB3aWxsIGJlIGZvcndhcmRlZCB0byB0aGUgZXh0ZXJuYWwgcm91dGluZyBieSBfb25Qb3N0TWVzc2FnZS5cbiAgICogVGhpcyBtZWFucywgZXZlbiBpZiB0aGVyZSBpcyBhIGxpc3RlbmVyIGZvciB0aGUgYWRkcmVzcywgaXQgd2lsbCBhbHNvIHNlbmQgdGhlIG1lc3NhZ2UgdG8gdGhlIGV4dGVybmFsIHJvdXRpbmcuXG4gICAqIEBwYXJhbSB7VVJMfSBmcm9tIFB1Ymxpc2ggYWRkcmVzcy5cbiAgICovXG4gIGFkZFB1Ymxpc2goZnJvbSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICAvL3ZlcmlmeSBpZiBmb3J3YXJkIGV4aXN0XG4gICAgbGV0IHJlZkNvdW50ID0gX3RoaXMuX2ZvcndhcmRzW2Zyb21dO1xuICAgIGlmICghcmVmQ291bnQpIHtcbiAgICAgIGxldCBmb3J3YXJkTGlzdGVuZXIgPSBfdGhpcy5hZGRMaXN0ZW5lcihmcm9tLCAobXNnKSA9PiB7XG4gICAgICAgIGxvZy5pbmZvKCdNQi1QVUJMSVNIOiAoICcgKyBmcm9tICsgJyApJyk7XG4gICAgICAgIF90aGlzLl9vblBvc3RNZXNzYWdlKG1zZyk7XG4gICAgICB9KTtcblxuICAgICAgcmVmQ291bnQgPSB7XG4gICAgICAgIGNvdW50ZXI6IDAsXG4gICAgICAgIGZsOiBmb3J3YXJkTGlzdGVuZXIsXG4gICAgICAgIHJlbW92ZTogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY291bnRlci0tO1xuICAgICAgICAgIGlmICh0aGlzLmNvdW50ZXIgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuZmwucmVtb3ZlKCk7XG4gICAgICAgICAgICBkZWxldGUgX3RoaXMuX2ZvcndhcmRzW2Zyb21dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICBfdGhpcy5fZm9yd2FyZHNbZnJvbV0gPSByZWZDb3VudDtcbiAgIH1cblxuICAgcmVmQ291bnQuY291bnRlcisrO1xuICAgcmV0dXJuIHJlZkNvdW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBmb3J3YXJkIGxpc3RlbmVyIGZvciBhIG1lc3NhZ2UgZGVzdGluYXRpb24uIEV2ZXJ5IG1lc3NhZ2UgcmVhY2hpbmcgYW4gYWRkcmVzcyB3aWxsIGJlIGFsc28gc2VudCB0byB0aGUgZm9yd2FyZCBhZGRyZXNzLlxuICAgKiBAcGFyYW0ge1VSTH0gZnJvbSBNZXNzYWdlIGRlc3RpbmF0aW9uLCBpdCdzIGFjdHVhbGx5IHRoZSBmaWVsZCBcInRvXCIgb2YgdGhlIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7VVJMfSB0byAgIEZvcndhcmQgYWRkcmVzcy5cbiAgICovXG4gICBhZGRGb3J3YXJkKGZyb20sIHRvKSB7XG4gICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICAgcmV0dXJuIF90aGlzLmFkZExpc3RlbmVyKGZyb20sIChtc2cpID0+IHtcbiAgICAgICBsb2cuaW5mbygnTUItRk9SV0FSRDogKCAnICsgZnJvbSArICcgdG8gJyArIHRvICsgJyApJyk7XG4gICAgICAgX3RoaXMuZm9yd2FyZCh0bywgbXNnKTtcbiAgICAgfSk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogSnVzdCBmb3J3YXJkJ3MgYSBtZXNzYWdlIHRvIHRoZSBmb3J3YXJkIGFkZHJlc3MuIExpc3RlbmVycyBzaG91bGQgYmUgYXZhaWxhYmxlIGZvciB0aGUgZm9yd2FyZCBhZGRyZXNzLlxuICAgICogQHBhcmFtICB7VVJMfSB1cmwgRm9yd2FyZCBhZGRyZXNzLlxuICAgICogQHBhcmFtICB7TWVzc2FnZX0gbXNnIE1lc3NhZ2UgdG8gZm9yd2FyZFxuICAgICovXG4gICBmb3J3YXJkKHVybCwgbXNnKSB7XG4gICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICAgbGV0IGl0ZW1MaXN0ID0gX3RoaXMuX3N1YnNjcmlwdGlvbnNbdXJsXTtcbiAgICAgaWYgKGl0ZW1MaXN0KSB7XG4gICAgICAgX3RoaXMuX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKTtcbiAgICAgfVxuICAgfVxuXG4gICAvL2RlZmF1bHQgcm91dGUsIGlmIHRoZXJlIGFyZSBubyBsaXN0ZW5lcnMgYXZhaWxhYmxlIGZvciBhIG1lc3NhZ2UgZGVzdGluYXRpb24uXG4gICBfb25Qb3N0TWVzc2FnZShtc2cpIHtcbiAgICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgICAvL3Jlc29sdmUgZXh0ZXJuYWwgcHJvdG9zdHViLi4uXG4gICAgIF90aGlzLl9yZWdpc3RyeS5yZXNvbHZlKG1zZykudGhlbigocm91dGUsIG1zZzJyb3V0ZSkgPT4ge1xuICAgICAgIGlmIChtc2cycm91dGUpIF90aGlzLmZvcndhcmQocm91dGUsIG1zZzJyb3V0ZSk7XG4gICAgICAgZWxzZSBfdGhpcy5mb3J3YXJkKHJvdXRlLCBtc2cpO1xuICAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7XG4gICAgICAgbG9nLmVycm9yKCdSRVNPTFZFLUVSUk9SOiAnLCBlKTtcbiAgICAgfSk7XG4gICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1lc3NhZ2VCdXM7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2J1cy9NZXNzYWdlQnVzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkE7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBOzs7QUFBQTtBQUNBOzs7Ozs7O0FBSkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRkE7QUFDQTtBQU1BOzs7OztBQUtBOzs7QUFDQTs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFYQTtBQVlBO0FBQ0E7Ozs7O0FBS0E7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7OztBQUtBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQUNBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBckxBO0FBQUE7QUFBQTs7O0FBRUE7QUFBQTtBQUFBOzs7QUE1QkE7QUFDQTtBQWlOQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///489\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(11);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('Pipeline');\n\n/**\n* @author micaelpedrosa@gmail.com\n* Sequencial processor of methods. Similar to how Sequential Promise's work, but better fit for message processing.\n* Normal use for this, is to intercept all messages with configured handlers, and act accordingly.\n*/\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n\nvar Pipeline = function () {\n /* public\n handlers: ((PipeContext) => void)[]\n onFail: (error) => void\n */\n\n function Pipeline(_onFail) {\n (0, _classCallCheck3.default)(this, Pipeline);\n\n var _this = this;\n\n _this.handlers = [];\n _this.onFail = _onFail;\n }\n\n /**\n * Insert a message in the pipeline queue. All messages are wrapped with a PipeContext.\n * @param {Message} msg Message for the queue\n * @param {Callback} onDeliver When message is finished processing from all handlers, it will be delivered in this callback.\n */\n\n\n (0, _createClass3.default)(Pipeline, [{\n key: 'process',\n value: function process(msg, onDeliver) {\n var _this = this;\n\n if (_this.handlers.length > 0) {\n var iter = new Iterator(_this.handlers);\n iter.next(new PipeContext(_this, iter, msg, onDeliver));\n } else {\n onDeliver(msg);\n }\n }\n }]);\n return Pipeline;\n}();\n\n/**\n* @author micaelpedrosa@gmail.com\n* Wrapper around a message that adds actions that can be fired by any interceptor handler.\n* The Pipeline is asynchronous, so an handler should always call an action, the default one is \"next()\"\n*/\n\n\nvar PipeContext = function () {\n /* private\n _inStop: boolean\n _pipeline: Pipeline\n _iter: Iterator\n _msg: Message\n */\n\n function PipeContext(pipeline, iter, msg, onDeliver) {\n (0, _classCallCheck3.default)(this, PipeContext);\n\n var _this = this;\n\n _this._inStop = false;\n\n _this._pipeline = pipeline;\n _this._iter = iter;\n _this._msg = msg;\n _this._onDeliver = onDeliver;\n }\n\n (0, _createClass3.default)(PipeContext, [{\n key: 'next',\n\n\n /**\n * Proceed to the next interceptor handler, unless there was an error. If it's the last one, proceed to onDeliver handler.\n */\n value: function next() {\n var _this = this;\n\n if (!_this._inStop) {\n if (_this._iter.hasNext) {\n _this._iter.next(_this);\n } else {\n _this._onDeliver(_this._msg);\n }\n }\n }\n\n /**\n * Proceed directly to the onDeliver handler, unless there was an error.\n */\n\n }, {\n key: 'deliver',\n value: function deliver() {\n var _this = this;\n if (!_this._inStop) {\n _this._inStop = true;\n _this._onDeliver(_this._msg);\n }\n }\n\n /**\n * Mark the context with an error and proceed to the onFail handler.\n * @param {[type]} error [description]\n */\n\n }, {\n key: 'fail',\n value: function fail(error) {\n var _this = this;\n\n if (!_this._inStop) {\n _this._inStop = true;\n if (_this._pipeline.onFail) {\n _this._pipeline.onFail(error);\n }\n }\n }\n }, {\n key: 'pipeline',\n get: function get() {\n return this._pipeline;\n }\n }, {\n key: 'msg',\n get: function get() {\n return this._msg;\n },\n set: function set(inMsg) {\n this._msg = inMsg;\n }\n }]);\n return PipeContext;\n}();\n\nvar Iterator = function () {\n /* private\n _index: number\n _array: []\n */\n\n function Iterator(array) {\n (0, _classCallCheck3.default)(this, Iterator);\n\n this._index = -1;\n this._array = array;\n }\n\n (0, _createClass3.default)(Iterator, [{\n key: 'hasNext',\n get: function get() {\n return this._index < this._array.length - 1;\n }\n }, {\n key: 'next',\n get: function get() {\n this._index++;\n return this._array[this._index];\n }\n }]);\n return Iterator;\n}();\n\nexports.default = Pipeline;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvUGlwZWxpbmUuanM/YTAzZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKiovXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1BpcGVsaW5lJyk7XG5cbi8qKlxuKiBAYXV0aG9yIG1pY2FlbHBlZHJvc2FAZ21haWwuY29tXG4qIFNlcXVlbmNpYWwgcHJvY2Vzc29yIG9mIG1ldGhvZHMuIFNpbWlsYXIgdG8gaG93IFNlcXVlbnRpYWwgUHJvbWlzZSdzIHdvcmssIGJ1dCBiZXR0ZXIgZml0IGZvciBtZXNzYWdlIHByb2Nlc3NpbmcuXG4qIE5vcm1hbCB1c2UgZm9yIHRoaXMsIGlzIHRvIGludGVyY2VwdCBhbGwgbWVzc2FnZXMgd2l0aCBjb25maWd1cmVkIGhhbmRsZXJzLCBhbmQgYWN0IGFjY29yZGluZ2x5LlxuKi9cblxuaW1wb3J0IHtpc0RhdGFPYmplY3RVUkx9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcblxuY2xhc3MgUGlwZWxpbmUge1xuICAvKiBwdWJsaWNcbiAgICBoYW5kbGVyczogKChQaXBlQ29udGV4dCkgPT4gdm9pZClbXVxuICAgIG9uRmFpbDogKGVycm9yKSA9PiB2b2lkXG4gICovXG5cbiAgY29uc3RydWN0b3IoX29uRmFpbCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBfdGhpcy5oYW5kbGVycyA9IFtdO1xuICAgIF90aGlzLm9uRmFpbCA9IF9vbkZhaWw7XG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0IGEgbWVzc2FnZSBpbiB0aGUgcGlwZWxpbmUgcXVldWUuIEFsbCBtZXNzYWdlcyBhcmUgd3JhcHBlZCB3aXRoIGEgUGlwZUNvbnRleHQuXG4gICAqIEBwYXJhbSAge01lc3NhZ2V9IG1zZyAgICAgICBNZXNzYWdlIGZvciB0aGUgcXVldWVcbiAgICogQHBhcmFtICB7Q2FsbGJhY2t9IG9uRGVsaXZlciBXaGVuIG1lc3NhZ2UgaXMgZmluaXNoZWQgcHJvY2Vzc2luZyBmcm9tIGFsbCBoYW5kbGVycywgaXQgd2lsbCBiZSBkZWxpdmVyZWQgaW4gdGhpcyBjYWxsYmFjay5cbiAgICovXG4gIHByb2Nlc3MobXNnLCBvbkRlbGl2ZXIpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKF90aGlzLmhhbmRsZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBpdGVyID0gbmV3IEl0ZXJhdG9yKF90aGlzLmhhbmRsZXJzKTtcbiAgICAgIGl0ZXIubmV4dChuZXcgUGlwZUNvbnRleHQoX3RoaXMsIGl0ZXIsIG1zZywgb25EZWxpdmVyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uRGVsaXZlcihtc2cpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxuKiBXcmFwcGVyIGFyb3VuZCBhIG1lc3NhZ2UgdGhhdCBhZGRzIGFjdGlvbnMgdGhhdCBjYW4gYmUgZmlyZWQgYnkgYW55IGludGVyY2VwdG9yIGhhbmRsZXIuXG4qIFRoZSBQaXBlbGluZSBpcyBhc3luY2hyb25vdXMsIHNvIGFuIGhhbmRsZXIgc2hvdWxkIGFsd2F5cyBjYWxsIGFuIGFjdGlvbiwgdGhlIGRlZmF1bHQgb25lIGlzIFwibmV4dCgpXCJcbiovXG5jbGFzcyBQaXBlQ29udGV4dCB7XG4gIC8qIHByaXZhdGVcbiAgICBfaW5TdG9wOiBib29sZWFuXG5cbiAgICBfcGlwZWxpbmU6IFBpcGVsaW5lXG4gICAgX2l0ZXI6IEl0ZXJhdG9yXG4gICAgX21zZzogTWVzc2FnZVxuICAqL1xuXG4gIGNvbnN0cnVjdG9yKHBpcGVsaW5lLCBpdGVyLCBtc2csIG9uRGVsaXZlcikge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBfdGhpcy5faW5TdG9wID0gZmFsc2U7XG5cbiAgICBfdGhpcy5fcGlwZWxpbmUgPSBwaXBlbGluZTtcbiAgICBfdGhpcy5faXRlciA9IGl0ZXI7XG4gICAgX3RoaXMuX21zZyA9IG1zZztcbiAgICBfdGhpcy5fb25EZWxpdmVyID0gb25EZWxpdmVyO1xuICB9XG5cbiAgZ2V0IHBpcGVsaW5lKCkgeyByZXR1cm4gdGhpcy5fcGlwZWxpbmU7IH1cblxuICBnZXQgbXNnKCkgeyByZXR1cm4gdGhpcy5fbXNnOyB9XG4gIHNldCBtc2coaW5Nc2cpIHsgdGhpcy5fbXNnID0gaW5Nc2c7IH1cblxuICAvKipcbiAgICogUHJvY2VlZCB0byB0aGUgbmV4dCBpbnRlcmNlcHRvciBoYW5kbGVyLCB1bmxlc3MgdGhlcmUgd2FzIGFuIGVycm9yLiBJZiBpdCdzIHRoZSBsYXN0IG9uZSwgcHJvY2VlZCB0byBvbkRlbGl2ZXIgaGFuZGxlci5cbiAgICovXG4gIG5leHQoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGlmICghX3RoaXMuX2luU3RvcCkge1xuICAgICAgaWYgKF90aGlzLl9pdGVyLmhhc05leHQpIHtcbiAgICAgICAgX3RoaXMuX2l0ZXIubmV4dChfdGhpcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5fb25EZWxpdmVyKF90aGlzLl9tc2cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZWVkIGRpcmVjdGx5IHRvIHRoZSBvbkRlbGl2ZXIgaGFuZGxlciwgdW5sZXNzIHRoZXJlIHdhcyBhbiBlcnJvci5cbiAgICovXG4gIGRlbGl2ZXIoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBpZiAoIV90aGlzLl9pblN0b3ApIHtcbiAgICAgIF90aGlzLl9pblN0b3AgPSB0cnVlO1xuICAgICAgX3RoaXMuX29uRGVsaXZlcihfdGhpcy5fbXNnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWFyayB0aGUgY29udGV4dCB3aXRoIGFuIGVycm9yIGFuZCBwcm9jZWVkIHRvIHRoZSBvbkZhaWwgaGFuZGxlci5cbiAgICogQHBhcmFtICB7W3R5cGVdfSBlcnJvciBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBmYWlsKGVycm9yKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGlmICghX3RoaXMuX2luU3RvcCkge1xuICAgICAgX3RoaXMuX2luU3RvcCA9IHRydWU7XG4gICAgICBpZiAoX3RoaXMuX3BpcGVsaW5lLm9uRmFpbCkge1xuICAgICAgICBfdGhpcy5fcGlwZWxpbmUub25GYWlsKGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG5cblxufVxuXG5jbGFzcyBJdGVyYXRvciB7XG4gIC8qIHByaXZhdGVcbiAgICBfaW5kZXg6IG51bWJlclxuICAgIF9hcnJheTogW11cbiAgKi9cblxuICBjb25zdHJ1Y3RvcihhcnJheSkge1xuICAgIHRoaXMuX2luZGV4ID0gLTE7XG4gICAgdGhpcy5fYXJyYXkgPSBhcnJheTtcbiAgfVxuXG4gIGdldCBoYXNOZXh0KCkge1xuICAgIHJldHVybiB0aGlzLl9pbmRleCA8IHRoaXMuX2FycmF5Lmxlbmd0aCAtIDE7XG4gIH1cblxuICBnZXQgbmV4dCgpIHtcbiAgICB0aGlzLl9pbmRleCsrO1xuICAgIHJldHVybiB0aGlzLl9hcnJheVt0aGlzLl9pbmRleF07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGlwZWxpbmU7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2J1cy9QaXBlbGluZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFzQkE7QUFDQTtBQURBO0FBQ0E7QUFRQTtBQUNBOzs7OztBQVRBO0FBQ0E7QUFDQTs7Ozs7O0FBekJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlDQTtBQUNBOzs7OztBQUtBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFHQTs7Ozs7OztBQUtBO0FBQ0E7Ozs7Ozs7QUFRQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFNQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUE1Q0E7QUFBQTtBQUFBOzs7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7Ozs7O0FBZ0RBO0FBQ0E7Ozs7O0FBS0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBR0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///490\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(11);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('CryptoManager');\n\n/**\n* This class contains the handshake protocol, used to exchange session keys between\n* two user, after their identity is validate.\n*/\nvar HandShakeProtocol = function () {\n function HandShakeProtocol(chatKeys, crypto, idm, sessionKeys, storage) {\n (0, _classCallCheck3.default)(this, HandShakeProtocol);\n\n this.chatKeys = chatKeys;\n this.crypto = crypto;\n this.idm = idm;\n this.dataObjectSessionKeys = sessionKeys;\n this.storageManager = storage;\n }\n\n (0, _createClass3.default)(HandShakeProtocol, [{\n key: 'startHandShake',\n value: function startHandShake(message, chatKeys) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n chatKeys.keys.fromRandom = _this.crypto.generateRandom();\n var startHandShakeMsg = {\n type: 'handshake',\n to: message.to,\n from: message.from,\n body: {\n handshakePhase: 'senderHello',\n value: (0, _utils.encode)(chatKeys.keys.fromRandom)\n }\n };\n chatKeys.handshakeHistory.senderHello = (0, _utils.filterMessageToHash)(startHandShakeMsg, undefined, chatKeys.hypertyFrom.messageInfo);\n\n // check if was the encrypt or the mutual authentication that request the\n // start of the handShakePhase.\n\n if (chatKeys.initialMessage) {\n resolve({ postToBus: false, message: startHandShakeMsg, chatKeys: chatKeys });\n } else {\n _this.chatKeys[message.from + '<->' + message.to] = chatKeys;\n resolve({ postToBus: true, message: startHandShakeMsg });\n }\n });\n }\n }, {\n key: 'senderHello',\n value: function senderHello(message, chatKeys) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n log.log('senderHello');\n chatKeys.handshakeHistory.senderHello = (0, _utils.filterMessageToHash)(message);\n chatKeys.keys.fromRandom = (0, _utils.decodeToUint8Array)(message.body.value);\n chatKeys.keys.toRandom = _this.crypto.generateRandom();\n\n var senderHelloMsg = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'receiverHello',\n value: (0, _utils.encode)(chatKeys.keys.toRandom)\n }\n };\n chatKeys.handshakeHistory.receiverHello = (0, _utils.filterMessageToHash)(senderHelloMsg, undefined, chatKeys.hypertyFrom.messageInfo);\n resolve({ message: senderHelloMsg, chatKeys: chatKeys });\n });\n }\n }, {\n key: 'receiverHello',\n value: function receiverHello(message, chatKeys, privateKey) {\n var _this = this;\n var value = {};\n var iv = void 0;\n return new _promise2.default(function (resolve, reject) {\n log.log('receiverHello');\n chatKeys.handshakeHistory.receiverHello = (0, _utils.filterMessageToHash)(message);\n\n _this.idm.validateAssertion(message.body.identity.assertion, undefined, message.body.identity.idp.domain).then(function (value) {\n\n //TODO remove later this verification as soon as all the IdP proxy are updated in the example\n var encodedpublicKey = typeof value.contents === 'string' ? value.contents : value.contents.nonce;\n\n var receiverPublicKey = (0, _utils.parseToUint8Array)(encodedpublicKey);\n var premasterSecret = _this.crypto.generatePMS();\n var toRandom = message.body.value;\n chatKeys.hypertyTo.assertion = message.body.identity.assertion;\n chatKeys.hypertyTo.publicKey = receiverPublicKey;\n chatKeys.hypertyTo.userID = value.contents.email;\n chatKeys.keys.toRandom = (0, _utils.decodeToUint8Array)(toRandom);\n chatKeys.keys.premasterKey = premasterSecret;\n\n var concatKey = _this.crypto.concatPMSwithRandoms(premasterSecret, chatKeys.keys.toRandom, chatKeys.keys.fromRandom);\n\n return _this.crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom);\n\n //generate the master key\n }).then(function (masterKey) {\n chatKeys.keys.masterKey = masterKey;\n\n return _this.crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom);\n\n //generate the symmetric and hash keys\n }).then(function (keys) {\n\n chatKeys.keys.hypertyToSessionKey = new Uint8Array(keys[0]);\n chatKeys.keys.hypertyFromSessionKey = new Uint8Array(keys[1]);\n chatKeys.keys.hypertyToHashKey = new Uint8Array(keys[2]);\n chatKeys.keys.hypertyFromHashKey = new Uint8Array(keys[3]);\n iv = _this.crypto.generateIV();\n value.iv = (0, _utils.encode)(iv);\n\n var messageStructure = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'senderCertificate'\n }\n };\n\n // hash the value and the iv\n var filteredMessage = (0, _utils.filterMessageToHash)(messageStructure, 'ok' + iv, chatKeys.hypertyFrom.messageInfo);\n return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage);\n }).then(function (hash) {\n value.hash = (0, _utils.encode)(hash);\n\n //encrypt the data\n return _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, 'ok', iv);\n }).then(function (encryptedData) {\n value.symetricEncryption = (0, _utils.encode)(encryptedData);\n\n return _this.crypto.encryptRSA(chatKeys.hypertyTo.publicKey, chatKeys.keys.premasterKey);\n }).then(function (encryptedValue) {\n value.assymetricEncryption = (0, _utils.encode)(encryptedValue);\n\n var messageStructure = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'senderCertificate'\n }\n };\n\n var messageToHash = (0, _utils.filterMessageToHash)(messageStructure, chatKeys.keys.premasterKey, chatKeys.hypertyFrom.messageInfo);\n return _this.crypto.signRSA(privateKey, (0, _utils.encode)(chatKeys.handshakeHistory) + (0, _utils.encode)(messageToHash));\n }).then(function (signature) {\n\n value.signature = (0, _utils.encode)(signature);\n\n var receiverHelloMsg = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'senderCertificate',\n value: (0, _utils.encode)(value)\n }\n };\n chatKeys.handshakeHistory.senderCertificate = (0, _utils.filterMessageToHash)(receiverHelloMsg, 'ok' + iv, chatKeys.hypertyFrom.messageInfo);\n\n resolve({ message: receiverHelloMsg, chatKeys: chatKeys });\n }, function (error) {\n return reject(error);\n });\n });\n }\n }, {\n key: 'senderCertificate',\n value: function senderCertificate(message, chatKeys, privateKey) {\n var _this = this;\n var iv = void 0;\n var filteredMessage = void 0;\n var value = {};\n return new _promise2.default(function (resolve, reject) {\n log.log('senderCertificate');\n\n var receivedValue = (0, _utils.decode)(message.body.value);\n\n _this.idm.validateAssertion(message.body.identity.assertion, undefined, message.body.identity.idp.domain).then(function (value) {\n var encryptedPMS = (0, _utils.decodeToUint8Array)(receivedValue.assymetricEncryption);\n\n //TODO remove later this verification as soon as all the IdP proxy are updated in the example\n var encodedpublicKey = typeof value.contents === 'string' ? value.contents : value.contents.nonce;\n\n var senderPublicKey = (0, _utils.parseToUint8Array)(encodedpublicKey);\n chatKeys.hypertyTo.assertion = message.body.identity.assertion;\n chatKeys.hypertyTo.publicKey = senderPublicKey;\n chatKeys.hypertyTo.userID = value.contents.email;\n\n return _this.crypto.decryptRSA(privateKey, encryptedPMS);\n }, function (error) {\n // log.log(error);\n reject('Error during authentication of identity: ', error.message);\n\n //obtain the PremasterKey using the private key\n }).then(function (pms) {\n\n chatKeys.keys.premasterKey = new Uint8Array(pms);\n\n var signature = (0, _utils.decodeToUint8Array)(receivedValue.signature);\n\n var receivedmsgToHash = (0, _utils.filterMessageToHash)(message, chatKeys.keys.premasterKey);\n\n return _this.crypto.verifyRSA(chatKeys.hypertyTo.publicKey, (0, _utils.encode)(chatKeys.handshakeHistory) + (0, _utils.encode)(receivedmsgToHash), signature);\n\n // validates the signature received\n }).then(function (signValidationResult) {\n\n log.log('SenderCertificate - signature validation result ', signValidationResult);\n var concatKey = _this.crypto.concatPMSwithRandoms(chatKeys.keys.premasterKey, chatKeys.keys.toRandom, chatKeys.keys.fromRandom);\n\n return _this.crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom);\n\n // generates the master keys from the Premaster key and the randoms\n }).then(function (masterKey) {\n chatKeys.keys.masterKey = masterKey;\n\n return _this.crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom);\n\n // generates the symmetric keys to be used in the symmetric encryption\n }).then(function (keys) {\n chatKeys.keys.hypertyFromSessionKey = new Uint8Array(keys[0]);\n chatKeys.keys.hypertyToSessionKey = new Uint8Array(keys[1]);\n chatKeys.keys.hypertyFromHashKey = new Uint8Array(keys[2]);\n chatKeys.keys.hypertyToHashKey = new Uint8Array(keys[3]);\n iv = (0, _utils.decodeToUint8Array)(receivedValue.iv);\n var data = (0, _utils.decodeToUint8Array)(receivedValue.symetricEncryption);\n\n return _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, data, iv);\n }).then(function (decryptedData) {\n // log.log('decryptedData', decryptedData);\n\n chatKeys.handshakeHistory.senderCertificate = (0, _utils.filterMessageToHash)(message, decryptedData + iv);\n\n var hashReceived = (0, _utils.decodeToUint8Array)(receivedValue.hash);\n\n filteredMessage = (0, _utils.filterMessageToHash)(message, decryptedData + iv);\n\n return _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, hashReceived);\n }).then(function (verifiedHash) {\n\n // log.log('result of hash verification ', verifiedHash);\n var receiverFinishedMessage = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'receiverFinishedMessage'\n }\n };\n iv = _this.crypto.generateIV();\n value.iv = (0, _utils.encode)(iv);\n\n filteredMessage = (0, _utils.filterMessageToHash)(receiverFinishedMessage, 'ok!' + iv, chatKeys.hypertyFrom.messageInfo);\n\n return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage);\n }).then(function (hash) {\n\n value.hash = (0, _utils.encode)(hash);\n return _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, 'ok!', iv);\n }).then(function (encryptedValue) {\n value.value = (0, _utils.encode)(encryptedValue);\n var receiverFinishedMessage = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'receiverFinishedMessage',\n value: (0, _utils.encode)(value)\n }\n };\n\n chatKeys.handshakeHistory.receiverFinishedMessage = (0, _utils.filterMessageToHash)(receiverFinishedMessage, 'ok!' + iv, chatKeys.hypertyFrom.messageInfo);\n chatKeys.authenticated = true;\n resolve({ message: receiverFinishedMessage, chatKeys: chatKeys });\n }).catch(function (err) {\n reject('On _doHandShakePhase from senderCertificate error: ' + err);\n });\n });\n }\n }, {\n key: 'receiverFinishedMessage',\n value: function receiverFinishedMessage(message, chatKeys) {\n\n var _this = this;\n var iv = void 0;\n var value = {};\n var hash = void 0;\n return new _promise2.default(function (resolve, reject) {\n\n log.log('receiverFinishedMessage');\n\n chatKeys.authenticated = true;\n\n value = (0, _utils.decode)(message.body.value);\n\n iv = (0, _utils.decodeToUint8Array)(value.iv);\n var data = (0, _utils.decodeToUint8Array)(value.value);\n hash = (0, _utils.decodeToUint8Array)(value.hash);\n\n _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, data, iv).then(function (decryptedData) {\n // log.log('decryptedData', decryptedData);\n chatKeys.handshakeHistory.receiverFinishedMessage = (0, _utils.filterMessageToHash)(message, decryptedData + iv);\n\n var filteredMessage = (0, _utils.filterMessageToHash)(message, decryptedData + iv);\n _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, hash).then(function (result) {\n\n // check if there was an initial message that was blocked and send it\n if (chatKeys.initialMessage) {\n\n var initialMessage = {\n type: 'create',\n to: message.from,\n from: message.to,\n body: {\n value: chatKeys.initialMessage.body.value\n }\n };\n\n resolve({ sendReporterSessionKey: false, message: initialMessage, chatKeys: chatKeys });\n\n //sends the sessionKey to the subscriber hyperty\n } else {\n resolve({ sendReporterSessionKey: true, message: message, chatKeys: chatKeys });\n }\n });\n });\n });\n }\n }, {\n key: 'reporterSessionKey',\n value: function reporterSessionKey(message, chatKeys) {\n\n var _this = this;\n var iv = void 0;\n var value = {};\n var hash = void 0;\n return new _promise2.default(function (resolve, reject) {\n\n log.log('reporterSessionKey');\n\n var valueIVandHash = (0, _utils.decode)(message.body.value);\n hash = (0, _utils.decodeToUint8Array)(valueIVandHash.hash);\n iv = (0, _utils.decodeToUint8Array)(valueIVandHash.iv);\n var encryptedValue = (0, _utils.decodeToUint8Array)(valueIVandHash.value);\n var parsedValue = void 0;\n var sessionKey = void 0;\n var dataObjectURL = void 0;\n var receiverAcknowledgeMsg = void 0;\n\n //log.log('[IdentityModule reporterSessionKey] - decryptAES: ', chatKeys.keys.hypertyToSessionKey, encryptedValue, iv);\n\n _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, encryptedValue, iv).then(function (decryptedValue) {\n\n parsedValue = (0, _utils.decode)(decryptedValue);\n sessionKey = (0, _utils.decodeToUint8Array)(parsedValue.value);\n dataObjectURL = parsedValue.dataObjectURL;\n\n var messageToHash = (0, _utils.filterMessageToHash)(message, decryptedValue + iv);\n\n return _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, messageToHash, hash);\n }).then(function (hashResult) {\n\n // log.log('hash successfully validated ', hashResult);\n\n _this.dataObjectSessionKeys[dataObjectURL] = { sessionKey: sessionKey, isToEncrypt: true };\n var dataObjectSessionKeysClone = (0, _utils.chatkeysToStringCloner)(_this.dataObjectSessionKeys);\n _this.storageManager.set('dataObjectSessionKeys', 0, dataObjectSessionKeysClone).catch(function (err) {\n reject('On _sendReporterSessionKey from method reporterSessionKey error: ' + err);\n });\n\n iv = _this.crypto.generateIV();\n value.iv = (0, _utils.encode)(iv);\n\n return _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, 'ok!!', iv);\n }).then(function (encryptedValue) {\n\n receiverAcknowledgeMsg = {\n type: 'handshake',\n to: message.from,\n from: message.to,\n body: {\n handshakePhase: 'receiverAcknowledge'\n }\n };\n\n value.value = (0, _utils.encode)(encryptedValue);\n var messageToHash = (0, _utils.filterMessageToHash)(receiverAcknowledgeMsg, 'ok!!' + iv, chatKeys.hypertyFrom.messageInfo);\n\n return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, messageToHash);\n }).then(function (hashedMessage) {\n var finalValue = (0, _utils.encode)({ value: value.value, hash: (0, _utils.encode)(hashedMessage), iv: value.iv });\n\n receiverAcknowledgeMsg.body.value = finalValue;\n resolve({ message: receiverAcknowledgeMsg, chatKeys: chatKeys });\n }).catch(function (err) {\n reject('On _doHandShakePhase from reporterSessionKey error: ' + err);\n });\n });\n }\n }, {\n key: 'receiverAcknowledge',\n value: function receiverAcknowledge(message, chatKeys) {\n\n var _this = this;\n var iv = void 0;\n return new _promise2.default(function (resolve, reject) {\n\n log.log('receiverAcknowledge');\n\n var receivedvalueIVandHash = (0, _utils.decode)(message.body.value);\n var receivedHash = (0, _utils.decodeToUint8Array)(receivedvalueIVandHash.hash);\n iv = (0, _utils.decodeToUint8Array)(receivedvalueIVandHash.iv);\n var receivedEncryptedValue = (0, _utils.decodeToUint8Array)(receivedvalueIVandHash.value);\n\n _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, receivedEncryptedValue, iv).then(function (decryptedValue) {\n\n var filteredMessage = (0, _utils.filterMessageToHash)(message, decryptedValue + iv);\n return _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, receivedHash);\n }).then(function (hashResult) {\n // log.log('hashResult ', hashResult);\n\n var callback = chatKeys.callback;\n\n if (callback) {\n callback('handShakeEnd');\n }\n resolve('handShakeEnd');\n }).catch(function (err) {\n reject('On _doHandShakePhase from receiverAcknowledge error: ' + err);\n });\n });\n }\n }]);\n return HandShakeProtocol;\n}();\n\nexports.default = HandShakeProtocol;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9jcnlwdG9NYW5hZ2VyL0hhbmRTaGFrZVByb3RvY29sLmpzP2M1ZTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdDcnlwdG9NYW5hZ2VyJyk7XG5cbmltcG9ydCB7Y2hhdGtleXNUb1N0cmluZ0Nsb25lciwgZW5jb2RlLCBkZWNvZGUsIGRlY29kZVRvVWludDhBcnJheSxcbiAgICAgICAgcGFyc2VUb1VpbnQ4QXJyYXksIGZpbHRlck1lc3NhZ2VUb0hhc2h9IGZyb20gJy4uL3V0aWxzL3V0aWxzLmpzJztcblxuXG4vKipcbiogVGhpcyBjbGFzcyBjb250YWlucyB0aGUgaGFuZHNoYWtlIHByb3RvY29sLCB1c2VkIHRvIGV4Y2hhbmdlIHNlc3Npb24ga2V5cyBiZXR3ZWVuXG4qICB0d28gdXNlciwgYWZ0ZXIgdGhlaXIgaWRlbnRpdHkgaXMgdmFsaWRhdGUuXG4qL1xuY2xhc3MgSGFuZFNoYWtlUHJvdG9jb2wge1xuXG4gIGNvbnN0cnVjdG9yKGNoYXRLZXlzLCBjcnlwdG8sIGlkbSwgc2Vzc2lvbktleXMsIHN0b3JhZ2UpIHtcbiAgICB0aGlzLmNoYXRLZXlzID0gY2hhdEtleXM7XG4gICAgdGhpcy5jcnlwdG8gPSBjcnlwdG87XG4gICAgdGhpcy5pZG0gPSBpZG07XG4gICAgdGhpcy5kYXRhT2JqZWN0U2Vzc2lvbktleXMgPSBzZXNzaW9uS2V5cztcbiAgICB0aGlzLnN0b3JhZ2VNYW5hZ2VyID0gc3RvcmFnZTtcbiAgfVxuXG4gIHN0YXJ0SGFuZFNoYWtlKG1lc3NhZ2UsIGNoYXRLZXlzKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBjaGF0S2V5cy5rZXlzLmZyb21SYW5kb20gPSBfdGhpcy5jcnlwdG8uZ2VuZXJhdGVSYW5kb20oKTtcbiAgICAgIGxldCBzdGFydEhhbmRTaGFrZU1zZyA9IHtcbiAgICAgICAgdHlwZTogJ2hhbmRzaGFrZScsXG4gICAgICAgIHRvOiBtZXNzYWdlLnRvLFxuICAgICAgICBmcm9tOiBtZXNzYWdlLmZyb20sXG4gICAgICAgIGJvZHk6IHtcbiAgICAgICAgICBoYW5kc2hha2VQaGFzZTogJ3NlbmRlckhlbGxvJyxcbiAgICAgICAgICB2YWx1ZTogZW5jb2RlKGNoYXRLZXlzLmtleXMuZnJvbVJhbmRvbSlcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNoYXRLZXlzLmhhbmRzaGFrZUhpc3Rvcnkuc2VuZGVySGVsbG8gPSBmaWx0ZXJNZXNzYWdlVG9IYXNoKHN0YXJ0SGFuZFNoYWtlTXNnLCB1bmRlZmluZWQsIGNoYXRLZXlzLmh5cGVydHlGcm9tLm1lc3NhZ2VJbmZvKTtcblxuICAgICAgLy8gY2hlY2sgaWYgd2FzIHRoZSBlbmNyeXB0IG9yIHRoZSBtdXR1YWwgYXV0aGVudGljYXRpb24gdGhhdCByZXF1ZXN0IHRoZVxuICAgICAgLy8gc3RhcnQgb2YgdGhlIGhhbmRTaGFrZVBoYXNlLlxuXG4gICAgICBpZiAoY2hhdEtleXMuaW5pdGlhbE1lc3NhZ2UpIHtcbiAgICAgICAgcmVzb2x2ZSh7cG9zdFRvQnVzOiBmYWxzZSwgbWVzc2FnZTogc3RhcnRIYW5kU2hha2VNc2csIGNoYXRLZXlzOiBjaGF0S2V5c30pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMuY2hhdEtleXNbbWVzc2FnZS5mcm9tICsgJzwtPicgKyBtZXNzYWdlLnRvXSA9IGNoYXRLZXlzO1xuICAgICAgICByZXNvbHZlKHtwb3N0VG9CdXM6IHRydWUsIG1lc3NhZ2U6IHN0YXJ0SGFuZFNoYWtlTXNnfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZW5kZXJIZWxsbyhtZXNzYWdlLCBjaGF0S2V5cykge1xuICAgIGxldCBfdGhpcyAgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGxvZy5sb2coJ3NlbmRlckhlbGxvJyk7XG4gICAgICBjaGF0S2V5cy5oYW5kc2hha2VIaXN0b3J5LnNlbmRlckhlbGxvID0gZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlKTtcbiAgICAgIGNoYXRLZXlzLmtleXMuZnJvbVJhbmRvbSA9IGRlY29kZVRvVWludDhBcnJheShtZXNzYWdlLmJvZHkudmFsdWUpO1xuICAgICAgY2hhdEtleXMua2V5cy50b1JhbmRvbSA9IF90aGlzLmNyeXB0by5nZW5lcmF0ZVJhbmRvbSgpO1xuXG4gICAgICBsZXQgc2VuZGVySGVsbG9Nc2cgPSB7XG4gICAgICAgIHR5cGU6ICdoYW5kc2hha2UnLFxuICAgICAgICB0bzogbWVzc2FnZS5mcm9tLFxuICAgICAgICBmcm9tOiBtZXNzYWdlLnRvLFxuICAgICAgICBib2R5OiB7XG4gICAgICAgICAgaGFuZHNoYWtlUGhhc2U6ICdyZWNlaXZlckhlbGxvJyxcbiAgICAgICAgICB2YWx1ZTogZW5jb2RlKGNoYXRLZXlzLmtleXMudG9SYW5kb20pXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjaGF0S2V5cy5oYW5kc2hha2VIaXN0b3J5LnJlY2VpdmVySGVsbG8gPSBmaWx0ZXJNZXNzYWdlVG9IYXNoKHNlbmRlckhlbGxvTXNnLCB1bmRlZmluZWQsIGNoYXRLZXlzLmh5cGVydHlGcm9tLm1lc3NhZ2VJbmZvKTtcbiAgICAgIHJlc29sdmUoe21lc3NhZ2U6IHNlbmRlckhlbGxvTXNnLCBjaGF0S2V5czogY2hhdEtleXN9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlY2VpdmVySGVsbG8obWVzc2FnZSwgY2hhdEtleXMsIHByaXZhdGVLZXkpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIGxldCB2YWx1ZSA9IHt9O1xuICAgIGxldCBpdjtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBsb2cubG9nKCdyZWNlaXZlckhlbGxvJyk7XG4gICAgICBjaGF0S2V5cy5oYW5kc2hha2VIaXN0b3J5LnJlY2VpdmVySGVsbG8gPSBmaWx0ZXJNZXNzYWdlVG9IYXNoKG1lc3NhZ2UpO1xuXG4gICAgICBfdGhpcy5pZG0udmFsaWRhdGVBc3NlcnRpb24obWVzc2FnZS5ib2R5LmlkZW50aXR5LmFzc2VydGlvbiwgdW5kZWZpbmVkLCBtZXNzYWdlLmJvZHkuaWRlbnRpdHkuaWRwLmRvbWFpbikudGhlbigodmFsdWUpID0+IHtcblxuICAgICAgLy9UT0RPIHJlbW92ZSBsYXRlciB0aGlzIHZlcmlmaWNhdGlvbiBhcyBzb29uIGFzIGFsbCB0aGUgSWRQIHByb3h5IGFyZSB1cGRhdGVkIGluIHRoZSBleGFtcGxlXG4gICAgICAgIGxldCBlbmNvZGVkcHVibGljS2V5ID0gKHR5cGVvZiB2YWx1ZS5jb250ZW50cyA9PT0gJ3N0cmluZycpID8gdmFsdWUuY29udGVudHMgOiB2YWx1ZS5jb250ZW50cy5ub25jZTtcblxuICAgICAgICBsZXQgcmVjZWl2ZXJQdWJsaWNLZXkgPSBwYXJzZVRvVWludDhBcnJheShlbmNvZGVkcHVibGljS2V5KTtcbiAgICAgICAgbGV0IHByZW1hc3RlclNlY3JldCA9IF90aGlzLmNyeXB0by5nZW5lcmF0ZVBNUygpO1xuICAgICAgICBsZXQgdG9SYW5kb20gPSBtZXNzYWdlLmJvZHkudmFsdWU7XG4gICAgICAgIGNoYXRLZXlzLmh5cGVydHlUby5hc3NlcnRpb24gPSBtZXNzYWdlLmJvZHkuaWRlbnRpdHkuYXNzZXJ0aW9uO1xuICAgICAgICBjaGF0S2V5cy5oeXBlcnR5VG8ucHVibGljS2V5ID0gcmVjZWl2ZXJQdWJsaWNLZXk7XG4gICAgICAgIGNoYXRLZXlzLmh5cGVydHlUby51c2VySUQgICAgPSB2YWx1ZS5jb250ZW50cy5lbWFpbDtcbiAgICAgICAgY2hhdEtleXMua2V5cy50b1JhbmRvbSAgPSBkZWNvZGVUb1VpbnQ4QXJyYXkodG9SYW5kb20pO1xuICAgICAgICBjaGF0S2V5cy5rZXlzLnByZW1hc3RlcktleSA9IHByZW1hc3RlclNlY3JldDtcblxuICAgICAgICBsZXQgY29uY2F0S2V5ID0gX3RoaXMuY3J5cHRvLmNvbmNhdFBNU3dpdGhSYW5kb21zKHByZW1hc3RlclNlY3JldCwgY2hhdEtleXMua2V5cy50b1JhbmRvbSwgY2hhdEtleXMua2V5cy5mcm9tUmFuZG9tKTtcblxuICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLmdlbmVyYXRlTWFzdGVyU2VjcmV0KGNvbmNhdEtleSwgJ21lc3NhZ2VIaXN0b3JpYycgKyBjaGF0S2V5cy5rZXlzLnRvUmFuZG9tICsgY2hhdEtleXMua2V5cy5mcm9tUmFuZG9tKTtcblxuICAgICAgLy9nZW5lcmF0ZSB0aGUgbWFzdGVyIGtleVxuICAgICAgfSkudGhlbigobWFzdGVyS2V5KSA9PiB7XG4gICAgICAgIGNoYXRLZXlzLmtleXMubWFzdGVyS2V5ID0gbWFzdGVyS2V5O1xuXG4gICAgICAgIHJldHVybiBfdGhpcy5jcnlwdG8uZ2VuZXJhdGVLZXlzKG1hc3RlcktleSwgJ2tleSBleHBhbnNpb24nICsgY2hhdEtleXMua2V5cy50b1JhbmRvbSArIGNoYXRLZXlzLmtleXMuZnJvbVJhbmRvbSk7XG5cbiAgICAgIC8vZ2VuZXJhdGUgdGhlIHN5bW1ldHJpYyBhbmQgaGFzaCBrZXlzXG4gICAgICB9KS50aGVuKChrZXlzKSA9PiB7XG5cbiAgICAgICAgY2hhdEtleXMua2V5cy5oeXBlcnR5VG9TZXNzaW9uS2V5ID0gbmV3IFVpbnQ4QXJyYXkoa2V5c1swXSk7XG4gICAgICAgIGNoYXRLZXlzLmtleXMuaHlwZXJ0eUZyb21TZXNzaW9uS2V5ID0gbmV3IFVpbnQ4QXJyYXkoa2V5c1sxXSk7XG4gICAgICAgIGNoYXRLZXlzLmtleXMuaHlwZXJ0eVRvSGFzaEtleSA9IG5ldyBVaW50OEFycmF5KGtleXNbMl0pO1xuICAgICAgICBjaGF0S2V5cy5rZXlzLmh5cGVydHlGcm9tSGFzaEtleSA9IG5ldyBVaW50OEFycmF5KGtleXNbM10pO1xuICAgICAgICBpdiA9IF90aGlzLmNyeXB0by5nZW5lcmF0ZUlWKCk7XG4gICAgICAgIHZhbHVlLml2ID0gZW5jb2RlKGl2KTtcblxuICAgICAgICBsZXQgbWVzc2FnZVN0cnVjdHVyZSA9IHtcbiAgICAgICAgICB0eXBlOiAnaGFuZHNoYWtlJyxcbiAgICAgICAgICB0bzogbWVzc2FnZS5mcm9tLFxuICAgICAgICAgIGZyb206IG1lc3NhZ2UudG8sXG4gICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgaGFuZHNoYWtlUGhhc2U6ICdzZW5kZXJDZXJ0aWZpY2F0ZSdcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gaGFzaCB0aGUgdmFsdWUgYW5kIHRoZSBpdlxuICAgICAgICBsZXQgZmlsdGVyZWRNZXNzYWdlID0gZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlU3RydWN0dXJlLCAnb2snICsgaXYsIGNoYXRLZXlzLmh5cGVydHlGcm9tLm1lc3NhZ2VJbmZvKTtcbiAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by5oYXNoSE1BQyhjaGF0S2V5cy5rZXlzLmh5cGVydHlGcm9tSGFzaEtleSwgZmlsdGVyZWRNZXNzYWdlKTtcbiAgICAgIH0pLnRoZW4oKGhhc2gpID0+IHtcbiAgICAgICAgdmFsdWUuaGFzaCA9IGVuY29kZShoYXNoKTtcblxuICAgICAgICAvL2VuY3J5cHQgdGhlIGRhdGFcbiAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by5lbmNyeXB0QUVTKGNoYXRLZXlzLmtleXMuaHlwZXJ0eUZyb21TZXNzaW9uS2V5LCAnb2snLCBpdik7XG4gICAgICB9KS50aGVuKChlbmNyeXB0ZWREYXRhKSA9PiB7XG4gICAgICAgIHZhbHVlLnN5bWV0cmljRW5jcnlwdGlvbiA9IGVuY29kZShlbmNyeXB0ZWREYXRhKTtcblxuICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLmVuY3J5cHRSU0EoY2hhdEtleXMuaHlwZXJ0eVRvLnB1YmxpY0tleSwgY2hhdEtleXMua2V5cy5wcmVtYXN0ZXJLZXkpO1xuXG4gICAgICB9KS50aGVuKChlbmNyeXB0ZWRWYWx1ZSkgPT4ge1xuICAgICAgICB2YWx1ZS5hc3N5bWV0cmljRW5jcnlwdGlvbiA9IGVuY29kZShlbmNyeXB0ZWRWYWx1ZSk7XG5cbiAgICAgICAgbGV0IG1lc3NhZ2VTdHJ1Y3R1cmUgPSB7XG4gICAgICAgICAgdHlwZTogJ2hhbmRzaGFrZScsXG4gICAgICAgICAgdG86IG1lc3NhZ2UuZnJvbSxcbiAgICAgICAgICBmcm9tOiBtZXNzYWdlLnRvLFxuICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgIGhhbmRzaGFrZVBoYXNlOiAnc2VuZGVyQ2VydGlmaWNhdGUnXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBtZXNzYWdlVG9IYXNoID0gZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlU3RydWN0dXJlLCBjaGF0S2V5cy5rZXlzLnByZW1hc3RlcktleSwgY2hhdEtleXMuaHlwZXJ0eUZyb20ubWVzc2FnZUluZm8pO1xuICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLnNpZ25SU0EocHJpdmF0ZUtleSwgZW5jb2RlKGNoYXRLZXlzLmhhbmRzaGFrZUhpc3RvcnkpICsgZW5jb2RlKG1lc3NhZ2VUb0hhc2gpKTtcbiAgICAgIH0pLnRoZW4oc2lnbmF0dXJlID0+IHtcblxuICAgICAgICB2YWx1ZS5zaWduYXR1cmUgPSBlbmNvZGUoc2lnbmF0dXJlKTtcblxuICAgICAgICBsZXQgcmVjZWl2ZXJIZWxsb01zZyA9IHtcbiAgICAgICAgICB0eXBlOiAnaGFuZHNoYWtlJyxcbiAgICAgICAgICB0bzogbWVzc2FnZS5mcm9tLFxuICAgICAgICAgIGZyb206IG1lc3NhZ2UudG8sXG4gICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgaGFuZHNoYWtlUGhhc2U6ICdzZW5kZXJDZXJ0aWZpY2F0ZScsXG4gICAgICAgICAgICB2YWx1ZTogZW5jb2RlKHZhbHVlKVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY2hhdEtleXMuaGFuZHNoYWtlSGlzdG9yeS5zZW5kZXJDZXJ0aWZpY2F0ZSA9IGZpbHRlck1lc3NhZ2VUb0hhc2gocmVjZWl2ZXJIZWxsb01zZywgJ29rJyArIGl2LCBjaGF0S2V5cy5oeXBlcnR5RnJvbS5tZXNzYWdlSW5mbyk7XG5cbiAgICAgICAgcmVzb2x2ZSh7bWVzc2FnZTogcmVjZWl2ZXJIZWxsb01zZywgY2hhdEtleXM6IGNoYXRLZXlzfSk7XG5cbiAgICAgIH0sIGVycm9yID0+IHJlamVjdChlcnJvcikpO1xuICAgIH0pO1xuICB9XG5cblxuICBzZW5kZXJDZXJ0aWZpY2F0ZShtZXNzYWdlLCBjaGF0S2V5cywgcHJpdmF0ZUtleSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgbGV0IGl2O1xuICAgIGxldCBmaWx0ZXJlZE1lc3NhZ2U7XG4gICAgbGV0IHZhbHVlID0ge307XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgbG9nLmxvZygnc2VuZGVyQ2VydGlmaWNhdGUnKTtcblxuICAgICAgbGV0IHJlY2VpdmVkVmFsdWUgPSBkZWNvZGUobWVzc2FnZS5ib2R5LnZhbHVlKTtcblxuICAgICAgX3RoaXMuaWRtLnZhbGlkYXRlQXNzZXJ0aW9uKG1lc3NhZ2UuYm9keS5pZGVudGl0eS5hc3NlcnRpb24sIHVuZGVmaW5lZCwgbWVzc2FnZS5ib2R5LmlkZW50aXR5LmlkcC5kb21haW4pLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICAgIGxldCBlbmNyeXB0ZWRQTVMgPSBkZWNvZGVUb1VpbnQ4QXJyYXkocmVjZWl2ZWRWYWx1ZS5hc3N5bWV0cmljRW5jcnlwdGlvbik7XG5cbiAgICAgICAgLy9UT0RPIHJlbW92ZSBsYXRlciB0aGlzIHZlcmlmaWNhdGlvbiBhcyBzb29uIGFzIGFsbCB0aGUgSWRQIHByb3h5IGFyZSB1cGRhdGVkIGluIHRoZSBleGFtcGxlXG4gICAgICAgIGxldCBlbmNvZGVkcHVibGljS2V5ID0gKHR5cGVvZiB2YWx1ZS5jb250ZW50cyA9PT0gJ3N0cmluZycpID8gdmFsdWUuY29udGVudHMgOiB2YWx1ZS5jb250ZW50cy5ub25jZTtcblxuICAgICAgICBsZXQgc2VuZGVyUHVibGljS2V5ID0gcGFyc2VUb1VpbnQ4QXJyYXkoZW5jb2RlZHB1YmxpY0tleSk7XG4gICAgICAgIGNoYXRLZXlzLmh5cGVydHlUby5hc3NlcnRpb24gPSBtZXNzYWdlLmJvZHkuaWRlbnRpdHkuYXNzZXJ0aW9uO1xuICAgICAgICBjaGF0S2V5cy5oeXBlcnR5VG8ucHVibGljS2V5ID0gc2VuZGVyUHVibGljS2V5O1xuICAgICAgICBjaGF0S2V5cy5oeXBlcnR5VG8udXNlcklEICAgID0gdmFsdWUuY29udGVudHMuZW1haWw7XG5cbiAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by5kZWNyeXB0UlNBKHByaXZhdGVLZXksIGVuY3J5cHRlZFBNUyk7XG5cbiAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgLy8gbG9nLmxvZyhlcnJvcik7XG4gICAgICAgIHJlamVjdCgnRXJyb3IgZHVyaW5nIGF1dGhlbnRpY2F0aW9uIG9mIGlkZW50aXR5OiAnLCBlcnJvci5tZXNzYWdlKTtcblxuICAgICAgLy9vYnRhaW4gdGhlIFByZW1hc3RlcktleSB1c2luZyB0aGUgcHJpdmF0ZSBrZXlcbiAgICAgIH0pLnRoZW4ocG1zID0+IHtcblxuICAgICAgICBjaGF0S2V5cy5rZXlzLnByZW1hc3RlcktleSA9IG5ldyBVaW50OEFycmF5KHBtcyk7XG5cbiAgICAgICAgbGV0IHNpZ25hdHVyZSA9IGRlY29kZVRvVWludDhBcnJheShyZWNlaXZlZFZhbHVlLnNpZ25hdHVyZSk7XG5cbiAgICAgICAgbGV0IHJlY2VpdmVkbXNnVG9IYXNoID0gZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlLCBjaGF0S2V5cy5rZXlzLnByZW1hc3RlcktleSk7XG5cbiAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by52ZXJpZnlSU0EoY2hhdEtleXMuaHlwZXJ0eVRvLnB1YmxpY0tleSwgZW5jb2RlKGNoYXRLZXlzLmhhbmRzaGFrZUhpc3RvcnkpICsgZW5jb2RlKHJlY2VpdmVkbXNnVG9IYXNoKSwgc2lnbmF0dXJlKTtcblxuICAgICAgLy8gdmFsaWRhdGVzIHRoZSBzaWduYXR1cmUgcmVjZWl2ZWRcbiAgICAgIH0pLnRoZW4oc2lnblZhbGlkYXRpb25SZXN1bHQgPT4ge1xuXG4gICAgICAgIGxvZy5sb2coJ1NlbmRlckNlcnRpZmljYXRlIC0gc2lnbmF0dXJlIHZhbGlkYXRpb24gcmVzdWx0ICcsIHNpZ25WYWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgbGV0IGNvbmNhdEtleSA9IF90aGlzLmNyeXB0by5jb25jYXRQTVN3aXRoUmFuZG9tcyhjaGF0S2V5cy5rZXlzLnByZW1hc3RlcktleSwgY2hhdEtleXMua2V5cy50b1JhbmRvbSwgY2hhdEtleXMua2V5cy5mcm9tUmFuZG9tKTtcblxuICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLmdlbmVyYXRlTWFzdGVyU2VjcmV0KGNvbmNhdEtleSwgJ21lc3NhZ2VIaXN0b3JpYycgKyBjaGF0S2V5cy5rZXlzLnRvUmFuZG9tICsgY2hhdEtleXMua2V5cy5mcm9tUmFuZG9tKTtcblxuICAgICAgLy8gZ2VuZXJhdGVzIHRoZSBtYXN0ZXIga2V5cyBmcm9tIHRoZSBQcmVtYXN0ZXIga2V5IGFuZCB0aGUgcmFuZG9tc1xuICAgICAgfSkudGhlbihtYXN0ZXJLZXkgPT4ge1xuICAgICAgICBjaGF0S2V5cy5rZXlzLm1hc3RlcktleSA9IG1hc3RlcktleTtcblxuICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLmdlbmVyYXRlS2V5cyhtYXN0ZXJLZXksICdrZXkgZXhwYW5zaW9uJyArIGNoYXRLZXlzLmtleXMudG9SYW5kb20gKyBjaGF0S2V5cy5rZXlzLmZyb21SYW5kb20pO1xuXG4gICAgICAvLyBnZW5lcmF0ZXMgdGhlIHN5bW1ldHJpYyBrZXlzIHRvIGJlIHVzZWQgaW4gdGhlIHN5bW1ldHJpYyBlbmNyeXB0aW9uXG4gICAgICB9KS50aGVuKGtleXMgPT4ge1xuICAgICAgICBjaGF0S2V5cy5rZXlzLmh5cGVydHlGcm9tU2Vzc2lvbktleSA9IG5ldyBVaW50OEFycmF5KGtleXNbMF0pO1xuICAgICAgICBjaGF0S2V5cy5rZXlzLmh5cGVydHlUb1Nlc3Npb25LZXkgPSBuZXcgVWludDhBcnJheShrZXlzWzFdKTtcbiAgICAgICAgY2hhdEtleXMua2V5cy5oeXBlcnR5RnJvbUhhc2hLZXkgPSBuZXcgVWludDhBcnJheShrZXlzWzJdKTtcbiAgICAgICAgY2hhdEtleXMua2V5cy5oeXBlcnR5VG9IYXNoS2V5ID0gbmV3IFVpbnQ4QXJyYXkoa2V5c1szXSk7XG4gICAgICAgIGl2ID0gZGVjb2RlVG9VaW50OEFycmF5KHJlY2VpdmVkVmFsdWUuaXYpO1xuICAgICAgICBsZXQgZGF0YSA9IGRlY29kZVRvVWludDhBcnJheShyZWNlaXZlZFZhbHVlLnN5bWV0cmljRW5jcnlwdGlvbik7XG5cbiAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by5kZWNyeXB0QUVTKGNoYXRLZXlzLmtleXMuaHlwZXJ0eVRvU2Vzc2lvbktleSwgZGF0YSwgaXYpO1xuXG4gICAgICB9KS50aGVuKGRlY3J5cHRlZERhdGEgPT4ge1xuICAgICAgLy8gbG9nLmxvZygnZGVjcnlwdGVkRGF0YScsIGRlY3J5cHRlZERhdGEpO1xuXG4gICAgICAgIGNoYXRLZXlzLmhhbmRzaGFrZUhpc3Rvcnkuc2VuZGVyQ2VydGlmaWNhdGUgPSBmaWx0ZXJNZXNzYWdlVG9IYXNoKG1lc3NhZ2UsIGRlY3J5cHRlZERhdGEgKyBpdik7XG5cbiAgICAgICAgbGV0IGhhc2hSZWNlaXZlZCA9IGRlY29kZVRvVWludDhBcnJheShyZWNlaXZlZFZhbHVlLmhhc2gpO1xuXG4gICAgICAgIGZpbHRlcmVkTWVzc2FnZSA9IGZpbHRlck1lc3NhZ2VUb0hhc2gobWVzc2FnZSwgZGVjcnlwdGVkRGF0YSArIGl2KTtcblxuICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLnZlcmlmeUhNQUMoY2hhdEtleXMua2V5cy5oeXBlcnR5VG9IYXNoS2V5LCBmaWx0ZXJlZE1lc3NhZ2UsIGhhc2hSZWNlaXZlZCk7XG5cbiAgICAgIH0pLnRoZW4odmVyaWZpZWRIYXNoICA9PiB7XG5cbiAgICAgIC8vIGxvZy5sb2coJ3Jlc3VsdCBvZiBoYXNoIHZlcmlmaWNhdGlvbiAnLCB2ZXJpZmllZEhhc2gpO1xuICAgICAgICBsZXQgcmVjZWl2ZXJGaW5pc2hlZE1lc3NhZ2UgPSB7XG4gICAgICAgICAgdHlwZTogJ2hhbmRzaGFrZScsXG4gICAgICAgICAgdG86IG1lc3NhZ2UuZnJvbSxcbiAgICAgICAgICBmcm9tOiBtZXNzYWdlLnRvLFxuICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgIGhhbmRzaGFrZVBoYXNlOiAncmVjZWl2ZXJGaW5pc2hlZE1lc3NhZ2UnXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpdiA9IF90aGlzLmNyeXB0by5nZW5lcmF0ZUlWKCk7XG4gICAgICAgIHZhbHVlLml2ID0gZW5jb2RlKGl2KTtcblxuICAgICAgICBmaWx0ZXJlZE1lc3NhZ2UgPSBmaWx0ZXJNZXNzYWdlVG9IYXNoKHJlY2VpdmVyRmluaXNoZWRNZXNzYWdlLCAnb2shJyArIGl2LCBjaGF0S2V5cy5oeXBlcnR5RnJvbS5tZXNzYWdlSW5mbyk7XG5cbiAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by5oYXNoSE1BQyhjaGF0S2V5cy5rZXlzLmh5cGVydHlGcm9tSGFzaEtleSwgZmlsdGVyZWRNZXNzYWdlKTtcbiAgICAgIH0pLnRoZW4oaGFzaCA9PiB7XG5cbiAgICAgICAgdmFsdWUuaGFzaCA9IGVuY29kZShoYXNoKTtcbiAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by5lbmNyeXB0QUVTKGNoYXRLZXlzLmtleXMuaHlwZXJ0eUZyb21TZXNzaW9uS2V5LCAnb2shJywgaXYpO1xuXG4gICAgICB9KS50aGVuKGVuY3J5cHRlZFZhbHVlID0+IHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBlbmNvZGUoZW5jcnlwdGVkVmFsdWUpO1xuICAgICAgICBsZXQgcmVjZWl2ZXJGaW5pc2hlZE1lc3NhZ2UgPSB7XG4gICAgICAgICAgdHlwZTogJ2hhbmRzaGFrZScsXG4gICAgICAgICAgdG86IG1lc3NhZ2UuZnJvbSxcbiAgICAgICAgICBmcm9tOiBtZXNzYWdlLnRvLFxuICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgIGhhbmRzaGFrZVBoYXNlOiAncmVjZWl2ZXJGaW5pc2hlZE1lc3NhZ2UnLFxuICAgICAgICAgICAgdmFsdWU6IGVuY29kZSh2YWx1ZSlcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY2hhdEtleXMuaGFuZHNoYWtlSGlzdG9yeS5yZWNlaXZlckZpbmlzaGVkTWVzc2FnZSA9IGZpbHRlck1lc3NhZ2VUb0hhc2gocmVjZWl2ZXJGaW5pc2hlZE1lc3NhZ2UsICdvayEnICsgaXYsIGNoYXRLZXlzLmh5cGVydHlGcm9tLm1lc3NhZ2VJbmZvKTtcbiAgICAgICAgY2hhdEtleXMuYXV0aGVudGljYXRlZCA9IHRydWU7XG4gICAgICAgIHJlc29sdmUoe21lc3NhZ2U6IHJlY2VpdmVyRmluaXNoZWRNZXNzYWdlLCBjaGF0S2V5czogY2hhdEtleXN9KTtcbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHJlamVjdCgnT24gX2RvSGFuZFNoYWtlUGhhc2UgZnJvbSBzZW5kZXJDZXJ0aWZpY2F0ZSBlcnJvcjogJyArIGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlY2VpdmVyRmluaXNoZWRNZXNzYWdlKG1lc3NhZ2UsIGNoYXRLZXlzKSB7XG5cbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIGxldCBpdjtcbiAgICBsZXQgdmFsdWUgPSB7fTtcbiAgICBsZXQgaGFzaDtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgIGxvZy5sb2coJ3JlY2VpdmVyRmluaXNoZWRNZXNzYWdlJyk7XG5cbiAgICAgIGNoYXRLZXlzLmF1dGhlbnRpY2F0ZWQgPSB0cnVlO1xuXG4gICAgICB2YWx1ZSA9IGRlY29kZShtZXNzYWdlLmJvZHkudmFsdWUpO1xuXG4gICAgICBpdiA9IGRlY29kZVRvVWludDhBcnJheSh2YWx1ZS5pdik7XG4gICAgICBsZXQgZGF0YSA9IGRlY29kZVRvVWludDhBcnJheSh2YWx1ZS52YWx1ZSk7XG4gICAgICBoYXNoID0gZGVjb2RlVG9VaW50OEFycmF5KHZhbHVlLmhhc2gpO1xuXG4gICAgICBfdGhpcy5jcnlwdG8uZGVjcnlwdEFFUyhjaGF0S2V5cy5rZXlzLmh5cGVydHlUb1Nlc3Npb25LZXksIGRhdGEsIGl2KS50aGVuKGRlY3J5cHRlZERhdGEgPT4ge1xuICAgICAgLy8gbG9nLmxvZygnZGVjcnlwdGVkRGF0YScsIGRlY3J5cHRlZERhdGEpO1xuICAgICAgICBjaGF0S2V5cy5oYW5kc2hha2VIaXN0b3J5LnJlY2VpdmVyRmluaXNoZWRNZXNzYWdlID0gZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlLCBkZWNyeXB0ZWREYXRhICsgaXYpO1xuXG4gICAgICAgIGxldCBmaWx0ZXJlZE1lc3NhZ2UgPSBmaWx0ZXJNZXNzYWdlVG9IYXNoKG1lc3NhZ2UsIGRlY3J5cHRlZERhdGEgKyBpdik7XG4gICAgICAgIF90aGlzLmNyeXB0by52ZXJpZnlITUFDKGNoYXRLZXlzLmtleXMuaHlwZXJ0eVRvSGFzaEtleSwgZmlsdGVyZWRNZXNzYWdlLCBoYXNoKS50aGVuKHJlc3VsdCA9PiB7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgd2FzIGFuIGluaXRpYWwgbWVzc2FnZSB0aGF0IHdhcyBibG9ja2VkIGFuZCBzZW5kIGl0XG4gICAgICAgICAgaWYgKGNoYXRLZXlzLmluaXRpYWxNZXNzYWdlKSB7XG5cbiAgICAgICAgICAgIGxldCBpbml0aWFsTWVzc2FnZSA9IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICAgIHRvOiBtZXNzYWdlLmZyb20sXG4gICAgICAgICAgICAgIGZyb206IG1lc3NhZ2UudG8sXG4gICAgICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2hhdEtleXMuaW5pdGlhbE1lc3NhZ2UuYm9keS52YWx1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXNvbHZlKHtzZW5kUmVwb3J0ZXJTZXNzaW9uS2V5OiBmYWxzZSwgbWVzc2FnZTogaW5pdGlhbE1lc3NhZ2UsIGNoYXRLZXlzOiBjaGF0S2V5c30pO1xuXG4gICAgICAgICAgLy9zZW5kcyB0aGUgc2Vzc2lvbktleSB0byB0aGUgc3Vic2NyaWJlciBoeXBlcnR5XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoe3NlbmRSZXBvcnRlclNlc3Npb25LZXk6IHRydWUsIG1lc3NhZ2U6IG1lc3NhZ2UsIGNoYXRLZXlzOiBjaGF0S2V5c30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlcG9ydGVyU2Vzc2lvbktleShtZXNzYWdlLCBjaGF0S2V5cykge1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBsZXQgaXY7XG4gICAgbGV0IHZhbHVlID0ge307XG4gICAgbGV0IGhhc2g7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG5cbiAgICAgIGxvZy5sb2coJ3JlcG9ydGVyU2Vzc2lvbktleScpO1xuXG4gICAgICBsZXQgdmFsdWVJVmFuZEhhc2ggPSBkZWNvZGUobWVzc2FnZS5ib2R5LnZhbHVlKTtcbiAgICAgIGhhc2ggPSBkZWNvZGVUb1VpbnQ4QXJyYXkodmFsdWVJVmFuZEhhc2guaGFzaCk7XG4gICAgICBpdiA9IGRlY29kZVRvVWludDhBcnJheSh2YWx1ZUlWYW5kSGFzaC5pdik7XG4gICAgICBsZXQgZW5jcnlwdGVkVmFsdWUgPSBkZWNvZGVUb1VpbnQ4QXJyYXkodmFsdWVJVmFuZEhhc2gudmFsdWUpO1xuICAgICAgbGV0IHBhcnNlZFZhbHVlO1xuICAgICAgbGV0IHNlc3Npb25LZXk7XG4gICAgICBsZXQgZGF0YU9iamVjdFVSTDtcbiAgICAgIGxldCByZWNlaXZlckFja25vd2xlZGdlTXNnO1xuXG4gICAgICAvL2xvZy5sb2coJ1tJZGVudGl0eU1vZHVsZSByZXBvcnRlclNlc3Npb25LZXldIC0gZGVjcnlwdEFFUzogJywgY2hhdEtleXMua2V5cy5oeXBlcnR5VG9TZXNzaW9uS2V5LCBlbmNyeXB0ZWRWYWx1ZSwgaXYpO1xuXG4gICAgICBfdGhpcy5jcnlwdG8uZGVjcnlwdEFFUyhjaGF0S2V5cy5rZXlzLmh5cGVydHlUb1Nlc3Npb25LZXksIGVuY3J5cHRlZFZhbHVlLCBpdikudGhlbihkZWNyeXB0ZWRWYWx1ZSA9PiB7XG5cbiAgICAgICAgcGFyc2VkVmFsdWUgPSBkZWNvZGUoZGVjcnlwdGVkVmFsdWUpO1xuICAgICAgICBzZXNzaW9uS2V5ID0gZGVjb2RlVG9VaW50OEFycmF5KHBhcnNlZFZhbHVlLnZhbHVlKTtcbiAgICAgICAgZGF0YU9iamVjdFVSTCA9IHBhcnNlZFZhbHVlLmRhdGFPYmplY3RVUkw7XG5cbiAgICAgICAgbGV0IG1lc3NhZ2VUb0hhc2ggPSBmaWx0ZXJNZXNzYWdlVG9IYXNoKG1lc3NhZ2UsIGRlY3J5cHRlZFZhbHVlICsgaXYpO1xuXG4gICAgICAgIHJldHVybiBfdGhpcy5jcnlwdG8udmVyaWZ5SE1BQyhjaGF0S2V5cy5rZXlzLmh5cGVydHlUb0hhc2hLZXksIG1lc3NhZ2VUb0hhc2gsIGhhc2gpO1xuXG4gICAgICB9KS50aGVuKGhhc2hSZXN1bHQgPT4ge1xuXG5cbiAgICAgIC8vIGxvZy5sb2coJ2hhc2ggc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCAnLCBoYXNoUmVzdWx0KTtcblxuICAgICAgICBfdGhpcy5kYXRhT2JqZWN0U2Vzc2lvbktleXNbZGF0YU9iamVjdFVSTF0gPSAge3Nlc3Npb25LZXk6IHNlc3Npb25LZXksIGlzVG9FbmNyeXB0OiB0cnVlfTtcbiAgICAgICAgbGV0IGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lID0gY2hhdGtleXNUb1N0cmluZ0Nsb25lcihfdGhpcy5kYXRhT2JqZWN0U2Vzc2lvbktleXMpO1xuICAgICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5zZXQoJ2RhdGFPYmplY3RTZXNzaW9uS2V5cycsIDAsIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lKS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIHJlamVjdCgnT24gX3NlbmRSZXBvcnRlclNlc3Npb25LZXkgZnJvbSBtZXRob2QgcmVwb3J0ZXJTZXNzaW9uS2V5IGVycm9yOiAnICsgZXJyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXYgPSBfdGhpcy5jcnlwdG8uZ2VuZXJhdGVJVigpO1xuICAgICAgICB2YWx1ZS5pdiA9IGVuY29kZShpdik7XG5cbiAgICAgICAgcmV0dXJuIF90aGlzLmNyeXB0by5lbmNyeXB0QUVTKGNoYXRLZXlzLmtleXMuaHlwZXJ0eUZyb21TZXNzaW9uS2V5LCAnb2shIScsIGl2KTtcbiAgICAgIH0pLnRoZW4oZW5jcnlwdGVkVmFsdWUgPT4ge1xuXG4gICAgICAgIHJlY2VpdmVyQWNrbm93bGVkZ2VNc2cgPSB7XG4gICAgICAgICAgdHlwZTogJ2hhbmRzaGFrZScsXG4gICAgICAgICAgdG86IG1lc3NhZ2UuZnJvbSxcbiAgICAgICAgICBmcm9tOiBtZXNzYWdlLnRvLFxuICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgIGhhbmRzaGFrZVBoYXNlOiAncmVjZWl2ZXJBY2tub3dsZWRnZSdcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFsdWUudmFsdWUgPSBlbmNvZGUoZW5jcnlwdGVkVmFsdWUpO1xuICAgICAgICBsZXQgbWVzc2FnZVRvSGFzaCA9IGZpbHRlck1lc3NhZ2VUb0hhc2gocmVjZWl2ZXJBY2tub3dsZWRnZU1zZywgJ29rISEnICsgaXYsIGNoYXRLZXlzLmh5cGVydHlGcm9tLm1lc3NhZ2VJbmZvKTtcblxuICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLmhhc2hITUFDKGNoYXRLZXlzLmtleXMuaHlwZXJ0eUZyb21IYXNoS2V5LCBtZXNzYWdlVG9IYXNoKTtcbiAgICAgIH0pLnRoZW4oaGFzaGVkTWVzc2FnZSA9PiB7XG4gICAgICAgIGxldCBmaW5hbFZhbHVlID0gZW5jb2RlKHt2YWx1ZTogdmFsdWUudmFsdWUsIGhhc2g6IGVuY29kZShoYXNoZWRNZXNzYWdlKSwgaXY6IHZhbHVlLml2fSk7XG5cbiAgICAgICAgcmVjZWl2ZXJBY2tub3dsZWRnZU1zZy5ib2R5LnZhbHVlID0gZmluYWxWYWx1ZTtcbiAgICAgICAgcmVzb2x2ZSh7bWVzc2FnZTogcmVjZWl2ZXJBY2tub3dsZWRnZU1zZywgY2hhdEtleXM6IGNoYXRLZXlzfSk7XG4gICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICByZWplY3QoJ09uIF9kb0hhbmRTaGFrZVBoYXNlIGZyb20gcmVwb3J0ZXJTZXNzaW9uS2V5IGVycm9yOiAnICsgZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cblxuICByZWNlaXZlckFja25vd2xlZGdlKG1lc3NhZ2UsIGNoYXRLZXlzKSB7XG5cbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIGxldCBpdjtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgIGxvZy5sb2coJ3JlY2VpdmVyQWNrbm93bGVkZ2UnKTtcblxuICAgICAgbGV0IHJlY2VpdmVkdmFsdWVJVmFuZEhhc2ggPSBkZWNvZGUobWVzc2FnZS5ib2R5LnZhbHVlKTtcbiAgICAgIGxldCByZWNlaXZlZEhhc2ggPSBkZWNvZGVUb1VpbnQ4QXJyYXkocmVjZWl2ZWR2YWx1ZUlWYW5kSGFzaC5oYXNoKTtcbiAgICAgIGl2ID0gZGVjb2RlVG9VaW50OEFycmF5KHJlY2VpdmVkdmFsdWVJVmFuZEhhc2guaXYpO1xuICAgICAgbGV0IHJlY2VpdmVkRW5jcnlwdGVkVmFsdWUgPSBkZWNvZGVUb1VpbnQ4QXJyYXkocmVjZWl2ZWR2YWx1ZUlWYW5kSGFzaC52YWx1ZSk7XG5cbiAgICAgIF90aGlzLmNyeXB0by5kZWNyeXB0QUVTKGNoYXRLZXlzLmtleXMuaHlwZXJ0eVRvU2Vzc2lvbktleSwgcmVjZWl2ZWRFbmNyeXB0ZWRWYWx1ZSwgaXYpLnRoZW4oZGVjcnlwdGVkVmFsdWUgPT4ge1xuXG4gICAgICAgIGxldCBmaWx0ZXJlZE1lc3NhZ2UgPSBmaWx0ZXJNZXNzYWdlVG9IYXNoKG1lc3NhZ2UsIGRlY3J5cHRlZFZhbHVlICsgaXYpO1xuICAgICAgICByZXR1cm4gX3RoaXMuY3J5cHRvLnZlcmlmeUhNQUMoY2hhdEtleXMua2V5cy5oeXBlcnR5VG9IYXNoS2V5LCBmaWx0ZXJlZE1lc3NhZ2UsIHJlY2VpdmVkSGFzaCk7XG4gICAgICB9KS50aGVuKGhhc2hSZXN1bHQgPT4ge1xuICAgICAgLy8gbG9nLmxvZygnaGFzaFJlc3VsdCAnLCBoYXNoUmVzdWx0KTtcblxuICAgICAgICBsZXQgY2FsbGJhY2sgPSBjaGF0S2V5cy5jYWxsYmFjaztcblxuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjaygnaGFuZFNoYWtlRW5kJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZSgnaGFuZFNoYWtlRW5kJyk7XG4gICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICByZWplY3QoJ09uIF9kb0hhbmRTaGFrZVBoYXNlIGZyb20gcmVjZWl2ZXJBY2tub3dsZWRnZSBlcnJvcjogJyArIGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBIYW5kU2hha2VQcm90b2NvbDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvY3J5cHRvTWFuYWdlci9IYW5kU2hha2VQcm90b2NvbC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBOzs7OztBQUhBO0FBQ0E7QUFLQTs7OztBQUlBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUpBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSkE7QUFTQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFKQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFKQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUpBO0FBU0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSkE7QUFDQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFKQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFKQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBR0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///491\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _utils = __webpack_require__(11);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('CryptoManager');\n\n/*\n* This class provides some of the encryption and decryption logic of the messages,\n* incoming and outgoing messages.\n* NOTE: This class sould be threated (for now) as a internal class of CryptoManager, since it\n* receives and changes fields of that tsame class, but its on a sepetare file to\n* ease code organization.\n*/\n\nvar MessageEncryptionHandling = function () {\n function MessageEncryptionHandling(registry, chatKeys, crypto, storageManager, dataObjectsStorage, idm) {\n (0, _classCallCheck3.default)(this, MessageEncryptionHandling);\n\n this.registry = registry;\n this.chatKeys = chatKeys;\n this.crypto = crypto;\n this.storageManager = storageManager;\n this.dataObjectsStorage = dataObjectsStorage;\n this.idm = idm;\n }\n\n (0, _createClass3.default)(MessageEncryptionHandling, [{\n key: 'encryptBetweenHyperties',\n value: function encryptBetweenHyperties(message) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n\n var userURL = _this.registry.getHypertyOwner(message.from);\n var isHandShakeType = message.type === 'handshake';\n if (userURL) {\n\n // check if exists any keys between two users\n var chatKeys = _this.chatKeys[message.from + '<->' + message.to];\n if (!chatKeys) {\n chatKeys = _this.newChatCrypto(message, userURL);\n\n //log.log('createChatKey encrypt', message.from + message.to);\n _this.chatKeys[message.from + '<->' + message.to] = chatKeys;\n message.body.handshakePhase = 'startHandShake';\n }\n\n if (chatKeys.authenticated && !isHandShakeType) {\n\n var iv = _this.crypto.generateIV();\n _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, (0, _utils.stringify)(message.body.value), iv).then(function (encryptedValue) {\n\n var filteredMessage = (0, _utils.filterMessageToHash)(message, (0, _utils.stringify)(message.body.value) + (0, _utils.stringify)(iv), chatKeys.hypertyFrom.messageInfo);\n\n _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage).then(function (hash) {\n //log.log('result of hash ', hash);\n var value = { iv: (0, _utils.encode)(iv), value: (0, _utils.encode)(encryptedValue), hash: (0, _utils.encode)(hash) };\n message.body.value = (0, _utils.encode)(value);\n\n resolve({ message: message, isHandShakeNeeded: false });\n });\n });\n\n // if is a handshake message, just resolve it\n } else if (isHandShakeType) {\n resolve({ message: message, isHandShakeNeeded: false });\n\n // else, starts a new handshake protocol\n } else {\n resolve({ message: message, isHandShakeNeeded: true, chatKeys: chatKeys });\n }\n } else {\n reject('In encryptMessage: Hyperty owner URL was not found');\n }\n });\n }\n }, {\n key: 'encryptBetweenHypertyDataObject',\n value: function encryptBetweenHypertyDataObject(message) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n var dataObjectURL = (0, _utils.parseMessageURL)(message.to);\n _this.storageManager.get('dataObjectSessionKeys').then(function (sessionKeys) {\n sessionKeys = (0, _utils.chatkeysToArrayCloner)(sessionKeys || {});\n var dataObjectKey = sessionKeys ? sessionKeys[dataObjectURL] : null;\n\n _this.dataObjectsStorage.getDataObject(dataObjectURL).then(function (isHypertyReporter) {\n //if no key exists, create a new one if is the reporter of dataObject\n if (!dataObjectKey) {\n // if the hyperty is the reporter of the dataObject then generates a session key\n if (isHypertyReporter.reporter && isHypertyReporter.reporter === message.from) {\n\n var sessionKey = _this.crypto.generateRandom();\n _this.dataObjectSessionKeys[dataObjectURL] = { sessionKey: sessionKey, isToEncrypt: true };\n var dataObjectSessionKeysClone = (0, _utils.chatkeysToStringCloner)(_this.dataObjectSessionKeys);\n\n //TODO: check if this does not need to be stored\n _this.storageManager.set('dataObjectSessionKeys', 0, dataObjectSessionKeysClone).catch(function (err) {\n reject('On encryptMessage from method storageManager.set error: ' + err);\n });\n dataObjectKey = _this.dataObjectSessionKeys[dataObjectURL];\n }\n }\n\n //check if there is already a session key for the chat room\n if (dataObjectKey) {\n\n // and if is to apply encryption, encrypt the messages\n if (dataObjectKey.isToEncrypt) {\n var iv = _this.crypto.generateIV();\n var stringifiedIV = (0, _utils.stringify)(iv);\n var stringifiedMessageBody = (0, _utils.stringify)(message.body.value);\n\n _this.crypto.encryptAES(dataObjectKey.sessionKey, stringifiedMessageBody, iv).then(function (encryptedValue) {\n delete message.body.identity.assertion; //TODO: Check why assertion is comming on the message!\n delete message.body.identity.expires; //TODO: Check why expires is comming on the message!\n var filteredMessage = (0, _utils.filterMessageToHash)(message, stringifiedMessageBody + stringifiedIV);\n\n _this.crypto.hashHMAC(dataObjectKey.sessionKey, filteredMessage).then(function (hash) {\n var newValue = { value: (0, _utils.encode)(encryptedValue), iv: (0, _utils.encode)(iv), hash: (0, _utils.encode)(hash) };\n\n message.body.value = (0, _utils.stringify)(newValue);\n resolve(message);\n });\n });\n\n // if not, just send the message\n } else {\n resolve(message);\n }\n\n // start the generation of a new session Key\n } else {\n reject('Data object key could not be defined: Failed to encrypt message ');\n }\n }).catch(function (err) {\n reject('On encryptMessage from method dataObjectsStorage.getDataObject error: ' + err);\n });\n }).catch(function (err) {\n reject('On encryptMessage from method storageManager.get error: ' + err);\n });\n });\n }\n }, {\n key: 'decryptBetweenHyperties',\n value: function decryptBetweenHyperties(message) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n var isHandShakeType = message.type === 'handshake';\n var userURL = _this.registry.getHypertyOwner(message.to);\n if (userURL) {\n\n var chatKeys = _this.chatKeys[message.to + '<->' + message.from];\n if (!chatKeys) {\n chatKeys = _this.newChatCrypto(message, userURL, 'decrypt');\n _this.chatKeys[message.to + '<->' + message.from] = chatKeys;\n }\n\n if (chatKeys.authenticated && !isHandShakeType) {\n var value = (0, _utils.decode)(message.body.value);\n var iv = (0, _utils.decodeToUint8Array)(value.iv);\n var data = (0, _utils.decodeToUint8Array)(value.value);\n var hash = (0, _utils.decodeToUint8Array)(value.hash);\n _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, data, iv).then(function (decryptedData) {\n // log.log('decrypted value ', decryptedData);\n message.body.value = decryptedData;\n\n var filteredMessage = (0, _utils.filterMessageToHash)(message, decryptedData + iv);\n\n _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, hash).then(function (result) {\n log.log('Result of hash verification in decryptMessage: ', result);\n message.body.assertedIdentity = true;\n resolve({ message: message, isHandShakeNeeded: false });\n }).chatch(function (err) {\n log.log('decryptMessage HMAC failed:', err);\n throw err;\n });\n });\n } else if (isHandShakeType) {\n resolve({ message: message, chatKeys: chatKeys, isHandShakeNeeded: true });\n } else {\n reject('Wrong message do decrypt: ');\n }\n } else {\n reject('Error on decrypt message:');\n }\n });\n }\n }, {\n key: 'decryptBetweenHypertyDataObject',\n value: function decryptBetweenHypertyDataObject(message) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n var dataObjectURL = (0, _utils.parseMessageURL)(message.to);\n _this.storageManager.get('dataObjectSessionKeys').then(function (sessionKeys) {\n sessionKeys = (0, _utils.chatkeysToArrayCloner)(sessionKeys || {});\n var dataObjectKey = sessionKeys ? sessionKeys[dataObjectURL] : null;\n\n if (dataObjectKey) {\n\n //check if is to apply encryption\n if (dataObjectKey.isToEncrypt) {\n var parsedValue = (0, _utils.parse)(message.body.value);\n var iv = (0, _utils.decodeToUint8Array)(parsedValue.iv);\n var encryptedValue = (0, _utils.decodeToUint8Array)(parsedValue.value);\n var hash = (0, _utils.decodeToUint8Array)(parsedValue.hash);\n\n _this.crypto.decryptAES(dataObjectKey.sessionKey, encryptedValue, iv).then(function (decryptedValue) {\n var parsedValue = (0, _utils.parse)(decryptedValue);\n message.body.value = parsedValue;\n var filteredMessage = (0, _utils.filterMessageToHash)(message, (0, _utils.stringify)(parsedValue) + (0, _utils.stringify)(iv));\n\n _this.crypto.verifyHMAC(dataObjectKey.sessionKey, filteredMessage, hash).then(function (result) {\n log.log('Received message HMAC result', result);\n message.body.assertedIdentity = true;\n resolve(message);\n }).catch(function (err) {\n reject('Message HMAC is invalid: ' + err);\n });\n });\n\n //if not, just return the message\n } else {\n message.body.assertedIdentity = true;\n resolve(message);\n }\n } else {\n message.body.assertedIdentity = true;\n resolve(message);\n\n //reject('no sessionKey for chat room found');\n }\n });\n });\n }\n\n /**\n * generates the initial structure for the keys between two users\n * @param {JSON} message initial message that triggers the mutual authentication\n * @param {String} userURL userURL\n * @param {boolean} receiver(Optional) indicates if is the sender or the receiver that creates a new chat crypto\n * @return {JSON} newChatCrypto new JSON structure for the chat crypto\n */\n\n }, {\n key: 'newChatCrypto',\n value: function newChatCrypto(message, userURL, receiver) {\n\n //check whether is the sender or the receiver to create a new chatCrypto\n //to mantain consistency on the keys if the receiver create a new chatCrypto,\n //then invert the fields\n var userInfo = this.idm.getIdentity(userURL);\n\n var from = receiver ? message.to : message.from;\n var to = receiver ? message.from : message.to;\n\n var newChatCrypto = {\n hypertyFrom: {\n hyperty: from,\n userID: userInfo.userProfile.userURL,\n\n //privateKey: \"getMyPublicKey\",\n //publicKey: \"getMyPrivateKey\",\n assertion: userInfo.assertion,\n messageInfo: userInfo\n },\n hypertyTo: {\n hyperty: to,\n userID: undefined,\n publicKey: undefined,\n assertion: undefined\n },\n keys: {\n hypertyToSessionKey: undefined,\n hypertyFromSessionKey: undefined,\n hypertyToHashKey: undefined,\n hypertyFromHashKey: undefined,\n toRandom: undefined,\n fromRandom: undefined,\n premasterKey: undefined,\n masterKey: undefined\n },\n handshakeHistory: {\n senderHello: undefined,\n receiverHello: undefined,\n senderCertificate: undefined,\n receiverFinishedMessage: undefined\n },\n initialMessage: message.body.ignore ? undefined : message,\n callback: message.callback,\n authenticated: false,\n dataObjectURL: message.dataObjectURL\n };\n\n return newChatCrypto;\n }\n }]);\n return MessageEncryptionHandling;\n}();\n\nexports.default = MessageEncryptionHandling;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9jcnlwdG9NYW5hZ2VyL01lc3NhZ2VFbmNyeXB0aW9uSGFuZGxpbmcuanM/OTM5NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NoYXRrZXlzVG9TdHJpbmdDbG9uZXIsIGNoYXRrZXlzVG9BcnJheUNsb25lciwgcGFyc2VNZXNzYWdlVVJMLFxuICBwYXJzZSwgc3RyaW5naWZ5LCBlbmNvZGUsIGRlY29kZSwgZGVjb2RlVG9VaW50OEFycmF5LCBmaWx0ZXJNZXNzYWdlVG9IYXNofSBmcm9tICcuLi91dGlscy91dGlscy5qcyc7XG5cbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignQ3J5cHRvTWFuYWdlcicpO1xuXG4vKlxuKiBUaGlzIGNsYXNzIHByb3ZpZGVzIHNvbWUgb2YgdGhlIGVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24gbG9naWMgb2YgdGhlIG1lc3NhZ2VzLFxuKiBpbmNvbWluZyBhbmQgb3V0Z29pbmcgbWVzc2FnZXMuXG4qIE5PVEU6IFRoaXMgY2xhc3Mgc291bGQgYmUgdGhyZWF0ZWQgKGZvciBub3cpIGFzIGEgaW50ZXJuYWwgY2xhc3Mgb2YgQ3J5cHRvTWFuYWdlciwgc2luY2UgaXRcbiogcmVjZWl2ZXMgYW5kIGNoYW5nZXMgZmllbGRzIG9mIHRoYXQgdHNhbWUgY2xhc3MsIGJ1dCBpdHMgb24gYSBzZXBldGFyZSBmaWxlIHRvXG4qIGVhc2UgY29kZSBvcmdhbml6YXRpb24uXG4qL1xuY2xhc3MgTWVzc2FnZUVuY3J5cHRpb25IYW5kbGluZyB7XG5cbiAgY29uc3RydWN0b3IocmVnaXN0cnksIGNoYXRLZXlzLCBjcnlwdG8sIHN0b3JhZ2VNYW5hZ2VyLCBkYXRhT2JqZWN0c1N0b3JhZ2UsIGlkbSkge1xuICAgIHRoaXMucmVnaXN0cnkgPSByZWdpc3RyeTtcbiAgICB0aGlzLmNoYXRLZXlzID0gY2hhdEtleXM7XG4gICAgdGhpcy5jcnlwdG8gPSBjcnlwdG87XG4gICAgdGhpcy5zdG9yYWdlTWFuYWdlciA9IHN0b3JhZ2VNYW5hZ2VyO1xuICAgIHRoaXMuZGF0YU9iamVjdHNTdG9yYWdlID0gZGF0YU9iamVjdHNTdG9yYWdlO1xuICAgIHRoaXMuaWRtID0gaWRtO1xuICB9XG5cbiAgZW5jcnlwdEJldHdlZW5IeXBlcnRpZXMobWVzc2FnZSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgbGV0IHVzZXJVUkwgPSBfdGhpcy5yZWdpc3RyeS5nZXRIeXBlcnR5T3duZXIobWVzc2FnZS5mcm9tKTtcbiAgICAgIGxldCBpc0hhbmRTaGFrZVR5cGUgPSBtZXNzYWdlLnR5cGUgPT09ICdoYW5kc2hha2UnO1xuICAgICAgaWYgKHVzZXJVUkwpIHtcblxuICAgICAgICAvLyBjaGVjayBpZiBleGlzdHMgYW55IGtleXMgYmV0d2VlbiB0d28gdXNlcnNcbiAgICAgICAgbGV0IGNoYXRLZXlzID0gX3RoaXMuY2hhdEtleXNbbWVzc2FnZS5mcm9tICsgJzwtPicgKyBtZXNzYWdlLnRvXTtcbiAgICAgICAgaWYgKCFjaGF0S2V5cykge1xuICAgICAgICAgIGNoYXRLZXlzID0gX3RoaXMubmV3Q2hhdENyeXB0byhtZXNzYWdlLCB1c2VyVVJMKTtcblxuICAgICAgICAgIC8vbG9nLmxvZygnY3JlYXRlQ2hhdEtleSBlbmNyeXB0JywgbWVzc2FnZS5mcm9tICsgbWVzc2FnZS50byk7XG4gICAgICAgICAgX3RoaXMuY2hhdEtleXNbbWVzc2FnZS5mcm9tICsgJzwtPicgKyBtZXNzYWdlLnRvXSA9IGNoYXRLZXlzO1xuICAgICAgICAgIG1lc3NhZ2UuYm9keS5oYW5kc2hha2VQaGFzZSA9ICdzdGFydEhhbmRTaGFrZSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhdEtleXMuYXV0aGVudGljYXRlZCAmJiAhaXNIYW5kU2hha2VUeXBlKSB7XG5cbiAgICAgICAgICBsZXQgaXYgPSBfdGhpcy5jcnlwdG8uZ2VuZXJhdGVJVigpO1xuICAgICAgICAgIF90aGlzLmNyeXB0by5lbmNyeXB0QUVTKGNoYXRLZXlzLmtleXMuaHlwZXJ0eUZyb21TZXNzaW9uS2V5LCBzdHJpbmdpZnkobWVzc2FnZS5ib2R5LnZhbHVlKSwgaXYpLnRoZW4oZW5jcnlwdGVkVmFsdWUgPT4ge1xuXG4gICAgICAgICAgICBsZXQgZmlsdGVyZWRNZXNzYWdlID0gZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlLCBzdHJpbmdpZnkobWVzc2FnZS5ib2R5LnZhbHVlKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdpZnkoaXYpLCBjaGF0S2V5cy5oeXBlcnR5RnJvbS5tZXNzYWdlSW5mbyk7XG5cbiAgICAgICAgICAgIF90aGlzLmNyeXB0by5oYXNoSE1BQyhjaGF0S2V5cy5rZXlzLmh5cGVydHlGcm9tSGFzaEtleSwgZmlsdGVyZWRNZXNzYWdlKS50aGVuKGhhc2ggPT4ge1xuICAgICAgICAgICAgICAvL2xvZy5sb2coJ3Jlc3VsdCBvZiBoYXNoICcsIGhhc2gpO1xuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB7aXY6IGVuY29kZShpdiksIHZhbHVlOiBlbmNvZGUoZW5jcnlwdGVkVmFsdWUpLCBoYXNoOiBlbmNvZGUoaGFzaCl9O1xuICAgICAgICAgICAgICBtZXNzYWdlLmJvZHkudmFsdWUgPSBlbmNvZGUodmFsdWUpO1xuXG4gICAgICAgICAgICAgIHJlc29sdmUoeyBtZXNzYWdlOiBtZXNzYWdlLCBpc0hhbmRTaGFrZU5lZWRlZDogZmFsc2V9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gaWYgaXMgYSBoYW5kc2hha2UgbWVzc2FnZSwganVzdCByZXNvbHZlIGl0XG4gICAgICAgIH0gZWxzZSBpZiAoaXNIYW5kU2hha2VUeXBlKSB7XG4gICAgICAgICAgcmVzb2x2ZSh7IG1lc3NhZ2U6IG1lc3NhZ2UsIGlzSGFuZFNoYWtlTmVlZGVkOiBmYWxzZX0pO1xuXG4gICAgICAgICAgLy8gZWxzZSwgc3RhcnRzIGEgbmV3IGhhbmRzaGFrZSBwcm90b2NvbFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoeyBtZXNzYWdlOiBtZXNzYWdlLCBpc0hhbmRTaGFrZU5lZWRlZDogdHJ1ZSwgY2hhdEtleXM6IGNoYXRLZXlzfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlamVjdCgnSW4gZW5jcnlwdE1lc3NhZ2U6IEh5cGVydHkgb3duZXIgVVJMIHdhcyBub3QgZm91bmQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cbiAgZW5jcnlwdEJldHdlZW5IeXBlcnR5RGF0YU9iamVjdChtZXNzYWdlKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IGRhdGFPYmplY3RVUkwgPSBwYXJzZU1lc3NhZ2VVUkwobWVzc2FnZS50byk7XG4gICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5nZXQoJ2RhdGFPYmplY3RTZXNzaW9uS2V5cycpLnRoZW4oKHNlc3Npb25LZXlzKSA9PiB7XG4gICAgICAgIHNlc3Npb25LZXlzID0gY2hhdGtleXNUb0FycmF5Q2xvbmVyKHNlc3Npb25LZXlzIHx8IHt9KTtcbiAgICAgICAgbGV0IGRhdGFPYmplY3RLZXkgPSBzZXNzaW9uS2V5cyA/IHNlc3Npb25LZXlzW2RhdGFPYmplY3RVUkxdIDogbnVsbDtcblxuICAgICAgICBfdGhpcy5kYXRhT2JqZWN0c1N0b3JhZ2UuZ2V0RGF0YU9iamVjdChkYXRhT2JqZWN0VVJMKS50aGVuKChpc0h5cGVydHlSZXBvcnRlcikgPT4ge1xuICAgICAgICAgIC8vaWYgbm8ga2V5IGV4aXN0cywgY3JlYXRlIGEgbmV3IG9uZSBpZiBpcyB0aGUgcmVwb3J0ZXIgb2YgZGF0YU9iamVjdFxuICAgICAgICAgIGlmICghZGF0YU9iamVjdEtleSkge1xuICAgICAgICAgICAgLy8gaWYgdGhlIGh5cGVydHkgaXMgdGhlIHJlcG9ydGVyIG9mIHRoZSBkYXRhT2JqZWN0IHRoZW4gZ2VuZXJhdGVzIGEgc2Vzc2lvbiBrZXlcbiAgICAgICAgICAgIGlmIChpc0h5cGVydHlSZXBvcnRlci5yZXBvcnRlciAmJiBpc0h5cGVydHlSZXBvcnRlci5yZXBvcnRlciA9PT0gbWVzc2FnZS5mcm9tKSB7XG5cbiAgICAgICAgICAgICAgbGV0IHNlc3Npb25LZXkgPSBfdGhpcy5jcnlwdG8uZ2VuZXJhdGVSYW5kb20oKTtcbiAgICAgICAgICAgICAgX3RoaXMuZGF0YU9iamVjdFNlc3Npb25LZXlzW2RhdGFPYmplY3RVUkxdID0ge3Nlc3Npb25LZXk6IHNlc3Npb25LZXksIGlzVG9FbmNyeXB0OiB0cnVlfTtcbiAgICAgICAgICAgICAgbGV0IGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lID0gY2hhdGtleXNUb1N0cmluZ0Nsb25lcihfdGhpcy5kYXRhT2JqZWN0U2Vzc2lvbktleXMpO1xuXG4gICAgICAgICAgICAgIC8vVE9ETzogY2hlY2sgaWYgdGhpcyBkb2VzIG5vdCBuZWVkIHRvIGJlIHN0b3JlZFxuICAgICAgICAgICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5zZXQoJ2RhdGFPYmplY3RTZXNzaW9uS2V5cycsIDAsIGRhdGFPYmplY3RTZXNzaW9uS2V5c0Nsb25lKS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdCgnT24gZW5jcnlwdE1lc3NhZ2UgZnJvbSBtZXRob2Qgc3RvcmFnZU1hbmFnZXIuc2V0IGVycm9yOiAnICsgZXJyKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGRhdGFPYmplY3RLZXkgPSBfdGhpcy5kYXRhT2JqZWN0U2Vzc2lvbktleXNbZGF0YU9iamVjdFVSTF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy9jaGVjayBpZiB0aGVyZSBpcyBhbHJlYWR5IGEgc2Vzc2lvbiBrZXkgZm9yIHRoZSBjaGF0IHJvb21cbiAgICAgICAgICBpZiAoZGF0YU9iamVjdEtleSkge1xuXG4gICAgICAgICAgICAvLyBhbmQgaWYgaXMgdG8gYXBwbHkgZW5jcnlwdGlvbiwgZW5jcnlwdCB0aGUgbWVzc2FnZXNcbiAgICAgICAgICAgIGlmIChkYXRhT2JqZWN0S2V5LmlzVG9FbmNyeXB0KSB7XG4gICAgICAgICAgICAgIGxldCBpdiA9IF90aGlzLmNyeXB0by5nZW5lcmF0ZUlWKCk7XG4gICAgICAgICAgICAgIGxldCBzdHJpbmdpZmllZElWID0gc3RyaW5naWZ5KGl2KTtcbiAgICAgICAgICAgICAgbGV0IHN0cmluZ2lmaWVkTWVzc2FnZUJvZHkgPSBzdHJpbmdpZnkobWVzc2FnZS5ib2R5LnZhbHVlKTtcblxuICAgICAgICAgICAgICBfdGhpcy5jcnlwdG8uZW5jcnlwdEFFUyhkYXRhT2JqZWN0S2V5LnNlc3Npb25LZXksIHN0cmluZ2lmaWVkTWVzc2FnZUJvZHksIGl2KS50aGVuKGVuY3J5cHRlZFZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICBkZWxldGUgbWVzc2FnZS5ib2R5LmlkZW50aXR5LmFzc2VydGlvbjsgLy9UT0RPOiBDaGVjayB3aHkgYXNzZXJ0aW9uIGlzIGNvbW1pbmcgb24gdGhlIG1lc3NhZ2UhXG4gICAgICAgICAgICAgICAgZGVsZXRlIG1lc3NhZ2UuYm9keS5pZGVudGl0eS5leHBpcmVzOyAvL1RPRE86IENoZWNrIHdoeSBleHBpcmVzIGlzIGNvbW1pbmcgb24gdGhlIG1lc3NhZ2UhXG4gICAgICAgICAgICAgICAgbGV0IGZpbHRlcmVkTWVzc2FnZSA9IGZpbHRlck1lc3NhZ2VUb0hhc2gobWVzc2FnZSwgc3RyaW5naWZpZWRNZXNzYWdlQm9keSArIHN0cmluZ2lmaWVkSVYpO1xuXG4gICAgICAgICAgICAgICAgX3RoaXMuY3J5cHRvLmhhc2hITUFDKGRhdGFPYmplY3RLZXkuc2Vzc2lvbktleSwgZmlsdGVyZWRNZXNzYWdlKS50aGVuKGhhc2ggPT4ge1xuICAgICAgICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0ge3ZhbHVlOiBlbmNvZGUoZW5jcnlwdGVkVmFsdWUpLCBpdjogZW5jb2RlKGl2KSwgaGFzaDogZW5jb2RlKGhhc2gpfTtcblxuICAgICAgICAgICAgICAgICAgbWVzc2FnZS5ib2R5LnZhbHVlID0gc3RyaW5naWZ5KG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBpZiBub3QsIGp1c3Qgc2VuZCB0aGUgbWVzc2FnZVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gc3RhcnQgdGhlIGdlbmVyYXRpb24gb2YgYSBuZXcgc2Vzc2lvbiBLZXlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0KCdEYXRhIG9iamVjdCBrZXkgY291bGQgbm90IGJlIGRlZmluZWQ6IEZhaWxlZCB0byBlbmNyeXB0IG1lc3NhZ2UgJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaChlcnIgPT4geyByZWplY3QoJ09uIGVuY3J5cHRNZXNzYWdlIGZyb20gbWV0aG9kIGRhdGFPYmplY3RzU3RvcmFnZS5nZXREYXRhT2JqZWN0IGVycm9yOiAnICsgZXJyKTsgfSk7XG4gICAgICB9KS5jYXRjaChlcnIgPT4geyByZWplY3QoJ09uIGVuY3J5cHRNZXNzYWdlIGZyb20gbWV0aG9kIHN0b3JhZ2VNYW5hZ2VyLmdldCBlcnJvcjogJyArIGVycik7IH0pO1xuXG4gICAgfSk7XG4gIH1cblxuXG4gIGRlY3J5cHRCZXR3ZWVuSHlwZXJ0aWVzKG1lc3NhZ2UpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsZXQgaXNIYW5kU2hha2VUeXBlID0gbWVzc2FnZS50eXBlID09PSAnaGFuZHNoYWtlJztcbiAgICAgIGxldCB1c2VyVVJMID0gX3RoaXMucmVnaXN0cnkuZ2V0SHlwZXJ0eU93bmVyKG1lc3NhZ2UudG8pO1xuICAgICAgaWYgKHVzZXJVUkwpIHtcblxuICAgICAgICBsZXQgY2hhdEtleXMgPSBfdGhpcy5jaGF0S2V5c1ttZXNzYWdlLnRvICsgJzwtPicgKyBtZXNzYWdlLmZyb21dO1xuICAgICAgICBpZiAoIWNoYXRLZXlzKSB7XG4gICAgICAgICAgY2hhdEtleXMgPSBfdGhpcy5uZXdDaGF0Q3J5cHRvKG1lc3NhZ2UsIHVzZXJVUkwsICdkZWNyeXB0Jyk7XG4gICAgICAgICAgX3RoaXMuY2hhdEtleXNbbWVzc2FnZS50byArICc8LT4nICsgbWVzc2FnZS5mcm9tXSA9IGNoYXRLZXlzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYXRLZXlzLmF1dGhlbnRpY2F0ZWQgJiYgIWlzSGFuZFNoYWtlVHlwZSkge1xuICAgICAgICAgIGxldCB2YWx1ZSA9IGRlY29kZShtZXNzYWdlLmJvZHkudmFsdWUpO1xuICAgICAgICAgIGxldCBpdiA9IGRlY29kZVRvVWludDhBcnJheSh2YWx1ZS5pdik7XG4gICAgICAgICAgbGV0IGRhdGEgPSBkZWNvZGVUb1VpbnQ4QXJyYXkodmFsdWUudmFsdWUpO1xuICAgICAgICAgIGxldCBoYXNoID0gZGVjb2RlVG9VaW50OEFycmF5KHZhbHVlLmhhc2gpO1xuICAgICAgICAgIF90aGlzLmNyeXB0by5kZWNyeXB0QUVTKGNoYXRLZXlzLmtleXMuaHlwZXJ0eVRvU2Vzc2lvbktleSwgZGF0YSwgaXYpLnRoZW4oZGVjcnlwdGVkRGF0YSA9PiB7XG4gICAgICAgICAgICAvLyBsb2cubG9nKCdkZWNyeXB0ZWQgdmFsdWUgJywgZGVjcnlwdGVkRGF0YSk7XG4gICAgICAgICAgICBtZXNzYWdlLmJvZHkudmFsdWUgPSBkZWNyeXB0ZWREYXRhO1xuXG4gICAgICAgICAgICBsZXQgZmlsdGVyZWRNZXNzYWdlID0gZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlLCBkZWNyeXB0ZWREYXRhICsgaXYpO1xuXG4gICAgICAgICAgICBfdGhpcy5jcnlwdG8udmVyaWZ5SE1BQyhjaGF0S2V5cy5rZXlzLmh5cGVydHlUb0hhc2hLZXksIGZpbHRlcmVkTWVzc2FnZSwgaGFzaCkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICBsb2cubG9nKCdSZXN1bHQgb2YgaGFzaCB2ZXJpZmljYXRpb24gaW4gZGVjcnlwdE1lc3NhZ2U6ICcsIHJlc3VsdCk7XG4gICAgICAgICAgICAgIG1lc3NhZ2UuYm9keS5hc3NlcnRlZElkZW50aXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgcmVzb2x2ZSh7bWVzc2FnZTogbWVzc2FnZSwgaXNIYW5kU2hha2VOZWVkZWQ6IGZhbHNlfSk7XG4gICAgICAgICAgICB9KS5jaGF0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgbG9nLmxvZygnZGVjcnlwdE1lc3NhZ2UgSE1BQyBmYWlsZWQ6JywgZXJyKTtcbiAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChpc0hhbmRTaGFrZVR5cGUpIHtcbiAgICAgICAgICByZXNvbHZlKHsgbWVzc2FnZTogbWVzc2FnZSwgY2hhdEtleXM6IGNoYXRLZXlzLCBpc0hhbmRTaGFrZU5lZWRlZDogdHJ1ZX0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdCgnV3JvbmcgbWVzc2FnZSBkbyBkZWNyeXB0OiAnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVqZWN0KCdFcnJvciBvbiBkZWNyeXB0IG1lc3NhZ2U6Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIGRlY3J5cHRCZXR3ZWVuSHlwZXJ0eURhdGFPYmplY3QobWVzc2FnZSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCBkYXRhT2JqZWN0VVJMID0gcGFyc2VNZXNzYWdlVVJMKG1lc3NhZ2UudG8pO1xuICAgICAgX3RoaXMuc3RvcmFnZU1hbmFnZXIuZ2V0KCdkYXRhT2JqZWN0U2Vzc2lvbktleXMnKS50aGVuKChzZXNzaW9uS2V5cykgPT4ge1xuICAgICAgICBzZXNzaW9uS2V5cyA9IGNoYXRrZXlzVG9BcnJheUNsb25lcihzZXNzaW9uS2V5cyB8fCB7fSk7XG4gICAgICAgIGxldCBkYXRhT2JqZWN0S2V5ID0gc2Vzc2lvbktleXMgPyBzZXNzaW9uS2V5c1tkYXRhT2JqZWN0VVJMXSA6IG51bGw7XG5cbiAgICAgICAgaWYgKGRhdGFPYmplY3RLZXkpIHtcblxuICAgICAgICAgIC8vY2hlY2sgaWYgaXMgdG8gYXBwbHkgZW5jcnlwdGlvblxuICAgICAgICAgIGlmIChkYXRhT2JqZWN0S2V5LmlzVG9FbmNyeXB0KSB7XG4gICAgICAgICAgICBsZXQgcGFyc2VkVmFsdWUgPSBwYXJzZShtZXNzYWdlLmJvZHkudmFsdWUpO1xuICAgICAgICAgICAgbGV0IGl2ID0gZGVjb2RlVG9VaW50OEFycmF5KHBhcnNlZFZhbHVlLml2KTtcbiAgICAgICAgICAgIGxldCBlbmNyeXB0ZWRWYWx1ZSA9IGRlY29kZVRvVWludDhBcnJheShwYXJzZWRWYWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICBsZXQgaGFzaCA9IGRlY29kZVRvVWludDhBcnJheShwYXJzZWRWYWx1ZS5oYXNoKTtcblxuICAgICAgICAgICAgX3RoaXMuY3J5cHRvLmRlY3J5cHRBRVMoZGF0YU9iamVjdEtleS5zZXNzaW9uS2V5LCBlbmNyeXB0ZWRWYWx1ZSwgaXYpLnRoZW4oZGVjcnlwdGVkVmFsdWUgPT4ge1xuICAgICAgICAgICAgICBsZXQgcGFyc2VkVmFsdWUgPSBwYXJzZShkZWNyeXB0ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgIG1lc3NhZ2UuYm9keS52YWx1ZSA9IHBhcnNlZFZhbHVlO1xuICAgICAgICAgICAgICBsZXQgZmlsdGVyZWRNZXNzYWdlID0gZmlsdGVyTWVzc2FnZVRvSGFzaChtZXNzYWdlLCBzdHJpbmdpZnkocGFyc2VkVmFsdWUpICsgc3RyaW5naWZ5KGl2KSk7XG5cbiAgICAgICAgICAgICAgX3RoaXMuY3J5cHRvLnZlcmlmeUhNQUMoZGF0YU9iamVjdEtleS5zZXNzaW9uS2V5LCBmaWx0ZXJlZE1lc3NhZ2UsIGhhc2gpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBsb2cubG9nKCdSZWNlaXZlZCBtZXNzYWdlIEhNQUMgcmVzdWx0JywgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICBtZXNzYWdlLmJvZHkuYXNzZXJ0ZWRJZGVudGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShtZXNzYWdlKTtcbiAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHsgcmVqZWN0KCdNZXNzYWdlIEhNQUMgaXMgaW52YWxpZDogJyArIGVycik7IH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vaWYgbm90LCBqdXN0IHJldHVybiB0aGUgbWVzc2FnZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtZXNzYWdlLmJvZHkuYXNzZXJ0ZWRJZGVudGl0eSA9IHRydWU7XG4gICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1lc3NhZ2UuYm9keS5hc3NlcnRlZElkZW50aXR5ID0gdHJ1ZTtcbiAgICAgICAgICByZXNvbHZlKG1lc3NhZ2UpO1xuXG4gICAgICAgICAgLy9yZWplY3QoJ25vIHNlc3Npb25LZXkgZm9yIGNoYXQgcm9vbSBmb3VuZCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG5cbiAgLyoqXG4gICogZ2VuZXJhdGVzIHRoZSBpbml0aWFsIHN0cnVjdHVyZSBmb3IgdGhlIGtleXMgYmV0d2VlbiB0d28gdXNlcnNcbiAgKiBAcGFyYW0ge0pTT059ICAgIG1lc3NhZ2UgICAgICAgICAgICAgIGluaXRpYWwgbWVzc2FnZSB0aGF0IHRyaWdnZXJzIHRoZSBtdXR1YWwgYXV0aGVudGljYXRpb25cbiAgKiBAcGFyYW0ge1N0cmluZ30gIHVzZXJVUkwgICAgICAgICAgICAgIHVzZXJVUkxcbiAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlY2VpdmVyKE9wdGlvbmFsKSAgaW5kaWNhdGVzIGlmIGlzIHRoZSBzZW5kZXIgb3IgdGhlIHJlY2VpdmVyIHRoYXQgY3JlYXRlcyBhIG5ldyBjaGF0IGNyeXB0b1xuICAqIEByZXR1cm4ge0pTT059IG5ld0NoYXRDcnlwdG8gIG5ldyBKU09OIHN0cnVjdHVyZSBmb3IgdGhlIGNoYXQgY3J5cHRvXG4gICovXG4gIG5ld0NoYXRDcnlwdG8obWVzc2FnZSwgdXNlclVSTCwgcmVjZWl2ZXIpIHtcblxuICAgIC8vY2hlY2sgd2hldGhlciBpcyB0aGUgc2VuZGVyIG9yIHRoZSByZWNlaXZlciB0byBjcmVhdGUgYSBuZXcgY2hhdENyeXB0b1xuICAgIC8vdG8gbWFudGFpbiBjb25zaXN0ZW5jeSBvbiB0aGUga2V5cyBpZiB0aGUgcmVjZWl2ZXIgY3JlYXRlIGEgbmV3IGNoYXRDcnlwdG8sXG4gICAgLy90aGVuIGludmVydCB0aGUgZmllbGRzXG4gICAgbGV0IHVzZXJJbmZvID0gdGhpcy5pZG0uZ2V0SWRlbnRpdHkodXNlclVSTCk7XG5cbiAgICBsZXQgZnJvbSA9IChyZWNlaXZlcikgPyBtZXNzYWdlLnRvIDogbWVzc2FnZS5mcm9tO1xuICAgIGxldCB0byA9IChyZWNlaXZlcikgPyBtZXNzYWdlLmZyb20gOiBtZXNzYWdlLnRvO1xuXG4gICAgbGV0IG5ld0NoYXRDcnlwdG8gPVxuICAgIHtcbiAgICAgIGh5cGVydHlGcm9tOlxuICAgICAge1xuICAgICAgICBoeXBlcnR5OiBmcm9tLFxuICAgICAgICB1c2VySUQ6IHVzZXJJbmZvLnVzZXJQcm9maWxlLnVzZXJVUkwsXG5cbiAgICAgICAgLy9wcml2YXRlS2V5OiBcImdldE15UHVibGljS2V5XCIsXG4gICAgICAgIC8vcHVibGljS2V5OiBcImdldE15UHJpdmF0ZUtleVwiLFxuICAgICAgICBhc3NlcnRpb246IHVzZXJJbmZvLmFzc2VydGlvbixcbiAgICAgICAgbWVzc2FnZUluZm86IHVzZXJJbmZvXG4gICAgICB9LFxuICAgICAgaHlwZXJ0eVRvOlxuICAgICAge1xuICAgICAgICBoeXBlcnR5OiB0byxcbiAgICAgICAgdXNlcklEOiB1bmRlZmluZWQsXG4gICAgICAgIHB1YmxpY0tleTogdW5kZWZpbmVkLFxuICAgICAgICBhc3NlcnRpb246IHVuZGVmaW5lZFxuICAgICAgfSxcbiAgICAgIGtleXM6XG4gICAgICB7XG4gICAgICAgIGh5cGVydHlUb1Nlc3Npb25LZXk6IHVuZGVmaW5lZCxcbiAgICAgICAgaHlwZXJ0eUZyb21TZXNzaW9uS2V5OiB1bmRlZmluZWQsXG4gICAgICAgIGh5cGVydHlUb0hhc2hLZXk6IHVuZGVmaW5lZCxcbiAgICAgICAgaHlwZXJ0eUZyb21IYXNoS2V5OiB1bmRlZmluZWQsXG4gICAgICAgIHRvUmFuZG9tOiB1bmRlZmluZWQsXG4gICAgICAgIGZyb21SYW5kb206IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlbWFzdGVyS2V5OiB1bmRlZmluZWQsXG4gICAgICAgIG1hc3RlcktleTogdW5kZWZpbmVkXG4gICAgICB9LFxuICAgICAgaGFuZHNoYWtlSGlzdG9yeToge1xuICAgICAgICBzZW5kZXJIZWxsbzogdW5kZWZpbmVkLFxuICAgICAgICByZWNlaXZlckhlbGxvOiB1bmRlZmluZWQsXG4gICAgICAgIHNlbmRlckNlcnRpZmljYXRlOiB1bmRlZmluZWQsXG4gICAgICAgIHJlY2VpdmVyRmluaXNoZWRNZXNzYWdlOiB1bmRlZmluZWRcbiAgICAgIH0sXG4gICAgICBpbml0aWFsTWVzc2FnZTogKG1lc3NhZ2UuYm9keS5pZ25vcmUpID8gdW5kZWZpbmVkIDogbWVzc2FnZSxcbiAgICAgIGNhbGxiYWNrOiBtZXNzYWdlLmNhbGxiYWNrLFxuICAgICAgYXV0aGVudGljYXRlZDogZmFsc2UsXG4gICAgICBkYXRhT2JqZWN0VVJMOiBtZXNzYWdlLmRhdGFPYmplY3RVUkxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ld0NoYXRDcnlwdG87XG4gIH1cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBNZXNzYWdlRW5jcnlwdGlvbkhhbmRsaW5nO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9jcnlwdG9NYW5hZ2VyL01lc3NhZ2VFbmNyeXB0aW9uSGFuZGxpbmcuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBREE7QUFDQTs7Ozs7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFTQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBdENBO0FBQ0E7QUF3Q0E7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///492\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(42);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _utf = __webpack_require__(494);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('CryptoManager');\n\n/**\n* Class with the cryptographic functions for the authentication protocol\n*\n*/\n\nvar Crypto = function () {\n\n /**\n * Runtimefactory is passed in the costructor, because the nodeJS has a different crypto module\n * from the browser. RuntimeFactory provides a wrapper for the fuctions of nodeJS, so they can be\n * invoked browser like.\n */\n function Crypto(runtimeFactory) {\n (0, _classCallCheck3.default)(this, Crypto);\n\n var _this = this;\n typeof runtimeFactory.createWebcrypto === 'function' ? _this._crypto = runtimeFactory.createWebcrypto() : _this._crypto = crypto;\n }\n\n /**\n * Performs a RSA encryption\n * @param {ArrayBuffer} value the public key\n * @param {BufferSource} value data to be encryped\n * @return {Uint8Array} encrypted data\n */\n\n\n (0, _createClass3.default)(Crypto, [{\n key: 'encryptRSA',\n value: function encryptRSA(pubKey, data) {\n log.log('encryptRSA:pubKey', pubKey);\n log.log('encryptRSA:data', data);\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._importRSAencryptKey(new Uint8Array(pubKey)).then(function (publicKey) {\n\n _this._crypto.subtle.encrypt({\n name: 'RSA-OAEP'\n }, publicKey, //from generateKey or importKey above\n data //ArrayBuffer of data you want to encrypt\n ).then(function (encrypted) {\n //returns an ArrayBuffer containing the encrypted data\n // log.log('crypto-encryptRSA', new Uint8Array(encrypted));\n resolve(new Uint8Array(encrypted));\n }).catch(function (err) {\n // log.log('crypto-encryptRSA', err);\n reject(err);\n });\n });\n });\n }\n\n /**\n * Performs a RSA decryption\n * @param {ArrayBuffer} value the private key\n * @param {BufferSource} value data to be decrypted\n * @return {Uint8Array} decrypted data\n */\n\n }, {\n key: 'decryptRSA',\n value: function decryptRSA(privKey, data) {\n log.log('decryptRSA:privKey', privKey);\n log.log('decryptRSA:data', data);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._importRSAdecryptKey(privKey).then(function (privateKey) {\n\n _this._crypto.subtle.decrypt({\n name: 'RSA-OAEP'\n }, privateKey, //from generateKey or importKey above\n data //ArrayBuffer of the data\n ).then(function (decrypted) {\n\n var decryptedData = new Uint8Array(decrypted);\n\n // log.log('crypto-decryptRSA', decryptedData);\n resolve(decryptedData);\n }).catch(function (err) {\n // log.log('crypto-decryptRSA', err);\n reject(err);\n });\n });\n });\n }\n\n /**\n * Performs a RSA sign\n * @param {ArrayBuffer} value the private key\n * @param {BufferSource} value data to be signed\n * @return {Uint8Array} data signature\n */\n\n }, {\n key: 'signRSA',\n value: function signRSA(privKey, data) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._importRSAsignKey(privKey).then(function (privateKey) {\n _this._crypto.subtle.sign({\n name: 'RSASSA-PKCS1-v1_5'\n }, privateKey, //from generateKey or importKey above\n (0, _utf.encodeUTF8)(data) //ArrayBuffer of data you want to sign\n ).then(function (signature) {\n //returns an ArrayBuffer containing the signature\n // log.log('crypto-signRSA', new Uint8Array(signature));\n resolve(new Uint8Array(signature));\n }).catch(function (err) {\n // log.log('crypto-signRSA', err);\n reject(err);\n });\n }).catch(function (err) {\n console.log(err);\n });\n });\n }\n\n /**\n * Performs a RSA signature verification\n * @param {ArrayBuffer} value the public key\n * @param {BufferSource} value data to be verified\n * @return {Boolean} result of the signature verification\n */\n\n }, {\n key: 'verifyRSA',\n value: function verifyRSA(pubKey, data, signature) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._importRSAverifyKey(pubKey).then(function (publicKey) {\n\n _this._crypto.subtle.verify({\n name: 'RSASSA-PKCS1-v1_5'\n }, publicKey, //from generateKey or importKey above\n signature, //ArrayBuffer of the signature\n (0, _utf.encodeUTF8)(data) //ArrayBuffer of the data\n ).then(function (isvalid) {\n //returns a boolean on whether the signature is true or not\n // log.log('crypto-verifyRSA', isvalid);\n resolve(isvalid);\n }).catch(function (err) {\n // log.log('crypto-verifyRSA', err);\n reject(err);\n });\n });\n });\n }\n\n /**\n * Performs a RSA signature verification\n * @param {ArrayBuffer} value the public key\n * @param {BufferSource} value data to be verified\n * @return {Boolean} result of the signature verification\n */\n\n }, {\n key: 'encryptAES',\n value: function encryptAES(key, data, iv) {\n log.log('encryptAES:key', key);\n log.log('encryptAES:data', data);\n log.log('encryptAES:iv', iv);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._importAESkey(key).then(function (aesKey) {\n\n _this._crypto.subtle.encrypt({\n name: 'AES-CBC',\n\n //Don't re-use initialization vectors!\n //Always generate a new iv every time your encrypt!\n iv: iv\n }, aesKey, //from generateKey or importKey above\n (0, _utf.encodeUTF8)(data) //ArrayBuffer of data you want to encrypt\n ).then(function (encrypted) {\n //returns an ArrayBuffer containing the encrypted data\n // log.log('crypto-encryptAES', new Uint8Array(encrypted));\n resolve(new Uint8Array(encrypted));\n }).catch(function (err) {\n // log.log('crypto-encryptAES', err);\n reject(err);\n });\n });\n });\n }\n }, {\n key: 'decryptAES',\n value: function decryptAES(key, data, iv) {\n log.log('decryptAES:key', key);\n log.log('decryptAES:data', data);\n log.log('decryptAES:iv', iv);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._importAESkey(key).then(function (aesKey) {\n\n _this._crypto.subtle.decrypt({\n name: 'AES-CBC',\n iv: iv\n }, aesKey, //from generateKey or importKey above\n data //ArrayBuffer of the data\n ).then(function (decrypted) {\n\n var decodedData = (0, _utf.decodeUTF8)(new Uint8Array(decrypted));\n log.log('crypto-decryptAES', decodedData);\n resolve(decodedData);\n }).catch(function (err) {\n // log.log('crypto-decryptAES', err);\n reject(err);\n });\n });\n });\n }\n\n /**\n * creates a hash using the HMAC algorithm\n * @param {byteArray} key key to be used in the hmac\n * @param {string} data information to be hashed\n * @return {byteArray} signature resulting hash\n */\n\n }, {\n key: 'hashHMAC',\n value: function hashHMAC(key, data) {\n log.log('hashHMAC:key', key);\n log.log('hashHMAC:data', data);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n if (typeof data != 'string') {\n data = (0, _stringify2.default)(data);\n log.log('Converting hashHMAC inpured DATA');\n log.log('HHashHMAC:', data);\n }\n\n _this._importHMACkey(key).then(function (hmacKey) {\n\n _this._crypto.subtle.sign({\n name: 'HMAC'\n }, hmacKey, //from generateKey or importKey above\n (0, _utf.encodeUTF8)(data) //ArrayBuffer of data you want to sign\n ).then(function (signature) {\n log.log('HashHMAC signature:', new Uint8Array(signature));\n\n // log.log('crypto-hashHMAC', signature);\n //returns an ArrayBuffer containing the signature\n resolve(new Uint8Array(signature));\n }).catch(function (err) {\n // log.log('crypto-hashHMAC', err);\n reject(err);\n });\n });\n });\n }\n\n /**\n * verifies an hash using the HMAC algorithm\n * @param {byteArray} key key to be used in the hmac\n * @param {string} data information to be hashed to compare\n * @param {byteArray} signature hash to compare with the received data\n * @return {boolean} isvalid boolean saying if the data corresponds to the hash received\n */\n\n }, {\n key: 'verifyHMAC',\n value: function verifyHMAC(key, data, signature) {\n log.log('verifyHMAC:key', key);\n log.log('verifyHMAC:data', data);\n log.log('verifyHMAC:signature', signature);\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this._importHMACkey(key).then(function (hmacKey) {\n\n if (typeof data != 'string') {\n data = (0, _stringify2.default)(data);\n log.log('Converting verifyHMAC inputed DATA:', data);\n }\n\n _this._crypto.subtle.verify({\n name: 'HMAC'\n }, hmacKey, //from generateKey or importKey above\n signature, //ArrayBuffer of the signature\n (0, _utf.encodeUTF8)(data) //ArrayBuffer of the data\n ).then(function (isvalid) {\n //returns a boolean on whether the signature is true or not\n // log.log('crypto-verifyHMAC', isvalid);\n log.log('verifyHMAC result', isvalid);\n isvalid ? resolve(isvalid) : reject(isvalid);\n }).catch(function (err) {\n log.error('crypto-verifyHMAC', err);\n reject(err);\n });\n });\n });\n }\n\n /**\n * generates a RSA public/private key pair with a modulus length of 2048 bits\n * @return {JSON} keyPair json containing the public and private keys\n */\n\n }, {\n key: 'generateRSAKeyPair',\n value: function generateRSAKeyPair() {\n var _this = this;\n var keyPair = {};\n\n return new _promise2.default(function (resolve, reject) {\n _this._crypto.subtle.generateKey({\n name: 'RSA-PSS',\n modulusLength: 2048, //can be 1024, 2048, or 4096\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: { name: 'SHA-256' //can be 'SHA-1', 'SHA-256', 'SHA-384', or 'SHA-512'\n } }, true, //whether the key is extractable (i.e. can be used in exportKey)\n ['sign', 'verify'] //can be any combination of 'sign' and 'verify'\n\n ).then(function (key) {\n //returns a keypair object\n // log.log(key);\n\n _this._crypto.subtle.exportKey('spki', //can be 'jwk' (public or private), 'spki' (public only), or 'pkcs8' (private only)\n key.publicKey //can be a publicKey or privateKey, as long as extractable was true\n ).then(function (publicKey) {\n //returns the exported key data\n keyPair.public = new Uint8Array(publicKey);\n return _this._crypto.subtle.exportKey('pkcs8', //can be 'jwk' (public or private), 'spki' (public only), or 'pkcs8' (private only)\n key.privateKey //can be a publicKey or privateKey, as long as extractable was true\n );\n }).then(function (privateKey) {\n keyPair.private = new Uint8Array(privateKey);\n\n // log.log('crypto-generateRSAKeyPair', keyPair);\n resolve(keyPair);\n }).catch(function (err) {\n log.error(err);\n reject(err);\n });\n }).catch(function (err) {\n log.error(err);\n reject(err);\n });\n });\n }\n\n /**\n * Generates a 128 bit random value.\n * @return {byteArray} array random value\n */\n\n }, {\n key: 'generateIV',\n value: function generateIV() {\n var _this = this;\n\n var array = new Uint8Array(16);\n _this._crypto.getRandomValues(array);\n\n return array;\n }\n\n /**\n * Generates a 256 bit random value. 32 bits are extrated from the machine time,\n * the remaining are generated randomly\n * @return {byteArray} array random value\n */\n\n }, {\n key: 'generateRandom',\n value: function generateRandom() {\n var _this = this;\n\n var array = new Uint8Array(32);\n _this._crypto.getRandomValues(array);\n\n var date = Date.now();\n\n var dateEncoded = (0, _utf.encodeUTF8)(date.toString());\n\n //extract the least significant 4 bytes in the date\n var finalDate = dateEncoded.slice(dateEncoded.length - 4, dateEncoded.length);\n\n // add in the first 4 bytes of the array the bytes extracted previously;\n for (var i = 0; i < 4; i++) {\n array[i] = finalDate[i];\n }\n return array;\n }\n\n /**\n * generates a premaster secret (PMS) of 48 bytes (384 bits) randomly\n * @return {byteArray} array premaster secret key\n */\n\n }, {\n key: 'generatePMS',\n value: function generatePMS() {\n var _this = this;\n\n var array = new Uint8Array(48);\n _this._crypto.getRandomValues(array);\n return array;\n }\n\n /**\n * generates a masterKey secret (PMS) of 48 bytes (384 bits) using the premaster secret and\n * two randoms\n * @return {byteArray} array master secret key with 48 bytes\n */\n\n }, {\n key: 'generateMasterSecret',\n value: function generateMasterSecret(hmacKey, data) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n var key = new Uint8Array(48);\n var seed = data;\n\n _this._digest(hmacKey).then(function (digestedKey) {\n\n _this.hashHMAC(digestedKey, seed).then(function (keypart0) {\n\n //copy the first 32 bytes into the key\n for (var i = 0; i < 32; i++) {\n key[i] = keypart0[i];\n }\n return _this.hashHMAC(digestedKey, seed + keypart0);\n }).then(function (keypart1) {\n\n //copy the first 16 bytes to the key remaining 16 bytes\n for (var i = 0; i < 16; i++) {\n key[i + 32] = keypart1[i];\n }\n\n // log.log('crypto-generateMasterSecret', key);\n resolve(key);\n }).catch(function (err) {\n // log.log('crypto-generateMasterSecret', err);\n reject(err);\n });\n });\n });\n }\n\n /**\n * generates both users MAC and encryption keys. generate as output an array\n * with 4 byteArray each with 32 bytes\n * @param {byteArray} secret secret to be used in the HMAC function\n * @param {String} data information to be used as seed\n * @return {Array} key array with the information to generate keys\n */\n\n }, {\n key: 'generateKeys',\n value: function generateKeys(hmacKey, data) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var key = [];\n var seed = data;\n\n // iterate 4 times to obtain a 1024 key size\n _this.hashHMAC(hmacKey, seed).then(function (keypart0) {\n key.push(keypart0);\n return _this.hashHMAC(hmacKey, seed + keypart0);\n }).then(function (keypart1) {\n key.push(keypart1);\n return _this.hashHMAC(hmacKey, seed + keypart1);\n }).then(function (keypart2) {\n key.push(keypart2);\n return _this.hashHMAC(hmacKey, seed + keypart2);\n }).then(function (keypart3) {\n key.push(keypart3);\n\n // log.log('crypto-generateKeys', key);\n resolve(key);\n }).catch(function (err) {\n // log.log('crypto-generateKeys', err);\n reject(err);\n });\n\n // log.log(hmacKey, data);\n });\n }\n }, {\n key: '_importRSAsignKey',\n value: function _importRSAsignKey(privKey) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._crypto.subtle.importKey('pkcs8', //can be 'jwk' (public or private), 'spki' (public only), or 'pkcs8' (private only)\n privKey, { //these are the algorithm options\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' //can be 'SHA-1', 'SHA-256', 'SHA-384', or 'SHA-512'\n } }, true, //whether the key is extractable (i.e. can be used in exportKey)\n ['sign'] //'verify' for public key import, 'sign' for private key imports\n ).then(function (privateKey) {\n //returns a publicKey (or privateKey if you are importing a private key)\n // log.log('crypto-_importRSAsignKey', privateKey);\n resolve(privateKey);\n }).catch(function (err) {\n log.error('crypto-_importRSAsignKey', err);\n reject(err);\n });\n });\n }\n }, {\n key: '_importRSAverifyKey',\n value: function _importRSAverifyKey(pubKey) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._crypto.subtle.importKey('spki', //can be 'jwk' (public or private), 'spki' (public only), or 'pkcs8' (private only)\n pubKey, { //these are the algorithm options\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' //can be 'SHA-1', 'SHA-256', 'SHA-384', or 'SHA-512'\n } }, true, //whether the key is extractable (i.e. can be used in exportKey)\n ['verify'] //'verify' for public key import, 'sign' for private key imports\n ).then(function (publicKey) {\n //returns a publicKey (or privateKey if you are importing a private key)\n // log.log('crypto-_importRSAverifyKey', publicKey);\n resolve(publicKey);\n }).catch(function (err) {\n log.error('crypto-_importRSAverifyKey', err);\n reject(err);\n });\n });\n }\n }, {\n key: '_importRSAencryptKey',\n value: function _importRSAencryptKey(pubKey) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._crypto.subtle.importKey('spki', //can be 'jwk' (public or private), 'spki' (public only), or 'pkcs8' (private only)\n pubKey, { //these are the algorithm options\n name: 'RSA-OAEP',\n hash: { name: 'SHA-256' //can be 'SHA-1', 'SHA-256', 'SHA-384', or 'SHA-512'\n } }, true, //whether the key is extractable (i.e. can be used in exportKey)\n ['encrypt'] //'encrypt' or 'wrapKey' for public key import or\n //'decrypt' or 'unwrapKey' for private key imports\n ).then(function (publicKey) {\n //returns a publicKey (or privateKey if you are importing a private key)\n // log.log('crypto-_importRSAencryptKey', publicKey);\n resolve(publicKey);\n }).catch(function (err) {\n log.error('crypto-_importRSAencryptKey', err.name);\n reject(err);\n });\n });\n }\n }, {\n key: '_importRSAdecryptKey',\n value: function _importRSAdecryptKey(privKey) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._crypto.subtle.importKey('pkcs8', //can be 'jwk' (public or private), 'spki' (public only), or 'pkcs8' (private only)\n privKey, { //these are the algorithm options\n name: 'RSA-OAEP',\n hash: { name: 'SHA-256' //can be 'SHA-1', 'SHA-256', 'SHA-384', or 'SHA-512'\n } }, true, //whether the key is extractable (i.e. can be used in exportKey)\n ['decrypt'] //'encrypt' or 'wrapKey' for public key import or\n //'decrypt' or 'unwrapKey' for private key imports\n ).then(function (privateKey) {\n //returns a publicKey (or privateKey if you are importing a private key)\n // log.log('crypto-_importRSAdecryptKey', privateKey);\n resolve(privateKey);\n }).catch(function (err) {\n log.error('crypto-_importRSAdecryptKey', err);\n reject(err);\n });\n });\n }\n }, {\n key: 'concatPMSwithRandoms',\n value: function concatPMSwithRandoms(pms, toRandom, fromRandom) {\n\n var finalKey = new Uint8Array(pms.length + toRandom.length + fromRandom.length);\n\n // add PremasterKey\n for (var i = 0; i < pms.length; i++) {\n finalKey[i] = pms[i];\n }\n\n //add to random\n for (var _i = 0; _i < toRandom.length; _i++) {\n finalKey[_i + pms.length] = pms[_i];\n }\n\n //add from random\n for (var _i2 = 0; _i2 < fromRandom.length; _i2++) {\n finalKey[_i2 + pms.length + toRandom.length] = pms[_i2];\n }\n\n return finalKey;\n }\n }, {\n key: '_generate256bitKey',\n value: function _generate256bitKey() {\n var _this = this;\n var array = new Uint8Array(32);\n _this._crypto.getRandomValues(array);\n\n return array;\n }\n\n /**\n * imports the secret to the HMAC function\n * @param {byteArray} arrayBuffer bytes to import as key\n * @return {JSON} key key ready to be used in the HMAC cryptographic function\n */\n\n }, {\n key: '_importHMACkey',\n value: function _importHMACkey(arrayBuffer) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this._digest(arrayBuffer).then(function (key) {\n\n _this._crypto.subtle.importKey('raw', //can be 'jwk' or 'raw'\n key, { //this is the algorithm options\n name: 'HMAC',\n hash: { name: 'SHA-256' }, //can be 'SHA-1', 'SHA-256', 'SHA-384', or 'SHA-512'\n length: 256 //optional, if you want your key length to differ from the hash function's block length\n }, true, //whether the key is extractable (i.e. can be used in exportKey)\n ['sign', 'verify'] //can be any combination of 'sign' and 'verify'\n ).then(function (key) {\n //returns the symmetric key\n // log.log('crypto-_importHMACkey', key);\n resolve(key);\n }).catch(function (err) {\n reject(err);\n });\n });\n });\n }\n }, {\n key: '_digest',\n value: function _digest(value) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this._crypto.subtle.digest({\n name: 'SHA-256'\n }, value //The data you want to hash as an ArrayBuffer\n ).then(function (hash) {\n //returns the hash as an ArrayBuffer\n // log.log('crypto-digest', new Uint8Array(hash));\n resolve(new Uint8Array(hash));\n }).catch(function (err) {\n log.error(err);\n reject(err);\n });\n });\n }\n }, {\n key: '_importAESkey',\n value: function _importAESkey(arrayBuffer) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n _this._crypto.subtle.importKey('raw', //can be 'jwk' or 'raw'\n arrayBuffer, { //this is the algorithm options\n name: 'AES-CBC'\n }, true, //whether the key is extractable (i.e. can be used in exportKey)\n ['encrypt', 'decrypt'] //can be 'encrypt', 'decrypt', 'wrapKey', or 'unwrapKey'\n ).then(function (key) {\n //returns the symmetric key\n // log.log('crypto-importAESkey', key);\n resolve(key);\n }).catch(function (err) {\n log.error('crypto-importAESkey', err);\n reject(err);\n });\n });\n }\n }, {\n key: '_sha256',\n value: function _sha256(str) {\n var _this = this;\n var buffer = new TextEncoder('utf-8').encode(str);\n return _this._crypto.subtle.digest('SHA-256', buffer).then(function (hash) {\n return _this._hex(hash);\n });\n }\n }, {\n key: '_hex',\n value: function _hex(buffer) {\n var hexCodes = [];\n var view = new DataView(buffer);\n for (var i = 0; i < view.byteLength; i += 4) {\n // Using getUint32 reduces the number of iterations needed (we process 4 bytes each time)\n var value = view.getUint32(i);\n\n var stringValue = value.toString(16);\n\n var padding = '00000000';\n var paddedValue = (padding + stringValue).slice(-padding.length);\n hexCodes.push(paddedValue);\n }\n\n // Join all the hex strings into one\n return hexCodes.join('');\n }\n }]);\n return Crypto;\n}();\n\nexports.default = Crypto;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9jcnlwdG9NYW5hZ2VyL0NyeXB0by5qcz9hZTY2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZW5jb2RlVVRGOCwgZGVjb2RlVVRGOH0gZnJvbSAnLi91dGY4LmpzJztcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignQ3J5cHRvTWFuYWdlcicpO1xuXG4vKipcbiogQ2xhc3Mgd2l0aCB0aGUgY3J5cHRvZ3JhcGhpYyBmdW5jdGlvbnMgZm9yIHRoZSBhdXRoZW50aWNhdGlvbiBwcm90b2NvbFxuKlxuKi9cbmNsYXNzIENyeXB0byB7XG5cbi8qKlxuKiBSdW50aW1lZmFjdG9yeSBpcyBwYXNzZWQgaW4gdGhlIGNvc3RydWN0b3IsIGJlY2F1c2UgdGhlIG5vZGVKUyBoYXMgYSBkaWZmZXJlbnQgY3J5cHRvIG1vZHVsZVxuKiBmcm9tIHRoZSBicm93c2VyLiBSdW50aW1lRmFjdG9yeSBwcm92aWRlcyBhIHdyYXBwZXIgZm9yIHRoZSBmdWN0aW9ucyBvZiBub2RlSlMsIHNvIHRoZXkgY2FuIGJlXG4qIGludm9rZWQgYnJvd3NlciBsaWtlLlxuKi9cbiAgY29uc3RydWN0b3IocnVudGltZUZhY3RvcnkpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHR5cGVvZiBydW50aW1lRmFjdG9yeS5jcmVhdGVXZWJjcnlwdG8gPT09ICdmdW5jdGlvbicgPyBfdGhpcy5fY3J5cHRvID0gcnVudGltZUZhY3RvcnkuY3JlYXRlV2ViY3J5cHRvKCkgOiBfdGhpcy5fY3J5cHRvID0gY3J5cHRvO1xuICB9XG5cbiAgLyoqXG4gICogUGVyZm9ybXMgYSBSU0EgZW5jcnlwdGlvblxuICAqIEBwYXJhbSAgIHtBcnJheUJ1ZmZlcn0gICAgdmFsdWUgICAgdGhlIHB1YmxpYyBrZXlcbiAgKiBAcGFyYW0gICB7QnVmZmVyU291cmNlfSAgICB2YWx1ZSAgICBkYXRhIHRvIGJlIGVuY3J5cGVkXG4gICogQHJldHVybiAge1VpbnQ4QXJyYXl9ICAgZW5jcnlwdGVkIGRhdGFcbiAgKi9cbiAgZW5jcnlwdFJTQShwdWJLZXksIGRhdGEpIHtcbiAgICBsb2cubG9nKCdlbmNyeXB0UlNBOnB1YktleScsIHB1YktleSk7XG4gICAgbG9nLmxvZygnZW5jcnlwdFJTQTpkYXRhJywgZGF0YSk7XG5cbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgX3RoaXMuX2ltcG9ydFJTQWVuY3J5cHRLZXkobmV3IFVpbnQ4QXJyYXkocHViS2V5KSkudGhlbihmdW5jdGlvbihwdWJsaWNLZXkpIHtcblxuICAgICAgICBfdGhpcy5fY3J5cHRvLnN1YnRsZS5lbmNyeXB0KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSU0EtT0FFUCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHB1YmxpY0tleSwgLy9mcm9tIGdlbmVyYXRlS2V5IG9yIGltcG9ydEtleSBhYm92ZVxuICAgICAgICAgIGRhdGEgLy9BcnJheUJ1ZmZlciBvZiBkYXRhIHlvdSB3YW50IHRvIGVuY3J5cHRcbiAgICAgICAgKVxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGVuY3J5cHRlZCkge1xuICAgICAgICAgIC8vcmV0dXJucyBhbiBBcnJheUJ1ZmZlciBjb250YWluaW5nIHRoZSBlbmNyeXB0ZWQgZGF0YVxuICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by1lbmNyeXB0UlNBJywgbmV3IFVpbnQ4QXJyYXkoZW5jcnlwdGVkKSk7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBVaW50OEFycmF5KGVuY3J5cHRlZCkpO1xuXG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLWVuY3J5cHRSU0EnLCBlcnIpO1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIFBlcmZvcm1zIGEgUlNBIGRlY3J5cHRpb25cbiAgKiBAcGFyYW0gICB7QXJyYXlCdWZmZXJ9ICAgIHZhbHVlICAgIHRoZSBwcml2YXRlIGtleVxuICAqIEBwYXJhbSAgIHtCdWZmZXJTb3VyY2V9ICAgIHZhbHVlICAgIGRhdGEgdG8gYmUgZGVjcnlwdGVkXG4gICogQHJldHVybiAge1VpbnQ4QXJyYXl9ICAgZGVjcnlwdGVkIGRhdGFcbiAgKi9cbiAgZGVjcnlwdFJTQShwcml2S2V5LCBkYXRhKSB7XG4gICAgbG9nLmxvZygnZGVjcnlwdFJTQTpwcml2S2V5JywgcHJpdktleSk7XG4gICAgbG9nLmxvZygnZGVjcnlwdFJTQTpkYXRhJywgZGF0YSk7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIF90aGlzLl9pbXBvcnRSU0FkZWNyeXB0S2V5KHByaXZLZXkpLnRoZW4oZnVuY3Rpb24ocHJpdmF0ZUtleSkge1xuXG4gICAgICAgIF90aGlzLl9jcnlwdG8uc3VidGxlLmRlY3J5cHQoXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JTQS1PQUVQJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJpdmF0ZUtleSwgLy9mcm9tIGdlbmVyYXRlS2V5IG9yIGltcG9ydEtleSBhYm92ZVxuICAgICAgICAgIGRhdGEgLy9BcnJheUJ1ZmZlciBvZiB0aGUgZGF0YVxuICAgICAgICApXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGVjcnlwdGVkKSB7XG5cbiAgICAgICAgICAgIGxldCBkZWNyeXB0ZWREYXRhID0gbmV3IFVpbnQ4QXJyYXkoZGVjcnlwdGVkKTtcblxuICAgICAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLWRlY3J5cHRSU0EnLCBkZWNyeXB0ZWREYXRhKTtcbiAgICAgICAgICAgIHJlc29sdmUoZGVjcnlwdGVkRGF0YSk7XG5cbiAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tZGVjcnlwdFJTQScsIGVycik7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBQZXJmb3JtcyBhIFJTQSBzaWduXG4gICogQHBhcmFtICAge0FycmF5QnVmZmVyfSAgICB2YWx1ZSAgICB0aGUgcHJpdmF0ZSBrZXlcbiAgKiBAcGFyYW0gICB7QnVmZmVyU291cmNlfSAgICB2YWx1ZSAgICBkYXRhIHRvIGJlIHNpZ25lZFxuICAqIEByZXR1cm4gIHtVaW50OEFycmF5fSAgIGRhdGEgc2lnbmF0dXJlXG4gICovXG4gIHNpZ25SU0EocHJpdktleSwgZGF0YSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBfdGhpcy5faW1wb3J0UlNBc2lnbktleShwcml2S2V5KS50aGVuKGZ1bmN0aW9uKHByaXZhdGVLZXkpIHtcbiAgICAgICAgX3RoaXMuX2NyeXB0by5zdWJ0bGUuc2lnbihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlNBU1NBLVBLQ1MxLXYxXzUnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcml2YXRlS2V5LCAvL2Zyb20gZ2VuZXJhdGVLZXkgb3IgaW1wb3J0S2V5IGFib3ZlXG4gICAgICAgICAgZW5jb2RlVVRGOChkYXRhKSAvL0FycmF5QnVmZmVyIG9mIGRhdGEgeW91IHdhbnQgdG8gc2lnblxuICAgICAgICApXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24oc2lnbmF0dXJlKSB7XG4gICAgICAgICAgLy9yZXR1cm5zIGFuIEFycmF5QnVmZmVyIGNvbnRhaW5pbmcgdGhlIHNpZ25hdHVyZVxuICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by1zaWduUlNBJywgbmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlKSk7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBVaW50OEFycmF5KHNpZ25hdHVyZSkpO1xuXG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLXNpZ25SU0EnLCBlcnIpO1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfSk7XG5cbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7IGNvbnNvbGUubG9nKGVycik7IH0pO1xuXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBQZXJmb3JtcyBhIFJTQSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uXG4gICogQHBhcmFtICAge0FycmF5QnVmZmVyfSAgICB2YWx1ZSAgICB0aGUgcHVibGljIGtleVxuICAqIEBwYXJhbSAgIHtCdWZmZXJTb3VyY2V9ICAgIHZhbHVlICAgIGRhdGEgdG8gYmUgdmVyaWZpZWRcbiAgKiBAcmV0dXJuICB7Qm9vbGVhbn0gICByZXN1bHQgb2YgdGhlIHNpZ25hdHVyZSB2ZXJpZmljYXRpb25cbiAgKi9cbiAgdmVyaWZ5UlNBKHB1YktleSwgZGF0YSwgc2lnbmF0dXJlKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIF90aGlzLl9pbXBvcnRSU0F2ZXJpZnlLZXkocHViS2V5KS50aGVuKGZ1bmN0aW9uKHB1YmxpY0tleSkge1xuXG4gICAgICAgIF90aGlzLl9jcnlwdG8uc3VidGxlLnZlcmlmeShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlNBU1NBLVBLQ1MxLXYxXzUnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwdWJsaWNLZXksIC8vZnJvbSBnZW5lcmF0ZUtleSBvciBpbXBvcnRLZXkgYWJvdmVcbiAgICAgICAgICBzaWduYXR1cmUsIC8vQXJyYXlCdWZmZXIgb2YgdGhlIHNpZ25hdHVyZVxuICAgICAgICAgIGVuY29kZVVURjgoZGF0YSkgLy9BcnJheUJ1ZmZlciBvZiB0aGUgZGF0YVxuICAgICAgICApXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24oaXN2YWxpZCkge1xuICAgICAgICAgIC8vcmV0dXJucyBhIGJvb2xlYW4gb24gd2hldGhlciB0aGUgc2lnbmF0dXJlIGlzIHRydWUgb3Igbm90XG4gICAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLXZlcmlmeVJTQScsIGlzdmFsaWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShpc3ZhbGlkKTtcblxuICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by12ZXJpZnlSU0EnLCBlcnIpO1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfSk7XG5cbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBQZXJmb3JtcyBhIFJTQSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uXG4gICogQHBhcmFtICAge0FycmF5QnVmZmVyfSAgICB2YWx1ZSAgICB0aGUgcHVibGljIGtleVxuICAqIEBwYXJhbSAgIHtCdWZmZXJTb3VyY2V9ICAgIHZhbHVlICAgIGRhdGEgdG8gYmUgdmVyaWZpZWRcbiAgKiBAcmV0dXJuICB7Qm9vbGVhbn0gICByZXN1bHQgb2YgdGhlIHNpZ25hdHVyZSB2ZXJpZmljYXRpb25cbiAgKi9cbiAgZW5jcnlwdEFFUyhrZXksIGRhdGEsIGl2KSB7XG4gICAgbG9nLmxvZygnZW5jcnlwdEFFUzprZXknLCBrZXkpO1xuICAgIGxvZy5sb2coJ2VuY3J5cHRBRVM6ZGF0YScsIGRhdGEpO1xuICAgIGxvZy5sb2coJ2VuY3J5cHRBRVM6aXYnLCBpdik7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIF90aGlzLl9pbXBvcnRBRVNrZXkoa2V5KS50aGVuKGZ1bmN0aW9uKGFlc0tleSkge1xuXG4gICAgICAgIF90aGlzLl9jcnlwdG8uc3VidGxlLmVuY3J5cHQoXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0FFUy1DQkMnLFxuXG4gICAgICAgICAgICAvL0Rvbid0IHJlLXVzZSBpbml0aWFsaXphdGlvbiB2ZWN0b3JzIVxuICAgICAgICAgICAgLy9BbHdheXMgZ2VuZXJhdGUgYSBuZXcgaXYgZXZlcnkgdGltZSB5b3VyIGVuY3J5cHQhXG4gICAgICAgICAgICBpdjogaXZcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFlc0tleSwgLy9mcm9tIGdlbmVyYXRlS2V5IG9yIGltcG9ydEtleSBhYm92ZVxuICAgICAgICAgIGVuY29kZVVURjgoZGF0YSkgLy9BcnJheUJ1ZmZlciBvZiBkYXRhIHlvdSB3YW50IHRvIGVuY3J5cHRcbiAgICAgICAgKVxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGVuY3J5cHRlZCkge1xuICAgICAgICAgIC8vcmV0dXJucyBhbiBBcnJheUJ1ZmZlciBjb250YWluaW5nIHRoZSBlbmNyeXB0ZWQgZGF0YVxuICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by1lbmNyeXB0QUVTJywgbmV3IFVpbnQ4QXJyYXkoZW5jcnlwdGVkKSk7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBVaW50OEFycmF5KGVuY3J5cHRlZCkpO1xuXG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLWVuY3J5cHRBRVMnLCBlcnIpO1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfSk7XG5cbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH1cblxuICBkZWNyeXB0QUVTKGtleSwgZGF0YSwgaXYpIHtcbiAgICBsb2cubG9nKCdkZWNyeXB0QUVTOmtleScsIGtleSk7XG4gICAgbG9nLmxvZygnZGVjcnlwdEFFUzpkYXRhJywgZGF0YSk7XG4gICAgbG9nLmxvZygnZGVjcnlwdEFFUzppdicsIGl2KTtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgX3RoaXMuX2ltcG9ydEFFU2tleShrZXkpLnRoZW4oZnVuY3Rpb24oYWVzS2V5KSB7XG5cbiAgICAgICAgX3RoaXMuX2NyeXB0by5zdWJ0bGUuZGVjcnlwdChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQUVTLUNCQycsXG4gICAgICAgICAgICBpdjogaXZcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFlc0tleSwgLy9mcm9tIGdlbmVyYXRlS2V5IG9yIGltcG9ydEtleSBhYm92ZVxuICAgICAgICAgIGRhdGEgLy9BcnJheUJ1ZmZlciBvZiB0aGUgZGF0YVxuICAgICAgICApXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGVjcnlwdGVkKSB7XG5cbiAgICAgICAgICAgIGxldCBkZWNvZGVkRGF0YSA9IGRlY29kZVVURjgobmV3IFVpbnQ4QXJyYXkoZGVjcnlwdGVkKSk7XG4gICAgICAgICAgICBsb2cubG9nKCdjcnlwdG8tZGVjcnlwdEFFUycsIGRlY29kZWREYXRhKTtcbiAgICAgICAgICAgIHJlc29sdmUoZGVjb2RlZERhdGEpO1xuXG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLWRlY3J5cHRBRVMnLCBlcnIpO1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfSk7XG5cbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBjcmVhdGVzIGEgaGFzaCB1c2luZyB0aGUgSE1BQyBhbGdvcml0aG1cbiAgKiBAcGFyYW0gIHtieXRlQXJyYXl9ICAgIGtleSAgICAgICBrZXkgdG8gYmUgdXNlZCBpbiB0aGUgaG1hY1xuICAqIEBwYXJhbSAge3N0cmluZ30gICAgICBkYXRhICAgICAgIGluZm9ybWF0aW9uIHRvIGJlIGhhc2hlZFxuICAqIEByZXR1cm4gIHtieXRlQXJyYXl9ICAgc2lnbmF0dXJlICByZXN1bHRpbmcgaGFzaFxuICAqL1xuICBoYXNoSE1BQyhrZXksIGRhdGEpIHtcbiAgICBsb2cubG9nKCdoYXNoSE1BQzprZXknLCBrZXkpO1xuICAgIGxvZy5sb2coJ2hhc2hITUFDOmRhdGEnLCBkYXRhKTtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICBpZiAodHlwZW9mIGRhdGEgIT0gJ3N0cmluZycpIHtcbiAgICAgICAgZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgICAgICBsb2cubG9nKCdDb252ZXJ0aW5nIGhhc2hITUFDIGlucHVyZWQgREFUQScpO1xuICAgICAgICBsb2cubG9nKCdISGFzaEhNQUM6JywgZGF0YSk7XG4gICAgICB9XG5cblxuICAgICAgX3RoaXMuX2ltcG9ydEhNQUNrZXkoa2V5KS50aGVuKGZ1bmN0aW9uKGhtYWNLZXkpIHtcblxuICAgICAgICBfdGhpcy5fY3J5cHRvLnN1YnRsZS5zaWduKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdITUFDJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaG1hY0tleSwgLy9mcm9tIGdlbmVyYXRlS2V5IG9yIGltcG9ydEtleSBhYm92ZVxuICAgICAgICAgIGVuY29kZVVURjgoZGF0YSkgLy9BcnJheUJ1ZmZlciBvZiBkYXRhIHlvdSB3YW50IHRvIHNpZ25cbiAgICAgICAgKVxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKHNpZ25hdHVyZSkge1xuICAgICAgICAgICAgbG9nLmxvZygnSGFzaEhNQUMgc2lnbmF0dXJlOicsIG5ldyBVaW50OEFycmF5KHNpZ25hdHVyZSkpO1xuXG4gICAgICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8taGFzaEhNQUMnLCBzaWduYXR1cmUpO1xuICAgICAgICAgICAgLy9yZXR1cm5zIGFuIEFycmF5QnVmZmVyIGNvbnRhaW5pbmcgdGhlIHNpZ25hdHVyZVxuICAgICAgICAgICAgcmVzb2x2ZShuZXcgVWludDhBcnJheShzaWduYXR1cmUpKTtcblxuICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLWhhc2hITUFDJywgZXJyKTtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiB2ZXJpZmllcyBhbiBoYXNoIHVzaW5nIHRoZSBITUFDIGFsZ29yaXRobVxuICAqIEBwYXJhbSAge2J5dGVBcnJheX0gICAga2V5ICAgICAgIGtleSB0byBiZSB1c2VkIGluIHRoZSBobWFjXG4gICogQHBhcmFtICB7c3RyaW5nfSAgICAgIGRhdGEgICAgICAgaW5mb3JtYXRpb24gdG8gYmUgaGFzaGVkIHRvIGNvbXBhcmVcbiAgKiBAcGFyYW0gIHtieXRlQXJyYXl9ICBzaWduYXR1cmUgICBoYXNoIHRvIGNvbXBhcmUgd2l0aCB0aGUgcmVjZWl2ZWQgZGF0YVxuICAqIEByZXR1cm4gIHtib29sZWFufSAgIGlzdmFsaWQgICAgIGJvb2xlYW4gc2F5aW5nIGlmIHRoZSBkYXRhIGNvcnJlc3BvbmRzIHRvIHRoZSBoYXNoIHJlY2VpdmVkXG4gICovXG4gIHZlcmlmeUhNQUMoa2V5LCBkYXRhLCBzaWduYXR1cmUpIHtcbiAgICBsb2cubG9nKCd2ZXJpZnlITUFDOmtleScsIGtleSk7XG4gICAgbG9nLmxvZygndmVyaWZ5SE1BQzpkYXRhJywgZGF0YSk7XG4gICAgbG9nLmxvZygndmVyaWZ5SE1BQzpzaWduYXR1cmUnLCBzaWduYXR1cmUpO1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgIF90aGlzLl9pbXBvcnRITUFDa2V5KGtleSkudGhlbihmdW5jdGlvbihobWFjS2V5KSB7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhICE9ICdzdHJpbmcnKSB7XG4gICAgICAgICAgZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgICAgICAgIGxvZy5sb2coJ0NvbnZlcnRpbmcgdmVyaWZ5SE1BQyBpbnB1dGVkIERBVEE6JywgZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpcy5fY3J5cHRvLnN1YnRsZS52ZXJpZnkoXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0hNQUMnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobWFjS2V5LCAvL2Zyb20gZ2VuZXJhdGVLZXkgb3IgaW1wb3J0S2V5IGFib3ZlXG4gICAgICAgICAgc2lnbmF0dXJlLCAvL0FycmF5QnVmZmVyIG9mIHRoZSBzaWduYXR1cmVcbiAgICAgICAgICBlbmNvZGVVVEY4KGRhdGEpIC8vQXJyYXlCdWZmZXIgb2YgdGhlIGRhdGFcbiAgICAgICAgKVxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGlzdmFsaWQpIHtcbiAgICAgICAgICAvL3JldHVybnMgYSBib29sZWFuIG9uIHdoZXRoZXIgdGhlIHNpZ25hdHVyZSBpcyB0cnVlIG9yIG5vdFxuICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by12ZXJpZnlITUFDJywgaXN2YWxpZCk7XG4gICAgICAgICAgICBsb2cubG9nKCd2ZXJpZnlITUFDIHJlc3VsdCcsIGlzdmFsaWQpO1xuICAgICAgICAgICAgKGlzdmFsaWQpID8gcmVzb2x2ZShpc3ZhbGlkKSA6IHJlamVjdChpc3ZhbGlkKTtcblxuICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgbG9nLmVycm9yKCdjcnlwdG8tdmVyaWZ5SE1BQycsIGVycik7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogZ2VuZXJhdGVzIGEgUlNBIHB1YmxpYy9wcml2YXRlIGtleSBwYWlyIHdpdGggYSBtb2R1bHVzIGxlbmd0aCBvZiAyMDQ4IGJpdHNcbiAgKiBAcmV0dXJuICB7SlNPTn0gICBrZXlQYWlyICAgIGpzb24gY29udGFpbmluZyB0aGUgcHVibGljIGFuZCBwcml2YXRlIGtleXNcbiAgKi9cbiAgZ2VuZXJhdGVSU0FLZXlQYWlyKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgbGV0IGtleVBhaXIgPSB7fTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIF90aGlzLl9jcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1JTQS1QU1MnLFxuICAgICAgICAgIG1vZHVsdXNMZW5ndGg6IDIwNDgsIC8vY2FuIGJlIDEwMjQsIDIwNDgsIG9yIDQwOTZcbiAgICAgICAgICBwdWJsaWNFeHBvbmVudDogbmV3IFVpbnQ4QXJyYXkoWzB4MDEsIDB4MDAsIDB4MDFdKSxcbiAgICAgICAgICBoYXNoOiB7bmFtZTogJ1NIQS0yNTYnfSAvL2NhbiBiZSAnU0hBLTEnLCAnU0hBLTI1NicsICdTSEEtMzg0Jywgb3IgJ1NIQS01MTInXG4gICAgICAgIH0sXG4gICAgICAgIHRydWUsIC8vd2hldGhlciB0aGUga2V5IGlzIGV4dHJhY3RhYmxlIChpLmUuIGNhbiBiZSB1c2VkIGluIGV4cG9ydEtleSlcbiAgICAgICAgWydzaWduJywgJ3ZlcmlmeSddIC8vY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiAnc2lnbicgYW5kICd2ZXJpZnknXG5cbiAgICAgICkudGhlbihmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgLy9yZXR1cm5zIGEga2V5cGFpciBvYmplY3RcbiAgICAgICAgLy8gbG9nLmxvZyhrZXkpO1xuXG4gICAgICAgIF90aGlzLl9jcnlwdG8uc3VidGxlLmV4cG9ydEtleShcbiAgICAgICAgICAnc3BraScsIC8vY2FuIGJlICdqd2snIChwdWJsaWMgb3IgcHJpdmF0ZSksICdzcGtpJyAocHVibGljIG9ubHkpLCBvciAncGtjczgnIChwcml2YXRlIG9ubHkpXG4gICAgICAgICAga2V5LnB1YmxpY0tleSAvL2NhbiBiZSBhIHB1YmxpY0tleSBvciBwcml2YXRlS2V5LCBhcyBsb25nIGFzIGV4dHJhY3RhYmxlIHdhcyB0cnVlXG4gICAgICAgICkudGhlbihmdW5jdGlvbihwdWJsaWNLZXkpIHtcbiAgICAgICAgICAvL3JldHVybnMgdGhlIGV4cG9ydGVkIGtleSBkYXRhXG4gICAgICAgICAga2V5UGFpci5wdWJsaWMgID0gbmV3IFVpbnQ4QXJyYXkocHVibGljS2V5KTtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuX2NyeXB0by5zdWJ0bGUuZXhwb3J0S2V5KFxuICAgICAgICAgICAgJ3BrY3M4JywgLy9jYW4gYmUgJ2p3aycgKHB1YmxpYyBvciBwcml2YXRlKSwgJ3Nwa2knIChwdWJsaWMgb25seSksIG9yICdwa2NzOCcgKHByaXZhdGUgb25seSlcbiAgICAgICAgICAgIGtleS5wcml2YXRlS2V5IC8vY2FuIGJlIGEgcHVibGljS2V5IG9yIHByaXZhdGVLZXksIGFzIGxvbmcgYXMgZXh0cmFjdGFibGUgd2FzIHRydWVcbiAgICAgICAgICApO1xuICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKHByaXZhdGVLZXkpIHtcbiAgICAgICAgICBrZXlQYWlyLnByaXZhdGUgID0gbmV3IFVpbnQ4QXJyYXkocHJpdmF0ZUtleSk7XG5cbiAgICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tZ2VuZXJhdGVSU0FLZXlQYWlyJywga2V5UGFpcik7XG4gICAgICAgICAgcmVzb2x2ZShrZXlQYWlyKTtcblxuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICBsb2cuZXJyb3IoZXJyKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICBsb2cuZXJyb3IoZXJyKTtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIEdlbmVyYXRlcyBhIDEyOCBiaXQgcmFuZG9tIHZhbHVlLlxuICAqIEByZXR1cm4ge2J5dGVBcnJheX0gIGFycmF5ICAgIHJhbmRvbSB2YWx1ZVxuICAqL1xuICBnZW5lcmF0ZUlWKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgYXJyYXkgPSBuZXcgIFVpbnQ4QXJyYXkoMTYpO1xuICAgIF90aGlzLl9jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycmF5KTtcblxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAqIEdlbmVyYXRlcyBhIDI1NiBiaXQgcmFuZG9tIHZhbHVlLiAzMiBiaXRzIGFyZSBleHRyYXRlZCBmcm9tIHRoZSBtYWNoaW5lIHRpbWUsXG4gICogdGhlIHJlbWFpbmluZyBhcmUgZ2VuZXJhdGVkIHJhbmRvbWx5XG4gICogQHJldHVybiB7Ynl0ZUFycmF5fSAgYXJyYXkgICAgcmFuZG9tIHZhbHVlXG4gICovXG4gIGdlbmVyYXRlUmFuZG9tKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgYXJyYXkgPSBuZXcgIFVpbnQ4QXJyYXkoMzIpO1xuICAgIF90aGlzLl9jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycmF5KTtcblxuICAgIGxldCBkYXRlID0gRGF0ZS5ub3coKTtcblxuICAgIGxldCBkYXRlRW5jb2RlZCA9IGVuY29kZVVURjgoZGF0ZS50b1N0cmluZygpKTtcblxuICAgIC8vZXh0cmFjdCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgNCBieXRlcyBpbiB0aGUgZGF0ZVxuICAgIGxldCBmaW5hbERhdGUgPSBkYXRlRW5jb2RlZC5zbGljZShkYXRlRW5jb2RlZC5sZW5ndGggLSA0LCBkYXRlRW5jb2RlZC5sZW5ndGgpO1xuXG4gICAgLy8gYWRkIGluIHRoZSBmaXJzdCA0IGJ5dGVzIG9mIHRoZSBhcnJheSB0aGUgYnl0ZXMgZXh0cmFjdGVkIHByZXZpb3VzbHk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHsgYXJyYXlbaV0gPSBmaW5hbERhdGVbaV07IH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgKiBnZW5lcmF0ZXMgYSBwcmVtYXN0ZXIgc2VjcmV0IChQTVMpIG9mIDQ4IGJ5dGVzICgzODQgYml0cykgcmFuZG9tbHlcbiAgKiBAcmV0dXJuIHtieXRlQXJyYXl9ICBhcnJheSAgICBwcmVtYXN0ZXIgc2VjcmV0IGtleVxuICAqL1xuICBnZW5lcmF0ZVBNUygpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoNDgpO1xuICAgIF90aGlzLl9jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycmF5KTtcbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgKiBnZW5lcmF0ZXMgYSBtYXN0ZXJLZXkgc2VjcmV0IChQTVMpIG9mIDQ4IGJ5dGVzICgzODQgYml0cykgdXNpbmcgdGhlIHByZW1hc3RlciBzZWNyZXQgYW5kXG4gICogdHdvIHJhbmRvbXNcbiAgKiBAcmV0dXJuIHtieXRlQXJyYXl9ICBhcnJheSAgICBtYXN0ZXIgc2VjcmV0IGtleSB3aXRoIDQ4IGJ5dGVzXG4gICovXG4gIGdlbmVyYXRlTWFzdGVyU2VjcmV0KGhtYWNLZXksIGRhdGEpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgbGV0IGtleSA9IG5ldyBVaW50OEFycmF5KDQ4KTtcbiAgICAgIGxldCBzZWVkID0gZGF0YTtcblxuICAgICAgX3RoaXMuX2RpZ2VzdChobWFjS2V5KS50aGVuKChkaWdlc3RlZEtleSkgPT4ge1xuXG4gICAgICAgIF90aGlzLmhhc2hITUFDKGRpZ2VzdGVkS2V5LCBzZWVkKS50aGVuKGZ1bmN0aW9uKGtleXBhcnQwKSB7XG5cbiAgICAgICAgICAvL2NvcHkgdGhlIGZpcnN0IDMyIGJ5dGVzIGludG8gdGhlIGtleVxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzI7IGkrKykgeyBrZXlbaV0gPSBrZXlwYXJ0MFtpXTsgfVxuICAgICAgICAgIHJldHVybiBfdGhpcy5oYXNoSE1BQyhkaWdlc3RlZEtleSwgc2VlZCArIGtleXBhcnQwKTtcblxuICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKGtleXBhcnQxKSB7XG5cbiAgICAgICAgICAvL2NvcHkgdGhlIGZpcnN0IDE2IGJ5dGVzIHRvIHRoZSBrZXkgcmVtYWluaW5nIDE2IGJ5dGVzXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgaSsrKSB7IGtleVtpICsgMzJdID0ga2V5cGFydDFbaV07IH1cblxuICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by1nZW5lcmF0ZU1hc3RlclNlY3JldCcsIGtleSk7XG4gICAgICAgICAgcmVzb2x2ZShrZXkpO1xuXG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by1nZW5lcmF0ZU1hc3RlclNlY3JldCcsIGVycik7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIGdlbmVyYXRlcyBib3RoIHVzZXJzIE1BQyBhbmQgZW5jcnlwdGlvbiBrZXlzLiBnZW5lcmF0ZSBhcyBvdXRwdXQgYW4gYXJyYXlcbiAgKiB3aXRoIDQgYnl0ZUFycmF5IGVhY2ggd2l0aCAzMiBieXRlc1xuICAqIEBwYXJhbSAge2J5dGVBcnJheX0gICAgICAgIHNlY3JldCAgICAgICBzZWNyZXQgdG8gYmUgdXNlZCBpbiB0aGUgSE1BQyBmdW5jdGlvblxuICAqIEBwYXJhbSAge1N0cmluZ30gICAgICAgICAgIGRhdGEgICAgICAgICBpbmZvcm1hdGlvbiB0byBiZSB1c2VkIGFzIHNlZWRcbiAgKiBAcmV0dXJuIHtBcnJheTxieXRlQXJyYXk+fSBrZXkgICAgICAgICAgYXJyYXkgd2l0aCB0aGUgaW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUga2V5c1xuICAqL1xuICBnZW5lcmF0ZUtleXMoaG1hY0tleSwgZGF0YSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgIGxldCBrZXkgPSBbXTtcbiAgICAgIGxldCBzZWVkID0gZGF0YTtcblxuICAgICAgLy8gaXRlcmF0ZSA0IHRpbWVzIHRvIG9idGFpbiBhIDEwMjQga2V5IHNpemVcbiAgICAgIF90aGlzLmhhc2hITUFDKGhtYWNLZXksIHNlZWQpLnRoZW4oZnVuY3Rpb24oa2V5cGFydDApIHtcbiAgICAgICAga2V5LnB1c2goa2V5cGFydDApO1xuICAgICAgICByZXR1cm4gX3RoaXMuaGFzaEhNQUMoaG1hY0tleSwgc2VlZCArIGtleXBhcnQwKTtcblxuICAgICAgfSkudGhlbihmdW5jdGlvbihrZXlwYXJ0MSkge1xuICAgICAgICBrZXkucHVzaChrZXlwYXJ0MSk7XG4gICAgICAgIHJldHVybiBfdGhpcy5oYXNoSE1BQyhobWFjS2V5LCBzZWVkICsga2V5cGFydDEpO1xuXG4gICAgICB9KS50aGVuKGZ1bmN0aW9uKGtleXBhcnQyKSB7XG4gICAgICAgIGtleS5wdXNoKGtleXBhcnQyKTtcbiAgICAgICAgcmV0dXJuIF90aGlzLmhhc2hITUFDKGhtYWNLZXksIHNlZWQgKyBrZXlwYXJ0Mik7XG5cbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24oa2V5cGFydDMpIHtcbiAgICAgICAga2V5LnB1c2goa2V5cGFydDMpO1xuXG4gICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by1nZW5lcmF0ZUtleXMnLCBrZXkpO1xuICAgICAgICByZXNvbHZlKGtleSk7XG5cbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tZ2VuZXJhdGVLZXlzJywgZXJyKTtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcblxuICAgICAgLy8gbG9nLmxvZyhobWFjS2V5LCBkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9pbXBvcnRSU0FzaWduS2V5KHByaXZLZXkpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgX3RoaXMuX2NyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KFxuICAgICAgICAncGtjczgnLCAvL2NhbiBiZSAnandrJyAocHVibGljIG9yIHByaXZhdGUpLCAnc3BraScgKHB1YmxpYyBvbmx5KSwgb3IgJ3BrY3M4JyAocHJpdmF0ZSBvbmx5KVxuICAgICAgICBwcml2S2V5LFxuICAgICAgICB7ICAgLy90aGVzZSBhcmUgdGhlIGFsZ29yaXRobSBvcHRpb25zXG4gICAgICAgICAgbmFtZTogJ1JTQVNTQS1QS0NTMS12MV81JyxcbiAgICAgICAgICBoYXNoOiB7bmFtZTogJ1NIQS0yNTYnfSAvL2NhbiBiZSAnU0hBLTEnLCAnU0hBLTI1NicsICdTSEEtMzg0Jywgb3IgJ1NIQS01MTInXG4gICAgICAgIH0sXG4gICAgICAgIHRydWUsIC8vd2hldGhlciB0aGUga2V5IGlzIGV4dHJhY3RhYmxlIChpLmUuIGNhbiBiZSB1c2VkIGluIGV4cG9ydEtleSlcbiAgICAgICAgWydzaWduJ10gLy8ndmVyaWZ5JyBmb3IgcHVibGljIGtleSBpbXBvcnQsICdzaWduJyBmb3IgcHJpdmF0ZSBrZXkgaW1wb3J0c1xuICAgICAgKVxuICAgICAgICAudGhlbihmdW5jdGlvbihwcml2YXRlS2V5KSB7XG4gICAgICAgIC8vcmV0dXJucyBhIHB1YmxpY0tleSAob3IgcHJpdmF0ZUtleSBpZiB5b3UgYXJlIGltcG9ydGluZyBhIHByaXZhdGUga2V5KVxuICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tX2ltcG9ydFJTQXNpZ25LZXknLCBwcml2YXRlS2V5KTtcbiAgICAgICAgICByZXNvbHZlKHByaXZhdGVLZXkpO1xuXG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgIGxvZy5lcnJvcignY3J5cHRvLV9pbXBvcnRSU0FzaWduS2V5JywgZXJyKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBfaW1wb3J0UlNBdmVyaWZ5S2V5KHB1YktleSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBfdGhpcy5fY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoXG4gICAgICAgICdzcGtpJywgLy9jYW4gYmUgJ2p3aycgKHB1YmxpYyBvciBwcml2YXRlKSwgJ3Nwa2knIChwdWJsaWMgb25seSksIG9yICdwa2NzOCcgKHByaXZhdGUgb25seSlcbiAgICAgICAgcHViS2V5LFxuICAgICAgICB7ICAgLy90aGVzZSBhcmUgdGhlIGFsZ29yaXRobSBvcHRpb25zXG4gICAgICAgICAgbmFtZTogJ1JTQVNTQS1QS0NTMS12MV81JyxcbiAgICAgICAgICBoYXNoOiB7bmFtZTogJ1NIQS0yNTYnfSAvL2NhbiBiZSAnU0hBLTEnLCAnU0hBLTI1NicsICdTSEEtMzg0Jywgb3IgJ1NIQS01MTInXG4gICAgICAgIH0sXG4gICAgICAgIHRydWUsIC8vd2hldGhlciB0aGUga2V5IGlzIGV4dHJhY3RhYmxlIChpLmUuIGNhbiBiZSB1c2VkIGluIGV4cG9ydEtleSlcbiAgICAgICAgWyd2ZXJpZnknXSAvLyd2ZXJpZnknIGZvciBwdWJsaWMga2V5IGltcG9ydCwgJ3NpZ24nIGZvciBwcml2YXRlIGtleSBpbXBvcnRzXG4gICAgICApXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uKHB1YmxpY0tleSkge1xuICAgICAgICAvL3JldHVybnMgYSBwdWJsaWNLZXkgKG9yIHByaXZhdGVLZXkgaWYgeW91IGFyZSBpbXBvcnRpbmcgYSBwcml2YXRlIGtleSlcbiAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLV9pbXBvcnRSU0F2ZXJpZnlLZXknLCBwdWJsaWNLZXkpO1xuICAgICAgICAgIHJlc29sdmUocHVibGljS2V5KTtcblxuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICBsb2cuZXJyb3IoJ2NyeXB0by1faW1wb3J0UlNBdmVyaWZ5S2V5JywgZXJyKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBfaW1wb3J0UlNBZW5jcnlwdEtleShwdWJLZXkpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgX3RoaXMuX2NyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KFxuICAgICAgICAnc3BraScsIC8vY2FuIGJlICdqd2snIChwdWJsaWMgb3IgcHJpdmF0ZSksICdzcGtpJyAocHVibGljIG9ubHkpLCBvciAncGtjczgnIChwcml2YXRlIG9ubHkpXG4gICAgICAgIHB1YktleSxcbiAgICAgICAgeyAgIC8vdGhlc2UgYXJlIHRoZSBhbGdvcml0aG0gb3B0aW9uc1xuICAgICAgICAgIG5hbWU6ICdSU0EtT0FFUCcsXG4gICAgICAgICAgaGFzaDoge25hbWU6ICdTSEEtMjU2J30gLy9jYW4gYmUgJ1NIQS0xJywgJ1NIQS0yNTYnLCAnU0hBLTM4NCcsIG9yICdTSEEtNTEyJ1xuICAgICAgICB9LFxuICAgICAgICB0cnVlLCAvL3doZXRoZXIgdGhlIGtleSBpcyBleHRyYWN0YWJsZSAoaS5lLiBjYW4gYmUgdXNlZCBpbiBleHBvcnRLZXkpXG4gICAgICAgIFsnZW5jcnlwdCddIC8vJ2VuY3J5cHQnIG9yICd3cmFwS2V5JyBmb3IgcHVibGljIGtleSBpbXBvcnQgb3JcbiAgICAgICAgLy8nZGVjcnlwdCcgb3IgJ3Vud3JhcEtleScgZm9yIHByaXZhdGUga2V5IGltcG9ydHNcbiAgICAgIClcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24ocHVibGljS2V5KSB7XG4gICAgICAgIC8vcmV0dXJucyBhIHB1YmxpY0tleSAob3IgcHJpdmF0ZUtleSBpZiB5b3UgYXJlIGltcG9ydGluZyBhIHByaXZhdGUga2V5KVxuICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tX2ltcG9ydFJTQWVuY3J5cHRLZXknLCBwdWJsaWNLZXkpO1xuICAgICAgICAgIHJlc29sdmUocHVibGljS2V5KTtcblxuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICBsb2cuZXJyb3IoJ2NyeXB0by1faW1wb3J0UlNBZW5jcnlwdEtleScsIGVyci5uYW1lKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBfaW1wb3J0UlNBZGVjcnlwdEtleShwcml2S2V5KSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIF90aGlzLl9jcnlwdG8uc3VidGxlLmltcG9ydEtleShcbiAgICAgICAgJ3BrY3M4JywgLy9jYW4gYmUgJ2p3aycgKHB1YmxpYyBvciBwcml2YXRlKSwgJ3Nwa2knIChwdWJsaWMgb25seSksIG9yICdwa2NzOCcgKHByaXZhdGUgb25seSlcbiAgICAgICAgcHJpdktleSxcbiAgICAgICAgeyAgIC8vdGhlc2UgYXJlIHRoZSBhbGdvcml0aG0gb3B0aW9uc1xuICAgICAgICAgIG5hbWU6ICdSU0EtT0FFUCcsXG4gICAgICAgICAgaGFzaDoge25hbWU6ICdTSEEtMjU2J30gLy9jYW4gYmUgJ1NIQS0xJywgJ1NIQS0yNTYnLCAnU0hBLTM4NCcsIG9yICdTSEEtNTEyJ1xuICAgICAgICB9LFxuICAgICAgICB0cnVlLCAvL3doZXRoZXIgdGhlIGtleSBpcyBleHRyYWN0YWJsZSAoaS5lLiBjYW4gYmUgdXNlZCBpbiBleHBvcnRLZXkpXG4gICAgICAgIFsnZGVjcnlwdCddIC8vJ2VuY3J5cHQnIG9yICd3cmFwS2V5JyBmb3IgcHVibGljIGtleSBpbXBvcnQgb3JcbiAgICAgICAgLy8nZGVjcnlwdCcgb3IgJ3Vud3JhcEtleScgZm9yIHByaXZhdGUga2V5IGltcG9ydHNcbiAgICAgIClcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24ocHJpdmF0ZUtleSkge1xuICAgICAgICAvL3JldHVybnMgYSBwdWJsaWNLZXkgKG9yIHByaXZhdGVLZXkgaWYgeW91IGFyZSBpbXBvcnRpbmcgYSBwcml2YXRlIGtleSlcbiAgICAgICAgLy8gbG9nLmxvZygnY3J5cHRvLV9pbXBvcnRSU0FkZWNyeXB0S2V5JywgcHJpdmF0ZUtleSk7XG4gICAgICAgICAgcmVzb2x2ZShwcml2YXRlS2V5KTtcblxuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICBsb2cuZXJyb3IoJ2NyeXB0by1faW1wb3J0UlNBZGVjcnlwdEtleScsIGVycik7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgY29uY2F0UE1Td2l0aFJhbmRvbXMocG1zLCB0b1JhbmRvbSwgZnJvbVJhbmRvbSkge1xuXG4gICAgbGV0IGZpbmFsS2V5ID0gbmV3IFVpbnQ4QXJyYXkocG1zLmxlbmd0aCArIHRvUmFuZG9tLmxlbmd0aCArIGZyb21SYW5kb20ubGVuZ3RoKTtcblxuICAgIC8vIGFkZCBQcmVtYXN0ZXJLZXlcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBtcy5sZW5ndGg7IGkrKykge1xuICAgICAgZmluYWxLZXlbaV0gPSBwbXNbaV07XG4gICAgfVxuXG4gICAgLy9hZGQgdG8gcmFuZG9tXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b1JhbmRvbS5sZW5ndGg7IGkrKykge1xuICAgICAgZmluYWxLZXlbaSArIHBtcy5sZW5ndGhdID0gcG1zW2ldO1xuICAgIH1cblxuICAgIC8vYWRkIGZyb20gcmFuZG9tXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmcm9tUmFuZG9tLmxlbmd0aDsgaSsrKSB7XG4gICAgICBmaW5hbEtleVtpICsgcG1zLmxlbmd0aCArIHRvUmFuZG9tLmxlbmd0aF0gPSBwbXNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbmFsS2V5O1xuICB9XG5cbiAgX2dlbmVyYXRlMjU2Yml0S2V5KCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgbGV0IGFycmF5ID0gbmV3ICBVaW50OEFycmF5KDMyKTtcbiAgICBfdGhpcy5fY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSk7XG5cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgKiBpbXBvcnRzIHRoZSBzZWNyZXQgdG8gdGhlIEhNQUMgZnVuY3Rpb25cbiAgKiBAcGFyYW0gIHtieXRlQXJyYXl9ICAgYXJyYXlCdWZmZXIgICAgIGJ5dGVzIHRvIGltcG9ydCBhcyBrZXlcbiAgKiBAcmV0dXJuIHtKU09OfSAgICAgICBrZXkgICAgICAgICAgICAgIGtleSByZWFkeSB0byBiZSB1c2VkIGluIHRoZSBITUFDIGNyeXB0b2dyYXBoaWMgZnVuY3Rpb25cbiAgKi9cbiAgX2ltcG9ydEhNQUNrZXkoYXJyYXlCdWZmZXIpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICBfdGhpcy5fZGlnZXN0KGFycmF5QnVmZmVyKS50aGVuKChrZXkpID0+IHtcblxuICAgICAgICBfdGhpcy5fY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoXG4gICAgICAgICAgJ3JhdycsIC8vY2FuIGJlICdqd2snIG9yICdyYXcnXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHsgICAvL3RoaXMgaXMgdGhlIGFsZ29yaXRobSBvcHRpb25zXG4gICAgICAgICAgICBuYW1lOiAnSE1BQycsXG4gICAgICAgICAgICBoYXNoOiB7bmFtZTogJ1NIQS0yNTYnfSwgLy9jYW4gYmUgJ1NIQS0xJywgJ1NIQS0yNTYnLCAnU0hBLTM4NCcsIG9yICdTSEEtNTEyJ1xuICAgICAgICAgICAgbGVuZ3RoOiAyNTYgLy9vcHRpb25hbCwgaWYgeW91IHdhbnQgeW91ciBrZXkgbGVuZ3RoIHRvIGRpZmZlciBmcm9tIHRoZSBoYXNoIGZ1bmN0aW9uJ3MgYmxvY2sgbGVuZ3RoXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0cnVlLCAvL3doZXRoZXIgdGhlIGtleSBpcyBleHRyYWN0YWJsZSAoaS5lLiBjYW4gYmUgdXNlZCBpbiBleHBvcnRLZXkpXG4gICAgICAgICAgWydzaWduJywgJ3ZlcmlmeSddIC8vY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiAnc2lnbicgYW5kICd2ZXJpZnknXG4gICAgICAgICkudGhlbihmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICAvL3JldHVybnMgdGhlIHN5bW1ldHJpYyBrZXlcbiAgICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8tX2ltcG9ydEhNQUNrZXknLCBrZXkpO1xuICAgICAgICAgIHJlc29sdmUoa2V5KTtcbiAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgX2RpZ2VzdCh2YWx1ZSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBfdGhpcy5fY3J5cHRvLnN1YnRsZS5kaWdlc3QoXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnU0hBLTI1NidcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWUgLy9UaGUgZGF0YSB5b3Ugd2FudCB0byBoYXNoIGFzIGFuIEFycmF5QnVmZmVyXG4gICAgICApXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uKGhhc2gpIHtcbiAgICAgICAgLy9yZXR1cm5zIHRoZSBoYXNoIGFzIGFuIEFycmF5QnVmZmVyXG4gICAgICAgIC8vIGxvZy5sb2coJ2NyeXB0by1kaWdlc3QnLCBuZXcgVWludDhBcnJheShoYXNoKSk7XG4gICAgICAgICAgcmVzb2x2ZShuZXcgVWludDhBcnJheShoYXNoKSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICBsb2cuZXJyb3IoZXJyKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfVxuXG4gIF9pbXBvcnRBRVNrZXkoYXJyYXlCdWZmZXIpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIF90aGlzLl9jcnlwdG8uc3VidGxlLmltcG9ydEtleShcbiAgICAgICAgJ3JhdycsIC8vY2FuIGJlICdqd2snIG9yICdyYXcnXG4gICAgICAgIGFycmF5QnVmZmVyLFxuICAgICAgICB7ICAgLy90aGlzIGlzIHRoZSBhbGdvcml0aG0gb3B0aW9uc1xuICAgICAgICAgIG5hbWU6ICdBRVMtQ0JDJ1xuICAgICAgICB9LFxuICAgICAgICB0cnVlLCAvL3doZXRoZXIgdGhlIGtleSBpcyBleHRyYWN0YWJsZSAoaS5lLiBjYW4gYmUgdXNlZCBpbiBleHBvcnRLZXkpXG4gICAgICAgIFsnZW5jcnlwdCcsICdkZWNyeXB0J10gLy9jYW4gYmUgJ2VuY3J5cHQnLCAnZGVjcnlwdCcsICd3cmFwS2V5Jywgb3IgJ3Vud3JhcEtleSdcbiAgICAgIClcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIC8vcmV0dXJucyB0aGUgc3ltbWV0cmljIGtleVxuICAgICAgICAvLyBsb2cubG9nKCdjcnlwdG8taW1wb3J0QUVTa2V5Jywga2V5KTtcbiAgICAgICAgICByZXNvbHZlKGtleSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICBsb2cuZXJyb3IoJ2NyeXB0by1pbXBvcnRBRVNrZXknLCBlcnIpO1xuICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIF9zaGEyNTYoc3RyKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBsZXQgYnVmZmVyID0gbmV3IFRleHRFbmNvZGVyKCd1dGYtOCcpLmVuY29kZShzdHIpO1xuICAgIHJldHVybiBfdGhpcy5fY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ1NIQS0yNTYnLCBidWZmZXIpLnRoZW4oZnVuY3Rpb24oaGFzaCkge1xuICAgICAgcmV0dXJuIF90aGlzLl9oZXgoaGFzaCk7XG4gICAgfSk7XG4gIH1cblxuICBfaGV4KGJ1ZmZlcikge1xuICAgIGxldCBoZXhDb2RlcyA9IFtdO1xuICAgIGxldCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aWV3LmJ5dGVMZW5ndGg7IGkgKz0gNCkge1xuICAgICAgLy8gVXNpbmcgZ2V0VWludDMyIHJlZHVjZXMgdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIG5lZWRlZCAod2UgcHJvY2VzcyA0IGJ5dGVzIGVhY2ggdGltZSlcbiAgICAgIGxldCB2YWx1ZSA9IHZpZXcuZ2V0VWludDMyKGkpXG5cbiAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKDE2KVxuXG4gICAgICBsZXQgcGFkZGluZyA9ICcwMDAwMDAwMCdcbiAgICAgIGxldCBwYWRkZWRWYWx1ZSA9IChwYWRkaW5nICsgc3RyaW5nVmFsdWUpLnNsaWNlKC1wYWRkaW5nLmxlbmd0aClcbiAgICAgIGhleENvZGVzLnB1c2gocGFkZGVkVmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEpvaW4gYWxsIHRoZSBoZXggc3RyaW5ncyBpbnRvIG9uZVxuICAgIHJldHVybiBoZXhDb2Rlcy5qb2luKCcnKTtcbiAgfVxuXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ3J5cHRvO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9jcnlwdG9NYW5hZ2VyL0NyeXB0by5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTs7Ozs7QUFBQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBOzs7OztBQUtBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBREE7QUFJQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQURBO0FBSUE7QUFMQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBREE7QUFJQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQURBO0FBSUE7QUFDQTtBQU5BO0FBU0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBVEE7QUFZQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRkE7QUFLQTtBQU5BO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFEQTtBQUlBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQURBO0FBSUE7QUFDQTtBQU5BO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQVRBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFSQTtBQVdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFSQTtBQVdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQVRBO0FBWUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBVEE7QUFZQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFUQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBREE7QUFEQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBREE7QUFJQTtBQVBBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///493\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encodeUTF8 = encodeUTF8;\nexports.decodeUTF8 = decodeUTF8;\n// Marshals a string to Uint8Array.\nfunction encodeUTF8(s) {\n var i = 0;\n var bytes = new Uint8Array(s.length * 4);\n for (var ci = 0; ci != s.length; ci++) {\n var c = s.charCodeAt(ci);\n if (c < 128) {\n bytes[i++] = c;\n continue;\n }\n if (c < 2048) {\n bytes[i++] = c >> 6 | 192;\n } else {\n if (c > 0xd7ff && c < 0xdc00) {\n if (++ci == s.length) throw 'UTF-8 encode: incomplete surrogate pair';\n var c2 = s.charCodeAt(ci);\n if (c2 < 0xdc00 || c2 > 0xdfff) throw 'UTF-8 encode: second char code 0x' + c2.toString(16) + ' at index ' + ci + ' in surrogate pair out of range';\n c = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n bytes[i++] = c >> 18 | 240;\n bytes[i++] = c >> 12 & 63 | 128;\n } else {\n // c <= 0xffff\n bytes[i++] = c >> 12 | 224;\n }\n bytes[i++] = c >> 6 & 63 | 128;\n }\n bytes[i++] = c & 63 | 128;\n }\n return bytes.subarray(0, i);\n}\n\n// Unmarshals an Uint8Array to string.\nfunction decodeUTF8(bytes) {\n var s = '';\n var i = 0;\n while (i < bytes.length) {\n var c = bytes[i++];\n if (c > 127) {\n if (c > 191 && c < 224) {\n if (i >= bytes.length) throw 'UTF-8 decode: incomplete 2-byte sequence';\n c = (c & 31) << 6 | bytes[i] & 63;\n } else if (c > 223 && c < 240) {\n if (i + 1 >= bytes.length) throw 'UTF-8 decode: incomplete 3-byte sequence';\n c = (c & 15) << 12 | (bytes[i] & 63) << 6 | bytes[++i] & 63;\n } else if (c > 239 && c < 248) {\n if (i + 2 >= bytes.length) throw 'UTF-8 decode: incomplete 4-byte sequence';\n c = (c & 7) << 18 | (bytes[i] & 63) << 12 | (bytes[++i] & 63) << 6 | bytes[++i] & 63;\n } else {\n throw 'UTF-8 decode: unknown multibyte start 0x' + c.toString(16) + ' at index ' + (i - 1);\n }\n ++i;\n }\n\n if (c <= 0xffff) {\n s += String.fromCharCode(c);\n } else if (c <= 0x10ffff) {\n c -= 0x10000;\n s += String.fromCharCode(c >> 10 | 0xd800);\n s += String.fromCharCode(c & 0x3FF | 0xdc00);\n } else {\n throw 'UTF-8 decode: code point 0x' + c.toString(16) + ' exceeds UTF-16 reach';\n }\n }\n return s;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDk0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9jcnlwdG9NYW5hZ2VyL3V0ZjguanM/M2IxOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBNYXJzaGFscyBhIHN0cmluZyB0byBVaW50OEFycmF5LlxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVVURjgocykge1xuICB2YXIgaSA9IDA7XG4gIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KHMubGVuZ3RoICogNCk7XG4gIGZvciAodmFyIGNpID0gMDsgY2kgIT0gcy5sZW5ndGg7IGNpKyspIHtcbiAgICB2YXIgYyA9IHMuY2hhckNvZGVBdChjaSk7XG4gICAgaWYgKGMgPCAxMjgpIHtcbiAgICAgIGJ5dGVzW2krK10gPSBjO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChjIDwgMjA0OCkge1xuICAgICAgYnl0ZXNbaSsrXSA9IGMgPj4gNiB8IDE5MjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGMgPiAweGQ3ZmYgJiYgYyA8IDB4ZGMwMCkge1xuICAgICAgICBpZiAoKytjaSA9PSBzLmxlbmd0aCkgdGhyb3cgJ1VURi04IGVuY29kZTogaW5jb21wbGV0ZSBzdXJyb2dhdGUgcGFpcic7XG4gICAgICAgIHZhciBjMiA9IHMuY2hhckNvZGVBdChjaSk7XG4gICAgICAgIGlmIChjMiA8IDB4ZGMwMCB8fCBjMiA+IDB4ZGZmZikgdGhyb3cgJ1VURi04IGVuY29kZTogc2Vjb25kIGNoYXIgY29kZSAweCcgKyBjMi50b1N0cmluZygxNikgKyAnIGF0IGluZGV4ICcgKyBjaSArICcgaW4gc3Vycm9nYXRlIHBhaXIgb3V0IG9mIHJhbmdlJztcbiAgICAgICAgYyA9IDB4MTAwMDAgKyAoKGMgJiAweDAzZmYpIDw8IDEwKSArIChjMiAmIDB4MDNmZik7XG4gICAgICAgIGJ5dGVzW2krK10gPSBjID4+IDE4IHwgMjQwO1xuICAgICAgICBieXRlc1tpKytdID0gYyA+PiAxMiAmIDYzIHwgMTI4O1xuICAgICAgfSBlbHNlIHsgLy8gYyA8PSAweGZmZmZcbiAgICAgICAgYnl0ZXNbaSsrXSA9IGMgPj4gMTIgfCAyMjQ7XG4gICAgICB9XG4gICAgICBieXRlc1tpKytdID0gYyA+PiA2ICYgNjMgfCAxMjg7XG4gICAgfVxuICAgIGJ5dGVzW2krK10gPSBjICYgNjMgfCAxMjg7XG4gIH1cbiAgcmV0dXJuIGJ5dGVzLnN1YmFycmF5KDAsIGkpO1xufVxuXG4vLyBVbm1hcnNoYWxzIGFuIFVpbnQ4QXJyYXkgdG8gc3RyaW5nLlxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVVURjgoYnl0ZXMpIHtcbiAgdmFyIHMgPSAnJztcbiAgdmFyIGkgPSAwO1xuICB3aGlsZSAoaSA8IGJ5dGVzLmxlbmd0aCkge1xuICAgIHZhciBjID0gYnl0ZXNbaSsrXTtcbiAgICBpZiAoYyA+IDEyNykge1xuICAgICAgaWYgKGMgPiAxOTEgJiYgYyA8IDIyNCkge1xuICAgICAgICBpZiAoaSA+PSBieXRlcy5sZW5ndGgpIHRocm93ICdVVEYtOCBkZWNvZGU6IGluY29tcGxldGUgMi1ieXRlIHNlcXVlbmNlJztcbiAgICAgICAgYyA9IChjICYgMzEpIDw8IDYgfCBieXRlc1tpXSAmIDYzO1xuICAgICAgfSBlbHNlIGlmIChjID4gMjIzICYmIGMgPCAyNDApIHtcbiAgICAgICAgaWYgKGkgKyAxID49IGJ5dGVzLmxlbmd0aCkgdGhyb3cgJ1VURi04IGRlY29kZTogaW5jb21wbGV0ZSAzLWJ5dGUgc2VxdWVuY2UnO1xuICAgICAgICBjID0gKGMgJiAxNSkgPDwgMTIgfCAoYnl0ZXNbaV0gJiA2MykgPDwgNiB8IGJ5dGVzWysraV0gJiA2MztcbiAgICAgIH0gZWxzZSBpZiAoYyA+IDIzOSAmJiBjIDwgMjQ4KSB7XG4gICAgICAgIGlmIChpICsgMiA+PSBieXRlcy5sZW5ndGgpIHRocm93ICdVVEYtOCBkZWNvZGU6IGluY29tcGxldGUgNC1ieXRlIHNlcXVlbmNlJztcbiAgICAgICAgYyA9IChjICYgNykgPDwgMTggfCAoYnl0ZXNbaV0gJiA2MykgPDwgMTIgfCAoYnl0ZXNbKytpXSAmIDYzKSA8PCA2IHwgYnl0ZXNbKytpXSAmIDYzO1xuICAgICAgfSBlbHNlIHsgdGhyb3cgJ1VURi04IGRlY29kZTogdW5rbm93biBtdWx0aWJ5dGUgc3RhcnQgMHgnICsgYy50b1N0cmluZygxNikgKyAnIGF0IGluZGV4ICcgKyAoaSAtIDEpOyB9XG4gICAgICArK2k7XG4gICAgfVxuXG4gICAgaWYgKGMgPD0gMHhmZmZmKSB7IHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTsgfSBlbHNlIGlmIChjIDw9IDB4MTBmZmZmKSB7XG4gICAgICBjIC09IDB4MTAwMDA7XG4gICAgICBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyA+PiAxMCB8IDB4ZDgwMCk7XG4gICAgICBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyAmIDB4M0ZGIHwgMHhkYzAwKTtcbiAgICB9IGVsc2UgeyB0aHJvdyAnVVRGLTggZGVjb2RlOiBjb2RlIHBvaW50IDB4JyArIGMudG9TdHJpbmcoMTYpICsgJyBleGNlZWRzIFVURi0xNiByZWFjaCc7IH1cbiAgfVxuICByZXR1cm4gcztcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvY3J5cHRvTWFuYWdlci91dGY4LmpzIl0sIm1hcHBpbmdzIjoiOzs7OztBQUNBO0FBOEJBO0FBL0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///494\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = __webpack_require__(98);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(11);\n\nvar _AddressAllocation = __webpack_require__(100);\n\nvar _AddressAllocation2 = _interopRequireDefault(_AddressAllocation);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('loader'); // Log System\n\nvar Loader = function () {\n function Loader(runtimeURL, runtimeConfiguration, runtimeDescriptorsInstance) {\n (0, _classCallCheck3.default)(this, Loader);\n\n if (!runtimeConfiguration) throw Error('[Runtime.Loader] The descriptor need to know the runtime configuration');\n if (!runtimeDescriptorsInstance) throw Error('[Runtime.Loader] The descriptor need to know the runtime Descriptor instance');\n\n this.log = log;\n\n this.runtimeConfiguration = runtimeConfiguration;\n this.descriptors = runtimeDescriptorsInstance;\n }\n\n /**\n * Set runtime url\n * @param {string} value runtimeURL\n */\n\n\n (0, _createClass3.default)(Loader, [{\n key: 'loadHyperty',\n\n\n /**\n * Deploy Hyperty from Catalogue URL\n *\n * @see https://github.com/reTHINK-project/specs/tree/master/datamodel/core/address\n *\n * @param {URL.HypertyCatalogueURL} hypertyCatalogueURL - The Catalogue URL used to identify descriptors in the Catalogue.\n * @param {boolean|URL.HypertyURL} [reuseURL=false] reuseURL - reuseURL is used to reuse the hypertyURL previously registred, by default the reuse is disabled;\n * @param {URL} appURL - the app url origin address;\n * @param {object} IdpConstraint - constraints to be used when selecting the identity to be associated with the Hyperty including origin, idp, and idHint.\n * @returns {Promise} this is Promise and returns true if all components are loaded with success or an error if someone fails.\n *\n * @memberOf Loader\n */\n value: function loadHyperty(hypertyCatalogueURL) {\n var reuseURL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var _this = this;\n\n var IdpConstraint = arguments[2];\n var appURL = arguments[3];\n\n\n if (!this._readyToUse()) return false;\n if (!hypertyCatalogueURL) throw new Error('[Runtime.Loader] Hyperty descriptor url parameter is needed');\n\n return new _promise2.default(function (resolve, reject) {\n\n var _hypertyURL = void 0;\n var _hypertySandbox = void 0;\n var _hypertyDescriptor = void 0;\n var _hypertySourcePackage = void 0;\n var haveError = false;\n\n var errorReason = function errorReason(reason) {\n log.info('[Runtime.Loader] Something failed on the deploy hyperty: ', reason);\n reject(reason);\n };\n\n var handleError = function handleError(reason) {\n haveError = true;\n reject(reason);\n };\n\n // Get Hyperty descriptor\n // TODO: the request Module should be changed,\n // because at this moment it is incompatible with nodejs;\n // Probably we need to pass a factory like we do for sandboxes;\n log.info('[Runtime.Loader] ------------------ Hyperty ------------------------');\n log.info('[Runtime.Loader] Get hyperty descriptor for :', hypertyCatalogueURL);\n return _this.descriptors.getHypertyDescriptor(hypertyCatalogueURL).then(function (hypertyDescriptor) {\n // at this point, we have completed \"step 2 and 3\" as shown in https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md\n log.info('[Runtime.Loader] 1: return hyperty descriptor');\n\n // hyperty contains the full path of the catalogue URL, e.g.\n // catalogue.rethink.eu/.well-known/..........\n _hypertyDescriptor = hypertyDescriptor;\n\n var sourcePackageURL = hypertyDescriptor.sourcePackageURL;\n\n if (sourcePackageURL === '/sourcePackage') {\n return hypertyDescriptor.sourcePackage;\n }\n\n // Get the hyperty source code\n return _this.runtimeCatalogue.getSourcePackageFromURL(sourcePackageURL);\n }, handleError).then(function (sourcePackage) {\n if (haveError) return false;\n\n log.info('[Runtime.Loader] 2: return hyperty source code');\n\n // at this point, we have completed \"step 4 and 5\" as shown in https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md\n\n _hypertySourcePackage = sourcePackage;\n\n //\n // steps 6 -- 9 are skipped.\n // TODO: on release of core 0.2;\n // TODO: Promise to check the policy engine\n\n // mock-up code;\n // temporary code, only\n var policy = true;\n\n return policy;\n }, handleError).then(function (policyResult) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 3: return policy engine result' + policyResult);\n\n // we have completed step 6 to 9 of https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md right now.\n //\n // Steps 6 -- 9\n // As a result of the sipped steps, we know at this point if we execute\n // inSameSandbox or not.\n //\n\n // For testing, just assume we execute in same Sandbox.\n var inSameSandbox = true;\n var sandbox = void 0;\n\n if (inSameSandbox) {\n\n // this don't need be a Promise;\n sandbox = _this.registry.getAppSandbox();\n\n // we have completed step 11 here.\n } else {\n\n var domain = (0, _utils.divideURL)(hypertyCatalogueURL).domain;\n\n // getSandbox, this will return a promise;\n sandbox = _this.registry.getSandbox(domain);\n }\n\n // this will return the sandbox or one promise to getSandbox;\n return sandbox;\n }, handleError).then(function (sandbox) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 4: return the sandbox', sandbox);\n\n // Return the sandbox indepentely if it running in the same sandbox or not\n // we have completed step 14 here.\n return sandbox;\n }, function (reason) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 4.1: Try to register a new sandbox');\n\n // check if the sandbox is registed for this hyperty descriptor url;\n // Make Steps xxx --- xxx\n // Instantiate the Sandbox\n\n var hypertyCapabilities = {};\n if (_hypertyDescriptor && _hypertyDescriptor.hasOwnProperty('capabilities')) {\n hypertyCapabilities = _hypertyDescriptor.stubCapabilities;\n }\n\n return _this._runtimeFactory.createSandbox(hypertyCapabilities).then(function (sandbox) {\n\n sandbox.addListener('*', function (msg) {\n _this.messageBus.postMessage(msg);\n });\n\n return sandbox;\n });\n }, handleError).then(function (sandbox) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 5: return sandbox and register');\n\n _hypertySandbox = sandbox;\n\n var numberOfAddresses = 1;\n //debugger;\n return _this._addressAllocation.create(_this._registry._domain, numberOfAddresses, _hypertyDescriptor, 'hyperty', reuseURL);\n }, handleError).then(function (addresses) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 6: return the addresses for the hyperty', addresses);\n\n // Register hyperty\n return _this.registry.registerHyperty(_hypertySandbox, hypertyCatalogueURL, _hypertyDescriptor, addresses, IdpConstraint);\n }, handleError).then(function (registrationResult) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 7: registration result', registrationResult);\n\n // we have completed step 16 of https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md right now.\n _hypertyURL = registrationResult.url;\n\n // Extend original hyperty configuration;\n var configuration = {};\n if (!(0, _utils.emptyObject)(_hypertyDescriptor.configuration)) {\n try {\n configuration = (0, _assign2.default)({}, JSON.parse(_hypertyDescriptor.configuration));\n } catch (e) {\n configuration = _hypertyDescriptor.configuration;\n }\n }\n configuration.runtimeURL = _this._runtimeURL;\n\n if (registrationResult.p2pHandler) {\n configuration.p2pHandler = registrationResult.p2pHandler;\n configuration.p2pRequester = registrationResult.p2pRequester;\n }\n\n // We will deploy the component - step 17 of https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md right now.\n\n try {\n return _hypertySandbox.deployComponent(_hypertySourcePackage.sourceCode, _hypertyURL, configuration);\n } catch (e) {\n log.info('[Runtime.Loader] Error on deploy component:', e);\n reject(e);\n }\n }, handleError).then(function (deployComponentStatus) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 8: Deploy component status for hyperty: ', deployComponentStatus);\n\n // we have completed step 19 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md right now.\n\n // Add the message bus listener to the appSandbox or hypertSandbox;\n _this.messageBus.addListener(_hypertyURL, function (msg) {\n _hypertySandbox.postMessage(msg);\n });\n\n // we have completed step 20 of https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md right now.\n var hyperty = {\n runtimeHypertyURL: _hypertyURL,\n status: deployComponentStatus\n };\n\n log.info('[Runtime.Loader] Hyperty: ', hyperty);\n resolve(hyperty);\n\n // we have completed step 21 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-hyperty.md right now.\n log.info('[Runtime.Loader] ------------------ END ------------------------');\n }, handleError).catch(errorReason);\n });\n }\n\n /**\n * Deploy Stub from Catalogue URL or domain url\n * @param {URL.URL} protostubURL Catalogue URL for the ProtoStub to be loaded or the domain to be target by the protostub\n * @param {Object} p2pConfig configuration of p2p\n */\n\n }, {\n key: 'loadStub',\n value: function loadStub(protostubURL, p2pConfig) {\n var _this2 = this;\n\n if (!this._readyToUse()) return false;\n if (!protostubURL) throw new Error('[Runtime.Loader.loadStub]ProtoStub descriptor url parameter is needed');\n\n return new _promise2.default(function (resolve, reject) {\n\n // to analyse if domain for p2pHandlers should be something else and not the default domain itself\n\n var domain = (0, _utils.divideURL)(protostubURL).domain;\n\n if (!domain) {\n domain = protostubURL;\n }\n\n var _stubSandbox = void 0;\n var _stubDescriptor = void 0;\n var _runtimeProtoStubURL = void 0;\n var _stubSourcePackage = void 0;\n var haveError = false;\n var stubId = void 0;\n\n var errorReason = function errorReason(reason) {\n log.info('[Runtime.Loader.loadStub]Something failed on the deploy of protocolstub: ', reason);\n reject(reason);\n };\n\n var handleError = function handleError(reason) {\n haveError = true;\n reject(reason);\n };\n\n // Discover Protocol Stub\n var discoverStub = void 0;\n var isP2PHandler = false;\n var isP2PRequester = false;\n var stubCapabilities = {};\n\n log.info('[Runtime.Loader.loadStub] starting loading for ', protostubURL, ' with p2pconfig ', p2pConfig);\n log.info('[Runtime.Loader.loadStub]Discover or Create a new ProtoStub for domain: ', domain);\n\n // step 2 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n try {\n if (p2pConfig) {\n\n if (p2pConfig.hasOwnProperty('isHandlerStub') && p2pConfig.isHandlerStub) {\n // step 6 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n isP2PHandler = true;\n stubId = _this2.runtimeURL;\n discoverStub = _this2.registry.discoverP2PStub();\n } else {\n isP2PRequester = true;\n var p2pHandlerRuntimeURL = p2pConfig.remoteRuntimeURL;\n stubId = p2pHandlerRuntimeURL;\n\n // step 4 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n\n // step 5 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n discoverStub = _this2.registry.discoverP2PStub(p2pHandlerRuntimeURL);\n }\n } else {\n // step 3 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n stubId = domain;\n discoverStub = _this2.registry.discoverProtostub(domain);\n }\n\n // Is registed?\n log.info('[Runtime.Loader.loadStub]1. Proto Stub Discovered for ', protostubURL, ': ', discoverStub);\n\n // step 23 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n resolve(discoverStub);\n log.info(' [Runtime.Loader]------------------- END ---------------------------\\n');\n } catch (reason) {\n\n // is not registed?\n log.info('[Runtime.Loader.loadStub]1. Proto Stub not found ' + reason);\n\n // step 8 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n _this2.descriptors.getStubDescriptor(protostubURL).then(function (stubDescriptor) {\n\n if (haveError) return false;\n log.info('[Runtime.Loader.loadStub]2. return the ProtoStub descriptor');\n\n // step 9 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n _stubDescriptor = stubDescriptor;\n\n var sourcePackageURL = stubDescriptor.sourcePackageURL;\n\n if (sourcePackageURL === '/sourcePackage') {\n return stubDescriptor.sourcePackage;\n }\n\n // step 10 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n return _this2.runtimeCatalogue.getSourcePackageFromURL(sourcePackageURL);\n }, handleError).catch(errorReason).then(function (stubSourcePackage) {\n if (haveError) return false;\n\n // According to debug, it seems RuntimeCatalogue does not support yet constraints. It appears empty!!!!\n\n if (_stubDescriptor && _stubDescriptor.constraints) {\n stubCapabilities = _stubDescriptor.constraints;\n }\n\n // step 11 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n log.info('[Runtime.Loader.loadStub]3. return the ProtoStub Source Code');\n _stubSourcePackage = stubSourcePackage;\n\n // this will return the sandbox or one promise to getSandbox;\n // step 12 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n return _this2.registry.getSandbox(domain, stubCapabilities);\n }).then(function (stubSandbox) {\n if (haveError) return false;\n\n // step 15 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n log.info('[Runtime.Loader.loadStub]4. if the sandbox is registered then return the sandbox ', stubSandbox);\n\n _stubSandbox = stubSandbox;\n return stubSandbox;\n }).catch(function (reason) {\n if (haveError) return false;\n\n // step 13 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n log.info('[Runtime.Loader.loadStub]5. Sandbox was not found, creating a new one ', reason);\n\n // check if the sandbox is registed for this stub descriptor url;\n\n\n // step 14 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n return _this2._runtimeFactory.createSandbox(stubCapabilities).then(function (sandbox) {\n sandbox.addListener('*', function (msg) {\n _this2.messageBus.postMessage(msg);\n });\n\n return sandbox;\n });\n }).then(function (sandbox) {\n if (haveError) return false;\n\n // step 16 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n log.info('[Runtime.Loader.loadStub]6. return the sandbox instance and register', sandbox, 'to domain ', domain);\n\n _stubSandbox = sandbox;\n\n // we need register stub on registry - step xxx https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n return _this2.registry.registerStub(_stubSandbox, stubId, p2pConfig, protostubURL, _stubDescriptor);\n }, handleError).then(function (runtimeProtoStub) {\n if (haveError) return false;\n\n // step 23 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n log.info('[Runtime.Loader.loadStub] 7. return the runtime protostub url: ', runtimeProtoStub);\n\n _runtimeProtoStubURL = runtimeProtoStub.url;\n\n // Extend original hyperty configuration;\n var configuration = {};\n if (!(0, _utils.emptyObject)(_stubDescriptor.configuration)) {\n try {\n configuration = (0, _assign2.default)({}, JSON.parse(_stubDescriptor.configuration));\n } catch (e) {\n configuration = _stubDescriptor.configuration;\n }\n }\n\n if (p2pConfig) {\n try {\n configuration = (0, _assign2.default)(configuration, JSON.parse(p2pConfig));\n } catch (e) {\n configuration = (0, _assign2.default)(configuration, p2pConfig);\n }\n }\n\n // required for protostub session\n\n configuration.runtimeURL = _this2._runtimeURL;\n\n // step 24 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n try {\n // step 26 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n log.info('[Runtime.Loader.loadStub] 8: adding sandbox listener to protostubURL : ', _runtimeProtoStubURL);\n\n // step 27 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n // Add the message bus listener\n _this2.messageBus.addListener(_runtimeProtoStubURL, function (msg) {\n _stubSandbox.postMessage(msg);\n });\n\n return _stubSandbox.deployComponent(_stubSourcePackage.sourceCode, _runtimeProtoStubURL, configuration);\n } catch (e) {\n log.error('[Runtime.Loader.loadStub] Error on deploy component:', e);\n reject(e);\n }\n }, handleError).then(function () {\n if (haveError) return false;\n\n // step 28 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n var stub = void 0;\n if (p2pConfig) {\n log.log('[Runtime.Loader.loadStub] p2pConfig: ', p2pConfig);\n\n if (p2pConfig.hasOwnProperty('isHandlerStub')) stub = _this2.registry.p2pHandlerStub[_this2._runtimeURL];\n if (p2pConfig.hasOwnProperty('p2pRequesterStub')) stub = _this2.registry.p2pRequesterStub[p2pConfig.remoteRuntimeURL];\n } else {\n stub = _this2.registry.protostubsList[domain];\n }\n\n log.log('[Runtime.Loader.loadStub] Stub: ', stub);\n resolve(stub);\n log.info('[Runtime.Loader.loadStub]------------------- END ---------------------------\\n');\n }, handleError).catch(errorReason);\n }\n });\n }\n\n /**\n * Deploy idpProxy from Catalogue URL or domain url\n * @param {URL.URL} domain domain\n */\n\n }, {\n key: 'loadIdpProxy',\n value: function loadIdpProxy(idpProxyURL) {\n var _this3 = this;\n\n if (!this._readyToUse()) return false;\n if (!idpProxyURL) throw new Error('[Runtime.Loader] IdpProxy descriptor url parameter is needed');\n\n return new _promise2.default(function (resolve, reject) {\n\n var domain = (0, _utils.divideURL)(idpProxyURL).domain;\n\n if (!domain) {\n domain = idpProxyURL;\n }\n\n var _proxySandbox = void 0;\n var _proxyDescriptor = void 0;\n var _runtimeIdpProxyURL = void 0;\n var _proxySourcePackage = void 0;\n var haveError = false;\n\n var errorReason = function errorReason(reason) {\n log.info('[Runtime.Loader] Something failed on the deploy of IdpProxy: ', reason);\n reject(reason);\n };\n\n var handleError = function handleError(reason) {\n haveError = true;\n reject(reason);\n };\n\n // Discover IDPProxy\n log.info('[Runtime.Loader] ------------------- IDP Proxy Deploy ---------------------------\\n');\n log.info('[Runtime.Loader] Discover or Create a new IdpProxy for domain/URL: ', domain);\n\n try {\n var runtimeIdpProxyURL = _this3.registry.discoverIdpProxy(domain);\n\n // Is registed?\n log.info('[Runtime.Loader] 1. IDPProxy Discovered: ', runtimeIdpProxyURL);\n\n // we have completed step 2 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n\n var idpProxy = _this3.registry.idpProxyList[domain];\n log.log('Deployed: ', idpProxy);\n\n resolve(idpProxy);\n log.info('[Runtime.Loader] ------------------- END ---------------------------\\n');\n } catch (reason) {\n\n // is not registed?\n log.info('[Runtime.Loader] 1. IdpProxy not found:', reason);\n\n // we have completed step 3 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n\n // we need to get ProtoStub descriptor step 4 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n _this3.descriptors.getIdpProxyDescriptor(idpProxyURL).then(function (proxyDescriptor) {\n\n log.info('[Runtime.Loader] 2. Return the IDPProxy descriptor');\n\n // we have completed step 5 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n _proxyDescriptor = proxyDescriptor;\n\n var sourcePackageURL = proxyDescriptor.sourcePackageURL;\n\n if (sourcePackageURL === '/sourcePackage') {\n return proxyDescriptor.sourcePackage;\n }\n\n // we need to get ProtoStub Source code from descriptor - step 6 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n return _this3.runtimeCatalogue.getSourcePackageFromURL(sourcePackageURL);\n }, handleError).then(function (sourcePackage) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 3. return the IDPProxy source package');\n\n // we have completed step 7 https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n\n _proxySourcePackage = sourcePackage;\n\n // TODO: Check on PEP (policy Engine) if we need the sandbox and check if the Sandbox Factory have the context sandbox;\n var policy = true;\n return policy;\n }, handleError).then(function (policy) {\n if (haveError) return false;\n\n // this will return the sandbox or one promise to getSandbox;\n return _this3.registry.getSandbox(domain);\n }).then(function (proxySandbox) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 4. if the sandbox is registered then return the sandbox', proxySandbox);\n\n _proxySandbox = proxySandbox;\n return proxySandbox;\n }).catch(function (reason) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 5. Sandbox was not found, creating a new one', reason);\n\n var proxyCapabilities = {};\n if (_proxyDescriptor && _proxyDescriptor.hasOwnProperty('capabilities')) {\n _proxyDescriptor = _proxyDescriptor.stubCapabilities;\n }\n\n return _this3._runtimeFactory.createSandbox(proxyCapabilities).then(function (sandbox) {\n\n sandbox.addListener('*', function (msg) {\n _this3.messageBus.postMessage(msg);\n });\n\n return sandbox;\n });\n }).then(function (sandbox) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 6. return the sandbox instance and register', sandbox, 'to domain ', domain);\n\n _proxySandbox = sandbox;\n\n // we need register stub on registry - step xxx https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n return _this3.registry.registerIdpProxy(sandbox, domain);\n }, handleError).then(function (runtimeIdpProxyURL) {\n if (haveError) return false;\n log.info('[Runtime.Loader] 7. Return the runtime Idp Proxy URL: ', runtimeIdpProxyURL);\n\n // we have completed step xxx https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n\n _runtimeIdpProxyURL = runtimeIdpProxyURL;\n\n // Extend original hyperty configuration;\n var configuration = {};\n if (!(0, _utils.emptyObject)(_proxyDescriptor.configuration)) {\n try {\n configuration = (0, _assign2.default)({}, JSON.parse(_proxyDescriptor.configuration));\n } catch (e) {\n configuration = _proxyDescriptor.configuration;\n }\n }\n configuration.runtimeURL = _this3._runtimeURL;\n\n // Deploy Component step xxx\n try {\n // we have completed step xxx https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n\n // Add the message bus listener\n _this3.messageBus.addListener(_runtimeIdpProxyURL, function (msg) {\n _proxySandbox.postMessage(msg);\n });\n\n return _proxySandbox.deployComponent(_proxySourcePackage.sourceCode, runtimeIdpProxyURL, configuration);\n } catch (e) {\n log.info('[Runtime.Loader] Error on deploy component:', e);\n reject(e);\n }\n }, handleError).then(function () {\n if (haveError) return false;\n\n // we have completed step xxx https://github.com/reTHINK-project/core-framework/blob/master/docs/specs/runtime/dynamic-view/basics/deploy-protostub.md\n\n // Load Stub function resolved with success;\n // let idpProxy = {\n // runtimeIdpProxyURL: _runtimeIdpProxyURL,\n // status: deployComponentStatus\n // };\n\n //this.registry.idpProxyList[domain].status = 'deployed';\n var idpProxy = _this3.registry.idpProxyList[domain];\n\n log.log('[Runtime.Loader.loadIdpProxy] 8: loaded: ', idpProxy);\n\n resolve(idpProxy);\n log.info('[Runtime.Loader.loadIdpProxy] ------------------- END ---------------------------\\n');\n }, handleError).catch(errorReason);\n }\n });\n }\n\n // Check if the loader is ready to load all components\n\n }, {\n key: '_readyToUse',\n value: function _readyToUse() {\n\n var status = false;\n\n if (!this._runtimeURL) throw new Error('[Runtime.Loader] The loader need the runtime url address');\n if (!this._messagesBus) throw new Error('[Runtime.Loader] The loader need the messageBus component');\n if (!this._registry) throw new Error('[Runtime.Loader] The loader need the registry component');\n if (!this._runtimeFactory) throw new Error('[Runtime.Loader] The loader need the runtime factory component');\n\n status = true;\n return status;\n }\n }, {\n key: 'runtimeURL',\n set: function set(value) {\n this._runtimeURL = value;\n }\n\n /**\n * Get runtime url\n * @return {string} value runtimeURL\n */\n ,\n get: function get() {\n return this._runtimeURL;\n }\n\n /**\n * Set Registry component\n * @param {Registry} value Registry Component\n */\n\n }, {\n key: 'registry',\n set: function set(value) {\n this._registry = value;\n\n // Install AddressAllocation\n var addressAllocation = _AddressAllocation2.default.instance;\n this._addressAllocation = addressAllocation;\n\n log.log('[Loader - AddressAllocation] - ', addressAllocation);\n }\n\n /**\n * Get Registry component\n * @return {Registry} Registry component\n */\n ,\n get: function get() {\n return this._registry;\n }\n\n /**\n * Set Message Bus component\n * @param {MessageBus} value Message bus component\n */\n\n }, {\n key: 'messageBus',\n set: function set(value) {\n this._messagesBus = value;\n }\n\n /**\n * Get Message Bus component\n * @return {MessageBus} Message Bus component\n */\n ,\n get: function get() {\n return this._messagesBus;\n }\n\n /**\n * Set Runtime Factory component\n * @param {runtimeFactory} value Factory includes the specific implementations for each environment\n */\n\n }, {\n key: 'runtimeFactory',\n set: function set(value) {\n this._runtimeFactory = value;\n }\n\n /**\n * Get Runtime Factory component\n * @return {runtimeFactory} Runtime Factory component\n */\n ,\n get: function get() {\n return this._runtimeFactory;\n }\n }]);\n return Loader;\n}();\n\nexports.default = Loader;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDk1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ydW50aW1lL0xvYWRlci5qcz9jYzkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIExvZyBTeXN0ZW1cbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignbG9hZGVyJyk7XG5cbmltcG9ydCB7ZGl2aWRlVVJMLCBlbXB0eU9iamVjdH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IEFkZHJlc3NBbGxvY2F0aW9uIGZyb20gJy4uL2FsbG9jYXRpb24vQWRkcmVzc0FsbG9jYXRpb24nO1xuXG5jbGFzcyBMb2FkZXIge1xuXG4gIGNvbnN0cnVjdG9yKHJ1bnRpbWVVUkwsIHJ1bnRpbWVDb25maWd1cmF0aW9uLCBydW50aW1lRGVzY3JpcHRvcnNJbnN0YW5jZSkge1xuICAgIGlmICghcnVudGltZUNvbmZpZ3VyYXRpb24pIHRocm93ICAgRXJyb3IoJ1tSdW50aW1lLkxvYWRlcl0gVGhlIGRlc2NyaXB0b3IgbmVlZCB0byBrbm93IHRoZSBydW50aW1lIGNvbmZpZ3VyYXRpb24nKTtcbiAgICBpZiAoIXJ1bnRpbWVEZXNjcmlwdG9yc0luc3RhbmNlKSB0aHJvdyAgIEVycm9yKCdbUnVudGltZS5Mb2FkZXJdIFRoZSBkZXNjcmlwdG9yIG5lZWQgdG8ga25vdyB0aGUgcnVudGltZSBEZXNjcmlwdG9yIGluc3RhbmNlJyk7XG5cbiAgICB0aGlzLmxvZyA9IGxvZztcblxuICAgIHRoaXMucnVudGltZUNvbmZpZ3VyYXRpb24gPSBydW50aW1lQ29uZmlndXJhdGlvbjtcbiAgICB0aGlzLmRlc2NyaXB0b3JzID0gcnVudGltZURlc2NyaXB0b3JzSW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHJ1bnRpbWUgdXJsXG4gICAqIEBwYXJhbSAge3N0cmluZ30gdmFsdWUgcnVudGltZVVSTFxuICAgKi9cbiAgc2V0IHJ1bnRpbWVVUkwodmFsdWUpIHtcbiAgICB0aGlzLl9ydW50aW1lVVJMID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHJ1bnRpbWUgdXJsXG4gICAqIEByZXR1cm4ge3N0cmluZ30gdmFsdWUgcnVudGltZVVSTFxuICAgKi9cbiAgZ2V0IHJ1bnRpbWVVUkwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3J1bnRpbWVVUkw7XG4gIH1cblxuICAvKipcbiAgICogU2V0IFJlZ2lzdHJ5IGNvbXBvbmVudFxuICAgKiBAcGFyYW0gIHtSZWdpc3RyeX0gdmFsdWUgUmVnaXN0cnkgQ29tcG9uZW50XG4gICAqL1xuICBzZXQgcmVnaXN0cnkodmFsdWUpIHtcbiAgICB0aGlzLl9yZWdpc3RyeSA9IHZhbHVlO1xuXG4gICAgLy8gSW5zdGFsbCBBZGRyZXNzQWxsb2NhdGlvblxuICAgIGxldCBhZGRyZXNzQWxsb2NhdGlvbiA9IEFkZHJlc3NBbGxvY2F0aW9uLmluc3RhbmNlO1xuICAgIHRoaXMuX2FkZHJlc3NBbGxvY2F0aW9uID0gYWRkcmVzc0FsbG9jYXRpb247XG5cbiAgICBsb2cubG9nKCdbTG9hZGVyIC0gQWRkcmVzc0FsbG9jYXRpb25dIC0gJywgYWRkcmVzc0FsbG9jYXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBSZWdpc3RyeSBjb21wb25lbnRcbiAgICogQHJldHVybiB7UmVnaXN0cnl9IFJlZ2lzdHJ5IGNvbXBvbmVudFxuICAgKi9cbiAgZ2V0IHJlZ2lzdHJ5KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWdpc3RyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgTWVzc2FnZSBCdXMgY29tcG9uZW50XG4gICAqIEBwYXJhbSAge01lc3NhZ2VCdXN9IHZhbHVlIE1lc3NhZ2UgYnVzIGNvbXBvbmVudFxuICAgKi9cbiAgc2V0IG1lc3NhZ2VCdXModmFsdWUpIHtcbiAgICB0aGlzLl9tZXNzYWdlc0J1cyA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBNZXNzYWdlIEJ1cyBjb21wb25lbnRcbiAgICogQHJldHVybiB7TWVzc2FnZUJ1c30gTWVzc2FnZSBCdXMgY29tcG9uZW50XG4gICAqL1xuICBnZXQgbWVzc2FnZUJ1cygpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZXNCdXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IFJ1bnRpbWUgRmFjdG9yeSBjb21wb25lbnRcbiAgICogQHBhcmFtICB7cnVudGltZUZhY3Rvcnl9IHZhbHVlIEZhY3RvcnkgaW5jbHVkZXMgdGhlIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucyBmb3IgZWFjaCBlbnZpcm9ubWVudFxuICAgKi9cbiAgc2V0IHJ1bnRpbWVGYWN0b3J5KHZhbHVlKSB7XG4gICAgdGhpcy5fcnVudGltZUZhY3RvcnkgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgUnVudGltZSBGYWN0b3J5IGNvbXBvbmVudFxuICAgKiBAcmV0dXJuIHtydW50aW1lRmFjdG9yeX0gUnVudGltZSBGYWN0b3J5IGNvbXBvbmVudFxuICAgKi9cbiAgZ2V0IHJ1bnRpbWVGYWN0b3J5KCkge1xuICAgIHJldHVybiB0aGlzLl9ydW50aW1lRmFjdG9yeTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIERlcGxveSBIeXBlcnR5IGZyb20gQ2F0YWxvZ3VlIFVSTFxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3Qvc3BlY3MvdHJlZS9tYXN0ZXIvZGF0YW1vZGVsL2NvcmUvYWRkcmVzc1xuICAgKlxuICAgKiBAcGFyYW0ge1VSTC5IeXBlcnR5Q2F0YWxvZ3VlVVJMfSBoeXBlcnR5Q2F0YWxvZ3VlVVJMIC0gVGhlIENhdGFsb2d1ZSBVUkwgdXNlZCB0byBpZGVudGlmeSBkZXNjcmlwdG9ycyBpbiB0aGUgQ2F0YWxvZ3VlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW58VVJMLkh5cGVydHlVUkx9IFtyZXVzZVVSTD1mYWxzZV0gcmV1c2VVUkwgLSByZXVzZVVSTCBpcyB1c2VkIHRvIHJldXNlIHRoZSBoeXBlcnR5VVJMIHByZXZpb3VzbHkgcmVnaXN0cmVkLCBieSBkZWZhdWx0IHRoZSByZXVzZSBpcyBkaXNhYmxlZDtcbiAgICogQHBhcmFtIHtVUkx9IGFwcFVSTCAtIHRoZSBhcHAgdXJsIG9yaWdpbiBhZGRyZXNzO1xuICAgKiBAcGFyYW0ge29iamVjdH0gSWRwQ29uc3RyYWludCAtIGNvbnN0cmFpbnRzIHRvIGJlIHVzZWQgd2hlbiBzZWxlY3RpbmcgdGhlIGlkZW50aXR5IHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgSHlwZXJ0eSBpbmNsdWRpbmcgb3JpZ2luLCBpZHAsIGFuZCBpZEhpbnQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEJvb2xlYW4sIEVycm9yPn0gdGhpcyBpcyBQcm9taXNlIGFuZCByZXR1cm5zIHRydWUgaWYgYWxsIGNvbXBvbmVudHMgYXJlIGxvYWRlZCB3aXRoIHN1Y2Nlc3Mgb3IgYW4gZXJyb3IgaWYgc29tZW9uZSBmYWlscy5cbiAgICpcbiAgICogQG1lbWJlck9mIExvYWRlclxuICAgKi9cbiAgbG9hZEh5cGVydHkoaHlwZXJ0eUNhdGFsb2d1ZVVSTCwgcmV1c2VVUkwgPSBmYWxzZSwgSWRwQ29uc3RyYWludCwgYXBwVVJMKSB7XG5cbiAgICBpZiAoIXRoaXMuX3JlYWR5VG9Vc2UoKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghaHlwZXJ0eUNhdGFsb2d1ZVVSTCkgdGhyb3cgbmV3ICAgRXJyb3IoJ1tSdW50aW1lLkxvYWRlcl0gSHlwZXJ0eSBkZXNjcmlwdG9yIHVybCBwYXJhbWV0ZXIgaXMgbmVlZGVkJyk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBsZXQgX2h5cGVydHlVUkw7XG4gICAgICBsZXQgX2h5cGVydHlTYW5kYm94O1xuICAgICAgbGV0IF9oeXBlcnR5RGVzY3JpcHRvcjtcbiAgICAgIGxldCBfaHlwZXJ0eVNvdXJjZVBhY2thZ2U7XG4gICAgICBsZXQgaGF2ZUVycm9yID0gZmFsc2U7XG5cbiAgICAgIGxldCBlcnJvclJlYXNvbiA9IChyZWFzb24pID0+IHtcbiAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gU29tZXRoaW5nIGZhaWxlZCBvbiB0aGUgZGVwbG95IGh5cGVydHk6ICcsIHJlYXNvbik7XG4gICAgICAgIHJlamVjdChyZWFzb24pO1xuICAgICAgfTtcblxuICAgICAgbGV0IGhhbmRsZUVycm9yID0gKHJlYXNvbikgPT4ge1xuICAgICAgICBoYXZlRXJyb3IgPSB0cnVlO1xuICAgICAgICByZWplY3QocmVhc29uKTtcbiAgICAgIH07XG5cbiAgICAgIC8vIEdldCBIeXBlcnR5IGRlc2NyaXB0b3JcbiAgICAgIC8vIFRPRE86IHRoZSByZXF1ZXN0IE1vZHVsZSBzaG91bGQgYmUgY2hhbmdlZCxcbiAgICAgIC8vIGJlY2F1c2UgYXQgdGhpcyBtb21lbnQgaXQgaXMgaW5jb21wYXRpYmxlIHdpdGggbm9kZWpzO1xuICAgICAgLy8gUHJvYmFibHkgd2UgbmVlZCB0byBwYXNzIGEgZmFjdG9yeSBsaWtlIHdlIGRvIGZvciBzYW5kYm94ZXM7XG4gICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyXSAtLS0tLS0tLS0tLS0tLS0tLS0gSHlwZXJ0eSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKTtcbiAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIEdldCBoeXBlcnR5IGRlc2NyaXB0b3IgZm9yIDonLCBoeXBlcnR5Q2F0YWxvZ3VlVVJMKTtcbiAgICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3JzLmdldEh5cGVydHlEZXNjcmlwdG9yKGh5cGVydHlDYXRhbG9ndWVVUkwpXG4gICAgICAgIC50aGVuKChoeXBlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgY29tcGxldGVkIFwic3RlcCAyIGFuZCAzXCIgYXMgc2hvd24gaW4gaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktaHlwZXJ0eS5tZFxuICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIDE6IHJldHVybiBoeXBlcnR5IGRlc2NyaXB0b3InKTtcblxuICAgICAgICAgIC8vIGh5cGVydHkgY29udGFpbnMgdGhlIGZ1bGwgcGF0aCBvZiB0aGUgY2F0YWxvZ3VlIFVSTCwgZS5nLlxuICAgICAgICAgIC8vIGNhdGFsb2d1ZS5yZXRoaW5rLmV1Ly53ZWxsLWtub3duLy4uLi4uLi4uLi5cbiAgICAgICAgICBfaHlwZXJ0eURlc2NyaXB0b3IgPSBoeXBlcnR5RGVzY3JpcHRvcjtcblxuICAgICAgICAgIGxldCBzb3VyY2VQYWNrYWdlVVJMID0gaHlwZXJ0eURlc2NyaXB0b3Iuc291cmNlUGFja2FnZVVSTDtcblxuICAgICAgICAgIGlmIChzb3VyY2VQYWNrYWdlVVJMID09PSAnL3NvdXJjZVBhY2thZ2UnKSB7XG4gICAgICAgICAgICByZXR1cm4gaHlwZXJ0eURlc2NyaXB0b3Iuc291cmNlUGFja2FnZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBHZXQgdGhlIGh5cGVydHkgc291cmNlIGNvZGVcbiAgICAgICAgICByZXR1cm4gdGhpcy5ydW50aW1lQ2F0YWxvZ3VlLmdldFNvdXJjZVBhY2thZ2VGcm9tVVJMKHNvdXJjZVBhY2thZ2VVUkwpO1xuICAgICAgICB9LCBoYW5kbGVFcnJvcilcbiAgICAgICAgLnRoZW4oKHNvdXJjZVBhY2thZ2UpID0+IHtcbiAgICAgICAgICBpZiAoaGF2ZUVycm9yKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyXSAyOiByZXR1cm4gaHlwZXJ0eSBzb3VyY2UgY29kZScpO1xuXG4gICAgICAgICAgLy8gYXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBjb21wbGV0ZWQgXCJzdGVwIDQgYW5kIDVcIiBhcyBzaG93biBpbiBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1oeXBlcnR5Lm1kXG5cbiAgICAgICAgICBfaHlwZXJ0eVNvdXJjZVBhY2thZ2UgPSBzb3VyY2VQYWNrYWdlO1xuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBzdGVwcyA2IC0tIDkgYXJlIHNraXBwZWQuXG4gICAgICAgICAgLy8gVE9ETzogb24gcmVsZWFzZSBvZiBjb3JlIDAuMjtcbiAgICAgICAgICAvLyBUT0RPOiBQcm9taXNlIHRvIGNoZWNrIHRoZSBwb2xpY3kgZW5naW5lXG5cbiAgICAgICAgICAvLyBtb2NrLXVwIGNvZGU7XG4gICAgICAgICAgLy8gdGVtcG9yYXJ5IGNvZGUsIG9ubHlcbiAgICAgICAgICBsZXQgcG9saWN5ID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBwb2xpY3k7XG4gICAgICAgIH0sIGhhbmRsZUVycm9yKVxuICAgICAgICAudGhlbigocG9saWN5UmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIDM6IHJldHVybiBwb2xpY3kgZW5naW5lIHJlc3VsdCcgKyBwb2xpY3lSZXN1bHQpO1xuXG4gICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCA2IHRvIDkgb2YgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktaHlwZXJ0eS5tZCByaWdodCBub3cuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBTdGVwcyA2IC0tIDlcbiAgICAgICAgICAvLyBBcyBhIHJlc3VsdCBvZiB0aGUgc2lwcGVkIHN0ZXBzLCB3ZSBrbm93IGF0IHRoaXMgcG9pbnQgaWYgd2UgZXhlY3V0ZVxuICAgICAgICAgIC8vIGluU2FtZVNhbmRib3ggb3Igbm90LlxuICAgICAgICAgIC8vXG5cbiAgICAgICAgICAvLyBGb3IgdGVzdGluZywganVzdCBhc3N1bWUgd2UgZXhlY3V0ZSBpbiBzYW1lIFNhbmRib3guXG4gICAgICAgICAgbGV0IGluU2FtZVNhbmRib3ggPSB0cnVlO1xuICAgICAgICAgIGxldCBzYW5kYm94O1xuXG4gICAgICAgICAgaWYgKGluU2FtZVNhbmRib3gpIHtcblxuICAgICAgICAgICAgLy8gdGhpcyBkb24ndCBuZWVkIGJlIGEgUHJvbWlzZTtcbiAgICAgICAgICAgIHNhbmRib3ggPSB0aGlzLnJlZ2lzdHJ5LmdldEFwcFNhbmRib3goKTtcblxuICAgICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCAxMSBoZXJlLlxuICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIGxldCBkb21haW4gPSBkaXZpZGVVUkwoaHlwZXJ0eUNhdGFsb2d1ZVVSTCkuZG9tYWluO1xuXG4gICAgICAgICAgICAvLyBnZXRTYW5kYm94LCB0aGlzIHdpbGwgcmV0dXJuIGEgcHJvbWlzZTtcbiAgICAgICAgICAgIHNhbmRib3ggPSB0aGlzLnJlZ2lzdHJ5LmdldFNhbmRib3goZG9tYWluKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyB0aGlzIHdpbGwgcmV0dXJuIHRoZSBzYW5kYm94IG9yIG9uZSBwcm9taXNlIHRvIGdldFNhbmRib3g7XG4gICAgICAgICAgcmV0dXJuIHNhbmRib3g7XG4gICAgICAgIH0sIGhhbmRsZUVycm9yKVxuICAgICAgICAudGhlbigoc2FuZGJveCkgPT4ge1xuICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyXSA0OiByZXR1cm4gdGhlIHNhbmRib3gnLCBzYW5kYm94KTtcblxuICAgICAgICAgIC8vIFJldHVybiB0aGUgc2FuZGJveCBpbmRlcGVudGVseSBpZiBpdCBydW5uaW5nIGluIHRoZSBzYW1lIHNhbmRib3ggb3Igbm90XG4gICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCAxNCBoZXJlLlxuICAgICAgICAgIHJldHVybiBzYW5kYm94O1xuICAgICAgICB9LCAocmVhc29uKSA9PiB7XG4gICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIDQuMTogVHJ5IHRvIHJlZ2lzdGVyIGEgbmV3IHNhbmRib3gnKTtcblxuICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSBzYW5kYm94IGlzIHJlZ2lzdGVkIGZvciB0aGlzIGh5cGVydHkgZGVzY3JpcHRvciB1cmw7XG4gICAgICAgICAgLy8gTWFrZSBTdGVwcyB4eHggLS0tIHh4eFxuICAgICAgICAgIC8vIEluc3RhbnRpYXRlIHRoZSBTYW5kYm94XG5cbiAgICAgICAgICBsZXQgaHlwZXJ0eUNhcGFiaWxpdGllcyA9IHt9O1xuICAgICAgICAgIGlmIChfaHlwZXJ0eURlc2NyaXB0b3IgJiYgX2h5cGVydHlEZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCdjYXBhYmlsaXRpZXMnKSkge1xuICAgICAgICAgICAgaHlwZXJ0eUNhcGFiaWxpdGllcyA9IF9oeXBlcnR5RGVzY3JpcHRvci5zdHViQ2FwYWJpbGl0aWVzO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGlzLl9ydW50aW1lRmFjdG9yeS5jcmVhdGVTYW5kYm94KGh5cGVydHlDYXBhYmlsaXRpZXMpLnRoZW4oKHNhbmRib3gpID0+IHtcblxuICAgICAgICAgICAgc2FuZGJveC5hZGRMaXN0ZW5lcignKicsIChtc2cpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1zZyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIHNhbmRib3g7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIGhhbmRsZUVycm9yKVxuICAgICAgICAudGhlbigoc2FuZGJveCkgPT4ge1xuICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyXSA1OiByZXR1cm4gc2FuZGJveCBhbmQgcmVnaXN0ZXInKTtcblxuICAgICAgICAgIF9oeXBlcnR5U2FuZGJveCA9IHNhbmRib3g7XG5cbiAgICAgICAgICBsZXQgbnVtYmVyT2ZBZGRyZXNzZXMgPSAxO1xuICAgICAgICAgIC8vZGVidWdnZXI7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2FkZHJlc3NBbGxvY2F0aW9uLmNyZWF0ZSh0aGlzLl9yZWdpc3RyeS5fZG9tYWluLCBudW1iZXJPZkFkZHJlc3NlcywgX2h5cGVydHlEZXNjcmlwdG9yLCAnaHlwZXJ0eScsIHJldXNlVVJMKTtcbiAgICAgICAgfSwgaGFuZGxlRXJyb3IpXG4gICAgICAgIC50aGVuKChhZGRyZXNzZXMpID0+IHtcbiAgICAgICAgICBpZiAoaGF2ZUVycm9yKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gNjogcmV0dXJuIHRoZSBhZGRyZXNzZXMgZm9yIHRoZSBoeXBlcnR5JywgYWRkcmVzc2VzKTtcblxuICAgICAgICAgIC8vIFJlZ2lzdGVyIGh5cGVydHlcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5yZWdpc3Rlckh5cGVydHkoX2h5cGVydHlTYW5kYm94LCBoeXBlcnR5Q2F0YWxvZ3VlVVJMLCBfaHlwZXJ0eURlc2NyaXB0b3IsIGFkZHJlc3NlcywgSWRwQ29uc3RyYWludCk7XG4gICAgICAgIH0sIGhhbmRsZUVycm9yKVxuICAgICAgICAudGhlbigocmVnaXN0cmF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIDc6IHJlZ2lzdHJhdGlvbiByZXN1bHQnLCByZWdpc3RyYXRpb25SZXN1bHQpO1xuXG4gICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCAxNiBvZiBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1oeXBlcnR5Lm1kIHJpZ2h0IG5vdy5cbiAgICAgICAgICBfaHlwZXJ0eVVSTCA9IHJlZ2lzdHJhdGlvblJlc3VsdC51cmw7XG5cbiAgICAgICAgICAvLyBFeHRlbmQgb3JpZ2luYWwgaHlwZXJ0eSBjb25maWd1cmF0aW9uO1xuICAgICAgICAgIGxldCBjb25maWd1cmF0aW9uID0ge307XG4gICAgICAgICAgaWYgKCFlbXB0eU9iamVjdChfaHlwZXJ0eURlc2NyaXB0b3IuY29uZmlndXJhdGlvbikpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBPYmplY3QuYXNzaWduKHt9LCBKU09OLnBhcnNlKF9oeXBlcnR5RGVzY3JpcHRvci5jb25maWd1cmF0aW9uKSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBfaHlwZXJ0eURlc2NyaXB0b3IuY29uZmlndXJhdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uZmlndXJhdGlvbi5ydW50aW1lVVJMID0gdGhpcy5fcnVudGltZVVSTDtcblxuICAgICAgICAgIGlmIChyZWdpc3RyYXRpb25SZXN1bHQucDJwSGFuZGxlcikge1xuICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wMnBIYW5kbGVyID0gcmVnaXN0cmF0aW9uUmVzdWx0LnAycEhhbmRsZXI7XG4gICAgICAgICAgICBjb25maWd1cmF0aW9uLnAycFJlcXVlc3RlciA9IHJlZ2lzdHJhdGlvblJlc3VsdC5wMnBSZXF1ZXN0ZXI7XG4gICAgICAgICAgfVxuXG5cbiAgICAgICAgICAvLyBXZSB3aWxsIGRlcGxveSB0aGUgY29tcG9uZW50IC0gc3RlcCAxNyBvZiBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1oeXBlcnR5Lm1kIHJpZ2h0IG5vdy5cblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gX2h5cGVydHlTYW5kYm94LmRlcGxveUNvbXBvbmVudChfaHlwZXJ0eVNvdXJjZVBhY2thZ2Uuc291cmNlQ29kZSwgX2h5cGVydHlVUkwsIGNvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIEVycm9yIG9uIGRlcGxveSBjb21wb25lbnQ6JywgZSk7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBoYW5kbGVFcnJvcilcbiAgICAgICAgLnRoZW4oKGRlcGxveUNvbXBvbmVudFN0YXR1cykgPT4ge1xuICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyXSA4OiBEZXBsb3kgY29tcG9uZW50IHN0YXR1cyBmb3IgaHlwZXJ0eTogJywgZGVwbG95Q29tcG9uZW50U3RhdHVzKTtcblxuICAgICAgICAgIC8vIHdlIGhhdmUgY29tcGxldGVkIHN0ZXAgMTkgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktaHlwZXJ0eS5tZCByaWdodCBub3cuXG5cbiAgICAgICAgICAvLyBBZGQgdGhlIG1lc3NhZ2UgYnVzIGxpc3RlbmVyIHRvIHRoZSBhcHBTYW5kYm94IG9yIGh5cGVydFNhbmRib3g7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlQnVzLmFkZExpc3RlbmVyKF9oeXBlcnR5VVJMLCAobXNnKSA9PiB7XG4gICAgICAgICAgICBfaHlwZXJ0eVNhbmRib3gucG9zdE1lc3NhZ2UobXNnKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIHdlIGhhdmUgY29tcGxldGVkIHN0ZXAgMjAgb2YgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktaHlwZXJ0eS5tZCByaWdodCBub3cuXG4gICAgICAgICAgbGV0IGh5cGVydHkgPSB7XG4gICAgICAgICAgICBydW50aW1lSHlwZXJ0eVVSTDogX2h5cGVydHlVUkwsXG4gICAgICAgICAgICBzdGF0dXM6IGRlcGxveUNvbXBvbmVudFN0YXR1c1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyXSBIeXBlcnR5OiAnLCBoeXBlcnR5KTtcbiAgICAgICAgICByZXNvbHZlKGh5cGVydHkpO1xuXG4gICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCAyMSBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1oeXBlcnR5Lm1kIHJpZ2h0IG5vdy5cbiAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyXSAtLS0tLS0tLS0tLS0tLS0tLS0gRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScpO1xuICAgICAgICB9LCBoYW5kbGVFcnJvcilcbiAgICAgICAgLmNhdGNoKGVycm9yUmVhc29uKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIERlcGxveSBTdHViIGZyb20gQ2F0YWxvZ3VlIFVSTCBvciBkb21haW4gdXJsXG4gICogQHBhcmFtICB7VVJMLlVSTH0gICAgIHByb3Rvc3R1YlVSTCAgICBDYXRhbG9ndWUgVVJMIGZvciB0aGUgUHJvdG9TdHViIHRvIGJlIGxvYWRlZCBvciB0aGUgZG9tYWluIHRvIGJlIHRhcmdldCBieSB0aGUgcHJvdG9zdHViXG4gICogQHBhcmFtICB7T2JqZWN0fSAgICAgIHAycENvbmZpZyAgICAgICBjb25maWd1cmF0aW9uIG9mIHAycFxuICAqL1xuICBsb2FkU3R1Yihwcm90b3N0dWJVUkwsIHAycENvbmZpZykge1xuXG4gICAgaWYgKCF0aGlzLl9yZWFkeVRvVXNlKCkpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIXByb3Rvc3R1YlVSTCkgdGhyb3cgbmV3ICAgRXJyb3IoJ1tSdW50aW1lLkxvYWRlci5sb2FkU3R1Yl1Qcm90b1N0dWIgZGVzY3JpcHRvciB1cmwgcGFyYW1ldGVyIGlzIG5lZWRlZCcpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgLy8gdG8gYW5hbHlzZSBpZiBkb21haW4gZm9yIHAycEhhbmRsZXJzIHNob3VsZCBiZSBzb21ldGhpbmcgZWxzZSBhbmQgbm90IHRoZSBkZWZhdWx0IGRvbWFpbiBpdHNlbGZcblxuICAgICAgbGV0IGRvbWFpbiA9IGRpdmlkZVVSTChwcm90b3N0dWJVUkwpLmRvbWFpbjtcblxuICAgICAgaWYgKCFkb21haW4pIHtcbiAgICAgICAgZG9tYWluID0gcHJvdG9zdHViVVJMO1xuICAgICAgfVxuXG4gICAgICBsZXQgX3N0dWJTYW5kYm94O1xuICAgICAgbGV0IF9zdHViRGVzY3JpcHRvcjtcbiAgICAgIGxldCBfcnVudGltZVByb3RvU3R1YlVSTDtcbiAgICAgIGxldCBfc3R1YlNvdXJjZVBhY2thZ2U7XG4gICAgICBsZXQgaGF2ZUVycm9yID0gZmFsc2U7XG4gICAgICBsZXQgc3R1YklkO1xuXG4gICAgICBsZXQgZXJyb3JSZWFzb24gPSAocmVhc29uKSA9PiB7XG4gICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXIubG9hZFN0dWJdU29tZXRoaW5nIGZhaWxlZCBvbiB0aGUgZGVwbG95IG9mIHByb3RvY29sc3R1YjogJywgcmVhc29uKTtcbiAgICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgICB9O1xuXG4gICAgICBsZXQgaGFuZGxlRXJyb3IgPSAocmVhc29uKSA9PiB7XG4gICAgICAgIGhhdmVFcnJvciA9IHRydWU7XG4gICAgICAgIHJlamVjdChyZWFzb24pO1xuICAgICAgfTtcblxuICAgICAgLy8gRGlzY292ZXIgUHJvdG9jb2wgU3R1YlxuICAgICAgbGV0IGRpc2NvdmVyU3R1YjtcbiAgICAgIGxldCBpc1AyUEhhbmRsZXIgPSBmYWxzZTtcbiAgICAgIGxldCBpc1AyUFJlcXVlc3RlciA9IGZhbHNlO1xuICAgICAgbGV0IHN0dWJDYXBhYmlsaXRpZXMgPSB7fTtcblxuICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlci5sb2FkU3R1Yl0gc3RhcnRpbmcgbG9hZGluZyBmb3IgJywgcHJvdG9zdHViVVJMLCAnIHdpdGggcDJwY29uZmlnICcsIHAycENvbmZpZyk7XG4gICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyLmxvYWRTdHViXURpc2NvdmVyIG9yIENyZWF0ZSBhIG5ldyBQcm90b1N0dWIgZm9yIGRvbWFpbjogJywgZG9tYWluKTtcblxuICAgICAgLy8gc3RlcCAyIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHAycENvbmZpZykge1xuXG4gICAgICAgICAgaWYgKHAycENvbmZpZy5oYXNPd25Qcm9wZXJ0eSgnaXNIYW5kbGVyU3R1YicpICYmIHAycENvbmZpZy5pc0hhbmRsZXJTdHViKSB7XG4gICAgICAgICAgICAvLyBzdGVwIDYgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXG4gICAgICAgICAgICBpc1AyUEhhbmRsZXIgPSB0cnVlO1xuICAgICAgICAgICAgc3R1YklkID0gdGhpcy5ydW50aW1lVVJMO1xuICAgICAgICAgICAgZGlzY292ZXJTdHViID0gdGhpcy5yZWdpc3RyeS5kaXNjb3ZlclAyUFN0dWIoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXNQMlBSZXF1ZXN0ZXIgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IHAycEhhbmRsZXJSdW50aW1lVVJMID0gcDJwQ29uZmlnLnJlbW90ZVJ1bnRpbWVVUkw7XG4gICAgICAgICAgICBzdHViSWQgPSBwMnBIYW5kbGVyUnVudGltZVVSTDtcblxuICAgICAgICAgICAgLy8gc3RlcCA0IGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxuXG4gICAgICAgICAgICAvLyBzdGVwIDUgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXG4gICAgICAgICAgICBkaXNjb3ZlclN0dWIgPSB0aGlzLnJlZ2lzdHJ5LmRpc2NvdmVyUDJQU3R1YihwMnBIYW5kbGVyUnVudGltZVVSTCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gc3RlcCAzIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxuICAgICAgICAgIHN0dWJJZCA9IGRvbWFpbjtcbiAgICAgICAgICBkaXNjb3ZlclN0dWIgPSB0aGlzLnJlZ2lzdHJ5LmRpc2NvdmVyUHJvdG9zdHViKGRvbWFpbik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJcyByZWdpc3RlZD9cbiAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlci5sb2FkU3R1Yl0xLiBQcm90byBTdHViIERpc2NvdmVyZWQgZm9yICcsIHByb3Rvc3R1YlVSTCwgJzogJywgZGlzY292ZXJTdHViKTtcblxuICAgICAgICAvLyBzdGVwIDIzIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxuICAgICAgICByZXNvbHZlKGRpc2NvdmVyU3R1Yik7XG4gICAgICAgIGxvZy5pbmZvKCcgW1J1bnRpbWUuTG9hZGVyXS0tLS0tLS0tLS0tLS0tLS0tLS0gRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbicpO1xuXG4gICAgICB9IGNhdGNoIChyZWFzb24pIHtcblxuICAgICAgICAvLyBpcyBub3QgcmVnaXN0ZWQ/XG4gICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXIubG9hZFN0dWJdMS4gUHJvdG8gU3R1YiBub3QgZm91bmQgJyArIHJlYXNvbik7XG5cbiAgICAgICAgLy8gc3RlcCA4IGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxuICAgICAgICB0aGlzLmRlc2NyaXB0b3JzLmdldFN0dWJEZXNjcmlwdG9yKHByb3Rvc3R1YlVSTClcbiAgICAgICAgICAudGhlbigoc3R1YkRlc2NyaXB0b3IpID0+IHtcblxuICAgICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlci5sb2FkU3R1Yl0yLiByZXR1cm4gdGhlIFByb3RvU3R1YiBkZXNjcmlwdG9yJyk7XG5cbiAgICAgICAgICAgIC8vIHN0ZXAgOSBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcbiAgICAgICAgICAgIF9zdHViRGVzY3JpcHRvciA9IHN0dWJEZXNjcmlwdG9yO1xuXG4gICAgICAgICAgICBsZXQgc291cmNlUGFja2FnZVVSTCA9IHN0dWJEZXNjcmlwdG9yLnNvdXJjZVBhY2thZ2VVUkw7XG5cbiAgICAgICAgICAgIGlmIChzb3VyY2VQYWNrYWdlVVJMID09PSAnL3NvdXJjZVBhY2thZ2UnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzdHViRGVzY3JpcHRvci5zb3VyY2VQYWNrYWdlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBzdGVwIDEwIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucnVudGltZUNhdGFsb2d1ZS5nZXRTb3VyY2VQYWNrYWdlRnJvbVVSTChzb3VyY2VQYWNrYWdlVVJMKTtcbiAgICAgICAgICB9LCBoYW5kbGVFcnJvcilcbiAgICAgICAgICAuY2F0Y2goZXJyb3JSZWFzb24pXG4gICAgICAgICAgLnRoZW4oKHN0dWJTb3VyY2VQYWNrYWdlKSA9PiB7XG4gICAgICAgICAgICBpZiAoaGF2ZUVycm9yKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIEFjY29yZGluZyB0byBkZWJ1ZywgaXQgc2VlbXMgUnVudGltZUNhdGFsb2d1ZSBkb2VzIG5vdCBzdXBwb3J0IHlldCBjb25zdHJhaW50cy4gSXQgYXBwZWFycyBlbXB0eSEhISFcblxuICAgICAgICAgICAgaWYgKF9zdHViRGVzY3JpcHRvciAmJiBfc3R1YkRlc2NyaXB0b3IuY29uc3RyYWludHMpIHtcbiAgICAgICAgICAgICAgc3R1YkNhcGFiaWxpdGllcyA9IF9zdHViRGVzY3JpcHRvci5jb25zdHJhaW50cztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gc3RlcCAxMSBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXIubG9hZFN0dWJdMy4gcmV0dXJuIHRoZSBQcm90b1N0dWIgU291cmNlIENvZGUnKTtcbiAgICAgICAgICAgIF9zdHViU291cmNlUGFja2FnZSA9IHN0dWJTb3VyY2VQYWNrYWdlO1xuXG4gICAgICAgICAgICAvLyB0aGlzIHdpbGwgcmV0dXJuIHRoZSBzYW5kYm94IG9yIG9uZSBwcm9taXNlIHRvIGdldFNhbmRib3g7XG4gICAgICAgICAgICAvLyBzdGVwIDEyIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cnkuZ2V0U2FuZGJveChkb21haW4sIHN0dWJDYXBhYmlsaXRpZXMpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRoZW4oKHN0dWJTYW5kYm94KSA9PiB7XG4gICAgICAgICAgICBpZiAoaGF2ZUVycm9yKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIHN0ZXAgMTUgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXG4gICAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyLmxvYWRTdHViXTQuIGlmIHRoZSBzYW5kYm94IGlzIHJlZ2lzdGVyZWQgdGhlbiByZXR1cm4gdGhlIHNhbmRib3ggJywgc3R1YlNhbmRib3gpO1xuXG4gICAgICAgICAgICBfc3R1YlNhbmRib3ggPSBzdHViU2FuZGJveDtcbiAgICAgICAgICAgIHJldHVybiBzdHViU2FuZGJveDtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgocmVhc29uKSA9PiB7XG4gICAgICAgICAgICBpZiAoaGF2ZUVycm9yKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIHN0ZXAgMTMgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXG4gICAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyLmxvYWRTdHViXTUuIFNhbmRib3ggd2FzIG5vdCBmb3VuZCwgY3JlYXRpbmcgYSBuZXcgb25lICcsIHJlYXNvbik7XG5cbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSBzYW5kYm94IGlzIHJlZ2lzdGVkIGZvciB0aGlzIHN0dWIgZGVzY3JpcHRvciB1cmw7XG5cblxuICAgICAgICAgICAgLy8gc3RlcCAxNCBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ydW50aW1lRmFjdG9yeS5jcmVhdGVTYW5kYm94KHN0dWJDYXBhYmlsaXRpZXMpLnRoZW4oKHNhbmRib3gpID0+IHtcbiAgICAgICAgICAgICAgc2FuZGJveC5hZGRMaXN0ZW5lcignKicsIChtc2cpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VCdXMucG9zdE1lc3NhZ2UobXNnKTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHNhbmRib3g7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRoZW4oKHNhbmRib3gpID0+IHtcbiAgICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgLy8gc3RlcCAxNiBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXIubG9hZFN0dWJdNi4gcmV0dXJuIHRoZSBzYW5kYm94IGluc3RhbmNlIGFuZCByZWdpc3RlcicsIHNhbmRib3gsICd0byBkb21haW4gJywgZG9tYWluKTtcblxuICAgICAgICAgICAgX3N0dWJTYW5kYm94ID0gc2FuZGJveDtcblxuICAgICAgICAgICAgLy8gd2UgbmVlZCByZWdpc3RlciBzdHViIG9uIHJlZ2lzdHJ5IC0gc3RlcCB4eHggaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5yZWdpc3RlclN0dWIoX3N0dWJTYW5kYm94LCBzdHViSWQsIHAycENvbmZpZywgcHJvdG9zdHViVVJMLCBfc3R1YkRlc2NyaXB0b3IpO1xuICAgICAgICAgIH0sIGhhbmRsZUVycm9yKVxuICAgICAgICAgIC50aGVuKChydW50aW1lUHJvdG9TdHViKSA9PiB7XG4gICAgICAgICAgICBpZiAoaGF2ZUVycm9yKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIHN0ZXAgMjMgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXG4gICAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyLmxvYWRTdHViXSA3LiByZXR1cm4gdGhlIHJ1bnRpbWUgcHJvdG9zdHViIHVybDogJywgcnVudGltZVByb3RvU3R1Yik7XG5cbiAgICAgICAgICAgIF9ydW50aW1lUHJvdG9TdHViVVJMID0gcnVudGltZVByb3RvU3R1Yi51cmw7XG5cbiAgICAgICAgICAgIC8vIEV4dGVuZCBvcmlnaW5hbCBoeXBlcnR5IGNvbmZpZ3VyYXRpb247XG4gICAgICAgICAgICBsZXQgY29uZmlndXJhdGlvbiA9IHt9O1xuICAgICAgICAgICAgaWYgKCFlbXB0eU9iamVjdChfc3R1YkRlc2NyaXB0b3IuY29uZmlndXJhdGlvbikpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gT2JqZWN0LmFzc2lnbih7fSwgSlNPTi5wYXJzZShfc3R1YkRlc2NyaXB0b3IuY29uZmlndXJhdGlvbikpO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IF9zdHViRGVzY3JpcHRvci5jb25maWd1cmF0aW9uO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwMnBDb25maWcpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gT2JqZWN0LmFzc2lnbihjb25maWd1cmF0aW9uLCBKU09OLnBhcnNlKHAycENvbmZpZykpO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IE9iamVjdC5hc3NpZ24oY29uZmlndXJhdGlvbiwgcDJwQ29uZmlnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyByZXF1aXJlZCBmb3IgcHJvdG9zdHViIHNlc3Npb25cblxuICAgICAgICAgICAgY29uZmlndXJhdGlvbi5ydW50aW1lVVJMID0gdGhpcy5fcnVudGltZVVSTDtcblxuICAgICAgICAgICAgLy8gc3RlcCAyNCBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIC8vIHN0ZXAgMjYgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXG4gICAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXIubG9hZFN0dWJdIDg6IGFkZGluZyBzYW5kYm94IGxpc3RlbmVyIHRvIHByb3Rvc3R1YlVSTCA6ICcsIF9ydW50aW1lUHJvdG9TdHViVVJMKTtcblxuICAgICAgICAgICAgICAvLyBzdGVwIDI3IGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxuICAgICAgICAgICAgICAvLyBBZGQgdGhlIG1lc3NhZ2UgYnVzIGxpc3RlbmVyXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZUJ1cy5hZGRMaXN0ZW5lcihfcnVudGltZVByb3RvU3R1YlVSTCwgKG1zZykgPT4ge1xuICAgICAgICAgICAgICAgIF9zdHViU2FuZGJveC5wb3N0TWVzc2FnZShtc2cpO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICByZXR1cm4gX3N0dWJTYW5kYm94LmRlcGxveUNvbXBvbmVudChfc3R1YlNvdXJjZVBhY2thZ2Uuc291cmNlQ29kZSwgX3J1bnRpbWVQcm90b1N0dWJVUkwsIGNvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBsb2cuZXJyb3IoJ1tSdW50aW1lLkxvYWRlci5sb2FkU3R1Yl0gRXJyb3Igb24gZGVwbG95IGNvbXBvbmVudDonLCBlKTtcbiAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIGhhbmRsZUVycm9yKVxuICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcblxuXG4gICAgICAgICAgICAvLyBzdGVwIDI4IGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxuICAgICAgICAgICAgbGV0IHN0dWI7XG4gICAgICAgICAgICBpZiAocDJwQ29uZmlnKSB7XG4gICAgICAgICAgICAgIGxvZy5sb2coJ1tSdW50aW1lLkxvYWRlci5sb2FkU3R1Yl0gcDJwQ29uZmlnOiAnLCBwMnBDb25maWcpO1xuXG4gICAgICAgICAgICAgIGlmIChwMnBDb25maWcuaGFzT3duUHJvcGVydHkoJ2lzSGFuZGxlclN0dWInKSkgc3R1YiA9IHRoaXMucmVnaXN0cnkucDJwSGFuZGxlclN0dWJbdGhpcy5fcnVudGltZVVSTF07XG4gICAgICAgICAgICAgIGlmIChwMnBDb25maWcuaGFzT3duUHJvcGVydHkoJ3AycFJlcXVlc3RlclN0dWInKSkgc3R1YiA9IHRoaXMucmVnaXN0cnkucDJwUmVxdWVzdGVyU3R1YltwMnBDb25maWcucmVtb3RlUnVudGltZVVSTF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzdHViID0gdGhpcy5yZWdpc3RyeS5wcm90b3N0dWJzTGlzdFtkb21haW5dO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsb2cubG9nKCdbUnVudGltZS5Mb2FkZXIubG9hZFN0dWJdIFN0dWI6ICcsIHN0dWIpO1xuICAgICAgICAgICAgcmVzb2x2ZShzdHViKTtcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXIubG9hZFN0dWJdLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuJyk7XG4gICAgICAgICAgfSwgaGFuZGxlRXJyb3IpXG4gICAgICAgICAgLmNhdGNoKGVycm9yUmVhc29uKTtcblxuICAgICAgfVxuXG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICAqIERlcGxveSBpZHBQcm94eSBmcm9tIENhdGFsb2d1ZSBVUkwgb3IgZG9tYWluIHVybFxuICAqIEBwYXJhbSAge1VSTC5VUkx9ICAgICBkb21haW4gICAgICAgICAgZG9tYWluXG4gICovXG5cbiAgbG9hZElkcFByb3h5KGlkcFByb3h5VVJMKSB7XG5cbiAgICBpZiAoIXRoaXMuX3JlYWR5VG9Vc2UoKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghaWRwUHJveHlVUkwpIHRocm93IG5ldyAgIEVycm9yKCdbUnVudGltZS5Mb2FkZXJdIElkcFByb3h5IGRlc2NyaXB0b3IgdXJsIHBhcmFtZXRlciBpcyBuZWVkZWQnKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgIGxldCBkb21haW4gPSBkaXZpZGVVUkwoaWRwUHJveHlVUkwpLmRvbWFpbjtcblxuICAgICAgaWYgKCFkb21haW4pIHtcbiAgICAgICAgZG9tYWluID0gaWRwUHJveHlVUkw7XG4gICAgICB9XG5cbiAgICAgIGxldCBfcHJveHlTYW5kYm94O1xuICAgICAgbGV0IF9wcm94eURlc2NyaXB0b3I7XG4gICAgICBsZXQgX3J1bnRpbWVJZHBQcm94eVVSTDtcbiAgICAgIGxldCBfcHJveHlTb3VyY2VQYWNrYWdlO1xuICAgICAgbGV0IGhhdmVFcnJvciA9IGZhbHNlO1xuXG4gICAgICBsZXQgZXJyb3JSZWFzb24gPSAocmVhc29uKSA9PiB7XG4gICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIFNvbWV0aGluZyBmYWlsZWQgb24gdGhlIGRlcGxveSBvZiBJZHBQcm94eTogJywgcmVhc29uKTtcbiAgICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgICB9O1xuXG4gICAgICBsZXQgaGFuZGxlRXJyb3IgPSAocmVhc29uKSA9PiB7XG4gICAgICAgIGhhdmVFcnJvciA9IHRydWU7XG4gICAgICAgIHJlamVjdChyZWFzb24pO1xuICAgICAgfTtcblxuICAgICAgLy8gRGlzY292ZXIgSURQUHJveHlcbiAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIC0tLS0tLS0tLS0tLS0tLS0tLS0gSURQIFByb3h5IERlcGxveSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4nKTtcbiAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIERpc2NvdmVyIG9yIENyZWF0ZSBhIG5ldyBJZHBQcm94eSBmb3IgZG9tYWluL1VSTDogJywgZG9tYWluKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IHJ1bnRpbWVJZHBQcm94eVVSTCA9IHRoaXMucmVnaXN0cnkuZGlzY292ZXJJZHBQcm94eShkb21haW4pO1xuXG4gICAgICAgIC8vIElzIHJlZ2lzdGVkP1xuICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyXSAxLiBJRFBQcm94eSBEaXNjb3ZlcmVkOiAnLCBydW50aW1lSWRwUHJveHlVUkwpO1xuXG4gICAgICAgIC8vIHdlIGhhdmUgY29tcGxldGVkIHN0ZXAgMiBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcblxuICAgICAgICBsZXQgaWRwUHJveHkgPSB0aGlzLnJlZ2lzdHJ5LmlkcFByb3h5TGlzdFtkb21haW5dO1xuICAgICAgICBsb2cubG9nKCdEZXBsb3llZDogJywgaWRwUHJveHkpO1xuXG4gICAgICAgIHJlc29sdmUoaWRwUHJveHkpO1xuICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyXSAtLS0tLS0tLS0tLS0tLS0tLS0tIEVORCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4nKTtcbiAgICAgIH0gY2F0Y2ggKHJlYXNvbikge1xuXG4gICAgICAgIC8vIGlzIG5vdCByZWdpc3RlZD9cbiAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gMS4gSWRwUHJveHkgbm90IGZvdW5kOicsIHJlYXNvbik7XG5cbiAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCAzIGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxuXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gZ2V0IFByb3RvU3R1YiBkZXNjcmlwdG9yIHN0ZXAgNCBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9ycy5nZXRJZHBQcm94eURlc2NyaXB0b3IoaWRwUHJveHlVUkwpXG4gICAgICAgICAgLnRoZW4oKHByb3h5RGVzY3JpcHRvcikgPT4ge1xuXG4gICAgICAgICAgICBsb2cuaW5mbygnW1J1bnRpbWUuTG9hZGVyXSAyLiBSZXR1cm4gdGhlIElEUFByb3h5IGRlc2NyaXB0b3InKTtcblxuICAgICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCA1IGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxuICAgICAgICAgICAgX3Byb3h5RGVzY3JpcHRvciA9IHByb3h5RGVzY3JpcHRvcjtcblxuICAgICAgICAgICAgbGV0IHNvdXJjZVBhY2thZ2VVUkwgPSBwcm94eURlc2NyaXB0b3Iuc291cmNlUGFja2FnZVVSTDtcblxuICAgICAgICAgICAgaWYgKHNvdXJjZVBhY2thZ2VVUkwgPT09ICcvc291cmNlUGFja2FnZScpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHByb3h5RGVzY3JpcHRvci5zb3VyY2VQYWNrYWdlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGdldCBQcm90b1N0dWIgU291cmNlIGNvZGUgZnJvbSBkZXNjcmlwdG9yIC0gc3RlcCA2IGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucnVudGltZUNhdGFsb2d1ZS5nZXRTb3VyY2VQYWNrYWdlRnJvbVVSTChzb3VyY2VQYWNrYWdlVVJMKTtcbiAgICAgICAgICB9LCBoYW5kbGVFcnJvcilcbiAgICAgICAgICAudGhlbigoc291cmNlUGFja2FnZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gMy4gcmV0dXJuIHRoZSBJRFBQcm94eSBzb3VyY2UgcGFja2FnZScpO1xuXG4gICAgICAgICAgICAvLyB3ZSBoYXZlIGNvbXBsZXRlZCBzdGVwIDcgaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXG5cbiAgICAgICAgICAgIF9wcm94eVNvdXJjZVBhY2thZ2UgPSBzb3VyY2VQYWNrYWdlO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBDaGVjayBvbiBQRVAgKHBvbGljeSBFbmdpbmUpIGlmIHdlIG5lZWQgdGhlIHNhbmRib3ggYW5kIGNoZWNrIGlmIHRoZSBTYW5kYm94IEZhY3RvcnkgaGF2ZSB0aGUgY29udGV4dCBzYW5kYm94O1xuICAgICAgICAgICAgbGV0IHBvbGljeSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gcG9saWN5O1xuICAgICAgICAgIH0sIGhhbmRsZUVycm9yKVxuICAgICAgICAgIC50aGVuKChwb2xpY3kpID0+IHtcbiAgICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgLy8gdGhpcyB3aWxsIHJldHVybiB0aGUgc2FuZGJveCBvciBvbmUgcHJvbWlzZSB0byBnZXRTYW5kYm94O1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cnkuZ2V0U2FuZGJveChkb21haW4pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRoZW4oKHByb3h5U2FuZGJveCkgPT4ge1xuICAgICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gNC4gaWYgdGhlIHNhbmRib3ggaXMgcmVnaXN0ZXJlZCB0aGVuIHJldHVybiB0aGUgc2FuZGJveCcsIHByb3h5U2FuZGJveCk7XG5cbiAgICAgICAgICAgIF9wcm94eVNhbmRib3ggPSBwcm94eVNhbmRib3g7XG4gICAgICAgICAgICByZXR1cm4gcHJveHlTYW5kYm94O1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChyZWFzb24pID0+IHtcbiAgICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIDUuIFNhbmRib3ggd2FzIG5vdCBmb3VuZCwgY3JlYXRpbmcgYSBuZXcgb25lJywgcmVhc29uKTtcblxuICAgICAgICAgICAgbGV0IHByb3h5Q2FwYWJpbGl0aWVzID0ge307XG4gICAgICAgICAgICBpZiAoX3Byb3h5RGVzY3JpcHRvciAmJiBfcHJveHlEZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCdjYXBhYmlsaXRpZXMnKSkge1xuICAgICAgICAgICAgICBfcHJveHlEZXNjcmlwdG9yID0gX3Byb3h5RGVzY3JpcHRvci5zdHViQ2FwYWJpbGl0aWVzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcnVudGltZUZhY3RvcnkuY3JlYXRlU2FuZGJveChwcm94eUNhcGFiaWxpdGllcykudGhlbigoc2FuZGJveCkgPT4ge1xuXG4gICAgICAgICAgICAgIHNhbmRib3guYWRkTGlzdGVuZXIoJyonLCAobXNnKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1zZyk7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHJldHVybiBzYW5kYm94O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAudGhlbigoc2FuZGJveCkgPT4ge1xuICAgICAgICAgICAgaWYgKGhhdmVFcnJvcikgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlcl0gNi4gcmV0dXJuIHRoZSBzYW5kYm94IGluc3RhbmNlIGFuZCByZWdpc3RlcicsIHNhbmRib3gsICd0byBkb21haW4gJywgZG9tYWluKTtcblxuICAgICAgICAgICAgX3Byb3h5U2FuZGJveCA9IHNhbmRib3g7XG5cbiAgICAgICAgICAgIC8vIHdlIG5lZWQgcmVnaXN0ZXIgc3R1YiBvbiByZWdpc3RyeSAtIHN0ZXAgeHh4IGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cnkucmVnaXN0ZXJJZHBQcm94eShzYW5kYm94LCBkb21haW4pO1xuICAgICAgICAgIH0sIGhhbmRsZUVycm9yKVxuICAgICAgICAgIC50aGVuKChydW50aW1lSWRwUHJveHlVUkwpID0+IHtcbiAgICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIDcuIFJldHVybiB0aGUgcnVudGltZSBJZHAgUHJveHkgVVJMOiAnLCBydW50aW1lSWRwUHJveHlVUkwpO1xuXG4gICAgICAgICAgICAvLyB3ZSBoYXZlIGNvbXBsZXRlZCBzdGVwIHh4eCBodHRwczovL2dpdGh1Yi5jb20vcmVUSElOSy1wcm9qZWN0L2NvcmUtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL2RvY3Mvc3BlY3MvcnVudGltZS9keW5hbWljLXZpZXcvYmFzaWNzL2RlcGxveS1wcm90b3N0dWIubWRcblxuICAgICAgICAgICAgX3J1bnRpbWVJZHBQcm94eVVSTCA9IHJ1bnRpbWVJZHBQcm94eVVSTDtcblxuICAgICAgICAgICAgLy8gRXh0ZW5kIG9yaWdpbmFsIGh5cGVydHkgY29uZmlndXJhdGlvbjtcbiAgICAgICAgICAgIGxldCBjb25maWd1cmF0aW9uID0ge307XG4gICAgICAgICAgICBpZiAoIWVtcHR5T2JqZWN0KF9wcm94eURlc2NyaXB0b3IuY29uZmlndXJhdGlvbikpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gT2JqZWN0LmFzc2lnbih7fSwgSlNPTi5wYXJzZShfcHJveHlEZXNjcmlwdG9yLmNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBfcHJveHlEZXNjcmlwdG9yLmNvbmZpZ3VyYXRpb247XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucnVudGltZVVSTCA9IHRoaXMuX3J1bnRpbWVVUkw7XG5cbiAgICAgICAgICAgIC8vIERlcGxveSBDb21wb25lbnQgc3RlcCB4eHhcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIC8vIHdlIGhhdmUgY29tcGxldGVkIHN0ZXAgeHh4IGh0dHBzOi8vZ2l0aHViLmNvbS9yZVRISU5LLXByb2plY3QvY29yZS1mcmFtZXdvcmsvYmxvYi9tYXN0ZXIvZG9jcy9zcGVjcy9ydW50aW1lL2R5bmFtaWMtdmlldy9iYXNpY3MvZGVwbG95LXByb3Rvc3R1Yi5tZFxuXG4gICAgICAgICAgICAgIC8vIEFkZCB0aGUgbWVzc2FnZSBidXMgbGlzdGVuZXJcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlQnVzLmFkZExpc3RlbmVyKF9ydW50aW1lSWRwUHJveHlVUkwsIChtc2cpID0+IHtcbiAgICAgICAgICAgICAgICBfcHJveHlTYW5kYm94LnBvc3RNZXNzYWdlKG1zZyk7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHJldHVybiBfcHJveHlTYW5kYm94LmRlcGxveUNvbXBvbmVudChfcHJveHlTb3VyY2VQYWNrYWdlLnNvdXJjZUNvZGUsIHJ1bnRpbWVJZHBQcm94eVVSTCwgY29uZmlndXJhdGlvbik7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIGxvZy5pbmZvKCdbUnVudGltZS5Mb2FkZXJdIEVycm9yIG9uIGRlcGxveSBjb21wb25lbnQ6JywgZSk7XG4gICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCBoYW5kbGVFcnJvcilcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaGF2ZUVycm9yKSByZXR1cm4gZmFsc2U7XG5cblxuICAgICAgICAgICAgLy8gd2UgaGF2ZSBjb21wbGV0ZWQgc3RlcCB4eHggaHR0cHM6Ly9naXRodWIuY29tL3JlVEhJTkstcHJvamVjdC9jb3JlLWZyYW1ld29yay9ibG9iL21hc3Rlci9kb2NzL3NwZWNzL3J1bnRpbWUvZHluYW1pYy12aWV3L2Jhc2ljcy9kZXBsb3ktcHJvdG9zdHViLm1kXG5cbiAgICAgICAgICAgIC8vIExvYWQgU3R1YiBmdW5jdGlvbiByZXNvbHZlZCB3aXRoIHN1Y2Nlc3M7XG4gICAgICAgICAgICAvLyBsZXQgaWRwUHJveHkgPSB7XG4gICAgICAgICAgICAvLyAgIHJ1bnRpbWVJZHBQcm94eVVSTDogX3J1bnRpbWVJZHBQcm94eVVSTCxcbiAgICAgICAgICAgIC8vICAgc3RhdHVzOiBkZXBsb3lDb21wb25lbnRTdGF0dXNcbiAgICAgICAgICAgIC8vIH07XG5cbiAgICAgICAgICAgIC8vdGhpcy5yZWdpc3RyeS5pZHBQcm94eUxpc3RbZG9tYWluXS5zdGF0dXMgPSAnZGVwbG95ZWQnO1xuICAgICAgICAgICAgbGV0IGlkcFByb3h5ID0gdGhpcy5yZWdpc3RyeS5pZHBQcm94eUxpc3RbZG9tYWluXTtcblxuICAgICAgICAgICAgbG9nLmxvZygnW1J1bnRpbWUuTG9hZGVyLmxvYWRJZHBQcm94eV0gODogbG9hZGVkOiAnLCBpZHBQcm94eSk7XG5cbiAgICAgICAgICAgIHJlc29sdmUoaWRwUHJveHkpO1xuICAgICAgICAgICAgbG9nLmluZm8oJ1tSdW50aW1lLkxvYWRlci5sb2FkSWRwUHJveHldIC0tLS0tLS0tLS0tLS0tLS0tLS0gRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbicpO1xuXG4gICAgICAgICAgfSwgaGFuZGxlRXJyb3IpXG4gICAgICAgICAgLmNhdGNoKGVycm9yUmVhc29uKTtcbiAgICAgIH1cblxuICAgIH0pO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIGxvYWRlciBpcyByZWFkeSB0byBsb2FkIGFsbCBjb21wb25lbnRzXG4gIF9yZWFkeVRvVXNlKCkge1xuXG4gICAgbGV0IHN0YXR1cyA9IGZhbHNlO1xuXG4gICAgaWYgKCF0aGlzLl9ydW50aW1lVVJMKSB0aHJvdyBuZXcgICBFcnJvcignW1J1bnRpbWUuTG9hZGVyXSBUaGUgbG9hZGVyIG5lZWQgdGhlIHJ1bnRpbWUgdXJsIGFkZHJlc3MnKTtcbiAgICBpZiAoIXRoaXMuX21lc3NhZ2VzQnVzKSB0aHJvdyBuZXcgICBFcnJvcignW1J1bnRpbWUuTG9hZGVyXSBUaGUgbG9hZGVyIG5lZWQgdGhlIG1lc3NhZ2VCdXMgY29tcG9uZW50Jyk7XG4gICAgaWYgKCF0aGlzLl9yZWdpc3RyeSkgdGhyb3cgbmV3ICAgRXJyb3IoJ1tSdW50aW1lLkxvYWRlcl0gVGhlIGxvYWRlciBuZWVkIHRoZSByZWdpc3RyeSBjb21wb25lbnQnKTtcbiAgICBpZiAoIXRoaXMuX3J1bnRpbWVGYWN0b3J5KSB0aHJvdyBuZXcgICBFcnJvcignW1J1bnRpbWUuTG9hZGVyXSBUaGUgbG9hZGVyIG5lZWQgdGhlIHJ1bnRpbWUgZmFjdG9yeSBjb21wb25lbnQnKTtcblxuICAgIHN0YXR1cyA9IHRydWU7XG4gICAgcmV0dXJuIHN0YXR1cztcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IExvYWRlcjtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcnVudGltZS9Mb2FkZXIuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7O0FBSkE7QUFDQTtBQUlBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUF1RUE7Ozs7Ozs7Ozs7Ozs7QUFhQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFLQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFodEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBOzs7OztBQW9wQkE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///495\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.storage = storage;\n\nvar _runtimeConfiguration = __webpack_require__(144);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar storages = {};\n\nfunction storage(runtimeFactory) {\n if (!runtimeFactory) throw new Error('The runtime factory is a needed parameter');\n\n (0, _keys2.default)(_runtimeConfiguration.runtimeConfiguration.storageSchemas).forEach(function (key) {\n\n if (!storages.hasOwnProperty(key)) {\n storages[key] = runtimeFactory.storageManager(key, _runtimeConfiguration.runtimeConfiguration.storageSchemas[key]);\n }\n });\n\n return storages;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDk2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ydW50aW1lL1N0b3JhZ2UuanM/ZTk0NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBydW50aW1lQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vcnVudGltZUNvbmZpZ3VyYXRpb24nO1xuXG5sZXQgc3RvcmFnZXMgPSB7fTtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0b3JhZ2UocnVudGltZUZhY3RvcnkpIHtcbiAgaWYgKCFydW50aW1lRmFjdG9yeSkgdGhyb3cgbmV3IEVycm9yKCdUaGUgcnVudGltZSBmYWN0b3J5IGlzIGEgbmVlZGVkIHBhcmFtZXRlcicpO1xuXG4gIE9iamVjdC5rZXlzKHJ1bnRpbWVDb25maWd1cmF0aW9uLnN0b3JhZ2VTY2hlbWFzKS5mb3JFYWNoKChrZXkpID0+IHtcblxuICAgIGlmICghc3RvcmFnZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgc3RvcmFnZXNba2V5XSA9IHJ1bnRpbWVGYWN0b3J5LnN0b3JhZ2VNYW5hZ2VyKGtleSwgcnVudGltZUNvbmZpZ3VyYXRpb24uc3RvcmFnZVNjaGVtYXNba2V5XSk7XG4gICAgfVxuXG4gIH0pO1xuXG4gIHJldHVybiBzdG9yYWdlcztcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcnVudGltZS9TdG9yYWdlLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBSUE7QUFDQTtBQUxBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///496\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _utils = __webpack_require__(11);\n\nvar _runtimeUtils = __webpack_require__(143);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('Descriptors');\n\nvar Descriptors = function () {\n function Descriptors(runtimeURL, catalogue, runtimeConfiguration) {\n (0, _classCallCheck3.default)(this, Descriptors);\n\n if (!runtimeURL) throw Error('The descriptor need to know the runtime url to be used');\n if (!catalogue) throw Error('The descriptor needs the catalogue instance');\n if (!runtimeConfiguration) throw Error('The descriptor needs the runtime configuration');\n\n this.log = log;\n\n this.runtimeConfiguration = runtimeConfiguration;\n this.runtimeURL = runtimeURL;\n this.catalogue = catalogue;\n\n this.constraints = _runtimeUtils.runtimeUtils.runtimeCapabilities;\n }\n\n (0, _createClass3.default)(Descriptors, [{\n key: 'getHypertyDescriptor',\n value: function getHypertyDescriptor(hypertyURL) {\n return this.catalogue.getHypertyDescriptor(hypertyURL, true, this.constraints);\n }\n }, {\n key: 'getStubDescriptor',\n value: function getStubDescriptor(stubURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var domain = void 0;\n var protostub = void 0;\n var protoStubURL = void 0;\n\n var originDividedURL = (0, _utils.divideURL)(_this.runtimeURL);\n var originDomain = originDividedURL.domain;\n\n if (stubURL.includes('://')) {\n var dividedURL = (0, _utils.divideURL)(stubURL);\n domain = dividedURL.domain;\n var path = dividedURL.identity;\n\n if (path) {\n protostub = path.substring(path.lastIndexOf('/') + 1);\n } else {\n protostub = 'default';\n }\n } else {\n protostub = 'default';\n domain = stubURL;\n }\n\n protoStubURL = (0, _utils.buildURL)(_this.runtimeConfiguration, 'catalogueURLs', 'protocolstub', protostub);\n if (domain !== _this.runtimeConfiguration.domain) {\n if (!stubURL.indexOf('https') || !stubURL.indexOf('hyperty-catalogue')) {\n protoStubURL = stubURL;\n } else {\n\n // TODO: check how to load form different configuration domain\n var resource = (0, _utils.getConfigurationResources)(_this.runtimeConfiguration, 'catalogueURLs', 'protocolstub');\n protoStubURL = resource.prefix + domain + resource.suffix + protostub;\n }\n }\n\n log.log('Load ProtocolStub for domain, ' + domain + ' : ', protoStubURL);\n return _this.catalogue.getStubDescriptor(protoStubURL, true, _this.constraints).then(function (result) {\n\n resolve(result);\n }).catch(function (error) {\n\n // log.log('Error: ', error);\n\n protostub = domain;\n domain = originDomain;\n\n var resource = (0, _utils.getConfigurationResources)(_this.runtimeConfiguration, 'catalogueURLs', 'protocolstub');\n protoStubURL = resource.prefix + domain + resource.suffix + protostub;\n\n // log.log('Fallback -> Load Protocolstub for domain, ' + domain + ' : ', protostub);\n return _this.catalogue.getStubDescriptor(protoStubURL, true, _this.constraints);\n }).then(function (result) {\n resolve(result);\n }).catch(function (reason) {\n reject(reason);\n });\n });\n }\n }, {\n key: 'getIdpProxyDescriptor',\n value: function getIdpProxyDescriptor(idpProxyURL) {\n var _this2 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var domain = void 0;\n var idpproxy = void 0;\n\n var originDividedURL = (0, _utils.divideURL)(_this2.runtimeURL);\n var originDomain = originDividedURL.domain;\n var constraints = _this2.constraints;\n\n constraints.constraints.onlyAccessToken = true;\n constraints.constraints.onlyIdAssertionValidation = true;\n console.log('LOG HERE', constraints);\n if (idpProxyURL.includes('://')) {\n var dividedURL = (0, _utils.divideURL)(idpProxyURL);\n domain = dividedURL.domain;\n var path = dividedURL.identity;\n if (path) {\n idpproxy = path.substring(path.lastIndexOf('/') + 1);\n } else {\n idpproxy = 'default';\n }\n } else {\n idpproxy = 'default';\n domain = idpProxyURL;\n }\n\n var resource = (0, _utils.getConfigurationResources)(_this2.runtimeConfiguration, 'catalogueURLs', 'idpProxy');\n\n idpProxyURL = resource.prefix + domain + resource.suffix + idpproxy;\n // log.log('Load Idp Proxy for domain, ' + domain + ' : ', idpProxyURL);\n return _this2.catalogue.getIdpProxyDescriptor(idpProxyURL, true, constraints).then(function (result) {\n\n resolve(result);\n }).catch(function () {\n\n idpproxy = domain;\n domain = originDomain;\n\n idpProxyURL = (0, _utils.buildURL)(_this2.runtimeConfiguration, 'catalogueURLs', 'idpProxy', idpproxy);\n\n // log.log('Load Idp Proxy for domain, ' + domain + ' : ', idpProxyURL);\n return _this2.catalogue.getIdpProxyDescriptor(idpProxyURL, true, constraints);\n }).then(function (result) {\n resolve(result);\n }).catch(function (reason) {\n reject(reason);\n });\n });\n }\n }]);\n return Descriptors;\n}();\n\nexports.default = Descriptors;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDk3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ydW50aW1lL0Rlc2NyaXB0b3JzLmpzP2ZjZDgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaXZpZGVVUkwsIGdldENvbmZpZ3VyYXRpb25SZXNvdXJjZXMsIGJ1aWxkVVJMfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5pbXBvcnQgeyBydW50aW1lVXRpbHMgfSBmcm9tICcuL3J1bnRpbWVVdGlscyc7XG5cbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignRGVzY3JpcHRvcnMnKTtcblxuY2xhc3MgRGVzY3JpcHRvcnMge1xuXG4gIGNvbnN0cnVjdG9yKHJ1bnRpbWVVUkwsIGNhdGFsb2d1ZSwgcnVudGltZUNvbmZpZ3VyYXRpb24pIHtcbiAgICBpZiAoIXJ1bnRpbWVVUkwpIHRocm93IEVycm9yKCdUaGUgZGVzY3JpcHRvciBuZWVkIHRvIGtub3cgdGhlIHJ1bnRpbWUgdXJsIHRvIGJlIHVzZWQnKTtcbiAgICBpZiAoIWNhdGFsb2d1ZSkgdGhyb3cgRXJyb3IoJ1RoZSBkZXNjcmlwdG9yIG5lZWRzIHRoZSBjYXRhbG9ndWUgaW5zdGFuY2UnKTtcbiAgICBpZiAoIXJ1bnRpbWVDb25maWd1cmF0aW9uKSB0aHJvdyBFcnJvcignVGhlIGRlc2NyaXB0b3IgbmVlZHMgdGhlIHJ1bnRpbWUgY29uZmlndXJhdGlvbicpO1xuXG4gICAgdGhpcy5sb2cgPSBsb2c7XG5cbiAgICB0aGlzLnJ1bnRpbWVDb25maWd1cmF0aW9uID0gcnVudGltZUNvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5ydW50aW1lVVJMID0gcnVudGltZVVSTDtcbiAgICB0aGlzLmNhdGFsb2d1ZSA9IGNhdGFsb2d1ZTtcblxuICAgIHRoaXMuY29uc3RyYWludHMgPSBydW50aW1lVXRpbHMucnVudGltZUNhcGFiaWxpdGllcztcbiAgfVxuXG4gIGdldEh5cGVydHlEZXNjcmlwdG9yKGh5cGVydHlVUkwpIHtcbiAgICByZXR1cm4gdGhpcy5jYXRhbG9ndWUuZ2V0SHlwZXJ0eURlc2NyaXB0b3IoaHlwZXJ0eVVSTCwgdHJ1ZSwgdGhpcy5jb25zdHJhaW50cyk7XG4gIH1cblxuICBnZXRTdHViRGVzY3JpcHRvcihzdHViVVJMKSB7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBsZXQgZG9tYWluO1xuICAgICAgbGV0IHByb3Rvc3R1YjtcbiAgICAgIGxldCBwcm90b1N0dWJVUkw7XG5cbiAgICAgIGxldCBvcmlnaW5EaXZpZGVkVVJMID0gZGl2aWRlVVJMKHRoaXMucnVudGltZVVSTCk7XG4gICAgICBsZXQgb3JpZ2luRG9tYWluID0gb3JpZ2luRGl2aWRlZFVSTC5kb21haW47XG5cbiAgICAgIGlmIChzdHViVVJMLmluY2x1ZGVzKCc6Ly8nKSkge1xuICAgICAgICBsZXQgZGl2aWRlZFVSTCA9IGRpdmlkZVVSTChzdHViVVJMKTtcbiAgICAgICAgZG9tYWluID0gZGl2aWRlZFVSTC5kb21haW47XG4gICAgICAgIGxldCBwYXRoID0gZGl2aWRlZFVSTC5pZGVudGl0eTtcblxuICAgICAgICBpZiAocGF0aCkge1xuICAgICAgICAgIHByb3Rvc3R1YiA9IHBhdGguc3Vic3RyaW5nKHBhdGgubGFzdEluZGV4T2YoJy8nKSArIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb3Rvc3R1YiA9ICdkZWZhdWx0JztcbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm90b3N0dWIgPSAnZGVmYXVsdCc7XG4gICAgICAgIGRvbWFpbiA9IHN0dWJVUkw7XG4gICAgICB9XG5cbiAgICAgIHByb3RvU3R1YlVSTCA9IGJ1aWxkVVJMKHRoaXMucnVudGltZUNvbmZpZ3VyYXRpb24sICdjYXRhbG9ndWVVUkxzJywgJ3Byb3RvY29sc3R1YicsIHByb3Rvc3R1Yik7XG4gICAgICBpZiAoZG9tYWluICE9PSB0aGlzLnJ1bnRpbWVDb25maWd1cmF0aW9uLmRvbWFpbikge1xuICAgICAgICBpZiAoIXN0dWJVUkwuaW5kZXhPZignaHR0cHMnKSB8fCAhc3R1YlVSTC5pbmRleE9mKCdoeXBlcnR5LWNhdGFsb2d1ZScpKSB7XG4gICAgICAgICAgcHJvdG9TdHViVVJMID0gc3R1YlVSTDtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgIC8vIFRPRE86IGNoZWNrIGhvdyB0byBsb2FkIGZvcm0gZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gZG9tYWluXG4gICAgICAgICAgbGV0IHJlc291cmNlID0gZ2V0Q29uZmlndXJhdGlvblJlc291cmNlcyh0aGlzLnJ1bnRpbWVDb25maWd1cmF0aW9uLCAnY2F0YWxvZ3VlVVJMcycsICdwcm90b2NvbHN0dWInKTtcbiAgICAgICAgICBwcm90b1N0dWJVUkwgPSByZXNvdXJjZS5wcmVmaXggKyBkb21haW4gKyByZXNvdXJjZS5zdWZmaXggKyBwcm90b3N0dWI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbG9nLmxvZygnTG9hZCBQcm90b2NvbFN0dWIgZm9yIGRvbWFpbiwgJyArIGRvbWFpbiArICcgOiAnLCBwcm90b1N0dWJVUkwpO1xuICAgICAgcmV0dXJuIHRoaXMuY2F0YWxvZ3VlLmdldFN0dWJEZXNjcmlwdG9yKHByb3RvU3R1YlVSTCwgdHJ1ZSwgdGhpcy5jb25zdHJhaW50cykudGhlbigocmVzdWx0KSA9PiB7XG5cbiAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuXG4gICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcblxuICAgICAgICAvLyBsb2cubG9nKCdFcnJvcjogJywgZXJyb3IpO1xuXG4gICAgICAgIHByb3Rvc3R1YiA9IGRvbWFpbjtcbiAgICAgICAgZG9tYWluID0gb3JpZ2luRG9tYWluO1xuXG4gICAgICAgIGxldCByZXNvdXJjZSA9IGdldENvbmZpZ3VyYXRpb25SZXNvdXJjZXModGhpcy5ydW50aW1lQ29uZmlndXJhdGlvbiwgJ2NhdGFsb2d1ZVVSTHMnLCAncHJvdG9jb2xzdHViJyk7XG4gICAgICAgIHByb3RvU3R1YlVSTCA9IHJlc291cmNlLnByZWZpeCArIGRvbWFpbiArIHJlc291cmNlLnN1ZmZpeCArIHByb3Rvc3R1YjtcblxuICAgICAgICAvLyBsb2cubG9nKCdGYWxsYmFjayAtPiBMb2FkIFByb3RvY29sc3R1YiBmb3IgZG9tYWluLCAnICsgZG9tYWluICsgJyA6ICcsIHByb3Rvc3R1Yik7XG4gICAgICAgIHJldHVybiB0aGlzLmNhdGFsb2d1ZS5nZXRTdHViRGVzY3JpcHRvcihwcm90b1N0dWJVUkwsIHRydWUsIHRoaXMuY29uc3RyYWludHMpO1xuICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcbiAgICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgICB9KTtcblxuICAgIH0pO1xuICB9XG5cbiAgZ2V0SWRwUHJveHlEZXNjcmlwdG9yKGlkcFByb3h5VVJMKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgbGV0IGRvbWFpbjtcbiAgICAgIGxldCBpZHBwcm94eTtcblxuICAgICAgbGV0IG9yaWdpbkRpdmlkZWRVUkwgPSBkaXZpZGVVUkwodGhpcy5ydW50aW1lVVJMKTtcbiAgICAgIGxldCBvcmlnaW5Eb21haW4gPSBvcmlnaW5EaXZpZGVkVVJMLmRvbWFpbjtcbiAgICAgIGxldCBjb25zdHJhaW50cyA9IHRoaXMuY29uc3RyYWludHM7XG5cbiAgICAgIGNvbnN0cmFpbnRzLmNvbnN0cmFpbnRzLm9ubHlBY2Nlc3NUb2tlbiA9IHRydWU7XG4gICAgICBjb25zdHJhaW50cy5jb25zdHJhaW50cy5vbmx5SWRBc3NlcnRpb25WYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUubG9nKCdMT0cgSEVSRScsIGNvbnN0cmFpbnRzKTtcbiAgICAgIGlmIChpZHBQcm94eVVSTC5pbmNsdWRlcygnOi8vJykpIHtcbiAgICAgICAgbGV0IGRpdmlkZWRVUkwgPSBkaXZpZGVVUkwoaWRwUHJveHlVUkwpO1xuICAgICAgICBkb21haW4gPSBkaXZpZGVkVVJMLmRvbWFpbjtcbiAgICAgICAgbGV0IHBhdGggPSBkaXZpZGVkVVJMLmlkZW50aXR5O1xuICAgICAgICBpZiAocGF0aCkge1xuICAgICAgICAgIGlkcHByb3h5ID0gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZignLycpICsgMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWRwcHJveHkgPSAnZGVmYXVsdCc7XG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWRwcHJveHkgPSAnZGVmYXVsdCc7XG4gICAgICAgIGRvbWFpbiA9IGlkcFByb3h5VVJMO1xuICAgICAgfVxuXG5cbiAgICAgIGxldCByZXNvdXJjZSA9IGdldENvbmZpZ3VyYXRpb25SZXNvdXJjZXModGhpcy5ydW50aW1lQ29uZmlndXJhdGlvbiwgJ2NhdGFsb2d1ZVVSTHMnLCAnaWRwUHJveHknKTtcblxuICAgICAgaWRwUHJveHlVUkwgPSByZXNvdXJjZS5wcmVmaXggKyBkb21haW4gKyByZXNvdXJjZS5zdWZmaXggKyBpZHBwcm94eTtcbiAgICAgIC8vIGxvZy5sb2coJ0xvYWQgSWRwIFByb3h5IGZvciBkb21haW4sICcgKyBkb21haW4gKyAnIDogJywgaWRwUHJveHlVUkwpO1xuICAgICAgcmV0dXJuIHRoaXMuY2F0YWxvZ3VlLmdldElkcFByb3h5RGVzY3JpcHRvcihpZHBQcm94eVVSTCwgdHJ1ZSwgY29uc3RyYWludHMpLnRoZW4oKHJlc3VsdCkgPT4ge1xuXG4gICAgICAgIHJlc29sdmUocmVzdWx0KTtcblxuICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuXG4gICAgICAgIGlkcHByb3h5ID0gZG9tYWluO1xuICAgICAgICBkb21haW4gPSBvcmlnaW5Eb21haW47XG5cbiAgICAgICAgaWRwUHJveHlVUkwgPSBidWlsZFVSTCh0aGlzLnJ1bnRpbWVDb25maWd1cmF0aW9uLCAnY2F0YWxvZ3VlVVJMcycsICdpZHBQcm94eScsIGlkcHByb3h5KTtcblxuICAgICAgICAvLyBsb2cubG9nKCdMb2FkIElkcCBQcm94eSBmb3IgZG9tYWluLCAnICsgZG9tYWluICsgJyA6ICcsIGlkcFByb3h5VVJMKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2F0YWxvZ3VlLmdldElkcFByb3h5RGVzY3JpcHRvcihpZHBQcm94eVVSTCwgdHJ1ZSwgY29uc3RyYWludHMpO1xuICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcbiAgICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgICB9KTtcblxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERlc2NyaXB0b3JzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9ydW50aW1lL0Rlc2NyaXB0b3JzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBOzs7OztBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7OztBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7OztBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///497\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _logLevels = __webpack_require__(201);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Class where message bus handlers are built. To be used by the RuntimeUA to initialise the runtime UA.\n */\n\nvar log = logger.getLogger('RuntimeUA');\n\n// Log System\n\nvar MsgBusHandlers = function () {\n function MsgBusHandlers(pep, idm, crypto) {\n (0, _classCallCheck3.default)(this, MsgBusHandlers);\n\n if (!pep) throw Error('[MsgBusHandlers] pep input paramenter is mandatory');\n if (!idm) throw Error('[MsgBusHandlers] idm input paramente is mandatory');\n if (!crypto) throw Error('[MsgBusHandlers] crypto input paramente is mandatory');\n\n this.policyEngine = pep;\n this.identityManager = idm;\n this.cryptoManager = crypto;\n }\n\n // Policy based access control for incoming messages\n\n (0, _createClass3.default)(MsgBusHandlers, [{\n key: 'pepInHandler',\n get: function get() {\n var _this = this;\n\n return function (ctx) {\n _this.policyEngine.authorise(ctx.msg, true).then(function (changedMgs) {\n ctx.msg = changedMgs;\n ctx.next();\n }).catch(function (reason) {\n log.error(reason);\n ctx.fail(reason);\n });\n };\n }\n\n // Policy based access control for outgoing messages\n\n }, {\n key: 'pepOutHandler',\n get: function get() {\n var _this = this;\n return function (ctx) {\n _this.policyEngine.authorise(ctx.msg, false).then(function (changedMgs) {\n ctx.msg = changedMgs;\n ctx.next();\n }).catch(function (reason) {\n log.error(reason);\n ctx.fail(reason);\n });\n };\n }\n\n // Add Identity info to messages\n\n }, {\n key: 'idmHandler',\n get: function get() {\n var _this = this;\n return function (ctx) {\n _this.identityManager.processMessage(ctx.msg).then(function (changedMgs) {\n ctx.msg = changedMgs;\n ctx.next();\n }).catch(function (reason) {\n log.error(reason);\n ctx.fail(reason);\n });\n };\n }\n\n // encrypt messages\n\n }, {\n key: 'encryptHandler',\n get: function get() {\n var _this = this;\n return function (ctx) {\n _this.cryptoManager.encryptMessage(ctx.msg).then(function (changedMgs) {\n ctx.msg = changedMgs;\n ctx.next();\n }).catch(function (reason) {\n log.error(reason);\n ctx.fail(reason);\n });\n };\n }\n\n // decrypt messages\n\n }, {\n key: 'decryptHandler',\n get: function get() {\n var _this = this;\n return function (ctx) {\n _this.cryptoManager.decryptMessage(ctx.msg).then(function (changedMgs) {\n ctx.msg = changedMgs;\n ctx.next();\n }).catch(function (reason) {\n log.warn(reason);\n ctx.fail(reason);\n });\n };\n }\n }]);\n return MsgBusHandlers;\n}();\n\nexports.default = MsgBusHandlers;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDk4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ydW50aW1lL01zZ0J1c0hhbmRsZXJzLmpzPzZiYmEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ2xhc3Mgd2hlcmUgbWVzc2FnZSBidXMgaGFuZGxlcnMgYXJlIGJ1aWx0LiBUbyBiZSB1c2VkIGJ5IHRoZSBSdW50aW1lVUEgdG8gaW5pdGlhbGlzZSB0aGUgcnVudGltZSBVQS5cbiAqL1xuXG5pbXBvcnQgeyBsb2cgYXMgbG9nTGV2ZWxzIH0gZnJvbSAnLi4vbG9nTGV2ZWxzJztcblxuLy8gTG9nIFN5c3RlbVxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdSdW50aW1lVUEnKTtcblxuY2xhc3MgTXNnQnVzSGFuZGxlcnMge1xuXG4gIGNvbnN0cnVjdG9yKHBlcCwgaWRtLCBjcnlwdG8pIHtcbiAgICBpZiAoIXBlcCkgdGhyb3cgRXJyb3IoJ1tNc2dCdXNIYW5kbGVyc10gcGVwIGlucHV0IHBhcmFtZW50ZXIgaXMgbWFuZGF0b3J5Jyk7XG4gICAgaWYgKCFpZG0pIHRocm93IEVycm9yKCdbTXNnQnVzSGFuZGxlcnNdIGlkbSBpbnB1dCBwYXJhbWVudGUgaXMgbWFuZGF0b3J5Jyk7XG4gICAgaWYgKCFjcnlwdG8pIHRocm93IEVycm9yKCdbTXNnQnVzSGFuZGxlcnNdIGNyeXB0byBpbnB1dCBwYXJhbWVudGUgaXMgbWFuZGF0b3J5Jyk7XG5cbiAgICB0aGlzLnBvbGljeUVuZ2luZSA9IHBlcDtcbiAgICB0aGlzLmlkZW50aXR5TWFuYWdlciA9IGlkbTtcbiAgICB0aGlzLmNyeXB0b01hbmFnZXIgPSBjcnlwdG87XG4gIH1cblxuICAvLyBQb2xpY3kgYmFzZWQgYWNjZXNzIGNvbnRyb2wgZm9yIGluY29taW5nIG1lc3NhZ2VzXG5cbiAgZ2V0IHBlcEluSGFuZGxlcigpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIChjdHgpID0+IHtcbiAgICAgIF90aGlzLnBvbGljeUVuZ2luZS5hdXRob3Jpc2UoY3R4Lm1zZywgdHJ1ZSkudGhlbigoY2hhbmdlZE1ncykgPT4ge1xuICAgICAgICBjdHgubXNnID0gY2hhbmdlZE1ncztcbiAgICAgICAgY3R4Lm5leHQoKTtcbiAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcbiAgICAgICAgbG9nLmVycm9yKHJlYXNvbik7XG4gICAgICAgIGN0eC5mYWlsKHJlYXNvbik7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gIH1cblxuICAvLyBQb2xpY3kgYmFzZWQgYWNjZXNzIGNvbnRyb2wgZm9yIG91dGdvaW5nIG1lc3NhZ2VzXG4gIGdldCBwZXBPdXRIYW5kbGVyKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIChjdHgpID0+IHtcbiAgICAgIF90aGlzLnBvbGljeUVuZ2luZS5hdXRob3Jpc2UoY3R4Lm1zZywgZmFsc2UpLnRoZW4oKGNoYW5nZWRNZ3MpID0+IHtcbiAgICAgICAgY3R4Lm1zZyA9IGNoYW5nZWRNZ3M7XG4gICAgICAgIGN0eC5uZXh0KCk7XG4gICAgICB9KS5jYXRjaCgocmVhc29uKSA9PiB7XG4gICAgICAgIGxvZy5lcnJvcihyZWFzb24pO1xuICAgICAgICBjdHguZmFpbChyZWFzb24pO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIEFkZCBJZGVudGl0eSBpbmZvIHRvIG1lc3NhZ2VzXG4gIGdldCBpZG1IYW5kbGVyKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIChjdHgpID0+IHtcbiAgICAgIF90aGlzLmlkZW50aXR5TWFuYWdlci5wcm9jZXNzTWVzc2FnZShjdHgubXNnKS50aGVuKChjaGFuZ2VkTWdzKSA9PiB7XG4gICAgICAgIGN0eC5tc2cgPSBjaGFuZ2VkTWdzO1xuICAgICAgICBjdHgubmV4dCgpO1xuICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xuICAgICAgICBsb2cuZXJyb3IocmVhc29uKTtcbiAgICAgICAgY3R4LmZhaWwocmVhc29uKTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cblxuICAvLyBlbmNyeXB0IG1lc3NhZ2VzXG5cbiAgZ2V0IGVuY3J5cHRIYW5kbGVyKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIChjdHgpID0+IHtcbiAgICAgIF90aGlzLmNyeXB0b01hbmFnZXIuZW5jcnlwdE1lc3NhZ2UoY3R4Lm1zZykudGhlbigoY2hhbmdlZE1ncykgPT4ge1xuICAgICAgICBjdHgubXNnID0gY2hhbmdlZE1ncztcbiAgICAgICAgY3R4Lm5leHQoKTtcbiAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcbiAgICAgICAgbG9nLmVycm9yKHJlYXNvbik7XG4gICAgICAgIGN0eC5mYWlsKHJlYXNvbik7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gIH1cblxuICAvLyBkZWNyeXB0IG1lc3NhZ2VzXG5cbiAgZ2V0IGRlY3J5cHRIYW5kbGVyKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIChjdHgpID0+IHtcbiAgICAgIF90aGlzLmNyeXB0b01hbmFnZXIuZGVjcnlwdE1lc3NhZ2UoY3R4Lm1zZykudGhlbigoY2hhbmdlZE1ncykgPT4ge1xuICAgICAgICBjdHgubXNnID0gY2hhbmdlZE1ncztcbiAgICAgICAgY3R4Lm5leHQoKTtcbiAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcbiAgICAgICAgbG9nLndhcm4ocmVhc29uKTtcbiAgICAgICAgY3R4LmZhaWwocmVhc29uKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IE1zZ0J1c0hhbmRsZXJzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9ydW50aW1lL01zZ0J1c0hhbmRsZXJzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBREE7QUFDQTs7Ozs7QUFSQTs7OztBQVFBO0FBQ0E7QUFIQTtBQUNBO0FBR0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///498\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _GraphConnectorLight = __webpack_require__(500);\n\nvar _GraphConnectorLight2 = _interopRequireDefault(_GraphConnectorLight);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _GraphConnectorLight2.default; // let GraphConnector;\n// if (process.env.MODE !== 'light') {\n// GraphConnector = require('./GraphConnectorBase');\n// if (GraphConnector && GraphConnector.hasOwnProperty('default')) GraphConnector = GraphConnector.default;\n// } else {\n// GraphConnector = require('./GraphConnectorLight');\n// if (GraphConnector && GraphConnector.hasOwnProperty('default')) GraphConnector = GraphConnector.default;\n// }\n\n/**\n * The GraphConnectorBase have some problems with the size;\n * @deprecated Due to some problems increase a lot the file size\n */\n// import GraphConnector from './GraphConnectorBase';\n\n/**\n *\n * @experimental used instead of GraphConnectorBase;\n */\n\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDk5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ncmFwaGNvbm5lY3Rvci9HcmFwaENvbm5lY3Rvci5qcz84MGM4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGxldCBHcmFwaENvbm5lY3Rvcjtcbi8vIGlmIChwcm9jZXNzLmVudi5NT0RFICE9PSAnbGlnaHQnKSB7XG4vLyAgIEdyYXBoQ29ubmVjdG9yID0gcmVxdWlyZSgnLi9HcmFwaENvbm5lY3RvckJhc2UnKTtcbi8vICAgaWYgKEdyYXBoQ29ubmVjdG9yICYmIEdyYXBoQ29ubmVjdG9yLmhhc093blByb3BlcnR5KCdkZWZhdWx0JykpIEdyYXBoQ29ubmVjdG9yID0gR3JhcGhDb25uZWN0b3IuZGVmYXVsdDtcbi8vIH0gZWxzZSB7XG4vLyAgIEdyYXBoQ29ubmVjdG9yID0gcmVxdWlyZSgnLi9HcmFwaENvbm5lY3RvckxpZ2h0Jyk7XG4vLyAgIGlmIChHcmFwaENvbm5lY3RvciAmJiAgR3JhcGhDb25uZWN0b3IuaGFzT3duUHJvcGVydHkoJ2RlZmF1bHQnKSkgR3JhcGhDb25uZWN0b3IgPSBHcmFwaENvbm5lY3Rvci5kZWZhdWx0O1xuLy8gfVxuXG4vKipcbiAqIFRoZSBHcmFwaENvbm5lY3RvckJhc2UgaGF2ZSBzb21lIHByb2JsZW1zIHdpdGggdGhlIHNpemU7XG4gKiBAZGVwcmVjYXRlZCBEdWUgdG8gc29tZSBwcm9ibGVtcyBpbmNyZWFzZSBhIGxvdCB0aGUgZmlsZSBzaXplXG4gKi9cbi8vIGltcG9ydCBHcmFwaENvbm5lY3RvciBmcm9tICcuL0dyYXBoQ29ubmVjdG9yQmFzZSc7XG5cbi8qKlxuICpcbiAqIEBleHBlcmltZW50YWwgdXNlZCBpbnN0ZWFkIG9mIEdyYXBoQ29ubmVjdG9yQmFzZTtcbiAqL1xuaW1wb3J0IEdyYXBoQ29ubmVjdG9yIGZyb20gJy4vR3JhcGhDb25uZWN0b3JMaWdodCc7XG5cbmV4cG9ydCBkZWZhdWx0IEdyYXBoQ29ubmVjdG9yO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9ncmFwaGNvbm5lY3Rvci9HcmFwaENvbm5lY3Rvci5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBbUJBO0FBQ0E7Ozs7O0FBQ0E7QUFwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBOzs7OztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///499\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\n/**\n * The Graph Connector contains the contact list/address book.\n * @abstract\n * @experimental\n * @author beierle@tu-berlin.de\n *\n *\n */\nvar GraphConnector = function GraphConnector(hypertyRuntimeURL, messageBus, storageManager) {\n (0, _classCallCheck3.default)(this, GraphConnector);\n};\n\nexports.default = GraphConnector;\nmodule.exports = exports["default"];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9ncmFwaGNvbm5lY3Rvci9HcmFwaENvbm5lY3RvckxpZ2h0LmpzP2ZmZGYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiAqIENvcHlyaWdodCAyMDE2IElORVNDLUlEXG4gKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcbiAqIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4gKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcbiAqIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcbiAqIENvcHlyaWdodCAyMDE2IEFwaXplZVxuICogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqL1xuXG4vKipcbiAqIFRoZSBHcmFwaCBDb25uZWN0b3IgY29udGFpbnMgdGhlIGNvbnRhY3QgbGlzdC9hZGRyZXNzIGJvb2suXG4gKiBAYWJzdHJhY3RcbiAqIEBleHBlcmltZW50YWxcbiAqIEBhdXRob3IgYmVpZXJsZUB0dS1iZXJsaW4uZGVcbiAqXG4gKlxuICovXG5jbGFzcyBHcmFwaENvbm5lY3RvciB7XG5cbiAgY29uc3RydWN0b3IoaHlwZXJ0eVJ1bnRpbWVVUkwsIG1lc3NhZ2VCdXMsIHN0b3JhZ2VNYW5hZ2VyKSB7XG5cbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IEdyYXBoQ29ubmVjdG9yO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9ncmFwaGNvbm5lY3Rvci9HcmFwaENvbm5lY3RvckxpZ2h0LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7Ozs7Ozs7O0FBUUE7QUFFQTtBQUVBO0FBQ0E7QUFHQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///500\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(11);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('CoreDiscovery'); /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\n// Log System\n\n/**\n* Core Discovery interface\n* Class to allow applications to search for hyperties and DataObjects using the message bus\n*/\nvar CoreDiscovery = function () {\n\n /**\n * To initialise the Discovery, which will provide the support for hyperties to\n * query users registered in outside the internal core.\n * @param {MessageBus} msgbus msgbus\n * @param {RuntimeURL} runtimeURL runtimeURL\n * @param {graphConnector} graphConnector\n */\n function CoreDiscovery(runtimeURL, msgBus, graphConnector, runtimeFactory, registry) {\n (0, _classCallCheck3.default)(this, CoreDiscovery);\n\n if (!runtimeFactory) throw Error('The catalogue needs the runtimeFactory');\n\n var _this = this;\n this._messageBus = msgBus;\n _this.graphConnector = graphConnector;\n _this.httpRequest = runtimeFactory.createHttpRequest();\n _this.domain = (0, _utils.divideURL)(runtimeURL).domain;\n _this.discoveryURL = runtimeURL + '/discovery/';\n _this.registry = registry;\n\n _this.messageBus.addListener(_this.discoveryURL, function (msg) {\n\n _this.discoveryManager(msg).then(function (result) {\n\n //FLOW-OUT: message response\n _this.messageBus.postMessage({\n id: msg.id,\n type: 'response',\n from: msg.to,\n to: msg.from,\n body: {\n code: 200,\n value: result\n }\n });\n }).catch(function (err) {\n var description = void 0;\n var code = void 0;\n\n if (err === 'GraphConnector') {\n description = 'This search is not available at the moment. Try later.';\n code = 500;\n } else {\n description = 'Not Found';\n code = 404;\n }\n\n //FLOW-OUT: error message response\n _this.messageBus.postMessage({\n id: msg.id,\n type: 'response',\n from: msg.to,\n to: msg.from,\n body: {\n code: code,\n description: description\n }\n });\n });\n });\n }\n\n /**\n * Returns the MessageBus.\n */\n\n\n (0, _createClass3.default)(CoreDiscovery, [{\n key: 'discoveryManager',\n\n\n /* function to decide what discovery method to call and later return the response msg */\n value: function discoveryManager(msg) {\n var _this = this;\n var domain = (0, _utils.divideURL)(msg.from).domain;\n var atributes = msg.body.resource.split('/').filter(Boolean);\n var resources = [];\n var dataSchemes = [];\n\n log.log('[CoreDiscovery.discoveryManager] received: ', msg);\n\n if (msg.body.criteria) {\n if (msg.body.criteria.resources) {\n resources = msg.body.criteria.resources;\n }\n if (msg.body.criteria.dataSchemes) {\n dataSchemes = msg.body.criteria.dataSchemes;\n }\n }\n\n switch (atributes[1]) {\n case 'user':\n if (atributes[0] == 'hyperty') {\n return _this.discoverHyperties(msg.body.resource.split('user/')[1], dataSchemes, resources, msg.body.criteria.domain);\n } else {\n return _this.discoverDataObjects(msg.body.resource.split('user/')[1], dataSchemes, resources, msg.body.criteria.domain);\n }\n break;\n\n case 'url':\n if (atributes[0] == 'hyperty') {\n return _this.discoverHypertyPerURL(msg.body.resource.split('url/')[1], msg.body.criteria.domain);\n } else {\n return _this.discoverDataObjectPerURL(msg.body.resource.split('url/')[1], msg.body.criteria.domain);\n }\n break;\n case 'name':\n return _this.discoverDataObjectsPerName(msg.body.resource.split('name/')[1], dataSchemes, resources, msg.body.criteria.domain);\n break;\n case 'reporter':\n return _this.discoverDataObjectsPerReporter(msg.body.resource.split('reporter/')[1], dataSchemes, resources, msg.body.criteria.domain);\n break;\n case 'guid':\n if (typeof _this.graphConnector !== 'undefined' && _this.graphConnector !== null) {\n if (atributes[0] == 'hyperty') {\n return _this.discoverHypertiesPerGUID(msg.body.resource.split('user-guid://')[1], dataSchemes, resources);\n } else {\n return _this.discoverDataObjectsPerGUID(msg.body.resource.split('user-guid://')[1], dataSchemes, resources);\n }\n break;\n } else {\n return _promise2.default.reject('GraphConnector');\n break;\n }\n case 'userprofile':\n if (typeof _this.graphConnector !== 'undefined' && _this.graphConnector !== null) {\n if (atributes[0] == 'hyperty') {\n return _this.discoverHypertiesPerUserProfileData(msg.body.resource.split('userprofile/')[1], dataSchemes, resources);\n } else {\n return _this.discoverDataObjectsPerUserProfileData(msg.body.resource.split('userprofile/')[1], dataSchemes, resources);\n }\n break;\n } else {\n return _promise2.default.reject('GraphConnector');\n break;\n }\n }\n }\n\n /**\n * Advanced Search for Hyperties registered in domain registry associated with some user identifier (eg email, name ...)\n * @param {String} userIdentifier\n * @param {Array} dataSchemes (Optional) types of hyperties schemas\n * @param {Array} resources (Optional) types of hyperties resources\n */\n\n }, {\n key: 'discoverHypertiesPerUserProfileData',\n value: function discoverHypertiesPerUserProfileData(userIdentifier, dataSchemes, resources) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n //translate user identifier (e.g. email, name...) into the associated GUIDs\n _this.discoverGUIDPerUserIdentifier(userIdentifier).then(function (guids) {\n\n var hypertiesPromises = guids.map(function (guid) {\n\n return new _promise2.default(function (resolve, reject) {\n _this.discoverHypertiesPerGUID(guid, dataSchemes, resources).then(function (hyperties) {\n resolve(hyperties);\n }).catch(function (err) {\n resolve([]);\n });\n });\n });\n\n _promise2.default.all(hypertiesPromises).then(function (hypertiesResult) {\n\n var hyperties = [].concat.apply([], hypertiesResult);\n\n if (hyperties.length === 0) {\n return reject('No hyperties were found');\n }\n\n resolve(hyperties);\n });\n }).catch(function (err) {\n return reject(err);\n });\n });\n }\n\n /**\n * Advanced Search for DataObjects registered in domain registry associated with some user identifier (eg email, name ...)\n * @param {String} userIdentifier\n * @param {Array} dataSchemes (Optional) types of hyperties schemas\n * @param {Array} resources (Optional) types of hyperties resources\n */\n\n }, {\n key: 'discoverDataObjectsPerUserProfileData',\n value: function discoverDataObjectsPerUserProfileData(userIdentifier, dataSchemes, resources) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n //translate user identifier (e.g. email, name...) into the associated GUIDs\n _this.discoverGUIDPerUserIdentifier(userIdentifier).then(function (guids) {\n\n var dataObjectsPromises = guids.map(function (guid) {\n\n return new _promise2.default(function (resolve, reject) {\n _this.discoverDataObjectsPerGUID(guid, dataSchemes, resources).then(function (dataObjects) {\n resolve(dataObjects);\n }).catch(function (err) {\n resolve([]);\n });\n });\n });\n\n _promise2.default.all(dataObjectsPromises).then(function (dataObjectsResult) {\n\n var dataObjects = [].concat.apply([], dataObjectsResult);\n\n if (dataObjects.length === 0) {\n return reject('No dataObjects were found');\n }\n\n resolve(dataObjects);\n });\n }).catch(function (err) {\n return reject(err);\n });\n });\n }\n\n /**\n * Advanced Search for Hyperties registered in domain registry associated with some GUID\n * @param {String} guid\n * @param {Array} dataSchemes (Optional) types of hyperties schemas\n * @param {Array} resources (Optional) types of hyperties resources\n */\n\n }, {\n key: 'discoverHypertiesPerGUID',\n value: function discoverHypertiesPerGUID(guid, dataSchemes, resources) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n //translate GUID into the user IDs to query the domain registry\n _this.discoverUserIdsPerGUID(guid).then(function (uids) {\n\n //translate user IDs into the associated hyperties registered in some domain\n var hypertiesPromises = uids.map(function (uid) {\n return new _promise2.default(function (resolve, reject) {\n _this.discoverHyperties(uid.uID, dataSchemes, resources, uid.domain).then(function (hyperties) {\n resolve(hyperties);\n }).catch(function (err) {\n resolve([]);\n });\n });\n });\n\n _promise2.default.all(hypertiesPromises).then(function (hypertiesResult) {\n\n var hyperties = [].concat.apply([], hypertiesResult);\n\n if (hyperties.length === 0) {\n return reject('No hyperties were found');\n }\n\n // log.log('Hyperties : ', hyperties);\n resolve(hyperties);\n });\n }).catch(function (err) {\n return reject(err);\n });\n });\n }\n\n /**\n * Advanced Search for DataObjects registered in domain registry associated with some GUID\n * @param {String} guid\n * @param {Array} dataSchemes (Optional) types of hyperties schemas\n * @param {Array} resources (Optional) types of hyperties resources\n */\n\n }, {\n key: 'discoverDataObjectsPerGUID',\n value: function discoverDataObjectsPerGUID(guid, dataSchemes, resources) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n //translate GUID into the user IDs to query the domain registry\n _this.discoverUserIdsPerGUID(guid).then(function (uids) {\n\n //translate user IDs into the associated dataObjects registered in some domain\n var dataObjectPromises = uids.map(function (uid) {\n return new _promise2.default(function (resolve, reject) {\n _this.discoverDataObjects(uid.uID, dataSchemes, resources, uid.domain).then(function (dataObjects) {\n resolve(dataObjects);\n }).catch(function (err) {\n resolve([]);\n });\n });\n });\n\n _promise2.default.all(dataObjectPromises).then(function (dataObjectsResult) {\n\n var dataObjects = [].concat.apply([], dataObjectsResult);\n\n if (dataObjects.length === 0) {\n return reject('No dataObjects were found');\n }\n\n // log.log('DataObjects : ', dataObjects);\n resolve(dataObjects);\n });\n }).catch(function (err) {\n return reject(err);\n });\n });\n }\n\n /** Advanced Search for Hyperties registered in domain registry and associated with some user ID\n * @param {String} user user identifier, either in url or email format\n * @param {Array} dataSchemes (Optional) types of hyperties schemas\n * @param {Array} resources (Optional) types of hyperties resources\n * @param {String} domain (Optional) domain of the registry to search\n */\n\n }, {\n key: 'discoverHyperties',\n value: function discoverHyperties(user, dataSchemes, resources, domain) {\n var _this = this;\n var activeDomain = void 0;\n\n activeDomain = !domain ? _this.domain : domain;\n\n var msg = {\n type: 'read',\n from: _this.discoveryURL,\n to: 'domain://registry.' + activeDomain,\n body: {}\n };\n\n if (user.indexOf('user://') > -1) {\n msg.body.resource = user;\n } else {\n msg.body.resource = '/hyperty/idp-identifier/' + user;\n }\n\n if (dataSchemes.length > 0) {\n if (!msg.body.criteria) {\n msg.body.criteria = {};\n }\n msg.body.criteria.dataSchemes = dataSchemes;\n }\n\n if (resources.length > 0) {\n if (!msg.body.criteria) {\n msg.body.criteria = {};\n }\n msg.body.criteria.resources = resources;\n }\n\n return new _promise2.default(function (resolve, reject) {\n // log.log(\"[CoreDiscovery.discoverHyperties] sending msg \", msg);\n\n _this.messageBus.postMessage(msg, function (reply) {\n\n // log.log(\"[CoreDiscovery.discoverHyperties] rcved reply \", reply);\n\n if (reply.body.code === 200 || reply.body.code === 500) {\n var hyperties = reply.body.value;\n\n var finalHyperties = [];\n for (var key in hyperties) {\n finalHyperties.push(hyperties[key]);\n }if (finalHyperties.length > 0) {\n // log.log(\"[CoreDiscovery.discoverHyperties] Hyperties Found: \", finalHyperties);\n resolve(finalHyperties);\n } else {\n return reject('No Hyperty was found');\n }\n } else {\n return reject('No Hyperty was found');\n }\n\n /*_this.registry.isLegacy(user).then((legacy) => {\n if (legacy) resolve([{hypertyID: user }])\n else return reject('No Hyperty was found');\n });*/\n });\n });\n }\n\n /** Advanced Search for DataObjects registered in domain registry and associated with some user ID\n * @param {String} user user identifier, either in url or email format\n * @param {Array} dataSchemes (Optional) types of dataObjects schemas\n * @param {Array} resources (Optional) types of dataObjects resources\n * @param {String} domain (Optional) domain of the registry to search\n */\n\n }, {\n key: 'discoverDataObjects',\n value: function discoverDataObjects(user, dataSchemes, resources, domain) {\n var _this = this;\n var activeDomain = void 0;\n var dataObjectsArray = [];\n\n activeDomain = !domain ? _this.domain : domain;\n\n return new _promise2.default(function (resolve, reject) {\n\n //translate user identifier (e.g. email, name...) into the associated hyperties\n _this.discoverHyperties(user, [], [], activeDomain).then(function (hyperties) {\n\n var finalHyperties = [];\n for (var key in hyperties) {\n finalHyperties.push(hyperties[key]);\n } //translate hyperties URLs into the associated dataObjects registered in some domain\n var dataObjectsPromises = finalHyperties.map(function (hyperty) {\n return new _promise2.default(function (resolve, reject) {\n _this.discoverDataObjectsPerReporter(hyperty.hypertyID, dataSchemes, resources, activeDomain).then(function (dataObject) {\n resolve(dataObject);\n }).catch(function (err) {\n resolve([]);\n });\n });\n });\n\n _promise2.default.all(dataObjectsPromises).then(function (dataObjectsResult) {\n\n var dataObjects = [].concat.apply([], dataObjectsResult);\n\n dataObjects.forEach(function (dataObject) {\n dataObjectsArray.push(dataObject);\n });\n\n var finalDataObjects = [];\n for (var key in dataObjectsArray) {\n finalDataObjects.push(dataObjectsArray[key]);\n }if (finalDataObjects.length === 0) {\n return reject('No dataObjects were found');\n }\n\n // log.log('DataObjects Found: ', finalDataObjects);\n resolve(finalDataObjects);\n });\n }).catch(function (err) {\n return reject(err);\n });\n });\n }\n\n /**\n * function to request about hyperties registered in domain registry, and\n * return the hyperty information, if found.\n * @param {String} url dataObject URL\n * @param {String} domain (Optional)\n * @return {Promise} Promise\n */\n\n }, {\n key: 'discoverHypertyPerURL',\n value: function discoverHypertyPerURL(url, domain) {\n var _this = this;\n var activeDomain = void 0;\n\n activeDomain = !domain ? _this.domain : domain;\n\n var msg = {\n type: 'read',\n from: _this.discoveryURL,\n to: 'domain://registry.' + activeDomain,\n body: {\n resource: url\n }\n };\n\n return new _promise2.default(function (resolve, reject) {\n\n _this.messageBus.postMessage(msg, function (reply) {\n\n if (reply.body.code !== 200 && reply.body.code !== 500) {\n return reject('No Hyperty was found');\n }\n\n var hyperty = reply.body.value;\n\n if (hyperty) {\n // log.log('Hyperty found: ', hyperty);\n resolve(hyperty);\n } else {\n return reject('No Hyperty was found');\n }\n });\n });\n }\n\n /**\n * function to request about dataObject registered in domain registry, and\n * return the dataObject information, if found.\n * @param {String} url dataObject URL\n * @param {String} domain (Optional)\n * @return {Promise} Promise\n */\n\n }, {\n key: 'discoverDataObjectPerURL',\n value: function discoverDataObjectPerURL(url, domain) {\n var _this = this;\n var activeDomain = void 0;\n\n activeDomain = !domain ? _this.domain : domain;\n\n var msg = {\n type: 'read',\n from: _this.discoveryURL,\n to: 'domain://registry.' + activeDomain,\n body: {\n resource: url\n }\n };\n\n return new _promise2.default(function (resolve, reject) {\n\n _this.messageBus.postMessage(msg, function (reply) {\n\n var dataObject = reply.body.value;\n\n if (dataObject) {\n // log.log('DataObject found: ', dataObject);\n resolve(dataObject);\n } else {\n return reject('DataObject not found');\n }\n });\n });\n }\n\n /** Advanced Search for dataObjects registered in domain registry\n * @param {String} name name of the dataObject\n * @param {Array} dataSchemes (Optional) types of dataObject schemas\n * @param {Array} resources (Optional) types of dataObject resources\n * @param {String} domain (Optional) domain of the registry to search\n */\n\n }, {\n key: 'discoverDataObjectsPerName',\n value: function discoverDataObjectsPerName(name, dataSchemes, resources, domain) {\n var _this = this;\n var activeDomain = void 0;\n\n activeDomain = !domain ? _this.domain : domain;\n\n var msg = {\n type: 'read',\n from: _this.discoveryURL,\n to: 'domain://registry.' + activeDomain,\n body: {\n resource: name\n }\n };\n\n if (dataSchemes.length > 0) {\n if (!msg.body.criteria) {\n msg.body.criteria = {};\n }\n msg.body.criteria.dataSchemes = dataSchemes;\n }\n\n if (resources.length > 0) {\n if (!msg.body.criteria) {\n msg.body.criteria = {};\n }\n msg.body.criteria.resources = resources;\n }\n\n return new _promise2.default(function (resolve, reject) {\n\n _this.messageBus.postMessage(msg, function (reply) {\n\n var dataObjects = reply.body.value;\n\n var finalDataObjects = [];\n for (var key in dataObjects) {\n finalDataObjects.push(dataObjects[key]);\n }if (finalDataObjects.length > 0) {\n // log.log(\"DataObjects Found: \", finalDataObjects);\n resolve(finalDataObjects);\n } else {\n return reject('No DataObject was found');\n }\n });\n });\n }\n\n /**\n * function to request about specific reporter dataObject registered in domain registry, and\n * return the dataObjects from that reporter.\n * @param {String} reporter dataObject reporter\n * @param {Array} scdataSchemeshema (Optional) types of dataObjects schemas\n * @param {Array} resources (Optional) types of dataObjects resources\n * @param {String} domain (Optional)\n */\n\n }, {\n key: 'discoverDataObjectsPerReporter',\n value: function discoverDataObjectsPerReporter(reporter, dataSchemes, resources, domain) {\n var _this = this;\n var activeDomain = void 0;\n\n activeDomain = !domain ? _this.domain : domain;\n\n var msg = {\n type: 'read',\n from: _this.discoveryURL,\n to: 'domain://registry.' + activeDomain,\n body: {\n resource: '/comm',\n criteria: {\n reporter: reporter\n }\n }\n };\n\n if (dataSchemes.length > 0) {\n msg.body.criteria.dataSchemes = dataSchemes;\n }\n\n if (resources.length > 0) {\n msg.body.criteria.resources = resources;\n }\n\n return new _promise2.default(function (resolve, reject) {\n\n _this.messageBus.postMessage(msg, function (reply) {\n\n var dataObjects = reply.body.value;\n\n var finalDataObjects = [];\n for (var key in dataObjects) {\n finalDataObjects.push(dataObjects[key]);\n }if (finalDataObjects.length > 0) {\n // log.log(\"DataObjects Found: \", finalDataObjects);\n resolve(finalDataObjects);\n } else {\n return reject('No DataObject was found');\n }\n });\n });\n }\n\n /**\n * function to request global registry about the user IDs associated with some GUID\n * @param {String} guid\n * @return {Promise} Promise\n */\n\n }, {\n key: 'discoverUserIdsPerGUID',\n value: function discoverUserIdsPerGUID(guid) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n // log.log(\"GO graphConnector:\", guid);\n\n _this.graphConnector.queryGlobalRegistry(guid).then(function (graphConnectorContactData) {\n\n // log.log('Information returned from Global Registry: ', graphConnectorContactData);\n\n if (typeof graphConnectorContactData === 'string' || !graphConnectorContactData) {\n return reject('Unsuccessful discover userIDs by GUID');\n } else {\n\n var userids = graphConnectorContactData.userIDs;\n\n if (userids.length === 0) {\n return reject('UserIDs not available');\n }\n\n resolve(userids);\n }\n }).catch(function (err) {\n return reject(err);\n });\n });\n }\n\n /**\n * function to request discovery service about the GUID associated with some user identifier (eg email, name ...)\n * @param {String} userIdentifier\n * @return {Promise} Promise\n */\n\n }, {\n key: 'discoverGUIDPerUserIdentifier',\n value: function discoverGUIDPerUserIdentifier(userIdentifier) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var lookupURLDiscoveryService = 'https://rethink.tlabscloud.com/discovery/rest/discover/lookup?searchquery=';\n _this.httpRequest.get(lookupURLDiscoveryService + userIdentifier).then(function (json) {\n // log.log('discover GUID by user identifier', json);\n\n var response = JSON.parse(json);\n var filteredGuid = response.results.filter(function (x) {\n return x.rethinkID != undefined;\n });\n\n if (filteredGuid.length === 0) {\n return reject('Unsuccessful discover GUID by user identifier');\n }\n\n var guids = filteredGuid.map(function (x) {\n return x.rethinkID;\n });\n\n return resolve(guids);\n }).catch(function (err) {\n // log.log(\"HTTP Request error: \", err);\n return reject(err);\n });\n });\n }\n }, {\n key: 'messageBus',\n get: function get() {\n return this._messageBus;\n }\n\n /**\n * Sets the MessageBus.\n * @param {MessageBus} messageBus The Message Bus.\n */\n ,\n set: function set(messageBus) {\n this._messageBus = messageBus;\n }\n }]);\n return CoreDiscovery;\n}();\n\nexports.default = CoreDiscovery;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9kaXNjb3ZlcnkvQ29yZURpc2NvdmVyeS5qcz8yMzdkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cblxuLy8gTG9nIFN5c3RlbVxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdDb3JlRGlzY292ZXJ5Jyk7XG5cblxuaW1wb3J0IHtkaXZpZGVVUkx9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcblxuLyoqXG4qIENvcmUgRGlzY292ZXJ5IGludGVyZmFjZVxuKiBDbGFzcyB0byBhbGxvdyBhcHBsaWNhdGlvbnMgdG8gc2VhcmNoIGZvciBoeXBlcnRpZXMgYW5kIERhdGFPYmplY3RzIHVzaW5nIHRoZSBtZXNzYWdlIGJ1c1xuKi9cbmNsYXNzIENvcmVEaXNjb3Zlcnkge1xuXG4gIC8qKlxuICAqIFRvIGluaXRpYWxpc2UgdGhlIERpc2NvdmVyeSwgd2hpY2ggd2lsbCBwcm92aWRlIHRoZSBzdXBwb3J0IGZvciBoeXBlcnRpZXMgdG9cbiAgKiBxdWVyeSB1c2VycyByZWdpc3RlcmVkIGluIG91dHNpZGUgdGhlIGludGVybmFsIGNvcmUuXG4gICogQHBhcmFtICB7TWVzc2FnZUJ1c30gICAgICAgICAgbXNnYnVzICAgICAgICAgICAgICAgIG1zZ2J1c1xuICAqIEBwYXJhbSAge1J1bnRpbWVVUkx9ICAgICAgICAgIHJ1bnRpbWVVUkwgICAgICAgICAgICBydW50aW1lVVJMXG4gICogQHBhcmFtICB7Z3JhcGhDb25uZWN0b3J9ICAgIGdyYXBoQ29ubmVjdG9yXG4gICovXG4gIGNvbnN0cnVjdG9yKHJ1bnRpbWVVUkwsIG1zZ0J1cywgZ3JhcGhDb25uZWN0b3IsIHJ1bnRpbWVGYWN0b3J5LCByZWdpc3RyeSkge1xuICAgIGlmICghcnVudGltZUZhY3RvcnkpIHRocm93IEVycm9yKCdUaGUgY2F0YWxvZ3VlIG5lZWRzIHRoZSBydW50aW1lRmFjdG9yeScpO1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICB0aGlzLl9tZXNzYWdlQnVzID0gbXNnQnVzO1xuICAgIF90aGlzLmdyYXBoQ29ubmVjdG9yID0gZ3JhcGhDb25uZWN0b3I7XG4gICAgX3RoaXMuaHR0cFJlcXVlc3QgPSBydW50aW1lRmFjdG9yeS5jcmVhdGVIdHRwUmVxdWVzdCgpO1xuICAgIF90aGlzLmRvbWFpbiA9IGRpdmlkZVVSTChydW50aW1lVVJMKS5kb21haW47XG4gICAgX3RoaXMuZGlzY292ZXJ5VVJMID0gcnVudGltZVVSTCArICcvZGlzY292ZXJ5Lyc7XG4gICAgX3RoaXMucmVnaXN0cnkgPSByZWdpc3RyeTtcblxuICAgIF90aGlzLm1lc3NhZ2VCdXMuYWRkTGlzdGVuZXIoX3RoaXMuZGlzY292ZXJ5VVJMLCAobXNnKSA9PiB7XG5cbiAgICAgIF90aGlzLmRpc2NvdmVyeU1hbmFnZXIobXNnKS50aGVuKHJlc3VsdCA9PntcblxuICAgICAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHJlc3BvbnNlXG4gICAgICAgIF90aGlzLm1lc3NhZ2VCdXMucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIGlkOiBtc2cuaWQsXG4gICAgICAgICAgdHlwZTogJ3Jlc3BvbnNlJyxcbiAgICAgICAgICBmcm9tOiBtc2cudG8sXG4gICAgICAgICAgdG86IG1zZy5mcm9tLFxuICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgIGNvZGU6IDIwMCxcbiAgICAgICAgICAgIHZhbHVlOiByZXN1bHRcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgIGxldCBkZXNjcmlwdGlvbjtcbiAgICAgICAgICBsZXQgY29kZTtcblxuICAgICAgICAgIGlmIChlcnIgPT09ICdHcmFwaENvbm5lY3RvcicpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ1RoaXMgc2VhcmNoIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIG1vbWVudC4gVHJ5IGxhdGVyLic7XG4gICAgICAgICAgICBjb2RlID0gNTAwO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdOb3QgRm91bmQnO1xuICAgICAgICAgICAgY29kZSA9IDQwNDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvL0ZMT1ctT1VUOiBlcnJvciBtZXNzYWdlIHJlc3BvbnNlXG4gICAgICAgICAgX3RoaXMubWVzc2FnZUJ1cy5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICBpZDogbXNnLmlkLFxuICAgICAgICAgICAgdHlwZTogJ3Jlc3BvbnNlJyxcbiAgICAgICAgICAgIGZyb206IG1zZy50byxcbiAgICAgICAgICAgIHRvOiBtc2cuZnJvbSxcbiAgICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgICAgY29kZTogY29kZSxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIE1lc3NhZ2VCdXMuXG4gICAqL1xuICBnZXQgbWVzc2FnZUJ1cygpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZUJ1cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBNZXNzYWdlQnVzLlxuICAgKiBAcGFyYW0ge01lc3NhZ2VCdXN9ICAgICAgICAgICBtZXNzYWdlQnVzICAgIFRoZSBNZXNzYWdlIEJ1cy5cbiAgICovXG4gIHNldCBtZXNzYWdlQnVzKG1lc3NhZ2VCdXMpIHtcbiAgICB0aGlzLl9tZXNzYWdlQnVzID0gbWVzc2FnZUJ1cztcbiAgfVxuXG4gIC8qIGZ1bmN0aW9uIHRvIGRlY2lkZSB3aGF0IGRpc2NvdmVyeSBtZXRob2QgdG8gY2FsbCBhbmQgbGF0ZXIgcmV0dXJuIHRoZSByZXNwb25zZSBtc2cgICovXG4gIGRpc2NvdmVyeU1hbmFnZXIobXNnKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBsZXQgZG9tYWluID0gZGl2aWRlVVJMKG1zZy5mcm9tKS5kb21haW47XG4gICAgbGV0IGF0cmlidXRlcyA9IG1zZy5ib2R5LnJlc291cmNlLnNwbGl0KCcvJykuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGxldCByZXNvdXJjZXMgPSBbXTtcbiAgICBsZXQgZGF0YVNjaGVtZXMgPSBbXTtcblxuICAgIGxvZy5sb2coJ1tDb3JlRGlzY292ZXJ5LmRpc2NvdmVyeU1hbmFnZXJdIHJlY2VpdmVkOiAnLCBtc2cpO1xuXG4gICAgaWYgKG1zZy5ib2R5LmNyaXRlcmlhKSB7XG4gICAgICBpZiAobXNnLmJvZHkuY3JpdGVyaWEucmVzb3VyY2VzKSB7IHJlc291cmNlcyA9IG1zZy5ib2R5LmNyaXRlcmlhLnJlc291cmNlczsgfVxuICAgICAgaWYgKG1zZy5ib2R5LmNyaXRlcmlhLmRhdGFTY2hlbWVzKSB7IGRhdGFTY2hlbWVzID0gbXNnLmJvZHkuY3JpdGVyaWEuZGF0YVNjaGVtZXM7IH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKGF0cmlidXRlc1sxXSkge1xuICAgICAgY2FzZSAndXNlcic6XG4gICAgICAgIGlmIChhdHJpYnV0ZXNbMF0gPT0gJ2h5cGVydHknKSB7IHJldHVybiBfdGhpcy5kaXNjb3Zlckh5cGVydGllcyhtc2cuYm9keS5yZXNvdXJjZS5zcGxpdCgndXNlci8nKVsxXSwgZGF0YVNjaGVtZXMsIHJlc291cmNlcywgbXNnLmJvZHkuY3JpdGVyaWEuZG9tYWluKTsgfSBlbHNlIHsgcmV0dXJuIF90aGlzLmRpc2NvdmVyRGF0YU9iamVjdHMobXNnLmJvZHkucmVzb3VyY2Uuc3BsaXQoJ3VzZXIvJylbMV0sIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMsIG1zZy5ib2R5LmNyaXRlcmlhLmRvbWFpbik7IH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3VybCc6XG4gICAgICAgIGlmIChhdHJpYnV0ZXNbMF0gPT0gJ2h5cGVydHknKSB7IHJldHVybiBfdGhpcy5kaXNjb3Zlckh5cGVydHlQZXJVUkwobXNnLmJvZHkucmVzb3VyY2Uuc3BsaXQoJ3VybC8nKVsxXSwgbXNnLmJvZHkuY3JpdGVyaWEuZG9tYWluKTsgfSBlbHNlIHsgcmV0dXJuIF90aGlzLmRpc2NvdmVyRGF0YU9iamVjdFBlclVSTChtc2cuYm9keS5yZXNvdXJjZS5zcGxpdCgndXJsLycpWzFdLCBtc2cuYm9keS5jcml0ZXJpYS5kb21haW4pOyB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbmFtZSc6XG4gICAgICAgIHJldHVybiBfdGhpcy5kaXNjb3ZlckRhdGFPYmplY3RzUGVyTmFtZShtc2cuYm9keS5yZXNvdXJjZS5zcGxpdCgnbmFtZS8nKVsxXSwgZGF0YVNjaGVtZXMsIHJlc291cmNlcywgbXNnLmJvZHkuY3JpdGVyaWEuZG9tYWluKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXBvcnRlcic6XG4gICAgICAgIHJldHVybiBfdGhpcy5kaXNjb3ZlckRhdGFPYmplY3RzUGVyUmVwb3J0ZXIobXNnLmJvZHkucmVzb3VyY2Uuc3BsaXQoJ3JlcG9ydGVyLycpWzFdLCBkYXRhU2NoZW1lcywgcmVzb3VyY2VzLCBtc2cuYm9keS5jcml0ZXJpYS5kb21haW4pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2d1aWQnOlxuICAgICAgICBpZiAodHlwZW9mIF90aGlzLmdyYXBoQ29ubmVjdG9yICE9PSAndW5kZWZpbmVkJyAmJiAgX3RoaXMuZ3JhcGhDb25uZWN0b3IgIT09IG51bGwpIHtcbiAgICAgICAgICBpZiAoYXRyaWJ1dGVzWzBdID09ICdoeXBlcnR5JykgeyByZXR1cm4gX3RoaXMuZGlzY292ZXJIeXBlcnRpZXNQZXJHVUlEKG1zZy5ib2R5LnJlc291cmNlLnNwbGl0KCd1c2VyLWd1aWQ6Ly8nKVsxXSwgZGF0YVNjaGVtZXMsIHJlc291cmNlcyk7IH0gZWxzZSB7IHJldHVybiBfdGhpcy5kaXNjb3ZlckRhdGFPYmplY3RzUGVyR1VJRChtc2cuYm9keS5yZXNvdXJjZS5zcGxpdCgndXNlci1ndWlkOi8vJylbMV0sIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMpOyB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdHcmFwaENvbm5lY3RvcicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICBjYXNlICd1c2VycHJvZmlsZSc6XG4gICAgICAgIGlmICh0eXBlb2YgX3RoaXMuZ3JhcGhDb25uZWN0b3IgIT09ICd1bmRlZmluZWQnICYmICBfdGhpcy5ncmFwaENvbm5lY3RvciAhPT0gbnVsbCkge1xuICAgICAgICAgIGlmIChhdHJpYnV0ZXNbMF0gPT0gJ2h5cGVydHknKSB7IHJldHVybiBfdGhpcy5kaXNjb3Zlckh5cGVydGllc1BlclVzZXJQcm9maWxlRGF0YShtc2cuYm9keS5yZXNvdXJjZS5zcGxpdCgndXNlcnByb2ZpbGUvJylbMV0sIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMpOyB9IGVsc2UgeyByZXR1cm4gX3RoaXMuZGlzY292ZXJEYXRhT2JqZWN0c1BlclVzZXJQcm9maWxlRGF0YShtc2cuYm9keS5yZXNvdXJjZS5zcGxpdCgndXNlcnByb2ZpbGUvJylbMV0sIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMpOyB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdHcmFwaENvbm5lY3RvcicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICogQWR2YW5jZWQgU2VhcmNoIGZvciBIeXBlcnRpZXMgcmVnaXN0ZXJlZCBpbiBkb21haW4gcmVnaXN0cnkgYXNzb2NpYXRlZCB3aXRoIHNvbWUgdXNlciBpZGVudGlmaWVyIChlZyBlbWFpbCwgbmFtZSAuLi4pXG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICAgdXNlcklkZW50aWZpZXJcbiAgKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSAgICBkYXRhU2NoZW1lcyAoT3B0aW9uYWwpICAgICB0eXBlcyBvZiBoeXBlcnRpZXMgc2NoZW1hc1xuICAqIEBwYXJhbSAge0FycmF5PHN0cmluZz59ICAgIHJlc291cmNlcyAoT3B0aW9uYWwpICB0eXBlcyBvZiBoeXBlcnRpZXMgcmVzb3VyY2VzXG4gICovXG4gIGRpc2NvdmVySHlwZXJ0aWVzUGVyVXNlclByb2ZpbGVEYXRhKHVzZXJJZGVudGlmaWVyLCBkYXRhU2NoZW1lcywgcmVzb3VyY2VzKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgLy90cmFuc2xhdGUgdXNlciBpZGVudGlmaWVyIChlLmcuIGVtYWlsLCBuYW1lLi4uKSBpbnRvIHRoZSBhc3NvY2lhdGVkIEdVSURzXG4gICAgICBfdGhpcy5kaXNjb3ZlckdVSURQZXJVc2VySWRlbnRpZmllcih1c2VySWRlbnRpZmllcilcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24oZ3VpZHMpIHtcblxuICAgICAgICAgIGxldCBoeXBlcnRpZXNQcm9taXNlcyA9IGd1aWRzLm1hcChmdW5jdGlvbihndWlkKSB7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgX3RoaXMuZGlzY292ZXJIeXBlcnRpZXNQZXJHVUlEKGd1aWQsIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oaHlwZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGh5cGVydGllcyk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKFtdKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgUHJvbWlzZS5hbGwoaHlwZXJ0aWVzUHJvbWlzZXMpXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbihoeXBlcnRpZXNSZXN1bHQpIHtcblxuICAgICAgICAgICAgICBsZXQgaHlwZXJ0aWVzID0gW10uY29uY2F0LmFwcGx5KFtdLCBoeXBlcnRpZXNSZXN1bHQpO1xuXG4gICAgICAgICAgICAgIGlmIChoeXBlcnRpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdCgnTm8gaHlwZXJ0aWVzIHdlcmUgZm91bmQnKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJlc29sdmUoaHlwZXJ0aWVzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIEFkdmFuY2VkIFNlYXJjaCBmb3IgRGF0YU9iamVjdHMgcmVnaXN0ZXJlZCBpbiBkb21haW4gcmVnaXN0cnkgYXNzb2NpYXRlZCB3aXRoIHNvbWUgdXNlciBpZGVudGlmaWVyIChlZyBlbWFpbCwgbmFtZSAuLi4pXG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICAgdXNlcklkZW50aWZpZXJcbiAgKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSAgICBkYXRhU2NoZW1lcyAoT3B0aW9uYWwpICAgICB0eXBlcyBvZiBoeXBlcnRpZXMgc2NoZW1hc1xuICAqIEBwYXJhbSAge0FycmF5PHN0cmluZz59ICAgIHJlc291cmNlcyAoT3B0aW9uYWwpICB0eXBlcyBvZiBoeXBlcnRpZXMgcmVzb3VyY2VzXG4gICovXG4gIGRpc2NvdmVyRGF0YU9iamVjdHNQZXJVc2VyUHJvZmlsZURhdGEodXNlcklkZW50aWZpZXIsIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICAvL3RyYW5zbGF0ZSB1c2VyIGlkZW50aWZpZXIgKGUuZy4gZW1haWwsIG5hbWUuLi4pIGludG8gdGhlIGFzc29jaWF0ZWQgR1VJRHNcbiAgICAgIF90aGlzLmRpc2NvdmVyR1VJRFBlclVzZXJJZGVudGlmaWVyKHVzZXJJZGVudGlmaWVyKVxuICAgICAgICAudGhlbihmdW5jdGlvbihndWlkcykge1xuXG4gICAgICAgICAgbGV0IGRhdGFPYmplY3RzUHJvbWlzZXMgPSBndWlkcy5tYXAoZnVuY3Rpb24oZ3VpZCkge1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgIF90aGlzLmRpc2NvdmVyRGF0YU9iamVjdHNQZXJHVUlEKGd1aWQsIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YU9iamVjdHMpIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YU9iamVjdHMpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbXSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIFByb21pc2UuYWxsKGRhdGFPYmplY3RzUHJvbWlzZXMpXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbihkYXRhT2JqZWN0c1Jlc3VsdCkge1xuXG4gICAgICAgICAgICAgIGxldCBkYXRhT2JqZWN0cyA9IFtdLmNvbmNhdC5hcHBseShbXSwgZGF0YU9iamVjdHNSZXN1bHQpO1xuXG4gICAgICAgICAgICAgIGlmIChkYXRhT2JqZWN0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KCdObyBkYXRhT2JqZWN0cyB3ZXJlIGZvdW5kJyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXNvbHZlKGRhdGFPYmplY3RzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIEFkdmFuY2VkIFNlYXJjaCBmb3IgSHlwZXJ0aWVzIHJlZ2lzdGVyZWQgaW4gZG9tYWluIHJlZ2lzdHJ5IGFzc29jaWF0ZWQgd2l0aCBzb21lIEdVSURcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgICAgICAgIGd1aWRcbiAgKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSAgICBkYXRhU2NoZW1lcyAoT3B0aW9uYWwpICAgICB0eXBlcyBvZiBoeXBlcnRpZXMgc2NoZW1hc1xuICAqIEBwYXJhbSAge0FycmF5PHN0cmluZz59ICAgIHJlc291cmNlcyAoT3B0aW9uYWwpICB0eXBlcyBvZiBoeXBlcnRpZXMgcmVzb3VyY2VzXG4gICovXG4gIGRpc2NvdmVySHlwZXJ0aWVzUGVyR1VJRChndWlkLCBkYXRhU2NoZW1lcywgcmVzb3VyY2VzKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgLy90cmFuc2xhdGUgR1VJRCBpbnRvIHRoZSB1c2VyIElEcyB0byBxdWVyeSB0aGUgZG9tYWluIHJlZ2lzdHJ5XG4gICAgICBfdGhpcy5kaXNjb3ZlclVzZXJJZHNQZXJHVUlEKGd1aWQpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uKHVpZHMpIHtcblxuICAgICAgICAvL3RyYW5zbGF0ZSB1c2VyIElEcyBpbnRvIHRoZSBhc3NvY2lhdGVkIGh5cGVydGllcyByZWdpc3RlcmVkIGluIHNvbWUgZG9tYWluXG4gICAgICAgICAgbGV0IGh5cGVydGllc1Byb21pc2VzID0gdWlkcy5tYXAoZnVuY3Rpb24odWlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgIF90aGlzLmRpc2NvdmVySHlwZXJ0aWVzKHVpZC51SUQsIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMsIHVpZC5kb21haW4pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oaHlwZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGh5cGVydGllcyk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKFtdKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgUHJvbWlzZS5hbGwoaHlwZXJ0aWVzUHJvbWlzZXMpXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbihoeXBlcnRpZXNSZXN1bHQpIHtcblxuICAgICAgICAgICAgICBsZXQgaHlwZXJ0aWVzID0gW10uY29uY2F0LmFwcGx5KFtdLCBoeXBlcnRpZXNSZXN1bHQpO1xuXG4gICAgICAgICAgICAgIGlmIChoeXBlcnRpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdCgnTm8gaHlwZXJ0aWVzIHdlcmUgZm91bmQnKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIGxvZy5sb2coJ0h5cGVydGllcyA6ICcsIGh5cGVydGllcyk7XG4gICAgICAgICAgICAgIHJlc29sdmUoaHlwZXJ0aWVzKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogQWR2YW5jZWQgU2VhcmNoIGZvciBEYXRhT2JqZWN0cyByZWdpc3RlcmVkIGluIGRvbWFpbiByZWdpc3RyeSBhc3NvY2lhdGVkIHdpdGggc29tZSBHVUlEXG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICAgICBndWlkXG4gICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gICAgZGF0YVNjaGVtZXMgKE9wdGlvbmFsKSAgICAgdHlwZXMgb2YgaHlwZXJ0aWVzIHNjaGVtYXNcbiAgKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSAgICByZXNvdXJjZXMgKE9wdGlvbmFsKSAgdHlwZXMgb2YgaHlwZXJ0aWVzIHJlc291cmNlc1xuICAqL1xuICBkaXNjb3ZlckRhdGFPYmplY3RzUGVyR1VJRChndWlkLCBkYXRhU2NoZW1lcywgcmVzb3VyY2VzKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgLy90cmFuc2xhdGUgR1VJRCBpbnRvIHRoZSB1c2VyIElEcyB0byBxdWVyeSB0aGUgZG9tYWluIHJlZ2lzdHJ5XG4gICAgICBfdGhpcy5kaXNjb3ZlclVzZXJJZHNQZXJHVUlEKGd1aWQpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uKHVpZHMpIHtcblxuICAgICAgICAvL3RyYW5zbGF0ZSB1c2VyIElEcyBpbnRvIHRoZSBhc3NvY2lhdGVkIGRhdGFPYmplY3RzIHJlZ2lzdGVyZWQgaW4gc29tZSBkb21haW5cbiAgICAgICAgICBsZXQgZGF0YU9iamVjdFByb21pc2VzID0gdWlkcy5tYXAoZnVuY3Rpb24odWlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgIF90aGlzLmRpc2NvdmVyRGF0YU9iamVjdHModWlkLnVJRCwgZGF0YVNjaGVtZXMsIHJlc291cmNlcywgdWlkLmRvbWFpbilcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihkYXRhT2JqZWN0cykge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhT2JqZWN0cyk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKFtdKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgUHJvbWlzZS5hbGwoZGF0YU9iamVjdFByb21pc2VzKVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YU9iamVjdHNSZXN1bHQpIHtcblxuICAgICAgICAgICAgICBsZXQgZGF0YU9iamVjdHMgPSBbXS5jb25jYXQuYXBwbHkoW10sIGRhdGFPYmplY3RzUmVzdWx0KTtcblxuICAgICAgICAgICAgICBpZiAoZGF0YU9iamVjdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdCgnTm8gZGF0YU9iamVjdHMgd2VyZSBmb3VuZCcpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gbG9nLmxvZygnRGF0YU9iamVjdHMgOiAnLCBkYXRhT2JqZWN0cyk7XG4gICAgICAgICAgICAgIHJlc29sdmUoZGF0YU9iamVjdHMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQWR2YW5jZWQgU2VhcmNoIGZvciBIeXBlcnRpZXMgcmVnaXN0ZXJlZCBpbiBkb21haW4gcmVnaXN0cnkgYW5kIGFzc29jaWF0ZWQgd2l0aCBzb21lIHVzZXIgSURcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgICAgICB1c2VyICAgICAgICAgICAgICAgICAgdXNlciBpZGVudGlmaWVyLCBlaXRoZXIgaW4gdXJsIG9yIGVtYWlsIGZvcm1hdFxuICAqIEBwYXJhbSAge0FycmF5PHN0cmluZz59ICAgIGRhdGFTY2hlbWVzIChPcHRpb25hbCkgICAgIHR5cGVzIG9mIGh5cGVydGllcyBzY2hlbWFzXG4gICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gICAgcmVzb3VyY2VzIChPcHRpb25hbCkgIHR5cGVzIG9mIGh5cGVydGllcyByZXNvdXJjZXNcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgICAgICBkb21haW4gKE9wdGlvbmFsKSAgICAgZG9tYWluIG9mIHRoZSByZWdpc3RyeSB0byBzZWFyY2hcbiAgKi9cbiAgZGlzY292ZXJIeXBlcnRpZXModXNlciwgZGF0YVNjaGVtZXMsIHJlc291cmNlcywgZG9tYWluKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBsZXQgYWN0aXZlRG9tYWluO1xuXG4gICAgYWN0aXZlRG9tYWluID0gKCFkb21haW4pID8gX3RoaXMuZG9tYWluIDogZG9tYWluO1xuXG4gICAgbGV0IG1zZyA9IHtcbiAgICAgIHR5cGU6ICdyZWFkJyxcbiAgICAgIGZyb206IF90aGlzLmRpc2NvdmVyeVVSTCxcbiAgICAgIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIGFjdGl2ZURvbWFpbixcbiAgICAgIGJvZHk6IHtcblxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAodXNlci5pbmRleE9mKCd1c2VyOi8vJykgPiAtMSkgeyBtc2cuYm9keS5yZXNvdXJjZSA9IHVzZXI7IH0gZWxzZSB7IG1zZy5ib2R5LnJlc291cmNlID0gJy9oeXBlcnR5L2lkcC1pZGVudGlmaWVyLycgKyB1c2VyOyB9XG5cbiAgICBpZiAoZGF0YVNjaGVtZXMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFtc2cuYm9keS5jcml0ZXJpYSkgeyBtc2cuYm9keS5jcml0ZXJpYSA9IHt9OyB9XG4gICAgICBtc2cuYm9keS5jcml0ZXJpYS5kYXRhU2NoZW1lcyA9IGRhdGFTY2hlbWVzO1xuICAgIH1cblxuICAgIGlmIChyZXNvdXJjZXMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFtc2cuYm9keS5jcml0ZXJpYSkgeyBtc2cuYm9keS5jcml0ZXJpYSA9IHt9OyB9XG4gICAgICBtc2cuYm9keS5jcml0ZXJpYS5yZXNvdXJjZXMgPSByZXNvdXJjZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgLy8gbG9nLmxvZyhcIltDb3JlRGlzY292ZXJ5LmRpc2NvdmVySHlwZXJ0aWVzXSBzZW5kaW5nIG1zZyBcIiwgbXNnKTtcblxuICAgICAgX3RoaXMubWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtc2csIChyZXBseSkgPT4ge1xuXG4gICAgICAgIC8vIGxvZy5sb2coXCJbQ29yZURpc2NvdmVyeS5kaXNjb3Zlckh5cGVydGllc10gcmN2ZWQgcmVwbHkgXCIsIHJlcGx5KTtcblxuICAgICAgICBpZiAocmVwbHkuYm9keS5jb2RlID09PSAyMDAgfHwgcmVwbHkuYm9keS5jb2RlID09PSA1MDApIHtcbiAgICAgICAgICBsZXQgaHlwZXJ0aWVzID0gcmVwbHkuYm9keS52YWx1ZTtcblxuICAgICAgICAgIGxldCBmaW5hbEh5cGVydGllcyA9IFtdO1xuICAgICAgICAgIGZvciAodmFyIGtleSBpbiBoeXBlcnRpZXMpIGZpbmFsSHlwZXJ0aWVzLnB1c2goaHlwZXJ0aWVzW2tleV0pO1xuXG4gICAgICAgICAgaWYgKGZpbmFsSHlwZXJ0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIGxvZy5sb2coXCJbQ29yZURpc2NvdmVyeS5kaXNjb3Zlckh5cGVydGllc10gSHlwZXJ0aWVzIEZvdW5kOiBcIiwgZmluYWxIeXBlcnRpZXMpO1xuICAgICAgICAgICAgcmVzb2x2ZShmaW5hbEh5cGVydGllcyk7XG4gICAgICAgICAgfSBlbHNlIHsgcmV0dXJuIHJlamVjdCgnTm8gSHlwZXJ0eSB3YXMgZm91bmQnKTsgfVxuICAgICAgICB9IGVsc2UgeyByZXR1cm4gcmVqZWN0KCdObyBIeXBlcnR5IHdhcyBmb3VuZCcpOyB9XG5cbiAgICAgICAgLypfdGhpcy5yZWdpc3RyeS5pc0xlZ2FjeSh1c2VyKS50aGVuKChsZWdhY3kpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGxlZ2FjeSkgcmVzb2x2ZShbe2h5cGVydHlJRDogdXNlciB9XSlcbiAgICAgICAgICAgICAgZWxzZSByZXR1cm4gcmVqZWN0KCdObyBIeXBlcnR5IHdhcyBmb3VuZCcpO1xuICAgICAgICAgIH0pOyovXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBBZHZhbmNlZCBTZWFyY2ggZm9yIERhdGFPYmplY3RzIHJlZ2lzdGVyZWQgaW4gZG9tYWluIHJlZ2lzdHJ5IGFuZCBhc3NvY2lhdGVkIHdpdGggc29tZSB1c2VyIElEXG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICAgdXNlciAgICAgICAgICAgICAgICAgIHVzZXIgaWRlbnRpZmllciwgZWl0aGVyIGluIHVybCBvciBlbWFpbCBmb3JtYXRcbiAgKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSAgICBkYXRhU2NoZW1lcyAoT3B0aW9uYWwpICAgICB0eXBlcyBvZiBkYXRhT2JqZWN0cyBzY2hlbWFzXG4gICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gICAgcmVzb3VyY2VzIChPcHRpb25hbCkgIHR5cGVzIG9mIGRhdGFPYmplY3RzIHJlc291cmNlc1xuICAqIEBwYXJhbSAge1N0cmluZ30gICAgICAgICAgIGRvbWFpbiAoT3B0aW9uYWwpICAgICBkb21haW4gb2YgdGhlIHJlZ2lzdHJ5IHRvIHNlYXJjaFxuICAqL1xuICBkaXNjb3ZlckRhdGFPYmplY3RzKHVzZXIsIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMsIGRvbWFpbikge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgbGV0IGFjdGl2ZURvbWFpbjtcbiAgICBsZXQgZGF0YU9iamVjdHNBcnJheSA9IFtdO1xuXG4gICAgYWN0aXZlRG9tYWluID0gKCFkb21haW4pID8gX3RoaXMuZG9tYWluIDogZG9tYWluO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICAvL3RyYW5zbGF0ZSB1c2VyIGlkZW50aWZpZXIgKGUuZy4gZW1haWwsIG5hbWUuLi4pIGludG8gdGhlIGFzc29jaWF0ZWQgaHlwZXJ0aWVzXG4gICAgICBfdGhpcy5kaXNjb3Zlckh5cGVydGllcyh1c2VyLCBbXSwgW10sIGFjdGl2ZURvbWFpbilcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24oaHlwZXJ0aWVzKSB7XG5cbiAgICAgICAgICBsZXQgZmluYWxIeXBlcnRpZXMgPSBbXTtcbiAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gaHlwZXJ0aWVzKSBmaW5hbEh5cGVydGllcy5wdXNoKGh5cGVydGllc1trZXldKTtcblxuICAgICAgICAgIC8vdHJhbnNsYXRlIGh5cGVydGllcyBVUkxzIGludG8gdGhlIGFzc29jaWF0ZWQgZGF0YU9iamVjdHMgcmVnaXN0ZXJlZCBpbiBzb21lIGRvbWFpblxuICAgICAgICAgIGxldCBkYXRhT2JqZWN0c1Byb21pc2VzID0gZmluYWxIeXBlcnRpZXMubWFwKGZ1bmN0aW9uKGh5cGVydHkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgX3RoaXMuZGlzY292ZXJEYXRhT2JqZWN0c1BlclJlcG9ydGVyKGh5cGVydHkuaHlwZXJ0eUlELCBkYXRhU2NoZW1lcywgcmVzb3VyY2VzLCBhY3RpdmVEb21haW4pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhT2JqZWN0KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoW10pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBQcm9taXNlLmFsbChkYXRhT2JqZWN0c1Byb21pc2VzKVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YU9iamVjdHNSZXN1bHQpIHtcblxuICAgICAgICAgICAgICBsZXQgZGF0YU9iamVjdHMgPSBbXS5jb25jYXQuYXBwbHkoW10sIGRhdGFPYmplY3RzUmVzdWx0KTtcblxuICAgICAgICAgICAgICBkYXRhT2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uKGRhdGFPYmplY3QpIHtcbiAgICAgICAgICAgICAgICBkYXRhT2JqZWN0c0FycmF5LnB1c2goZGF0YU9iamVjdCk7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGxldCBmaW5hbERhdGFPYmplY3RzID0gW107XG4gICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhT2JqZWN0c0FycmF5KSBmaW5hbERhdGFPYmplY3RzLnB1c2goZGF0YU9iamVjdHNBcnJheVtrZXldKTtcblxuICAgICAgICAgICAgICBpZiAoZmluYWxEYXRhT2JqZWN0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KCdObyBkYXRhT2JqZWN0cyB3ZXJlIGZvdW5kJyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBsb2cubG9nKCdEYXRhT2JqZWN0cyBGb3VuZDogJywgZmluYWxEYXRhT2JqZWN0cyk7XG4gICAgICAgICAgICAgIHJlc29sdmUoZmluYWxEYXRhT2JqZWN0cyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIGZ1bmN0aW9uIHRvIHJlcXVlc3QgYWJvdXQgaHlwZXJ0aWVzIHJlZ2lzdGVyZWQgaW4gZG9tYWluIHJlZ2lzdHJ5LCBhbmRcbiAgKiByZXR1cm4gdGhlIGh5cGVydHkgaW5mb3JtYXRpb24sIGlmIGZvdW5kLlxuICAqIEBwYXJhbSAge1N0cmluZ30gICAgICAgICAgICAgIHVybCAgZGF0YU9iamVjdCBVUkxcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgICAgICAgZG9tYWluIChPcHRpb25hbClcbiAgKiBAcmV0dXJuIHtQcm9taXNlfSAgICAgICAgICBQcm9taXNlXG4gICovXG4gIGRpc2NvdmVySHlwZXJ0eVBlclVSTCh1cmwsIGRvbWFpbikge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgbGV0IGFjdGl2ZURvbWFpbjtcblxuICAgIGFjdGl2ZURvbWFpbiA9ICghZG9tYWluKSA/IF90aGlzLmRvbWFpbiA6IGRvbWFpbjtcblxuICAgIGxldCBtc2cgPSB7XG4gICAgICB0eXBlOiAncmVhZCcsXG4gICAgICBmcm9tOiBfdGhpcy5kaXNjb3ZlcnlVUkwsXG4gICAgICB0bzogJ2RvbWFpbjovL3JlZ2lzdHJ5LicgKyBhY3RpdmVEb21haW4sXG4gICAgICBib2R5OiB7XG4gICAgICAgIHJlc291cmNlOiB1cmxcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICBfdGhpcy5tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1zZywgKHJlcGx5KSA9PiB7XG5cbiAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSAhPT0gMjAwICYmIHJlcGx5LmJvZHkuY29kZSAhPT0gNTAwKSB7IHJldHVybiByZWplY3QoJ05vIEh5cGVydHkgd2FzIGZvdW5kJyk7IH1cblxuICAgICAgICBsZXQgaHlwZXJ0eSA9IHJlcGx5LmJvZHkudmFsdWU7XG5cbiAgICAgICAgaWYgKGh5cGVydHkpIHtcbiAgICAgICAgICAvLyBsb2cubG9nKCdIeXBlcnR5IGZvdW5kOiAnLCBoeXBlcnR5KTtcbiAgICAgICAgICByZXNvbHZlKGh5cGVydHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZWplY3QoJ05vIEh5cGVydHkgd2FzIGZvdW5kJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogZnVuY3Rpb24gdG8gcmVxdWVzdCBhYm91dCBkYXRhT2JqZWN0IHJlZ2lzdGVyZWQgaW4gZG9tYWluIHJlZ2lzdHJ5LCBhbmRcbiAgKiByZXR1cm4gdGhlIGRhdGFPYmplY3QgaW5mb3JtYXRpb24sIGlmIGZvdW5kLlxuICAqIEBwYXJhbSAge1N0cmluZ30gICAgICAgICAgICAgIHVybCAgZGF0YU9iamVjdCBVUkxcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgICAgICAgZG9tYWluIChPcHRpb25hbClcbiAgKiBAcmV0dXJuIHtQcm9taXNlfSAgICAgICAgICBQcm9taXNlXG4gICovXG4gIGRpc2NvdmVyRGF0YU9iamVjdFBlclVSTCh1cmwsIGRvbWFpbikge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgbGV0IGFjdGl2ZURvbWFpbjtcblxuICAgIGFjdGl2ZURvbWFpbiA9ICghZG9tYWluKSA/IF90aGlzLmRvbWFpbiA6IGRvbWFpbjtcblxuICAgIGxldCBtc2cgPSB7XG4gICAgICB0eXBlOiAncmVhZCcsXG4gICAgICBmcm9tOiBfdGhpcy5kaXNjb3ZlcnlVUkwsXG4gICAgICB0bzogJ2RvbWFpbjovL3JlZ2lzdHJ5LicgKyBhY3RpdmVEb21haW4sXG4gICAgICBib2R5OiB7XG4gICAgICAgIHJlc291cmNlOiB1cmxcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICBfdGhpcy5tZXNzYWdlQnVzLnBvc3RNZXNzYWdlKG1zZywgKHJlcGx5KSA9PiB7XG5cbiAgICAgICAgbGV0IGRhdGFPYmplY3QgPSByZXBseS5ib2R5LnZhbHVlO1xuXG4gICAgICAgIGlmIChkYXRhT2JqZWN0KSB7XG4gICAgICAgICAgLy8gbG9nLmxvZygnRGF0YU9iamVjdCBmb3VuZDogJywgZGF0YU9iamVjdCk7XG4gICAgICAgICAgcmVzb2x2ZShkYXRhT2JqZWN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KCdEYXRhT2JqZWN0IG5vdCBmb3VuZCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBBZHZhbmNlZCBTZWFyY2ggZm9yIGRhdGFPYmplY3RzIHJlZ2lzdGVyZWQgaW4gZG9tYWluIHJlZ2lzdHJ5XG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICAgbmFtZSAgICAgICAgICAgICAgICAgIG5hbWUgb2YgdGhlIGRhdGFPYmplY3RcbiAgKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSAgICBkYXRhU2NoZW1lcyAoT3B0aW9uYWwpICAgICB0eXBlcyBvZiBkYXRhT2JqZWN0IHNjaGVtYXNcbiAgKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSAgICByZXNvdXJjZXMgKE9wdGlvbmFsKSAgdHlwZXMgb2YgZGF0YU9iamVjdCByZXNvdXJjZXNcbiAgKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgICAgICBkb21haW4gKE9wdGlvbmFsKSAgICAgZG9tYWluIG9mIHRoZSByZWdpc3RyeSB0byBzZWFyY2hcbiAgKi9cbiAgZGlzY292ZXJEYXRhT2JqZWN0c1Blck5hbWUobmFtZSwgZGF0YVNjaGVtZXMsIHJlc291cmNlcywgZG9tYWluKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBsZXQgYWN0aXZlRG9tYWluO1xuXG4gICAgYWN0aXZlRG9tYWluID0gKCFkb21haW4pID8gX3RoaXMuZG9tYWluIDogZG9tYWluO1xuXG4gICAgbGV0IG1zZyA9IHtcbiAgICAgIHR5cGU6ICdyZWFkJyxcbiAgICAgIGZyb206IF90aGlzLmRpc2NvdmVyeVVSTCxcbiAgICAgIHRvOiAnZG9tYWluOi8vcmVnaXN0cnkuJyArIGFjdGl2ZURvbWFpbixcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgcmVzb3VyY2U6IG5hbWVcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGRhdGFTY2hlbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghbXNnLmJvZHkuY3JpdGVyaWEpIHsgbXNnLmJvZHkuY3JpdGVyaWEgPSB7fTsgfVxuICAgICAgbXNnLmJvZHkuY3JpdGVyaWEuZGF0YVNjaGVtZXMgPSBkYXRhU2NoZW1lcztcbiAgICB9XG5cbiAgICBpZiAocmVzb3VyY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghbXNnLmJvZHkuY3JpdGVyaWEpIHsgbXNnLmJvZHkuY3JpdGVyaWEgPSB7fTsgfVxuICAgICAgbXNnLmJvZHkuY3JpdGVyaWEucmVzb3VyY2VzID0gcmVzb3VyY2VzO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgX3RoaXMubWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtc2csIChyZXBseSkgPT4ge1xuXG4gICAgICAgIGxldCBkYXRhT2JqZWN0cyA9IHJlcGx5LmJvZHkudmFsdWU7XG5cbiAgICAgICAgbGV0IGZpbmFsRGF0YU9iamVjdHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIGRhdGFPYmplY3RzKSBmaW5hbERhdGFPYmplY3RzLnB1c2goZGF0YU9iamVjdHNba2V5XSk7XG5cbiAgICAgICAgaWYgKGZpbmFsRGF0YU9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIGxvZy5sb2coXCJEYXRhT2JqZWN0cyBGb3VuZDogXCIsIGZpbmFsRGF0YU9iamVjdHMpO1xuICAgICAgICAgIHJlc29sdmUoZmluYWxEYXRhT2JqZWN0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdCgnTm8gRGF0YU9iamVjdCB3YXMgZm91bmQnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBmdW5jdGlvbiB0byByZXF1ZXN0IGFib3V0IHNwZWNpZmljIHJlcG9ydGVyIGRhdGFPYmplY3QgcmVnaXN0ZXJlZCBpbiBkb21haW4gcmVnaXN0cnksIGFuZFxuICAqIHJldHVybiB0aGUgZGF0YU9iamVjdHMgZnJvbSB0aGF0IHJlcG9ydGVyLlxuICAqIEBwYXJhbSAge1N0cmluZ30gICAgICAgICAgIHJlcG9ydGVyICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFPYmplY3QgcmVwb3J0ZXJcbiAgKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSAgICBzY2RhdGFTY2hlbWVzaGVtYSAgICAgICAgICAgICAgICAoT3B0aW9uYWwpICAgICB0eXBlcyBvZiBkYXRhT2JqZWN0cyBzY2hlbWFzXG4gICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gICAgcmVzb3VyY2VzICAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsKSAgdHlwZXMgb2YgZGF0YU9iamVjdHMgcmVzb3VyY2VzXG4gICogQHBhcmFtICB7U3RyaW5nfSAgICAgICAgICAgZG9tYWluICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsKVxuICAqL1xuICBkaXNjb3ZlckRhdGFPYmplY3RzUGVyUmVwb3J0ZXIocmVwb3J0ZXIsIGRhdGFTY2hlbWVzLCByZXNvdXJjZXMsIGRvbWFpbikge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgbGV0IGFjdGl2ZURvbWFpbjtcblxuICAgIGFjdGl2ZURvbWFpbiA9ICghZG9tYWluKSA/IF90aGlzLmRvbWFpbiA6IGRvbWFpbjtcblxuICAgIGxldCBtc2cgPSB7XG4gICAgICB0eXBlOiAncmVhZCcsXG4gICAgICBmcm9tOiBfdGhpcy5kaXNjb3ZlcnlVUkwsXG4gICAgICB0bzogJ2RvbWFpbjovL3JlZ2lzdHJ5LicgKyBhY3RpdmVEb21haW4sXG4gICAgICBib2R5OiB7XG4gICAgICAgIHJlc291cmNlOiAnL2NvbW0nLFxuICAgICAgICBjcml0ZXJpYToge1xuICAgICAgICAgIHJlcG9ydGVyOiByZXBvcnRlclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChkYXRhU2NoZW1lcy5sZW5ndGggPiAwKSB7IG1zZy5ib2R5LmNyaXRlcmlhLmRhdGFTY2hlbWVzID0gZGF0YVNjaGVtZXM7IH1cblxuICAgIGlmIChyZXNvdXJjZXMubGVuZ3RoID4gMCkgeyBtc2cuYm9keS5jcml0ZXJpYS5yZXNvdXJjZXMgPSByZXNvdXJjZXM7IH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgX3RoaXMubWVzc2FnZUJ1cy5wb3N0TWVzc2FnZShtc2csIChyZXBseSkgPT4ge1xuXG4gICAgICAgIGxldCBkYXRhT2JqZWN0cyA9IHJlcGx5LmJvZHkudmFsdWU7XG5cbiAgICAgICAgbGV0IGZpbmFsRGF0YU9iamVjdHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIGRhdGFPYmplY3RzKSBmaW5hbERhdGFPYmplY3RzLnB1c2goZGF0YU9iamVjdHNba2V5XSk7XG5cbiAgICAgICAgaWYgKGZpbmFsRGF0YU9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIGxvZy5sb2coXCJEYXRhT2JqZWN0cyBGb3VuZDogXCIsIGZpbmFsRGF0YU9iamVjdHMpO1xuICAgICAgICAgIHJlc29sdmUoZmluYWxEYXRhT2JqZWN0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdCgnTm8gRGF0YU9iamVjdCB3YXMgZm91bmQnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBmdW5jdGlvbiB0byByZXF1ZXN0IGdsb2JhbCByZWdpc3RyeSBhYm91dCB0aGUgdXNlciBJRHMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgR1VJRFxuICAqIEBwYXJhbSAge1N0cmluZ30gICAgICAgICAgICAgIGd1aWRcbiAgKiBAcmV0dXJuIHtQcm9taXNlfSAgICAgICAgICBQcm9taXNlXG4gICovXG4gIGRpc2NvdmVyVXNlcklkc1BlckdVSUQoZ3VpZCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgIC8vIGxvZy5sb2coXCJHTyBncmFwaENvbm5lY3RvcjpcIiwgZ3VpZCk7XG5cbiAgICAgIF90aGlzLmdyYXBoQ29ubmVjdG9yLnF1ZXJ5R2xvYmFsUmVnaXN0cnkoZ3VpZClcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24oZ3JhcGhDb25uZWN0b3JDb250YWN0RGF0YSkge1xuXG4gICAgICAgIC8vIGxvZy5sb2coJ0luZm9ybWF0aW9uIHJldHVybmVkIGZyb20gR2xvYmFsIFJlZ2lzdHJ5OiAnLCBncmFwaENvbm5lY3RvckNvbnRhY3REYXRhKTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgZ3JhcGhDb25uZWN0b3JDb250YWN0RGF0YSA9PT0gJ3N0cmluZycgfHwgIWdyYXBoQ29ubmVjdG9yQ29udGFjdERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoJ1Vuc3VjY2Vzc2Z1bCBkaXNjb3ZlciB1c2VySURzIGJ5IEdVSUQnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBsZXQgdXNlcmlkcyA9IGdyYXBoQ29ubmVjdG9yQ29udGFjdERhdGEudXNlcklEcztcblxuICAgICAgICAgICAgaWYgKHVzZXJpZHMubGVuZ3RoID09PSAwKSB7IHJldHVybiByZWplY3QoJ1VzZXJJRHMgbm90IGF2YWlsYWJsZScpOyB9XG5cbiAgICAgICAgICAgIHJlc29sdmUodXNlcmlkcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBmdW5jdGlvbiB0byByZXF1ZXN0IGRpc2NvdmVyeSBzZXJ2aWNlIGFib3V0IHRoZSBHVUlEIGFzc29jaWF0ZWQgd2l0aCBzb21lIHVzZXIgaWRlbnRpZmllciAoZWcgZW1haWwsIG5hbWUgLi4uKVxuICAqIEBwYXJhbSAge1N0cmluZ30gICAgICAgICAgICB1c2VySWRlbnRpZmllclxuICAqIEByZXR1cm4ge1Byb21pc2V9ICAgICAgICAgICBQcm9taXNlXG4gICovXG4gIGRpc2NvdmVyR1VJRFBlclVzZXJJZGVudGlmaWVyKHVzZXJJZGVudGlmaWVyKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgbGV0IGxvb2t1cFVSTERpc2NvdmVyeVNlcnZpY2UgPSAnaHR0cHM6Ly9yZXRoaW5rLnRsYWJzY2xvdWQuY29tL2Rpc2NvdmVyeS9yZXN0L2Rpc2NvdmVyL2xvb2t1cD9zZWFyY2hxdWVyeT0nO1xuICAgICAgX3RoaXMuaHR0cFJlcXVlc3QuZ2V0KGxvb2t1cFVSTERpc2NvdmVyeVNlcnZpY2UgKyB1c2VySWRlbnRpZmllcilcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24oanNvbikge1xuICAgICAgICAvLyBsb2cubG9nKCdkaXNjb3ZlciBHVUlEIGJ5IHVzZXIgaWRlbnRpZmllcicsIGpzb24pO1xuXG4gICAgICAgICAgbGV0IHJlc3BvbnNlID0gSlNPTi5wYXJzZShqc29uKTtcbiAgICAgICAgICBsZXQgZmlsdGVyZWRHdWlkID0gcmVzcG9uc2UucmVzdWx0cy5maWx0ZXIoZnVuY3Rpb24oeCkge1xuICAgICAgICAgICAgcmV0dXJuIHgucmV0aGlua0lEICE9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChmaWx0ZXJlZEd1aWQubGVuZ3RoID09PSAwKSB7IHJldHVybiByZWplY3QoJ1Vuc3VjY2Vzc2Z1bCBkaXNjb3ZlciBHVUlEIGJ5IHVzZXIgaWRlbnRpZmllcicpOyB9XG5cbiAgICAgICAgICBsZXQgZ3VpZHMgPSBmaWx0ZXJlZEd1aWQubWFwKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHgucmV0aGlua0lEOyB9KTtcblxuICAgICAgICAgIHJldHVybiByZXNvbHZlKGd1aWRzKTtcblxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIC8vIGxvZy5sb2coXCJIVFRQIFJlcXVlc3QgZXJyb3I6IFwiLCBlcnIpO1xuICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29yZURpc2NvdmVyeTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZGlzY292ZXJ5L0NvcmVEaXNjb3ZlcnkuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCQTtBQUNBO0FBREE7QUFDQTtBQUdBO0FBQ0E7Ozs7O0FBSkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRkE7QUFDQTtBQU1BOzs7O0FBSUE7QUFDQTtBQUNBOzs7Ozs7O0FBT0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBTEE7QUFVQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUxBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTdCQTtBQStCQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUNBO0FBUUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSkE7QUFDQTtBQVFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUZBO0FBSkE7QUFDQTtBQVdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUF2bUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBOzs7OztBQWdtQkE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///501\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _from = __webpack_require__(210);\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _typeof2 = __webpack_require__(79);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _assign = __webpack_require__(98);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(11);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('DataObjectsStorage'); // Log System\n\nvar DataObjectsStorage = function () {\n function DataObjectsStorage(storageManager, storedDataObjects) {\n (0, _classCallCheck3.default)(this, DataObjectsStorage);\n\n if (!storageManager) throw new Error('[Store Data Objects] - Needs the storageManager component');\n\n this._storageManager = storageManager;\n this._storeDataObject = storedDataObjects;\n\n this._cache = {};\n }\n\n /**\n * @description should set the initial state of the dataObjectURL to be resumed if necessary;\n *\n * @param {DataObjectURL} url - dataObjectURL to be saved;\n * @param {Boolean} isReporter - the object to be saved is a reporter\n * @param {SchemaURL} schema - the schema url\n * @param {String} status - the status of current dataObject\n * @param {HypertyURL} reporter - the Reporter hypertyURL\n * @param {Array} subscription - list of subscriptions\n * @param {Array} children - list of childs of dataObjectURL\n * @param {Array} childrens - list of childrens, like, 'chatmessage';\n * @param {Array object with the dataObject information;\n */\n\n }, {\n key: 'getDataObject',\n value: function getDataObject(resource) {\n var _this2 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this2._storageManager.get('syncherManager:ObjectURLs').then(function (storedDataObject) {\n\n var observers = storedDataObject.hasOwnProperty('observers') ? storedDataObject.observers : {};\n var reporters = storedDataObject.hasOwnProperty('reporters') ? storedDataObject.reporters : {};\n\n var currentReporter = (0, _keys2.default)(reporters).find(function (value) {\n return value === resource;\n });\n var currentObserver = (0, _keys2.default)(observers).find(function (value) {\n return value === resource;\n });\n var dataObject = void 0;\n\n if (currentObserver) {\n dataObject = storedDataObject.observers[currentObserver];\n }\n if (currentReporter) {\n dataObject = storedDataObject.reporters[currentReporter];\n }\n\n log.info('[StoreDataObjects - getDataObject] - for observer: ', currentObserver);\n log.info('[StoreDataObjects - getDataObject] - for reporters: ', currentReporter);\n\n log.info('[StoreDataObjects - getDataObject] - resolve: ', dataObject);\n return dataObject ? resolve(dataObject) : reject('No dataObject was found');\n });\n });\n }\n\n /**\n * @description should get the dataObject information by the message\n *\n * @param {Object} msg - message would be analised to get the current dataObject information\n * @param {Boolean} isReporter - the object to be saved is a reporter\n *\n * @returns Promise should retun an object with the dataObject or null\n */\n\n }, {\n key: 'getResourcesByCriteria',\n value: function getResourcesByCriteria(msg, isReporter) {\n var _this3 = this;\n\n return new _promise2.default(function (resolve) {\n\n var type = _this3._getTypeOfObject(isReporter);\n\n _this3.getAll().then(function (storedDataObjects) {\n\n if (!storedDataObjects) {\n log.log('[DataObjectsStorage.getResourcesByCriteria] don\\'t have stored data objects');\n return resolve(null);\n }\n\n if (msg.body && msg.body.hasOwnProperty('resume') && !msg.body.resume) {\n return resolve(null);\n }\n\n // check if the message have other criteria\n // if not search for on the 'from' of the message.\n var result = [];\n var hasSubscription = _this3._hasSubscription(storedDataObjects[type], msg.from);\n var isOwner = _this3._searchOwner(storedDataObjects[type], msg.from);\n var isToProtoStubResume = _this3._checkProtostubResume(storedDataObjects, msg);\n log.log('[StoredDataObjects - getResourcesByCriteria]:', storedDataObjects, msg, hasSubscription, isOwner);\n if (msg.hasOwnProperty('from') && hasSubscription || isOwner || isToProtoStubResume) {\n var resource = void 0;\n\n if (isOwner) {\n resource = _this3._getResourcesByOwner(storedDataObjects[type], msg.from);\n } else {\n resource = _this3._getResourcesBySubscription(storedDataObjects[type], msg.from);\n }\n\n var identityFoundData = [];\n if (msg.body && msg.body.identity) identityFoundData = _this3._getResourcesByIdentity(storedDataObjects[type], msg.body.identity);\n\n //TODO: remove schema since metadata already includes the schema?\n\n var schemaFoundData = [];\n if (msg.body && msg.body.schema) schemaFoundData = _this3._getResourcesBySchema(storedDataObjects[type], msg.body.schema);\n\n var metadataFound = [];\n if (msg.body && msg.body.value) {\n var metadata = msg.body.value;\n delete metadata.data;\n metadataFound = _this3._getResourcesByMetadata(storedDataObjects[type], metadata);\n }\n\n var dataFound = [];\n if (msg.body && msg.body.value && msg.body.value.data) dataFound = _this3._getResourcesByData(storedDataObjects[type], msg.body.value.data);\n\n // you can pass as arrays as you want.. it will be merged in on place\n // removed duplicates;\n result = _this3._intersection(resource, identityFoundData, schemaFoundData, dataFound, metadataFound);\n\n if (result.length == 0 && isToProtoStubResume && type == 'observers' && msg.from.split('protostub').length > 0) {\n var storedObservers = storedDataObjects[type];\n var fromDomain = (0, _utils.divideURL)(msg.from).domain;\n (0, _keys2.default)(storedObservers).filter(function (objectURL) {\n var subscriptions = storedObservers[objectURL].subscriptions;\n var hasSubscription = false;\n subscriptions.forEach(function (subscription) {\n var subscriptionDomain = (0, _utils.divideURL)(subscription).domain;\n if (subscriptionDomain == fromDomain) {\n result.push(objectURL);\n }\n });\n });\n }\n } else {\n return resolve(null);\n }\n\n var init = {};\n result.forEach(function (key) {\n var currentIsReporter = storedDataObjects[type][key];\n init[key] = currentIsReporter;\n return init;\n });\n\n log.log('[Store Data Objects] - ', init);\n\n resolve(init);\n });\n });\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_getResourcesByIdentity',\n value: function _getResourcesByIdentity(storedData, userURL) {\n if (!storedData) return [];\n\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n return storedData[objectURL].subscriberUsers.filter(function (current) {\n return current === userURL;\n }).length;\n });\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_getResourcesByOwner',\n value: function _getResourcesByOwner(storedData, owner) {\n if (!storedData) return [];\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n return storedData[objectURL].reporter === owner;\n });\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_getResourcesBySubscription',\n value: function _getResourcesBySubscription(storedData, subscription) {\n if (!storedData) return [];\n\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n return storedData[objectURL].subscriptions.filter(function (current) {\n return current === subscription;\n }).length;\n });\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_getResourcesBySchema',\n value: function _getResourcesBySchema(storedData, schema) {\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n var currentObject = storedData[objectURL];\n return (0, _keys2.default)(currentObject).filter(function (key) {\n return key === 'schema' && currentObject[key] === schema;\n }).length;\n });\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_getResourcesByMetadata',\n value: function _getResourcesByMetadata(storedData, metadata) {\n if (!metadata) return [];\n\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n var currentObject = storedData[objectURL];\n return (0, _keys2.default)(currentObject).filter(function (key) {\n // search on storeDataObjects for specific key provided from data;\n return (0, _keys2.default)(metadata).filter(function (searchFor) {\n return key === searchFor && currentObject[key] === metadata[searchFor];\n }).length;\n }).length;\n });\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_getResourcesByData',\n value: function _getResourcesByData(storedData, data) {\n if (!data) return [];\n\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n var currentObject = storedData[objectURL].hasOwnProperty('data') ? storedData[objectURL].data : {};\n return (0, _keys2.default)(currentObject).filter(function (key) {\n // search on storeDataObjects for specific key provided from data;\n return (0, _keys2.default)(data).filter(function (searchFor) {\n return key === searchFor && currentObject[key] === data[searchFor];\n }).length;\n }).length;\n });\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_hasSubscription',\n value: function _hasSubscription(storedData, subscription) {\n if (!storedData) return false;\n\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n return storedData[objectURL].subscriptions.filter(function (current) {\n return current === subscription;\n }).length;\n }).length > 0 ? true : false;\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_searchOwner',\n value: function _searchOwner(storedData, from) {\n if (!storedData) return false;\n\n return (0, _keys2.default)(storedData).filter(function (objectURL) {\n return storedData[objectURL].reporter === from;\n }).length > 0 ? true : false;\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_checkProtostubResume',\n value: function _checkProtostubResume(storedDataObjects, msg) {\n\n if (!storedDataObjects) return false;\n\n if (msg.hasOwnProperty('body') && msg.body.hasOwnProperty('value') && msg.body.value.hasOwnProperty('reporter')) {\n var reporter = msg.body.value.reporter;\n if (storedDataObjects.hasOwnProperty('reporters')) {\n var reportersStored = storedDataObjects.reporters;\n return (0, _keys2.default)(reportersStored).filter(function (objectURL) {\n return reportersStored[objectURL].reporter === reporter;\n }).length > 0 ? true : false;\n } else {\n return false;\n }\n } else if (storedDataObjects.hasOwnProperty('observers')) {\n var storedObservers = storedDataObjects.observers;\n var fromDomain = (0, _utils.divideURL)(msg.from).domain;\n\n return (0, _keys2.default)(storedObservers).filter(function (objectURL) {\n var subscriptions = storedObservers[objectURL].subscriptions;\n var hasSubscription = false;\n subscriptions.forEach(function (subscription) {\n var subscriptionDomain = (0, _utils.divideURL)(subscription).domain;\n if (subscriptionDomain == fromDomain) {\n hasSubscription = true;\n }\n });\n if (hasSubscription) {\n return true;\n }\n }).length > 0 ? true : false;\n }\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_isOwner',\n value: function _isOwner(value, url) {\n if (!value) return false;\n return value.reporter === url ? true : false;\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_intersection',\n value: function _intersection() {\n var args = (0, _from2.default)(arguments);\n\n var result = args.reduce(function (first, second) {\n return first.concat(second);\n }).filter(function (value, index, self) {\n return self.indexOf(value) === index;\n });\n log.log('DataObjectsStorage._intersection] Result an unique array of strings: ', result);\n return result;\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_updateToArray',\n value: function _updateToArray(storeDataObject, resource, key, value) {\n log.log('[DataObjectsStorage] - _updateToArray: ', storeDataObject, resource, key, value);\n if (storeDataObject[resource][key].indexOf(value) === -1) storeDataObject[resource][key].push(value);\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_removeFromArray',\n value: function _removeFromArray(storeDataObject, resource, key, value) {\n var indexOfValue = storeDataObject[resource][key].indexOf(value);\n if (indexOfValue === -1) storeDataObject[resource][key].splice(indexOfValue, 1);\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_hasValue',\n value: function _hasValue(obj, key, value) {\n return obj.hasOwnProperty(key) && obj[key] === value;\n }\n\n /**\n * @private\n * @todo documentation\n */\n\n }, {\n key: '_getTypeOfObject',\n value: function _getTypeOfObject(isReporter) {\n return isReporter ? 'reporters' : 'observers';\n }\n }]);\n return DataObjectsStorage;\n}();\n\nexports.default = DataObjectsStorage;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zdG9yZS1vYmplY3RzL0RhdGFPYmplY3RzU3RvcmFnZS5qcz9lOTU2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIExvZyBTeXN0ZW1cbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignRGF0YU9iamVjdHNTdG9yYWdlJyk7XG5cbmltcG9ydCB7IGFzc2lnbiwgZGVlcENsb25lLCBkaXZpZGVVUkwgfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5cbmNsYXNzIERhdGFPYmplY3RzU3RvcmFnZSB7XG5cbiAgY29uc3RydWN0b3Ioc3RvcmFnZU1hbmFnZXIsIHN0b3JlZERhdGFPYmplY3RzKSB7XG4gICAgaWYgKCFzdG9yYWdlTWFuYWdlcikgdGhyb3cgbmV3IEVycm9yKCdbU3RvcmUgRGF0YSBPYmplY3RzXSAtIE5lZWRzIHRoZSBzdG9yYWdlTWFuYWdlciBjb21wb25lbnQnKTtcblxuICAgIHRoaXMuX3N0b3JhZ2VNYW5hZ2VyID0gc3RvcmFnZU1hbmFnZXI7XG4gICAgdGhpcy5fc3RvcmVEYXRhT2JqZWN0ID0gc3RvcmVkRGF0YU9iamVjdHM7XG5cbiAgICB0aGlzLl9jYWNoZSA9IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBzaG91bGQgc2V0IHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBkYXRhT2JqZWN0VVJMIHRvIGJlIHJlc3VtZWQgaWYgbmVjZXNzYXJ5O1xuICAgKlxuICAgKiBAcGFyYW0ge0RhdGFPYmplY3RVUkx9IHVybCAtIGRhdGFPYmplY3RVUkwgdG8gYmUgc2F2ZWQ7XG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNSZXBvcnRlciAtIHRoZSBvYmplY3QgdG8gYmUgc2F2ZWQgaXMgYSByZXBvcnRlclxuICAgKiBAcGFyYW0ge1NjaGVtYVVSTH0gc2NoZW1hIC0gdGhlIHNjaGVtYSB1cmxcbiAgICogQHBhcmFtIHtTdHJpbmd9IHN0YXR1cyAtIHRoZSBzdGF0dXMgb2YgY3VycmVudCBkYXRhT2JqZWN0XG4gICAqIEBwYXJhbSB7SHlwZXJ0eVVSTH0gcmVwb3J0ZXIgLSB0aGUgUmVwb3J0ZXIgaHlwZXJ0eVVSTFxuICAgKiBAcGFyYW0ge0FycmF5PEh5cGVydHlVUkw+fSBzdWJzY3JpcHRpb24gLSBsaXN0IG9mIHN1YnNjcmlwdGlvbnNcbiAgICogQHBhcmFtIHtBcnJheTxEYXRhT2JqZWN0Q2hpbGQ+fSBjaGlsZHJlbiAtIGxpc3Qgb2YgY2hpbGRzIG9mIGRhdGFPYmplY3RVUkxcbiAgICogQHBhcmFtIHtBcnJheTxTdHJpbmc+fSBjaGlsZHJlbnMgLSBsaXN0IG9mIGNoaWxkcmVucywgbGlrZSwgJ2NoYXRtZXNzYWdlJztcbiAgICogQHBhcmFtIHtBcnJheTxVc2VyVVJMfSBzdWJzY3JpYmVyVXNlciAtIGxpc3Qgb2Ygc3Vic2NyaWJlZCB1c2VycztcbiAgICovXG5cbiAgc2V0KG1ldGFkYXRhKSB7XG5cbiAgICBsZXQgc3RvcmVEYXRhT2JqZWN0ID0gdGhpcy5fc3RvcmVEYXRhT2JqZWN0O1xuICAgIGxldCB0eXBlID0gdGhpcy5fZ2V0VHlwZU9mT2JqZWN0KG1ldGFkYXRhLmlzUmVwb3J0ZXIpO1xuICAgIGlmICghc3RvcmVEYXRhT2JqZWN0Lmhhc093blByb3BlcnR5KHR5cGUpKSBzdG9yZURhdGFPYmplY3RbdHlwZV0gPSB7fTtcblxuICAgIGlmICghc3RvcmVEYXRhT2JqZWN0W3R5cGVdLmhhc093blByb3BlcnR5KG1ldGFkYXRhLnVybCkpIHtcbiAgICAgIHN0b3JlRGF0YU9iamVjdFt0eXBlXVttZXRhZGF0YS51cmxdID0ge307XG4gICAgICBzdG9yZURhdGFPYmplY3RbdHlwZV1bbWV0YWRhdGEudXJsXS5zdWJzY3JpcHRpb25zID0gW107Ly8gVE9ETzpkbyB3ZSBuZWVkIHRoaXM/XG4gICAgICBzdG9yZURhdGFPYmplY3RbdHlwZV1bbWV0YWRhdGEudXJsXS5zdWJzY3JpYmVyVXNlcnMgPSBbXTsvLyBUT0RPOmRvIHdlIG5lZWQgdGhpcz9cbiAgICAgIHN0b3JlRGF0YU9iamVjdFt0eXBlXVttZXRhZGF0YS51cmxdLmNoaWxkcmVuT2JqZWN0cyA9IHt9O1xuICAgICAgc3RvcmVEYXRhT2JqZWN0W3R5cGVdW21ldGFkYXRhLnVybF0uZGF0YSA9IHt9O1xuICAgIH1cblxuICAgIE9iamVjdC5hc3NpZ24oc3RvcmVEYXRhT2JqZWN0W3R5cGVdW21ldGFkYXRhLnVybF0sIG1ldGFkYXRhKTtcbiAgICBkZWxldGUgc3RvcmVEYXRhT2JqZWN0W3R5cGVdW21ldGFkYXRhLnVybF0uc3Vic2NyaWJlclVzZXI7XG4gICAgZGVsZXRlIHN0b3JlRGF0YU9iamVjdFt0eXBlXVttZXRhZGF0YS51cmxdLnN1YnNjcmliZXJIeXBlcnR5O1xuXG4gICAgLyppZiAoc2NoZW1hKSBzdG9yZURhdGFPYmplY3RbdHlwZV1bbWV0YWRhdGEudXJsXS5zY2hlbWEgPSBzY2hlbWE7XG4gICAgaWYgKHN0YXR1cykgc3RvcmVEYXRhT2JqZWN0W3R5cGVdW21ldGFkYXRhLnVybF0uc3RhdHVzID0gc3RhdHVzO1xuICAgIGlmIChjaGlsZHJlblJlc291cmNlcykgc3RvcmVEYXRhT2JqZWN0W3R5cGVdW21ldGFkYXRhLnVybF0uY2hpbGRyZW5SZXNvdXJjZXMgPSBjaGlsZHJlblJlc291cmNlczsqL1xuXG4gICAgaWYgKG1ldGFkYXRhLnN1YnNjcmliZXJIeXBlcnR5ICYmICFtZXRhZGF0YS5pc1JlcG9ydGVyKSB7IC8vIFRPRE86IGRvIHdlIG5lZWQgdGhpcz9cbiAgICAgIHRoaXMuX3VwZGF0ZVRvQXJyYXkoc3RvcmVEYXRhT2JqZWN0W3R5cGVdLCBtZXRhZGF0YS51cmwsICdzdWJzY3JpcHRpb25zJywgbWV0YWRhdGEuc3Vic2NyaWJlckh5cGVydHkpO1xuICAgIH1cblxuICAgIC8vc3RvcmVEYXRhT2JqZWN0W3R5cGVdW21ldGFkYXRhLnVybF0ub3duZXIgPSBvd25lcjtcblxuICAgIGlmIChtZXRhZGF0YS5zdWJzY3JpYmVyVXNlcikgeyAvLyBUT0RPOiBkbyB3ZSBuZWVkIHRoaXM/XG4gICAgICBpZiAoc3RvcmVEYXRhT2JqZWN0W3R5cGVdW21ldGFkYXRhLnVybF0uc3Vic2NyaWJlclVzZXJzLmluZGV4T2YobWV0YWRhdGEuc3Vic2NyaWJlclVzZXIpKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVRvQXJyYXkoc3RvcmVEYXRhT2JqZWN0W3R5cGVdLCBtZXRhZGF0YS51cmwsICdzdWJzY3JpYmVyVXNlcnMnLCBtZXRhZGF0YS5zdWJzY3JpYmVyVXNlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fc3RvcmVEYXRhT2JqZWN0ID0gc3RvcmVEYXRhT2JqZWN0O1xuICAgIHRoaXMuX3N0b3JhZ2VNYW5hZ2VyLnNldCgnc3luY2hlck1hbmFnZXI6T2JqZWN0VVJMcycsIDEsIHN0b3JlRGF0YU9iamVjdCk7XG4gICAgcmV0dXJuIHN0b3JlRGF0YU9iamVjdFt0eXBlXVttZXRhZGF0YS51cmxdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBzaG91bGQgc2F2ZSBhbmQgdXBkYXRlIHRoZSBjdXJyZW50IGRhdGFPYmplY3QgZGF0YSBpbmZvcm1hdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IGlzUmVwb3J0ZXIgLSB0aGUgb2JqZWN0IHRvIGJlIHNhdmVkIGlzIGEgcmVwb3J0ZXJcbiAgICogQHBhcmFtIHtEYXRhT2JqZWN0VVJMfSByZXNvdXJjZSAtIGRhdGFPYmplY3RVUkwgdG8gYmUgc2F2ZWQgb3IgdXBkYXRlZDtcbiAgICogQHBhcmFtIHtTdHJpbmd9IGF0dHJpYnV0ZSAtIGF0dHJpYnV0ZSBpbnNpZGUgdGhlIGRhdGEgd2hpY2ggd2lsbCBiZSBzYXZlZFxuICAgKiBAcGFyYW0ge2FueX0gZGF0YSAtIHZhbHVlIHdpbGwgYmUgc2F2ZWQgaW5zaWRlIHRoZSBhdHRyaWJ1dGU7XG4gICAqL1xuICBzYXZlRGF0YShpc1JlcG9ydGVyLCByZXNvdXJjZSwgYXR0cmlidXRlLCB2YWx1ZSkge1xuXG4gICAgbGV0IHN0b3JlRGF0YU9iamVjdCA9IHRoaXMuX3N0b3JlRGF0YU9iamVjdDtcbiAgICBsZXQgdHlwZSA9IHRoaXMuX2dldFR5cGVPZk9iamVjdChpc1JlcG9ydGVyKTtcblxuICAgIGlmICghc3RvcmVEYXRhT2JqZWN0IHx8ICFzdG9yZURhdGFPYmplY3RbdHlwZV0gfHwgIXN0b3JlRGF0YU9iamVjdFt0eXBlXVtyZXNvdXJjZV0pIHtcbiAgICAgIGxvZy5sb2coJ1tTdG9yZURhdGFPYmplY3RzIC0gc2F2ZSBkYXRhXSAtIG5vdCBzYXZlZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZy5sb2coJ1tTdG9yZURhdGFPYmplY3RzIC0gc2F2ZURhdGFdIC0gJywgaXNSZXBvcnRlciwgdHlwZSwgcmVzb3VyY2UsIGF0dHJpYnV0ZSwgdmFsdWUpO1xuXG4gICAgaWYgKCFzdG9yZURhdGFPYmplY3RbdHlwZV1bcmVzb3VyY2VdLmhhc093blByb3BlcnR5KCdkYXRhJykpIHtcbiAgICAgIHN0b3JlRGF0YU9iamVjdFt0eXBlXVtyZXNvdXJjZV0uZGF0YSA9IHt9O1xuICAgIH1cblxuICAgIGlmIChhdHRyaWJ1dGUpIHtcbiAgICAgIGxldCBkYXRhO1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIGRhdGEgPSBkZWVwQ2xvbmUodmFsdWUpO1xuICAgICAgZWxzZSBkYXRhID0gdmFsdWU7XG5cbiAgICAgIGFzc2lnbihzdG9yZURhdGFPYmplY3RbdHlwZV1bcmVzb3VyY2VdLmRhdGEsIGF0dHJpYnV0ZSwgZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0b3JlRGF0YU9iamVjdFt0eXBlXVtyZXNvdXJjZV0uZGF0YSA9IGRlZXBDbG9uZSh2YWx1ZSkgfHwge307XG4gICAgfVxuXG4gICAgdGhpcy5fc3RvcmVEYXRhT2JqZWN0ID0gc3RvcmVEYXRhT2JqZWN0O1xuICAgIHRoaXMuX3N0b3JhZ2VNYW5hZ2VyLnNldCgnc3luY2hlck1hbmFnZXI6T2JqZWN0VVJMcycsIDEsIHN0b3JlRGF0YU9iamVjdCk7XG4gICAgcmV0dXJuIHN0b3JlRGF0YU9iamVjdFt0eXBlXVtyZXNvdXJjZV07XG4gIH1cblxuICBzYXZlQ2hpbGRyZW5zKGlzUmVwb3J0ZXIsIHJlc291cmNlLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgbGV0IHN0b3JlRGF0YU9iamVjdCA9IHRoaXMuX3N0b3JlRGF0YU9iamVjdDtcbiAgICBsZXQgdHlwZSA9IHRoaXMuX2dldFR5cGVPZk9iamVjdChpc1JlcG9ydGVyKTtcblxuICAgIGlmICghc3RvcmVEYXRhT2JqZWN0IHx8ICFzdG9yZURhdGFPYmplY3RbdHlwZV0gfHwgIXN0b3JlRGF0YU9iamVjdFt0eXBlXVtyZXNvdXJjZV0pIHtcbiAgICAgIGxvZy5sb2coJ1tTdG9yZURhdGFPYmplY3RzIC0gc2F2ZSBjaGlsZHJlbnNdIC0gbm90IHNhdmVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFzdG9yZURhdGFPYmplY3RbdHlwZV1bcmVzb3VyY2VdLmhhc093blByb3BlcnR5KCdjaGlsZHJlbnMnKSkge1xuICAgICAgc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXS5jaGlsZHJlbk9iamVjdHMgPSB7fTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cmlidXRlKSB7XG4gICAgICBhc3NpZ24oc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXS5jaGlsZHJlbk9iamVjdHMsIGF0dHJpYnV0ZSwgZGVlcENsb25lKHZhbHVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0b3JlRGF0YU9iamVjdFt0eXBlXVtyZXNvdXJjZV0uY2hpbGRyZW5PYmplY3RzID0gZGVlcENsb25lKHZhbHVlKSB8fCB7fTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdG9yZURhdGFPYmplY3QgPSBzdG9yZURhdGFPYmplY3Q7XG4gICAgdGhpcy5fc3RvcmFnZU1hbmFnZXIuc2V0KCdzeW5jaGVyTWFuYWdlcjpPYmplY3RVUkxzJywgMSwgc3RvcmVEYXRhT2JqZWN0KTtcbiAgICByZXR1cm4gc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gc2hvdWxkIHNhdmUgYW5kIHVwZGF0ZSB0aGUgY3VycmVudCBkYXRhT2JqZWN0IGluZm9ybWF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNSZXBvcnRlciAtIHRoZSBvYmplY3QgdG8gYmUgc2F2ZWQgaXMgYSByZXBvcnRlclxuICAgKiBAcGFyYW0ge0RhdGFPYmplY3RVUkx9IHJlc291cmNlIC0gZGF0YU9iamVjdFVSTCB0byBiZSBzYXZlZCBvciB1cGRhdGVkO1xuICAgKiBAcGFyYW0ge1N0cmluZ30gYXR0cmlidXRlIC0gYXR0cmlidXRlIGluc2lkZSB0aGUgZGF0YSB3aGljaCB3aWxsIGJlIHNhdmVkXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhIC0gdmFsdWUgd2lsbCBiZSBzYXZlZCBpbnNpZGUgdGhlIGF0dHJpYnV0ZTtcbiAgICovXG4gIHVwZGF0ZShpc1JlcG9ydGVyLCByZXNvdXJjZSwgYXR0cmlidXRlLCB2YWx1ZSkge1xuXG4gICAgbGV0IHN0b3JlRGF0YU9iamVjdCA9IHRoaXMuX3N0b3JlRGF0YU9iamVjdDtcbiAgICBsZXQgdHlwZSA9IHRoaXMuX2dldFR5cGVPZk9iamVjdChpc1JlcG9ydGVyKTtcblxuICAgIGlmICghc3RvcmVEYXRhT2JqZWN0IHx8ICFzdG9yZURhdGFPYmplY3RbdHlwZV0gfHwgIXN0b3JlRGF0YU9iamVjdFt0eXBlXVtyZXNvdXJjZV0pIHtcbiAgICAgIGxvZy5sb2coJ1tTdG9yZURhdGFPYmplY3RzIC0gdXBkYXRlXSAtIG5vdCBzYXZlZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZy5sb2coJ1tTdG9yZURhdGFPYmplY3RzIC0gdXBkYXRlXSAtICcsIGlzUmVwb3J0ZXIsIHR5cGUsIHJlc291cmNlLCBhdHRyaWJ1dGUsIHZhbHVlKTtcblxuICAgIGlmIChzdG9yZURhdGFPYmplY3RbdHlwZV0gJiYgc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXSAmJiByZXNvdXJjZSAmJiBhdHRyaWJ1dGUgJiYgdmFsdWUpIHtcblxuICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gJ3N1YnNjcmlwdGlvbnMnIHx8IGF0dHJpYnV0ZSA9PT0gJ3N1YnNjcmliZXJVc2VycycpIHtcbiAgICAgICAgbGV0IHVwZGF0ZSA9IHRydWU7XG5cbiAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gJ3N1YnNjcmlwdGlvbnMnKSB7XG4gICAgICAgICAgdXBkYXRlID0gIXRoaXMuX2lzT3duZXIoc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXSwgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHVwZGF0ZSkgdGhpcy5fdXBkYXRlVG9BcnJheShzdG9yZURhdGFPYmplY3RbdHlwZV0sIHJlc291cmNlLCBhdHRyaWJ1dGUsIHZhbHVlKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXVthdHRyaWJ1dGVdID0gdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3N0b3JlRGF0YU9iamVjdCA9IHN0b3JlRGF0YU9iamVjdDtcbiAgICAgIHRoaXMuX3N0b3JhZ2VNYW5hZ2VyLnNldCgnc3luY2hlck1hbmFnZXI6T2JqZWN0VVJMcycsIDEsIHN0b3JlRGF0YU9iamVjdCk7XG4gICAgICByZXR1cm4gc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIHNob3VsZCBkZWxldGUgc3RvcmVkIGluZm9ybWF0aW9uIGZyb20gdGhlIGRhdGFPYmplY3RcbiAgICpcbiAgICogQHBhcmFtIHtCb29sZWFufSBpc1JlcG9ydGVyIC0gdGhlIG9iamVjdCB0byBiZSBzYXZlZCBpcyBhIHJlcG9ydGVyXG4gICAqIEBwYXJhbSB7RGF0YU9iamVjdFVSTH0gcmVzb3VyY2UgLSBkYXRhT2JqZWN0VVJMIHRvIGJlIHNhdmVkIG9yIHVwZGF0ZWQ7XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBhdHRyaWJ1dGUgLSBhdHRyaWJ1dGUgaW5zaWRlIHRoZSBkYXRhIHdoaWNoIHdpbGwgYmUgc2F2ZWRcbiAgICogQHBhcmFtIHthbnl9IGRhdGEgLSB2YWx1ZSB3aWxsIGJlIHNhdmVkIGluc2lkZSB0aGUgYXR0cmlidXRlO1xuICAgKi9cbiAgZGVsZXRlKGlzUmVwb3J0ZXIsIHJlc291cmNlLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG5cbiAgICBsZXQgc3RvcmVEYXRhT2JqZWN0ID0gdGhpcy5fc3RvcmVEYXRhT2JqZWN0O1xuICAgIGxldCB0eXBlID0gdGhpcy5fZ2V0VHlwZU9mT2JqZWN0KGlzUmVwb3J0ZXIpO1xuXG4gICAgaWYgKCFzdG9yZURhdGFPYmplY3QgfHwgIXN0b3JlRGF0YU9iamVjdFt0eXBlXSB8fCAhc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXSkge1xuICAgICAgbG9nLmxvZygnW1N0b3JlRGF0YU9iamVjdHMgLSBkZWxldGVdIC0gbm90IHNhdmVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHN0b3JlRGF0YU9iamVjdFt0eXBlXSAmJiBzdG9yZURhdGFPYmplY3RbdHlwZV1bcmVzb3VyY2VdICYmIHJlc291cmNlICYmIGF0dHJpYnV0ZSAmJiB2YWx1ZSkge1xuXG4gICAgICBpZiAoYXR0cmlidXRlID09PSAnc3Vic2NyaXB0aW9ucycgfHwgYXR0cmlidXRlID09PSAnc3Vic2NyaWJlclVzZXJzJykge1xuICAgICAgICB0aGlzLl9yZW1vdmVGcm9tQXJyYXkoc3RvcmVEYXRhT2JqZWN0W3R5cGVdLCByZXNvdXJjZSwgYXR0cmlidXRlLCB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXVthdHRyaWJ1dGVdO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9zdG9yZURhdGFPYmplY3QgPSBzdG9yZURhdGFPYmplY3Q7XG4gICAgICB0aGlzLl9zdG9yYWdlTWFuYWdlci5zZXQoJ3N5bmNoZXJNYW5hZ2VyOk9iamVjdFVSTHMnLCAxLCBzdG9yZURhdGFPYmplY3QpO1xuXG4gICAgICByZXR1cm4gc3RvcmVEYXRhT2JqZWN0W3R5cGVdW3Jlc291cmNlXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVE9ETzogY2hlY2sgaWYgdGhpcyBwcm9jZXNzIGlzIHZpYWJsZSBiZWNhdXNlIHRoZSBzdG9yYWdlIG1hbmFnZXIgYWJpbGl0eSB0byBkZWxldGVcbiAgICogbm93IHRoZSBzdG9yYWdlTWFuYWdlciBvbmx5IGNhbiBkZWxldGUgYW4gc3BlY2lmaWMga2V5LCBidXQgbm90IHRoZSBzcGVjaWZpYyB2YWx1ZSBpbnNpZGUgdGhhdCBrZXk7XG4gICAqL1xuICBkZWxldGVSZXNvdXJjZShyZXNvdXJjZSkge1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgaWYgKHJlc291cmNlKSB7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWxsKCkudGhlbigoc3RvcmVkRGF0YU9iamVjdHMpID0+IHtcbiAgICAgICAgICBsZXQgdG1wID0gT2JqZWN0LmFzc2lnbihzdG9yZWREYXRhT2JqZWN0cywgdGhpcy5fc3RvcmVEYXRhT2JqZWN0IHx8IHt9KTtcblxuICAgICAgICAgIGlmICh0bXAuaGFzT3duUHJvcGVydHkoJ29ic2VydmVycycpICYmIHRtcC5vYnNlcnZlcnMuaGFzT3duUHJvcGVydHkocmVzb3VyY2UpKSB7XG4gICAgICAgICAgICBkZWxldGUgdG1wLm9ic2VydmVyc1tyZXNvdXJjZV07XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlTWFuYWdlci5zZXQoJ3N5bmNoZXJNYW5hZ2VyOk9iamVjdFVSTHMnLCAxLCB0bXApO1xuICAgICAgICAgICAgdGhpcy5fc3RvcmVEYXRhT2JqZWN0ID0gdG1wO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodG1wLm9ic2VydmVyc1tyZXNvdXJjZV0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0bXAuaGFzT3duUHJvcGVydHkoJ3JlcG9ydGVycycpICYmIHRtcC5yZXBvcnRlcnMuaGFzT3duUHJvcGVydHkocmVzb3VyY2UpKSB7XG4gICAgICAgICAgICBkZWxldGUgdG1wLnJlcG9ydGVyc1tyZXNvdXJjZV07XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlTWFuYWdlci5zZXQoJ3N5bmNoZXJNYW5hZ2VyOk9iamVjdFVSTHMnLCAxLCB0bXApO1xuICAgICAgICAgICAgdGhpcy5fc3RvcmVEYXRhT2JqZWN0ID0gdG1wO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodG1wLnJlcG9ydGVyc1tyZXNvdXJjZV0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUoJ1RoZSAnICsgcmVzb3VyY2UgKyAnIGRvc2VuXFx0IGV4aXN0cywgbm90aGluZyB3YXMgZGVsZXRlZCcpO1xuXG4gICAgICAgIH0pO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKCdbU3RvcmVEYXRhT2JqZWN0c10gLSBDYW5cXCd0IGRlbGV0ZSB0aGlzICcgKyByZXNvdXJjZSkpO1xuICAgICAgfVxuXG4gICAgfSk7XG5cbiAgfVxuXG4gIGdldEFsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmFnZU1hbmFnZXIuZ2V0KCdzeW5jaGVyTWFuYWdlcjpPYmplY3RVUkxzJyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIHNob3VsZCBsb29rIGZvciBhIHNwZWNpZmljIGRhdGFPYmplY3RVUkxcbiAgICpcbiAgICogQHBhcmFtIHtEYXRhT2JqZWN0VVJMfSByZXNvdXJjZSAtIHRoZSBkYXRhT2JqZWN0VVJMIHdpbGwgYmUgc2VhcmNoZWRcbiAgICpcbiAgICogQHJldHVybnMgUHJvbWlzZTxPYmplY3Q+IG9iamVjdCB3aXRoIHRoZSBkYXRhT2JqZWN0IGluZm9ybWF0aW9uO1xuICAgKi9cbiAgZ2V0RGF0YU9iamVjdChyZXNvdXJjZSkge1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgdGhpcy5fc3RvcmFnZU1hbmFnZXIuZ2V0KCdzeW5jaGVyTWFuYWdlcjpPYmplY3RVUkxzJykudGhlbigoc3RvcmVkRGF0YU9iamVjdCkgPT4ge1xuXG4gICAgICAgIGxldCBvYnNlcnZlcnMgPSBzdG9yZWREYXRhT2JqZWN0Lmhhc093blByb3BlcnR5KCdvYnNlcnZlcnMnKSA/IHN0b3JlZERhdGFPYmplY3Qub2JzZXJ2ZXJzIDoge307XG4gICAgICAgIGxldCByZXBvcnRlcnMgPSBzdG9yZWREYXRhT2JqZWN0Lmhhc093blByb3BlcnR5KCdyZXBvcnRlcnMnKSA/IHN0b3JlZERhdGFPYmplY3QucmVwb3J0ZXJzIDoge307XG5cbiAgICAgICAgbGV0IGN1cnJlbnRSZXBvcnRlciA9IE9iamVjdC5rZXlzKHJlcG9ydGVycykuZmluZCgodmFsdWUpID0+IHsgcmV0dXJuIHZhbHVlID09PSByZXNvdXJjZTsgfSk7XG4gICAgICAgIGxldCBjdXJyZW50T2JzZXJ2ZXIgPSBPYmplY3Qua2V5cyhvYnNlcnZlcnMpLmZpbmQoKHZhbHVlKSA9PiB7IHJldHVybiB2YWx1ZSA9PT0gcmVzb3VyY2U7IH0pO1xuICAgICAgICBsZXQgZGF0YU9iamVjdDtcblxuICAgICAgICBpZiAoY3VycmVudE9ic2VydmVyKSB7IGRhdGFPYmplY3QgPSBzdG9yZWREYXRhT2JqZWN0Lm9ic2VydmVyc1tjdXJyZW50T2JzZXJ2ZXJdOyB9XG4gICAgICAgIGlmIChjdXJyZW50UmVwb3J0ZXIpIHsgZGF0YU9iamVjdCA9IHN0b3JlZERhdGFPYmplY3QucmVwb3J0ZXJzW2N1cnJlbnRSZXBvcnRlcl07IH1cblxuICAgICAgICBsb2cuaW5mbygnW1N0b3JlRGF0YU9iamVjdHMgLSBnZXREYXRhT2JqZWN0XSAtIGZvciBvYnNlcnZlcjogJywgY3VycmVudE9ic2VydmVyKTtcbiAgICAgICAgbG9nLmluZm8oJ1tTdG9yZURhdGFPYmplY3RzIC0gZ2V0RGF0YU9iamVjdF0gLSBmb3IgcmVwb3J0ZXJzOiAnLCBjdXJyZW50UmVwb3J0ZXIpO1xuXG4gICAgICAgIGxvZy5pbmZvKCdbU3RvcmVEYXRhT2JqZWN0cyAtIGdldERhdGFPYmplY3RdIC0gcmVzb2x2ZTogJywgZGF0YU9iamVjdCk7XG4gICAgICAgIHJldHVybiBkYXRhT2JqZWN0ID8gcmVzb2x2ZShkYXRhT2JqZWN0KSA6IHJlamVjdCgnTm8gZGF0YU9iamVjdCB3YXMgZm91bmQnKTtcblxuICAgICAgfSk7XG5cbiAgICB9KTtcblxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBzaG91bGQgZ2V0IHRoZSBkYXRhT2JqZWN0IGluZm9ybWF0aW9uIGJ5IHRoZSBtZXNzYWdlXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBtc2cgLSBtZXNzYWdlIHdvdWxkIGJlIGFuYWxpc2VkIHRvIGdldCB0aGUgY3VycmVudCBkYXRhT2JqZWN0IGluZm9ybWF0aW9uXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNSZXBvcnRlciAtIHRoZSBvYmplY3QgdG8gYmUgc2F2ZWQgaXMgYSByZXBvcnRlclxuICAgKlxuICAgKiBAcmV0dXJucyBQcm9taXNlPG9iamVjdD4gc2hvdWxkIHJldHVuIGFuIG9iamVjdCB3aXRoIHRoZSBkYXRhT2JqZWN0IG9yIG51bGxcbiAgICovXG4gIGdldFJlc291cmNlc0J5Q3JpdGVyaWEobXNnLCBpc1JlcG9ydGVyKSB7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblxuICAgICAgbGV0IHR5cGUgPSB0aGlzLl9nZXRUeXBlT2ZPYmplY3QoaXNSZXBvcnRlcik7XG5cbiAgICAgIHRoaXMuZ2V0QWxsKCkudGhlbigoc3RvcmVkRGF0YU9iamVjdHMpID0+IHtcblxuICAgICAgICBpZiAoIXN0b3JlZERhdGFPYmplY3RzKSB7XG4gICAgICAgICAgbG9nLmxvZygnW0RhdGFPYmplY3RzU3RvcmFnZS5nZXRSZXNvdXJjZXNCeUNyaXRlcmlhXSBkb25cXCd0IGhhdmUgc3RvcmVkIGRhdGEgb2JqZWN0cycpO1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1zZy5ib2R5ICYmIG1zZy5ib2R5Lmhhc093blByb3BlcnR5KCdyZXN1bWUnKSAmJiAhbXNnLmJvZHkucmVzdW1lKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjaGVjayBpZiB0aGUgbWVzc2FnZSBoYXZlIG90aGVyIGNyaXRlcmlhXG4gICAgICAgIC8vIGlmIG5vdCBzZWFyY2ggZm9yIG9uIHRoZSAnZnJvbScgb2YgdGhlIG1lc3NhZ2UuXG4gICAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgICAgbGV0IGhhc1N1YnNjcmlwdGlvbiA9IHRoaXMuX2hhc1N1YnNjcmlwdGlvbihzdG9yZWREYXRhT2JqZWN0c1t0eXBlXSwgbXNnLmZyb20pO1xuICAgICAgICBsZXQgaXNPd25lciA9IHRoaXMuX3NlYXJjaE93bmVyKHN0b3JlZERhdGFPYmplY3RzW3R5cGVdLCBtc2cuZnJvbSk7XG4gICAgICAgIGxldCBpc1RvUHJvdG9TdHViUmVzdW1lID0gdGhpcy5fY2hlY2tQcm90b3N0dWJSZXN1bWUoc3RvcmVkRGF0YU9iamVjdHMsIG1zZyk7XG4gICAgICAgIGxvZy5sb2coJ1tTdG9yZWREYXRhT2JqZWN0cyAtIGdldFJlc291cmNlc0J5Q3JpdGVyaWFdOicsIHN0b3JlZERhdGFPYmplY3RzLCBtc2csIGhhc1N1YnNjcmlwdGlvbiwgaXNPd25lcik7XG4gICAgICAgIGlmIChtc2cuaGFzT3duUHJvcGVydHkoJ2Zyb20nKSAmJiBoYXNTdWJzY3JpcHRpb24gfHwgaXNPd25lciB8fCBpc1RvUHJvdG9TdHViUmVzdW1lKSB7XG4gICAgICAgICAgbGV0IHJlc291cmNlO1xuXG4gICAgICAgICAgaWYgKGlzT3duZXIpIHtcbiAgICAgICAgICAgIHJlc291cmNlID0gdGhpcy5fZ2V0UmVzb3VyY2VzQnlPd25lcihzdG9yZWREYXRhT2JqZWN0c1t0eXBlXSwgbXNnLmZyb20pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvdXJjZSA9IHRoaXMuX2dldFJlc291cmNlc0J5U3Vic2NyaXB0aW9uKHN0b3JlZERhdGFPYmplY3RzW3R5cGVdLCBtc2cuZnJvbSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGlkZW50aXR5Rm91bmREYXRhID0gW107XG4gICAgICAgICAgaWYgKG1zZy5ib2R5ICYmIG1zZy5ib2R5LmlkZW50aXR5KSBpZGVudGl0eUZvdW5kRGF0YSA9IHRoaXMuX2dldFJlc291cmNlc0J5SWRlbnRpdHkoc3RvcmVkRGF0YU9iamVjdHNbdHlwZV0sIG1zZy5ib2R5LmlkZW50aXR5KTtcblxuICAgICAgICAgIC8vVE9ETzogcmVtb3ZlIHNjaGVtYSBzaW5jZSBtZXRhZGF0YSBhbHJlYWR5IGluY2x1ZGVzIHRoZSBzY2hlbWE/XG5cbiAgICAgICAgICBsZXQgc2NoZW1hRm91bmREYXRhID0gW107XG4gICAgICAgICAgaWYgKG1zZy5ib2R5ICYmIG1zZy5ib2R5LnNjaGVtYSkgc2NoZW1hRm91bmREYXRhID0gdGhpcy5fZ2V0UmVzb3VyY2VzQnlTY2hlbWEoc3RvcmVkRGF0YU9iamVjdHNbdHlwZV0sIG1zZy5ib2R5LnNjaGVtYSk7XG5cbiAgICAgICAgICBsZXQgbWV0YWRhdGFGb3VuZCA9IFtdO1xuICAgICAgICAgIGlmIChtc2cuYm9keSAmJiBtc2cuYm9keS52YWx1ZSkge1xuICAgICAgICAgICAgbGV0IG1ldGFkYXRhID0gbXNnLmJvZHkudmFsdWU7XG4gICAgICAgICAgICBkZWxldGUgbWV0YWRhdGEuZGF0YTtcbiAgICAgICAgICAgIG1ldGFkYXRhRm91bmQgPSB0aGlzLl9nZXRSZXNvdXJjZXNCeU1ldGFkYXRhKHN0b3JlZERhdGFPYmplY3RzW3R5cGVdLCBtZXRhZGF0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGRhdGFGb3VuZCA9IFtdO1xuICAgICAgICAgIGlmIChtc2cuYm9keSAmJiBtc2cuYm9keS52YWx1ZSAmJiBtc2cuYm9keS52YWx1ZS5kYXRhKSBkYXRhRm91bmQgPSB0aGlzLl9nZXRSZXNvdXJjZXNCeURhdGEoc3RvcmVkRGF0YU9iamVjdHNbdHlwZV0sIG1zZy5ib2R5LnZhbHVlLmRhdGEpO1xuXG4gICAgICAgICAgLy8geW91IGNhbiBwYXNzIGFzIGFycmF5cyBhcyB5b3Ugd2FudC4uIGl0IHdpbGwgYmUgbWVyZ2VkIGluIG9uIHBsYWNlXG4gICAgICAgICAgLy8gcmVtb3ZlZCBkdXBsaWNhdGVzO1xuICAgICAgICAgIHJlc3VsdCA9IHRoaXMuX2ludGVyc2VjdGlvbihyZXNvdXJjZSwgaWRlbnRpdHlGb3VuZERhdGEsIHNjaGVtYUZvdW5kRGF0YSwgZGF0YUZvdW5kLCBtZXRhZGF0YUZvdW5kKTtcblxuICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09IDAgJiYgaXNUb1Byb3RvU3R1YlJlc3VtZSAmJiB0eXBlID09ICdvYnNlcnZlcnMnICYmIG1zZy5mcm9tLnNwbGl0KCdwcm90b3N0dWInKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgc3RvcmVkT2JzZXJ2ZXJzID0gc3RvcmVkRGF0YU9iamVjdHNbdHlwZV07XG4gICAgICAgICAgICBsZXQgZnJvbURvbWFpbiA9IGRpdmlkZVVSTChtc2cuZnJvbSkuZG9tYWluO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RvcmVkT2JzZXJ2ZXJzKS5maWx0ZXIoKG9iamVjdFVSTCkgPT4ge1xuICAgICAgICAgICAgICBsZXQgc3Vic2NyaXB0aW9ucyA9IHN0b3JlZE9ic2VydmVyc1tvYmplY3RVUkxdLnN1YnNjcmlwdGlvbnM7XG4gICAgICAgICAgICAgIGxldCBoYXNTdWJzY3JpcHRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIGxldCBzdWJzY3JpcHRpb25Eb21haW4gPSBkaXZpZGVVUkwoc3Vic2NyaXB0aW9uKS5kb21haW47XG4gICAgICAgICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbkRvbWFpbiA9PSBmcm9tRG9tYWluKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChvYmplY3RVUkwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpbml0ID0ge307XG4gICAgICAgIHJlc3VsdC5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICBsZXQgY3VycmVudElzUmVwb3J0ZXIgPSBzdG9yZWREYXRhT2JqZWN0c1t0eXBlXVtrZXldO1xuICAgICAgICAgIGluaXRba2V5XSA9IGN1cnJlbnRJc1JlcG9ydGVyO1xuICAgICAgICAgIHJldHVybiBpbml0O1xuICAgICAgICB9KTtcblxuICAgICAgICBsb2cubG9nKCdbU3RvcmUgRGF0YSBPYmplY3RzXSAtICcsIGluaXQpO1xuXG4gICAgICAgIHJlc29sdmUoaW5pdCk7XG4gICAgICB9KTtcblxuICAgIH0pO1xuXG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgX2dldFJlc291cmNlc0J5SWRlbnRpdHkoc3RvcmVkRGF0YSwgdXNlclVSTCkge1xuICAgIGlmICghc3RvcmVkRGF0YSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHN0b3JlZERhdGEpLmZpbHRlcigob2JqZWN0VVJMKSA9PiB7XG4gICAgICByZXR1cm4gc3RvcmVkRGF0YVtvYmplY3RVUkxdLnN1YnNjcmliZXJVc2Vycy5maWx0ZXIoKGN1cnJlbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnQgPT09IHVzZXJVUkw7XG4gICAgICB9KS5sZW5ndGg7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgX2dldFJlc291cmNlc0J5T3duZXIoc3RvcmVkRGF0YSwgb3duZXIpIHtcbiAgICBpZiAoIXN0b3JlZERhdGEpIHJldHVybiBbXTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc3RvcmVkRGF0YSkuZmlsdGVyKChvYmplY3RVUkwpID0+IHtcbiAgICAgIHJldHVybiBzdG9yZWREYXRhW29iamVjdFVSTF0ucmVwb3J0ZXIgPT09IG93bmVyO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqIEB0b2RvIGRvY3VtZW50YXRpb25cbiAgICovXG4gIF9nZXRSZXNvdXJjZXNCeVN1YnNjcmlwdGlvbihzdG9yZWREYXRhLCBzdWJzY3JpcHRpb24pIHtcbiAgICBpZiAoIXN0b3JlZERhdGEpIHJldHVybiBbXTtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhzdG9yZWREYXRhKS5maWx0ZXIoKG9iamVjdFVSTCkgPT4ge1xuICAgICAgcmV0dXJuIHN0b3JlZERhdGFbb2JqZWN0VVJMXS5zdWJzY3JpcHRpb25zLmZpbHRlcigoY3VycmVudCkgPT4ge1xuICAgICAgICByZXR1cm4gY3VycmVudCA9PT0gc3Vic2NyaXB0aW9uO1xuICAgICAgfSkubGVuZ3RoO1xuICAgIH0pO1xuXG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgX2dldFJlc291cmNlc0J5U2NoZW1hKHN0b3JlZERhdGEsIHNjaGVtYSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhzdG9yZWREYXRhKS5maWx0ZXIoKG9iamVjdFVSTCkgPT4ge1xuICAgICAgbGV0IGN1cnJlbnRPYmplY3QgPSBzdG9yZWREYXRhW29iamVjdFVSTF07XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoY3VycmVudE9iamVjdCkuZmlsdGVyKChrZXkpID0+IHtcbiAgICAgICAgcmV0dXJuIGtleSA9PT0gJ3NjaGVtYScgJiYgY3VycmVudE9iamVjdFtrZXldID09PSBzY2hlbWE7XG4gICAgICB9KS5sZW5ndGg7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgX2dldFJlc291cmNlc0J5TWV0YWRhdGEoc3RvcmVkRGF0YSwgbWV0YWRhdGEpIHtcbiAgICBpZiAoIW1ldGFkYXRhKSByZXR1cm4gW107XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc3RvcmVkRGF0YSkuZmlsdGVyKChvYmplY3RVUkwpID0+IHtcbiAgICAgIGxldCBjdXJyZW50T2JqZWN0ID0gc3RvcmVkRGF0YVtvYmplY3RVUkxdO1xuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGN1cnJlbnRPYmplY3QpLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICAgIC8vIHNlYXJjaCBvbiBzdG9yZURhdGFPYmplY3RzIGZvciBzcGVjaWZpYyBrZXkgcHJvdmlkZWQgZnJvbSBkYXRhO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMobWV0YWRhdGEpLmZpbHRlcihzZWFyY2hGb3IgPT4ge1xuICAgICAgICAgIHJldHVybiBrZXkgPT09IHNlYXJjaEZvciAmJiBjdXJyZW50T2JqZWN0W2tleV0gPT09IG1ldGFkYXRhW3NlYXJjaEZvcl07XG4gICAgICAgIH0pLmxlbmd0aDtcblxuICAgICAgfSkubGVuZ3RoO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqIEB0b2RvIGRvY3VtZW50YXRpb25cbiAgICovXG4gIF9nZXRSZXNvdXJjZXNCeURhdGEoc3RvcmVkRGF0YSwgZGF0YSkge1xuICAgIGlmICghZGF0YSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHN0b3JlZERhdGEpLmZpbHRlcigob2JqZWN0VVJMKSA9PiB7XG4gICAgICBsZXQgY3VycmVudE9iamVjdCA9IHN0b3JlZERhdGFbb2JqZWN0VVJMXS5oYXNPd25Qcm9wZXJ0eSgnZGF0YScpID8gc3RvcmVkRGF0YVtvYmplY3RVUkxdLmRhdGEgOiB7fTtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhjdXJyZW50T2JqZWN0KS5maWx0ZXIoKGtleSkgPT4ge1xuICAgICAgICAvLyBzZWFyY2ggb24gc3RvcmVEYXRhT2JqZWN0cyBmb3Igc3BlY2lmaWMga2V5IHByb3ZpZGVkIGZyb20gZGF0YTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGRhdGEpLmZpbHRlcihzZWFyY2hGb3IgPT4ge1xuICAgICAgICAgIHJldHVybiBrZXkgPT09IHNlYXJjaEZvciAmJiBjdXJyZW50T2JqZWN0W2tleV0gPT09IGRhdGFbc2VhcmNoRm9yXTtcbiAgICAgICAgfSkubGVuZ3RoO1xuXG4gICAgICB9KS5sZW5ndGg7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgX2hhc1N1YnNjcmlwdGlvbihzdG9yZWREYXRhLCBzdWJzY3JpcHRpb24pIHtcbiAgICBpZiAoIXN0b3JlZERhdGEpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhzdG9yZWREYXRhKS5maWx0ZXIoKG9iamVjdFVSTCkgPT4ge1xuICAgICAgcmV0dXJuIHN0b3JlZERhdGFbb2JqZWN0VVJMXS5zdWJzY3JpcHRpb25zLmZpbHRlcigoY3VycmVudCkgPT4ge1xuICAgICAgICByZXR1cm4gY3VycmVudCA9PT0gc3Vic2NyaXB0aW9uO1xuICAgICAgfSkubGVuZ3RoO1xuICAgIH0pLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgX3NlYXJjaE93bmVyKHN0b3JlZERhdGEsIGZyb20pIHtcbiAgICBpZiAoIXN0b3JlZERhdGEpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhzdG9yZWREYXRhKS5maWx0ZXIoKG9iamVjdFVSTCkgPT4ge1xuICAgICAgcmV0dXJuIHN0b3JlZERhdGFbb2JqZWN0VVJMXS5yZXBvcnRlciA9PT0gZnJvbTtcbiAgICB9KS5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqIEB0b2RvIGRvY3VtZW50YXRpb25cbiAgICovXG4gIF9jaGVja1Byb3Rvc3R1YlJlc3VtZShzdG9yZWREYXRhT2JqZWN0cywgbXNnKSB7XG5cbiAgICBpZiAoIXN0b3JlZERhdGFPYmplY3RzKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAobXNnLmhhc093blByb3BlcnR5KCdib2R5JykgJiYgbXNnLmJvZHkuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykgJiYgbXNnLmJvZHkudmFsdWUuaGFzT3duUHJvcGVydHkoJ3JlcG9ydGVyJykpIHtcbiAgICAgIGxldCByZXBvcnRlciA9IG1zZy5ib2R5LnZhbHVlLnJlcG9ydGVyO1xuICAgICAgaWYgKHN0b3JlZERhdGFPYmplY3RzLmhhc093blByb3BlcnR5KCdyZXBvcnRlcnMnKSkge1xuICAgICAgICBsZXQgcmVwb3J0ZXJzU3RvcmVkID0gc3RvcmVkRGF0YU9iamVjdHMucmVwb3J0ZXJzO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocmVwb3J0ZXJzU3RvcmVkKS5maWx0ZXIoKG9iamVjdFVSTCkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXBvcnRlcnNTdG9yZWRbb2JqZWN0VVJMXS5yZXBvcnRlciA9PT0gcmVwb3J0ZXI7XG4gICAgICAgIH0pLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdG9yZWREYXRhT2JqZWN0cy5oYXNPd25Qcm9wZXJ0eSgnb2JzZXJ2ZXJzJykpIHtcbiAgICAgIGxldCBzdG9yZWRPYnNlcnZlcnMgPSBzdG9yZWREYXRhT2JqZWN0cy5vYnNlcnZlcnM7XG4gICAgICBsZXQgZnJvbURvbWFpbiA9IGRpdmlkZVVSTChtc2cuZnJvbSkuZG9tYWluO1xuXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoc3RvcmVkT2JzZXJ2ZXJzKS5maWx0ZXIoKG9iamVjdFVSTCkgPT4ge1xuICAgICAgICBsZXQgc3Vic2NyaXB0aW9ucyA9IHN0b3JlZE9ic2VydmVyc1tvYmplY3RVUkxdLnN1YnNjcmlwdGlvbnM7XG4gICAgICAgIGxldCBoYXNTdWJzY3JpcHRpb24gPSBmYWxzZTtcbiAgICAgICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHN1YnNjcmlwdGlvbikge1xuICAgICAgICAgIGxldCBzdWJzY3JpcHRpb25Eb21haW4gPSBkaXZpZGVVUkwoc3Vic2NyaXB0aW9uKS5kb21haW47XG4gICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbkRvbWFpbiA9PSBmcm9tRG9tYWluKSB7XG4gICAgICAgICAgICBoYXNTdWJzY3JpcHRpb24gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChoYXNTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSkubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgX2lzT3duZXIodmFsdWUsIHVybCkge1xuICAgIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdmFsdWUucmVwb3J0ZXIgPT09IHVybCA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAdG9kbyBkb2N1bWVudGF0aW9uXG4gICAqL1xuICBfaW50ZXJzZWN0aW9uKCkge1xuICAgIGxldCBhcmdzID0gQXJyYXkuZnJvbShhcmd1bWVudHMpO1xuXG4gICAgbGV0IHJlc3VsdCA9IGFyZ3MucmVkdWNlKChmaXJzdCwgc2Vjb25kKSA9PiB7XG4gICAgICByZXR1cm4gZmlyc3QuY29uY2F0KHNlY29uZCk7XG4gICAgfSkuZmlsdGVyKCh2YWx1ZSwgaW5kZXgsIHNlbGYpID0+IHtcbiAgICAgIHJldHVybiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleDtcbiAgICB9KTtcbiAgICBsb2cubG9nKCdEYXRhT2JqZWN0c1N0b3JhZ2UuX2ludGVyc2VjdGlvbl0gUmVzdWx0IGFuIHVuaXF1ZSBhcnJheSBvZiBzdHJpbmdzOiAnLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgX3VwZGF0ZVRvQXJyYXkoc3RvcmVEYXRhT2JqZWN0LCByZXNvdXJjZSwga2V5LCB2YWx1ZSkge1xuICAgIGxvZy5sb2coJ1tEYXRhT2JqZWN0c1N0b3JhZ2VdIC0gX3VwZGF0ZVRvQXJyYXk6ICcsIHN0b3JlRGF0YU9iamVjdCwgcmVzb3VyY2UsIGtleSwgdmFsdWUpO1xuICAgIGlmIChzdG9yZURhdGFPYmplY3RbcmVzb3VyY2VdW2tleV0uaW5kZXhPZih2YWx1ZSkgPT09IC0xKSBzdG9yZURhdGFPYmplY3RbcmVzb3VyY2VdW2tleV0ucHVzaCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICogQHRvZG8gZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgX3JlbW92ZUZyb21BcnJheShzdG9yZURhdGFPYmplY3QsIHJlc291cmNlLCBrZXksIHZhbHVlKSB7XG4gICAgbGV0IGluZGV4T2ZWYWx1ZSA9IHN0b3JlRGF0YU9iamVjdFtyZXNvdXJjZV1ba2V5XS5pbmRleE9mKHZhbHVlKTtcbiAgICBpZiAoaW5kZXhPZlZhbHVlID09PSAtMSkgc3RvcmVEYXRhT2JqZWN0W3Jlc291cmNlXVtrZXldLnNwbGljZShpbmRleE9mVmFsdWUsIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqIEB0b2RvIGRvY3VtZW50YXRpb25cbiAgICovXG4gIF9oYXNWYWx1ZShvYmosIGtleSwgdmFsdWUpIHtcbiAgICByZXR1cm4gb2JqLmhhc093blByb3BlcnR5KGtleSkgJiYgb2JqW2tleV0gPT09IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqIEB0b2RvIGRvY3VtZW50YXRpb25cbiAgICovXG4gIF9nZXRUeXBlT2ZPYmplY3QoaXNSZXBvcnRlcikge1xuICAgIHJldHVybiBpc1JlcG9ydGVyID8gJ3JlcG9ydGVycycgOiAnb2JzZXJ2ZXJzJztcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IERhdGFPYmplY3RzU3RvcmFnZTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvc3RvcmUtb2JqZWN0cy9EYXRhT2JqZWN0c1N0b3JhZ2UuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7Ozs7O0FBSEE7QUFDQTtBQUdBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFPQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQVFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///502\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(128);\n__webpack_require__(504);\nmodule.exports = __webpack_require__(10).Array.from;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9hcnJheS9mcm9tLmpzP2U3MzciXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5hcnJheS5mcm9tJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5BcnJheS5mcm9tO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2FycmF5L2Zyb20uanNcbi8vIG1vZHVsZSBpZCA9IDUwM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///503\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar ctx = __webpack_require__(65);\nvar $export = __webpack_require__(21);\nvar toObject = __webpack_require__(77);\nvar call = __webpack_require__(192);\nvar isArrayIter = __webpack_require__(193);\nvar toLength = __webpack_require__(134);\nvar createProperty = __webpack_require__(505);\nvar getIterFn = __webpack_require__(194);\n\n$export($export.S + $export.F * !__webpack_require__(199)(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5mcm9tLmpzP2FiMjIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuL19pdGVyLWNhbGwnKTtcbnZhciBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgZ2V0SXRlckZuID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbiAoaXRlcikgeyBBcnJheS5mcm9tKGl0ZXIpOyB9KSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjIuMSBBcnJheS5mcm9tKGFycmF5TGlrZSwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQpXG4gIGZyb206IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlIC8qICwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQgKi8pIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KGFycmF5TGlrZSk7XG4gICAgdmFyIEMgPSB0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nID8gdGhpcyA6IEFycmF5O1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgbWFwZm4gPSBhTGVuID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgaXRlckZuID0gZ2V0SXRlckZuKE8pO1xuICAgIHZhciBsZW5ndGgsIHJlc3VsdCwgc3RlcCwgaXRlcmF0b3I7XG4gICAgaWYgKG1hcHBpbmcpIG1hcGZuID0gY3R4KG1hcGZuLCBhTGVuID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCwgMik7XG4gICAgLy8gaWYgb2JqZWN0IGlzbid0IGl0ZXJhYmxlIG9yIGl0J3MgYXJyYXkgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIHNpbXBsZSBjYXNlXG4gICAgaWYgKGl0ZXJGbiAhPSB1bmRlZmluZWQgJiYgIShDID09IEFycmF5ICYmIGlzQXJyYXlJdGVyKGl0ZXJGbikpKSB7XG4gICAgICBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoTyksIHJlc3VsdCA9IG5ldyBDKCk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgaW5kZXgrKykge1xuICAgICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBtYXBwaW5nID8gY2FsbChpdGVyYXRvciwgbWFwZm4sIFtzdGVwLnZhbHVlLCBpbmRleF0sIHRydWUpIDogc3RlcC52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICAgIGZvciAocmVzdWx0ID0gbmV3IEMobGVuZ3RoKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5mcm9tLmpzXG4vLyBtb2R1bGUgaWQgPSA1MDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///504\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $defineProperty = __webpack_require__(40);\nvar createDesc = __webpack_require__(74);\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jcmVhdGUtcHJvcGVydHkuanM/N2MxNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBpbmRleCwgdmFsdWUpIHtcbiAgaWYgKGluZGV4IGluIG9iamVjdCkgJGRlZmluZVByb3BlcnR5LmYob2JqZWN0LCBpbmRleCwgY3JlYXRlRGVzYygwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtpbmRleF0gPSB2YWx1ZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3JlYXRlLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA1MDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///505\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(11);\n\nvar _PromiseQueue = __webpack_require__(507);\n\nvar _PromiseQueue2 = _interopRequireDefault(_PromiseQueue);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('HypertyResourcesStorage'); // Log System\n\nvar HypertyResourcesStorage = function () {\n function HypertyResourcesStorage(runtimeURL, bus, storageManager, hypertyResources) {\n (0, _classCallCheck3.default)(this, HypertyResourcesStorage);\n\n\n if (!storageManager) throw new Error('[HypertyResourcesStorage constructor] mandatory storageManager parameter missing');\n if (!runtimeURL) throw new Error('[HypertyResourcesStorage constructor] mandatory runtimeURL parameter missing');\n if (!bus) throw new Error('[HypertyResourcesStorage constructor] mandatory bus parameter missing');\n\n var _this = this;\n\n _this._bus = bus;\n\n _this._storageLimit = 0.9; // the save storageLimit;\n\n _this._url = runtimeURL + '/storage';\n\n _this._storageManager = storageManager;\n\n _this.promiseQueue = new _PromiseQueue2.default();\n\n _this._hypertyResources = hypertyResources;\n\n bus.addListener(_this._url, function (msg) {\n log.info('[HypertyResourcesStorage] Message RCV: ', msg);\n switch (msg.type) {\n case 'create':\n _this._onCreate(msg);break;\n case 'read':\n _this._onRead(msg);break;\n case 'delete':\n _this._onDelete(msg);break;\n }\n });\n }\n\n /**\n * check the available storage quota\n *\n * @memberof HypertyResourcesStorage\n */\n\n\n (0, _createClass3.default)(HypertyResourcesStorage, [{\n key: 'checkStorageQuota',\n value: function checkStorageQuota() {\n var _this2 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n if (_this2._availableQuota && _this2._usage) {\n return resolve((0, _utils.availableSpace)(_this2._usage, _this2._availableQuota));\n }\n\n if (navigator) {\n\n navigator.storage.estimate().then(function (estimate) {\n _this2._availableQuota = estimate.quota;\n _this2._usage = estimate.usage;\n resolve((0, _utils.availableSpace)(_this2._usage, _this2._availableQuota));\n }).catch(function (reason) {\n log.error('[HypertyResourcesStorage] CheckStorageQuota error: ', reason);\n reject(reason);\n });\n }\n });\n }\n\n /**\n * @description should save an HypertyResource contained in the body of a create message request;\n *\n * @param {string} message - message containing the hyperty resource to be stored\n */\n\n }, {\n key: '_onCreate',\n value: function _onCreate(message) {\n\n var _this = this;\n\n if (!message.body || !message.body.value) throw new Error('[HypertyResourcesStorage._onCreate] mandatory message body value missing: ', message);\n\n var content = message.body.value;\n var contentURL = content.contentURL;\n var resourceURL = '';\n\n if (!contentURL) {\n\n contentURL = [];\n resourceURL = _this._url + '/' + (0, _utils.generateGUID)();\n } else {\n var currentURL = contentURL[0];\n var resource = currentURL.substr(currentURL.lastIndexOf('/') + 1);\n resourceURL = _this._url + '/' + resource;\n }\n\n if (!_this._hypertyResources.hasOwnProperty(resourceURL)) {\n\n contentURL.push(resourceURL);\n content.contentURL = contentURL;\n }\n\n this._hypertyResources[resourceURL] = content;\n\n this.promiseQueue.add(this._toSave(resourceURL, message, content));\n }\n }, {\n key: '_toSave',\n value: function _toSave(resourceURL, message, content) {\n var _this3 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n var error = function error(reason) {\n var response = {\n from: message.to,\n to: message.from,\n id: message.id,\n type: 'response',\n body: { value: resourceURL, code: 500, description: reason }\n };\n\n _this3._bus.postMessage(response);\n\n return reject(reason);\n };\n\n _this3.checkStorageQuota().then(function (result) {\n\n if (content.size > result.quota) {\n var msg = 'The storage do not have space to store that resource';\n error(msg);\n throw Error(msg);\n }\n\n var spaceAvailable = result.quota;\n var allocated = result.usage + content.size;\n\n if (result.percent >= _this3._storageLimit || allocated > spaceAvailable) {\n return _this3._getOlderResources(content.size);\n } else {\n return true;\n }\n }).then(function () {\n return _this3._storageManager.set(resourceURL, 1, content);\n }).then(function () {\n\n var response = {\n from: message.to,\n to: message.from,\n id: message.id,\n type: 'response',\n body: { value: resourceURL, code: 200 }\n };\n\n _this3._bus.postMessage(response);\n\n log.log('Success');\n\n return resolve();\n }).catch(error);\n });\n }\n }, {\n key: '_getOlderResources',\n value: function _getOlderResources(size) {\n var _this4 = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this4._storageManager.get().then(function (result) {\n\n var resources = (0, _keys2.default)(result);\n\n var total = 0;\n var reduced = resources.sort(function (a, b) {\n return result[a].created < result[b].created;\n }).reduce(function (previousResource, currentResource) {\n var current = _this4._hypertyResources[currentResource];\n\n log.log('[HypertyResourcesStorage] _getOlderResources: ', total, size, currentResource, _this4._availableQuota);\n\n if (total <= size) {\n total += current.size;\n previousResource.push(currentResource);\n }\n\n return previousResource;\n }, []);\n\n var deleting = reduced.map(function (key) {\n return _this4._storageManager.delete(key);\n });\n\n _promise2.default.all(deleting).then(function () {\n resolve(true);\n }).catch(function (reason) {\n reject(reason);\n });\n });\n });\n }\n\n /**\n * @description should return an HypertyResource stored in the Storage Manager identified by the content url contained in the body of a read message request;\n *\n * @param {string} message - message containing the hyperty resource to be stored\n */\n\n }, {\n key: '_onRead',\n value: function _onRead(message) {\n\n var _this = this;\n\n if (!message.body || !message.body.resource) throw new Error('[HypertyResourcesStorage._onRead] mandatory message body resource missing: ', message);\n\n var contentUrl = message.body.resource;\n\n var response = {\n from: message.to,\n to: message.from,\n id: message.id,\n type: 'response',\n body: {}\n };\n\n // let content = _this._hypertyResources[contentUrl];\n\n log.info('[HypertyResourcesStorage._onRead] get resourceURL:', contentUrl);\n\n this._storageManager.get('resourceURL', contentUrl).then(function (content) {\n\n log.info('[HypertyResourcesStorage._onRead] found content:', content);\n\n if (content) {\n\n if (content.resourceType === 'file') {\n _this._onReadFile(response, content);\n } else {\n response.body.code = 200;\n response.body.p2p = true;\n response.body.value = content;\n _this._bus.postMessage(response);\n }\n } else {\n response.body.code = 404;\n response.body.desc = 'Content Not Found for ' + contentUrl;\n _this._bus.postMessage(response);\n }\n });\n\n //response.body.code = 404;\n\n //_this._hypertyResources[contentUrl] = message.body.value;\n\n }\n }, {\n key: '_onReadFile',\n value: function _onReadFile(response, resource) {\n var _this = this;\n\n var reader = new FileReader();\n\n reader.onload = function (theFile) {\n\n log.info('[FileHypertyResource.init] file loaded ', theFile);\n\n response.body.code = 200;\n response.body.p2p = true;\n response.body.value = (0, _utils.deepClone)(resource);\n response.body.value.content = theFile.target.result;\n _this._bus.postMessage(response);\n };\n\n if (resource.mimetype.includes('text/')) {\n reader.readAsText(resource.content);\n } else {\n var current = resource.content;\n\n var blob = void 0;\n if (Array.isArray(current)) {\n blob = new Blob(current, { type: resource.mimetype });\n } else {\n blob = new Blob([current], { type: resource.mimetype });\n }\n\n reader.readAsArrayBuffer(blob);\n }\n }\n\n /**\n * @description should delete an HypertyResource from the storage;\n *\n * @param {string} message - message containing the content URL of the hyperty resource to be deleted\n */\n\n }, {\n key: '_onDelete',\n value: function _onDelete(message) {\n\n var _this = this;\n\n if (!message.body) throw new Error('[HypertyResourcesStorage._onDelete] mandatory message body missing: ', message);\n\n if (message.body.resource) {\n delete _this._hypertyResources[message.body.resource];\n } else if (message.body.resources) {\n message.body.resources.forEach(function (resource) {\n delete _this._hypertyResources[resource];\n });\n } else {\n throw new Error('[HypertyResourcesStorage._onDelete] mandatory resource missing: ', message);\n }\n\n _this._storageManager.delete('resourceURL', message.body.resource).then(function () {\n var response = {\n from: message.to,\n to: message.from,\n id: message.id,\n type: 'response',\n body: { code: 200 }\n };\n\n _this._bus.postMessage(response);\n }).catch(function (reason) {\n var response = {\n from: message.to,\n to: message.from,\n id: message.id,\n type: 'response',\n body: { code: 400, description: reason }\n };\n\n _this._bus.postMessage(response);\n });\n }\n }]);\n return HypertyResourcesStorage;\n}();\n\nexports.default = HypertyResourcesStorage;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9oeXBlcnR5LXJlc291cmNlcy1zdG9yYWdlL0h5cGVydHlSZXNvdXJjZXNTdG9yYWdlLmpzP2Q0NjciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9nIFN5c3RlbVxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdIeXBlcnR5UmVzb3VyY2VzU3RvcmFnZScpO1xuXG5pbXBvcnQgeyBnZW5lcmF0ZUdVSUQsIGRlZXBDbG9uZSwgYXZhaWxhYmxlU3BhY2UgfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5cbmltcG9ydCBQcm9taXNlUXVldWUgZnJvbSAnLi4vdXRpbHMvUHJvbWlzZVF1ZXVlJztcblxuY2xhc3MgSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2Uge1xuXG4gIGNvbnN0cnVjdG9yKHJ1bnRpbWVVUkwsIGJ1cywgc3RvcmFnZU1hbmFnZXIsIGh5cGVydHlSZXNvdXJjZXMpIHtcblxuICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHRocm93IG5ldyBFcnJvcignW0h5cGVydHlSZXNvdXJjZXNTdG9yYWdlIGNvbnN0cnVjdG9yXSBtYW5kYXRvcnkgc3RvcmFnZU1hbmFnZXIgcGFyYW1ldGVyIG1pc3NpbmcnKTtcbiAgICBpZiAoIXJ1bnRpbWVVUkwpIHRocm93IG5ldyBFcnJvcignW0h5cGVydHlSZXNvdXJjZXNTdG9yYWdlIGNvbnN0cnVjdG9yXSBtYW5kYXRvcnkgcnVudGltZVVSTCBwYXJhbWV0ZXIgbWlzc2luZycpO1xuICAgIGlmICghYnVzKSB0aHJvdyBuZXcgRXJyb3IoJ1tIeXBlcnR5UmVzb3VyY2VzU3RvcmFnZSBjb25zdHJ1Y3Rvcl0gbWFuZGF0b3J5IGJ1cyBwYXJhbWV0ZXIgbWlzc2luZycpO1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIF90aGlzLl9idXMgPSBidXM7XG5cbiAgICBfdGhpcy5fc3RvcmFnZUxpbWl0ID0gMC45OyAvLyB0aGUgc2F2ZSBzdG9yYWdlTGltaXQ7XG5cbiAgICBfdGhpcy5fdXJsID0gcnVudGltZVVSTCArICcvc3RvcmFnZSc7XG5cbiAgICBfdGhpcy5fc3RvcmFnZU1hbmFnZXIgPSBzdG9yYWdlTWFuYWdlcjtcblxuICAgIF90aGlzLnByb21pc2VRdWV1ZSA9IG5ldyBQcm9taXNlUXVldWUoKTtcblxuICAgIF90aGlzLl9oeXBlcnR5UmVzb3VyY2VzID0gaHlwZXJ0eVJlc291cmNlcztcblxuICAgIGJ1cy5hZGRMaXN0ZW5lcihfdGhpcy5fdXJsLCAobXNnKSA9PiB7XG4gICAgICBsb2cuaW5mbygnW0h5cGVydHlSZXNvdXJjZXNTdG9yYWdlXSBNZXNzYWdlIFJDVjogJywgbXNnKTtcbiAgICAgIHN3aXRjaCAobXNnLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnY3JlYXRlJzogX3RoaXMuX29uQ3JlYXRlKG1zZyk7IGJyZWFrO1xuICAgICAgICBjYXNlICdyZWFkJzogX3RoaXMuX29uUmVhZChtc2cpOyBicmVhaztcbiAgICAgICAgY2FzZSAnZGVsZXRlJzogX3RoaXMuX29uRGVsZXRlKG1zZyk7IGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIH1cblxuICAvKipcbiAgICogY2hlY2sgdGhlIGF2YWlsYWJsZSBzdG9yYWdlIHF1b3RhXG4gICAqXG4gICAqIEBtZW1iZXJvZiBIeXBlcnR5UmVzb3VyY2VzU3RvcmFnZVxuICAgKi9cbiAgY2hlY2tTdG9yYWdlUXVvdGEoKSB7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBpZiAodGhpcy5fYXZhaWxhYmxlUXVvdGEgJiYgdGhpcy5fdXNhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoYXZhaWxhYmxlU3BhY2UodGhpcy5fdXNhZ2UsIHRoaXMuX2F2YWlsYWJsZVF1b3RhKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuYXZpZ2F0b3IpIHtcblxuICAgICAgICBuYXZpZ2F0b3Iuc3RvcmFnZS5lc3RpbWF0ZSgpLnRoZW4oKGVzdGltYXRlKSA9PiB7XG4gICAgICAgICAgdGhpcy5fYXZhaWxhYmxlUXVvdGEgPSBlc3RpbWF0ZS5xdW90YTtcbiAgICAgICAgICB0aGlzLl91c2FnZSA9IGVzdGltYXRlLnVzYWdlO1xuICAgICAgICAgIHJlc29sdmUoYXZhaWxhYmxlU3BhY2UodGhpcy5fdXNhZ2UsIHRoaXMuX2F2YWlsYWJsZVF1b3RhKSk7XG5cbiAgICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xuICAgICAgICAgIGxvZy5lcnJvcignW0h5cGVydHlSZXNvdXJjZXNTdG9yYWdlXSBDaGVja1N0b3JhZ2VRdW90YSBlcnJvcjogJywgcmVhc29uKTtcbiAgICAgICAgICByZWplY3QocmVhc29uKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIH1cblxuICAgIH0pO1xuXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIHNob3VsZCBzYXZlIGFuIEh5cGVydHlSZXNvdXJjZSBjb250YWluZWQgaW4gdGhlIGJvZHkgb2YgYSBjcmVhdGUgbWVzc2FnZSByZXF1ZXN0O1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgaHlwZXJ0eSByZXNvdXJjZSB0byBiZSBzdG9yZWRcbiAgICovXG5cbiAgX29uQ3JlYXRlKG1lc3NhZ2UpIHtcblxuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIW1lc3NhZ2UuYm9keSB8fCAhbWVzc2FnZS5ib2R5LnZhbHVlKSB0aHJvdyBuZXcgRXJyb3IoJ1tIeXBlcnR5UmVzb3VyY2VzU3RvcmFnZS5fb25DcmVhdGVdIG1hbmRhdG9yeSBtZXNzYWdlIGJvZHkgdmFsdWUgbWlzc2luZzogJywgbWVzc2FnZSk7XG5cbiAgICBsZXQgY29udGVudCA9IG1lc3NhZ2UuYm9keS52YWx1ZTtcbiAgICBsZXQgY29udGVudFVSTCA9IGNvbnRlbnQuY29udGVudFVSTDtcbiAgICBsZXQgcmVzb3VyY2VVUkwgPSAnJztcblxuICAgIGlmICghY29udGVudFVSTCkge1xuXG4gICAgICBjb250ZW50VVJMID0gW107XG4gICAgICByZXNvdXJjZVVSTCA9IF90aGlzLl91cmwgKyAnLycgKyBnZW5lcmF0ZUdVSUQoKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjdXJyZW50VVJMID0gY29udGVudFVSTFswXTtcbiAgICAgIGNvbnN0IHJlc291cmNlID0gY3VycmVudFVSTC5zdWJzdHIoY3VycmVudFVSTC5sYXN0SW5kZXhPZignLycpICsgMSk7XG4gICAgICByZXNvdXJjZVVSTCA9IF90aGlzLl91cmwgKyAnLycgKyByZXNvdXJjZTtcbiAgICB9XG5cbiAgICBpZiAoIV90aGlzLl9oeXBlcnR5UmVzb3VyY2VzLmhhc093blByb3BlcnR5KHJlc291cmNlVVJMKSkge1xuXG4gICAgICBjb250ZW50VVJMLnB1c2gocmVzb3VyY2VVUkwpO1xuICAgICAgY29udGVudC5jb250ZW50VVJMID0gY29udGVudFVSTDtcblxuICAgIH1cblxuICAgIHRoaXMuX2h5cGVydHlSZXNvdXJjZXNbcmVzb3VyY2VVUkxdID0gY29udGVudDtcblxuICAgIHRoaXMucHJvbWlzZVF1ZXVlLmFkZCh0aGlzLl90b1NhdmUocmVzb3VyY2VVUkwsIG1lc3NhZ2UsIGNvbnRlbnQpKTtcblxuICB9XG5cbiAgX3RvU2F2ZShyZXNvdXJjZVVSTCwgbWVzc2FnZSwgY29udGVudCkge1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgY29uc3QgZXJyb3IgPSAocmVhc29uKSA9PiB7XG4gICAgICAgIGxldCByZXNwb25zZSA9IHtcbiAgICAgICAgICBmcm9tOiBtZXNzYWdlLnRvLFxuICAgICAgICAgIHRvOiBtZXNzYWdlLmZyb20sXG4gICAgICAgICAgaWQ6IG1lc3NhZ2UuaWQsXG4gICAgICAgICAgdHlwZTogJ3Jlc3BvbnNlJyxcbiAgICAgICAgICBib2R5OiB7IHZhbHVlOiByZXNvdXJjZVVSTCwgY29kZTogNTAwLCBkZXNjcmlwdGlvbjogcmVhc29uIH1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9idXMucG9zdE1lc3NhZ2UocmVzcG9uc2UpO1xuXG4gICAgICAgIHJldHVybiByZWplY3QocmVhc29uKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY2hlY2tTdG9yYWdlUXVvdGEoKS50aGVuKChyZXN1bHQpID0+IHtcblxuICAgICAgICBpZiAoY29udGVudC5zaXplID4gcmVzdWx0LnF1b3RhKSB7XG4gICAgICAgICAgY29uc3QgbXNnID0gJ1RoZSBzdG9yYWdlIGRvIG5vdCBoYXZlIHNwYWNlIHRvIHN0b3JlIHRoYXQgcmVzb3VyY2UnO1xuICAgICAgICAgIGVycm9yKG1zZyk7XG4gICAgICAgICAgdGhyb3cgRXJyb3IobXNnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNwYWNlQXZhaWxhYmxlID0gcmVzdWx0LnF1b3RhO1xuICAgICAgICBjb25zdCBhbGxvY2F0ZWQgPSByZXN1bHQudXNhZ2UgKyBjb250ZW50LnNpemU7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5wZXJjZW50ID49IHRoaXMuX3N0b3JhZ2VMaW1pdCB8fCBhbGxvY2F0ZWQgPiBzcGFjZUF2YWlsYWJsZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRPbGRlclJlc291cmNlcyhjb250ZW50LnNpemUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RvcmFnZU1hbmFnZXIuc2V0KHJlc291cmNlVVJMLCAxLCBjb250ZW50KTtcbiAgICAgIH0pLnRoZW4oKCkgPT4ge1xuXG4gICAgICAgIGxldCByZXNwb25zZSA9IHtcbiAgICAgICAgICBmcm9tOiBtZXNzYWdlLnRvLFxuICAgICAgICAgIHRvOiBtZXNzYWdlLmZyb20sXG4gICAgICAgICAgaWQ6IG1lc3NhZ2UuaWQsXG4gICAgICAgICAgdHlwZTogJ3Jlc3BvbnNlJyxcbiAgICAgICAgICBib2R5OiB7IHZhbHVlOiByZXNvdXJjZVVSTCwgY29kZTogMjAwIH1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9idXMucG9zdE1lc3NhZ2UocmVzcG9uc2UpO1xuXG4gICAgICAgIGxvZy5sb2coJ1N1Y2Nlc3MnKTtcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuXG4gICAgICB9KS5jYXRjaChlcnJvcik7XG5cbiAgICB9KTtcblxuICB9XG5cbiAgX2dldE9sZGVyUmVzb3VyY2VzKHNpemUpIHtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgIHRoaXMuX3N0b3JhZ2VNYW5hZ2VyLmdldCgpLnRoZW4oKHJlc3VsdCkgPT4ge1xuXG4gICAgICAgIGNvbnN0IHJlc291cmNlcyA9IE9iamVjdC5rZXlzKHJlc3VsdCk7XG5cbiAgICAgICAgbGV0IHRvdGFsID0gMDtcbiAgICAgICAgY29uc3QgcmVkdWNlZCA9IHJlc291cmNlcy5zb3J0KChhLCBiKSA9PiByZXN1bHRbYV0uY3JlYXRlZCA8IHJlc3VsdFtiXS5jcmVhdGVkKVxuICAgICAgICAgIC5yZWR1Y2UoKHByZXZpb3VzUmVzb3VyY2UsIGN1cnJlbnRSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuX2h5cGVydHlSZXNvdXJjZXNbY3VycmVudFJlc291cmNlXTtcblxuICAgICAgICAgICAgbG9nLmxvZygnW0h5cGVydHlSZXNvdXJjZXNTdG9yYWdlXSBfZ2V0T2xkZXJSZXNvdXJjZXM6ICcsIHRvdGFsLCBzaXplLCBjdXJyZW50UmVzb3VyY2UsIHRoaXMuX2F2YWlsYWJsZVF1b3RhKTtcblxuICAgICAgICAgICAgaWYgKHRvdGFsIDw9IHNpemUpIHtcbiAgICAgICAgICAgICAgdG90YWwgKz0gY3VycmVudC5zaXplO1xuICAgICAgICAgICAgICBwcmV2aW91c1Jlc291cmNlLnB1c2goY3VycmVudFJlc291cmNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzUmVzb3VyY2U7XG5cbiAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgY29uc3QgZGVsZXRpbmcgPSByZWR1Y2VkLm1hcChrZXkgPT4gdGhpcy5fc3RvcmFnZU1hbmFnZXIuZGVsZXRlKGtleSkpO1xuXG4gICAgICAgIFByb21pc2UuYWxsKGRlbGV0aW5nKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICB9KS5jYXRjaCgocmVhc29uKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH0pO1xuXG4gICAgICB9KTtcblxuICAgIH0pO1xuXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIHNob3VsZCByZXR1cm4gYW4gSHlwZXJ0eVJlc291cmNlIHN0b3JlZCBpbiB0aGUgU3RvcmFnZSBNYW5hZ2VyIGlkZW50aWZpZWQgYnkgdGhlIGNvbnRlbnQgdXJsIGNvbnRhaW5lZCBpbiB0aGUgYm9keSBvZiBhIHJlYWQgbWVzc2FnZSByZXF1ZXN0O1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgaHlwZXJ0eSByZXNvdXJjZSB0byBiZSBzdG9yZWRcbiAgICovXG5cbiAgX29uUmVhZChtZXNzYWdlKSB7XG5cbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKCFtZXNzYWdlLmJvZHkgfHwgIW1lc3NhZ2UuYm9keS5yZXNvdXJjZSkgdGhyb3cgbmV3IEVycm9yKCdbSHlwZXJ0eVJlc291cmNlc1N0b3JhZ2UuX29uUmVhZF0gbWFuZGF0b3J5IG1lc3NhZ2UgYm9keSByZXNvdXJjZSBtaXNzaW5nOiAnLCBtZXNzYWdlKTtcblxuICAgIGxldCBjb250ZW50VXJsID0gbWVzc2FnZS5ib2R5LnJlc291cmNlO1xuXG4gICAgbGV0IHJlc3BvbnNlID0ge1xuICAgICAgZnJvbTogbWVzc2FnZS50byxcbiAgICAgIHRvOiBtZXNzYWdlLmZyb20sXG4gICAgICBpZDogbWVzc2FnZS5pZCxcbiAgICAgIHR5cGU6ICdyZXNwb25zZScsXG4gICAgICBib2R5OiB7fVxuICAgIH07XG5cbiAgICAvLyBsZXQgY29udGVudCA9IF90aGlzLl9oeXBlcnR5UmVzb3VyY2VzW2NvbnRlbnRVcmxdO1xuXG4gICAgbG9nLmluZm8oJ1tIeXBlcnR5UmVzb3VyY2VzU3RvcmFnZS5fb25SZWFkXSBnZXQgcmVzb3VyY2VVUkw6JywgY29udGVudFVybCk7XG5cbiAgICB0aGlzLl9zdG9yYWdlTWFuYWdlci5nZXQoJ3Jlc291cmNlVVJMJywgY29udGVudFVybCkudGhlbigoY29udGVudCkgPT4ge1xuXG4gICAgICBsb2cuaW5mbygnW0h5cGVydHlSZXNvdXJjZXNTdG9yYWdlLl9vblJlYWRdIGZvdW5kIGNvbnRlbnQ6JywgY29udGVudCk7XG5cbiAgICAgIGlmIChjb250ZW50KSB7XG5cbiAgICAgICAgaWYgKGNvbnRlbnQucmVzb3VyY2VUeXBlID09PSAnZmlsZScpIHtcbiAgICAgICAgICBfdGhpcy5fb25SZWFkRmlsZShyZXNwb25zZSwgY29udGVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzcG9uc2UuYm9keS5jb2RlID0gMjAwO1xuICAgICAgICAgIHJlc3BvbnNlLmJvZHkucDJwID0gdHJ1ZTtcbiAgICAgICAgICByZXNwb25zZS5ib2R5LnZhbHVlID0gY29udGVudDtcbiAgICAgICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHJlc3BvbnNlKTtcbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNwb25zZS5ib2R5LmNvZGUgPSA0MDQ7XG4gICAgICAgIHJlc3BvbnNlLmJvZHkuZGVzYyA9ICdDb250ZW50IE5vdCBGb3VuZCBmb3IgJyArIGNvbnRlbnRVcmw7XG4gICAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2UocmVzcG9uc2UpO1xuXG4gICAgICB9XG5cbiAgICB9KTtcblxuICAgIC8vcmVzcG9uc2UuYm9keS5jb2RlID0gNDA0O1xuXG4gICAgLy9fdGhpcy5faHlwZXJ0eVJlc291cmNlc1tjb250ZW50VXJsXSA9IG1lc3NhZ2UuYm9keS52YWx1ZTtcblxuXG4gIH1cblxuICBfb25SZWFkRmlsZShyZXNwb25zZSwgcmVzb3VyY2UpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24odGhlRmlsZSkge1xuXG4gICAgICBsb2cuaW5mbygnW0ZpbGVIeXBlcnR5UmVzb3VyY2UuaW5pdF0gZmlsZSBsb2FkZWQgJywgdGhlRmlsZSk7XG5cbiAgICAgIHJlc3BvbnNlLmJvZHkuY29kZSA9IDIwMDtcbiAgICAgIHJlc3BvbnNlLmJvZHkucDJwID0gdHJ1ZTtcbiAgICAgIHJlc3BvbnNlLmJvZHkudmFsdWUgPSBkZWVwQ2xvbmUocmVzb3VyY2UpO1xuICAgICAgcmVzcG9uc2UuYm9keS52YWx1ZS5jb250ZW50ID0gdGhlRmlsZS50YXJnZXQucmVzdWx0O1xuICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShyZXNwb25zZSk7XG4gICAgfTtcblxuICAgIGlmIChyZXNvdXJjZS5taW1ldHlwZS5pbmNsdWRlcygndGV4dC8nKSkge1xuICAgICAgcmVhZGVyLnJlYWRBc1RleHQocmVzb3VyY2UuY29udGVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSByZXNvdXJjZS5jb250ZW50O1xuXG4gICAgICBsZXQgYmxvYjtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQpKSB7XG4gICAgICAgIGJsb2IgPSBuZXcgQmxvYihjdXJyZW50LCB7IHR5cGU6IHJlc291cmNlLm1pbWV0eXBlfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBibG9iID0gbmV3IEJsb2IoW2N1cnJlbnRdLCB7IHR5cGU6IHJlc291cmNlLm1pbWV0eXBlfSk7XG4gICAgICB9XG5cbiAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIHNob3VsZCBkZWxldGUgYW4gSHlwZXJ0eVJlc291cmNlIGZyb20gdGhlIHN0b3JhZ2U7XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gbWVzc2FnZSBjb250YWluaW5nIHRoZSBjb250ZW50IFVSTCBvZiB0aGUgaHlwZXJ0eSByZXNvdXJjZSB0byBiZSBkZWxldGVkXG4gICAqL1xuXG4gIF9vbkRlbGV0ZShtZXNzYWdlKSB7XG5cbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKCFtZXNzYWdlLmJvZHkpIHRocm93IG5ldyBFcnJvcignW0h5cGVydHlSZXNvdXJjZXNTdG9yYWdlLl9vbkRlbGV0ZV0gbWFuZGF0b3J5IG1lc3NhZ2UgYm9keSBtaXNzaW5nOiAnLCBtZXNzYWdlKTtcblxuICAgIGlmIChtZXNzYWdlLmJvZHkucmVzb3VyY2UpIHtcbiAgICAgIGRlbGV0ZSBfdGhpcy5faHlwZXJ0eVJlc291cmNlc1ttZXNzYWdlLmJvZHkucmVzb3VyY2VdO1xuICAgIH0gZWxzZSBpZiAobWVzc2FnZS5ib2R5LnJlc291cmNlcykge1xuICAgICAgbWVzc2FnZS5ib2R5LnJlc291cmNlcy5mb3JFYWNoKChyZXNvdXJjZSkgPT4ge1xuICAgICAgICBkZWxldGUgX3RoaXMuX2h5cGVydHlSZXNvdXJjZXNbcmVzb3VyY2VdO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW0h5cGVydHlSZXNvdXJjZXNTdG9yYWdlLl9vbkRlbGV0ZV0gbWFuZGF0b3J5IHJlc291cmNlIG1pc3Npbmc6ICcsIG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIF90aGlzLl9zdG9yYWdlTWFuYWdlci5kZWxldGUoJ3Jlc291cmNlVVJMJywgbWVzc2FnZS5ib2R5LnJlc291cmNlKS50aGVuKCgpID0+IHtcbiAgICAgIGxldCByZXNwb25zZSA9IHtcbiAgICAgICAgZnJvbTogbWVzc2FnZS50byxcbiAgICAgICAgdG86IG1lc3NhZ2UuZnJvbSxcbiAgICAgICAgaWQ6IG1lc3NhZ2UuaWQsXG4gICAgICAgIHR5cGU6ICdyZXNwb25zZScsXG4gICAgICAgIGJvZHk6IHsgY29kZTogMjAwIH1cbiAgICAgIH07XG5cbiAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2UocmVzcG9uc2UpO1xuICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcbiAgICAgIGxldCByZXNwb25zZSA9IHtcbiAgICAgICAgZnJvbTogbWVzc2FnZS50byxcbiAgICAgICAgdG86IG1lc3NhZ2UuZnJvbSxcbiAgICAgICAgaWQ6IG1lc3NhZ2UuaWQsXG4gICAgICAgIHR5cGU6ICdyZXNwb25zZScsXG4gICAgICAgIGJvZHk6IHsgY29kZTogNDAwLCBkZXNjcmlwdGlvbjogcmVhc29uIH1cbiAgICAgIH07XG5cbiAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2UocmVzcG9uc2UpO1xuICAgIH0pO1xuXG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBIeXBlcnR5UmVzb3VyY2VzU3RvcmFnZTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvaHlwZXJ0eS1yZXNvdXJjZXMtc3RvcmFnZS9IeXBlcnR5UmVzb3VyY2VzU3RvcmFnZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFMQTtBQUNBO0FBS0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUhBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQUtBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7OztBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBOzs7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUNBO0FBT0E7QUFDQTtBQUVBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///506\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = __webpack_require__(508);\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PromiseQueue = function () {\n\n // TODO: Improve this Queuing\n function PromiseQueue(concurrency) {\n (0, _classCallCheck3.default)(this, PromiseQueue);\n\n this.flushing = false;\n this.Promise = _promise2.default;\n this.concurrency = typeof concurrency !== 'number' ? 1 : concurrency;\n this.promises = [];\n this.queue = [];\n this.isProcessing = false;\n }\n\n (0, _createClass3.default)(PromiseQueue, [{\n key: 'done',\n value: function done(cb) {\n this.callback = cb;\n }\n }, {\n key: 'add',\n value: function add(promise) {\n var _this = this;\n\n this.queue.push(promise);\n\n if (!this.isProcessing) {\n return this.queue.reduce(function (promiseChain, currentTask) {\n return promiseChain.then(function (chainResults) {\n return currentTask.then(function (currentResult) {\n return [].concat((0, _toConsumableArray3.default)(chainResults), [currentResult]);\n });\n });\n }, _promise2.default.resolve([])).then(function (arrayOfResults) {\n // Do something with all results\n _this.isProcessing = false;\n });\n }\n }\n }]);\n return PromiseQueue;\n}();\n\nexports.default = PromiseQueue;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy91dGlscy9Qcm9taXNlUXVldWUuanM/MDViZCJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBQcm9taXNlUXVldWUge1xuXG4gIC8vIFRPRE86IEltcHJvdmUgdGhpcyBRdWV1aW5nXG4gIGNvbnN0cnVjdG9yKGNvbmN1cnJlbmN5KSB7XG4gICAgdGhpcy5mbHVzaGluZyA9IGZhbHNlO1xuICAgIHRoaXMuUHJvbWlzZSA9IFByb21pc2U7XG4gICAgdGhpcy5jb25jdXJyZW5jeSA9ICh0eXBlb2YgY29uY3VycmVuY3kgIT09ICdudW1iZXInKSA/IDEgOiBjb25jdXJyZW5jeTtcbiAgICB0aGlzLnByb21pc2VzID0gW107XG4gICAgdGhpcy5xdWV1ZSA9IFtdO1xuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XG4gIH1cblxuICBkb25lKGNiKSB7XG4gICAgdGhpcy5jYWxsYmFjayA9IGNiO1xuICB9XG5cbiAgYWRkKHByb21pc2UpIHtcbiAgICB0aGlzLnF1ZXVlLnB1c2gocHJvbWlzZSk7XG5cbiAgICBpZiAoIXRoaXMuaXNQcm9jZXNzaW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy5xdWV1ZS5yZWR1Y2UoKHByb21pc2VDaGFpbiwgY3VycmVudFRhc2spID0+IHtcbiAgICAgICAgcmV0dXJuIHByb21pc2VDaGFpbi50aGVuKGNoYWluUmVzdWx0cyA9PiBjdXJyZW50VGFzay50aGVuKGN1cnJlbnRSZXN1bHQgPT4gWy4uLmNoYWluUmVzdWx0cywgY3VycmVudFJlc3VsdF0pKTtcbiAgICAgIH0sIFByb21pc2UucmVzb2x2ZShbXSkpLnRoZW4oYXJyYXlPZlJlc3VsdHMgPT4ge1xuICAgICAgICAvLyBEbyBzb21ldGhpbmcgd2l0aCBhbGwgcmVzdWx0c1xuICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgICAgfSk7XG5cbiAgICB9XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBQcm9taXNlUXVldWU7XG5cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvdXRpbHMvUHJvbWlzZVF1ZXVlLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7Ozs7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///507\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nexports.__esModule = true;\n\nvar _from = __webpack_require__(210);\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcz8xYWVlIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2Zyb20gPSByZXF1aXJlKFwiLi4vY29yZS1qcy9hcnJheS9mcm9tXCIpO1xuXG52YXIgX2Zyb20yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZnJvbSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycjJbaV0gPSBhcnJbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycjI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICgwLCBfZnJvbTIuZGVmYXVsdCkoYXJyKTtcbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDUwOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///508\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _values = __webpack_require__(211);\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(11);\n\nvar _schemaValidation = __webpack_require__(513);\n\nvar _AddressAllocation = __webpack_require__(100);\n\nvar _AddressAllocation2 = _interopRequireDefault(_AddressAllocation);\n\nvar _ReporterObject = __webpack_require__(518);\n\nvar _ReporterObject2 = _interopRequireDefault(_ReporterObject);\n\nvar _ObserverObject = __webpack_require__(519);\n\nvar _ObserverObject2 = _interopRequireDefault(_ObserverObject);\n\nvar _CryptoManager = __webpack_require__(101);\n\nvar cryptoManager = _interopRequireWildcard(_CryptoManager);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('SyncherManager'); /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\n// Log System\n\n/**\n * @author micaelpedrosa@gmail.com\n * Core Syncronization system.\n */\nvar SyncherManager = function () {\n /* private\n _url: URL\n _bus: MiniBus\n _registry: Registry\n _allocator: AddressAllocation\n _reporters: { ObjectURL: ReporterObject }\n _observers: { ObjectURL: ObserverObject }\n */\n\n function SyncherManager(runtimeURL, bus, registry, catalog, storageManager, allocator, storeDataObjects, identityModule) {\n (0, _classCallCheck3.default)(this, SyncherManager);\n\n if (!runtimeURL) throw new Error('[Syncher Manager] - needs the runtimeURL parameter');\n if (!bus) throw new Error('[Syncher Manager] - needs the MessageBus instance');\n if (!registry) throw new Error('[Syncher Manager] - needs the Registry instance');\n if (!catalog) throw new Error('[Syncher Manager] - needs the RuntimeCatalogue instance');\n if (!storageManager) throw new Error('[Syncher Manager] - need the storageManager instance');\n\n var _this = this;\n\n _this._bus = bus;\n _this._registry = registry;\n _this._catalog = catalog;\n _this._storageManager = storageManager;\n _this._identityModule = identityModule;\n\n //TODO: these should be saved in persistence engine?\n _this.runtimeURL = runtimeURL;\n _this._url = runtimeURL + '/sm';\n _this._objectURL = runtimeURL + '/object-allocation';\n\n _this._reporters = {};\n _this._observers = {};\n\n _this._dataObjectsStorage = storeDataObjects;\n console.log('[NOTSAVING] storeDataObjects', storeDataObjects);\n //TODO: this should not be hardcoded!\n _this._domain = (0, _utils.divideURL)(runtimeURL).domain;\n\n if (allocator) {\n _this._allocator = allocator;\n } else {\n _this._allocator = _AddressAllocation2.default.instance;\n }\n\n log.log('[SyncherManager - AddressAllocation] - ', _this._allocator);\n\n bus.addListener(_this._url, function (msg) {\n log.info('[SyncherManager] RCV: ', msg);\n switch (msg.type) {\n case 'create':\n _this._onCreate(msg);break;\n case 'delete':\n _this._onDelete(msg);break;\n case 'subscribe':\n _this._onLocalSubscribe(msg);break;\n case 'unsubscribe':\n _this._onLocalUnSubscribe(msg);break;\n }\n });\n }\n\n (0, _createClass3.default)(SyncherManager, [{\n key: '_onCreate',\n\n\n //FLOW-IN: message received from Syncher -> create\n value: function _onCreate(msg) {\n var _this2 = this;\n\n var from = msg.from;\n var to = msg.to;\n\n // check if message is to save new childrenObjects in the local storage\n // TODO: check if message is to store new child in the local storage and call storeChild. How to distinguish from others?\n\n //debugger;\n if (msg.body.attribute) {\n this._storeChildrens(msg);\n } else {\n\n if (!msg.body.hasOwnProperty('resume') || msg.body.hasOwnProperty('resume') && !msg.body.resume) {\n\n // check if this is an invitation message\n if (msg.body.authorise) {\n this._authorise(msg);\n log.info('[SyncherManager.onCreate - invite observers]', msg);\n } else {\n // this is to create a new data object\n log.info('[SyncherManager.onCreate - Create New Object]', msg);\n this._newCreate(msg);\n }\n } else {\n\n // If from the hyperty side, call the resumeReporter we will have resume = true'\n // so we will create an resumed object and will try to resume the object previously saved;\n this._dataObjectsStorage.getResourcesByCriteria(msg, true).then(function (result) {\n\n log.info('[SyncherManager - Create Resumed] - ResourcesByCriteria | Message: ', msg, ' result: ', result);\n\n if (result && (0, _keys2.default)(result).length > 0) {\n\n var listOfReporters = [];\n\n (0, _keys2.default)(result).forEach(function (objURL) {\n listOfReporters.push(_this2._resumeCreate(msg, result[objURL]));\n });\n\n _promise2.default.all(listOfReporters).then(function (resumedReporters) {\n log.log('[SyncherManager - Create Resumed]', resumedReporters);\n\n // TODO: shoud send the information if some object was fail;\n var successfullyResumed = (0, _values2.default)(resumedReporters).filter(function (reporter) {\n return reporter !== false;\n });\n\n log.info('[SyncherManager.onCreate] returning resumed objects : ', successfullyResumed);\n\n //FLOW-OUT: message response to Syncher -> create resume\n _this2._bus.postMessage({\n id: msg.id, type: 'response', from: to, to: from,\n body: { code: 200, value: successfullyResumed }\n });\n });\n } else {\n //forward to hyperty:\n var reply = {};\n reply.id = msg.id;\n reply.from = msg.to;\n reply.to = msg.from;\n reply.type = 'response';\n reply.body = {\n code: 404,\n desc: 'No data objects reporters to be resumed'\n };\n _this2._bus.postMessage(reply);\n }\n });\n }\n }\n }\n }, {\n key: '_storeChildrens',\n value: function _storeChildrens(msg) {\n var _this = this;\n\n var resource = msg.body.resource;\n var attribute = msg.body.attribute;\n\n if (attribute === 'childrenObjects') {\n _this._dataObjectsStorage.saveChildrens(false, resource, undefined, msg.body.value);\n } else {\n _this._dataObjectsStorage.saveChildrens(true, resource, attribute, msg.body.value);\n }\n }\n }, {\n key: '_newCreate',\n value: function _newCreate(msg) {\n var _this3 = this;\n\n var _this = this;\n\n var owner = msg.from;\n var domain = (0, _utils.divideURL)(msg.from).domain;\n\n // if reporter is in a Interworking Protostub the runtime domain backend services will be used\n if (_this._registry.isInterworkingProtoStub(msg.from)) {\n domain = (0, _utils.divideURL)(_this.runtimeURL).domain;\n }\n\n // Process invitation message to observers\n\n /*if (msg.body.authorise) {\n _this._authorise(msg);\n return;\n }*/\n\n //get schema from catalogue and parse -> (scheme, children)\n _this._catalog.getDataSchemaDescriptor(msg.body.schema).then(function (descriptor) {\n\n var properties = descriptor.sourcePackage.sourceCode.properties;\n var scheme = properties.scheme ? properties.scheme.constant : 'resource';\n var childrens = properties.children ? properties.children.constant : [];\n\n // Do schema validation\n // TODO: check if is need to handle with the result of validation\n (0, _schemaValidation.schemaValidation)(scheme, descriptor, msg.body.value);\n\n var objectInfo = {\n name: msg.body.value.name,\n schema: msg.body.value.schema,\n reporter: msg.body.value.reporter,\n resources: msg.body.value.resources\n };\n\n // should resuse data object url if it passed\n var reuseDataObject = msg.body.value.resource;\n var numOfAddress = 1;\n\n //debugger;\n //request address allocation of a new object from the msg-node\n //_this._allocator.create(domain, numOfAddress, objectInfo, scheme, reuseDataObject).then((allocated) => {\n _this._allocator.create(domain, numOfAddress, objectInfo, scheme, reuseDataObject).then(function (allocated) {\n\n var objectRegistration = (0, _utils.deepClone)(msg.body.value);\n objectRegistration.url = allocated.address[0];\n objectRegistration.authorise = msg.body.authorise;\n objectRegistration.childrens = childrens;\n\n //objectRegistration.expires = 30;//TODO: get it from data object configuration description when present\n\n delete objectRegistration.data;\n\n log.log('[SyncherManager._newCreate] ALLOCATOR CREATE:', allocated);\n\n var subscriptionURL = objectRegistration.url + '/subscription';\n\n log.log('[SyncherManager._newCreate] Subscription URL', subscriptionURL);\n\n //To register the dataObject in the runtimeRegistry\n log.info('[SyncherManager._newCreate] Register Object: ', objectRegistration);\n\n //_this._registry.registerDataObject(msg.body.value.name, msg.body.value.schema, objURL, msg.body.value.reporter, msg.body.value.resources, allocated, msg.body.authorise).then((resolve) => {\n _this._registry.registerDataObject(objectRegistration).then(function (registeredObject) {\n log.log('[SyncherManager._newCreate] DataObject successfully registered', registeredObject);\n\n //all OK -> create reporter and register listeners\n var reporter = void 0;\n\n if (!_this3._reporters[objectRegistration.url]) {\n reporter = new _ReporterObject2.default(_this, owner, objectRegistration.url);\n } else {\n reporter = _this3._reporters[objectRegistration.url];\n }\n\n log.log('[SyncherManager - new Create] - ', msg);\n\n // Store for each reporter hyperty the dataObject\n var userURL = void 0;\n // let interworking = false;\n\n if (msg.body.hasOwnProperty('identity') && msg.body.identity.userProfile && msg.body.identity.userProfile.userURL) {\n userURL = msg.body.identity.userProfile.userURL;\n\n // if (!userURL.includes('user://')) {\n // interworking = true;\n // }\n } else {\n userURL = _this._registry.getHypertyOwner(msg.from);\n\n // if (!userURL) {\n // interworking = true;\n // }\n }\n\n // should we use the msg.body.value instead?\n\n var metadata = (0, _utils.deepClone)(objectRegistration);\n metadata.subscriberUser = userURL;\n metadata.isReporter = true;\n\n // Store the dataObject information\n\n //if (!interworking) {\n\n _this._dataObjectsStorage.set(metadata);\n\n if (msg.body.hasOwnProperty('store') && msg.body.store) {\n reporter.isToSaveData = true;\n _this._dataObjectsStorage.update(true, objectRegistration.url, 'isToSaveData', true);\n\n if (msg.body.value.data) {\n _this._dataObjectsStorage.saveData(true, objectRegistration.url, null, msg.body.value.data);\n }\n }\n\n //}\n\n // adding listeners to forward to reporter\n\n reporter.forwardSubscribe([objectRegistration.url, subscriptionURL]).then(function () {\n reporter.addChildrens(childrens).then(function () {\n _this._reporters[objectRegistration.url] = reporter;\n\n var responseMsg = {\n id: msg.id, type: 'response', from: msg.to, to: owner,\n body: { code: 200, resource: objectRegistration.url, childrenResources: childrens }\n };\n\n //FLOW-OUT: message response to Syncher -> create\n _this._bus.postMessage(responseMsg);\n });\n });\n }, function (error) {\n log.error(error);\n });\n });\n }).catch(function (reason) {\n //FLOW-OUT: error message response to Syncher -> create\n var responseMsg = {\n id: msg.id, type: 'response', from: msg.to, to: owner,\n body: { code: 500, desc: reason }\n };\n\n _this._bus.postMessage(responseMsg);\n });\n }\n }, {\n key: '_resumeCreate',\n value: function _resumeCreate(msg, storedObject) {\n var _this4 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve) {\n\n var owner = msg.from;\n var schema = storedObject.schema;\n var resource = storedObject.url;\n var initialData = storedObject.data;\n\n log.log('[SyncherManager] - resume create', msg, storedObject);\n\n //get schema from catalogue and parse -> (scheme, children)\n _this._catalog.getDataSchemaDescriptor(schema).then(function (descriptor) {\n\n var properties = descriptor.sourcePackage.sourceCode.properties;\n var scheme = properties.scheme ? properties.scheme.constant : 'resource';\n var childrens = properties.children ? properties.children.constant : [];\n\n log.log('[SyncherManager] - getDataSchemaDescriptor: ', descriptor, childrens);\n\n // Do schema validation\n // TODO: check if is need to handle with the result of validation\n (0, _schemaValidation.schemaValidation)(scheme, descriptor, initialData);\n\n var objectRegistration = (0, _utils.deepClone)(msg.body.value);\n objectRegistration.url = storedObject.url;\n objectRegistration.expires = storedObject.expires;\n\n delete objectRegistration.data;\n\n //all OK -> create reporter and register listeners\n var reporter = void 0;\n\n if (!_this4._reporters[resource]) {\n reporter = new _ReporterObject2.default(_this, owner, resource);\n } else {\n reporter = _this4._reporters[resource];\n }\n\n reporter.isToSaveData = storedObject.isToSaveData;\n\n reporter.forwardSubscribe([storedObject.url]).then(function () {\n reporter.addChildrens(childrens).then(function () {\n\n reporter.resumeSubscriptions(storedObject.subscriptions);\n\n _this._reporters[resource] = reporter;\n\n log.info('[SyncherManager - resume create] - resolved resumed: ', storedObject);\n\n return _this._decryptChildrens(storedObject, childrens);\n }).then(function (decryptedObject) {\n\n // log.log('result of previous promise');\n resolve(decryptedObject);\n }).catch(function (reason) {\n log.error('[SyncherManager - resume create] - fail on addChildrens: ', reason);\n resolve(false);\n });\n });\n log.info('[SyncherManager._resumeCreate] Register Object: ', objectRegistration);\n _this._registry.registerDataObject(objectRegistration).then(function (resolve) {\n log.log('[SyncherManager._resumeCreate] DataObject registration successfully updated', resolve);\n });\n\n // resolve();\n }).catch(function (reason) {\n log.error('[SyncherManager - resume create] - fail on getDataSchemaDescriptor: ', reason);\n resolve(false);\n });\n });\n }\n\n // to decrypt DataChildObjects if they are encrypted\n\n }, {\n key: '_decryptChildrens',\n value: function _decryptChildrens(storedObject, childrens) {\n var _this = this;\n return new _promise2.default(function (resolve) {\n\n if (!childrens) {\n resolve(storedObject);\n } else {\n var childrensObj = (0, _keys2.default)(storedObject.childrenObjects);\n\n if (childrensObj.length === 0) {\n resolve(storedObject);\n }\n\n childrens.forEach(function (children) {\n\n var childObjects = storedObject.childrenObjects[children];\n\n log.log('[SyncherManager._decryptChildrens] dataObjectChilds to decrypt ', childObjects);\n\n var listOfDecryptedObjects = [];\n\n (0, _keys2.default)(childObjects).forEach(function (childId) {\n var child = childObjects[childId];\n var owner = childId.split('#')[0];\n\n if (typeof child.value === 'string') {\n\n log.log('[SyncherManager._decryptChildrens] createdBy ', owner, ' object: ', child.value);\n\n var decrypted = cryptoManager.default.decryptDataObject(JSON.parse(child.value), storedObject.url);\n\n listOfDecryptedObjects.push(decrypted);\n }\n });\n\n _promise2.default.all(listOfDecryptedObjects).then(function (decryptedObjects) {\n\n log.log('[SyncherManager._decryptChildrens] returning decrypted ', decryptedObjects);\n\n decryptedObjects.forEach(function (decryptedObject) {\n var childId = decryptedObject.value.url;\n storedObject.childrenObjects[children][childId].value = decryptedObject.value;\n });\n\n log.log('[SyncherManager._decryptChildrens] storedObject ', storedObject);\n\n resolve(storedObject);\n }).catch(function (reason) {\n log.warn('[SyncherManager._decryptChildrens] failed : ', reason);\n });\n });\n }\n });\n }\n\n // Process invitations to observers\n\n }, {\n key: '_authorise',\n value: function _authorise(msg) {\n var _this = this;\n\n if (!msg.body.resource) {\n throw new Error('[SyncherManager._authorise] invitation request without data object url:', msg);\n }\n\n var objSubscriptorURL = msg.body.resource + '/subscription';\n var p2p = msg.body.p2p ? msg.body.p2p : false;\n\n log.log('[SyncherManager - authorise] - ', msg);\n\n if (msg.body.authorise) {\n msg.body.authorise.forEach(function (hypertyURL) {\n //FLOW-OUT: send invites to list of remote Syncher -> _onRemoteCreate -> onNotification\n\n _this._bus.postMessage({\n type: 'create', from: objSubscriptorURL, to: hypertyURL,\n body: { p2p: p2p, identity: msg.body.identity, source: msg.from, value: msg.body.value, schema: msg.body.schema }\n }, function (reply) {\n // lets forward the invitation response\n var response = {\n from: msg.to,\n to: msg.from,\n id: msg.id,\n type: reply.type,\n body: reply.body\n };\n\n _this._bus.postMessage(response);\n });\n });\n }\n }\n\n //FLOW-IN: message received from DataObjectReporter -> delete\n\n }, {\n key: '_onDelete',\n value: function _onDelete(msg) {\n var _this = this;\n\n var objURL = msg.body.resource;\n\n var object = _this._reporters[objURL];\n if (object) {\n //TODO: is there any policy verification before delete?\n\n object.delete();\n\n this._dataObjectsStorage.deleteResource(objURL).then(function (result) {\n\n log.log('[SyncherManager - onDelete] - deleteResource: ', result);\n\n _this._registry.unregisterDataObject(objURL);\n\n //TODO: unregister object?\n _this._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: msg.from,\n body: { code: 200 }\n });\n });\n }\n }\n\n //FLOW-IN: message received from local Syncher -> subscribe\n\n }, {\n key: '_onLocalSubscribe',\n value: function _onLocalSubscribe(msg) {\n var _this5 = this;\n\n //debugger;\n this._dataObjectsStorage.getResourcesByCriteria(msg, false).then(function (result) {\n\n log.info('[SyncherManager - Subscribe] - ResourcesByCriteria | Message: ', msg, ' result: ', result);\n\n if (result && (0, _keys2.default)(result).length > 0) {\n\n var listOfObservers = [];\n\n // TODO: should reuse the storaged information\n (0, _keys2.default)(result).forEach(function (objURL) {\n log.log('[SyncherManager - resume Subscribe] - reuse current object url: ', result[objURL]);\n listOfObservers.push(_this5._resumeSubscription(msg, result[objURL]));\n });\n\n _promise2.default.all(listOfObservers).then(function (resumedObservers) {\n log.log('[SyncherManager - Observers Resumed]', resumedObservers);\n\n // TODO: shoud send the information if some object was fail;\n var successfullyResumed = (0, _values2.default)(resumedObservers).filter(function (observer) {\n return observer !== false;\n });\n\n //FLOW-OUT: message response to Syncher -> create\n _this5._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: msg.from,\n body: { code: 200, value: successfullyResumed }\n });\n });\n } else if (msg.body.schema && msg.body.resource) {\n log.log('[SyncherManager.onLocalSubscribe - new Subscribe] - ', msg.body.schema, msg.body.resource);\n _this5._newSubscription(msg);\n } else {\n //forward to hyperty:\n var reply = {};\n reply.id = msg.id;\n reply.from = msg.to;\n reply.to = msg.from;\n reply.type = 'response';\n reply.body = {\n code: 404,\n desc: 'No data objects observers to be resumed'\n };\n _this5._bus.postMessage(reply);\n }\n });\n }\n }, {\n key: '_newSubscription',\n value: function _newSubscription(msg) {\n var _this6 = this;\n\n var _this = this;\n\n var objURL = msg.body.resource;\n\n var hypertyURL = msg.from;\n var domain = (0, _utils.divideURL)(objURL).domain;\n var objURLSubscription = objURL + '/subscription';\n\n var childBaseURL = objURL + '/children/';\n\n //get schema from catalogue and parse -> (children)\n _this._catalog.getDataSchemaDescriptor(msg.body.schema).then(function (descriptor) {\n var properties = descriptor.sourcePackage.sourceCode.properties;\n var childrens = properties.children ? properties.children.constant : [];\n\n var subscriptions = [];\n subscriptions.push(objURL + '/changes');\n\n childrens.forEach(function (child) {\n return subscriptions.push(childBaseURL + child);\n });\n\n //children addresses\n\n //FLOW-OUT: subscribe message to the msg-node, registering listeners on the broker\n var nodeSubscribeMsg = {\n type: 'subscribe', from: _this._url, to: 'domain://msg-node.' + domain + '/sm',\n body: { identity: msg.body.identity, resources: subscriptions, source: hypertyURL }\n };\n\n //subscribe in msg-node\n _this._bus.postMessage(nodeSubscribeMsg, function (reply) {\n log.log('node-subscribe-response(observer): ', reply);\n console.log('REUSETEST SyncherManager - node-subscribe-response(observer): ', reply);\n if (reply.body.code === 200) {\n\n //FLOW-OUT: reply with provisional response\n _this._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: hypertyURL,\n body: { code: 100, childrenResources: childrens, schema: msg.body.schema, resource: msg.body.resource }\n });\n\n //FLOW-OUT: subscribe message to remote ReporterObject -> _onRemoteSubscribe\n var objSubscribeMsg = {\n type: 'subscribe', from: _this._url, to: objURLSubscription,\n body: { identity: nodeSubscribeMsg.body.identity, subscriber: hypertyURL }\n };\n\n //TODO: For Further Study\n if (msg.body.hasOwnProperty('mutual')) objSubscribeMsg.body.mutual = msg.body.mutual;\n log.log('[SyncherManager._newSubscription]', objSubscribeMsg, msg);\n console.log('REUSETEST SyncherManager - [SyncherManager._newSubscription]', objSubscribeMsg, msg);\n //subscribe to reporter SM\n _this._bus.postMessage(objSubscribeMsg, function (reply) {\n log.log('reporter-subscribe-response-new: ', reply);\n console.log('REUSETEST SyncherManager - reporter-subscribe-response-new: ', reply);\n if (reply.body.code === 200) {\n\n log.log('[SyncherManager._newSubscription] - observers: ', _this._observers, objURL, _this._observers[objURL]);\n console.log('REUSETEST SyncherManager - 200 code[SyncherManager._newSubscription] - observers: ', _this._observers, objURL, _this._observers[objURL]);\n var observer = _this._observers[objURL];\n if (!observer) {\n observer = new _ObserverObject2.default(_this, objURL, childrens);\n log.log('[SyncherManager._newSubscription] - observers: create new ObserverObject: ', observer);\n _this._observers[objURL] = observer;\n\n // register new hyperty subscription\n observer.addSubscription(hypertyURL);\n\n // add childrens and listeners to save data if necessary\n observer.addChildrens(childrens);\n }\n\n var interworking = false;\n\n //debugger;\n\n // Store for each reporter hyperty the dataObject\n var userURL = void 0;\n if (msg.body.hasOwnProperty('identity') && msg.body.identity.userProfile && msg.body.identity.userProfile.userURL) {\n userURL = msg.body.identity.userProfile.userURL;\n if (!userURL.includes('user://')) {\n interworking = true;\n }\n } else {\n userURL = _this._registry.getHypertyOwner(msg.from);\n if (!userURL) interworking = true;\n }\n\n var metadata = (0, _utils.deepClone)(reply.body.value);\n\n // let childrenObjects = metadata.childrenObjects || {};\n\n delete metadata.data;\n delete metadata.childrenObjects;\n\n metadata.childrens = childrens;\n metadata.subscriberUser = userURL;\n metadata.isReporter = false;\n metadata.subscriberHyperty = hypertyURL;\n\n if (!interworking) {\n //_this._dataObjectsStorage.set(objURL, false, msg.body.schema, 'on', reply.body.owner, hypertyURL, childrens, userURL);\n _this._dataObjectsStorage.set(metadata);\n if (metadata.hasOwnProperty('store') && metadata.store || metadata.hasOwnProperty('isToSaveData') && metadata.isToSaveData) {\n observer.isToSaveData = true;\n _this._dataObjectsStorage.update(false, objURL, 'isToSaveData', true);\n _this._dataObjectsStorage.saveData(false, objURL, null, reply.body.value.data);\n }\n }\n\n //forward to hyperty:\n reply.id = msg.id;\n reply.from = _this._url;\n reply.to = hypertyURL;\n reply.body.schema = msg.body.schema;\n reply.body.resource = msg.body.resource;\n\n //TODO: For Further Study\n if (msg.body.hasOwnProperty('mutual')) reply.body.mutual = msg.body.mutual;\n log.log('[subscribe] - new subscription: ', msg, reply, observer);\n\n _this6._bus.postMessage(reply);\n }\n });\n } else {\n //listener rejected\n _this._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: hypertyURL,\n body: reply.body\n });\n }\n });\n });\n }\n }, {\n key: '_resumeSubscription',\n value: function _resumeSubscription(msg, storedObject) {\n var _this7 = this;\n\n return new _promise2.default(function (resolve) {\n\n var objURL = storedObject.url;\n var schema = storedObject.schema;\n\n var hypertyURL = msg.from;\n\n // let objURLSubscription = objURL + '/subscription';\n\n var childBaseURL = objURL + '/children/';\n\n log.log('[SyncherManager - ReuseSubscription] - objURL: ', objURL, ' - schema:', schema);\n\n //get schema from catalogue and parse -> (children)\n // TODO: remove this since children resources should be available in the DataObjectsStorage\n _this7._catalog.getDataSchemaDescriptor(schema).then(function (descriptor) {\n var properties = descriptor.sourcePackage.sourceCode.properties;\n var childrens = properties.children ? properties.children.constant : [];\n\n //children addresses\n var subscriptions = [];\n subscriptions.push(objURL + '/changes');\n childrens.forEach(function (child) {\n return subscriptions.push(childBaseURL + child);\n });\n\n //FLOW-OUT: reply with provisional response\n _this7._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: hypertyURL,\n body: { code: 100, childrenResources: childrens, schema: schema, resource: objURL }\n });\n\n //FLOW-OUT: subscribe message to remote ReporterObject -> _onRemoteSubscribe\n /*let objSubscribeMsg = {\n type: 'subscribe', from: this._url, to: objURLSubscription,\n body: { subscriber: hypertyURL, identity: msg.body.identity }\n };\n //subscribe to reporter SM\n this._bus.postMessage(objSubscribeMsg, (reply) => {*/\n\n var observer = _this7._observers[objURL];\n if (!observer) {\n observer = new _ObserverObject2.default(_this7, objURL, childrens);\n observer.isToSaveData = storedObject.isToSaveData;\n _this7._observers[objURL] = observer;\n }\n\n //register new hyperty subscription\n observer.addSubscription(hypertyURL);\n observer.addChildrens(childrens);\n\n // Object.assign(storedObject.data, reply.body.value.data);\n // Object.assign(storedObject.childrens, reply.body.value.childrens);\n\n //log.log('[subscribe] - resume subscription: ', msg, reply, storedObject, observer);\n\n return _this7._decryptChildrens(storedObject, childrens);\n }).then(function (decryptedObject) {\n // log.log('result of previous promise');\n resolve(decryptedObject);\n }).catch(function (reason) {\n log.error('[SyncherManager - resume subscription] - fail on getDataSchemaDescriptor: ', reason);\n resolve(false);\n });\n });\n }\n\n //FLOW-IN: message received from local DataObjectObserver -> unsubscribe\n\n }, {\n key: '_onLocalUnSubscribe',\n value: function _onLocalUnSubscribe(msg) {\n var _this = this;\n\n var hypertyURL = msg.from;\n var objURL = msg.body.resource;\n\n var observer = _this._observers[objURL];\n if (observer) {\n //TODO: is there any policy verification before delete?\n observer.removeSubscription(msg);\n\n //TODO: destroy object in the registry?\n _this._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: msg.from,\n body: { code: 200 }\n });\n\n this._dataObjectsStorage.deleteResource(objURL);\n\n //TODO: remove Object if no more subscription?\n delete _this._observers[objURL];\n }\n }\n }, {\n key: 'url',\n get: function get() {\n return this._url;\n }\n }]);\n return SyncherManager;\n}();\n\nexports.default = SyncherManager;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zeW5jaGVyL1N5bmNoZXJNYW5hZ2VyLmpzPzMzMzciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXG4qXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4qXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4qXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbioqL1xuXG4vLyBMb2cgU3lzdGVtXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1N5bmNoZXJNYW5hZ2VyJyk7XG5cbmltcG9ydCB7IGRpdmlkZVVSTCwgZGVlcENsb25lIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgc2NoZW1hVmFsaWRhdGlvbiB9IGZyb20gJy4uL3V0aWxzL3NjaGVtYVZhbGlkYXRpb24nO1xuXG5pbXBvcnQgQWRkcmVzc0FsbG9jYXRpb24gZnJvbSAnLi4vYWxsb2NhdGlvbi9BZGRyZXNzQWxsb2NhdGlvbic7XG5pbXBvcnQgUmVwb3J0ZXJPYmplY3QgZnJvbSAnLi9SZXBvcnRlck9iamVjdCc7XG5pbXBvcnQgT2JzZXJ2ZXJPYmplY3QgZnJvbSAnLi9PYnNlcnZlck9iamVjdCc7XG5pbXBvcnQgKiBhcyBjcnlwdG9NYW5hZ2VyIGZyb20gJy4uL2NyeXB0b01hbmFnZXIvQ3J5cHRvTWFuYWdlcic7XG5cbi8qKlxuICogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxuICogQ29yZSBTeW5jcm9uaXphdGlvbiBzeXN0ZW0uXG4gKi9cbmNsYXNzIFN5bmNoZXJNYW5hZ2VyIHtcbiAgLyogcHJpdmF0ZVxuICBfdXJsOiBVUkxcbiAgX2J1czogTWluaUJ1c1xuICBfcmVnaXN0cnk6IFJlZ2lzdHJ5XG4gIF9hbGxvY2F0b3I6IEFkZHJlc3NBbGxvY2F0aW9uXG5cbiAgX3JlcG9ydGVyczogeyBPYmplY3RVUkw6IFJlcG9ydGVyT2JqZWN0IH1cbiAgX29ic2VydmVyczogeyBPYmplY3RVUkw6IE9ic2VydmVyT2JqZWN0IH1cbiAgKi9cblxuICBjb25zdHJ1Y3RvcihydW50aW1lVVJMLCBidXMsIHJlZ2lzdHJ5LCBjYXRhbG9nLCBzdG9yYWdlTWFuYWdlciwgYWxsb2NhdG9yLCBzdG9yZURhdGFPYmplY3RzLCBpZGVudGl0eU1vZHVsZSkge1xuICAgIGlmICghcnVudGltZVVSTCkgdGhyb3cgbmV3IEVycm9yKCdbU3luY2hlciBNYW5hZ2VyXSAtIG5lZWRzIHRoZSBydW50aW1lVVJMIHBhcmFtZXRlcicpO1xuICAgIGlmICghYnVzKSB0aHJvdyBuZXcgRXJyb3IoJ1tTeW5jaGVyIE1hbmFnZXJdIC0gbmVlZHMgdGhlIE1lc3NhZ2VCdXMgaW5zdGFuY2UnKTtcbiAgICBpZiAoIXJlZ2lzdHJ5KSB0aHJvdyBuZXcgRXJyb3IoJ1tTeW5jaGVyIE1hbmFnZXJdIC0gbmVlZHMgdGhlIFJlZ2lzdHJ5IGluc3RhbmNlJyk7XG4gICAgaWYgKCFjYXRhbG9nKSB0aHJvdyBuZXcgRXJyb3IoJ1tTeW5jaGVyIE1hbmFnZXJdIC0gbmVlZHMgdGhlIFJ1bnRpbWVDYXRhbG9ndWUgaW5zdGFuY2UnKTtcbiAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB0aHJvdyBuZXcgRXJyb3IoJ1tTeW5jaGVyIE1hbmFnZXJdIC0gbmVlZCB0aGUgc3RvcmFnZU1hbmFnZXIgaW5zdGFuY2UnKTtcblxuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBfdGhpcy5fYnVzID0gYnVzO1xuICAgIF90aGlzLl9yZWdpc3RyeSA9IHJlZ2lzdHJ5O1xuICAgIF90aGlzLl9jYXRhbG9nID0gY2F0YWxvZztcbiAgICBfdGhpcy5fc3RvcmFnZU1hbmFnZXIgPSBzdG9yYWdlTWFuYWdlcjtcbiAgICBfdGhpcy5faWRlbnRpdHlNb2R1bGUgPSBpZGVudGl0eU1vZHVsZTtcblxuICAgIC8vVE9ETzogdGhlc2Ugc2hvdWxkIGJlIHNhdmVkIGluIHBlcnNpc3RlbmNlIGVuZ2luZT9cbiAgICBfdGhpcy5ydW50aW1lVVJMID0gcnVudGltZVVSTDtcbiAgICBfdGhpcy5fdXJsID0gcnVudGltZVVSTCArICcvc20nO1xuICAgIF90aGlzLl9vYmplY3RVUkwgPSBydW50aW1lVVJMICsgJy9vYmplY3QtYWxsb2NhdGlvbic7XG5cbiAgICBfdGhpcy5fcmVwb3J0ZXJzID0ge307XG4gICAgX3RoaXMuX29ic2VydmVycyA9IHt9O1xuXG4gICAgX3RoaXMuX2RhdGFPYmplY3RzU3RvcmFnZSA9IHN0b3JlRGF0YU9iamVjdHM7XG4gICAgY29uc29sZS5sb2coJ1tOT1RTQVZJTkddIHN0b3JlRGF0YU9iamVjdHMnLCBzdG9yZURhdGFPYmplY3RzKTtcbiAgICAvL1RPRE86IHRoaXMgc2hvdWxkIG5vdCBiZSBoYXJkY29kZWQhXG4gICAgX3RoaXMuX2RvbWFpbiA9IGRpdmlkZVVSTChydW50aW1lVVJMKS5kb21haW47XG5cbiAgICBpZiAoYWxsb2NhdG9yKSB7XG4gICAgICBfdGhpcy5fYWxsb2NhdG9yID0gYWxsb2NhdG9yO1xuICAgIH0gZWxzZSB7XG4gICAgICBfdGhpcy5fYWxsb2NhdG9yID0gQWRkcmVzc0FsbG9jYXRpb24uaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyIC0gQWRkcmVzc0FsbG9jYXRpb25dIC0gJywgX3RoaXMuX2FsbG9jYXRvcik7XG5cbiAgICBidXMuYWRkTGlzdGVuZXIoX3RoaXMuX3VybCwgKG1zZykgPT4ge1xuICAgICAgbG9nLmluZm8oJ1tTeW5jaGVyTWFuYWdlcl0gUkNWOiAnLCBtc2cpO1xuICAgICAgc3dpdGNoIChtc2cudHlwZSkge1xuICAgICAgICBjYXNlICdjcmVhdGUnOiBfdGhpcy5fb25DcmVhdGUobXNnKTsgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2RlbGV0ZSc6IF90aGlzLl9vbkRlbGV0ZShtc2cpOyBicmVhaztcbiAgICAgICAgY2FzZSAnc3Vic2NyaWJlJzogX3RoaXMuX29uTG9jYWxTdWJzY3JpYmUobXNnKTsgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3Vuc3Vic2NyaWJlJzogX3RoaXMuX29uTG9jYWxVblN1YnNjcmliZShtc2cpOyBicmVhaztcbiAgICAgIH1cbiAgICB9KTtcblxuICB9XG5cbiAgZ2V0IHVybCgpIHsgcmV0dXJuIHRoaXMuX3VybDsgfVxuXG4gIC8vRkxPVy1JTjogbWVzc2FnZSByZWNlaXZlZCBmcm9tIFN5bmNoZXIgLT4gY3JlYXRlXG4gIF9vbkNyZWF0ZShtc2cpIHtcblxuICAgIGxldCBmcm9tID0gbXNnLmZyb207XG4gICAgbGV0IHRvID0gbXNnLnRvO1xuXG4gICAgLy8gY2hlY2sgaWYgbWVzc2FnZSBpcyB0byBzYXZlIG5ldyBjaGlsZHJlbk9iamVjdHMgaW4gdGhlIGxvY2FsIHN0b3JhZ2VcbiAgICAvLyBUT0RPOiBjaGVjayBpZiBtZXNzYWdlIGlzIHRvIHN0b3JlIG5ldyBjaGlsZCBpbiB0aGUgbG9jYWwgc3RvcmFnZSBhbmQgY2FsbCBzdG9yZUNoaWxkLiBIb3cgdG8gZGlzdGluZ3Vpc2ggZnJvbSBvdGhlcnM/XG5cbiAgICAvL2RlYnVnZ2VyO1xuICAgIGlmIChtc2cuYm9keS5hdHRyaWJ1dGUpIHsgdGhpcy5fc3RvcmVDaGlsZHJlbnMobXNnKTsgfSBlbHNlIHtcblxuICAgICAgaWYgKCFtc2cuYm9keS5oYXNPd25Qcm9wZXJ0eSgncmVzdW1lJykgfHwgKG1zZy5ib2R5Lmhhc093blByb3BlcnR5KCdyZXN1bWUnKSAmJiAhbXNnLmJvZHkucmVzdW1lKSkge1xuXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoaXMgaXMgYW4gaW52aXRhdGlvbiBtZXNzYWdlXG4gICAgICAgIGlmIChtc2cuYm9keS5hdXRob3Jpc2UpIHtcbiAgICAgICAgICB0aGlzLl9hdXRob3Jpc2UobXNnKTtcbiAgICAgICAgICBsb2cuaW5mbygnW1N5bmNoZXJNYW5hZ2VyLm9uQ3JlYXRlIC0gaW52aXRlIG9ic2VydmVyc10nLCBtc2cpO1xuICAgICAgICB9IGVsc2UgeyAvLyB0aGlzIGlzIHRvIGNyZWF0ZSBhIG5ldyBkYXRhIG9iamVjdFxuICAgICAgICAgIGxvZy5pbmZvKCdbU3luY2hlck1hbmFnZXIub25DcmVhdGUgLSBDcmVhdGUgTmV3IE9iamVjdF0nLCBtc2cpO1xuICAgICAgICAgIHRoaXMuX25ld0NyZWF0ZShtc2cpO1xuICAgICAgICB9XG5cbiAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgLy8gSWYgZnJvbSB0aGUgaHlwZXJ0eSBzaWRlLCBjYWxsIHRoZSByZXN1bWVSZXBvcnRlciB3ZSB3aWxsIGhhdmUgcmVzdW1lID0gdHJ1ZSdcbiAgICAgICAgLy8gc28gd2Ugd2lsbCBjcmVhdGUgYW4gcmVzdW1lZCBvYmplY3QgYW5kIHdpbGwgdHJ5IHRvIHJlc3VtZSB0aGUgb2JqZWN0IHByZXZpb3VzbHkgc2F2ZWQ7XG4gICAgICAgIHRoaXMuX2RhdGFPYmplY3RzU3RvcmFnZS5nZXRSZXNvdXJjZXNCeUNyaXRlcmlhKG1zZywgdHJ1ZSkudGhlbigocmVzdWx0KSA9PiB7XG5cbiAgICAgICAgICBsb2cuaW5mbygnW1N5bmNoZXJNYW5hZ2VyIC0gQ3JlYXRlIFJlc3VtZWRdIC0gUmVzb3VyY2VzQnlDcml0ZXJpYSB8IE1lc3NhZ2U6ICcsIG1zZywgJyByZXN1bHQ6ICcsIHJlc3VsdCk7XG5cbiAgICAgICAgICBpZiAocmVzdWx0ICYmIE9iamVjdC5rZXlzKHJlc3VsdCkubGVuZ3RoID4gMCkge1xuXG4gICAgICAgICAgICBsZXQgbGlzdE9mUmVwb3J0ZXJzID0gW107XG5cbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaCgob2JqVVJMKSA9PiB7XG4gICAgICAgICAgICAgIGxpc3RPZlJlcG9ydGVycy5wdXNoKHRoaXMuX3Jlc3VtZUNyZWF0ZShtc2csIHJlc3VsdFtvYmpVUkxdKSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgUHJvbWlzZS5hbGwobGlzdE9mUmVwb3J0ZXJzKS50aGVuKChyZXN1bWVkUmVwb3J0ZXJzKSA9PiB7XG4gICAgICAgICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlciAtIENyZWF0ZSBSZXN1bWVkXScsIHJlc3VtZWRSZXBvcnRlcnMpO1xuXG4gICAgICAgICAgICAgIC8vIFRPRE86IHNob3VkIHNlbmQgdGhlIGluZm9ybWF0aW9uIGlmIHNvbWUgb2JqZWN0IHdhcyBmYWlsO1xuICAgICAgICAgICAgICBsZXQgc3VjY2Vzc2Z1bGx5UmVzdW1lZCA9IE9iamVjdC52YWx1ZXMocmVzdW1lZFJlcG9ydGVycykuZmlsdGVyKChyZXBvcnRlcikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXBvcnRlciAhPT0gZmFsc2U7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGxvZy5pbmZvKCdbU3luY2hlck1hbmFnZXIub25DcmVhdGVdIHJldHVybmluZyByZXN1bWVkIG9iamVjdHMgOiAnLCBzdWNjZXNzZnVsbHlSZXN1bWVkKTtcblxuICAgICAgICAgICAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHJlc3BvbnNlIHRvIFN5bmNoZXIgLT4gY3JlYXRlIHJlc3VtZVxuICAgICAgICAgICAgICB0aGlzLl9idXMucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgIGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIGZyb206IHRvLCB0bzogZnJvbSxcbiAgICAgICAgICAgICAgICBib2R5OiB7IGNvZGU6IDIwMCwgdmFsdWU6IHN1Y2Nlc3NmdWxseVJlc3VtZWQgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy9mb3J3YXJkIHRvIGh5cGVydHk6XG4gICAgICAgICAgICBsZXQgcmVwbHkgPSB7fTtcbiAgICAgICAgICAgIHJlcGx5LmlkID0gbXNnLmlkO1xuICAgICAgICAgICAgcmVwbHkuZnJvbSA9IG1zZy50bztcbiAgICAgICAgICAgIHJlcGx5LnRvID0gbXNnLmZyb207XG4gICAgICAgICAgICByZXBseS50eXBlID0gJ3Jlc3BvbnNlJztcbiAgICAgICAgICAgIHJlcGx5LmJvZHkgPSB7XG4gICAgICAgICAgICAgIGNvZGU6IDQwNCxcbiAgICAgICAgICAgICAgZGVzYzogJ05vIGRhdGEgb2JqZWN0cyByZXBvcnRlcnMgdG8gYmUgcmVzdW1lZCdcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLl9idXMucG9zdE1lc3NhZ2UocmVwbHkpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIF9zdG9yZUNoaWxkcmVucyhtc2cpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IHJlc291cmNlID0gbXNnLmJvZHkucmVzb3VyY2U7XG4gICAgbGV0IGF0dHJpYnV0ZSA9IG1zZy5ib2R5LmF0dHJpYnV0ZTtcblxuICAgIGlmIChhdHRyaWJ1dGUgPT09ICdjaGlsZHJlbk9iamVjdHMnKSB7IF90aGlzLl9kYXRhT2JqZWN0c1N0b3JhZ2Uuc2F2ZUNoaWxkcmVucyhmYWxzZSwgcmVzb3VyY2UsIHVuZGVmaW5lZCwgbXNnLmJvZHkudmFsdWUpOyB9IGVsc2UgeyBfdGhpcy5fZGF0YU9iamVjdHNTdG9yYWdlLnNhdmVDaGlsZHJlbnModHJ1ZSwgcmVzb3VyY2UsIGF0dHJpYnV0ZSwgbXNnLmJvZHkudmFsdWUpOyB9XG5cbiAgfVxuXG4gIF9uZXdDcmVhdGUobXNnKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGxldCBvd25lciA9IG1zZy5mcm9tO1xuICAgIGxldCBkb21haW4gPSBkaXZpZGVVUkwobXNnLmZyb20pLmRvbWFpbjtcblxuICAgIC8vIGlmIHJlcG9ydGVyIGlzIGluIGEgSW50ZXJ3b3JraW5nIFByb3Rvc3R1YiB0aGUgcnVudGltZSBkb21haW4gYmFja2VuZCBzZXJ2aWNlcyB3aWxsIGJlIHVzZWRcbiAgICBpZiAoX3RoaXMuX3JlZ2lzdHJ5LmlzSW50ZXJ3b3JraW5nUHJvdG9TdHViKG1zZy5mcm9tKSkge1xuICAgICAgZG9tYWluID0gZGl2aWRlVVJMKF90aGlzLnJ1bnRpbWVVUkwpLmRvbWFpbjtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGludml0YXRpb24gbWVzc2FnZSB0byBvYnNlcnZlcnNcblxuICAgIC8qaWYgKG1zZy5ib2R5LmF1dGhvcmlzZSkge1xuICAgICAgX3RoaXMuX2F1dGhvcmlzZShtc2cpO1xuICAgICAgcmV0dXJuO1xuICAgIH0qL1xuXG4gICAgLy9nZXQgc2NoZW1hIGZyb20gY2F0YWxvZ3VlIGFuZCBwYXJzZSAtPiAoc2NoZW1lLCBjaGlsZHJlbilcbiAgICBfdGhpcy5fY2F0YWxvZy5nZXREYXRhU2NoZW1hRGVzY3JpcHRvcihtc2cuYm9keS5zY2hlbWEpLnRoZW4oKGRlc2NyaXB0b3IpID0+IHtcblxuICAgICAgbGV0IHByb3BlcnRpZXMgPSBkZXNjcmlwdG9yLnNvdXJjZVBhY2thZ2Uuc291cmNlQ29kZS5wcm9wZXJ0aWVzO1xuICAgICAgbGV0IHNjaGVtZSA9IHByb3BlcnRpZXMuc2NoZW1lID8gcHJvcGVydGllcy5zY2hlbWUuY29uc3RhbnQgOiAncmVzb3VyY2UnO1xuICAgICAgbGV0IGNoaWxkcmVucyA9IHByb3BlcnRpZXMuY2hpbGRyZW4gPyBwcm9wZXJ0aWVzLmNoaWxkcmVuLmNvbnN0YW50IDogW107XG5cbiAgICAgIC8vIERvIHNjaGVtYSB2YWxpZGF0aW9uXG4gICAgICAvLyBUT0RPOiBjaGVjayBpZiBpcyBuZWVkIHRvIGhhbmRsZSB3aXRoIHRoZSByZXN1bHQgb2YgdmFsaWRhdGlvblxuICAgICAgc2NoZW1hVmFsaWRhdGlvbihzY2hlbWUsIGRlc2NyaXB0b3IsIG1zZy5ib2R5LnZhbHVlKTtcblxuICAgICAgbGV0IG9iamVjdEluZm8gPSB7XG4gICAgICAgIG5hbWU6IG1zZy5ib2R5LnZhbHVlLm5hbWUsXG4gICAgICAgIHNjaGVtYTogbXNnLmJvZHkudmFsdWUuc2NoZW1hLFxuICAgICAgICByZXBvcnRlcjogbXNnLmJvZHkudmFsdWUucmVwb3J0ZXIsXG4gICAgICAgIHJlc291cmNlczogbXNnLmJvZHkudmFsdWUucmVzb3VyY2VzXG4gICAgICB9O1xuXG4gICAgICAvLyBzaG91bGQgcmVzdXNlIGRhdGEgb2JqZWN0IHVybCBpZiBpdCBwYXNzZWRcbiAgICAgIGxldCByZXVzZURhdGFPYmplY3QgPSBtc2cuYm9keS52YWx1ZS5yZXNvdXJjZTtcbiAgICAgIGxldCBudW1PZkFkZHJlc3MgPSAxO1xuXG4gICAgICAvL2RlYnVnZ2VyO1xuICAgICAgLy9yZXF1ZXN0IGFkZHJlc3MgYWxsb2NhdGlvbiBvZiBhIG5ldyBvYmplY3QgZnJvbSB0aGUgbXNnLW5vZGVcbiAgICAgIC8vX3RoaXMuX2FsbG9jYXRvci5jcmVhdGUoZG9tYWluLCBudW1PZkFkZHJlc3MsIG9iamVjdEluZm8sIHNjaGVtZSwgcmV1c2VEYXRhT2JqZWN0KS50aGVuKChhbGxvY2F0ZWQpID0+IHtcbiAgICAgIF90aGlzLl9hbGxvY2F0b3IuY3JlYXRlKGRvbWFpbiwgbnVtT2ZBZGRyZXNzLCBvYmplY3RJbmZvLCBzY2hlbWUsIHJldXNlRGF0YU9iamVjdCkudGhlbigoYWxsb2NhdGVkKSA9PiB7XG5cbiAgICAgICAgbGV0IG9iamVjdFJlZ2lzdHJhdGlvbiA9IGRlZXBDbG9uZShtc2cuYm9keS52YWx1ZSk7XG4gICAgICAgIG9iamVjdFJlZ2lzdHJhdGlvbi51cmwgPSBhbGxvY2F0ZWQuYWRkcmVzc1swXTtcbiAgICAgICAgb2JqZWN0UmVnaXN0cmF0aW9uLmF1dGhvcmlzZSA9IG1zZy5ib2R5LmF1dGhvcmlzZTtcbiAgICAgICAgb2JqZWN0UmVnaXN0cmF0aW9uLmNoaWxkcmVucyA9IGNoaWxkcmVucztcblxuICAgICAgICAvL29iamVjdFJlZ2lzdHJhdGlvbi5leHBpcmVzID0gMzA7Ly9UT0RPOiBnZXQgaXQgZnJvbSBkYXRhIG9iamVjdCBjb25maWd1cmF0aW9uIGRlc2NyaXB0aW9uIHdoZW4gcHJlc2VudFxuXG4gICAgICAgIGRlbGV0ZSBvYmplY3RSZWdpc3RyYXRpb24uZGF0YTtcblxuICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuX25ld0NyZWF0ZV0gQUxMT0NBVE9SIENSRUFURTonLCBhbGxvY2F0ZWQpO1xuXG4gICAgICAgIGxldCBzdWJzY3JpcHRpb25VUkwgPSBvYmplY3RSZWdpc3RyYXRpb24udXJsICsgJy9zdWJzY3JpcHRpb24nO1xuXG4gICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5fbmV3Q3JlYXRlXSBTdWJzY3JpcHRpb24gVVJMJywgc3Vic2NyaXB0aW9uVVJMKTtcblxuICAgICAgICAvL1RvIHJlZ2lzdGVyIHRoZSBkYXRhT2JqZWN0IGluIHRoZSBydW50aW1lUmVnaXN0cnlcbiAgICAgICAgbG9nLmluZm8oJ1tTeW5jaGVyTWFuYWdlci5fbmV3Q3JlYXRlXSBSZWdpc3RlciBPYmplY3Q6ICcsIG9iamVjdFJlZ2lzdHJhdGlvbik7XG5cbiAgICAgICAgLy9fdGhpcy5fcmVnaXN0cnkucmVnaXN0ZXJEYXRhT2JqZWN0KG1zZy5ib2R5LnZhbHVlLm5hbWUsIG1zZy5ib2R5LnZhbHVlLnNjaGVtYSwgb2JqVVJMLCBtc2cuYm9keS52YWx1ZS5yZXBvcnRlciwgbXNnLmJvZHkudmFsdWUucmVzb3VyY2VzLCBhbGxvY2F0ZWQsIG1zZy5ib2R5LmF1dGhvcmlzZSkudGhlbigocmVzb2x2ZSkgPT4ge1xuICAgICAgICBfdGhpcy5fcmVnaXN0cnkucmVnaXN0ZXJEYXRhT2JqZWN0KG9iamVjdFJlZ2lzdHJhdGlvbikudGhlbigocmVnaXN0ZXJlZE9iamVjdCkgPT4ge1xuICAgICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5fbmV3Q3JlYXRlXSBEYXRhT2JqZWN0IHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkJywgcmVnaXN0ZXJlZE9iamVjdCk7XG5cbiAgICAgICAgICAvL2FsbCBPSyAtPiBjcmVhdGUgcmVwb3J0ZXIgYW5kIHJlZ2lzdGVyIGxpc3RlbmVyc1xuICAgICAgICAgIGxldCByZXBvcnRlcjtcblxuICAgICAgICAgIGlmICghdGhpcy5fcmVwb3J0ZXJzW29iamVjdFJlZ2lzdHJhdGlvbi51cmxdKSB7XG4gICAgICAgICAgICByZXBvcnRlciA9IG5ldyBSZXBvcnRlck9iamVjdChfdGhpcywgb3duZXIsIG9iamVjdFJlZ2lzdHJhdGlvbi51cmwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXBvcnRlciA9IHRoaXMuX3JlcG9ydGVyc1tvYmplY3RSZWdpc3RyYXRpb24udXJsXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIgLSBuZXcgQ3JlYXRlXSAtICcsIG1zZyk7XG5cbiAgICAgICAgICAvLyBTdG9yZSBmb3IgZWFjaCByZXBvcnRlciBoeXBlcnR5IHRoZSBkYXRhT2JqZWN0XG4gICAgICAgICAgbGV0IHVzZXJVUkw7XG4gICAgICAgICAgLy8gbGV0IGludGVyd29ya2luZyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKG1zZy5ib2R5Lmhhc093blByb3BlcnR5KCdpZGVudGl0eScpICYmIG1zZy5ib2R5LmlkZW50aXR5LnVzZXJQcm9maWxlICYmIG1zZy5ib2R5LmlkZW50aXR5LnVzZXJQcm9maWxlLnVzZXJVUkwpIHtcbiAgICAgICAgICAgIHVzZXJVUkwgPSBtc2cuYm9keS5pZGVudGl0eS51c2VyUHJvZmlsZS51c2VyVVJMO1xuXG4gICAgICAgICAgICAvLyBpZiAoIXVzZXJVUkwuaW5jbHVkZXMoJ3VzZXI6Ly8nKSkge1xuICAgICAgICAgICAgLy8gICBpbnRlcndvcmtpbmcgPSB0cnVlO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1c2VyVVJMID0gX3RoaXMuX3JlZ2lzdHJ5LmdldEh5cGVydHlPd25lcihtc2cuZnJvbSk7XG5cbiAgICAgICAgICAgIC8vIGlmICghdXNlclVSTCkge1xuICAgICAgICAgICAgLy8gICBpbnRlcndvcmtpbmcgPSB0cnVlO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIHNob3VsZCB3ZSB1c2UgdGhlIG1zZy5ib2R5LnZhbHVlIGluc3RlYWQ/XG5cbiAgICAgICAgICBsZXQgbWV0YWRhdGEgPSBkZWVwQ2xvbmUob2JqZWN0UmVnaXN0cmF0aW9uKTtcbiAgICAgICAgICBtZXRhZGF0YS5zdWJzY3JpYmVyVXNlciA9IHVzZXJVUkw7XG4gICAgICAgICAgbWV0YWRhdGEuaXNSZXBvcnRlciA9IHRydWU7XG5cbiAgICAgICAgICAvLyBTdG9yZSB0aGUgZGF0YU9iamVjdCBpbmZvcm1hdGlvblxuXG4gICAgICAgICAgLy9pZiAoIWludGVyd29ya2luZykge1xuXG4gICAgICAgICAgX3RoaXMuX2RhdGFPYmplY3RzU3RvcmFnZS5zZXQobWV0YWRhdGEpO1xuXG4gICAgICAgICAgaWYgKG1zZy5ib2R5Lmhhc093blByb3BlcnR5KCdzdG9yZScpICYmIG1zZy5ib2R5LnN0b3JlKSB7XG4gICAgICAgICAgICByZXBvcnRlci5pc1RvU2F2ZURhdGEgPSB0cnVlO1xuICAgICAgICAgICAgX3RoaXMuX2RhdGFPYmplY3RzU3RvcmFnZS51cGRhdGUodHJ1ZSwgb2JqZWN0UmVnaXN0cmF0aW9uLnVybCwgJ2lzVG9TYXZlRGF0YScsIHRydWUpO1xuXG4gICAgICAgICAgICBpZiAobXNnLmJvZHkudmFsdWUuZGF0YSkgeyBfdGhpcy5fZGF0YU9iamVjdHNTdG9yYWdlLnNhdmVEYXRhKHRydWUsIG9iamVjdFJlZ2lzdHJhdGlvbi51cmwsIG51bGwsIG1zZy5ib2R5LnZhbHVlLmRhdGEpOyB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy99XG5cbiAgICAgICAgICAvLyBhZGRpbmcgbGlzdGVuZXJzIHRvIGZvcndhcmQgdG8gcmVwb3J0ZXJcblxuICAgICAgICAgIHJlcG9ydGVyLmZvcndhcmRTdWJzY3JpYmUoW29iamVjdFJlZ2lzdHJhdGlvbi51cmwsIHN1YnNjcmlwdGlvblVSTF0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVwb3J0ZXIuYWRkQ2hpbGRyZW5zKGNoaWxkcmVucykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIF90aGlzLl9yZXBvcnRlcnNbb2JqZWN0UmVnaXN0cmF0aW9uLnVybF0gPSByZXBvcnRlcjtcblxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VNc2cgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgZnJvbTogbXNnLnRvLCB0bzogb3duZXIsXG4gICAgICAgICAgICAgICAgYm9keTogeyBjb2RlOiAyMDAsIHJlc291cmNlOiBvYmplY3RSZWdpc3RyYXRpb24udXJsLCBjaGlsZHJlblJlc291cmNlczogY2hpbGRyZW5zIH1cbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHJlc3BvbnNlIHRvIFN5bmNoZXIgLT4gY3JlYXRlXG4gICAgICAgICAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2UocmVzcG9uc2VNc2cpO1xuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgICBsb2cuZXJyb3IoZXJyb3IpO1xuICAgICAgICB9KTtcblxuICAgICAgfSk7XG4gICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xuICAgICAgLy9GTE9XLU9VVDogZXJyb3IgbWVzc2FnZSByZXNwb25zZSB0byBTeW5jaGVyIC0+IGNyZWF0ZVxuICAgICAgbGV0IHJlc3BvbnNlTXNnID0ge1xuICAgICAgICBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCBmcm9tOiBtc2cudG8sIHRvOiBvd25lcixcbiAgICAgICAgYm9keTogeyBjb2RlOiA1MDAsIGRlc2M6IHJlYXNvbiB9XG4gICAgICB9O1xuXG4gICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHJlc3BvbnNlTXNnKTtcbiAgICB9KTtcblxuICB9XG5cbiAgX3Jlc3VtZUNyZWF0ZShtc2csIHN0b3JlZE9iamVjdCkge1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXG4gICAgICBsZXQgb3duZXIgPSBtc2cuZnJvbTtcbiAgICAgIGxldCBzY2hlbWEgPSBzdG9yZWRPYmplY3Quc2NoZW1hO1xuICAgICAgbGV0IHJlc291cmNlID0gc3RvcmVkT2JqZWN0LnVybDtcbiAgICAgIGxldCBpbml0aWFsRGF0YSA9IHN0b3JlZE9iamVjdC5kYXRhO1xuXG4gICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXJdIC0gcmVzdW1lIGNyZWF0ZScsIG1zZywgc3RvcmVkT2JqZWN0KTtcblxuICAgICAgLy9nZXQgc2NoZW1hIGZyb20gY2F0YWxvZ3VlIGFuZCBwYXJzZSAtPiAoc2NoZW1lLCBjaGlsZHJlbilcbiAgICAgIF90aGlzLl9jYXRhbG9nLmdldERhdGFTY2hlbWFEZXNjcmlwdG9yKHNjaGVtYSkudGhlbigoZGVzY3JpcHRvcikgPT4ge1xuXG4gICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZGVzY3JpcHRvci5zb3VyY2VQYWNrYWdlLnNvdXJjZUNvZGUucHJvcGVydGllcztcbiAgICAgICAgbGV0IHNjaGVtZSA9IHByb3BlcnRpZXMuc2NoZW1lID8gcHJvcGVydGllcy5zY2hlbWUuY29uc3RhbnQgOiAncmVzb3VyY2UnO1xuICAgICAgICBsZXQgY2hpbGRyZW5zID0gcHJvcGVydGllcy5jaGlsZHJlbiA/IHByb3BlcnRpZXMuY2hpbGRyZW4uY29uc3RhbnQgOiBbXTtcblxuICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXJdIC0gZ2V0RGF0YVNjaGVtYURlc2NyaXB0b3I6ICcsIGRlc2NyaXB0b3IsIGNoaWxkcmVucyk7XG5cbiAgICAgICAgLy8gRG8gc2NoZW1hIHZhbGlkYXRpb25cbiAgICAgICAgLy8gVE9ETzogY2hlY2sgaWYgaXMgbmVlZCB0byBoYW5kbGUgd2l0aCB0aGUgcmVzdWx0IG9mIHZhbGlkYXRpb25cbiAgICAgICAgc2NoZW1hVmFsaWRhdGlvbihzY2hlbWUsIGRlc2NyaXB0b3IsIGluaXRpYWxEYXRhKTtcblxuICAgICAgICBsZXQgb2JqZWN0UmVnaXN0cmF0aW9uID0gZGVlcENsb25lKG1zZy5ib2R5LnZhbHVlKTtcbiAgICAgICAgb2JqZWN0UmVnaXN0cmF0aW9uLnVybCA9IHN0b3JlZE9iamVjdC51cmw7XG4gICAgICAgIG9iamVjdFJlZ2lzdHJhdGlvbi5leHBpcmVzID0gc3RvcmVkT2JqZWN0LmV4cGlyZXM7XG5cbiAgICAgICAgZGVsZXRlIG9iamVjdFJlZ2lzdHJhdGlvbi5kYXRhO1xuXG4gICAgICAgIC8vYWxsIE9LIC0+IGNyZWF0ZSByZXBvcnRlciBhbmQgcmVnaXN0ZXIgbGlzdGVuZXJzXG4gICAgICAgIGxldCByZXBvcnRlcjtcblxuICAgICAgICBpZiAoIXRoaXMuX3JlcG9ydGVyc1tyZXNvdXJjZV0pIHtcbiAgICAgICAgICByZXBvcnRlciA9IG5ldyBSZXBvcnRlck9iamVjdChfdGhpcywgb3duZXIsIHJlc291cmNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXBvcnRlciA9IHRoaXMuX3JlcG9ydGVyc1tyZXNvdXJjZV07XG4gICAgICAgIH1cblxuICAgICAgICByZXBvcnRlci5pc1RvU2F2ZURhdGEgPSBzdG9yZWRPYmplY3QuaXNUb1NhdmVEYXRhO1xuXG4gICAgICAgIHJlcG9ydGVyLmZvcndhcmRTdWJzY3JpYmUoW3N0b3JlZE9iamVjdC51cmxdKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXBvcnRlci5hZGRDaGlsZHJlbnMoY2hpbGRyZW5zKS50aGVuKCgpID0+IHtcblxuICAgICAgICAgICAgcmVwb3J0ZXIucmVzdW1lU3Vic2NyaXB0aW9ucyhzdG9yZWRPYmplY3Quc3Vic2NyaXB0aW9ucyk7XG5cbiAgICAgICAgICAgIF90aGlzLl9yZXBvcnRlcnNbcmVzb3VyY2VdID0gcmVwb3J0ZXI7XG5cbiAgICAgICAgICAgIGxvZy5pbmZvKCdbU3luY2hlck1hbmFnZXIgLSByZXN1bWUgY3JlYXRlXSAtIHJlc29sdmVkIHJlc3VtZWQ6ICcsIHN0b3JlZE9iamVjdCk7XG5cbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5fZGVjcnlwdENoaWxkcmVucyhzdG9yZWRPYmplY3QsIGNoaWxkcmVucyk7XG4gICAgICAgICAgfSkudGhlbigoZGVjcnlwdGVkT2JqZWN0KSA9PiB7XG5cbiAgICAgICAgICAgIC8vIGxvZy5sb2coJ3Jlc3VsdCBvZiBwcmV2aW91cyBwcm9taXNlJyk7XG4gICAgICAgICAgICByZXNvbHZlKGRlY3J5cHRlZE9iamVjdCk7XG4gICAgICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xuICAgICAgICAgICAgbG9nLmVycm9yKCdbU3luY2hlck1hbmFnZXIgLSByZXN1bWUgY3JlYXRlXSAtIGZhaWwgb24gYWRkQ2hpbGRyZW5zOiAnLCByZWFzb24pO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBsb2cuaW5mbygnW1N5bmNoZXJNYW5hZ2VyLl9yZXN1bWVDcmVhdGVdIFJlZ2lzdGVyIE9iamVjdDogJywgb2JqZWN0UmVnaXN0cmF0aW9uKTtcbiAgICAgICAgX3RoaXMuX3JlZ2lzdHJ5LnJlZ2lzdGVyRGF0YU9iamVjdChvYmplY3RSZWdpc3RyYXRpb24pLnRoZW4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuX3Jlc3VtZUNyZWF0ZV0gRGF0YU9iamVjdCByZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQnLCByZXNvbHZlKTtcblxuICAgICAgICB9KTtcblxuICAgICAgLy8gIHJlc29sdmUoKTtcbiAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcbiAgICAgICAgbG9nLmVycm9yKCdbU3luY2hlck1hbmFnZXIgLSByZXN1bWUgY3JlYXRlXSAtIGZhaWwgb24gZ2V0RGF0YVNjaGVtYURlc2NyaXB0b3I6ICcsIHJlYXNvbik7XG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyB0byBkZWNyeXB0IERhdGFDaGlsZE9iamVjdHMgaWYgdGhleSBhcmUgZW5jcnlwdGVkXG5cbiAgX2RlY3J5cHRDaGlsZHJlbnMoc3RvcmVkT2JqZWN0LCBjaGlsZHJlbnMpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXG4gICAgICBpZiAoIWNoaWxkcmVucykgeyByZXNvbHZlKHN0b3JlZE9iamVjdCk7IH0gZWxzZSB7XG4gICAgICAgIGxldCBjaGlsZHJlbnNPYmogPSBPYmplY3Qua2V5cyhzdG9yZWRPYmplY3QuY2hpbGRyZW5PYmplY3RzKTtcblxuICAgICAgICBpZiAoY2hpbGRyZW5zT2JqLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJlc29sdmUoc3RvcmVkT2JqZWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNoaWxkcmVucy5mb3JFYWNoKChjaGlsZHJlbik9PntcblxuICAgICAgICAgIGxldCBjaGlsZE9iamVjdHMgPSBzdG9yZWRPYmplY3QuY2hpbGRyZW5PYmplY3RzW2NoaWxkcmVuXTtcblxuICAgICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5fZGVjcnlwdENoaWxkcmVuc10gZGF0YU9iamVjdENoaWxkcyB0byBkZWNyeXB0ICcsIGNoaWxkT2JqZWN0cyk7XG5cbiAgICAgICAgICBsZXQgbGlzdE9mRGVjcnlwdGVkT2JqZWN0cyA9IFtdO1xuXG4gICAgICAgICAgT2JqZWN0LmtleXMoY2hpbGRPYmplY3RzKS5mb3JFYWNoKChjaGlsZElkKT0+e1xuICAgICAgICAgICAgbGV0IGNoaWxkID0gY2hpbGRPYmplY3RzW2NoaWxkSWRdO1xuICAgICAgICAgICAgbGV0IG93bmVyID0gY2hpbGRJZC5zcGxpdCgnIycpWzBdO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkLnZhbHVlID09PSAnc3RyaW5nJykge1xuXG4gICAgICAgICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5fZGVjcnlwdENoaWxkcmVuc10gY3JlYXRlZEJ5ICcsICBvd25lciwgJyBvYmplY3Q6ICcsIGNoaWxkLnZhbHVlKTtcblxuICAgICAgICAgICAgICBsZXQgZGVjcnlwdGVkID0gY3J5cHRvTWFuYWdlci5kZWZhdWx0LmRlY3J5cHREYXRhT2JqZWN0KEpTT04ucGFyc2UoY2hpbGQudmFsdWUpLCBzdG9yZWRPYmplY3QudXJsKTtcblxuICAgICAgICAgICAgICBsaXN0T2ZEZWNyeXB0ZWRPYmplY3RzLnB1c2goZGVjcnlwdGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIFByb21pc2UuYWxsKGxpc3RPZkRlY3J5cHRlZE9iamVjdHMpLnRoZW4oKGRlY3J5cHRlZE9iamVjdHMpID0+IHtcblxuICAgICAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLl9kZWNyeXB0Q2hpbGRyZW5zXSByZXR1cm5pbmcgZGVjcnlwdGVkICcsIGRlY3J5cHRlZE9iamVjdHMpO1xuXG4gICAgICAgICAgICBkZWNyeXB0ZWRPYmplY3RzLmZvckVhY2goKGRlY3J5cHRlZE9iamVjdCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjaGlsZElkID0gZGVjcnlwdGVkT2JqZWN0LnZhbHVlLnVybDtcbiAgICAgICAgICAgICAgc3RvcmVkT2JqZWN0LmNoaWxkcmVuT2JqZWN0c1tjaGlsZHJlbl1bY2hpbGRJZF0udmFsdWUgPSBkZWNyeXB0ZWRPYmplY3QudmFsdWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLl9kZWNyeXB0Q2hpbGRyZW5zXSBzdG9yZWRPYmplY3QgJywgc3RvcmVkT2JqZWN0KTtcblxuICAgICAgICAgICAgcmVzb2x2ZShzdG9yZWRPYmplY3QpO1xuXG4gICAgICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xuICAgICAgICAgICAgbG9nLndhcm4oJ1tTeW5jaGVyTWFuYWdlci5fZGVjcnlwdENoaWxkcmVuc10gZmFpbGVkIDogJywgcmVhc29uKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBQcm9jZXNzIGludml0YXRpb25zIHRvIG9ic2VydmVyc1xuXG4gIF9hdXRob3Jpc2UobXNnKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGlmICghbXNnLmJvZHkucmVzb3VyY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW1N5bmNoZXJNYW5hZ2VyLl9hdXRob3Jpc2VdIGludml0YXRpb24gcmVxdWVzdCB3aXRob3V0IGRhdGEgb2JqZWN0IHVybDonLCBtc2cpO1xuICAgIH1cblxuICAgIGxldCBvYmpTdWJzY3JpcHRvclVSTCA9IG1zZy5ib2R5LnJlc291cmNlICsgJy9zdWJzY3JpcHRpb24nO1xuICAgIGxldCBwMnAgPSBtc2cuYm9keS5wMnAgPyBtc2cuYm9keS5wMnAgOiBmYWxzZTtcblxuICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlciAtICBhdXRob3Jpc2VdIC0gJywgbXNnKTtcblxuICAgIGlmIChtc2cuYm9keS5hdXRob3Jpc2UpIHtcbiAgICAgIG1zZy5ib2R5LmF1dGhvcmlzZS5mb3JFYWNoKChoeXBlcnR5VVJMKSA9PiB7XG4gICAgICAgIC8vRkxPVy1PVVQ6IHNlbmQgaW52aXRlcyB0byBsaXN0IG9mIHJlbW90ZSBTeW5jaGVyIC0+IF9vblJlbW90ZUNyZWF0ZSAtPiBvbk5vdGlmaWNhdGlvblxuXG4gICAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIHR5cGU6ICdjcmVhdGUnLCBmcm9tOiBvYmpTdWJzY3JpcHRvclVSTCwgdG86IGh5cGVydHlVUkwsXG4gICAgICAgICAgYm9keTogeyBwMnA6IHAycCwgaWRlbnRpdHk6IG1zZy5ib2R5LmlkZW50aXR5LCBzb3VyY2U6IG1zZy5mcm9tLCB2YWx1ZTogbXNnLmJvZHkudmFsdWUsIHNjaGVtYTogbXNnLmJvZHkuc2NoZW1hIH1cbiAgICAgICAgfSwgKHJlcGx5KSA9PiB7IC8vIGxldHMgZm9yd2FyZCB0aGUgaW52aXRhdGlvbiByZXNwb25zZVxuICAgICAgICAgIGxldCByZXNwb25zZSA9IHtcbiAgICAgICAgICAgIGZyb206IG1zZy50byxcbiAgICAgICAgICAgIHRvOiBtc2cuZnJvbSxcbiAgICAgICAgICAgIGlkOiBtc2cuaWQsXG4gICAgICAgICAgICB0eXBlOiByZXBseS50eXBlLFxuICAgICAgICAgICAgYm9keTogcmVwbHkuYm9keVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHJlc3BvbnNlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvL0ZMT1ctSU46IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBEYXRhT2JqZWN0UmVwb3J0ZXIgLT4gZGVsZXRlXG4gIF9vbkRlbGV0ZShtc2cpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IG9ialVSTCA9IG1zZy5ib2R5LnJlc291cmNlO1xuXG4gICAgbGV0IG9iamVjdCA9IF90aGlzLl9yZXBvcnRlcnNbb2JqVVJMXTtcbiAgICBpZiAob2JqZWN0KSB7XG4gICAgICAvL1RPRE86IGlzIHRoZXJlIGFueSBwb2xpY3kgdmVyaWZpY2F0aW9uIGJlZm9yZSBkZWxldGU/XG5cbiAgICAgIG9iamVjdC5kZWxldGUoKTtcblxuICAgICAgdGhpcy5fZGF0YU9iamVjdHNTdG9yYWdlLmRlbGV0ZVJlc291cmNlKG9ialVSTCkudGhlbigocmVzdWx0KSA9PiB7XG5cblxuICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIgLSBvbkRlbGV0ZV0gLSBkZWxldGVSZXNvdXJjZTogJywgcmVzdWx0KTtcblxuICAgICAgICBfdGhpcy5fcmVnaXN0cnkudW5yZWdpc3RlckRhdGFPYmplY3Qob2JqVVJMKTtcblxuICAgICAgICAvL1RPRE86IHVucmVnaXN0ZXIgb2JqZWN0P1xuICAgICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCBmcm9tOiBtc2cudG8sIHRvOiBtc2cuZnJvbSxcbiAgICAgICAgICBib2R5OiB7IGNvZGU6IDIwMCB9XG4gICAgICAgIH0pO1xuXG4gICAgICB9KTtcblxuICAgIH1cbiAgfVxuXG5cbiAgLy9GTE9XLUlOOiBtZXNzYWdlIHJlY2VpdmVkIGZyb20gbG9jYWwgU3luY2hlciAtPiBzdWJzY3JpYmVcbiAgX29uTG9jYWxTdWJzY3JpYmUobXNnKSB7XG4gICAgLy9kZWJ1Z2dlcjtcbiAgICB0aGlzLl9kYXRhT2JqZWN0c1N0b3JhZ2UuZ2V0UmVzb3VyY2VzQnlDcml0ZXJpYShtc2csIGZhbHNlKS50aGVuKChyZXN1bHQpID0+IHtcblxuICAgICAgbG9nLmluZm8oJ1tTeW5jaGVyTWFuYWdlciAtIFN1YnNjcmliZV0gLSBSZXNvdXJjZXNCeUNyaXRlcmlhIHwgTWVzc2FnZTogJywgbXNnLCAnIHJlc3VsdDogJywgcmVzdWx0KTtcblxuICAgICAgaWYgKHJlc3VsdCAmJiBPYmplY3Qua2V5cyhyZXN1bHQpLmxlbmd0aCA+IDApIHtcblxuICAgICAgICBsZXQgbGlzdE9mT2JzZXJ2ZXJzID0gW107XG5cbiAgICAgICAgLy8gVE9ETzogc2hvdWxkIHJldXNlIHRoZSBzdG9yYWdlZCBpbmZvcm1hdGlvblxuICAgICAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2goKG9ialVSTCkgPT4ge1xuICAgICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlciAtIHJlc3VtZSBTdWJzY3JpYmVdIC0gcmV1c2UgY3VycmVudCBvYmplY3QgdXJsOiAnLCByZXN1bHRbb2JqVVJMXSk7XG4gICAgICAgICAgbGlzdE9mT2JzZXJ2ZXJzLnB1c2godGhpcy5fcmVzdW1lU3Vic2NyaXB0aW9uKG1zZywgcmVzdWx0W29ialVSTF0pKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgUHJvbWlzZS5hbGwobGlzdE9mT2JzZXJ2ZXJzKS50aGVuKChyZXN1bWVkT2JzZXJ2ZXJzKSA9PiB7XG4gICAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyIC0gT2JzZXJ2ZXJzIFJlc3VtZWRdJywgcmVzdW1lZE9ic2VydmVycyk7XG5cbiAgICAgICAgICAvLyBUT0RPOiBzaG91ZCBzZW5kIHRoZSBpbmZvcm1hdGlvbiBpZiBzb21lIG9iamVjdCB3YXMgZmFpbDtcbiAgICAgICAgICBsZXQgc3VjY2Vzc2Z1bGx5UmVzdW1lZCA9IE9iamVjdC52YWx1ZXMocmVzdW1lZE9ic2VydmVycykuZmlsdGVyKChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG9ic2VydmVyICE9PSBmYWxzZTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vRkxPVy1PVVQ6IG1lc3NhZ2UgcmVzcG9uc2UgdG8gU3luY2hlciAtPiBjcmVhdGVcbiAgICAgICAgICB0aGlzLl9idXMucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgZnJvbTogbXNnLnRvLCB0bzogbXNnLmZyb20sXG4gICAgICAgICAgICBib2R5OiB7IGNvZGU6IDIwMCwgdmFsdWU6IHN1Y2Nlc3NmdWxseVJlc3VtZWQgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0pO1xuXG4gICAgICB9IGVsc2UgaWYgKG1zZy5ib2R5LnNjaGVtYSAmJiBtc2cuYm9keS5yZXNvdXJjZSkge1xuICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIub25Mb2NhbFN1YnNjcmliZSAtIG5ldyBTdWJzY3JpYmVdIC0gJywgbXNnLmJvZHkuc2NoZW1hLCBtc2cuYm9keS5yZXNvdXJjZSk7XG4gICAgICAgIHRoaXMuX25ld1N1YnNjcmlwdGlvbihtc2cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy9mb3J3YXJkIHRvIGh5cGVydHk6XG4gICAgICAgIGxldCByZXBseSA9IHt9O1xuICAgICAgICByZXBseS5pZCA9IG1zZy5pZDtcbiAgICAgICAgcmVwbHkuZnJvbSA9IG1zZy50bztcbiAgICAgICAgcmVwbHkudG8gPSBtc2cuZnJvbTtcbiAgICAgICAgcmVwbHkudHlwZSA9ICdyZXNwb25zZSc7XG4gICAgICAgIHJlcGx5LmJvZHkgPSB7XG4gICAgICAgICAgY29kZTogNDA0LFxuICAgICAgICAgIGRlc2M6ICdObyBkYXRhIG9iamVjdHMgb2JzZXJ2ZXJzIHRvIGJlIHJlc3VtZWQnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2J1cy5wb3N0TWVzc2FnZShyZXBseSk7XG4gICAgICB9XG5cbiAgICB9KTtcblxuICB9XG5cbiAgX25ld1N1YnNjcmlwdGlvbihtc2cpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IG9ialVSTCA9IG1zZy5ib2R5LnJlc291cmNlO1xuXG4gICAgbGV0IGh5cGVydHlVUkwgPSBtc2cuZnJvbTtcbiAgICBsZXQgZG9tYWluID0gZGl2aWRlVVJMKG9ialVSTCkuZG9tYWluO1xuICAgIGxldCBvYmpVUkxTdWJzY3JpcHRpb24gPSBvYmpVUkwgKyAnL3N1YnNjcmlwdGlvbic7XG5cbiAgICBsZXQgY2hpbGRCYXNlVVJMID0gb2JqVVJMICsgJy9jaGlsZHJlbi8nO1xuXG4gICAgLy9nZXQgc2NoZW1hIGZyb20gY2F0YWxvZ3VlIGFuZCBwYXJzZSAtPiAoY2hpbGRyZW4pXG4gICAgX3RoaXMuX2NhdGFsb2cuZ2V0RGF0YVNjaGVtYURlc2NyaXB0b3IobXNnLmJvZHkuc2NoZW1hKS50aGVuKChkZXNjcmlwdG9yKSA9PiB7XG4gICAgICBsZXQgcHJvcGVydGllcyA9IGRlc2NyaXB0b3Iuc291cmNlUGFja2FnZS5zb3VyY2VDb2RlLnByb3BlcnRpZXM7XG4gICAgICBsZXQgY2hpbGRyZW5zID0gcHJvcGVydGllcy5jaGlsZHJlbiA/IHByb3BlcnRpZXMuY2hpbGRyZW4uY29uc3RhbnQgOiBbXTtcblxuICAgICAgbGV0IHN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICAgIHN1YnNjcmlwdGlvbnMucHVzaChvYmpVUkwgKyAnL2NoYW5nZXMnKTtcblxuICAgICAgY2hpbGRyZW5zLmZvckVhY2goKGNoaWxkKSA9PiBzdWJzY3JpcHRpb25zLnB1c2goY2hpbGRCYXNlVVJMICsgY2hpbGQpKTtcblxuICAgICAgLy9jaGlsZHJlbiBhZGRyZXNzZXNcblxuICAgICAgLy9GTE9XLU9VVDogc3Vic2NyaWJlIG1lc3NhZ2UgdG8gdGhlIG1zZy1ub2RlLCByZWdpc3RlcmluZyBsaXN0ZW5lcnMgb24gdGhlIGJyb2tlclxuICAgICAgbGV0IG5vZGVTdWJzY3JpYmVNc2cgPSB7XG4gICAgICAgIHR5cGU6ICdzdWJzY3JpYmUnLCBmcm9tOiBfdGhpcy5fdXJsLCB0bzogJ2RvbWFpbjovL21zZy1ub2RlLicgKyBkb21haW4gKyAnL3NtJyxcbiAgICAgICAgYm9keTogeyBpZGVudGl0eTogbXNnLmJvZHkuaWRlbnRpdHksIHJlc291cmNlczogc3Vic2NyaXB0aW9ucywgc291cmNlOiBoeXBlcnR5VVJMIH1cbiAgICAgIH07XG5cbiAgICAgIC8vc3Vic2NyaWJlIGluIG1zZy1ub2RlXG4gICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKG5vZGVTdWJzY3JpYmVNc2csIChyZXBseSkgPT4ge1xuICAgICAgICBsb2cubG9nKCdub2RlLXN1YnNjcmliZS1yZXNwb25zZShvYnNlcnZlcik6ICcsIHJlcGx5KTtcbiAgICAgICAgY29uc29sZS5sb2coJ1JFVVNFVEVTVCBTeW5jaGVyTWFuYWdlciAtIG5vZGUtc3Vic2NyaWJlLXJlc3BvbnNlKG9ic2VydmVyKTogJywgcmVwbHkpO1xuICAgICAgICBpZiAocmVwbHkuYm9keS5jb2RlID09PSAyMDApIHtcblxuICAgICAgICAgIC8vRkxPVy1PVVQ6IHJlcGx5IHdpdGggcHJvdmlzaW9uYWwgcmVzcG9uc2VcbiAgICAgICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgIGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIGZyb206IG1zZy50bywgdG86IGh5cGVydHlVUkwsXG4gICAgICAgICAgICBib2R5OiB7IGNvZGU6IDEwMCwgY2hpbGRyZW5SZXNvdXJjZXM6IGNoaWxkcmVucywgc2NoZW1hOiBtc2cuYm9keS5zY2hlbWEsIHJlc291cmNlOiBtc2cuYm9keS5yZXNvdXJjZSB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvL0ZMT1ctT1VUOiBzdWJzY3JpYmUgbWVzc2FnZSB0byByZW1vdGUgUmVwb3J0ZXJPYmplY3QgLT4gX29uUmVtb3RlU3Vic2NyaWJlXG4gICAgICAgICAgbGV0IG9ialN1YnNjcmliZU1zZyA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdWJzY3JpYmUnLCBmcm9tOiBfdGhpcy5fdXJsLCB0bzogb2JqVVJMU3Vic2NyaXB0aW9uLFxuICAgICAgICAgICAgYm9keTogeyBpZGVudGl0eTogbm9kZVN1YnNjcmliZU1zZy5ib2R5LmlkZW50aXR5LCBzdWJzY3JpYmVyOiBoeXBlcnR5VVJMIH1cbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy9UT0RPOiBGb3IgRnVydGhlciBTdHVkeVxuICAgICAgICAgIGlmIChtc2cuYm9keS5oYXNPd25Qcm9wZXJ0eSgnbXV0dWFsJykpIG9ialN1YnNjcmliZU1zZy5ib2R5Lm11dHVhbCA9IG1zZy5ib2R5Lm11dHVhbDtcbiAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuX25ld1N1YnNjcmlwdGlvbl0nLCBvYmpTdWJzY3JpYmVNc2csIG1zZyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJ1JFVVNFVEVTVCBTeW5jaGVyTWFuYWdlciAtIFtTeW5jaGVyTWFuYWdlci5fbmV3U3Vic2NyaXB0aW9uXScsIG9ialN1YnNjcmliZU1zZywgbXNnKTtcbiAgICAgICAgICAvL3N1YnNjcmliZSB0byByZXBvcnRlciBTTVxuICAgICAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2Uob2JqU3Vic2NyaWJlTXNnLCAocmVwbHkpID0+IHtcbiAgICAgICAgICAgIGxvZy5sb2coJ3JlcG9ydGVyLXN1YnNjcmliZS1yZXNwb25zZS1uZXc6ICcsIHJlcGx5KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSRVVTRVRFU1QgU3luY2hlck1hbmFnZXIgLSByZXBvcnRlci1zdWJzY3JpYmUtcmVzcG9uc2UtbmV3OiAnLCByZXBseSk7XG4gICAgICAgICAgICBpZiAocmVwbHkuYm9keS5jb2RlID09PSAyMDApIHtcblxuICAgICAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuX25ld1N1YnNjcmlwdGlvbl0gLSBvYnNlcnZlcnM6ICcsIF90aGlzLl9vYnNlcnZlcnMsIG9ialVSTCwgX3RoaXMuX29ic2VydmVyc1tvYmpVUkxdKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1JFVVNFVEVTVCBTeW5jaGVyTWFuYWdlciAtIDIwMCBjb2RlW1N5bmNoZXJNYW5hZ2VyLl9uZXdTdWJzY3JpcHRpb25dIC0gb2JzZXJ2ZXJzOiAnLCBfdGhpcy5fb2JzZXJ2ZXJzLCBvYmpVUkwsIF90aGlzLl9vYnNlcnZlcnNbb2JqVVJMXSk7XG4gICAgICAgICAgICAgIGxldCBvYnNlcnZlciA9IF90aGlzLl9vYnNlcnZlcnNbb2JqVVJMXTtcbiAgICAgICAgICAgICAgaWYgKCFvYnNlcnZlcikge1xuICAgICAgICAgICAgICAgIG9ic2VydmVyID0gbmV3IE9ic2VydmVyT2JqZWN0KF90aGlzLCBvYmpVUkwsIGNoaWxkcmVucyk7XG4gICAgICAgICAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLl9uZXdTdWJzY3JpcHRpb25dIC0gb2JzZXJ2ZXJzOiBjcmVhdGUgbmV3IE9ic2VydmVyT2JqZWN0OiAnLCBvYnNlcnZlcik7XG4gICAgICAgICAgICAgICAgX3RoaXMuX29ic2VydmVyc1tvYmpVUkxdID0gb2JzZXJ2ZXI7XG5cbiAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBuZXcgaHlwZXJ0eSBzdWJzY3JpcHRpb25cbiAgICAgICAgICAgICAgICBvYnNlcnZlci5hZGRTdWJzY3JpcHRpb24oaHlwZXJ0eVVSTCk7XG5cbiAgICAgICAgICAgICAgICAvLyBhZGQgY2hpbGRyZW5zIGFuZCBsaXN0ZW5lcnMgdG8gc2F2ZSBkYXRhIGlmIG5lY2Vzc2FyeVxuICAgICAgICAgICAgICAgIG9ic2VydmVyLmFkZENoaWxkcmVucyhjaGlsZHJlbnMpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgbGV0IGludGVyd29ya2luZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgIC8vZGVidWdnZXI7XG5cbiAgICAgICAgICAgICAgLy8gU3RvcmUgZm9yIGVhY2ggcmVwb3J0ZXIgaHlwZXJ0eSB0aGUgZGF0YU9iamVjdFxuICAgICAgICAgICAgICBsZXQgdXNlclVSTDtcbiAgICAgICAgICAgICAgaWYgKG1zZy5ib2R5Lmhhc093blByb3BlcnR5KCdpZGVudGl0eScpICYmIG1zZy5ib2R5LmlkZW50aXR5LnVzZXJQcm9maWxlICYmIG1zZy5ib2R5LmlkZW50aXR5LnVzZXJQcm9maWxlLnVzZXJVUkwpIHtcbiAgICAgICAgICAgICAgICB1c2VyVVJMID0gbXNnLmJvZHkuaWRlbnRpdHkudXNlclByb2ZpbGUudXNlclVSTDtcbiAgICAgICAgICAgICAgICBpZiAoIXVzZXJVUkwuaW5jbHVkZXMoJ3VzZXI6Ly8nKSkge1xuICAgICAgICAgICAgICAgICAgaW50ZXJ3b3JraW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdXNlclVSTCA9IF90aGlzLl9yZWdpc3RyeS5nZXRIeXBlcnR5T3duZXIobXNnLmZyb20pO1xuICAgICAgICAgICAgICAgIGlmICghdXNlclVSTCkgaW50ZXJ3b3JraW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGxldCBtZXRhZGF0YSA9IGRlZXBDbG9uZShyZXBseS5ib2R5LnZhbHVlKTtcblxuICAgICAgICAgICAgICAvLyBsZXQgY2hpbGRyZW5PYmplY3RzID0gbWV0YWRhdGEuY2hpbGRyZW5PYmplY3RzIHx8IHt9O1xuXG4gICAgICAgICAgICAgIGRlbGV0ZSBtZXRhZGF0YS5kYXRhO1xuICAgICAgICAgICAgICBkZWxldGUgbWV0YWRhdGEuY2hpbGRyZW5PYmplY3RzO1xuXG4gICAgICAgICAgICAgIG1ldGFkYXRhLmNoaWxkcmVucyA9IGNoaWxkcmVucztcbiAgICAgICAgICAgICAgbWV0YWRhdGEuc3Vic2NyaWJlclVzZXIgPSB1c2VyVVJMO1xuICAgICAgICAgICAgICBtZXRhZGF0YS5pc1JlcG9ydGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgIG1ldGFkYXRhLnN1YnNjcmliZXJIeXBlcnR5ID0gaHlwZXJ0eVVSTDtcblxuICAgICAgICAgICAgICBpZiAoIWludGVyd29ya2luZykge1xuICAgICAgICAgICAgICAvL190aGlzLl9kYXRhT2JqZWN0c1N0b3JhZ2Uuc2V0KG9ialVSTCwgZmFsc2UsIG1zZy5ib2R5LnNjaGVtYSwgJ29uJywgcmVwbHkuYm9keS5vd25lciwgaHlwZXJ0eVVSTCwgY2hpbGRyZW5zLCB1c2VyVVJMKTtcbiAgICAgICAgICAgICAgICBfdGhpcy5fZGF0YU9iamVjdHNTdG9yYWdlLnNldChtZXRhZGF0YSk7XG4gICAgICAgICAgICAgICAgaWYgKChtZXRhZGF0YS5oYXNPd25Qcm9wZXJ0eSgnc3RvcmUnKSAmJiBtZXRhZGF0YS5zdG9yZSkgfHwgKG1ldGFkYXRhLmhhc093blByb3BlcnR5KCdpc1RvU2F2ZURhdGEnKSAmJiBtZXRhZGF0YS5pc1RvU2F2ZURhdGEpKSB7XG4gICAgICAgICAgICAgICAgICBvYnNlcnZlci5pc1RvU2F2ZURhdGEgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgX3RoaXMuX2RhdGFPYmplY3RzU3RvcmFnZS51cGRhdGUoZmFsc2UsIG9ialVSTCwgJ2lzVG9TYXZlRGF0YScsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgX3RoaXMuX2RhdGFPYmplY3RzU3RvcmFnZS5zYXZlRGF0YShmYWxzZSwgb2JqVVJMLCBudWxsLCByZXBseS5ib2R5LnZhbHVlLmRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vZm9yd2FyZCB0byBoeXBlcnR5OlxuICAgICAgICAgICAgICByZXBseS5pZCA9IG1zZy5pZDtcbiAgICAgICAgICAgICAgcmVwbHkuZnJvbSA9IF90aGlzLl91cmw7XG4gICAgICAgICAgICAgIHJlcGx5LnRvID0gaHlwZXJ0eVVSTDtcbiAgICAgICAgICAgICAgcmVwbHkuYm9keS5zY2hlbWEgPSBtc2cuYm9keS5zY2hlbWE7XG4gICAgICAgICAgICAgIHJlcGx5LmJvZHkucmVzb3VyY2UgPSBtc2cuYm9keS5yZXNvdXJjZTtcblxuICAgICAgICAgICAgICAvL1RPRE86IEZvciBGdXJ0aGVyIFN0dWR5XG4gICAgICAgICAgICAgIGlmIChtc2cuYm9keS5oYXNPd25Qcm9wZXJ0eSgnbXV0dWFsJykpIHJlcGx5LmJvZHkubXV0dWFsID0gbXNnLmJvZHkubXV0dWFsO1xuICAgICAgICAgICAgICBsb2cubG9nKCdbc3Vic2NyaWJlXSAtIG5ldyBzdWJzY3JpcHRpb246ICcsIG1zZywgcmVwbHksIG9ic2VydmVyKTtcblxuICAgICAgICAgICAgICB0aGlzLl9idXMucG9zdE1lc3NhZ2UocmVwbHkpO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvL2xpc3RlbmVyIHJlamVjdGVkXG4gICAgICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCBmcm9tOiBtc2cudG8sIHRvOiBoeXBlcnR5VVJMLFxuICAgICAgICAgICAgYm9keTogcmVwbHkuYm9keVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIH0pO1xuXG4gIH1cblxuICBfcmVzdW1lU3Vic2NyaXB0aW9uKG1zZywgc3RvcmVkT2JqZWN0KSB7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblxuICAgICAgbGV0IG9ialVSTCA9IHN0b3JlZE9iamVjdC51cmw7XG4gICAgICBsZXQgc2NoZW1hID0gc3RvcmVkT2JqZWN0LnNjaGVtYTtcblxuICAgICAgbGV0IGh5cGVydHlVUkwgPSBtc2cuZnJvbTtcblxuICAgICAgLy8gbGV0IG9ialVSTFN1YnNjcmlwdGlvbiA9IG9ialVSTCArICcvc3Vic2NyaXB0aW9uJztcblxuICAgICAgbGV0IGNoaWxkQmFzZVVSTCA9IG9ialVSTCArICcvY2hpbGRyZW4vJztcblxuICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyIC0gUmV1c2VTdWJzY3JpcHRpb25dIC0gb2JqVVJMOiAnLCBvYmpVUkwsICcgLSBzY2hlbWE6Jywgc2NoZW1hKTtcblxuICAgICAgLy9nZXQgc2NoZW1hIGZyb20gY2F0YWxvZ3VlIGFuZCBwYXJzZSAtPiAoY2hpbGRyZW4pXG4gICAgICAvLyBUT0RPOiByZW1vdmUgdGhpcyBzaW5jZSBjaGlsZHJlbiByZXNvdXJjZXMgc2hvdWxkIGJlIGF2YWlsYWJsZSBpbiB0aGUgRGF0YU9iamVjdHNTdG9yYWdlXG4gICAgICB0aGlzLl9jYXRhbG9nLmdldERhdGFTY2hlbWFEZXNjcmlwdG9yKHNjaGVtYSkudGhlbigoZGVzY3JpcHRvcikgPT4ge1xuICAgICAgICBsZXQgcHJvcGVydGllcyA9IGRlc2NyaXB0b3Iuc291cmNlUGFja2FnZS5zb3VyY2VDb2RlLnByb3BlcnRpZXM7XG4gICAgICAgIGxldCBjaGlsZHJlbnMgPSBwcm9wZXJ0aWVzLmNoaWxkcmVuID8gcHJvcGVydGllcy5jaGlsZHJlbi5jb25zdGFudCA6IFtdO1xuXG4gICAgICAgIC8vY2hpbGRyZW4gYWRkcmVzc2VzXG4gICAgICAgIGxldCBzdWJzY3JpcHRpb25zID0gW107XG4gICAgICAgIHN1YnNjcmlwdGlvbnMucHVzaChvYmpVUkwgKyAnL2NoYW5nZXMnKTtcbiAgICAgICAgY2hpbGRyZW5zLmZvckVhY2goKGNoaWxkKSA9PiBzdWJzY3JpcHRpb25zLnB1c2goY2hpbGRCYXNlVVJMICsgY2hpbGQpKTtcblxuICAgICAgICAvL0ZMT1ctT1VUOiByZXBseSB3aXRoIHByb3Zpc2lvbmFsIHJlc3BvbnNlXG4gICAgICAgIHRoaXMuX2J1cy5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgZnJvbTogbXNnLnRvLCB0bzogaHlwZXJ0eVVSTCxcbiAgICAgICAgICBib2R5OiB7IGNvZGU6IDEwMCwgY2hpbGRyZW5SZXNvdXJjZXM6IGNoaWxkcmVucywgc2NoZW1hOiBzY2hlbWEsIHJlc291cmNlOiBvYmpVUkwgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvL0ZMT1ctT1VUOiBzdWJzY3JpYmUgbWVzc2FnZSB0byByZW1vdGUgUmVwb3J0ZXJPYmplY3QgLT4gX29uUmVtb3RlU3Vic2NyaWJlXG4gICAgICAgIC8qbGV0IG9ialN1YnNjcmliZU1zZyA9IHtcbiAgICAgICAgICB0eXBlOiAnc3Vic2NyaWJlJywgZnJvbTogdGhpcy5fdXJsLCB0bzogb2JqVVJMU3Vic2NyaXB0aW9uLFxuICAgICAgICAgIGJvZHk6IHsgc3Vic2NyaWJlcjogaHlwZXJ0eVVSTCwgaWRlbnRpdHk6IG1zZy5ib2R5LmlkZW50aXR5IH1cbiAgICAgICAgfTtcblxuICAgICAgICAvL3N1YnNjcmliZSB0byByZXBvcnRlciBTTVxuICAgICAgICB0aGlzLl9idXMucG9zdE1lc3NhZ2Uob2JqU3Vic2NyaWJlTXNnLCAocmVwbHkpID0+IHsqL1xuXG4gICAgICAgIGxldCBvYnNlcnZlciA9IHRoaXMuX29ic2VydmVyc1tvYmpVUkxdO1xuICAgICAgICBpZiAoIW9ic2VydmVyKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgT2JzZXJ2ZXJPYmplY3QodGhpcywgb2JqVVJMLCBjaGlsZHJlbnMpO1xuICAgICAgICAgIG9ic2VydmVyLmlzVG9TYXZlRGF0YSA9IHN0b3JlZE9iamVjdC5pc1RvU2F2ZURhdGE7XG4gICAgICAgICAgdGhpcy5fb2JzZXJ2ZXJzW29ialVSTF0gPSBvYnNlcnZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vcmVnaXN0ZXIgbmV3IGh5cGVydHkgc3Vic2NyaXB0aW9uXG4gICAgICAgIG9ic2VydmVyLmFkZFN1YnNjcmlwdGlvbihoeXBlcnR5VVJMKTtcbiAgICAgICAgb2JzZXJ2ZXIuYWRkQ2hpbGRyZW5zKGNoaWxkcmVucyk7XG5cbiAgICAgICAgLy8gT2JqZWN0LmFzc2lnbihzdG9yZWRPYmplY3QuZGF0YSwgcmVwbHkuYm9keS52YWx1ZS5kYXRhKTtcbiAgICAgICAgLy8gT2JqZWN0LmFzc2lnbihzdG9yZWRPYmplY3QuY2hpbGRyZW5zLCByZXBseS5ib2R5LnZhbHVlLmNoaWxkcmVucyk7XG5cbiAgICAgICAgLy9sb2cubG9nKCdbc3Vic2NyaWJlXSAtIHJlc3VtZSBzdWJzY3JpcHRpb246ICcsIG1zZywgcmVwbHksIHN0b3JlZE9iamVjdCwgb2JzZXJ2ZXIpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWNyeXB0Q2hpbGRyZW5zKHN0b3JlZE9iamVjdCwgY2hpbGRyZW5zKTtcbiAgICAgIH0pLnRoZW4oKGRlY3J5cHRlZE9iamVjdCkgPT4ge1xuICAgICAgICAvLyBsb2cubG9nKCdyZXN1bHQgb2YgcHJldmlvdXMgcHJvbWlzZScpO1xuICAgICAgICByZXNvbHZlKGRlY3J5cHRlZE9iamVjdCk7XG4gICAgICB9KS5jYXRjaCgocmVhc29uKSA9PiB7XG4gICAgICAgIGxvZy5lcnJvcignW1N5bmNoZXJNYW5hZ2VyIC0gcmVzdW1lIHN1YnNjcmlwdGlvbl0gLSBmYWlsIG9uIGdldERhdGFTY2hlbWFEZXNjcmlwdG9yOiAnLCByZWFzb24pO1xuICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy9GTE9XLUlOOiBtZXNzYWdlIHJlY2VpdmVkIGZyb20gbG9jYWwgRGF0YU9iamVjdE9ic2VydmVyIC0+IHVuc3Vic2NyaWJlXG4gIF9vbkxvY2FsVW5TdWJzY3JpYmUobXNnKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGxldCBoeXBlcnR5VVJMID0gbXNnLmZyb207XG4gICAgbGV0IG9ialVSTCA9IG1zZy5ib2R5LnJlc291cmNlO1xuXG4gICAgbGV0IG9ic2VydmVyID0gX3RoaXMuX29ic2VydmVyc1tvYmpVUkxdO1xuICAgIGlmIChvYnNlcnZlcikge1xuICAgICAgLy9UT0RPOiBpcyB0aGVyZSBhbnkgcG9saWN5IHZlcmlmaWNhdGlvbiBiZWZvcmUgZGVsZXRlP1xuICAgICAgb2JzZXJ2ZXIucmVtb3ZlU3Vic2NyaXB0aW9uKG1zZyk7XG5cbiAgICAgIC8vVE9ETzogZGVzdHJveSBvYmplY3QgaW4gdGhlIHJlZ2lzdHJ5P1xuICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZSh7XG4gICAgICAgIGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIGZyb206IG1zZy50bywgdG86IG1zZy5mcm9tLFxuICAgICAgICBib2R5OiB7IGNvZGU6IDIwMCB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fZGF0YU9iamVjdHNTdG9yYWdlLmRlbGV0ZVJlc291cmNlKG9ialVSTCk7XG5cbiAgICAgIC8vVE9ETzogcmVtb3ZlIE9iamVjdCBpZiBubyBtb3JlIHN1YnNjcmlwdGlvbj9cbiAgICAgIGRlbGV0ZSBfdGhpcy5fb2JzZXJ2ZXJzW29ialVSTF07XG4gICAgfVxuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3luY2hlck1hbmFnZXI7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3N5bmNoZXIvU3luY2hlck1hbmFnZXIuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBO0FBREE7QUFDQTs7Ozs7QUFUQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFGQTtBQUNBO0FBV0E7Ozs7QUFJQTtBQUNBOzs7Ozs7Ozs7QUFVQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUpBO0FBTUE7QUFFQTtBQUNBOzs7OztBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFFQTs7O0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBRUE7QUFFQTs7O0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFFQTtBQUVBOzs7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQWx0QkE7QUFBQTtBQUFBOzs7OztBQXN0QkE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///509\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(511);\nmodule.exports = __webpack_require__(10).Object.values;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvdmFsdWVzLmpzPzRlNjUiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcub2JqZWN0LnZhbHVlcycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LnZhbHVlcztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvdmFsdWVzLmpzXG4vLyBtb2R1bGUgaWQgPSA1MTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///510\n")},function(module,exports,__webpack_require__){eval("// https://github.com/tc39/proposal-object-values-entries\nvar $export = __webpack_require__(21);\nvar $values = __webpack_require__(512)(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5vYmplY3QudmFsdWVzLmpzPzdkOTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JqZWN0LXZhbHVlcy1lbnRyaWVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICR2YWx1ZXMgPSByZXF1aXJlKCcuL19vYmplY3QtdG8tYXJyYXknKShmYWxzZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0Jywge1xuICB2YWx1ZXM6IGZ1bmN0aW9uIHZhbHVlcyhpdCkge1xuICAgIHJldHVybiAkdmFsdWVzKGl0KTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcub2JqZWN0LnZhbHVlcy5qc1xuLy8gbW9kdWxlIGlkID0gNTExXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///511\n")},function(module,exports,__webpack_require__){eval("var getKeys = __webpack_require__(67);\nvar toIObject = __webpack_require__(47);\nvar isEnum = __webpack_require__(78).f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtdG8tYXJyYXkuanM/OTliNyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGlzRW51bSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKS5mO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXNFbnRyaWVzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdChpdCk7XG4gICAgdmFyIGtleXMgPSBnZXRLZXlzKE8pO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGkpIGlmIChpc0VudW0uY2FsbChPLCBrZXkgPSBrZXlzW2krK10pKSB7XG4gICAgICByZXN1bHQucHVzaChpc0VudHJpZXMgPyBba2V5LCBPW2tleV1dIDogT1trZXldKTtcbiAgICB9IHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC10by1hcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gNTEyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///512\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(42);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nexports.schemaValidation = schemaValidation;\n\nvar _tv = __webpack_require__(514);\n\nvar _tv2 = _interopRequireDefault(_tv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction schemaValidation(scheme, descriptor, value) {\n\n console.log('Scheme: ', scheme);\n\n // schema validation\n console.log('Running object validation...');\n try {\n var obj = value;\n var schema = descriptor.sourcePackage.sourceCode;\n\n // add support for schema referencing itself\n _tv2.default.addSchema(schema.id, schema);\n\n // validate\n var result = _tv2.default.validateMultiple(obj, schema);\n\n // delete error stacks to improve logging\n result.errors.forEach(function (error) {\n delete error.stack;\n });\n\n // print more details about validation if it fails or schema contains $refs\n if (!result.valid || result.missing.length > 0) {\n console.warn('Object validation ' + (result.valid ? 'succeeded, but schema contained references:' : 'failed:'), (0, _stringify2.default)(result, null, 2));\n console.debug('Object:', (0, _stringify2.default)(obj, null, 2), '\\r\\nSchema:', (0, _stringify2.default)(schema, null, 2));\n } else {\n console.log('Object validation succeeded');\n }\n } catch (e) {\n console.warn('Error during object validation:', e);\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy91dGlscy9zY2hlbWFWYWxpZGF0aW9uLmpzP2JkODkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR2NCBmcm9tICcuL3R2NCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2hlbWFWYWxpZGF0aW9uKHNjaGVtZSwgZGVzY3JpcHRvciwgdmFsdWUpIHtcblxuICBjb25zb2xlLmxvZygnU2NoZW1lOiAnLCBzY2hlbWUpO1xuXG4gIC8vIHNjaGVtYSB2YWxpZGF0aW9uXG4gIGNvbnNvbGUubG9nKCdSdW5uaW5nIG9iamVjdCB2YWxpZGF0aW9uLi4uJyk7XG4gIHRyeSB7XG4gICAgbGV0IG9iaiA9IHZhbHVlO1xuICAgIGxldCBzY2hlbWEgPSBkZXNjcmlwdG9yLnNvdXJjZVBhY2thZ2Uuc291cmNlQ29kZTtcblxuICAgIC8vIGFkZCBzdXBwb3J0IGZvciBzY2hlbWEgcmVmZXJlbmNpbmcgaXRzZWxmXG4gICAgdHY0LmFkZFNjaGVtYShzY2hlbWEuaWQsIHNjaGVtYSk7XG5cbiAgICAvLyB2YWxpZGF0ZVxuICAgIGxldCByZXN1bHQgPSB0djQudmFsaWRhdGVNdWx0aXBsZShvYmosIHNjaGVtYSk7XG5cbiAgICAvLyBkZWxldGUgZXJyb3Igc3RhY2tzIHRvIGltcHJvdmUgbG9nZ2luZ1xuICAgIHJlc3VsdC5lcnJvcnMuZm9yRWFjaCgoZXJyb3IpID0+IHtcbiAgICAgIGRlbGV0ZSBlcnJvci5zdGFjaztcbiAgICB9KTtcblxuICAgIC8vIHByaW50IG1vcmUgZGV0YWlscyBhYm91dCB2YWxpZGF0aW9uIGlmIGl0IGZhaWxzIG9yIHNjaGVtYSBjb250YWlucyAkcmVmc1xuICAgIGlmICghcmVzdWx0LnZhbGlkIHx8IChyZXN1bHQubWlzc2luZy5sZW5ndGggPiAwKSkge1xuICAgICAgY29uc29sZS53YXJuKCdPYmplY3QgdmFsaWRhdGlvbiAnICsgKHJlc3VsdC52YWxpZCA/ICdzdWNjZWVkZWQsIGJ1dCBzY2hlbWEgY29udGFpbmVkIHJlZmVyZW5jZXM6JyA6ICdmYWlsZWQ6JyksIEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMikpO1xuICAgICAgY29uc29sZS5kZWJ1ZygnT2JqZWN0OicsIEpTT04uc3RyaW5naWZ5KG9iaiwgbnVsbCwgMiksICdcXHJcXG5TY2hlbWE6JywgSlNPTi5zdHJpbmdpZnkoc2NoZW1hLCBudWxsLCAyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKCdPYmplY3QgdmFsaWRhdGlvbiBzdWNjZWVkZWQnKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLndhcm4oJ0Vycm9yIGR1cmluZyBvYmplY3QgdmFsaWRhdGlvbjonLCBlKTtcbiAgfVxuXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3V0aWxzL3NjaGVtYVZhbGlkYXRpb24uanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFFQTtBQUNBO0FBSEE7QUFDQTs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///513\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(42);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _defineProperty = __webpack_require__(200);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nvar _isFrozen = __webpack_require__(515);\n\nvar _isFrozen2 = _interopRequireDefault(_isFrozen);\n\nvar _create = __webpack_require__(203);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(79);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n Author: Geraint Luff and others\n Year: 2013\n\n This code is released into the \"public domain\" by its author(s). Anybody may use, alter and distribute the code without restriction. The author makes no guarantees, and takes no liability of any kind for use of this code.\n\n If you find a bug or make an improvement, it would be courteous to let the author know, but it is not compulsory.\n */\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FObject%2Fkeys\nif (!_keys2.default) {\n Object.keys = function () {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n hasDontEnumBug = !{ toString: null }.propertyIsEnumerable('toString'),\n dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor'],\n dontEnumsLength = dontEnums.length;\n\n return function (obj) {\n if ((typeof obj === 'undefined' ? 'undefined' : (0, _typeof3.default)(obj)) !== 'object' && typeof obj !== 'function' || obj === null) {\n throw new TypeError('Object.keys called on non-object');\n }\n\n var result = [];\n\n for (var prop in obj) {\n if (hasOwnProperty.call(obj, prop)) {\n result.push(prop);\n }\n }\n\n if (hasDontEnumBug) {\n for (var i = 0; i < dontEnumsLength; i++) {\n if (hasOwnProperty.call(obj, dontEnums[i])) {\n result.push(dontEnums[i]);\n }\n }\n }\n return result;\n };\n }();\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create\nif (!_create2.default) {\n Object.create = function () {\n function F() {}\n\n return function (o) {\n if (arguments.length !== 1) {\n throw new Error('Object.create implementation only accepts one parameter.');\n }\n F.prototype = o;\n return new F();\n };\n }();\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FArray%2FisArray\nif (!Array.isArray) {\n Array.isArray = function (vArg) {\n return Object.prototype.toString.call(vArg) === \"[object Array]\";\n };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FArray%2FindexOf\nif (!Array.prototype.indexOf) {\n Array.prototype.indexOf = function (searchElement /*, fromIndex */) {\n if (this === null) {\n throw new TypeError();\n }\n var t = Object(this);\n var len = t.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n var n = 0;\n if (arguments.length > 1) {\n n = Number(arguments[1]);\n if (n !== n) {\n // shortcut for verifying if it's NaN\n n = 0;\n } else if (n !== 0 && n !== Infinity && n !== -Infinity) {\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\n }\n }\n if (n >= len) {\n return -1;\n }\n var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);\n for (; k < len; k++) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n return -1;\n };\n}\n\n// Grungey Object.isFrozen hack\nif (!_isFrozen2.default) {\n Object.isFrozen = function (obj) {\n var key = \"tv4_test_frozen_key\";\n while (obj.hasOwnProperty(key)) {\n key += Math.random();\n }\n try {\n obj[key] = true;\n delete obj[key];\n return false;\n } catch (e) {\n return true;\n }\n };\n}\n// Based on: https://github.com/geraintluff/uri-templates, but with all the de-substitution stuff removed\n\nvar uriTemplateGlobalModifiers = {\n \"+\": true,\n \"#\": true,\n \".\": true,\n \"/\": true,\n \";\": true,\n \"?\": true,\n \"&\": true\n};\nvar uriTemplateSuffices = {\n \"*\": true\n};\n\nfunction notReallyPercentEncode(string) {\n return encodeURI(string).replace(/%25[0-9][0-9]/g, function (doubleEncoded) {\n return \"%\" + doubleEncoded.substring(3);\n });\n}\n\nfunction uriTemplateSubstitution(spec) {\n var modifier = \"\";\n if (uriTemplateGlobalModifiers[spec.charAt(0)]) {\n modifier = spec.charAt(0);\n spec = spec.substring(1);\n }\n var separator = \"\";\n var prefix = \"\";\n var shouldEscape = true;\n var showVariables = false;\n var trimEmptyString = false;\n if (modifier === '+') {\n shouldEscape = false;\n } else if (modifier === \".\") {\n prefix = \".\";\n separator = \".\";\n } else if (modifier === \"/\") {\n prefix = \"/\";\n separator = \"/\";\n } else if (modifier === '#') {\n prefix = \"#\";\n shouldEscape = false;\n } else if (modifier === ';') {\n prefix = \";\";\n separator = \";\";\n showVariables = true;\n trimEmptyString = true;\n } else if (modifier === '?') {\n prefix = \"?\";\n separator = \"&\";\n showVariables = true;\n } else if (modifier === '&') {\n prefix = \"&\";\n separator = \"&\";\n showVariables = true;\n }\n\n var varNames = [];\n var varList = spec.split(\",\");\n var varSpecs = [];\n var varSpecMap = {};\n for (var i = 0; i < varList.length; i++) {\n var varName = varList[i];\n var truncate = null;\n if (varName.indexOf(\":\") !== -1) {\n var parts = varName.split(\":\");\n varName = parts[0];\n truncate = parseInt(parts[1], 10);\n }\n var suffices = {};\n while (uriTemplateSuffices[varName.charAt(varName.length - 1)]) {\n suffices[varName.charAt(varName.length - 1)] = true;\n varName = varName.substring(0, varName.length - 1);\n }\n var varSpec = {\n truncate: truncate,\n name: varName,\n suffices: suffices\n };\n varSpecs.push(varSpec);\n varSpecMap[varName] = varSpec;\n varNames.push(varName);\n }\n var subFunction = function subFunction(valueFunction) {\n var result = \"\";\n var startIndex = 0;\n for (var i = 0; i < varSpecs.length; i++) {\n var varSpec = varSpecs[i];\n var value = valueFunction(varSpec.name);\n if (value === null || value === undefined || Array.isArray(value) && value.length === 0 || (typeof value === 'undefined' ? 'undefined' : (0, _typeof3.default)(value)) === 'object' && (0, _keys2.default)(value).length === 0) {\n startIndex++;\n continue;\n }\n if (i === startIndex) {\n result += prefix;\n } else {\n result += separator || \",\";\n }\n if (Array.isArray(value)) {\n if (showVariables) {\n result += varSpec.name + \"=\";\n }\n for (var j = 0; j < value.length; j++) {\n if (j > 0) {\n result += varSpec.suffices['*'] ? separator || \",\" : \",\";\n if (varSpec.suffices['*'] && showVariables) {\n result += varSpec.name + \"=\";\n }\n }\n result += shouldEscape ? encodeURIComponent(value[j]).replace(/!/g, \"%21\") : notReallyPercentEncode(value[j]);\n }\n } else if ((typeof value === 'undefined' ? 'undefined' : (0, _typeof3.default)(value)) === \"object\") {\n if (showVariables && !varSpec.suffices['*']) {\n result += varSpec.name + \"=\";\n }\n var first = true;\n for (var key in value) {\n if (!first) {\n result += varSpec.suffices['*'] ? separator || \",\" : \",\";\n }\n first = false;\n result += shouldEscape ? encodeURIComponent(key).replace(/!/g, \"%21\") : notReallyPercentEncode(key);\n result += varSpec.suffices['*'] ? '=' : \",\";\n result += shouldEscape ? encodeURIComponent(value[key]).replace(/!/g, \"%21\") : notReallyPercentEncode(value[key]);\n }\n } else {\n if (showVariables) {\n result += varSpec.name;\n if (!trimEmptyString || value !== \"\") {\n result += \"=\";\n }\n }\n if (varSpec.truncate != null) {\n value = value.substring(0, varSpec.truncate);\n }\n result += shouldEscape ? encodeURIComponent(value).replace(/!/g, \"%21\") : notReallyPercentEncode(value);\n }\n }\n return result;\n };\n subFunction.varNames = varNames;\n return {\n prefix: prefix,\n substitution: subFunction\n };\n}\n\nfunction UriTemplate(template) {\n if (!(this instanceof UriTemplate)) {\n return new UriTemplate(template);\n }\n var parts = template.split(\"{\");\n var textParts = [parts.shift()];\n var prefixes = [];\n var substitutions = [];\n var varNames = [];\n while (parts.length > 0) {\n var part = parts.shift();\n var spec = part.split(\"}\")[0];\n var remainder = part.substring(spec.length + 1);\n var funcs = uriTemplateSubstitution(spec);\n substitutions.push(funcs.substitution);\n prefixes.push(funcs.prefix);\n textParts.push(remainder);\n varNames = varNames.concat(funcs.substitution.varNames);\n }\n this.fill = function (valueFunction) {\n var result = textParts[0];\n for (var i = 0; i < substitutions.length; i++) {\n var substitution = substitutions[i];\n result += substitution(valueFunction);\n result += textParts[i + 1];\n }\n return result;\n };\n this.varNames = varNames;\n this.template = template;\n}\n\nUriTemplate.prototype = {\n toString: function toString() {\n return this.template;\n },\n fillFromObject: function fillFromObject(obj) {\n return this.fill(function (varName) {\n return obj[varName];\n });\n }\n};\nvar ValidatorContext = function ValidatorContext(parent, collectMultiple, errorReporter, checkRecursive, trackUnknownProperties) {\n this.missing = [];\n this.missingMap = {};\n this.formatValidators = parent ? (0, _create2.default)(parent.formatValidators) : {};\n this.schemas = parent ? (0, _create2.default)(parent.schemas) : {};\n this.collectMultiple = collectMultiple;\n this.errors = [];\n this.handleError = collectMultiple ? this.collectError : this.returnError;\n if (checkRecursive) {\n this.checkRecursive = true;\n this.scanned = [];\n this.scannedFrozen = [];\n this.scannedFrozenSchemas = [];\n this.scannedFrozenValidationErrors = [];\n this.validatedSchemasKey = 'tv4_validation_id';\n this.validationErrorsKey = 'tv4_validation_errors_id';\n }\n if (trackUnknownProperties) {\n this.trackUnknownProperties = true;\n this.knownPropertyPaths = {};\n this.unknownPropertyPaths = {};\n }\n this.errorReporter = errorReporter || defaultErrorReporter('en');\n if (typeof this.errorReporter === 'string') {\n throw new Error('debug');\n }\n this.definedKeywords = {};\n if (parent) {\n for (var key in parent.definedKeywords) {\n this.definedKeywords[key] = parent.definedKeywords[key].slice(0);\n }\n }\n};\nValidatorContext.prototype.defineKeyword = function (keyword, keywordFunction) {\n this.definedKeywords[keyword] = this.definedKeywords[keyword] || [];\n this.definedKeywords[keyword].push(keywordFunction);\n};\nValidatorContext.prototype.createError = function (code, messageParams, dataPath, schemaPath, subErrors, data, schema) {\n var error = new ValidationError(code, messageParams, dataPath, schemaPath, subErrors);\n error.message = this.errorReporter(error, data, schema);\n return error;\n};\nValidatorContext.prototype.returnError = function (error) {\n return error;\n};\nValidatorContext.prototype.collectError = function (error) {\n if (error) {\n this.errors.push(error);\n }\n return null;\n};\nValidatorContext.prototype.prefixErrors = function (startIndex, dataPath, schemaPath) {\n for (var i = startIndex; i < this.errors.length; i++) {\n this.errors[i] = this.errors[i].prefixWith(dataPath, schemaPath);\n }\n return this;\n};\nValidatorContext.prototype.banUnknownProperties = function (data, schema) {\n for (var unknownPath in this.unknownPropertyPaths) {\n var error = this.createError(ErrorCodes.UNKNOWN_PROPERTY, { path: unknownPath }, unknownPath, \"\", null, data, schema);\n var result = this.handleError(error);\n if (result) {\n return result;\n }\n }\n return null;\n};\n\nValidatorContext.prototype.addFormat = function (format, validator) {\n if ((typeof format === 'undefined' ? 'undefined' : (0, _typeof3.default)(format)) === 'object') {\n for (var key in format) {\n this.addFormat(key, format[key]);\n }\n return this;\n }\n this.formatValidators[format] = validator;\n};\nValidatorContext.prototype.resolveRefs = function (schema, urlHistory) {\n if (schema['$ref'] !== undefined) {\n urlHistory = urlHistory || {};\n if (urlHistory[schema['$ref']]) {\n return this.createError(ErrorCodes.CIRCULAR_REFERENCE, { urls: (0, _keys2.default)(urlHistory).join(', ') }, '', '', null, undefined, schema);\n }\n urlHistory[schema['$ref']] = true;\n schema = this.getSchema(schema['$ref'], urlHistory);\n }\n return schema;\n};\nValidatorContext.prototype.getSchema = function (url, urlHistory) {\n var schema;\n if (this.schemas[url] !== undefined) {\n schema = this.schemas[url];\n return this.resolveRefs(schema, urlHistory);\n }\n var baseUrl = url;\n var fragment = \"\";\n if (url.indexOf('#') !== -1) {\n fragment = url.substring(url.indexOf(\"#\") + 1);\n baseUrl = url.substring(0, url.indexOf(\"#\"));\n }\n if ((0, _typeof3.default)(this.schemas[baseUrl]) === 'object') {\n schema = this.schemas[baseUrl];\n var pointerPath = decodeURIComponent(fragment);\n if (pointerPath === \"\") {\n return this.resolveRefs(schema, urlHistory);\n } else if (pointerPath.charAt(0) !== \"/\") {\n return undefined;\n }\n var parts = pointerPath.split(\"/\").slice(1);\n for (var i = 0; i < parts.length; i++) {\n var component = parts[i].replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n if (schema[component] === undefined) {\n schema = undefined;\n break;\n }\n schema = schema[component];\n }\n if (schema !== undefined) {\n return this.resolveRefs(schema, urlHistory);\n }\n }\n if (this.missing[baseUrl] === undefined) {\n this.missing.push(baseUrl);\n this.missing[baseUrl] = baseUrl;\n this.missingMap[baseUrl] = baseUrl;\n }\n};\nValidatorContext.prototype.searchSchemas = function (schema, url) {\n if (Array.isArray(schema)) {\n for (var i = 0; i < schema.length; i++) {\n this.searchSchemas(schema[i], url);\n }\n } else if (schema && (typeof schema === 'undefined' ? 'undefined' : (0, _typeof3.default)(schema)) === \"object\") {\n if (typeof schema.id === \"string\") {\n if (isTrustedUrl(url, schema.id)) {\n if (this.schemas[schema.id] === undefined) {\n this.schemas[schema.id] = schema;\n }\n }\n }\n for (var key in schema) {\n if (key !== \"enum\") {\n if ((0, _typeof3.default)(schema[key]) === \"object\") {\n this.searchSchemas(schema[key], url);\n } else if (key === \"$ref\") {\n var uri = getDocumentUri(schema[key]);\n if (uri && this.schemas[uri] === undefined && this.missingMap[uri] === undefined) {\n this.missingMap[uri] = uri;\n }\n }\n }\n }\n }\n};\nValidatorContext.prototype.addSchema = function (url, schema) {\n //overload\n if (typeof url !== 'string' || typeof schema === 'undefined') {\n if ((typeof url === 'undefined' ? 'undefined' : (0, _typeof3.default)(url)) === 'object' && typeof url.id === 'string') {\n schema = url;\n url = schema.id;\n } else {\n return;\n }\n }\n if (url === getDocumentUri(url) + \"#\") {\n // Remove empty fragment\n url = getDocumentUri(url);\n }\n this.schemas[url] = schema;\n delete this.missingMap[url];\n normSchema(schema, url);\n this.searchSchemas(schema, url);\n};\n\nValidatorContext.prototype.getSchemaMap = function () {\n var map = {};\n for (var key in this.schemas) {\n map[key] = this.schemas[key];\n }\n return map;\n};\n\nValidatorContext.prototype.getSchemaUris = function (filterRegExp) {\n var list = [];\n for (var key in this.schemas) {\n if (!filterRegExp || filterRegExp.test(key)) {\n list.push(key);\n }\n }\n return list;\n};\n\nValidatorContext.prototype.getMissingUris = function (filterRegExp) {\n var list = [];\n for (var key in this.missingMap) {\n if (!filterRegExp || filterRegExp.test(key)) {\n list.push(key);\n }\n }\n return list;\n};\n\nValidatorContext.prototype.dropSchemas = function () {\n this.schemas = {};\n this.reset();\n};\nValidatorContext.prototype.reset = function () {\n this.missing = [];\n this.missingMap = {};\n this.errors = [];\n};\n\nValidatorContext.prototype.validateAll = function (data, schema, dataPathParts, schemaPathParts, dataPointerPath) {\n var topLevel;\n schema = this.resolveRefs(schema);\n if (!schema) {\n return null;\n } else if (schema instanceof ValidationError) {\n this.errors.push(schema);\n return schema;\n }\n\n var startErrorCount = this.errors.length;\n var frozenIndex,\n scannedFrozenSchemaIndex = null,\n scannedSchemasIndex = null;\n if (this.checkRecursive && data && (typeof data === 'undefined' ? 'undefined' : (0, _typeof3.default)(data)) === 'object') {\n topLevel = !this.scanned.length;\n if (data[this.validatedSchemasKey]) {\n var schemaIndex = data[this.validatedSchemasKey].indexOf(schema);\n if (schemaIndex !== -1) {\n this.errors = this.errors.concat(data[this.validationErrorsKey][schemaIndex]);\n return null;\n }\n }\n if ((0, _isFrozen2.default)(data)) {\n frozenIndex = this.scannedFrozen.indexOf(data);\n if (frozenIndex !== -1) {\n var frozenSchemaIndex = this.scannedFrozenSchemas[frozenIndex].indexOf(schema);\n if (frozenSchemaIndex !== -1) {\n this.errors = this.errors.concat(this.scannedFrozenValidationErrors[frozenIndex][frozenSchemaIndex]);\n return null;\n }\n }\n }\n this.scanned.push(data);\n if ((0, _isFrozen2.default)(data)) {\n if (frozenIndex === -1) {\n frozenIndex = this.scannedFrozen.length;\n this.scannedFrozen.push(data);\n this.scannedFrozenSchemas.push([]);\n }\n scannedFrozenSchemaIndex = this.scannedFrozenSchemas[frozenIndex].length;\n this.scannedFrozenSchemas[frozenIndex][scannedFrozenSchemaIndex] = schema;\n this.scannedFrozenValidationErrors[frozenIndex][scannedFrozenSchemaIndex] = [];\n } else {\n if (!data[this.validatedSchemasKey]) {\n try {\n (0, _defineProperty2.default)(data, this.validatedSchemasKey, {\n value: [],\n configurable: true\n });\n (0, _defineProperty2.default)(data, this.validationErrorsKey, {\n value: [],\n configurable: true\n });\n } catch (e) {\n //IE 7/8 workaround\n data[this.validatedSchemasKey] = [];\n data[this.validationErrorsKey] = [];\n }\n }\n scannedSchemasIndex = data[this.validatedSchemasKey].length;\n data[this.validatedSchemasKey][scannedSchemasIndex] = schema;\n data[this.validationErrorsKey][scannedSchemasIndex] = [];\n }\n }\n\n var errorCount = this.errors.length;\n var error = this.validateBasic(data, schema, dataPointerPath) || this.validateNumeric(data, schema, dataPointerPath) || this.validateString(data, schema, dataPointerPath) || this.validateArray(data, schema, dataPointerPath) || this.validateObject(data, schema, dataPointerPath) || this.validateCombinations(data, schema, dataPointerPath) || this.validateHypermedia(data, schema, dataPointerPath) || this.validateFormat(data, schema, dataPointerPath) || this.validateDefinedKeywords(data, schema, dataPointerPath) || null;\n\n if (topLevel) {\n while (this.scanned.length) {\n var item = this.scanned.pop();\n delete item[this.validatedSchemasKey];\n }\n this.scannedFrozen = [];\n this.scannedFrozenSchemas = [];\n }\n\n if (error || errorCount !== this.errors.length) {\n while (dataPathParts && dataPathParts.length || schemaPathParts && schemaPathParts.length) {\n var dataPart = dataPathParts && dataPathParts.length ? \"\" + dataPathParts.pop() : null;\n var schemaPart = schemaPathParts && schemaPathParts.length ? \"\" + schemaPathParts.pop() : null;\n if (error) {\n error = error.prefixWith(dataPart, schemaPart);\n }\n this.prefixErrors(errorCount, dataPart, schemaPart);\n }\n }\n\n if (scannedFrozenSchemaIndex !== null) {\n this.scannedFrozenValidationErrors[frozenIndex][scannedFrozenSchemaIndex] = this.errors.slice(startErrorCount);\n } else if (scannedSchemasIndex !== null) {\n data[this.validationErrorsKey][scannedSchemasIndex] = this.errors.slice(startErrorCount);\n }\n\n return this.handleError(error);\n};\nValidatorContext.prototype.validateFormat = function (data, schema) {\n if (typeof schema.format !== 'string' || !this.formatValidators[schema.format]) {\n return null;\n }\n var errorMessage = this.formatValidators[schema.format].call(null, data, schema);\n if (typeof errorMessage === 'string' || typeof errorMessage === 'number') {\n return this.createError(ErrorCodes.FORMAT_CUSTOM, { message: errorMessage }, '', '/format', null, data, schema);\n } else if (errorMessage && (typeof errorMessage === 'undefined' ? 'undefined' : (0, _typeof3.default)(errorMessage)) === 'object') {\n return this.createError(ErrorCodes.FORMAT_CUSTOM, { message: errorMessage.message || \"?\" }, errorMessage.dataPath || '', errorMessage.schemaPath || \"/format\", null, data, schema);\n }\n return null;\n};\nValidatorContext.prototype.validateDefinedKeywords = function (data, schema, dataPointerPath) {\n for (var key in this.definedKeywords) {\n if (typeof schema[key] === 'undefined') {\n continue;\n }\n var validationFunctions = this.definedKeywords[key];\n for (var i = 0; i < validationFunctions.length; i++) {\n var func = validationFunctions[i];\n var result = func(data, schema[key], schema, dataPointerPath);\n if (typeof result === 'string' || typeof result === 'number') {\n return this.createError(ErrorCodes.KEYWORD_CUSTOM, {\n key: key,\n message: result\n }, '', '', null, data, schema).prefixWith(null, key);\n } else if (result && (typeof result === 'undefined' ? 'undefined' : (0, _typeof3.default)(result)) === 'object') {\n var code = result.code;\n if (typeof code === 'string') {\n if (!ErrorCodes[code]) {\n throw new Error('Undefined error code (use defineError): ' + code);\n }\n code = ErrorCodes[code];\n } else if (typeof code !== 'number') {\n code = ErrorCodes.KEYWORD_CUSTOM;\n }\n var messageParams = (0, _typeof3.default)(result.message) === 'object' ? result.message : {\n key: key,\n message: result.message || \"?\"\n };\n var schemaPath = result.schemaPath || \"/\" + key.replace(/~/g, '~0').replace(/\\//g, '~1');\n return this.createError(code, messageParams, result.dataPath || null, schemaPath, null, data, schema);\n }\n }\n }\n return null;\n};\n\nfunction recursiveCompare(A, B) {\n if (A === B) {\n return true;\n }\n if (A && B && (typeof A === 'undefined' ? 'undefined' : (0, _typeof3.default)(A)) === \"object\" && (typeof B === 'undefined' ? 'undefined' : (0, _typeof3.default)(B)) === \"object\") {\n if (Array.isArray(A) !== Array.isArray(B)) {\n return false;\n } else if (Array.isArray(A)) {\n if (A.length !== B.length) {\n return false;\n }\n for (var i = 0; i < A.length; i++) {\n if (!recursiveCompare(A[i], B[i])) {\n return false;\n }\n }\n } else {\n var key;\n for (key in A) {\n if (B[key] === undefined && A[key] !== undefined) {\n return false;\n }\n }\n for (key in B) {\n if (A[key] === undefined && B[key] !== undefined) {\n return false;\n }\n }\n for (key in A) {\n if (!recursiveCompare(A[key], B[key])) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n}\n\nValidatorContext.prototype.validateBasic = function validateBasic(data, schema, dataPointerPath) {\n var error;\n if (error = this.validateType(data, schema, dataPointerPath)) {\n return error.prefixWith(null, \"type\");\n }\n if (error = this.validateEnum(data, schema, dataPointerPath)) {\n return error.prefixWith(null, \"type\");\n }\n return null;\n};\n\nValidatorContext.prototype.validateType = function validateType(data, schema) {\n if (schema.type === undefined) {\n return null;\n }\n var dataType = typeof data === 'undefined' ? 'undefined' : (0, _typeof3.default)(data);\n if (data === null) {\n dataType = \"null\";\n } else if (Array.isArray(data)) {\n dataType = \"array\";\n }\n var allowedTypes = schema.type;\n if (!Array.isArray(allowedTypes)) {\n allowedTypes = [allowedTypes];\n }\n\n for (var i = 0; i < allowedTypes.length; i++) {\n var type = allowedTypes[i];\n if (type === dataType || type === \"integer\" && dataType === \"number\" && data % 1 === 0) {\n return null;\n }\n }\n return this.createError(ErrorCodes.INVALID_TYPE, {\n type: dataType,\n expected: allowedTypes.join(\"/\")\n }, '', '', null, data, schema);\n};\n\nValidatorContext.prototype.validateEnum = function validateEnum(data, schema) {\n if (schema[\"enum\"] === undefined) {\n return null;\n }\n for (var i = 0; i < schema[\"enum\"].length; i++) {\n var enumVal = schema[\"enum\"][i];\n if (recursiveCompare(data, enumVal)) {\n return null;\n }\n }\n return this.createError(ErrorCodes.ENUM_MISMATCH, { value: typeof JSON !== 'undefined' ? (0, _stringify2.default)(data) : data }, '', '', null, data, schema);\n};\n\nValidatorContext.prototype.validateNumeric = function validateNumeric(data, schema, dataPointerPath) {\n return this.validateMultipleOf(data, schema, dataPointerPath) || this.validateMinMax(data, schema, dataPointerPath) || this.validateNaN(data, schema, dataPointerPath) || null;\n};\n\nvar CLOSE_ENOUGH_LOW = Math.pow(2, -51);\nvar CLOSE_ENOUGH_HIGH = 1 - CLOSE_ENOUGH_LOW;\nValidatorContext.prototype.validateMultipleOf = function validateMultipleOf(data, schema) {\n var multipleOf = schema.multipleOf || schema.divisibleBy;\n if (multipleOf === undefined) {\n return null;\n }\n if (typeof data === \"number\") {\n var remainder = data / multipleOf % 1;\n if (remainder >= CLOSE_ENOUGH_LOW && remainder < CLOSE_ENOUGH_HIGH) {\n return this.createError(ErrorCodes.NUMBER_MULTIPLE_OF, {\n value: data,\n multipleOf: multipleOf\n }, '', '', null, data, schema);\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateMinMax = function validateMinMax(data, schema) {\n if (typeof data !== \"number\") {\n return null;\n }\n if (schema.minimum !== undefined) {\n if (data < schema.minimum) {\n return this.createError(ErrorCodes.NUMBER_MINIMUM, {\n value: data,\n minimum: schema.minimum\n }, '', '/minimum', null, data, schema);\n }\n if (schema.exclusiveMinimum && data === schema.minimum) {\n return this.createError(ErrorCodes.NUMBER_MINIMUM_EXCLUSIVE, {\n value: data,\n minimum: schema.minimum\n }, '', '/exclusiveMinimum', null, data, schema);\n }\n }\n if (schema.maximum !== undefined) {\n if (data > schema.maximum) {\n return this.createError(ErrorCodes.NUMBER_MAXIMUM, {\n value: data,\n maximum: schema.maximum\n }, '', '/maximum', null, data, schema);\n }\n if (schema.exclusiveMaximum && data === schema.maximum) {\n return this.createError(ErrorCodes.NUMBER_MAXIMUM_EXCLUSIVE, {\n value: data,\n maximum: schema.maximum\n }, '', '/exclusiveMaximum', null, data, schema);\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateNaN = function validateNaN(data, schema) {\n if (typeof data !== \"number\") {\n return null;\n }\n if (isNaN(data) === true || data === Infinity || data === -Infinity) {\n return this.createError(ErrorCodes.NUMBER_NOT_A_NUMBER, { value: data }, '', '/type', null, data, schema);\n }\n return null;\n};\n\nValidatorContext.prototype.validateString = function validateString(data, schema, dataPointerPath) {\n return this.validateStringLength(data, schema, dataPointerPath) || this.validateStringPattern(data, schema, dataPointerPath) || null;\n};\n\nValidatorContext.prototype.validateStringLength = function validateStringLength(data, schema) {\n if (typeof data !== \"string\") {\n return null;\n }\n if (schema.minLength !== undefined) {\n if (data.length < schema.minLength) {\n return this.createError(ErrorCodes.STRING_LENGTH_SHORT, {\n length: data.length,\n minimum: schema.minLength\n }, '', '/minLength', null, data, schema);\n }\n }\n if (schema.maxLength !== undefined) {\n if (data.length > schema.maxLength) {\n return this.createError(ErrorCodes.STRING_LENGTH_LONG, {\n length: data.length,\n maximum: schema.maxLength\n }, '', '/maxLength', null, data, schema);\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateStringPattern = function validateStringPattern(data, schema) {\n if (typeof data !== \"string\" || typeof schema.pattern !== \"string\" && !(schema.pattern instanceof RegExp)) {\n return null;\n }\n var regexp;\n if (schema.pattern instanceof RegExp) {\n regexp = schema.pattern;\n } else {\n var body,\n flags = '';\n // Check for regular expression literals\n // @see http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.5\n var literal = schema.pattern.match(/^\\/(.+)\\/([img]*)$/);\n if (literal) {\n body = literal[1];\n flags = literal[2];\n } else {\n body = schema.pattern;\n }\n regexp = new RegExp(body, flags);\n }\n if (!regexp.test(data)) {\n return this.createError(ErrorCodes.STRING_PATTERN, { pattern: schema.pattern }, '', '/pattern', null, data, schema);\n }\n return null;\n};\n\nValidatorContext.prototype.validateArray = function validateArray(data, schema, dataPointerPath) {\n if (!Array.isArray(data)) {\n return null;\n }\n return this.validateArrayLength(data, schema, dataPointerPath) || this.validateArrayUniqueItems(data, schema, dataPointerPath) || this.validateArrayItems(data, schema, dataPointerPath) || null;\n};\n\nValidatorContext.prototype.validateArrayLength = function validateArrayLength(data, schema) {\n var error;\n if (schema.minItems !== undefined) {\n if (data.length < schema.minItems) {\n error = this.createError(ErrorCodes.ARRAY_LENGTH_SHORT, {\n length: data.length,\n minimum: schema.minItems\n }, '', '/minItems', null, data, schema);\n if (this.handleError(error)) {\n return error;\n }\n }\n }\n if (schema.maxItems !== undefined) {\n if (data.length > schema.maxItems) {\n error = this.createError(ErrorCodes.ARRAY_LENGTH_LONG, {\n length: data.length,\n maximum: schema.maxItems\n }, '', '/maxItems', null, data, schema);\n if (this.handleError(error)) {\n return error;\n }\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateArrayUniqueItems = function validateArrayUniqueItems(data, schema) {\n if (schema.uniqueItems) {\n for (var i = 0; i < data.length; i++) {\n for (var j = i + 1; j < data.length; j++) {\n if (recursiveCompare(data[i], data[j])) {\n var error = this.createError(ErrorCodes.ARRAY_UNIQUE, {\n match1: i,\n match2: j\n }, '', '/uniqueItems', null, data, schema);\n if (this.handleError(error)) {\n return error;\n }\n }\n }\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateArrayItems = function validateArrayItems(data, schema, dataPointerPath) {\n if (schema.items === undefined) {\n return null;\n }\n var error, i;\n if (Array.isArray(schema.items)) {\n for (i = 0; i < data.length; i++) {\n if (i < schema.items.length) {\n if (error = this.validateAll(data[i], schema.items[i], [i], [\"items\", i], dataPointerPath + \"/\" + i)) {\n return error;\n }\n } else if (schema.additionalItems !== undefined) {\n if (typeof schema.additionalItems === \"boolean\") {\n if (!schema.additionalItems) {\n error = this.createError(ErrorCodes.ARRAY_ADDITIONAL_ITEMS, {}, '/' + i, '/additionalItems', null, data, schema);\n if (this.handleError(error)) {\n return error;\n }\n }\n } else if (error = this.validateAll(data[i], schema.additionalItems, [i], [\"additionalItems\"], dataPointerPath + \"/\" + i)) {\n return error;\n }\n }\n }\n } else {\n for (i = 0; i < data.length; i++) {\n if (error = this.validateAll(data[i], schema.items, [i], [\"items\"], dataPointerPath + \"/\" + i)) {\n return error;\n }\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateObject = function validateObject(data, schema, dataPointerPath) {\n if ((typeof data === 'undefined' ? 'undefined' : (0, _typeof3.default)(data)) !== \"object\" || data === null || Array.isArray(data)) {\n return null;\n }\n return this.validateObjectMinMaxProperties(data, schema, dataPointerPath) || this.validateObjectRequiredProperties(data, schema, dataPointerPath) || this.validateObjectProperties(data, schema, dataPointerPath) || this.validateObjectDependencies(data, schema, dataPointerPath) || null;\n};\n\nValidatorContext.prototype.validateObjectMinMaxProperties = function validateObjectMinMaxProperties(data, schema) {\n var keys = (0, _keys2.default)(data);\n var error;\n if (schema.minProperties !== undefined) {\n if (keys.length < schema.minProperties) {\n error = this.createError(ErrorCodes.OBJECT_PROPERTIES_MINIMUM, {\n propertyCount: keys.length,\n minimum: schema.minProperties\n }, '', '/minProperties', null, data, schema);\n if (this.handleError(error)) {\n return error;\n }\n }\n }\n if (schema.maxProperties !== undefined) {\n if (keys.length > schema.maxProperties) {\n error = this.createError(ErrorCodes.OBJECT_PROPERTIES_MAXIMUM, {\n propertyCount: keys.length,\n maximum: schema.maxProperties\n }, '', '/maxProperties', null, data, schema);\n if (this.handleError(error)) {\n return error;\n }\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateObjectRequiredProperties = function validateObjectRequiredProperties(data, schema) {\n if (schema.required !== undefined) {\n for (var i = 0; i < schema.required.length; i++) {\n var key = schema.required[i];\n if (data[key] === undefined) {\n var error = this.createError(ErrorCodes.OBJECT_REQUIRED, { key: key }, '', '/required/' + i, null, data, schema);\n if (this.handleError(error)) {\n return error;\n }\n }\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateObjectProperties = function validateObjectProperties(data, schema, dataPointerPath) {\n var error;\n for (var key in data) {\n var keyPointerPath = dataPointerPath + \"/\" + key.replace(/~/g, '~0').replace(/\\//g, '~1');\n var foundMatch = false;\n if (schema.properties !== undefined && schema.properties[key] !== undefined) {\n foundMatch = true;\n if (error = this.validateAll(data[key], schema.properties[key], [key], [\"properties\", key], keyPointerPath)) {\n return error;\n }\n }\n if (schema.patternProperties !== undefined) {\n for (var patternKey in schema.patternProperties) {\n var regexp = new RegExp(patternKey);\n if (regexp.test(key)) {\n foundMatch = true;\n if (error = this.validateAll(data[key], schema.patternProperties[patternKey], [key], [\"patternProperties\", patternKey], keyPointerPath)) {\n return error;\n }\n }\n }\n }\n if (!foundMatch) {\n if (schema.additionalProperties !== undefined) {\n if (this.trackUnknownProperties) {\n this.knownPropertyPaths[keyPointerPath] = true;\n delete this.unknownPropertyPaths[keyPointerPath];\n }\n if (typeof schema.additionalProperties === \"boolean\") {\n if (!schema.additionalProperties) {\n error = this.createError(ErrorCodes.OBJECT_ADDITIONAL_PROPERTIES, { key: key }, '', '/additionalProperties', null, data, schema).prefixWith(key, null);\n if (this.handleError(error)) {\n return error;\n }\n }\n } else {\n if (error = this.validateAll(data[key], schema.additionalProperties, [key], [\"additionalProperties\"], keyPointerPath)) {\n return error;\n }\n }\n } else if (this.trackUnknownProperties && !this.knownPropertyPaths[keyPointerPath]) {\n this.unknownPropertyPaths[keyPointerPath] = true;\n }\n } else if (this.trackUnknownProperties) {\n this.knownPropertyPaths[keyPointerPath] = true;\n delete this.unknownPropertyPaths[keyPointerPath];\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateObjectDependencies = function validateObjectDependencies(data, schema, dataPointerPath) {\n var error;\n if (schema.dependencies !== undefined) {\n for (var depKey in schema.dependencies) {\n if (data[depKey] !== undefined) {\n var dep = schema.dependencies[depKey];\n if (typeof dep === \"string\") {\n if (data[dep] === undefined) {\n error = this.createError(ErrorCodes.OBJECT_DEPENDENCY_KEY, {\n key: depKey,\n missing: dep\n }, '', '', null, data, schema).prefixWith(null, depKey).prefixWith(null, \"dependencies\");\n if (this.handleError(error)) {\n return error;\n }\n }\n } else if (Array.isArray(dep)) {\n for (var i = 0; i < dep.length; i++) {\n var requiredKey = dep[i];\n if (data[requiredKey] === undefined) {\n error = this.createError(ErrorCodes.OBJECT_DEPENDENCY_KEY, {\n key: depKey,\n missing: requiredKey\n }, '', '/' + i, null, data, schema).prefixWith(null, depKey).prefixWith(null, \"dependencies\");\n if (this.handleError(error)) {\n return error;\n }\n }\n }\n } else {\n if (error = this.validateAll(data, dep, [], [\"dependencies\", depKey], dataPointerPath)) {\n return error;\n }\n }\n }\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateCombinations = function validateCombinations(data, schema, dataPointerPath) {\n return this.validateAllOf(data, schema, dataPointerPath) || this.validateAnyOf(data, schema, dataPointerPath) || this.validateOneOf(data, schema, dataPointerPath) || this.validateNot(data, schema, dataPointerPath) || null;\n};\n\nValidatorContext.prototype.validateAllOf = function validateAllOf(data, schema, dataPointerPath) {\n if (schema.allOf === undefined) {\n return null;\n }\n var error;\n for (var i = 0; i < schema.allOf.length; i++) {\n var subSchema = schema.allOf[i];\n if (error = this.validateAll(data, subSchema, [], [\"allOf\", i], dataPointerPath)) {\n return error;\n }\n }\n return null;\n};\n\nValidatorContext.prototype.validateAnyOf = function validateAnyOf(data, schema, dataPointerPath) {\n if (schema.anyOf === undefined) {\n return null;\n }\n var errors = [];\n var startErrorCount = this.errors.length;\n var oldUnknownPropertyPaths, oldKnownPropertyPaths;\n if (this.trackUnknownProperties) {\n oldUnknownPropertyPaths = this.unknownPropertyPaths;\n oldKnownPropertyPaths = this.knownPropertyPaths;\n }\n var errorAtEnd = true;\n for (var i = 0; i < schema.anyOf.length; i++) {\n if (this.trackUnknownProperties) {\n this.unknownPropertyPaths = {};\n this.knownPropertyPaths = {};\n }\n var subSchema = schema.anyOf[i];\n\n var errorCount = this.errors.length;\n var error = this.validateAll(data, subSchema, [], [\"anyOf\", i], dataPointerPath);\n\n if (error === null && errorCount === this.errors.length) {\n this.errors = this.errors.slice(0, startErrorCount);\n\n if (this.trackUnknownProperties) {\n for (var knownKey in this.knownPropertyPaths) {\n oldKnownPropertyPaths[knownKey] = true;\n delete oldUnknownPropertyPaths[knownKey];\n }\n for (var unknownKey in this.unknownPropertyPaths) {\n if (!oldKnownPropertyPaths[unknownKey]) {\n oldUnknownPropertyPaths[unknownKey] = true;\n }\n }\n // We need to continue looping so we catch all the property definitions, but we don't want to return an error\n errorAtEnd = false;\n continue;\n }\n\n return null;\n }\n if (error) {\n errors.push(error.prefixWith(null, \"\" + i).prefixWith(null, \"anyOf\"));\n }\n }\n if (this.trackUnknownProperties) {\n this.unknownPropertyPaths = oldUnknownPropertyPaths;\n this.knownPropertyPaths = oldKnownPropertyPaths;\n }\n if (errorAtEnd) {\n errors = errors.concat(this.errors.slice(startErrorCount));\n this.errors = this.errors.slice(0, startErrorCount);\n return this.createError(ErrorCodes.ANY_OF_MISSING, {}, \"\", \"/anyOf\", errors, data, schema);\n }\n};\n\nValidatorContext.prototype.validateOneOf = function validateOneOf(data, schema, dataPointerPath) {\n if (schema.oneOf === undefined) {\n return null;\n }\n var validIndex = null;\n var errors = [];\n var startErrorCount = this.errors.length;\n var oldUnknownPropertyPaths, oldKnownPropertyPaths;\n if (this.trackUnknownProperties) {\n oldUnknownPropertyPaths = this.unknownPropertyPaths;\n oldKnownPropertyPaths = this.knownPropertyPaths;\n }\n for (var i = 0; i < schema.oneOf.length; i++) {\n if (this.trackUnknownProperties) {\n this.unknownPropertyPaths = {};\n this.knownPropertyPaths = {};\n }\n var subSchema = schema.oneOf[i];\n\n var errorCount = this.errors.length;\n var error = this.validateAll(data, subSchema, [], [\"oneOf\", i], dataPointerPath);\n\n if (error === null && errorCount === this.errors.length) {\n if (validIndex === null) {\n validIndex = i;\n } else {\n this.errors = this.errors.slice(0, startErrorCount);\n return this.createError(ErrorCodes.ONE_OF_MULTIPLE, {\n index1: validIndex,\n index2: i\n }, \"\", \"/oneOf\", null, data, schema);\n }\n if (this.trackUnknownProperties) {\n for (var knownKey in this.knownPropertyPaths) {\n oldKnownPropertyPaths[knownKey] = true;\n delete oldUnknownPropertyPaths[knownKey];\n }\n for (var unknownKey in this.unknownPropertyPaths) {\n if (!oldKnownPropertyPaths[unknownKey]) {\n oldUnknownPropertyPaths[unknownKey] = true;\n }\n }\n }\n } else if (error) {\n errors.push(error);\n }\n }\n if (this.trackUnknownProperties) {\n this.unknownPropertyPaths = oldUnknownPropertyPaths;\n this.knownPropertyPaths = oldKnownPropertyPaths;\n }\n if (validIndex === null) {\n errors = errors.concat(this.errors.slice(startErrorCount));\n this.errors = this.errors.slice(0, startErrorCount);\n return this.createError(ErrorCodes.ONE_OF_MISSING, {}, \"\", \"/oneOf\", errors, data, schema);\n } else {\n this.errors = this.errors.slice(0, startErrorCount);\n }\n return null;\n};\n\nValidatorContext.prototype.validateNot = function validateNot(data, schema, dataPointerPath) {\n if (schema.not === undefined) {\n return null;\n }\n var oldErrorCount = this.errors.length;\n var oldUnknownPropertyPaths, oldKnownPropertyPaths;\n if (this.trackUnknownProperties) {\n oldUnknownPropertyPaths = this.unknownPropertyPaths;\n oldKnownPropertyPaths = this.knownPropertyPaths;\n this.unknownPropertyPaths = {};\n this.knownPropertyPaths = {};\n }\n var error = this.validateAll(data, schema.not, null, null, dataPointerPath);\n var notErrors = this.errors.slice(oldErrorCount);\n this.errors = this.errors.slice(0, oldErrorCount);\n if (this.trackUnknownProperties) {\n this.unknownPropertyPaths = oldUnknownPropertyPaths;\n this.knownPropertyPaths = oldKnownPropertyPaths;\n }\n if (error === null && notErrors.length === 0) {\n return this.createError(ErrorCodes.NOT_PASSED, {}, \"\", \"/not\", null, data, schema);\n }\n return null;\n};\n\nValidatorContext.prototype.validateHypermedia = function validateCombinations(data, schema, dataPointerPath) {\n if (!schema.links) {\n return null;\n }\n var error;\n for (var i = 0; i < schema.links.length; i++) {\n var ldo = schema.links[i];\n if (ldo.rel === \"describedby\") {\n var template = new UriTemplate(ldo.href);\n var allPresent = true;\n for (var j = 0; j < template.varNames.length; j++) {\n if (!(template.varNames[j] in data)) {\n allPresent = false;\n break;\n }\n }\n if (allPresent) {\n var schemaUrl = template.fillFromObject(data);\n var subSchema = { \"$ref\": schemaUrl };\n if (error = this.validateAll(data, subSchema, [], [\"links\", i], dataPointerPath)) {\n return error;\n }\n }\n }\n }\n};\n\n// parseURI() and resolveUrl() are from https://gist.github.com/1088850\n// - released as public domain by author (\"Yaffle\") - see comments on gist\n\nfunction parseURI(url) {\n var m = String(url).replace(/^\\s+|\\s+$/g, '').match(/^([^:\\/?#]+:)?(\\/\\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\\/?#]*)(?::(\\d*))?))?([^?#]*)(\\?[^#]*)?(#[\\s\\S]*)?/);\n // authority = '//' + user + ':' + pass '@' + hostname + ':' port\n return m ? {\n href: m[0] || '',\n protocol: m[1] || '',\n authority: m[2] || '',\n host: m[3] || '',\n hostname: m[4] || '',\n port: m[5] || '',\n pathname: m[6] || '',\n search: m[7] || '',\n hash: m[8] || ''\n } : null;\n}\n\nfunction resolveUrl(base, href) {\n // RFC 3986\n\n function removeDotSegments(input) {\n var output = [];\n input.replace(/^(\\.\\.?(\\/|$))+/, '').replace(/\\/(\\.(\\/|$))+/g, '/').replace(/\\/\\.\\.$/, '/../').replace(/\\/?[^\\/]*/g, function (p) {\n if (p === '/..') {\n output.pop();\n } else {\n output.push(p);\n }\n });\n return output.join('').replace(/^\\//, input.charAt(0) === '/' ? '/' : '');\n }\n\n href = parseURI(href || '');\n base = parseURI(base || '');\n\n return !href || !base ? null : (href.protocol || base.protocol) + (href.protocol || href.authority ? href.authority : base.authority) + removeDotSegments(href.protocol || href.authority || href.pathname.charAt(0) === '/' ? href.pathname : href.pathname ? (base.authority && !base.pathname ? '/' : '') + base.pathname.slice(0, base.pathname.lastIndexOf('/') + 1) + href.pathname : base.pathname) + (href.protocol || href.authority || href.pathname ? href.search : href.search || base.search) + href.hash;\n}\n\nfunction getDocumentUri(uri) {\n return uri.split('#')[0];\n}\n\nfunction normSchema(schema, baseUri) {\n if (schema && (typeof schema === 'undefined' ? 'undefined' : (0, _typeof3.default)(schema)) === \"object\") {\n if (baseUri === undefined) {\n baseUri = schema.id;\n } else if (typeof schema.id === \"string\") {\n baseUri = resolveUrl(baseUri, schema.id);\n schema.id = baseUri;\n }\n if (Array.isArray(schema)) {\n for (var i = 0; i < schema.length; i++) {\n normSchema(schema[i], baseUri);\n }\n } else {\n if (typeof schema['$ref'] === \"string\") {\n schema['$ref'] = resolveUrl(baseUri, schema['$ref']);\n }\n for (var key in schema) {\n if (key !== \"enum\") {\n normSchema(schema[key], baseUri);\n }\n }\n }\n }\n}\n\nfunction defaultErrorReporter(language) {\n language = language || 'en';\n\n var errorMessages = languages[language];\n\n return function (error) {\n var messageTemplate = errorMessages[error.code] || ErrorMessagesDefault[error.code];\n if (typeof messageTemplate !== 'string') {\n return \"Unknown error code \" + error.code + \": \" + (0, _stringify2.default)(error.messageParams);\n }\n var messageParams = error.params;\n // Adapted from Crockford's supplant()\n return messageTemplate.replace(/\\{([^{}]*)\\}/g, function (whole, varName) {\n var subValue = messageParams[varName];\n return typeof subValue === 'string' || typeof subValue === 'number' ? subValue : whole;\n });\n };\n}\n\nvar ErrorCodes = {\n INVALID_TYPE: 0,\n ENUM_MISMATCH: 1,\n ANY_OF_MISSING: 10,\n ONE_OF_MISSING: 11,\n ONE_OF_MULTIPLE: 12,\n NOT_PASSED: 13,\n // Numeric errors\n NUMBER_MULTIPLE_OF: 100,\n NUMBER_MINIMUM: 101,\n NUMBER_MINIMUM_EXCLUSIVE: 102,\n NUMBER_MAXIMUM: 103,\n NUMBER_MAXIMUM_EXCLUSIVE: 104,\n NUMBER_NOT_A_NUMBER: 105,\n // String errors\n STRING_LENGTH_SHORT: 200,\n STRING_LENGTH_LONG: 201,\n STRING_PATTERN: 202,\n // Object errors\n OBJECT_PROPERTIES_MINIMUM: 300,\n OBJECT_PROPERTIES_MAXIMUM: 301,\n OBJECT_REQUIRED: 302,\n OBJECT_ADDITIONAL_PROPERTIES: 303,\n OBJECT_DEPENDENCY_KEY: 304,\n // Array errors\n ARRAY_LENGTH_SHORT: 400,\n ARRAY_LENGTH_LONG: 401,\n ARRAY_UNIQUE: 402,\n ARRAY_ADDITIONAL_ITEMS: 403,\n // Custom/user-defined errors\n FORMAT_CUSTOM: 500,\n KEYWORD_CUSTOM: 501,\n // Schema structure\n CIRCULAR_REFERENCE: 600,\n // Non-standard validation options\n UNKNOWN_PROPERTY: 1000\n};\nvar ErrorCodeLookup = {};\nfor (var key in ErrorCodes) {\n ErrorCodeLookup[ErrorCodes[key]] = key;\n}\nvar ErrorMessagesDefault = {\n INVALID_TYPE: \"Invalid type: {type} (expected {expected})\",\n ENUM_MISMATCH: \"No enum match for: {value}\",\n ANY_OF_MISSING: \"Data does not match any schemas from \\\"anyOf\\\"\",\n ONE_OF_MISSING: \"Data does not match any schemas from \\\"oneOf\\\"\",\n ONE_OF_MULTIPLE: \"Data is valid against more than one schema from \\\"oneOf\\\": indices {index1} and {index2}\",\n NOT_PASSED: \"Data matches schema from \\\"not\\\"\",\n // Numeric errors\n NUMBER_MULTIPLE_OF: \"Value {value} is not a multiple of {multipleOf}\",\n NUMBER_MINIMUM: \"Value {value} is less than minimum {minimum}\",\n NUMBER_MINIMUM_EXCLUSIVE: \"Value {value} is equal to exclusive minimum {minimum}\",\n NUMBER_MAXIMUM: \"Value {value} is greater than maximum {maximum}\",\n NUMBER_MAXIMUM_EXCLUSIVE: \"Value {value} is equal to exclusive maximum {maximum}\",\n NUMBER_NOT_A_NUMBER: \"Value {value} is not a valid number\",\n // String errors\n STRING_LENGTH_SHORT: \"String is too short ({length} chars), minimum {minimum}\",\n STRING_LENGTH_LONG: \"String is too long ({length} chars), maximum {maximum}\",\n STRING_PATTERN: \"String does not match pattern: {pattern}\",\n // Object errors\n OBJECT_PROPERTIES_MINIMUM: \"Too few properties defined ({propertyCount}), minimum {minimum}\",\n OBJECT_PROPERTIES_MAXIMUM: \"Too many properties defined ({propertyCount}), maximum {maximum}\",\n OBJECT_REQUIRED: \"Missing required property: {key}\",\n OBJECT_ADDITIONAL_PROPERTIES: \"Additional properties not allowed\",\n OBJECT_DEPENDENCY_KEY: \"Dependency failed - key must exist: {missing} (due to key: {key})\",\n // Array errors\n ARRAY_LENGTH_SHORT: \"Array is too short ({length}), minimum {minimum}\",\n ARRAY_LENGTH_LONG: \"Array is too long ({length}), maximum {maximum}\",\n ARRAY_UNIQUE: \"Array items are not unique (indices {match1} and {match2})\",\n ARRAY_ADDITIONAL_ITEMS: \"Additional items not allowed\",\n // Format errors\n FORMAT_CUSTOM: \"Format validation failed ({message})\",\n KEYWORD_CUSTOM: \"Keyword failed: {key} ({message})\",\n // Schema structure\n CIRCULAR_REFERENCE: \"Circular $refs: {urls}\",\n // Non-standard validation options\n UNKNOWN_PROPERTY: \"Unknown property (not in schema)\"\n};\n\nfunction ValidationError(code, params, dataPath, schemaPath, subErrors) {\n Error.call(this);\n if (code === undefined) {\n throw new Error(\"No error code supplied: \" + schemaPath);\n }\n this.message = '';\n this.params = params;\n this.code = code;\n this.dataPath = dataPath || \"\";\n this.schemaPath = schemaPath || \"\";\n this.subErrors = subErrors || null;\n\n var err = new Error(this.message);\n this.stack = err.stack || err.stacktrace;\n if (!this.stack) {\n try {\n throw err;\n } catch (err) {\n this.stack = err.stack || err.stacktrace;\n }\n }\n}\n\nValidationError.prototype = (0, _create2.default)(Error.prototype);\nValidationError.prototype.constructor = ValidationError;\nValidationError.prototype.name = 'ValidationError';\n\nValidationError.prototype.prefixWith = function (dataPrefix, schemaPrefix) {\n if (dataPrefix !== null) {\n dataPrefix = dataPrefix.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n this.dataPath = \"/\" + dataPrefix + this.dataPath;\n }\n if (schemaPrefix !== null) {\n schemaPrefix = schemaPrefix.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n this.schemaPath = \"/\" + schemaPrefix + this.schemaPath;\n }\n if (this.subErrors !== null) {\n for (var i = 0; i < this.subErrors.length; i++) {\n this.subErrors[i].prefixWith(dataPrefix, schemaPrefix);\n }\n }\n return this;\n};\n\nfunction isTrustedUrl(baseUrl, testUrl) {\n if (testUrl.substring(0, baseUrl.length) === baseUrl) {\n var remainder = testUrl.substring(baseUrl.length);\n if (testUrl.length > 0 && testUrl.charAt(baseUrl.length - 1) === \"/\" || remainder.charAt(0) === \"#\" || remainder.charAt(0) === \"?\") {\n return true;\n }\n }\n return false;\n}\n\nvar languages = {};\n\nfunction createApi(language) {\n var globalContext = new ValidatorContext();\n var currentLanguage;\n var customErrorReporter;\n var api = {\n setErrorReporter: function setErrorReporter(reporter) {\n if (typeof reporter === 'string') {\n return this.language(reporter);\n }\n customErrorReporter = reporter;\n return true;\n },\n addFormat: function addFormat() {\n globalContext.addFormat.apply(globalContext, arguments);\n },\n language: function language(code) {\n if (!code) {\n return currentLanguage;\n }\n if (!languages[code]) {\n code = code.split('-')[0]; // fall back to base language\n }\n if (languages[code]) {\n currentLanguage = code;\n return code; // so you can tell if fall-back has happened\n }\n return false;\n },\n addLanguage: function addLanguage(code, messageMap) {\n var key;\n for (key in ErrorCodes) {\n if (messageMap[key] && !messageMap[ErrorCodes[key]]) {\n messageMap[ErrorCodes[key]] = messageMap[key];\n }\n }\n var rootCode = code.split('-')[0];\n if (!languages[rootCode]) {\n // use for base language if not yet defined\n languages[code] = messageMap;\n languages[rootCode] = messageMap;\n } else {\n languages[code] = (0, _create2.default)(languages[rootCode]);\n for (key in messageMap) {\n if (typeof languages[rootCode][key] === 'undefined') {\n languages[rootCode][key] = messageMap[key];\n }\n languages[code][key] = messageMap[key];\n }\n }\n return this;\n },\n freshApi: function freshApi(language) {\n var result = createApi();\n if (language) {\n result.language(language);\n }\n return result;\n },\n validate: function validate(data, schema, checkRecursive, banUnknownProperties) {\n var def = defaultErrorReporter(currentLanguage);\n var errorReporter = customErrorReporter ? function (error, data, schema) {\n return customErrorReporter(error, data, schema) || def(error, data, schema);\n } : def;\n var context = new ValidatorContext(globalContext, false, errorReporter, checkRecursive, banUnknownProperties);\n if (typeof schema === \"string\") {\n schema = { \"$ref\": schema };\n }\n context.addSchema(\"\", schema);\n var error = context.validateAll(data, schema, null, null, \"\");\n if (!error && banUnknownProperties) {\n error = context.banUnknownProperties(data, schema);\n }\n this.error = error;\n this.missing = context.missing;\n this.valid = error === null;\n return this.valid;\n },\n validateResult: function validateResult() {\n var result = {};\n this.validate.apply(result, arguments);\n return result;\n },\n validateMultiple: function validateMultiple(data, schema, checkRecursive, banUnknownProperties) {\n var def = defaultErrorReporter(currentLanguage);\n var errorReporter = customErrorReporter ? function (error, data, schema) {\n return customErrorReporter(error, data, schema) || def(error, data, schema);\n } : def;\n var context = new ValidatorContext(globalContext, true, errorReporter, checkRecursive, banUnknownProperties);\n if (typeof schema === \"string\") {\n schema = { \"$ref\": schema };\n }\n context.addSchema(\"\", schema);\n context.validateAll(data, schema, null, null, \"\");\n if (banUnknownProperties) {\n context.banUnknownProperties(data, schema);\n }\n var result = {};\n result.errors = context.errors;\n result.missing = context.missing;\n result.valid = result.errors.length === 0;\n return result;\n },\n addSchema: function addSchema() {\n return globalContext.addSchema.apply(globalContext, arguments);\n },\n getSchema: function getSchema() {\n return globalContext.getSchema.apply(globalContext, arguments);\n },\n getSchemaMap: function getSchemaMap() {\n return globalContext.getSchemaMap.apply(globalContext, arguments);\n },\n getSchemaUris: function getSchemaUris() {\n return globalContext.getSchemaUris.apply(globalContext, arguments);\n },\n getMissingUris: function getMissingUris() {\n return globalContext.getMissingUris.apply(globalContext, arguments);\n },\n dropSchemas: function dropSchemas() {\n globalContext.dropSchemas.apply(globalContext, arguments);\n },\n defineKeyword: function defineKeyword() {\n globalContext.defineKeyword.apply(globalContext, arguments);\n },\n defineError: function defineError(codeName, codeNumber, defaultMessage) {\n if (typeof codeName !== 'string' || !/^[A-Z]+(_[A-Z]+)*$/.test(codeName)) {\n throw new Error('Code name must be a string in UPPER_CASE_WITH_UNDERSCORES');\n }\n if (typeof codeNumber !== 'number' || codeNumber % 1 !== 0 || codeNumber < 10000) {\n throw new Error('Code number must be an integer > 10000');\n }\n if (typeof ErrorCodes[codeName] !== 'undefined') {\n throw new Error('Error already defined: ' + codeName + ' as ' + ErrorCodes[codeName]);\n }\n if (typeof ErrorCodeLookup[codeNumber] !== 'undefined') {\n throw new Error('Error code already used: ' + ErrorCodeLookup[codeNumber] + ' as ' + codeNumber);\n }\n ErrorCodes[codeName] = codeNumber;\n ErrorCodeLookup[codeNumber] = codeName;\n ErrorMessagesDefault[codeName] = ErrorMessagesDefault[codeNumber] = defaultMessage;\n for (var langCode in languages) {\n var language = languages[langCode];\n if (language[codeName]) {\n language[codeNumber] = language[codeNumber] || language[codeName];\n }\n }\n },\n reset: function reset() {\n globalContext.reset();\n this.error = null;\n this.missing = [];\n this.valid = true;\n },\n missing: [],\n error: null,\n valid: true,\n normSchema: normSchema,\n resolveUrl: resolveUrl,\n getDocumentUri: getDocumentUri,\n errorCodes: ErrorCodes\n };\n api.language(language || 'en');\n return api;\n}\n\n//export function validator() {\nvar tv4 = createApi();\ntv4.addLanguage('en-gb', ErrorMessagesDefault);\n\n//legacy property\ntv4.tv4 = tv4;\n//return tv4;\nexports.default = tv4;\n//}\n\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy91dGlscy90djQuanM/NzkwOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuIEF1dGhvcjogR2VyYWludCBMdWZmIGFuZCBvdGhlcnNcbiBZZWFyOiAyMDEzXG5cbiBUaGlzIGNvZGUgaXMgcmVsZWFzZWQgaW50byB0aGUgXCJwdWJsaWMgZG9tYWluXCIgYnkgaXRzIGF1dGhvcihzKS4gIEFueWJvZHkgbWF5IHVzZSwgYWx0ZXIgYW5kIGRpc3RyaWJ1dGUgdGhlIGNvZGUgd2l0aG91dCByZXN0cmljdGlvbi4gIFRoZSBhdXRob3IgbWFrZXMgbm8gZ3VhcmFudGVlcywgYW5kIHRha2VzIG5vIGxpYWJpbGl0eSBvZiBhbnkga2luZCBmb3IgdXNlIG9mIHRoaXMgY29kZS5cblxuIElmIHlvdSBmaW5kIGEgYnVnIG9yIG1ha2UgYW4gaW1wcm92ZW1lbnQsIGl0IHdvdWxkIGJlIGNvdXJ0ZW91cyB0byBsZXQgdGhlIGF1dGhvciBrbm93LCBidXQgaXQgaXMgbm90IGNvbXB1bHNvcnkuXG4gKi9cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9rZXlzP3JlZGlyZWN0bG9jYWxlPWVuLVVTJnJlZGlyZWN0c2x1Zz1KYXZhU2NyaXB0JTJGUmVmZXJlbmNlJTJGR2xvYmFsX09iamVjdHMlMkZPYmplY3QlMkZrZXlzXG5pZiAoIU9iamVjdC5rZXlzKSB7XG4gICAgT2JqZWN0LmtleXMgPSAoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFxuICAgICAgICAgICAgaGFzRG9udEVudW1CdWcgPSAhKHt0b1N0cmluZzogbnVsbH0pLnByb3BlcnR5SXNFbnVtZXJhYmxlKCd0b1N0cmluZycpLFxuICAgICAgICAgICAgZG9udEVudW1zID0gW1xuICAgICAgICAgICAgICAgICd0b1N0cmluZycsXG4gICAgICAgICAgICAgICAgJ3RvTG9jYWxlU3RyaW5nJyxcbiAgICAgICAgICAgICAgICAndmFsdWVPZicsXG4gICAgICAgICAgICAgICAgJ2hhc093blByb3BlcnR5JyxcbiAgICAgICAgICAgICAgICAnaXNQcm90b3R5cGVPZicsXG4gICAgICAgICAgICAgICAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgICAgICAgICAgICAgICAnY29uc3RydWN0b3InXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZG9udEVudW1zTGVuZ3RoID0gZG9udEVudW1zLmxlbmd0aDtcblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmogIT09ICdmdW5jdGlvbicgfHwgb2JqID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmtleXMgY2FsbGVkIG9uIG5vbi1vYmplY3QnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocHJvcCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaGFzRG9udEVudW1CdWcpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRvbnRFbnVtc0xlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgZG9udEVudW1zW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZG9udEVudW1zW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgfSkoKTtcbn1cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9jcmVhdGVcbmlmICghT2JqZWN0LmNyZWF0ZSkge1xuICAgIE9iamVjdC5jcmVhdGUgPSAoZnVuY3Rpb24gKCkge1xuICAgICAgICBmdW5jdGlvbiBGKCkge1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChvKSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignT2JqZWN0LmNyZWF0ZSBpbXBsZW1lbnRhdGlvbiBvbmx5IGFjY2VwdHMgb25lIHBhcmFtZXRlci4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEYucHJvdG90eXBlID0gbztcbiAgICAgICAgICAgIHJldHVybiBuZXcgRigpO1xuICAgICAgICB9O1xuICAgIH0pKCk7XG59XG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9BcnJheS9pc0FycmF5P3JlZGlyZWN0bG9jYWxlPWVuLVVTJnJlZGlyZWN0c2x1Zz1KYXZhU2NyaXB0JTJGUmVmZXJlbmNlJTJGR2xvYmFsX09iamVjdHMlMkZBcnJheSUyRmlzQXJyYXlcbmlmICghQXJyYXkuaXNBcnJheSkge1xuICAgIEFycmF5LmlzQXJyYXkgPSBmdW5jdGlvbiAodkFyZykge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZBcmcpID09PSBcIltvYmplY3QgQXJyYXldXCI7XG4gICAgfTtcbn1cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0FycmF5L2luZGV4T2Y/cmVkaXJlY3Rsb2NhbGU9ZW4tVVMmcmVkaXJlY3RzbHVnPUphdmFTY3JpcHQlMkZSZWZlcmVuY2UlMkZHbG9iYWxfT2JqZWN0cyUyRkFycmF5JTJGaW5kZXhPZlxuaWYgKCFBcnJheS5wcm90b3R5cGUuaW5kZXhPZikge1xuICAgIEFycmF5LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gKHNlYXJjaEVsZW1lbnQgLyosIGZyb21JbmRleCAqLykge1xuICAgICAgICBpZiAodGhpcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0ID0gT2JqZWN0KHRoaXMpO1xuICAgICAgICB2YXIgbGVuID0gdC5sZW5ndGggPj4+IDA7XG5cbiAgICAgICAgaWYgKGxlbiA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIHZhciBuID0gMDtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBuID0gTnVtYmVyKGFyZ3VtZW50c1sxXSk7XG4gICAgICAgICAgICBpZiAobiAhPT0gbikgeyAvLyBzaG9ydGN1dCBmb3IgdmVyaWZ5aW5nIGlmIGl0J3MgTmFOXG4gICAgICAgICAgICAgICAgbiA9IDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG4gIT09IDAgJiYgbiAhPT0gSW5maW5pdHkgJiYgbiAhPT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgICAgICAgbiA9IChuID4gMCB8fCAtMSkgKiBNYXRoLmZsb29yKE1hdGguYWJzKG4pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobiA+PSBsZW4pIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgayA9IG4gPj0gMCA/IG4gOiBNYXRoLm1heChsZW4gLSBNYXRoLmFicyhuKSwgMCk7XG4gICAgICAgIGZvciAoOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgICAgICAgIGlmIChrIGluIHQgJiYgdFtrXSA9PT0gc2VhcmNoRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9O1xufVxuXG4vLyBHcnVuZ2V5IE9iamVjdC5pc0Zyb3plbiBoYWNrXG5pZiAoIU9iamVjdC5pc0Zyb3plbikge1xuICAgIE9iamVjdC5pc0Zyb3plbiA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgdmFyIGtleSA9IFwidHY0X3Rlc3RfZnJvemVuX2tleVwiO1xuICAgICAgICB3aGlsZSAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIGtleSArPSBNYXRoLnJhbmRvbSgpO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHRydWU7XG4gICAgICAgICAgICBkZWxldGUgb2JqW2tleV07XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfTtcbn1cbi8vIEJhc2VkIG9uOiBodHRwczovL2dpdGh1Yi5jb20vZ2VyYWludGx1ZmYvdXJpLXRlbXBsYXRlcywgYnV0IHdpdGggYWxsIHRoZSBkZS1zdWJzdGl0dXRpb24gc3R1ZmYgcmVtb3ZlZFxuXG52YXIgdXJpVGVtcGxhdGVHbG9iYWxNb2RpZmllcnMgPSB7XG4gICAgXCIrXCI6IHRydWUsXG4gICAgXCIjXCI6IHRydWUsXG4gICAgXCIuXCI6IHRydWUsXG4gICAgXCIvXCI6IHRydWUsXG4gICAgXCI7XCI6IHRydWUsXG4gICAgXCI/XCI6IHRydWUsXG4gICAgXCImXCI6IHRydWVcbn07XG52YXIgdXJpVGVtcGxhdGVTdWZmaWNlcyA9IHtcbiAgICBcIipcIjogdHJ1ZVxufTtcblxuZnVuY3Rpb24gbm90UmVhbGx5UGVyY2VudEVuY29kZShzdHJpbmcpIHtcbiAgICByZXR1cm4gZW5jb2RlVVJJKHN0cmluZykucmVwbGFjZSgvJTI1WzAtOV1bMC05XS9nLCBmdW5jdGlvbiAoZG91YmxlRW5jb2RlZCkge1xuICAgICAgICByZXR1cm4gXCIlXCIgKyBkb3VibGVFbmNvZGVkLnN1YnN0cmluZygzKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gdXJpVGVtcGxhdGVTdWJzdGl0dXRpb24oc3BlYykge1xuICAgIHZhciBtb2RpZmllciA9IFwiXCI7XG4gICAgaWYgKHVyaVRlbXBsYXRlR2xvYmFsTW9kaWZpZXJzW3NwZWMuY2hhckF0KDApXSkge1xuICAgICAgICBtb2RpZmllciA9IHNwZWMuY2hhckF0KDApO1xuICAgICAgICBzcGVjID0gc3BlYy5zdWJzdHJpbmcoMSk7XG4gICAgfVxuICAgIHZhciBzZXBhcmF0b3IgPSBcIlwiO1xuICAgIHZhciBwcmVmaXggPSBcIlwiO1xuICAgIHZhciBzaG91bGRFc2NhcGUgPSB0cnVlO1xuICAgIHZhciBzaG93VmFyaWFibGVzID0gZmFsc2U7XG4gICAgdmFyIHRyaW1FbXB0eVN0cmluZyA9IGZhbHNlO1xuICAgIGlmIChtb2RpZmllciA9PT0gJysnKSB7XG4gICAgICAgIHNob3VsZEVzY2FwZSA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAobW9kaWZpZXIgPT09IFwiLlwiKSB7XG4gICAgICAgIHByZWZpeCA9IFwiLlwiO1xuICAgICAgICBzZXBhcmF0b3IgPSBcIi5cIjtcbiAgICB9IGVsc2UgaWYgKG1vZGlmaWVyID09PSBcIi9cIikge1xuICAgICAgICBwcmVmaXggPSBcIi9cIjtcbiAgICAgICAgc2VwYXJhdG9yID0gXCIvXCI7XG4gICAgfSBlbHNlIGlmIChtb2RpZmllciA9PT0gJyMnKSB7XG4gICAgICAgIHByZWZpeCA9IFwiI1wiO1xuICAgICAgICBzaG91bGRFc2NhcGUgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKG1vZGlmaWVyID09PSAnOycpIHtcbiAgICAgICAgcHJlZml4ID0gXCI7XCI7XG4gICAgICAgIHNlcGFyYXRvciA9IFwiO1wiO1xuICAgICAgICBzaG93VmFyaWFibGVzID0gdHJ1ZTtcbiAgICAgICAgdHJpbUVtcHR5U3RyaW5nID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKG1vZGlmaWVyID09PSAnPycpIHtcbiAgICAgICAgcHJlZml4ID0gXCI/XCI7XG4gICAgICAgIHNlcGFyYXRvciA9IFwiJlwiO1xuICAgICAgICBzaG93VmFyaWFibGVzID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKG1vZGlmaWVyID09PSAnJicpIHtcbiAgICAgICAgcHJlZml4ID0gXCImXCI7XG4gICAgICAgIHNlcGFyYXRvciA9IFwiJlwiO1xuICAgICAgICBzaG93VmFyaWFibGVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgdmFyTmFtZXMgPSBbXTtcbiAgICB2YXIgdmFyTGlzdCA9IHNwZWMuc3BsaXQoXCIsXCIpO1xuICAgIHZhciB2YXJTcGVjcyA9IFtdO1xuICAgIHZhciB2YXJTcGVjTWFwID0ge307XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YXJMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB2YXJOYW1lID0gdmFyTGlzdFtpXTtcbiAgICAgICAgdmFyIHRydW5jYXRlID0gbnVsbDtcbiAgICAgICAgaWYgKHZhck5hbWUuaW5kZXhPZihcIjpcIikgIT09IC0xKSB7XG4gICAgICAgICAgICB2YXIgcGFydHMgPSB2YXJOYW1lLnNwbGl0KFwiOlwiKTtcbiAgICAgICAgICAgIHZhck5hbWUgPSBwYXJ0c1swXTtcbiAgICAgICAgICAgIHRydW5jYXRlID0gcGFyc2VJbnQocGFydHNbMV0sIDEwKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3VmZmljZXMgPSB7fTtcbiAgICAgICAgd2hpbGUgKHVyaVRlbXBsYXRlU3VmZmljZXNbdmFyTmFtZS5jaGFyQXQodmFyTmFtZS5sZW5ndGggLSAxKV0pIHtcbiAgICAgICAgICAgIHN1ZmZpY2VzW3Zhck5hbWUuY2hhckF0KHZhck5hbWUubGVuZ3RoIC0gMSldID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhck5hbWUgPSB2YXJOYW1lLnN1YnN0cmluZygwLCB2YXJOYW1lLmxlbmd0aCAtIDEpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YXJTcGVjID0ge1xuICAgICAgICAgICAgdHJ1bmNhdGU6IHRydW5jYXRlLFxuICAgICAgICAgICAgbmFtZTogdmFyTmFtZSxcbiAgICAgICAgICAgIHN1ZmZpY2VzOiBzdWZmaWNlc1xuICAgICAgICB9O1xuICAgICAgICB2YXJTcGVjcy5wdXNoKHZhclNwZWMpO1xuICAgICAgICB2YXJTcGVjTWFwW3Zhck5hbWVdID0gdmFyU3BlYztcbiAgICAgICAgdmFyTmFtZXMucHVzaCh2YXJOYW1lKTtcbiAgICB9XG4gICAgdmFyIHN1YkZ1bmN0aW9uID0gZnVuY3Rpb24gKHZhbHVlRnVuY3Rpb24pIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFwiXCI7XG4gICAgICAgIHZhciBzdGFydEluZGV4ID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YXJTcGVjcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHZhclNwZWMgPSB2YXJTcGVjc1tpXTtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHZhbHVlRnVuY3Rpb24odmFyU3BlYy5uYW1lKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHx8ICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCsrO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGkgPT09IHN0YXJ0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gcHJlZml4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gKHNlcGFyYXRvciB8fCBcIixcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2hvd1ZhcmlhYmxlcykge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gdmFyU3BlYy5uYW1lICsgXCI9XCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsdWUubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gdmFyU3BlYy5zdWZmaWNlc1snKiddID8gKHNlcGFyYXRvciB8fCBcIixcIikgOiBcIixcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJTcGVjLnN1ZmZpY2VzWycqJ10gJiYgc2hvd1ZhcmlhYmxlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB2YXJTcGVjLm5hbWUgKyBcIj1cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gc2hvdWxkRXNjYXBlID8gZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlW2pdKS5yZXBsYWNlKC8hL2csIFwiJTIxXCIpIDogbm90UmVhbGx5UGVyY2VudEVuY29kZSh2YWx1ZVtqXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2hvd1ZhcmlhYmxlcyAmJiAhdmFyU3BlYy5zdWZmaWNlc1snKiddKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB2YXJTcGVjLm5hbWUgKyBcIj1cIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGZpcnN0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHZhclNwZWMuc3VmZmljZXNbJyonXSA/IChzZXBhcmF0b3IgfHwgXCIsXCIpIDogXCIsXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHNob3VsZEVzY2FwZSA/IGVuY29kZVVSSUNvbXBvbmVudChrZXkpLnJlcGxhY2UoLyEvZywgXCIlMjFcIikgOiBub3RSZWFsbHlQZXJjZW50RW5jb2RlKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB2YXJTcGVjLnN1ZmZpY2VzWycqJ10gPyAnPScgOiBcIixcIjtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHNob3VsZEVzY2FwZSA/IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZVtrZXldKS5yZXBsYWNlKC8hL2csIFwiJTIxXCIpIDogbm90UmVhbGx5UGVyY2VudEVuY29kZSh2YWx1ZVtrZXldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChzaG93VmFyaWFibGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB2YXJTcGVjLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdHJpbUVtcHR5U3RyaW5nIHx8IHZhbHVlICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCI9XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHZhclNwZWMudHJ1bmNhdGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCB2YXJTcGVjLnRydW5jYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IHNob3VsZEVzY2FwZSA/IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkucmVwbGFjZSgvIS9nLCBcIiUyMVwiKSA6IG5vdFJlYWxseVBlcmNlbnRFbmNvZGUodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBzdWJGdW5jdGlvbi52YXJOYW1lcyA9IHZhck5hbWVzO1xuICAgIHJldHVybiB7XG4gICAgICAgIHByZWZpeDogcHJlZml4LFxuICAgICAgICBzdWJzdGl0dXRpb246IHN1YkZ1bmN0aW9uXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gVXJpVGVtcGxhdGUodGVtcGxhdGUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVXJpVGVtcGxhdGUpKSB7XG4gICAgICAgIHJldHVybiBuZXcgVXJpVGVtcGxhdGUodGVtcGxhdGUpO1xuICAgIH1cbiAgICB2YXIgcGFydHMgPSB0ZW1wbGF0ZS5zcGxpdChcIntcIik7XG4gICAgdmFyIHRleHRQYXJ0cyA9IFtwYXJ0cy5zaGlmdCgpXTtcbiAgICB2YXIgcHJlZml4ZXMgPSBbXTtcbiAgICB2YXIgc3Vic3RpdHV0aW9ucyA9IFtdO1xuICAgIHZhciB2YXJOYW1lcyA9IFtdO1xuICAgIHdoaWxlIChwYXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciBwYXJ0ID0gcGFydHMuc2hpZnQoKTtcbiAgICAgICAgdmFyIHNwZWMgPSBwYXJ0LnNwbGl0KFwifVwiKVswXTtcbiAgICAgICAgdmFyIHJlbWFpbmRlciA9IHBhcnQuc3Vic3RyaW5nKHNwZWMubGVuZ3RoICsgMSk7XG4gICAgICAgIHZhciBmdW5jcyA9IHVyaVRlbXBsYXRlU3Vic3RpdHV0aW9uKHNwZWMpO1xuICAgICAgICBzdWJzdGl0dXRpb25zLnB1c2goZnVuY3Muc3Vic3RpdHV0aW9uKTtcbiAgICAgICAgcHJlZml4ZXMucHVzaChmdW5jcy5wcmVmaXgpO1xuICAgICAgICB0ZXh0UGFydHMucHVzaChyZW1haW5kZXIpO1xuICAgICAgICB2YXJOYW1lcyA9IHZhck5hbWVzLmNvbmNhdChmdW5jcy5zdWJzdGl0dXRpb24udmFyTmFtZXMpO1xuICAgIH1cbiAgICB0aGlzLmZpbGwgPSBmdW5jdGlvbiAodmFsdWVGdW5jdGlvbikge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGV4dFBhcnRzWzBdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YnN0aXR1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zW2ldO1xuICAgICAgICAgICAgcmVzdWx0ICs9IHN1YnN0aXR1dGlvbih2YWx1ZUZ1bmN0aW9uKTtcbiAgICAgICAgICAgIHJlc3VsdCArPSB0ZXh0UGFydHNbaSArIDFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICB0aGlzLnZhck5hbWVzID0gdmFyTmFtZXM7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlO1xufVxuXG5VcmlUZW1wbGF0ZS5wcm90b3R5cGUgPSB7XG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGU7XG4gICAgfSxcbiAgICBmaWxsRnJvbU9iamVjdDogZnVuY3Rpb24gKG9iaikge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxsKGZ1bmN0aW9uICh2YXJOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqW3Zhck5hbWVdO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xudmFyIFZhbGlkYXRvckNvbnRleHQgPSBmdW5jdGlvbiBWYWxpZGF0b3JDb250ZXh0KHBhcmVudCwgY29sbGVjdE11bHRpcGxlLCBlcnJvclJlcG9ydGVyLCBjaGVja1JlY3Vyc2l2ZSwgdHJhY2tVbmtub3duUHJvcGVydGllcykge1xuICAgIHRoaXMubWlzc2luZyA9IFtdO1xuICAgIHRoaXMubWlzc2luZ01hcCA9IHt9O1xuICAgIHRoaXMuZm9ybWF0VmFsaWRhdG9ycyA9IHBhcmVudCA/IE9iamVjdC5jcmVhdGUocGFyZW50LmZvcm1hdFZhbGlkYXRvcnMpIDoge307XG4gICAgdGhpcy5zY2hlbWFzID0gcGFyZW50ID8gT2JqZWN0LmNyZWF0ZShwYXJlbnQuc2NoZW1hcykgOiB7fTtcbiAgICB0aGlzLmNvbGxlY3RNdWx0aXBsZSA9IGNvbGxlY3RNdWx0aXBsZTtcbiAgICB0aGlzLmVycm9ycyA9IFtdO1xuICAgIHRoaXMuaGFuZGxlRXJyb3IgPSBjb2xsZWN0TXVsdGlwbGUgPyB0aGlzLmNvbGxlY3RFcnJvciA6IHRoaXMucmV0dXJuRXJyb3I7XG4gICAgaWYgKGNoZWNrUmVjdXJzaXZlKSB7XG4gICAgICAgIHRoaXMuY2hlY2tSZWN1cnNpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnNjYW5uZWQgPSBbXTtcbiAgICAgICAgdGhpcy5zY2FubmVkRnJvemVuID0gW107XG4gICAgICAgIHRoaXMuc2Nhbm5lZEZyb3plblNjaGVtYXMgPSBbXTtcbiAgICAgICAgdGhpcy5zY2FubmVkRnJvemVuVmFsaWRhdGlvbkVycm9ycyA9IFtdO1xuICAgICAgICB0aGlzLnZhbGlkYXRlZFNjaGVtYXNLZXkgPSAndHY0X3ZhbGlkYXRpb25faWQnO1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnNLZXkgPSAndHY0X3ZhbGlkYXRpb25fZXJyb3JzX2lkJztcbiAgICB9XG4gICAgaWYgKHRyYWNrVW5rbm93blByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy50cmFja1Vua25vd25Qcm9wZXJ0aWVzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5rbm93blByb3BlcnR5UGF0aHMgPSB7fTtcbiAgICAgICAgdGhpcy51bmtub3duUHJvcGVydHlQYXRocyA9IHt9O1xuICAgIH1cbiAgICB0aGlzLmVycm9yUmVwb3J0ZXIgPSBlcnJvclJlcG9ydGVyIHx8IGRlZmF1bHRFcnJvclJlcG9ydGVyKCdlbicpO1xuICAgIGlmICh0eXBlb2YgdGhpcy5lcnJvclJlcG9ydGVyID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlYnVnJyk7XG4gICAgfVxuICAgIHRoaXMuZGVmaW5lZEtleXdvcmRzID0ge307XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGFyZW50LmRlZmluZWRLZXl3b3Jkcykge1xuICAgICAgICAgICAgdGhpcy5kZWZpbmVkS2V5d29yZHNba2V5XSA9IHBhcmVudC5kZWZpbmVkS2V5d29yZHNba2V5XS5zbGljZSgwKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS5kZWZpbmVLZXl3b3JkID0gZnVuY3Rpb24gKGtleXdvcmQsIGtleXdvcmRGdW5jdGlvbikge1xuICAgIHRoaXMuZGVmaW5lZEtleXdvcmRzW2tleXdvcmRdID0gdGhpcy5kZWZpbmVkS2V5d29yZHNba2V5d29yZF0gfHwgW107XG4gICAgdGhpcy5kZWZpbmVkS2V5d29yZHNba2V5d29yZF0ucHVzaChrZXl3b3JkRnVuY3Rpb24pO1xufTtcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLmNyZWF0ZUVycm9yID0gZnVuY3Rpb24gKGNvZGUsIG1lc3NhZ2VQYXJhbXMsIGRhdGFQYXRoLCBzY2hlbWFQYXRoLCBzdWJFcnJvcnMsIGRhdGEsIHNjaGVtYSkge1xuICAgIHZhciBlcnJvciA9IG5ldyBWYWxpZGF0aW9uRXJyb3IoY29kZSwgbWVzc2FnZVBhcmFtcywgZGF0YVBhdGgsIHNjaGVtYVBhdGgsIHN1YkVycm9ycyk7XG4gICAgZXJyb3IubWVzc2FnZSA9IHRoaXMuZXJyb3JSZXBvcnRlcihlcnJvciwgZGF0YSwgc2NoZW1hKTtcbiAgICByZXR1cm4gZXJyb3I7XG59O1xuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUucmV0dXJuRXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICByZXR1cm4gZXJyb3I7XG59O1xuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUuY29sbGVjdEVycm9yID0gZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRoaXMuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS5wcmVmaXhFcnJvcnMgPSBmdW5jdGlvbiAoc3RhcnRJbmRleCwgZGF0YVBhdGgsIHNjaGVtYVBhdGgpIHtcbiAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA8IHRoaXMuZXJyb3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMuZXJyb3JzW2ldID0gdGhpcy5lcnJvcnNbaV0ucHJlZml4V2l0aChkYXRhUGF0aCwgc2NoZW1hUGF0aCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xufTtcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLmJhblVua25vd25Qcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGRhdGEsIHNjaGVtYSkge1xuICAgIGZvciAodmFyIHVua25vd25QYXRoIGluIHRoaXMudW5rbm93blByb3BlcnR5UGF0aHMpIHtcbiAgICAgICAgdmFyIGVycm9yID0gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLlVOS05PV05fUFJPUEVSVFksIHtwYXRoOiB1bmtub3duUGF0aH0sIHVua25vd25QYXRoLCBcIlwiLCBudWxsLCBkYXRhLCBzY2hlbWEpO1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS5hZGRGb3JtYXQgPSBmdW5jdGlvbiAoZm9ybWF0LCB2YWxpZGF0b3IpIHtcbiAgICBpZiAodHlwZW9mIGZvcm1hdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIGZvcm1hdCkge1xuICAgICAgICAgICAgdGhpcy5hZGRGb3JtYXQoa2V5LCBmb3JtYXRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHRoaXMuZm9ybWF0VmFsaWRhdG9yc1tmb3JtYXRdID0gdmFsaWRhdG9yO1xufTtcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnJlc29sdmVSZWZzID0gZnVuY3Rpb24gKHNjaGVtYSwgdXJsSGlzdG9yeSkge1xuICAgIGlmIChzY2hlbWFbJyRyZWYnXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVybEhpc3RvcnkgPSB1cmxIaXN0b3J5IHx8IHt9O1xuICAgICAgICBpZiAodXJsSGlzdG9yeVtzY2hlbWFbJyRyZWYnXV0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuQ0lSQ1VMQVJfUkVGRVJFTkNFLCB7dXJsczogT2JqZWN0LmtleXModXJsSGlzdG9yeSkuam9pbignLCAnKX0sICcnLCAnJywgbnVsbCwgdW5kZWZpbmVkLCBzY2hlbWEpO1xuICAgICAgICB9XG4gICAgICAgIHVybEhpc3Rvcnlbc2NoZW1hWyckcmVmJ11dID0gdHJ1ZTtcbiAgICAgICAgc2NoZW1hID0gdGhpcy5nZXRTY2hlbWEoc2NoZW1hWyckcmVmJ10sIHVybEhpc3RvcnkpO1xuICAgIH1cbiAgICByZXR1cm4gc2NoZW1hO1xufTtcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLmdldFNjaGVtYSA9IGZ1bmN0aW9uICh1cmwsIHVybEhpc3RvcnkpIHtcbiAgICB2YXIgc2NoZW1hO1xuICAgIGlmICh0aGlzLnNjaGVtYXNbdXJsXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNjaGVtYSA9IHRoaXMuc2NoZW1hc1t1cmxdO1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlUmVmcyhzY2hlbWEsIHVybEhpc3RvcnkpO1xuICAgIH1cbiAgICB2YXIgYmFzZVVybCA9IHVybDtcbiAgICB2YXIgZnJhZ21lbnQgPSBcIlwiO1xuICAgIGlmICh1cmwuaW5kZXhPZignIycpICE9PSAtMSkge1xuICAgICAgICBmcmFnbWVudCA9IHVybC5zdWJzdHJpbmcodXJsLmluZGV4T2YoXCIjXCIpICsgMSk7XG4gICAgICAgIGJhc2VVcmwgPSB1cmwuc3Vic3RyaW5nKDAsIHVybC5pbmRleE9mKFwiI1wiKSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdGhpcy5zY2hlbWFzW2Jhc2VVcmxdID09PSAnb2JqZWN0Jykge1xuICAgICAgICBzY2hlbWEgPSB0aGlzLnNjaGVtYXNbYmFzZVVybF07XG4gICAgICAgIHZhciBwb2ludGVyUGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudChmcmFnbWVudCk7XG4gICAgICAgIGlmIChwb2ludGVyUGF0aCA9PT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZVJlZnMoc2NoZW1hLCB1cmxIaXN0b3J5KTtcbiAgICAgICAgfSBlbHNlIGlmIChwb2ludGVyUGF0aC5jaGFyQXQoMCkgIT09IFwiL1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwYXJ0cyA9IHBvaW50ZXJQYXRoLnNwbGl0KFwiL1wiKS5zbGljZSgxKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGNvbXBvbmVudCA9IHBhcnRzW2ldLnJlcGxhY2UoL34xL2csIFwiL1wiKS5yZXBsYWNlKC9+MC9nLCBcIn5cIik7XG4gICAgICAgICAgICBpZiAoc2NoZW1hW2NvbXBvbmVudF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHNjaGVtYSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNjaGVtYSA9IHNjaGVtYVtjb21wb25lbnRdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzY2hlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZVJlZnMoc2NoZW1hLCB1cmxIaXN0b3J5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5taXNzaW5nW2Jhc2VVcmxdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5taXNzaW5nLnB1c2goYmFzZVVybCk7XG4gICAgICAgIHRoaXMubWlzc2luZ1tiYXNlVXJsXSA9IGJhc2VVcmw7XG4gICAgICAgIHRoaXMubWlzc2luZ01hcFtiYXNlVXJsXSA9IGJhc2VVcmw7XG4gICAgfVxufTtcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnNlYXJjaFNjaGVtYXMgPSBmdW5jdGlvbiAoc2NoZW1hLCB1cmwpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NoZW1hLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFNjaGVtYXMoc2NoZW1hW2ldLCB1cmwpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChzY2hlbWEgJiYgdHlwZW9mIHNjaGVtYSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5pZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaWYgKGlzVHJ1c3RlZFVybCh1cmwsIHNjaGVtYS5pZCkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zY2hlbWFzW3NjaGVtYS5pZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNjaGVtYXNbc2NoZW1hLmlkXSA9IHNjaGVtYTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIga2V5IGluIHNjaGVtYSkge1xuICAgICAgICAgICAgaWYgKGtleSAhPT0gXCJlbnVtXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYVtrZXldID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU2NoZW1hcyhzY2hlbWFba2V5XSwgdXJsKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCIkcmVmXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVyaSA9IGdldERvY3VtZW50VXJpKHNjaGVtYVtrZXldKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVyaSAmJiB0aGlzLnNjaGVtYXNbdXJpXSA9PT0gdW5kZWZpbmVkICYmIHRoaXMubWlzc2luZ01hcFt1cmldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWlzc2luZ01hcFt1cmldID0gdXJpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufTtcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLmFkZFNjaGVtYSA9IGZ1bmN0aW9uICh1cmwsIHNjaGVtYSkge1xuICAgIC8vb3ZlcmxvYWRcbiAgICBpZiAodHlwZW9mIHVybCAhPT0gJ3N0cmluZycgfHwgdHlwZW9mIHNjaGVtYSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB1cmwgPT09ICdvYmplY3QnICYmIHR5cGVvZiB1cmwuaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBzY2hlbWEgPSB1cmw7XG4gICAgICAgICAgICB1cmwgPSBzY2hlbWEuaWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHVybCA9PT0gZ2V0RG9jdW1lbnRVcmkodXJsKSArIFwiI1wiKSB7XG4gICAgICAgIC8vIFJlbW92ZSBlbXB0eSBmcmFnbWVudFxuICAgICAgICB1cmwgPSBnZXREb2N1bWVudFVyaSh1cmwpO1xuICAgIH1cbiAgICB0aGlzLnNjaGVtYXNbdXJsXSA9IHNjaGVtYTtcbiAgICBkZWxldGUgdGhpcy5taXNzaW5nTWFwW3VybF07XG4gICAgbm9ybVNjaGVtYShzY2hlbWEsIHVybCk7XG4gICAgdGhpcy5zZWFyY2hTY2hlbWFzKHNjaGVtYSwgdXJsKTtcbn07XG5cblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLmdldFNjaGVtYU1hcCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWFwID0ge307XG4gICAgZm9yICh2YXIga2V5IGluIHRoaXMuc2NoZW1hcykge1xuICAgICAgICBtYXBba2V5XSA9IHRoaXMuc2NoZW1hc1trZXldO1xuICAgIH1cbiAgICByZXR1cm4gbWFwO1xufTtcblxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUuZ2V0U2NoZW1hVXJpcyA9IGZ1bmN0aW9uIChmaWx0ZXJSZWdFeHApIHtcbiAgICB2YXIgbGlzdCA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiB0aGlzLnNjaGVtYXMpIHtcbiAgICAgICAgaWYgKCFmaWx0ZXJSZWdFeHAgfHwgZmlsdGVyUmVnRXhwLnRlc3Qoa2V5KSkge1xuICAgICAgICAgICAgbGlzdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGxpc3Q7XG59O1xuXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS5nZXRNaXNzaW5nVXJpcyA9IGZ1bmN0aW9uIChmaWx0ZXJSZWdFeHApIHtcbiAgICB2YXIgbGlzdCA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiB0aGlzLm1pc3NpbmdNYXApIHtcbiAgICAgICAgaWYgKCFmaWx0ZXJSZWdFeHAgfHwgZmlsdGVyUmVnRXhwLnRlc3Qoa2V5KSkge1xuICAgICAgICAgICAgbGlzdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGxpc3Q7XG59O1xuXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS5kcm9wU2NoZW1hcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnNjaGVtYXMgPSB7fTtcbiAgICB0aGlzLnJlc2V0KCk7XG59O1xuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5taXNzaW5nID0gW107XG4gICAgdGhpcy5taXNzaW5nTWFwID0ge307XG4gICAgdGhpcy5lcnJvcnMgPSBbXTtcbn07XG5cblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlQWxsID0gZnVuY3Rpb24gKGRhdGEsIHNjaGVtYSwgZGF0YVBhdGhQYXJ0cywgc2NoZW1hUGF0aFBhcnRzLCBkYXRhUG9pbnRlclBhdGgpIHtcbiAgICB2YXIgdG9wTGV2ZWw7XG4gICAgc2NoZW1hID0gdGhpcy5yZXNvbHZlUmVmcyhzY2hlbWEpO1xuICAgIGlmICghc2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoc2NoZW1hIGluc3RhbmNlb2YgVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICAgIHRoaXMuZXJyb3JzLnB1c2goc2NoZW1hKTtcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICB9XG5cbiAgICB2YXIgc3RhcnRFcnJvckNvdW50ID0gdGhpcy5lcnJvcnMubGVuZ3RoO1xuICAgIHZhciBmcm96ZW5JbmRleCwgc2Nhbm5lZEZyb3plblNjaGVtYUluZGV4ID0gbnVsbCwgc2Nhbm5lZFNjaGVtYXNJbmRleCA9IG51bGw7XG4gICAgaWYgKHRoaXMuY2hlY2tSZWN1cnNpdmUgJiYgZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgdG9wTGV2ZWwgPSAhdGhpcy5zY2FubmVkLmxlbmd0aDtcbiAgICAgICAgaWYgKGRhdGFbdGhpcy52YWxpZGF0ZWRTY2hlbWFzS2V5XSkge1xuICAgICAgICAgICAgdmFyIHNjaGVtYUluZGV4ID0gZGF0YVt0aGlzLnZhbGlkYXRlZFNjaGVtYXNLZXldLmluZGV4T2Yoc2NoZW1hKTtcbiAgICAgICAgICAgIGlmIChzY2hlbWFJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9ycyA9IHRoaXMuZXJyb3JzLmNvbmNhdChkYXRhW3RoaXMudmFsaWRhdGlvbkVycm9yc0tleV1bc2NoZW1hSW5kZXhdKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0LmlzRnJvemVuKGRhdGEpKSB7XG4gICAgICAgICAgICBmcm96ZW5JbmRleCA9IHRoaXMuc2Nhbm5lZEZyb3plbi5pbmRleE9mKGRhdGEpO1xuICAgICAgICAgICAgaWYgKGZyb3plbkluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHZhciBmcm96ZW5TY2hlbWFJbmRleCA9IHRoaXMuc2Nhbm5lZEZyb3plblNjaGVtYXNbZnJvemVuSW5kZXhdLmluZGV4T2Yoc2NoZW1hKTtcbiAgICAgICAgICAgICAgICBpZiAoZnJvemVuU2NoZW1hSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzID0gdGhpcy5lcnJvcnMuY29uY2F0KHRoaXMuc2Nhbm5lZEZyb3plblZhbGlkYXRpb25FcnJvcnNbZnJvemVuSW5kZXhdW2Zyb3plblNjaGVtYUluZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNjYW5uZWQucHVzaChkYXRhKTtcbiAgICAgICAgaWYgKE9iamVjdC5pc0Zyb3plbihkYXRhKSkge1xuICAgICAgICAgICAgaWYgKGZyb3plbkluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGZyb3plbkluZGV4ID0gdGhpcy5zY2FubmVkRnJvemVuLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB0aGlzLnNjYW5uZWRGcm96ZW4ucHVzaChkYXRhKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNjYW5uZWRGcm96ZW5TY2hlbWFzLnB1c2goW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2Nhbm5lZEZyb3plblNjaGVtYUluZGV4ID0gdGhpcy5zY2FubmVkRnJvemVuU2NoZW1hc1tmcm96ZW5JbmRleF0ubGVuZ3RoO1xuICAgICAgICAgICAgdGhpcy5zY2FubmVkRnJvemVuU2NoZW1hc1tmcm96ZW5JbmRleF1bc2Nhbm5lZEZyb3plblNjaGVtYUluZGV4XSA9IHNjaGVtYTtcbiAgICAgICAgICAgIHRoaXMuc2Nhbm5lZEZyb3plblZhbGlkYXRpb25FcnJvcnNbZnJvemVuSW5kZXhdW3NjYW5uZWRGcm96ZW5TY2hlbWFJbmRleF0gPSBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghZGF0YVt0aGlzLnZhbGlkYXRlZFNjaGVtYXNLZXldKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRhdGEsIHRoaXMudmFsaWRhdGVkU2NoZW1hc0tleSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGF0YSwgdGhpcy52YWxpZGF0aW9uRXJyb3JzS2V5LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAvL0lFIDcvOCB3b3JrYXJvdW5kXG4gICAgICAgICAgICAgICAgICAgIGRhdGFbdGhpcy52YWxpZGF0ZWRTY2hlbWFzS2V5XSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBkYXRhW3RoaXMudmFsaWRhdGlvbkVycm9yc0tleV0gPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzY2FubmVkU2NoZW1hc0luZGV4ID0gZGF0YVt0aGlzLnZhbGlkYXRlZFNjaGVtYXNLZXldLmxlbmd0aDtcbiAgICAgICAgICAgIGRhdGFbdGhpcy52YWxpZGF0ZWRTY2hlbWFzS2V5XVtzY2FubmVkU2NoZW1hc0luZGV4XSA9IHNjaGVtYTtcbiAgICAgICAgICAgIGRhdGFbdGhpcy52YWxpZGF0aW9uRXJyb3JzS2V5XVtzY2FubmVkU2NoZW1hc0luZGV4XSA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGVycm9yQ291bnQgPSB0aGlzLmVycm9ycy5sZW5ndGg7XG4gICAgdmFyIGVycm9yID0gdGhpcy52YWxpZGF0ZUJhc2ljKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlTnVtZXJpYyhkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcbiAgICAgICAgfHwgdGhpcy52YWxpZGF0ZVN0cmluZyhkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcbiAgICAgICAgfHwgdGhpcy52YWxpZGF0ZUFycmF5KGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlT2JqZWN0KGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlQ29tYmluYXRpb25zKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlSHlwZXJtZWRpYShkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcbiAgICAgICAgfHwgdGhpcy52YWxpZGF0ZUZvcm1hdChkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcbiAgICAgICAgfHwgdGhpcy52YWxpZGF0ZURlZmluZWRLZXl3b3JkcyhkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcbiAgICAgICAgfHwgbnVsbDtcblxuICAgIGlmICh0b3BMZXZlbCkge1xuICAgICAgICB3aGlsZSAodGhpcy5zY2FubmVkLmxlbmd0aCkge1xuICAgICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLnNjYW5uZWQucG9wKCk7XG4gICAgICAgICAgICBkZWxldGUgaXRlbVt0aGlzLnZhbGlkYXRlZFNjaGVtYXNLZXldO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2Nhbm5lZEZyb3plbiA9IFtdO1xuICAgICAgICB0aGlzLnNjYW5uZWRGcm96ZW5TY2hlbWFzID0gW107XG4gICAgfVxuXG4gICAgaWYgKGVycm9yIHx8IGVycm9yQ291bnQgIT09IHRoaXMuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICB3aGlsZSAoKGRhdGFQYXRoUGFydHMgJiYgZGF0YVBhdGhQYXJ0cy5sZW5ndGgpIHx8IChzY2hlbWFQYXRoUGFydHMgJiYgc2NoZW1hUGF0aFBhcnRzLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIHZhciBkYXRhUGFydCA9IChkYXRhUGF0aFBhcnRzICYmIGRhdGFQYXRoUGFydHMubGVuZ3RoKSA/IFwiXCIgKyBkYXRhUGF0aFBhcnRzLnBvcCgpIDogbnVsbDtcbiAgICAgICAgICAgIHZhciBzY2hlbWFQYXJ0ID0gKHNjaGVtYVBhdGhQYXJ0cyAmJiBzY2hlbWFQYXRoUGFydHMubGVuZ3RoKSA/IFwiXCIgKyBzY2hlbWFQYXRoUGFydHMucG9wKCkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvci5wcmVmaXhXaXRoKGRhdGFQYXJ0LCBzY2hlbWFQYXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucHJlZml4RXJyb3JzKGVycm9yQ291bnQsIGRhdGFQYXJ0LCBzY2hlbWFQYXJ0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzY2FubmVkRnJvemVuU2NoZW1hSW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5zY2FubmVkRnJvemVuVmFsaWRhdGlvbkVycm9yc1tmcm96ZW5JbmRleF1bc2Nhbm5lZEZyb3plblNjaGVtYUluZGV4XSA9IHRoaXMuZXJyb3JzLnNsaWNlKHN0YXJ0RXJyb3JDb3VudCk7XG4gICAgfSBlbHNlIGlmIChzY2FubmVkU2NoZW1hc0luZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIGRhdGFbdGhpcy52YWxpZGF0aW9uRXJyb3JzS2V5XVtzY2FubmVkU2NoZW1hc0luZGV4XSA9IHRoaXMuZXJyb3JzLnNsaWNlKHN0YXJ0RXJyb3JDb3VudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xufTtcblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlRm9ybWF0ID0gZnVuY3Rpb24gKGRhdGEsIHNjaGVtYSkge1xuICAgIGlmICh0eXBlb2Ygc2NoZW1hLmZvcm1hdCAhPT0gJ3N0cmluZycgfHwgIXRoaXMuZm9ybWF0VmFsaWRhdG9yc1tzY2hlbWEuZm9ybWF0XSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGVycm9yTWVzc2FnZSA9IHRoaXMuZm9ybWF0VmFsaWRhdG9yc1tzY2hlbWEuZm9ybWF0XS5jYWxsKG51bGwsIGRhdGEsIHNjaGVtYSk7XG4gICAgaWYgKHR5cGVvZiBlcnJvck1lc3NhZ2UgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBlcnJvck1lc3NhZ2UgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuRk9STUFUX0NVU1RPTSwge21lc3NhZ2U6IGVycm9yTWVzc2FnZX0sICcnLCAnL2Zvcm1hdCcsIG51bGwsIGRhdGEsIHNjaGVtYSk7XG4gICAgfSBlbHNlIGlmIChlcnJvck1lc3NhZ2UgJiYgdHlwZW9mIGVycm9yTWVzc2FnZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5GT1JNQVRfQ1VTVE9NLCB7bWVzc2FnZTogZXJyb3JNZXNzYWdlLm1lc3NhZ2UgfHwgXCI/XCJ9LCBlcnJvck1lc3NhZ2UuZGF0YVBhdGggfHwgJycsIGVycm9yTWVzc2FnZS5zY2hlbWFQYXRoIHx8IFwiL2Zvcm1hdFwiLCBudWxsLCBkYXRhLCBzY2hlbWEpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZURlZmluZWRLZXl3b3JkcyA9IGZ1bmN0aW9uIChkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aCkge1xuICAgIGZvciAodmFyIGtleSBpbiB0aGlzLmRlZmluZWRLZXl3b3Jkcykge1xuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYVtrZXldID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHZhbGlkYXRpb25GdW5jdGlvbnMgPSB0aGlzLmRlZmluZWRLZXl3b3Jkc1trZXldO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbGlkYXRpb25GdW5jdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBmdW5jID0gdmFsaWRhdGlvbkZ1bmN0aW9uc1tpXTtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBmdW5jKGRhdGEsIHNjaGVtYVtrZXldLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHJlc3VsdCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLktFWVdPUkRfQ1VTVE9NLCB7XG4gICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXN1bHRcbiAgICAgICAgICAgICAgICB9LCAnJywgJycsIG51bGwsIGRhdGEsIHNjaGVtYSkucHJlZml4V2l0aChudWxsLCBrZXkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgJiYgdHlwZW9mIHJlc3VsdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29kZSA9IHJlc3VsdC5jb2RlO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29kZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFFcnJvckNvZGVzW2NvZGVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZGVmaW5lZCBlcnJvciBjb2RlICh1c2UgZGVmaW5lRXJyb3IpOiAnICsgY29kZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29kZSA9IEVycm9yQ29kZXNbY29kZV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29kZSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZSA9IEVycm9yQ29kZXMuS0VZV09SRF9DVVNUT007XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlUGFyYW1zID0gKHR5cGVvZiByZXN1bHQubWVzc2FnZSA9PT0gJ29iamVjdCcpID8gcmVzdWx0Lm1lc3NhZ2UgOiB7XG4gICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXN1bHQubWVzc2FnZSB8fCBcIj9cIlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdmFyIHNjaGVtYVBhdGggPSByZXN1bHQuc2NoZW1hUGF0aCB8fCAoXCIvXCIgKyBrZXkucmVwbGFjZSgvfi9nLCAnfjAnKS5yZXBsYWNlKC9cXC8vZywgJ34xJykpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKGNvZGUsIG1lc3NhZ2VQYXJhbXMsIHJlc3VsdC5kYXRhUGF0aCB8fCBudWxsLCBzY2hlbWFQYXRoLCBudWxsLCBkYXRhLCBzY2hlbWEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZnVuY3Rpb24gcmVjdXJzaXZlQ29tcGFyZShBLCBCKSB7XG4gICAgaWYgKEEgPT09IEIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChBICYmIEIgJiYgdHlwZW9mIEEgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIEIgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoQSkgIT09IEFycmF5LmlzQXJyYXkoQikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KEEpKSB7XG4gICAgICAgICAgICBpZiAoQS5sZW5ndGggIT09IEIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBBLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZWN1cnNpdmVDb21wYXJlKEFbaV0sIEJbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIga2V5O1xuICAgICAgICAgICAgZm9yIChrZXkgaW4gQSkge1xuICAgICAgICAgICAgICAgIGlmIChCW2tleV0gPT09IHVuZGVmaW5lZCAmJiBBW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChrZXkgaW4gQikge1xuICAgICAgICAgICAgICAgIGlmIChBW2tleV0gPT09IHVuZGVmaW5lZCAmJiBCW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChrZXkgaW4gQSkge1xuICAgICAgICAgICAgICAgIGlmICghcmVjdXJzaXZlQ29tcGFyZShBW2tleV0sIEJba2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZUJhc2ljID0gZnVuY3Rpb24gdmFsaWRhdGVCYXNpYyhkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aCkge1xuICAgIHZhciBlcnJvcjtcbiAgICBpZiAoZXJyb3IgPSB0aGlzLnZhbGlkYXRlVHlwZShkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yLnByZWZpeFdpdGgobnVsbCwgXCJ0eXBlXCIpO1xuICAgIH1cbiAgICBpZiAoZXJyb3IgPSB0aGlzLnZhbGlkYXRlRW51bShkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yLnByZWZpeFdpdGgobnVsbCwgXCJ0eXBlXCIpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlVHlwZSA9IGZ1bmN0aW9uIHZhbGlkYXRlVHlwZShkYXRhLCBzY2hlbWEpIHtcbiAgICBpZiAoc2NoZW1hLnR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGRhdGFUeXBlID0gdHlwZW9mIGRhdGE7XG4gICAgaWYgKGRhdGEgPT09IG51bGwpIHtcbiAgICAgICAgZGF0YVR5cGUgPSBcIm51bGxcIjtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgZGF0YVR5cGUgPSBcImFycmF5XCI7XG4gICAgfVxuICAgIHZhciBhbGxvd2VkVHlwZXMgPSBzY2hlbWEudHlwZTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYWxsb3dlZFR5cGVzKSkge1xuICAgICAgICBhbGxvd2VkVHlwZXMgPSBbYWxsb3dlZFR5cGVzXTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbG93ZWRUeXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdHlwZSA9IGFsbG93ZWRUeXBlc1tpXTtcbiAgICAgICAgaWYgKHR5cGUgPT09IGRhdGFUeXBlIHx8ICh0eXBlID09PSBcImludGVnZXJcIiAmJiBkYXRhVHlwZSA9PT0gXCJudW1iZXJcIiAmJiAoZGF0YSAlIDEgPT09IDApKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5JTlZBTElEX1RZUEUsIHtcbiAgICAgICAgdHlwZTogZGF0YVR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBhbGxvd2VkVHlwZXMuam9pbihcIi9cIilcbiAgICB9LCAnJywgJycsIG51bGwsIGRhdGEsIHNjaGVtYSk7XG59O1xuXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZUVudW0gPSBmdW5jdGlvbiB2YWxpZGF0ZUVudW0oZGF0YSwgc2NoZW1hKSB7XG4gICAgaWYgKHNjaGVtYVtcImVudW1cIl0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY2hlbWFbXCJlbnVtXCJdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbnVtVmFsID0gc2NoZW1hW1wiZW51bVwiXVtpXTtcbiAgICAgICAgaWYgKHJlY3Vyc2l2ZUNvbXBhcmUoZGF0YSwgZW51bVZhbCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuRU5VTV9NSVNNQVRDSCwge3ZhbHVlOiAodHlwZW9mIEpTT04gIT09ICd1bmRlZmluZWQnKSA/IEpTT04uc3RyaW5naWZ5KGRhdGEpIDogZGF0YX0sICcnLCAnJywgbnVsbCwgZGF0YSwgc2NoZW1hKTtcbn07XG5cblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlTnVtZXJpYyA9IGZ1bmN0aW9uIHZhbGlkYXRlTnVtZXJpYyhkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aCkge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlTXVsdGlwbGVPZihkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcbiAgICAgICAgfHwgdGhpcy52YWxpZGF0ZU1pbk1heChkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcbiAgICAgICAgfHwgdGhpcy52YWxpZGF0ZU5hTihkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcbiAgICAgICAgfHwgbnVsbDtcbn07XG5cbnZhciBDTE9TRV9FTk9VR0hfTE9XID0gTWF0aC5wb3coMiwgLTUxKTtcbnZhciBDTE9TRV9FTk9VR0hfSElHSCA9IDEgLSBDTE9TRV9FTk9VR0hfTE9XO1xuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVNdWx0aXBsZU9mID0gZnVuY3Rpb24gdmFsaWRhdGVNdWx0aXBsZU9mKGRhdGEsIHNjaGVtYSkge1xuICAgIHZhciBtdWx0aXBsZU9mID0gc2NoZW1hLm11bHRpcGxlT2YgfHwgc2NoZW1hLmRpdmlzaWJsZUJ5O1xuICAgIGlmIChtdWx0aXBsZU9mID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICB2YXIgcmVtYWluZGVyID0gKGRhdGEgLyBtdWx0aXBsZU9mKSAlIDE7XG4gICAgICAgIGlmIChyZW1haW5kZXIgPj0gQ0xPU0VfRU5PVUdIX0xPVyAmJiByZW1haW5kZXIgPCBDTE9TRV9FTk9VR0hfSElHSCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5OVU1CRVJfTVVMVElQTEVfT0YsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogZGF0YSxcbiAgICAgICAgICAgICAgICBtdWx0aXBsZU9mOiBtdWx0aXBsZU9mXG4gICAgICAgICAgICB9LCAnJywgJycsIG51bGwsIGRhdGEsIHNjaGVtYSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZU1pbk1heCA9IGZ1bmN0aW9uIHZhbGlkYXRlTWluTWF4KGRhdGEsIHNjaGVtYSkge1xuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHNjaGVtYS5taW5pbXVtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGRhdGEgPCBzY2hlbWEubWluaW11bSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5OVU1CRVJfTUlOSU1VTSwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBkYXRhLFxuICAgICAgICAgICAgICAgIG1pbmltdW06IHNjaGVtYS5taW5pbXVtXG4gICAgICAgICAgICB9LCAnJywgJy9taW5pbXVtJywgbnVsbCwgZGF0YSwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hLmV4Y2x1c2l2ZU1pbmltdW0gJiYgZGF0YSA9PT0gc2NoZW1hLm1pbmltdW0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuTlVNQkVSX01JTklNVU1fRVhDTFVTSVZFLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGRhdGEsXG4gICAgICAgICAgICAgICAgbWluaW11bTogc2NoZW1hLm1pbmltdW1cbiAgICAgICAgICAgIH0sICcnLCAnL2V4Y2x1c2l2ZU1pbmltdW0nLCBudWxsLCBkYXRhLCBzY2hlbWEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChzY2hlbWEubWF4aW11bSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChkYXRhID4gc2NoZW1hLm1heGltdW0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuTlVNQkVSX01BWElNVU0sIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogZGF0YSxcbiAgICAgICAgICAgICAgICBtYXhpbXVtOiBzY2hlbWEubWF4aW11bVxuICAgICAgICAgICAgfSwgJycsICcvbWF4aW11bScsIG51bGwsIGRhdGEsIHNjaGVtYSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjaGVtYS5leGNsdXNpdmVNYXhpbXVtICYmIGRhdGEgPT09IHNjaGVtYS5tYXhpbXVtKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLk5VTUJFUl9NQVhJTVVNX0VYQ0xVU0lWRSwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBkYXRhLFxuICAgICAgICAgICAgICAgIG1heGltdW06IHNjaGVtYS5tYXhpbXVtXG4gICAgICAgICAgICB9LCAnJywgJy9leGNsdXNpdmVNYXhpbXVtJywgbnVsbCwgZGF0YSwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlTmFOID0gZnVuY3Rpb24gdmFsaWRhdGVOYU4oZGF0YSwgc2NoZW1hKSB7XG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoaXNOYU4oZGF0YSkgPT09IHRydWUgfHwgZGF0YSA9PT0gSW5maW5pdHkgfHwgZGF0YSA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuTlVNQkVSX05PVF9BX05VTUJFUiwge3ZhbHVlOiBkYXRhfSwgJycsICcvdHlwZScsIG51bGwsIGRhdGEsIHNjaGVtYSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVTdHJpbmcgPSBmdW5jdGlvbiB2YWxpZGF0ZVN0cmluZyhkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aCkge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlU3RyaW5nTGVuZ3RoKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlU3RyaW5nUGF0dGVybihkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcbiAgICAgICAgfHwgbnVsbDtcbn07XG5cblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlU3RyaW5nTGVuZ3RoID0gZnVuY3Rpb24gdmFsaWRhdGVTdHJpbmdMZW5ndGgoZGF0YSwgc2NoZW1hKSB7XG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoc2NoZW1hLm1pbkxlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCA8IHNjaGVtYS5taW5MZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuU1RSSU5HX0xFTkdUSF9TSE9SVCwge1xuICAgICAgICAgICAgICAgIGxlbmd0aDogZGF0YS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgbWluaW11bTogc2NoZW1hLm1pbkxlbmd0aFxuICAgICAgICAgICAgfSwgJycsICcvbWluTGVuZ3RoJywgbnVsbCwgZGF0YSwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2NoZW1hLm1heExlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCA+IHNjaGVtYS5tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuU1RSSU5HX0xFTkdUSF9MT05HLCB7XG4gICAgICAgICAgICAgICAgbGVuZ3RoOiBkYXRhLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBtYXhpbXVtOiBzY2hlbWEubWF4TGVuZ3RoXG4gICAgICAgICAgICB9LCAnJywgJy9tYXhMZW5ndGgnLCBudWxsLCBkYXRhLCBzY2hlbWEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVTdHJpbmdQYXR0ZXJuID0gZnVuY3Rpb24gdmFsaWRhdGVTdHJpbmdQYXR0ZXJuKGRhdGEsIHNjaGVtYSkge1xuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiB8fCAodHlwZW9mIHNjaGVtYS5wYXR0ZXJuICE9PSBcInN0cmluZ1wiICYmICEoc2NoZW1hLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHApKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIHJlZ2V4cDtcbiAgICBpZiAoc2NoZW1hLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgcmVnZXhwID0gc2NoZW1hLnBhdHRlcm47XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgYm9keSwgZmxhZ3MgPSAnJztcbiAgICAgICAgLy8gQ2hlY2sgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFsc1xuICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi81LjEvI3NlYy03LjguNVxuICAgICAgICB2YXIgbGl0ZXJhbCA9IHNjaGVtYS5wYXR0ZXJuLm1hdGNoKC9eXFwvKC4rKVxcLyhbaW1nXSopJC8pO1xuICAgICAgICBpZiAobGl0ZXJhbCkge1xuICAgICAgICAgICAgYm9keSA9IGxpdGVyYWxbMV07XG4gICAgICAgICAgICBmbGFncyA9IGxpdGVyYWxbMl07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBib2R5ID0gc2NoZW1hLnBhdHRlcm47XG4gICAgICAgIH1cbiAgICAgICAgcmVnZXhwID0gbmV3IFJlZ0V4cChib2R5LCBmbGFncyk7XG4gICAgfVxuICAgIGlmICghcmVnZXhwLnRlc3QoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5TVFJJTkdfUEFUVEVSTiwge3BhdHRlcm46IHNjaGVtYS5wYXR0ZXJufSwgJycsICcvcGF0dGVybicsIG51bGwsIGRhdGEsIHNjaGVtYSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVBcnJheSA9IGZ1bmN0aW9uIHZhbGlkYXRlQXJyYXkoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQXJyYXlMZW5ndGgoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpXG4gICAgICAgIHx8IHRoaXMudmFsaWRhdGVBcnJheVVuaXF1ZUl0ZW1zKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlQXJyYXlJdGVtcyhkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcbiAgICAgICAgfHwgbnVsbDtcbn07XG5cblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlQXJyYXlMZW5ndGggPSBmdW5jdGlvbiB2YWxpZGF0ZUFycmF5TGVuZ3RoKGRhdGEsIHNjaGVtYSkge1xuICAgIHZhciBlcnJvcjtcbiAgICBpZiAoc2NoZW1hLm1pbkl0ZW1zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGRhdGEubGVuZ3RoIDwgc2NoZW1hLm1pbkl0ZW1zKSB7XG4gICAgICAgICAgICBlcnJvciA9IHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5BUlJBWV9MRU5HVEhfU0hPUlQsIHtcbiAgICAgICAgICAgICAgICBsZW5ndGg6IGRhdGEubGVuZ3RoLFxuICAgICAgICAgICAgICAgIG1pbmltdW06IHNjaGVtYS5taW5JdGVtc1xuICAgICAgICAgICAgfSwgJycsICcvbWluSXRlbXMnLCBudWxsLCBkYXRhLCBzY2hlbWEpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChzY2hlbWEubWF4SXRlbXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoZGF0YS5sZW5ndGggPiBzY2hlbWEubWF4SXRlbXMpIHtcbiAgICAgICAgICAgIGVycm9yID0gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLkFSUkFZX0xFTkdUSF9MT05HLCB7XG4gICAgICAgICAgICAgICAgbGVuZ3RoOiBkYXRhLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBtYXhpbXVtOiBzY2hlbWEubWF4SXRlbXNcbiAgICAgICAgICAgIH0sICcnLCAnL21heEl0ZW1zJywgbnVsbCwgZGF0YSwgc2NoZW1hKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmhhbmRsZUVycm9yKGVycm9yKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlQXJyYXlVbmlxdWVJdGVtcyA9IGZ1bmN0aW9uIHZhbGlkYXRlQXJyYXlVbmlxdWVJdGVtcyhkYXRhLCBzY2hlbWEpIHtcbiAgICBpZiAoc2NoZW1hLnVuaXF1ZUl0ZW1zKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyBqIDwgZGF0YS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChyZWN1cnNpdmVDb21wYXJlKGRhdGFbaV0sIGRhdGFbal0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnJvciA9IHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5BUlJBWV9VTklRVUUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoMTogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoMjogalxuICAgICAgICAgICAgICAgICAgICB9LCAnJywgJy91bmlxdWVJdGVtcycsIG51bGwsIGRhdGEsIHNjaGVtYSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhbmRsZUVycm9yKGVycm9yKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVBcnJheUl0ZW1zID0gZnVuY3Rpb24gdmFsaWRhdGVBcnJheUl0ZW1zKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKSB7XG4gICAgaWYgKHNjaGVtYS5pdGVtcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgZXJyb3IsIGk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLml0ZW1zKSkge1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGkgPCBzY2hlbWEuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yID0gdGhpcy52YWxpZGF0ZUFsbChkYXRhW2ldLCBzY2hlbWEuaXRlbXNbaV0sIFtpXSwgW1wiaXRlbXNcIiwgaV0sIGRhdGFQb2ludGVyUGF0aCArIFwiL1wiICsgaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hLmFkZGl0aW9uYWxJdGVtcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXNjaGVtYS5hZGRpdGlvbmFsSXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gKHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5BUlJBWV9BRERJVElPTkFMX0lURU1TLCB7fSwgJy8nICsgaSwgJy9hZGRpdGlvbmFsSXRlbXMnLCBudWxsLCBkYXRhLCBzY2hlbWEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhbmRsZUVycm9yKGVycm9yKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3IgPSB0aGlzLnZhbGlkYXRlQWxsKGRhdGFbaV0sIHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMsIFtpXSwgW1wiYWRkaXRpb25hbEl0ZW1zXCJdLCBkYXRhUG9pbnRlclBhdGggKyBcIi9cIiArIGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGVycm9yID0gdGhpcy52YWxpZGF0ZUFsbChkYXRhW2ldLCBzY2hlbWEuaXRlbXMsIFtpXSwgW1wiaXRlbXNcIl0sIGRhdGFQb2ludGVyUGF0aCArIFwiL1wiICsgaSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZU9iamVjdCA9IGZ1bmN0aW9uIHZhbGlkYXRlT2JqZWN0KGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKSB7XG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSBcIm9iamVjdFwiIHx8IGRhdGEgPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVPYmplY3RNaW5NYXhQcm9wZXJ0aWVzKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlT2JqZWN0UmVxdWlyZWRQcm9wZXJ0aWVzKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlT2JqZWN0UHJvcGVydGllcyhkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcbiAgICAgICAgfHwgdGhpcy52YWxpZGF0ZU9iamVjdERlcGVuZGVuY2llcyhkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcbiAgICAgICAgfHwgbnVsbDtcbn07XG5cblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlT2JqZWN0TWluTWF4UHJvcGVydGllcyA9IGZ1bmN0aW9uIHZhbGlkYXRlT2JqZWN0TWluTWF4UHJvcGVydGllcyhkYXRhLCBzY2hlbWEpIHtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGRhdGEpO1xuICAgIHZhciBlcnJvcjtcbiAgICBpZiAoc2NoZW1hLm1pblByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPCBzY2hlbWEubWluUHJvcGVydGllcykge1xuICAgICAgICAgICAgZXJyb3IgPSB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuT0JKRUNUX1BST1BFUlRJRVNfTUlOSU1VTSwge1xuICAgICAgICAgICAgICAgIHByb3BlcnR5Q291bnQ6IGtleXMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIG1pbmltdW06IHNjaGVtYS5taW5Qcm9wZXJ0aWVzXG4gICAgICAgICAgICB9LCAnJywgJy9taW5Qcm9wZXJ0aWVzJywgbnVsbCwgZGF0YSwgc2NoZW1hKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmhhbmRsZUVycm9yKGVycm9yKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2NoZW1hLm1heFByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPiBzY2hlbWEubWF4UHJvcGVydGllcykge1xuICAgICAgICAgICAgZXJyb3IgPSB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuT0JKRUNUX1BST1BFUlRJRVNfTUFYSU1VTSwge1xuICAgICAgICAgICAgICAgIHByb3BlcnR5Q291bnQ6IGtleXMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIG1heGltdW06IHNjaGVtYS5tYXhQcm9wZXJ0aWVzXG4gICAgICAgICAgICB9LCAnJywgJy9tYXhQcm9wZXJ0aWVzJywgbnVsbCwgZGF0YSwgc2NoZW1hKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmhhbmRsZUVycm9yKGVycm9yKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlT2JqZWN0UmVxdWlyZWRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gdmFsaWRhdGVPYmplY3RSZXF1aXJlZFByb3BlcnRpZXMoZGF0YSwgc2NoZW1hKSB7XG4gICAgaWYgKHNjaGVtYS5yZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NoZW1hLnJlcXVpcmVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gc2NoZW1hLnJlcXVpcmVkW2ldO1xuICAgICAgICAgICAgaWYgKGRhdGFba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9yID0gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLk9CSkVDVF9SRVFVSVJFRCwge2tleToga2V5fSwgJycsICcvcmVxdWlyZWQvJyArIGksIG51bGwsIGRhdGEsIHNjaGVtYSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZU9iamVjdFByb3BlcnRpZXMgPSBmdW5jdGlvbiB2YWxpZGF0ZU9iamVjdFByb3BlcnRpZXMoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpIHtcbiAgICB2YXIgZXJyb3I7XG4gICAgZm9yICh2YXIga2V5IGluIGRhdGEpIHtcbiAgICAgICAgdmFyIGtleVBvaW50ZXJQYXRoID0gZGF0YVBvaW50ZXJQYXRoICsgXCIvXCIgKyBrZXkucmVwbGFjZSgvfi9nLCAnfjAnKS5yZXBsYWNlKC9cXC8vZywgJ34xJyk7XG4gICAgICAgIHZhciBmb3VuZE1hdGNoID0gZmFsc2U7XG4gICAgICAgIGlmIChzY2hlbWEucHJvcGVydGllcyAhPT0gdW5kZWZpbmVkICYmIHNjaGVtYS5wcm9wZXJ0aWVzW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm91bmRNYXRjaCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoZXJyb3IgPSB0aGlzLnZhbGlkYXRlQWxsKGRhdGFba2V5XSwgc2NoZW1hLnByb3BlcnRpZXNba2V5XSwgW2tleV0sIFtcInByb3BlcnRpZXNcIiwga2V5XSwga2V5UG9pbnRlclBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzY2hlbWEucGF0dGVyblByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm9yICh2YXIgcGF0dGVybktleSBpbiBzY2hlbWEucGF0dGVyblByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVnZXhwID0gbmV3IFJlZ0V4cChwYXR0ZXJuS2V5KTtcbiAgICAgICAgICAgICAgICBpZiAocmVnZXhwLnRlc3Qoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBmb3VuZE1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yID0gdGhpcy52YWxpZGF0ZUFsbChkYXRhW2tleV0sIHNjaGVtYS5wYXR0ZXJuUHJvcGVydGllc1twYXR0ZXJuS2V5XSwgW2tleV0sIFtcInBhdHRlcm5Qcm9wZXJ0aWVzXCIsIHBhdHRlcm5LZXldLCBrZXlQb2ludGVyUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWZvdW5kTWF0Y2gpIHtcbiAgICAgICAgICAgIGlmIChzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyYWNrVW5rbm93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5rbm93blByb3BlcnR5UGF0aHNba2V5UG9pbnRlclBhdGhdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMudW5rbm93blByb3BlcnR5UGF0aHNba2V5UG9pbnRlclBhdGhdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLk9CSkVDVF9BRERJVElPTkFMX1BST1BFUlRJRVMsIHtrZXk6IGtleX0sICcnLCAnL2FkZGl0aW9uYWxQcm9wZXJ0aWVzJywgbnVsbCwgZGF0YSwgc2NoZW1hKS5wcmVmaXhXaXRoKGtleSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oYW5kbGVFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgPSB0aGlzLnZhbGlkYXRlQWxsKGRhdGFba2V5XSwgc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLCBba2V5XSwgW1wiYWRkaXRpb25hbFByb3BlcnRpZXNcIl0sIGtleVBvaW50ZXJQYXRoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRyYWNrVW5rbm93blByb3BlcnRpZXMgJiYgIXRoaXMua25vd25Qcm9wZXJ0eVBhdGhzW2tleVBvaW50ZXJQYXRoXSkge1xuICAgICAgICAgICAgICAgIHRoaXMudW5rbm93blByb3BlcnR5UGF0aHNba2V5UG9pbnRlclBhdGhdID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRyYWNrVW5rbm93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHRoaXMua25vd25Qcm9wZXJ0eVBhdGhzW2tleVBvaW50ZXJQYXRoXSA9IHRydWU7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy51bmtub3duUHJvcGVydHlQYXRoc1trZXlQb2ludGVyUGF0aF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZU9iamVjdERlcGVuZGVuY2llcyA9IGZ1bmN0aW9uIHZhbGlkYXRlT2JqZWN0RGVwZW5kZW5jaWVzKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKSB7XG4gICAgdmFyIGVycm9yO1xuICAgIGlmIChzY2hlbWEuZGVwZW5kZW5jaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yICh2YXIgZGVwS2V5IGluIHNjaGVtYS5kZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgICAgIGlmIChkYXRhW2RlcEtleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHZhciBkZXAgPSBzY2hlbWEuZGVwZW5kZW5jaWVzW2RlcEtleV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZXAgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbZGVwXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5PQkpFQ1RfREVQRU5ERU5DWV9LRVksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGRlcEtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNzaW5nOiBkZXBcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sICcnLCAnJywgbnVsbCwgZGF0YSwgc2NoZW1hKS5wcmVmaXhXaXRoKG51bGwsIGRlcEtleSkucHJlZml4V2l0aChudWxsLCBcImRlcGVuZGVuY2llc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhbmRsZUVycm9yKGVycm9yKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkZXApKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVxdWlyZWRLZXkgPSBkZXBbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVtyZXF1aXJlZEtleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLk9CSkVDVF9ERVBFTkRFTkNZX0tFWSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGRlcEtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZzogcmVxdWlyZWRLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAnJywgJy8nICsgaSwgbnVsbCwgZGF0YSwgc2NoZW1hKS5wcmVmaXhXaXRoKG51bGwsIGRlcEtleSkucHJlZml4V2l0aChudWxsLCBcImRlcGVuZGVuY2llc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oYW5kbGVFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciA9IHRoaXMudmFsaWRhdGVBbGwoZGF0YSwgZGVwLCBbXSwgW1wiZGVwZW5kZW5jaWVzXCIsIGRlcEtleV0sIGRhdGFQb2ludGVyUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlQ29tYmluYXRpb25zID0gZnVuY3Rpb24gdmFsaWRhdGVDb21iaW5hdGlvbnMoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUFsbE9mKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKVxuICAgICAgICB8fCB0aGlzLnZhbGlkYXRlQW55T2YoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpXG4gICAgICAgIHx8IHRoaXMudmFsaWRhdGVPbmVPZihkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcbiAgICAgICAgfHwgdGhpcy52YWxpZGF0ZU5vdChkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aClcbiAgICAgICAgfHwgbnVsbDtcbn07XG5cblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlQWxsT2YgPSBmdW5jdGlvbiB2YWxpZGF0ZUFsbE9mKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKSB7XG4gICAgaWYgKHNjaGVtYS5hbGxPZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgZXJyb3I7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY2hlbWEuYWxsT2YubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHN1YlNjaGVtYSA9IHNjaGVtYS5hbGxPZltpXTtcbiAgICAgICAgaWYgKGVycm9yID0gdGhpcy52YWxpZGF0ZUFsbChkYXRhLCBzdWJTY2hlbWEsIFtdLCBbXCJhbGxPZlwiLCBpXSwgZGF0YVBvaW50ZXJQYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVBbnlPZiA9IGZ1bmN0aW9uIHZhbGlkYXRlQW55T2YoZGF0YSwgc2NoZW1hLCBkYXRhUG9pbnRlclBhdGgpIHtcbiAgICBpZiAoc2NoZW1hLmFueU9mID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICB2YXIgc3RhcnRFcnJvckNvdW50ID0gdGhpcy5lcnJvcnMubGVuZ3RoO1xuICAgIHZhciBvbGRVbmtub3duUHJvcGVydHlQYXRocywgb2xkS25vd25Qcm9wZXJ0eVBhdGhzO1xuICAgIGlmICh0aGlzLnRyYWNrVW5rbm93blByb3BlcnRpZXMpIHtcbiAgICAgICAgb2xkVW5rbm93blByb3BlcnR5UGF0aHMgPSB0aGlzLnVua25vd25Qcm9wZXJ0eVBhdGhzO1xuICAgICAgICBvbGRLbm93blByb3BlcnR5UGF0aHMgPSB0aGlzLmtub3duUHJvcGVydHlQYXRocztcbiAgICB9XG4gICAgdmFyIGVycm9yQXRFbmQgPSB0cnVlO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NoZW1hLmFueU9mLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLnRyYWNrVW5rbm93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHRoaXMudW5rbm93blByb3BlcnR5UGF0aHMgPSB7fTtcbiAgICAgICAgICAgIHRoaXMua25vd25Qcm9wZXJ0eVBhdGhzID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN1YlNjaGVtYSA9IHNjaGVtYS5hbnlPZltpXTtcblxuICAgICAgICB2YXIgZXJyb3JDb3VudCA9IHRoaXMuZXJyb3JzLmxlbmd0aDtcbiAgICAgICAgdmFyIGVycm9yID0gdGhpcy52YWxpZGF0ZUFsbChkYXRhLCBzdWJTY2hlbWEsIFtdLCBbXCJhbnlPZlwiLCBpXSwgZGF0YVBvaW50ZXJQYXRoKTtcblxuICAgICAgICBpZiAoZXJyb3IgPT09IG51bGwgJiYgZXJyb3JDb3VudCA9PT0gdGhpcy5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9ycyA9IHRoaXMuZXJyb3JzLnNsaWNlKDAsIHN0YXJ0RXJyb3JDb3VudCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRyYWNrVW5rbm93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrbm93bktleSBpbiB0aGlzLmtub3duUHJvcGVydHlQYXRocykge1xuICAgICAgICAgICAgICAgICAgICBvbGRLbm93blByb3BlcnR5UGF0aHNba25vd25LZXldID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9sZFVua25vd25Qcm9wZXJ0eVBhdGhzW2tub3duS2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgdW5rbm93bktleSBpbiB0aGlzLnVua25vd25Qcm9wZXJ0eVBhdGhzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb2xkS25vd25Qcm9wZXJ0eVBhdGhzW3Vua25vd25LZXldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbGRVbmtub3duUHJvcGVydHlQYXRoc1t1bmtub3duS2V5XSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjb250aW51ZSBsb29waW5nIHNvIHdlIGNhdGNoIGFsbCB0aGUgcHJvcGVydHkgZGVmaW5pdGlvbnMsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIHJldHVybiBhbiBlcnJvclxuICAgICAgICAgICAgICAgIGVycm9yQXRFbmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBlcnJvcnMucHVzaChlcnJvci5wcmVmaXhXaXRoKG51bGwsIFwiXCIgKyBpKS5wcmVmaXhXaXRoKG51bGwsIFwiYW55T2ZcIikpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLnRyYWNrVW5rbm93blByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy51bmtub3duUHJvcGVydHlQYXRocyA9IG9sZFVua25vd25Qcm9wZXJ0eVBhdGhzO1xuICAgICAgICB0aGlzLmtub3duUHJvcGVydHlQYXRocyA9IG9sZEtub3duUHJvcGVydHlQYXRocztcbiAgICB9XG4gICAgaWYgKGVycm9yQXRFbmQpIHtcbiAgICAgICAgZXJyb3JzID0gZXJyb3JzLmNvbmNhdCh0aGlzLmVycm9ycy5zbGljZShzdGFydEVycm9yQ291bnQpKTtcbiAgICAgICAgdGhpcy5lcnJvcnMgPSB0aGlzLmVycm9ycy5zbGljZSgwLCBzdGFydEVycm9yQ291bnQpO1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLkFOWV9PRl9NSVNTSU5HLCB7fSwgXCJcIiwgXCIvYW55T2ZcIiwgZXJyb3JzLCBkYXRhLCBzY2hlbWEpO1xuICAgIH1cbn07XG5cblZhbGlkYXRvckNvbnRleHQucHJvdG90eXBlLnZhbGlkYXRlT25lT2YgPSBmdW5jdGlvbiB2YWxpZGF0ZU9uZU9mKGRhdGEsIHNjaGVtYSwgZGF0YVBvaW50ZXJQYXRoKSB7XG4gICAgaWYgKHNjaGVtYS5vbmVPZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgdmFsaWRJbmRleCA9IG51bGw7XG4gICAgdmFyIGVycm9ycyA9IFtdO1xuICAgIHZhciBzdGFydEVycm9yQ291bnQgPSB0aGlzLmVycm9ycy5sZW5ndGg7XG4gICAgdmFyIG9sZFVua25vd25Qcm9wZXJ0eVBhdGhzLCBvbGRLbm93blByb3BlcnR5UGF0aHM7XG4gICAgaWYgKHRoaXMudHJhY2tVbmtub3duUHJvcGVydGllcykge1xuICAgICAgICBvbGRVbmtub3duUHJvcGVydHlQYXRocyA9IHRoaXMudW5rbm93blByb3BlcnR5UGF0aHM7XG4gICAgICAgIG9sZEtub3duUHJvcGVydHlQYXRocyA9IHRoaXMua25vd25Qcm9wZXJ0eVBhdGhzO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjaGVtYS5vbmVPZi5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy50cmFja1Vua25vd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICB0aGlzLnVua25vd25Qcm9wZXJ0eVBhdGhzID0ge307XG4gICAgICAgICAgICB0aGlzLmtub3duUHJvcGVydHlQYXRocyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdWJTY2hlbWEgPSBzY2hlbWEub25lT2ZbaV07XG5cbiAgICAgICAgdmFyIGVycm9yQ291bnQgPSB0aGlzLmVycm9ycy5sZW5ndGg7XG4gICAgICAgIHZhciBlcnJvciA9IHRoaXMudmFsaWRhdGVBbGwoZGF0YSwgc3ViU2NoZW1hLCBbXSwgW1wib25lT2ZcIiwgaV0sIGRhdGFQb2ludGVyUGF0aCk7XG5cbiAgICAgICAgaWYgKGVycm9yID09PSBudWxsICYmIGVycm9yQ291bnQgPT09IHRoaXMuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHZhbGlkSW5kZXggPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB2YWxpZEluZGV4ID0gaTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvcnMgPSB0aGlzLmVycm9ycy5zbGljZSgwLCBzdGFydEVycm9yQ291bnQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yKEVycm9yQ29kZXMuT05FX09GX01VTFRJUExFLCB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4MTogdmFsaWRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgyOiBpXG4gICAgICAgICAgICAgICAgfSwgXCJcIiwgXCIvb25lT2ZcIiwgbnVsbCwgZGF0YSwgc2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnRyYWNrVW5rbm93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrbm93bktleSBpbiB0aGlzLmtub3duUHJvcGVydHlQYXRocykge1xuICAgICAgICAgICAgICAgICAgICBvbGRLbm93blByb3BlcnR5UGF0aHNba25vd25LZXldID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9sZFVua25vd25Qcm9wZXJ0eVBhdGhzW2tub3duS2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgdW5rbm93bktleSBpbiB0aGlzLnVua25vd25Qcm9wZXJ0eVBhdGhzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb2xkS25vd25Qcm9wZXJ0eVBhdGhzW3Vua25vd25LZXldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbGRVbmtub3duUHJvcGVydHlQYXRoc1t1bmtub3duS2V5XSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy50cmFja1Vua25vd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMudW5rbm93blByb3BlcnR5UGF0aHMgPSBvbGRVbmtub3duUHJvcGVydHlQYXRocztcbiAgICAgICAgdGhpcy5rbm93blByb3BlcnR5UGF0aHMgPSBvbGRLbm93blByb3BlcnR5UGF0aHM7XG4gICAgfVxuICAgIGlmICh2YWxpZEluZGV4ID09PSBudWxsKSB7XG4gICAgICAgIGVycm9ycyA9IGVycm9ycy5jb25jYXQodGhpcy5lcnJvcnMuc2xpY2Uoc3RhcnRFcnJvckNvdW50KSk7XG4gICAgICAgIHRoaXMuZXJyb3JzID0gdGhpcy5lcnJvcnMuc2xpY2UoMCwgc3RhcnRFcnJvckNvdW50KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3IoRXJyb3JDb2Rlcy5PTkVfT0ZfTUlTU0lORywge30sIFwiXCIsIFwiL29uZU9mXCIsIGVycm9ycywgZGF0YSwgc2NoZW1hKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVycm9ycyA9IHRoaXMuZXJyb3JzLnNsaWNlKDAsIHN0YXJ0RXJyb3JDb3VudCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuVmFsaWRhdG9yQ29udGV4dC5wcm90b3R5cGUudmFsaWRhdGVOb3QgPSBmdW5jdGlvbiB2YWxpZGF0ZU5vdChkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aCkge1xuICAgIGlmIChzY2hlbWEubm90ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBvbGRFcnJvckNvdW50ID0gdGhpcy5lcnJvcnMubGVuZ3RoO1xuICAgIHZhciBvbGRVbmtub3duUHJvcGVydHlQYXRocywgb2xkS25vd25Qcm9wZXJ0eVBhdGhzO1xuICAgIGlmICh0aGlzLnRyYWNrVW5rbm93blByb3BlcnRpZXMpIHtcbiAgICAgICAgb2xkVW5rbm93blByb3BlcnR5UGF0aHMgPSB0aGlzLnVua25vd25Qcm9wZXJ0eVBhdGhzO1xuICAgICAgICBvbGRLbm93blByb3BlcnR5UGF0aHMgPSB0aGlzLmtub3duUHJvcGVydHlQYXRocztcbiAgICAgICAgdGhpcy51bmtub3duUHJvcGVydHlQYXRocyA9IHt9O1xuICAgICAgICB0aGlzLmtub3duUHJvcGVydHlQYXRocyA9IHt9O1xuICAgIH1cbiAgICB2YXIgZXJyb3IgPSB0aGlzLnZhbGlkYXRlQWxsKGRhdGEsIHNjaGVtYS5ub3QsIG51bGwsIG51bGwsIGRhdGFQb2ludGVyUGF0aCk7XG4gICAgdmFyIG5vdEVycm9ycyA9IHRoaXMuZXJyb3JzLnNsaWNlKG9sZEVycm9yQ291bnQpO1xuICAgIHRoaXMuZXJyb3JzID0gdGhpcy5lcnJvcnMuc2xpY2UoMCwgb2xkRXJyb3JDb3VudCk7XG4gICAgaWYgKHRoaXMudHJhY2tVbmtub3duUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLnVua25vd25Qcm9wZXJ0eVBhdGhzID0gb2xkVW5rbm93blByb3BlcnR5UGF0aHM7XG4gICAgICAgIHRoaXMua25vd25Qcm9wZXJ0eVBhdGhzID0gb2xkS25vd25Qcm9wZXJ0eVBhdGhzO1xuICAgIH1cbiAgICBpZiAoZXJyb3IgPT09IG51bGwgJiYgbm90RXJyb3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvcihFcnJvckNvZGVzLk5PVF9QQVNTRUQsIHt9LCBcIlwiLCBcIi9ub3RcIiwgbnVsbCwgZGF0YSwgc2NoZW1hKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5WYWxpZGF0b3JDb250ZXh0LnByb3RvdHlwZS52YWxpZGF0ZUh5cGVybWVkaWEgPSBmdW5jdGlvbiB2YWxpZGF0ZUNvbWJpbmF0aW9ucyhkYXRhLCBzY2hlbWEsIGRhdGFQb2ludGVyUGF0aCkge1xuICAgIGlmICghc2NoZW1hLmxpbmtzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgZXJyb3I7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY2hlbWEubGlua3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGxkbyA9IHNjaGVtYS5saW5rc1tpXTtcbiAgICAgICAgaWYgKGxkby5yZWwgPT09IFwiZGVzY3JpYmVkYnlcIikge1xuICAgICAgICAgICAgdmFyIHRlbXBsYXRlID0gbmV3IFVyaVRlbXBsYXRlKGxkby5ocmVmKTtcbiAgICAgICAgICAgIHZhciBhbGxQcmVzZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGVtcGxhdGUudmFyTmFtZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoISh0ZW1wbGF0ZS52YXJOYW1lc1tqXSBpbiBkYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBhbGxQcmVzZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhbGxQcmVzZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIHNjaGVtYVVybCA9IHRlbXBsYXRlLmZpbGxGcm9tT2JqZWN0KGRhdGEpO1xuICAgICAgICAgICAgICAgIHZhciBzdWJTY2hlbWEgPSB7XCIkcmVmXCI6IHNjaGVtYVVybH07XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yID0gdGhpcy52YWxpZGF0ZUFsbChkYXRhLCBzdWJTY2hlbWEsIFtdLCBbXCJsaW5rc1wiLCBpXSwgZGF0YVBvaW50ZXJQYXRoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufTtcblxuLy8gcGFyc2VVUkkoKSBhbmQgcmVzb2x2ZVVybCgpIGFyZSBmcm9tIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tLzEwODg4NTBcbi8vICAgLSAgcmVsZWFzZWQgYXMgcHVibGljIGRvbWFpbiBieSBhdXRob3IgKFwiWWFmZmxlXCIpIC0gc2VlIGNvbW1lbnRzIG9uIGdpc3RcblxuZnVuY3Rpb24gcGFyc2VVUkkodXJsKSB7XG4gICAgdmFyIG0gPSBTdHJpbmcodXJsKS5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJykubWF0Y2goL14oW146XFwvPyNdKzopPyhcXC9cXC8oPzpbXjpAXSooPzo6W146QF0qKT9AKT8oKFteOlxcLz8jXSopKD86OihcXGQqKSk/KSk/KFtePyNdKikoXFw/W14jXSopPygjW1xcc1xcU10qKT8vKTtcbiAgICAvLyBhdXRob3JpdHkgPSAnLy8nICsgdXNlciArICc6JyArIHBhc3MgJ0AnICsgaG9zdG5hbWUgKyAnOicgcG9ydFxuICAgIHJldHVybiAobSA/IHtcbiAgICAgICAgaHJlZjogbVswXSB8fCAnJyxcbiAgICAgICAgcHJvdG9jb2w6IG1bMV0gfHwgJycsXG4gICAgICAgIGF1dGhvcml0eTogbVsyXSB8fCAnJyxcbiAgICAgICAgaG9zdDogbVszXSB8fCAnJyxcbiAgICAgICAgaG9zdG5hbWU6IG1bNF0gfHwgJycsXG4gICAgICAgIHBvcnQ6IG1bNV0gfHwgJycsXG4gICAgICAgIHBhdGhuYW1lOiBtWzZdIHx8ICcnLFxuICAgICAgICBzZWFyY2g6IG1bN10gfHwgJycsXG4gICAgICAgIGhhc2g6IG1bOF0gfHwgJydcbiAgICB9IDogbnVsbCk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVVcmwoYmFzZSwgaHJlZikgey8vIFJGQyAzOTg2XG5cbiAgICBmdW5jdGlvbiByZW1vdmVEb3RTZWdtZW50cyhpbnB1dCkge1xuICAgICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICAgIGlucHV0LnJlcGxhY2UoL14oXFwuXFwuPyhcXC98JCkpKy8sICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcLyhcXC4oXFwvfCQpKSsvZywgJy8nKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcL1xcLlxcLiQvLCAnLy4uLycpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwvP1teXFwvXSovZywgZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICAgICAgICBpZiAocCA9PT0gJy8uLicpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnBvcCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoKHApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb3V0cHV0LmpvaW4oJycpLnJlcGxhY2UoL15cXC8vLCBpbnB1dC5jaGFyQXQoMCkgPT09ICcvJyA/ICcvJyA6ICcnKTtcbiAgICB9XG5cbiAgICBocmVmID0gcGFyc2VVUkkoaHJlZiB8fCAnJyk7XG4gICAgYmFzZSA9IHBhcnNlVVJJKGJhc2UgfHwgJycpO1xuXG4gICAgcmV0dXJuICFocmVmIHx8ICFiYXNlID8gbnVsbCA6IChocmVmLnByb3RvY29sIHx8IGJhc2UucHJvdG9jb2wpICtcbiAgICAoaHJlZi5wcm90b2NvbCB8fCBocmVmLmF1dGhvcml0eSA/IGhyZWYuYXV0aG9yaXR5IDogYmFzZS5hdXRob3JpdHkpICtcbiAgICByZW1vdmVEb3RTZWdtZW50cyhocmVmLnByb3RvY29sIHx8IGhyZWYuYXV0aG9yaXR5IHx8IGhyZWYucGF0aG5hbWUuY2hhckF0KDApID09PSAnLycgPyBocmVmLnBhdGhuYW1lIDogKGhyZWYucGF0aG5hbWUgPyAoKGJhc2UuYXV0aG9yaXR5ICYmICFiYXNlLnBhdGhuYW1lID8gJy8nIDogJycpICsgYmFzZS5wYXRobmFtZS5zbGljZSgwLCBiYXNlLnBhdGhuYW1lLmxhc3RJbmRleE9mKCcvJykgKyAxKSArIGhyZWYucGF0aG5hbWUpIDogYmFzZS5wYXRobmFtZSkpICtcbiAgICAoaHJlZi5wcm90b2NvbCB8fCBocmVmLmF1dGhvcml0eSB8fCBocmVmLnBhdGhuYW1lID8gaHJlZi5zZWFyY2ggOiAoaHJlZi5zZWFyY2ggfHwgYmFzZS5zZWFyY2gpKSArXG4gICAgaHJlZi5oYXNoO1xufVxuXG5mdW5jdGlvbiBnZXREb2N1bWVudFVyaSh1cmkpIHtcbiAgICByZXR1cm4gdXJpLnNwbGl0KCcjJylbMF07XG59XG5cbmZ1bmN0aW9uIG5vcm1TY2hlbWEoc2NoZW1hLCBiYXNlVXJpKSB7XG4gICAgaWYgKHNjaGVtYSAmJiB0eXBlb2Ygc2NoZW1hID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGlmIChiYXNlVXJpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGJhc2VVcmkgPSBzY2hlbWEuaWQ7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNjaGVtYS5pZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgYmFzZVVyaSA9IHJlc29sdmVVcmwoYmFzZVVyaSwgc2NoZW1hLmlkKTtcbiAgICAgICAgICAgIHNjaGVtYS5pZCA9IGJhc2VVcmk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY2hlbWEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBub3JtU2NoZW1hKHNjaGVtYVtpXSwgYmFzZVVyaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYVsnJHJlZiddID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgc2NoZW1hWyckcmVmJ10gPSByZXNvbHZlVXJsKGJhc2VVcmksIHNjaGVtYVsnJHJlZiddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBzY2hlbWEpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSBcImVudW1cIikge1xuICAgICAgICAgICAgICAgICAgICBub3JtU2NoZW1hKHNjaGVtYVtrZXldLCBiYXNlVXJpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRFcnJvclJlcG9ydGVyKGxhbmd1YWdlKSB7XG4gICAgbGFuZ3VhZ2UgPSBsYW5ndWFnZSB8fCAnZW4nO1xuXG4gICAgdmFyIGVycm9yTWVzc2FnZXMgPSBsYW5ndWFnZXNbbGFuZ3VhZ2VdO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICB2YXIgbWVzc2FnZVRlbXBsYXRlID0gZXJyb3JNZXNzYWdlc1tlcnJvci5jb2RlXSB8fCBFcnJvck1lc3NhZ2VzRGVmYXVsdFtlcnJvci5jb2RlXTtcbiAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlVGVtcGxhdGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJVbmtub3duIGVycm9yIGNvZGUgXCIgKyBlcnJvci5jb2RlICsgXCI6IFwiICsgSlNPTi5zdHJpbmdpZnkoZXJyb3IubWVzc2FnZVBhcmFtcyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1lc3NhZ2VQYXJhbXMgPSBlcnJvci5wYXJhbXM7XG4gICAgICAgIC8vIEFkYXB0ZWQgZnJvbSBDcm9ja2ZvcmQncyBzdXBwbGFudCgpXG4gICAgICAgIHJldHVybiBtZXNzYWdlVGVtcGxhdGUucmVwbGFjZSgvXFx7KFtee31dKilcXH0vZywgZnVuY3Rpb24gKHdob2xlLCB2YXJOYW1lKSB7XG4gICAgICAgICAgICB2YXIgc3ViVmFsdWUgPSBtZXNzYWdlUGFyYW1zW3Zhck5hbWVdO1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBzdWJWYWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHN1YlZhbHVlID09PSAnbnVtYmVyJyA/IHN1YlZhbHVlIDogd2hvbGU7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG5cbnZhciBFcnJvckNvZGVzID0ge1xuICAgIElOVkFMSURfVFlQRTogMCxcbiAgICBFTlVNX01JU01BVENIOiAxLFxuICAgIEFOWV9PRl9NSVNTSU5HOiAxMCxcbiAgICBPTkVfT0ZfTUlTU0lORzogMTEsXG4gICAgT05FX09GX01VTFRJUExFOiAxMixcbiAgICBOT1RfUEFTU0VEOiAxMyxcbiAgICAvLyBOdW1lcmljIGVycm9yc1xuICAgIE5VTUJFUl9NVUxUSVBMRV9PRjogMTAwLFxuICAgIE5VTUJFUl9NSU5JTVVNOiAxMDEsXG4gICAgTlVNQkVSX01JTklNVU1fRVhDTFVTSVZFOiAxMDIsXG4gICAgTlVNQkVSX01BWElNVU06IDEwMyxcbiAgICBOVU1CRVJfTUFYSU1VTV9FWENMVVNJVkU6IDEwNCxcbiAgICBOVU1CRVJfTk9UX0FfTlVNQkVSOiAxMDUsXG4gICAgLy8gU3RyaW5nIGVycm9yc1xuICAgIFNUUklOR19MRU5HVEhfU0hPUlQ6IDIwMCxcbiAgICBTVFJJTkdfTEVOR1RIX0xPTkc6IDIwMSxcbiAgICBTVFJJTkdfUEFUVEVSTjogMjAyLFxuICAgIC8vIE9iamVjdCBlcnJvcnNcbiAgICBPQkpFQ1RfUFJPUEVSVElFU19NSU5JTVVNOiAzMDAsXG4gICAgT0JKRUNUX1BST1BFUlRJRVNfTUFYSU1VTTogMzAxLFxuICAgIE9CSkVDVF9SRVFVSVJFRDogMzAyLFxuICAgIE9CSkVDVF9BRERJVElPTkFMX1BST1BFUlRJRVM6IDMwMyxcbiAgICBPQkpFQ1RfREVQRU5ERU5DWV9LRVk6IDMwNCxcbiAgICAvLyBBcnJheSBlcnJvcnNcbiAgICBBUlJBWV9MRU5HVEhfU0hPUlQ6IDQwMCxcbiAgICBBUlJBWV9MRU5HVEhfTE9ORzogNDAxLFxuICAgIEFSUkFZX1VOSVFVRTogNDAyLFxuICAgIEFSUkFZX0FERElUSU9OQUxfSVRFTVM6IDQwMyxcbiAgICAvLyBDdXN0b20vdXNlci1kZWZpbmVkIGVycm9yc1xuICAgIEZPUk1BVF9DVVNUT006IDUwMCxcbiAgICBLRVlXT1JEX0NVU1RPTTogNTAxLFxuICAgIC8vIFNjaGVtYSBzdHJ1Y3R1cmVcbiAgICBDSVJDVUxBUl9SRUZFUkVOQ0U6IDYwMCxcbiAgICAvLyBOb24tc3RhbmRhcmQgdmFsaWRhdGlvbiBvcHRpb25zXG4gICAgVU5LTk9XTl9QUk9QRVJUWTogMTAwMFxufTtcbnZhciBFcnJvckNvZGVMb29rdXAgPSB7fTtcbmZvciAodmFyIGtleSBpbiBFcnJvckNvZGVzKSB7XG4gICAgRXJyb3JDb2RlTG9va3VwW0Vycm9yQ29kZXNba2V5XV0gPSBrZXk7XG59XG52YXIgRXJyb3JNZXNzYWdlc0RlZmF1bHQgPSB7XG4gICAgSU5WQUxJRF9UWVBFOiBcIkludmFsaWQgdHlwZToge3R5cGV9IChleHBlY3RlZCB7ZXhwZWN0ZWR9KVwiLFxuICAgIEVOVU1fTUlTTUFUQ0g6IFwiTm8gZW51bSBtYXRjaCBmb3I6IHt2YWx1ZX1cIixcbiAgICBBTllfT0ZfTUlTU0lORzogXCJEYXRhIGRvZXMgbm90IG1hdGNoIGFueSBzY2hlbWFzIGZyb20gXFxcImFueU9mXFxcIlwiLFxuICAgIE9ORV9PRl9NSVNTSU5HOiBcIkRhdGEgZG9lcyBub3QgbWF0Y2ggYW55IHNjaGVtYXMgZnJvbSBcXFwib25lT2ZcXFwiXCIsXG4gICAgT05FX09GX01VTFRJUExFOiBcIkRhdGEgaXMgdmFsaWQgYWdhaW5zdCBtb3JlIHRoYW4gb25lIHNjaGVtYSBmcm9tIFxcXCJvbmVPZlxcXCI6IGluZGljZXMge2luZGV4MX0gYW5kIHtpbmRleDJ9XCIsXG4gICAgTk9UX1BBU1NFRDogXCJEYXRhIG1hdGNoZXMgc2NoZW1hIGZyb20gXFxcIm5vdFxcXCJcIixcbiAgICAvLyBOdW1lcmljIGVycm9yc1xuICAgIE5VTUJFUl9NVUxUSVBMRV9PRjogXCJWYWx1ZSB7dmFsdWV9IGlzIG5vdCBhIG11bHRpcGxlIG9mIHttdWx0aXBsZU9mfVwiLFxuICAgIE5VTUJFUl9NSU5JTVVNOiBcIlZhbHVlIHt2YWx1ZX0gaXMgbGVzcyB0aGFuIG1pbmltdW0ge21pbmltdW19XCIsXG4gICAgTlVNQkVSX01JTklNVU1fRVhDTFVTSVZFOiBcIlZhbHVlIHt2YWx1ZX0gaXMgZXF1YWwgdG8gZXhjbHVzaXZlIG1pbmltdW0ge21pbmltdW19XCIsXG4gICAgTlVNQkVSX01BWElNVU06IFwiVmFsdWUge3ZhbHVlfSBpcyBncmVhdGVyIHRoYW4gbWF4aW11bSB7bWF4aW11bX1cIixcbiAgICBOVU1CRVJfTUFYSU1VTV9FWENMVVNJVkU6IFwiVmFsdWUge3ZhbHVlfSBpcyBlcXVhbCB0byBleGNsdXNpdmUgbWF4aW11bSB7bWF4aW11bX1cIixcbiAgICBOVU1CRVJfTk9UX0FfTlVNQkVSOiBcIlZhbHVlIHt2YWx1ZX0gaXMgbm90IGEgdmFsaWQgbnVtYmVyXCIsXG4gICAgLy8gU3RyaW5nIGVycm9yc1xuICAgIFNUUklOR19MRU5HVEhfU0hPUlQ6IFwiU3RyaW5nIGlzIHRvbyBzaG9ydCAoe2xlbmd0aH0gY2hhcnMpLCBtaW5pbXVtIHttaW5pbXVtfVwiLFxuICAgIFNUUklOR19MRU5HVEhfTE9ORzogXCJTdHJpbmcgaXMgdG9vIGxvbmcgKHtsZW5ndGh9IGNoYXJzKSwgbWF4aW11bSB7bWF4aW11bX1cIixcbiAgICBTVFJJTkdfUEFUVEVSTjogXCJTdHJpbmcgZG9lcyBub3QgbWF0Y2ggcGF0dGVybjoge3BhdHRlcm59XCIsXG4gICAgLy8gT2JqZWN0IGVycm9yc1xuICAgIE9CSkVDVF9QUk9QRVJUSUVTX01JTklNVU06IFwiVG9vIGZldyBwcm9wZXJ0aWVzIGRlZmluZWQgKHtwcm9wZXJ0eUNvdW50fSksIG1pbmltdW0ge21pbmltdW19XCIsXG4gICAgT0JKRUNUX1BST1BFUlRJRVNfTUFYSU1VTTogXCJUb28gbWFueSBwcm9wZXJ0aWVzIGRlZmluZWQgKHtwcm9wZXJ0eUNvdW50fSksIG1heGltdW0ge21heGltdW19XCIsXG4gICAgT0JKRUNUX1JFUVVJUkVEOiBcIk1pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHk6IHtrZXl9XCIsXG4gICAgT0JKRUNUX0FERElUSU9OQUxfUFJPUEVSVElFUzogXCJBZGRpdGlvbmFsIHByb3BlcnRpZXMgbm90IGFsbG93ZWRcIixcbiAgICBPQkpFQ1RfREVQRU5ERU5DWV9LRVk6IFwiRGVwZW5kZW5jeSBmYWlsZWQgLSBrZXkgbXVzdCBleGlzdDoge21pc3Npbmd9IChkdWUgdG8ga2V5OiB7a2V5fSlcIixcbiAgICAvLyBBcnJheSBlcnJvcnNcbiAgICBBUlJBWV9MRU5HVEhfU0hPUlQ6IFwiQXJyYXkgaXMgdG9vIHNob3J0ICh7bGVuZ3RofSksIG1pbmltdW0ge21pbmltdW19XCIsXG4gICAgQVJSQVlfTEVOR1RIX0xPTkc6IFwiQXJyYXkgaXMgdG9vIGxvbmcgKHtsZW5ndGh9KSwgbWF4aW11bSB7bWF4aW11bX1cIixcbiAgICBBUlJBWV9VTklRVUU6IFwiQXJyYXkgaXRlbXMgYXJlIG5vdCB1bmlxdWUgKGluZGljZXMge21hdGNoMX0gYW5kIHttYXRjaDJ9KVwiLFxuICAgIEFSUkFZX0FERElUSU9OQUxfSVRFTVM6IFwiQWRkaXRpb25hbCBpdGVtcyBub3QgYWxsb3dlZFwiLFxuICAgIC8vIEZvcm1hdCBlcnJvcnNcbiAgICBGT1JNQVRfQ1VTVE9NOiBcIkZvcm1hdCB2YWxpZGF0aW9uIGZhaWxlZCAoe21lc3NhZ2V9KVwiLFxuICAgIEtFWVdPUkRfQ1VTVE9NOiBcIktleXdvcmQgZmFpbGVkOiB7a2V5fSAoe21lc3NhZ2V9KVwiLFxuICAgIC8vIFNjaGVtYSBzdHJ1Y3R1cmVcbiAgICBDSVJDVUxBUl9SRUZFUkVOQ0U6IFwiQ2lyY3VsYXIgJHJlZnM6IHt1cmxzfVwiLFxuICAgIC8vIE5vbi1zdGFuZGFyZCB2YWxpZGF0aW9uIG9wdGlvbnNcbiAgICBVTktOT1dOX1BST1BFUlRZOiBcIlVua25vd24gcHJvcGVydHkgKG5vdCBpbiBzY2hlbWEpXCJcbn07XG5cbmZ1bmN0aW9uIFZhbGlkYXRpb25FcnJvcihjb2RlLCBwYXJhbXMsIGRhdGFQYXRoLCBzY2hlbWFQYXRoLCBzdWJFcnJvcnMpIHtcbiAgICBFcnJvci5jYWxsKHRoaXMpO1xuICAgIGlmIChjb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gZXJyb3IgY29kZSBzdXBwbGllZDogXCIgKyBzY2hlbWFQYXRoKTtcbiAgICB9XG4gICAgdGhpcy5tZXNzYWdlID0gJyc7XG4gICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XG4gICAgdGhpcy5jb2RlID0gY29kZTtcbiAgICB0aGlzLmRhdGFQYXRoID0gZGF0YVBhdGggfHwgXCJcIjtcbiAgICB0aGlzLnNjaGVtYVBhdGggPSBzY2hlbWFQYXRoIHx8IFwiXCI7XG4gICAgdGhpcy5zdWJFcnJvcnMgPSBzdWJFcnJvcnMgfHwgbnVsbDtcblxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IodGhpcy5tZXNzYWdlKTtcbiAgICB0aGlzLnN0YWNrID0gZXJyLnN0YWNrIHx8IGVyci5zdGFja3RyYWNlO1xuICAgIGlmICghdGhpcy5zdGFjaykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhY2sgPSBlcnIuc3RhY2sgfHwgZXJyLnN0YWNrdHJhY2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblZhbGlkYXRpb25FcnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7XG5WYWxpZGF0aW9uRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVmFsaWRhdGlvbkVycm9yO1xuVmFsaWRhdGlvbkVycm9yLnByb3RvdHlwZS5uYW1lID0gJ1ZhbGlkYXRpb25FcnJvcic7XG5cblZhbGlkYXRpb25FcnJvci5wcm90b3R5cGUucHJlZml4V2l0aCA9IGZ1bmN0aW9uIChkYXRhUHJlZml4LCBzY2hlbWFQcmVmaXgpIHtcbiAgICBpZiAoZGF0YVByZWZpeCAhPT0gbnVsbCkge1xuICAgICAgICBkYXRhUHJlZml4ID0gZGF0YVByZWZpeC5yZXBsYWNlKC9+L2csIFwifjBcIikucmVwbGFjZSgvXFwvL2csIFwifjFcIik7XG4gICAgICAgIHRoaXMuZGF0YVBhdGggPSBcIi9cIiArIGRhdGFQcmVmaXggKyB0aGlzLmRhdGFQYXRoO1xuICAgIH1cbiAgICBpZiAoc2NoZW1hUHJlZml4ICE9PSBudWxsKSB7XG4gICAgICAgIHNjaGVtYVByZWZpeCA9IHNjaGVtYVByZWZpeC5yZXBsYWNlKC9+L2csIFwifjBcIikucmVwbGFjZSgvXFwvL2csIFwifjFcIik7XG4gICAgICAgIHRoaXMuc2NoZW1hUGF0aCA9IFwiL1wiICsgc2NoZW1hUHJlZml4ICsgdGhpcy5zY2hlbWFQYXRoO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdWJFcnJvcnMgIT09IG51bGwpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnN1YkVycm9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5zdWJFcnJvcnNbaV0ucHJlZml4V2l0aChkYXRhUHJlZml4LCBzY2hlbWFQcmVmaXgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gaXNUcnVzdGVkVXJsKGJhc2VVcmwsIHRlc3RVcmwpIHtcbiAgICBpZiAodGVzdFVybC5zdWJzdHJpbmcoMCwgYmFzZVVybC5sZW5ndGgpID09PSBiYXNlVXJsKSB7XG4gICAgICAgIHZhciByZW1haW5kZXIgPSB0ZXN0VXJsLnN1YnN0cmluZyhiYXNlVXJsLmxlbmd0aCk7XG4gICAgICAgIGlmICgodGVzdFVybC5sZW5ndGggPiAwICYmIHRlc3RVcmwuY2hhckF0KGJhc2VVcmwubGVuZ3RoIC0gMSkgPT09IFwiL1wiKVxuICAgICAgICAgICAgfHwgcmVtYWluZGVyLmNoYXJBdCgwKSA9PT0gXCIjXCJcbiAgICAgICAgICAgIHx8IHJlbWFpbmRlci5jaGFyQXQoMCkgPT09IFwiP1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbnZhciBsYW5ndWFnZXMgPSB7fTtcblxuZnVuY3Rpb24gY3JlYXRlQXBpKGxhbmd1YWdlKSB7XG4gICAgdmFyIGdsb2JhbENvbnRleHQgPSBuZXcgVmFsaWRhdG9yQ29udGV4dCgpO1xuICAgIHZhciBjdXJyZW50TGFuZ3VhZ2U7XG4gICAgdmFyIGN1c3RvbUVycm9yUmVwb3J0ZXI7XG4gICAgdmFyIGFwaSA9IHtcbiAgICAgICAgc2V0RXJyb3JSZXBvcnRlcjogZnVuY3Rpb24gKHJlcG9ydGVyKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlcG9ydGVyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlKHJlcG9ydGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1c3RvbUVycm9yUmVwb3J0ZXIgPSByZXBvcnRlcjtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBhZGRGb3JtYXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGdsb2JhbENvbnRleHQuYWRkRm9ybWF0LmFwcGx5KGdsb2JhbENvbnRleHQsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sXG4gICAgICAgIGxhbmd1YWdlOiBmdW5jdGlvbiAoY29kZSkge1xuICAgICAgICAgICAgaWYgKCFjb2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRMYW5ndWFnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbGFuZ3VhZ2VzW2NvZGVdKSB7XG4gICAgICAgICAgICAgICAgY29kZSA9IGNvZGUuc3BsaXQoJy0nKVswXTsgLy8gZmFsbCBiYWNrIHRvIGJhc2UgbGFuZ3VhZ2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsYW5ndWFnZXNbY29kZV0pIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2UgPSBjb2RlO1xuICAgICAgICAgICAgICAgIHJldHVybiBjb2RlOyAvLyBzbyB5b3UgY2FuIHRlbGwgaWYgZmFsbC1iYWNrIGhhcyBoYXBwZW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBhZGRMYW5ndWFnZTogZnVuY3Rpb24gKGNvZGUsIG1lc3NhZ2VNYXApIHtcbiAgICAgICAgICAgIHZhciBrZXk7XG4gICAgICAgICAgICBmb3IgKGtleSBpbiBFcnJvckNvZGVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2VNYXBba2V5XSAmJiAhbWVzc2FnZU1hcFtFcnJvckNvZGVzW2tleV1dKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VNYXBbRXJyb3JDb2Rlc1trZXldXSA9IG1lc3NhZ2VNYXBba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcm9vdENvZGUgPSBjb2RlLnNwbGl0KCctJylbMF07XG4gICAgICAgICAgICBpZiAoIWxhbmd1YWdlc1tyb290Q29kZV0pIHsgLy8gdXNlIGZvciBiYXNlIGxhbmd1YWdlIGlmIG5vdCB5ZXQgZGVmaW5lZFxuICAgICAgICAgICAgICAgIGxhbmd1YWdlc1tjb2RlXSA9IG1lc3NhZ2VNYXA7XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VzW3Jvb3RDb2RlXSA9IG1lc3NhZ2VNYXA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxhbmd1YWdlc1tjb2RlXSA9IE9iamVjdC5jcmVhdGUobGFuZ3VhZ2VzW3Jvb3RDb2RlXSk7XG4gICAgICAgICAgICAgICAgZm9yIChrZXkgaW4gbWVzc2FnZU1hcCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGxhbmd1YWdlc1tyb290Q29kZV1ba2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlc1tyb290Q29kZV1ba2V5XSA9IG1lc3NhZ2VNYXBba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZXNbY29kZV1ba2V5XSA9IG1lc3NhZ2VNYXBba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSxcbiAgICAgICAgZnJlc2hBcGk6IGZ1bmN0aW9uIChsYW5ndWFnZSkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZUFwaSgpO1xuICAgICAgICAgICAgaWYgKGxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0Lmxhbmd1YWdlKGxhbmd1YWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAoZGF0YSwgc2NoZW1hLCBjaGVja1JlY3Vyc2l2ZSwgYmFuVW5rbm93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHZhciBkZWYgPSBkZWZhdWx0RXJyb3JSZXBvcnRlcihjdXJyZW50TGFuZ3VhZ2UpO1xuICAgICAgICAgICAgdmFyIGVycm9yUmVwb3J0ZXIgPSBjdXN0b21FcnJvclJlcG9ydGVyID8gZnVuY3Rpb24gKGVycm9yLCBkYXRhLCBzY2hlbWEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VzdG9tRXJyb3JSZXBvcnRlcihlcnJvciwgZGF0YSwgc2NoZW1hKSB8fCBkZWYoZXJyb3IsIGRhdGEsIHNjaGVtYSk7XG4gICAgICAgICAgICB9IDogZGVmO1xuICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBuZXcgVmFsaWRhdG9yQ29udGV4dChnbG9iYWxDb250ZXh0LCBmYWxzZSwgZXJyb3JSZXBvcnRlciwgY2hlY2tSZWN1cnNpdmUsIGJhblVua25vd25Qcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgc2NoZW1hID0ge1wiJHJlZlwiOiBzY2hlbWF9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGV4dC5hZGRTY2hlbWEoXCJcIiwgc2NoZW1hKTtcbiAgICAgICAgICAgIHZhciBlcnJvciA9IGNvbnRleHQudmFsaWRhdGVBbGwoZGF0YSwgc2NoZW1hLCBudWxsLCBudWxsLCBcIlwiKTtcbiAgICAgICAgICAgIGlmICghZXJyb3IgJiYgYmFuVW5rbm93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBlcnJvciA9IGNvbnRleHQuYmFuVW5rbm93blByb3BlcnRpZXMoZGF0YSwgc2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgIHRoaXMubWlzc2luZyA9IGNvbnRleHQubWlzc2luZztcbiAgICAgICAgICAgIHRoaXMudmFsaWQgPSAoZXJyb3IgPT09IG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsaWQ7XG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkYXRlUmVzdWx0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlLmFwcGx5KHJlc3VsdCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkYXRlTXVsdGlwbGU6IGZ1bmN0aW9uIChkYXRhLCBzY2hlbWEsIGNoZWNrUmVjdXJzaXZlLCBiYW5Vbmtub3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgdmFyIGRlZiA9IGRlZmF1bHRFcnJvclJlcG9ydGVyKGN1cnJlbnRMYW5ndWFnZSk7XG4gICAgICAgICAgICB2YXIgZXJyb3JSZXBvcnRlciA9IGN1c3RvbUVycm9yUmVwb3J0ZXIgPyBmdW5jdGlvbiAoZXJyb3IsIGRhdGEsIHNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdXN0b21FcnJvclJlcG9ydGVyKGVycm9yLCBkYXRhLCBzY2hlbWEpIHx8IGRlZihlcnJvciwgZGF0YSwgc2NoZW1hKTtcbiAgICAgICAgICAgIH0gOiBkZWY7XG4gICAgICAgICAgICB2YXIgY29udGV4dCA9IG5ldyBWYWxpZGF0b3JDb250ZXh0KGdsb2JhbENvbnRleHQsIHRydWUsIGVycm9yUmVwb3J0ZXIsIGNoZWNrUmVjdXJzaXZlLCBiYW5Vbmtub3duUHJvcGVydGllcyk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHNjaGVtYSA9IHtcIiRyZWZcIjogc2NoZW1hfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRleHQuYWRkU2NoZW1hKFwiXCIsIHNjaGVtYSk7XG4gICAgICAgICAgICBjb250ZXh0LnZhbGlkYXRlQWxsKGRhdGEsIHNjaGVtYSwgbnVsbCwgbnVsbCwgXCJcIik7XG4gICAgICAgICAgICBpZiAoYmFuVW5rbm93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmJhblVua25vd25Qcm9wZXJ0aWVzKGRhdGEsIHNjaGVtYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICAgICAgICByZXN1bHQuZXJyb3JzID0gY29udGV4dC5lcnJvcnM7XG4gICAgICAgICAgICByZXN1bHQubWlzc2luZyA9IGNvbnRleHQubWlzc2luZztcbiAgICAgICAgICAgIHJlc3VsdC52YWxpZCA9IChyZXN1bHQuZXJyb3JzLmxlbmd0aCA9PT0gMCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuICAgICAgICBhZGRTY2hlbWE6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBnbG9iYWxDb250ZXh0LmFkZFNjaGVtYS5hcHBseShnbG9iYWxDb250ZXh0LCBhcmd1bWVudHMpO1xuICAgICAgICB9LFxuICAgICAgICBnZXRTY2hlbWE6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBnbG9iYWxDb250ZXh0LmdldFNjaGVtYS5hcHBseShnbG9iYWxDb250ZXh0LCBhcmd1bWVudHMpO1xuICAgICAgICB9LFxuICAgICAgICBnZXRTY2hlbWFNYXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBnbG9iYWxDb250ZXh0LmdldFNjaGVtYU1hcC5hcHBseShnbG9iYWxDb250ZXh0LCBhcmd1bWVudHMpO1xuICAgICAgICB9LFxuICAgICAgICBnZXRTY2hlbWFVcmlzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2xvYmFsQ29udGV4dC5nZXRTY2hlbWFVcmlzLmFwcGx5KGdsb2JhbENvbnRleHQsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldE1pc3NpbmdVcmlzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2xvYmFsQ29udGV4dC5nZXRNaXNzaW5nVXJpcy5hcHBseShnbG9iYWxDb250ZXh0LCBhcmd1bWVudHMpO1xuICAgICAgICB9LFxuICAgICAgICBkcm9wU2NoZW1hczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZ2xvYmFsQ29udGV4dC5kcm9wU2NoZW1hcy5hcHBseShnbG9iYWxDb250ZXh0LCBhcmd1bWVudHMpO1xuICAgICAgICB9LFxuICAgICAgICBkZWZpbmVLZXl3b3JkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBnbG9iYWxDb250ZXh0LmRlZmluZUtleXdvcmQuYXBwbHkoZ2xvYmFsQ29udGV4dCwgYXJndW1lbnRzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGVmaW5lRXJyb3I6IGZ1bmN0aW9uIChjb2RlTmFtZSwgY29kZU51bWJlciwgZGVmYXVsdE1lc3NhZ2UpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29kZU5hbWUgIT09ICdzdHJpbmcnIHx8ICEvXltBLVpdKyhfW0EtWl0rKSokLy50ZXN0KGNvZGVOYW1lKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29kZSBuYW1lIG11c3QgYmUgYSBzdHJpbmcgaW4gVVBQRVJfQ0FTRV9XSVRIX1VOREVSU0NPUkVTJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvZGVOdW1iZXIgIT09ICdudW1iZXInIHx8IGNvZGVOdW1iZXIgJSAxICE9PSAwIHx8IGNvZGVOdW1iZXIgPCAxMDAwMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29kZSBudW1iZXIgbXVzdCBiZSBhbiBpbnRlZ2VyID4gMTAwMDAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgRXJyb3JDb2Rlc1tjb2RlTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBhbHJlYWR5IGRlZmluZWQ6ICcgKyBjb2RlTmFtZSArICcgYXMgJyArIEVycm9yQ29kZXNbY29kZU5hbWVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgRXJyb3JDb2RlTG9va3VwW2NvZGVOdW1iZXJdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgY29kZSBhbHJlYWR5IHVzZWQ6ICcgKyBFcnJvckNvZGVMb29rdXBbY29kZU51bWJlcl0gKyAnIGFzICcgKyBjb2RlTnVtYmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEVycm9yQ29kZXNbY29kZU5hbWVdID0gY29kZU51bWJlcjtcbiAgICAgICAgICAgIEVycm9yQ29kZUxvb2t1cFtjb2RlTnVtYmVyXSA9IGNvZGVOYW1lO1xuICAgICAgICAgICAgRXJyb3JNZXNzYWdlc0RlZmF1bHRbY29kZU5hbWVdID0gRXJyb3JNZXNzYWdlc0RlZmF1bHRbY29kZU51bWJlcl0gPSBkZWZhdWx0TWVzc2FnZTtcbiAgICAgICAgICAgIGZvciAodmFyIGxhbmdDb2RlIGluIGxhbmd1YWdlcykge1xuICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9IGxhbmd1YWdlc1tsYW5nQ29kZV07XG4gICAgICAgICAgICAgICAgaWYgKGxhbmd1YWdlW2NvZGVOYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZVtjb2RlTnVtYmVyXSA9IGxhbmd1YWdlW2NvZGVOdW1iZXJdIHx8IGxhbmd1YWdlW2NvZGVOYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlc2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBnbG9iYWxDb250ZXh0LnJlc2V0KCk7XG4gICAgICAgICAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMubWlzc2luZyA9IFtdO1xuICAgICAgICAgICAgdGhpcy52YWxpZCA9IHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIG1pc3Npbmc6IFtdLFxuICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIG5vcm1TY2hlbWE6IG5vcm1TY2hlbWEsXG4gICAgICAgIHJlc29sdmVVcmw6IHJlc29sdmVVcmwsXG4gICAgICAgIGdldERvY3VtZW50VXJpOiBnZXREb2N1bWVudFVyaSxcbiAgICAgICAgZXJyb3JDb2RlczogRXJyb3JDb2Rlc1xuICAgIH07XG4gICAgYXBpLmxhbmd1YWdlKGxhbmd1YWdlIHx8ICdlbicpO1xuICAgIHJldHVybiBhcGk7XG59XG5cbi8vZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRvcigpIHtcbnZhciB0djQgPSBjcmVhdGVBcGkoKTtcbnR2NC5hZGRMYW5ndWFnZSgnZW4tZ2InLCBFcnJvck1lc3NhZ2VzRGVmYXVsdCk7XG5cbi8vbGVnYWN5IHByb3BlcnR5XG50djQudHY0ID0gdHY0O1xuLy9yZXR1cm4gdHY0O1xuZXhwb3J0IGRlZmF1bHQgdHY0O1xuLy99XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy91dGlscy90djQuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBU0E7QUFDQTtBQURBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFuQ0E7QUFxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFuQ0E7QUFDQTtBQXFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBekpBO0FBMkpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///514\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(516), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvaXMtZnJvemVuLmpzP2Q5ZmEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9pcy1mcm96ZW5cIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2lzLWZyb3plbi5qc1xuLy8gbW9kdWxlIGlkID0gNTE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///515\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(517);\nmodule.exports = __webpack_require__(10).Object.isFrozen;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvaXMtZnJvemVuLmpzPzVmZDMiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmlzLWZyb3plbicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmlzRnJvemVuO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9pcy1mcm96ZW4uanNcbi8vIG1vZHVsZSBpZCA9IDUxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///516\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.12 Object.isFrozen(O)\nvar isObject = __webpack_require__(36);\n\n__webpack_require__(99)('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTE3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuaXMtZnJvemVuLmpzP2M5MTIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjEyIE9iamVjdC5pc0Zyb3plbihPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnaXNGcm96ZW4nLCBmdW5jdGlvbiAoJGlzRnJvemVuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBpc0Zyb3plbihpdCkge1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNGcm96ZW4gPyAkaXNGcm96ZW4oaXQpIDogZmFsc2UgOiB0cnVlO1xuICB9O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmlzLWZyb3plbi5qc1xuLy8gbW9kdWxlIGlkID0gNTE3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///517\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(42);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _keys = __webpack_require__(37);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(11);\n\nvar _Subscription = __webpack_require__(212);\n\nvar _Subscription2 = _interopRequireDefault(_Subscription);\n\nvar _CryptoManager = __webpack_require__(101);\n\nvar cryptoManager = _interopRequireWildcard(_CryptoManager);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('ReporterObject'); // Log System\n\nvar ReporterObject = function () {\n function ReporterObject(parent, owner, url) {\n (0, _classCallCheck3.default)(this, ReporterObject);\n\n var _this = this;\n\n _this._parent = parent;\n _this._owner = owner;\n _this._url = url;\n\n _this._bus = parent._bus;\n\n _this._domain = (0, _utils.divideURL)(url).domain;\n _this._objSubscriptorURL = _this._url + '/subscription';\n\n _this._subscriptions = {};\n _this._childrens = [];\n _this._childrenListeners = [];\n\n _this._forwards = {};\n\n _this._isToSaveData = false;\n\n _this._allocateListeners();\n }\n\n (0, _createClass3.default)(ReporterObject, [{\n key: '_allocateListeners',\n value: function _allocateListeners() {\n var _this2 = this;\n\n var _this = this;\n\n //add subscription listener...\n _this._subscriptionListener = _this._bus.addListener(_this._objSubscriptorURL, function (msg) {\n log.info('[SyncherManager.ReporterObject received ]', msg);\n switch (msg.type) {\n case 'subscribe':\n _this._onRemoteSubscribe(msg);break;\n case 'unsubscribe':\n _this._onRemoteUnSubscribe(msg);break;\n case 'response':\n _this._onRemoteResponse(msg);break;\n }\n });\n\n var changeURL = _this._url + '/changes';\n _this._changeListener = _this._bus.addListener(changeURL, function (msg) {\n\n log.info('[SyncherManager.ReporterObject ] SyncherManager-' + changeURL + '-RCV: ', msg);\n\n //TODO: what todo here? Save changes?\n if (_this2._isToSaveData && msg.body.attribute) {\n log.log('[SyncherManager.ReporterObject ] SyncherManager - save data: ', msg);\n _this._parent._dataObjectsStorage.update(true, _this._url, 'version', msg.body.version);\n _this._parent._dataObjectsStorage.update(true, _this._url, 'lastModified', msg.body.lastModified);\n _this._parent._dataObjectsStorage.saveData(true, _this._url, msg.body.attribute, msg.body.value);\n }\n });\n }\n }, {\n key: '_releaseListeners',\n value: function _releaseListeners() {\n var _this = this;\n\n _this._subscriptionListener.remove();\n\n _this._changeListener.remove();\n\n _this._childrenListeners.forEach(function (cl) {\n cl.remove();\n });\n\n (0, _keys2.default)(_this._forwards).forEach(function (key) {\n _this.forwardUnSubscribe(key);\n });\n\n //remove all subscriptions\n (0, _keys2.default)(_this._subscriptions).forEach(function (key) {\n _this._subscriptions[key]._releaseListeners();\n });\n }\n }, {\n key: 'resumeSubscriptions',\n value: function resumeSubscriptions(subscriptions) {\n var _this = this;\n\n if (!subscriptions) return;\n\n (0, _keys2.default)(subscriptions).forEach(function (key) {\n var hypertyURL = subscriptions[key];\n\n log.log('[SyncherManager.ReporterObject] - resume subscriptions', _this, hypertyURL, _this._childrens);\n\n if (!_this._subscriptions[hypertyURL]) {\n _this._subscriptions[hypertyURL] = new _Subscription2.default(_this._bus, _this._owner, _this._url, _this._childrens, true);\n }\n });\n }\n\n /**\n * Register a listener in the msg-node and in the local MessageBus, so that messages on this address are forwarded to the reporter object\n * @param {string} address - URL to register the listeners\n * @return {Promise} Return Promise OK or error\n */\n\n }, {\n key: 'forwardSubscribe',\n value: function forwardSubscribe(addresses) {\n var _this = this;\n\n //FLOW-OUT: message sent to the msg-node SubscriptionManager component\n var nodeSubscribeMsg = {\n type: 'subscribe', from: _this._parent._url, to: 'domain://msg-node.' + _this._domain + '/sm',\n body: { resources: addresses, source: _this._owner }\n };\n\n return new _promise2.default(function (resolve, reject) {\n _this._bus.postMessage(nodeSubscribeMsg, function (reply) {\n log.log('[SyncherManager.ReporterObject ]forward-subscribe-response(reporter): ', reply);\n if (reply.body.code === 200) {\n var newForward = _this._bus.addForward(_this._url, _this._owner);\n _this._forwards[addresses[0]] = newForward;\n resolve();\n } else {\n reject('Error on msg-node subscription: ' + reply.body.desc);\n }\n });\n });\n }\n\n /**\n * UnRegister a listener in the msg-node and in the local MessageBus, so that messages on this address are removed from forward\n * @param {string} address - URL to un-register the listeners\n */\n\n }, {\n key: 'forwardUnSubscribe',\n value: function forwardUnSubscribe(address) {\n var _this = this;\n\n _this._forwards[address].remove();\n delete _this._forwards[address];\n\n //FLOW-OUT: message sent to the msg-node SubscriptionManager component\n var nodeUnSubscribeMsg = {\n type: 'unsubscribe', from: _this._parent._url, to: 'domain://msg-node.' + _this._domain + '/sm',\n body: { resources: [address], source: _this._owner }\n };\n\n _this._bus.postMessage(nodeUnSubscribeMsg);\n }\n\n /**\n * Register listeners for a list of childrens. Public channels used to transmit messages.\n * @param {string[]} childrens - channels to register\n * @return {Promise} Return Promise OK or error\n */\n\n }, {\n key: 'addChildrens',\n value: function addChildrens(childrens) {\n var _this3 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n if (childrens.length === 0) {\n resolve();\n return;\n }\n\n var childBaseURL = _this._url + '/children/';\n log.log('[SyncherManager.ReporterObject - addChildrens] - childrens: ', childrens, childBaseURL);\n\n childrens.forEach(function (child) {\n _this._childrens.push(child);\n });\n\n /*\n _this._childrens.forEach((child) => {\n let childId = childBaseURL + child;\n let selfForward = _this._bus.addForward(childId, owner);\n _this._childrenListeners.push(selfForward);\n });*/\n\n var subscriptions = [];\n childrens.forEach(function (child) {\n return subscriptions.push(childBaseURL + child);\n });\n\n //_this._storageSubscriptions[_this._objSubscriptorURL] = {url: _this._url, owner: _this._owner, childrens: _this._childrens};\n\n //FLOW-OUT: message sent to the msg-node SubscriptionManager component\n var nodeSubscribeMsg = {\n type: 'subscribe', from: _this._parent._url, to: 'domain://msg-node.' + _this._domain + '/sm',\n body: { resources: subscriptions, source: _this._owner }\n };\n\n _this._bus.postMessage(nodeSubscribeMsg, function (reply) {\n log.log('[SyncherManager.ReporterObject ]node-subscribe-response(reporter):', reply);\n if (reply.body.code === 200) {\n\n //add children listeners on local ...\n subscriptions.forEach(function (childURL) {\n var childListener = _this._bus.addListener(childURL, function (msg) {\n //TODO: what todo here? Save childrens?\n log.log('[SyncherManager.ReporterObject received]', msg);\n\n if (msg.type === 'create' && msg.to.includes('children') && _this3._isToSaveData) {\n\n // if the value is not encrypted lets encrypt it\n // todo: should be subject to some policy\n var splitedReporterURL = (0, _utils.splitObjectURL)(msg.to);\n\n var url = splitedReporterURL.url;\n\n //remove false when mutualAuthentication is enabled\n if (!(typeof msg.body.value === 'string')) {\n\n log.log('[SyncherManager.ReporterObject] encrypting received data ', msg.body.value);\n\n cryptoManager.default.encryptDataObject(msg.body.value, url).then(function (encryptedValue) {\n log.log('[SyncherManager.ReporterObject] encrypted data ', encryptedValue);\n\n _this._storeChildObject(msg, (0, _stringify2.default)(encryptedValue));\n }).catch(function (reason) {\n log.warn('[SyncherManager._decryptChildrens] failed : ', reason, ' Storing unencrypted');\n _this._storeChildObject(msg, msg.body.value);\n });\n } else {\n _this._storeChildObject(msg, msg.body.value);\n }\n }\n });\n _this._childrenListeners.push(childListener);\n\n var selfForward = _this._bus.addForward(childURL, _this._owner);\n _this._childrenListeners.push(selfForward);\n });\n\n resolve();\n } else {\n reject('Error on msg-node subscription: ' + reply.body.desc);\n }\n });\n });\n }\n\n // store childObject\n\n }, {\n key: '_storeChildObject',\n value: function _storeChildObject(msg, data) {\n var _this = this;\n\n var splitedReporterURL = (0, _utils.splitObjectURL)(msg.to);\n\n var url = splitedReporterURL.url;\n\n var resource = splitedReporterURL.resource;\n var value = {\n identity: msg.body.identity,\n value: data\n };\n\n var objectURLResource = msg.body.resource;\n var attribute = resource;\n\n if (objectURLResource) attribute += '.' + objectURLResource;\n\n // this identity data is not needed to be stored\n delete value.identity.assertion;\n delete value.identity.expires;\n\n console.log('[SyncherManager.ReporterObject._storeChildObject] : ', url, attribute, value);\n\n _this._parent._dataObjectsStorage.saveChildrens(true, url, attribute, value);\n }\n }, {\n key: 'delete',\n value: function _delete() {\n var _this = this;\n var domain = (0, _utils.divideURL)(_this._owner).domain;\n\n //FLOW-OUT: message sent directly to all subscribers of the reporter\n _this._bus.postMessage({\n type: 'delete', from: _this._objSubscriptorURL, to: _this._url + '/changes'\n });\n\n //FLOW-OUT: message sent to the msg-node ObjectAllocationManager component\n _this._bus.postMessage({\n type: 'delete', from: _this._parent._url, to: 'domain://msg-node.' + domain + '/object-address-allocation',\n body: { resource: _this._url, childrenResources: _this._childrens }\n });\n\n _this._releaseListeners();\n delete _this._parent._reporters[_this._url];\n }\n }, {\n key: '_onRemoteResponse',\n value: function _onRemoteResponse(msg) {\n var _this = this;\n\n _this._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: _this._url,\n body: { code: msg.body.code, identity: msg.body.identity, source: msg.from }\n });\n }\n\n //FLOW-IN: message received from Syncher -> subscribe\n\n }, {\n key: '_onRemoteSubscribe',\n value: function _onRemoteSubscribe(msg) {\n var _this = this;\n var hypertyURL = msg.body.subscriber;\n\n //validate if subscription already exists?\n if (_this._subscriptions[hypertyURL]) {\n // let errorMsg = {\n // id: msg.id, type: 'response', from: msg.to, to: hypertyURL,\n // body: { code: 500, desc: 'Subscription for (' + _this._url + ' : ' + hypertyURL + ') already exists!' }\n // };\n //\n // _this._bus.postMessage(errorMsg);\n // return;\n\n // new version because of reusage\n _this._subscriptions[hypertyURL]._releaseListeners();\n }\n\n //ask to subscribe to Syncher? (depends on the operation mode)\n //TODO: get mode from object!\n var mode = 'sub/pub';\n\n if (mode === 'sub/pub') {\n //FLOW-OUT: message sent to local hyperty address Syncher -> _onForward\n var forwardMsg = {\n type: 'forward', from: _this._url, to: _this._owner,\n body: { type: msg.type, from: hypertyURL, to: _this._url, identity: msg.body.identity }\n };\n\n //TODO: For Further Study\n if (msg.body.hasOwnProperty('mutual')) forwardMsg.body.mutual = msg.body.mutual;\n\n _this._bus.postMessage(forwardMsg, function (reply) {\n log.log('[SyncherManager.ReporterObject ]forward-reply: ', reply);\n if (reply.body.code === 200) {\n if (!_this._subscriptions[hypertyURL]) {\n log.log('[SyncherManager.ReporterObject] - _onRemoteSubscribe:', _this._childrens);\n _this._subscriptions[hypertyURL] = new _Subscription2.default(_this._bus, _this._owner, _this._url, _this._childrens, true);\n }\n }\n\n //TODO: atualizar mutual no storage e tb na sessionKeys\n\n // Store for each reporter hyperty the dataObject\n var userURL = void 0;\n if (msg.body.identity && msg.body.identity.userProfile.userURL) {\n userURL = msg.body.identity.userProfile.userURL;\n _this._parent._dataObjectsStorage.update(true, _this._url, 'subscriberUsers', userURL);\n }\n\n if (msg.body.hasOwnProperty('mutual')) {\n // _this._parent._identityModule.updateIsToEncryptForDataObjectSessionKey(_this._url, msg.body.mutual).then(()=>{\n _this._parent._dataObjectsStorage.update(true, _this._url, 'mutual', msg.body.mutual);\n // });\n }\n\n _this._parent._dataObjectsStorage.update(true, _this._url, 'subscriptions', hypertyURL);\n\n reply.body.owner = _this._owner;\n\n //FLOW-OUT: subscription response sent (forward from internal Hyperty)\n _this._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: msg.from,\n body: reply.body\n });\n });\n }\n }\n\n //FLOW-IN: message received from remote ObserverObject -> removeSubscription\n\n }, {\n key: '_onRemoteUnSubscribe',\n value: function _onRemoteUnSubscribe(msg) {\n var _this = this;\n var unsubscriber = msg.body.source;\n\n var subscription = _this._subscriptions[unsubscriber];\n if (subscription) {\n subscription._releaseListeners();\n delete _this._subscriptions[unsubscriber];\n\n var forwardMsg = {\n type: 'forward', from: _this._url, to: _this._owner,\n body: { type: msg.type, from: unsubscriber, to: _this._url, identity: msg.body.identity }\n };\n\n _this._bus.postMessage(forwardMsg);\n }\n }\n }, {\n key: 'isToSaveData',\n set: function set(value) {\n this._isToSaveData = value;\n }\n }]);\n return ReporterObject;\n}();\n\nexports.default = ReporterObject;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTE4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zeW5jaGVyL1JlcG9ydGVyT2JqZWN0LmpzP2M3Y2IiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9nIFN5c3RlbVxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdSZXBvcnRlck9iamVjdCcpO1xuXG5pbXBvcnQgeyBkaXZpZGVVUkwsIHNwbGl0T2JqZWN0VVJMIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IFN1YnNjcmlwdGlvbiBmcm9tICcuL1N1YnNjcmlwdGlvbic7XG5pbXBvcnQgKiBhcyBjcnlwdG9NYW5hZ2VyIGZyb20gJy4uL2NyeXB0b01hbmFnZXIvQ3J5cHRvTWFuYWdlcic7XG5cbmNsYXNzIFJlcG9ydGVyT2JqZWN0IHtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQsIG93bmVyLCB1cmwpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMuX3BhcmVudCA9IHBhcmVudDtcbiAgICBfdGhpcy5fb3duZXIgPSBvd25lcjtcbiAgICBfdGhpcy5fdXJsID0gdXJsO1xuXG4gICAgX3RoaXMuX2J1cyA9IHBhcmVudC5fYnVzO1xuXG4gICAgX3RoaXMuX2RvbWFpbiA9IGRpdmlkZVVSTCh1cmwpLmRvbWFpbjtcbiAgICBfdGhpcy5fb2JqU3Vic2NyaXB0b3JVUkwgPSBfdGhpcy5fdXJsICsgJy9zdWJzY3JpcHRpb24nO1xuXG4gICAgX3RoaXMuX3N1YnNjcmlwdGlvbnMgPSB7fTtcbiAgICBfdGhpcy5fY2hpbGRyZW5zID0gW107XG4gICAgX3RoaXMuX2NoaWxkcmVuTGlzdGVuZXJzID0gW107XG5cbiAgICBfdGhpcy5fZm9yd2FyZHMgPSB7fTtcblxuICAgIF90aGlzLl9pc1RvU2F2ZURhdGEgPSBmYWxzZTtcblxuICAgIF90aGlzLl9hbGxvY2F0ZUxpc3RlbmVycygpO1xuICB9XG5cbiAgX2FsbG9jYXRlTGlzdGVuZXJzKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICAvL2FkZCBzdWJzY3JpcHRpb24gbGlzdGVuZXIuLi5cbiAgICBfdGhpcy5fc3Vic2NyaXB0aW9uTGlzdGVuZXIgPSBfdGhpcy5fYnVzLmFkZExpc3RlbmVyKF90aGlzLl9vYmpTdWJzY3JpcHRvclVSTCwgKG1zZykgPT4ge1xuICAgICAgbG9nLmluZm8oJ1tTeW5jaGVyTWFuYWdlci5SZXBvcnRlck9iamVjdCByZWNlaXZlZCBdJywgbXNnKTtcbiAgICAgIHN3aXRjaCAobXNnLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnc3Vic2NyaWJlJzogX3RoaXMuX29uUmVtb3RlU3Vic2NyaWJlKG1zZyk7IGJyZWFrO1xuICAgICAgICBjYXNlICd1bnN1YnNjcmliZSc6IF90aGlzLl9vblJlbW90ZVVuU3Vic2NyaWJlKG1zZyk7IGJyZWFrO1xuICAgICAgICBjYXNlICdyZXNwb25zZSc6IF90aGlzLl9vblJlbW90ZVJlc3BvbnNlKG1zZyk7IGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IGNoYW5nZVVSTCA9IF90aGlzLl91cmwgKyAnL2NoYW5nZXMnO1xuICAgIF90aGlzLl9jaGFuZ2VMaXN0ZW5lciA9IF90aGlzLl9idXMuYWRkTGlzdGVuZXIoY2hhbmdlVVJMLCAobXNnKSA9PiB7XG5cbiAgICAgIGxvZy5pbmZvKCdbU3luY2hlck1hbmFnZXIuUmVwb3J0ZXJPYmplY3QgXSBTeW5jaGVyTWFuYWdlci0nICsgY2hhbmdlVVJMICsgJy1SQ1Y6ICcsIG1zZyk7XG5cbiAgICAgIC8vVE9ETzogd2hhdCB0b2RvIGhlcmU/IFNhdmUgY2hhbmdlcz9cbiAgICAgIGlmICh0aGlzLl9pc1RvU2F2ZURhdGEgJiYgbXNnLmJvZHkuYXR0cmlidXRlKSB7XG4gICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5SZXBvcnRlck9iamVjdCBdIFN5bmNoZXJNYW5hZ2VyIC0gc2F2ZSBkYXRhOiAnLCBtc2cpO1xuICAgICAgICBfdGhpcy5fcGFyZW50Ll9kYXRhT2JqZWN0c1N0b3JhZ2UudXBkYXRlKHRydWUsIF90aGlzLl91cmwsICd2ZXJzaW9uJywgbXNnLmJvZHkudmVyc2lvbik7XG4gICAgICAgIF90aGlzLl9wYXJlbnQuX2RhdGFPYmplY3RzU3RvcmFnZS51cGRhdGUodHJ1ZSwgX3RoaXMuX3VybCwgJ2xhc3RNb2RpZmllZCcsIG1zZy5ib2R5Lmxhc3RNb2RpZmllZCk7XG4gICAgICAgIF90aGlzLl9wYXJlbnQuX2RhdGFPYmplY3RzU3RvcmFnZS5zYXZlRGF0YSh0cnVlLCBfdGhpcy5fdXJsLCBtc2cuYm9keS5hdHRyaWJ1dGUsIG1zZy5ib2R5LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldCBpc1RvU2F2ZURhdGEodmFsdWUpIHtcbiAgICB0aGlzLl9pc1RvU2F2ZURhdGEgPSB2YWx1ZTtcbiAgfVxuXG4gIF9yZWxlYXNlTGlzdGVuZXJzKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBfdGhpcy5fc3Vic2NyaXB0aW9uTGlzdGVuZXIucmVtb3ZlKCk7XG5cbiAgICBfdGhpcy5fY2hhbmdlTGlzdGVuZXIucmVtb3ZlKCk7XG5cbiAgICBfdGhpcy5fY2hpbGRyZW5MaXN0ZW5lcnMuZm9yRWFjaCgoY2wpID0+IHtcbiAgICAgIGNsLnJlbW92ZSgpO1xuICAgIH0pO1xuXG4gICAgT2JqZWN0LmtleXMoX3RoaXMuX2ZvcndhcmRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIF90aGlzLmZvcndhcmRVblN1YnNjcmliZShrZXkpO1xuICAgIH0pO1xuXG4gICAgLy9yZW1vdmUgYWxsIHN1YnNjcmlwdGlvbnNcbiAgICBPYmplY3Qua2V5cyhfdGhpcy5fc3Vic2NyaXB0aW9ucykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1trZXldLl9yZWxlYXNlTGlzdGVuZXJzKCk7XG4gICAgfSk7XG4gIH1cblxuICByZXN1bWVTdWJzY3JpcHRpb25zKHN1YnNjcmlwdGlvbnMpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKCFzdWJzY3JpcHRpb25zKVxuICAgICAgcmV0dXJuO1xuXG4gICAgT2JqZWN0LmtleXMoc3Vic2NyaXB0aW9ucykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBsZXQgaHlwZXJ0eVVSTCA9IHN1YnNjcmlwdGlvbnNba2V5XTtcblxuICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLlJlcG9ydGVyT2JqZWN0XSAtIHJlc3VtZSBzdWJzY3JpcHRpb25zJywgX3RoaXMsIGh5cGVydHlVUkwsIF90aGlzLl9jaGlsZHJlbnMpO1xuXG4gICAgICBpZiAoIV90aGlzLl9zdWJzY3JpcHRpb25zW2h5cGVydHlVUkxdKSB7XG4gICAgICAgIF90aGlzLl9zdWJzY3JpcHRpb25zW2h5cGVydHlVUkxdID0gbmV3IFN1YnNjcmlwdGlvbihfdGhpcy5fYnVzLCBfdGhpcy5fb3duZXIsIF90aGlzLl91cmwsIF90aGlzLl9jaGlsZHJlbnMsIHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBsaXN0ZW5lciBpbiB0aGUgbXNnLW5vZGUgYW5kIGluIHRoZSBsb2NhbCBNZXNzYWdlQnVzLCBzbyB0aGF0IG1lc3NhZ2VzIG9uIHRoaXMgYWRkcmVzcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSByZXBvcnRlciBvYmplY3RcbiAgICogQHBhcmFtICB7c3RyaW5nfSBhZGRyZXNzIC0gVVJMIHRvIHJlZ2lzdGVyIHRoZSBsaXN0ZW5lcnNcbiAgICogQHJldHVybiB7UHJvbWlzZX0gUmV0dXJuIFByb21pc2UgT0sgb3IgZXJyb3JcbiAgICovXG4gIGZvcndhcmRTdWJzY3JpYmUoYWRkcmVzc2VzKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIC8vRkxPVy1PVVQ6IG1lc3NhZ2Ugc2VudCB0byB0aGUgbXNnLW5vZGUgU3Vic2NyaXB0aW9uTWFuYWdlciBjb21wb25lbnRcbiAgICBsZXQgbm9kZVN1YnNjcmliZU1zZyA9IHtcbiAgICAgIHR5cGU6ICdzdWJzY3JpYmUnLCBmcm9tOiBfdGhpcy5fcGFyZW50Ll91cmwsIHRvOiAnZG9tYWluOi8vbXNnLW5vZGUuJyArIF90aGlzLl9kb21haW4gKyAnL3NtJyxcbiAgICAgIGJvZHk6IHsgcmVzb3VyY2VzOiBhZGRyZXNzZXMsIHNvdXJjZTogX3RoaXMuX293bmVyIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2Uobm9kZVN1YnNjcmliZU1zZywgKHJlcGx5KSA9PiB7XG4gICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5SZXBvcnRlck9iamVjdCBdZm9yd2FyZC1zdWJzY3JpYmUtcmVzcG9uc2UocmVwb3J0ZXIpOiAnLCByZXBseSk7XG4gICAgICAgIGlmIChyZXBseS5ib2R5LmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgIGxldCBuZXdGb3J3YXJkID0gX3RoaXMuX2J1cy5hZGRGb3J3YXJkKF90aGlzLl91cmwsIF90aGlzLl9vd25lcik7XG4gICAgICAgICAgX3RoaXMuX2ZvcndhcmRzW2FkZHJlc3Nlc1swXV0gPSBuZXdGb3J3YXJkO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QoJ0Vycm9yIG9uIG1zZy1ub2RlIHN1YnNjcmlwdGlvbjogJyArIHJlcGx5LmJvZHkuZGVzYyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuUmVnaXN0ZXIgYSBsaXN0ZW5lciBpbiB0aGUgbXNnLW5vZGUgYW5kIGluIHRoZSBsb2NhbCBNZXNzYWdlQnVzLCBzbyB0aGF0IG1lc3NhZ2VzIG9uIHRoaXMgYWRkcmVzcyBhcmUgcmVtb3ZlZCBmcm9tIGZvcndhcmRcbiAgICogQHBhcmFtICB7c3RyaW5nfSBhZGRyZXNzIC0gVVJMIHRvIHVuLXJlZ2lzdGVyIHRoZSBsaXN0ZW5lcnNcbiAgICovXG4gIGZvcndhcmRVblN1YnNjcmliZShhZGRyZXNzKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIF90aGlzLl9mb3J3YXJkc1thZGRyZXNzXS5yZW1vdmUoKTtcbiAgICBkZWxldGUgX3RoaXMuX2ZvcndhcmRzW2FkZHJlc3NdO1xuXG4gICAgLy9GTE9XLU9VVDogbWVzc2FnZSBzZW50IHRvIHRoZSBtc2ctbm9kZSBTdWJzY3JpcHRpb25NYW5hZ2VyIGNvbXBvbmVudFxuICAgIGxldCBub2RlVW5TdWJzY3JpYmVNc2cgPSB7XG4gICAgICB0eXBlOiAndW5zdWJzY3JpYmUnLCBmcm9tOiBfdGhpcy5fcGFyZW50Ll91cmwsIHRvOiAnZG9tYWluOi8vbXNnLW5vZGUuJyArIF90aGlzLl9kb21haW4gKyAnL3NtJyxcbiAgICAgIGJvZHk6IHsgcmVzb3VyY2VzOiBbYWRkcmVzc10sIHNvdXJjZTogX3RoaXMuX293bmVyIH1cbiAgICB9O1xuXG4gICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShub2RlVW5TdWJzY3JpYmVNc2cpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGxpc3RlbmVycyBmb3IgYSBsaXN0IG9mIGNoaWxkcmVucy4gUHVibGljIGNoYW5uZWxzIHVzZWQgdG8gdHJhbnNtaXQgbWVzc2FnZXMuXG4gICAqIEBwYXJhbSAge3N0cmluZ1tdfSBjaGlsZHJlbnMgLSBjaGFubmVscyB0byByZWdpc3RlclxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBSZXR1cm4gUHJvbWlzZSBPSyBvciBlcnJvclxuICAgKi9cbiAgYWRkQ2hpbGRyZW5zKGNoaWxkcmVucykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKGNoaWxkcmVucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCBjaGlsZEJhc2VVUkwgPSBfdGhpcy5fdXJsICsgJy9jaGlsZHJlbi8nO1xuICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLlJlcG9ydGVyT2JqZWN0IC0gYWRkQ2hpbGRyZW5zXSAtIGNoaWxkcmVuczogJywgY2hpbGRyZW5zLCBjaGlsZEJhc2VVUkwpO1xuXG4gICAgICBjaGlsZHJlbnMuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgX3RoaXMuX2NoaWxkcmVucy5wdXNoKGNoaWxkKTtcbiAgICAgIH0pO1xuXG4gICAgICAvKlxuICAgICAgX3RoaXMuX2NoaWxkcmVucy5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICBsZXQgY2hpbGRJZCA9IGNoaWxkQmFzZVVSTCArIGNoaWxkO1xuXG4gICAgICAgIGxldCBzZWxmRm9yd2FyZCA9IF90aGlzLl9idXMuYWRkRm9yd2FyZChjaGlsZElkLCBvd25lcik7XG4gICAgICAgIF90aGlzLl9jaGlsZHJlbkxpc3RlbmVycy5wdXNoKHNlbGZGb3J3YXJkKTtcbiAgICAgIH0pOyovXG5cbiAgICAgIGxldCBzdWJzY3JpcHRpb25zID0gW107XG4gICAgICBjaGlsZHJlbnMuZm9yRWFjaCgoY2hpbGQpID0+IHN1YnNjcmlwdGlvbnMucHVzaChjaGlsZEJhc2VVUkwgKyBjaGlsZCkpO1xuXG4gICAgICAvL190aGlzLl9zdG9yYWdlU3Vic2NyaXB0aW9uc1tfdGhpcy5fb2JqU3Vic2NyaXB0b3JVUkxdID0ge3VybDogX3RoaXMuX3VybCwgb3duZXI6IF90aGlzLl9vd25lciwgY2hpbGRyZW5zOiBfdGhpcy5fY2hpbGRyZW5zfTtcblxuICAgICAgLy9GTE9XLU9VVDogbWVzc2FnZSBzZW50IHRvIHRoZSBtc2ctbm9kZSBTdWJzY3JpcHRpb25NYW5hZ2VyIGNvbXBvbmVudFxuICAgICAgbGV0IG5vZGVTdWJzY3JpYmVNc2cgPSB7XG4gICAgICAgIHR5cGU6ICdzdWJzY3JpYmUnLCBmcm9tOiBfdGhpcy5fcGFyZW50Ll91cmwsIHRvOiAnZG9tYWluOi8vbXNnLW5vZGUuJyArIF90aGlzLl9kb21haW4gKyAnL3NtJyxcbiAgICAgICAgYm9keTogeyByZXNvdXJjZXM6IHN1YnNjcmlwdGlvbnMsIHNvdXJjZTogX3RoaXMuX293bmVyIH1cbiAgICAgIH07XG5cbiAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2Uobm9kZVN1YnNjcmliZU1zZywgKHJlcGx5KSA9PiB7XG4gICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5SZXBvcnRlck9iamVjdCBdbm9kZS1zdWJzY3JpYmUtcmVzcG9uc2UocmVwb3J0ZXIpOicsIHJlcGx5KTtcbiAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gMjAwKSB7XG5cbiAgICAgICAgICAvL2FkZCBjaGlsZHJlbiBsaXN0ZW5lcnMgb24gbG9jYWwgLi4uXG4gICAgICAgICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChjaGlsZFVSTCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNoaWxkTGlzdGVuZXIgPSBfdGhpcy5fYnVzLmFkZExpc3RlbmVyKGNoaWxkVVJMLCAobXNnKSA9PiB7XG4gICAgICAgICAgICAgIC8vVE9ETzogd2hhdCB0b2RvIGhlcmU/IFNhdmUgY2hpbGRyZW5zP1xuICAgICAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuUmVwb3J0ZXJPYmplY3QgcmVjZWl2ZWRdJywgbXNnKTtcblxuICAgICAgICAgICAgICBpZiAobXNnLnR5cGUgPT09ICdjcmVhdGUnICYmIG1zZy50by5pbmNsdWRlcygnY2hpbGRyZW4nKSAmJiB0aGlzLl9pc1RvU2F2ZURhdGEpIHtcblxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBub3QgZW5jcnlwdGVkIGxldHMgZW5jcnlwdCBpdFxuICAgICAgICAgICAgICAgIC8vIHRvZG86IHNob3VsZCBiZSBzdWJqZWN0IHRvIHNvbWUgcG9saWN5XG4gICAgICAgICAgICAgICAgbGV0IHNwbGl0ZWRSZXBvcnRlclVSTCA9IHNwbGl0T2JqZWN0VVJMKG1zZy50byk7XG5cbiAgICAgICAgICAgICAgICBsZXQgdXJsID0gc3BsaXRlZFJlcG9ydGVyVVJMLnVybDtcblxuICAgICAgICAgICAgICAgIC8vcmVtb3ZlIGZhbHNlIHdoZW4gbXV0dWFsQXV0aGVudGljYXRpb24gaXMgZW5hYmxlZFxuICAgICAgICAgICAgICAgIGlmICghKHR5cGVvZiBtc2cuYm9keS52YWx1ZSA9PT0gJ3N0cmluZycpKSB7XG5cbiAgICAgICAgICAgICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5SZXBvcnRlck9iamVjdF0gZW5jcnlwdGluZyByZWNlaXZlZCBkYXRhICcsIG1zZy5ib2R5LnZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgY3J5cHRvTWFuYWdlci5kZWZhdWx0LmVuY3J5cHREYXRhT2JqZWN0KG1zZy5ib2R5LnZhbHVlLCB1cmwpLnRoZW4oKGVuY3J5cHRlZFZhbHVlKT0+e1xuICAgICAgICAgICAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuUmVwb3J0ZXJPYmplY3RdIGVuY3J5cHRlZCBkYXRhICcsICBlbmNyeXB0ZWRWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3N0b3JlQ2hpbGRPYmplY3QobXNnLCBKU09OLnN0cmluZ2lmeShlbmNyeXB0ZWRWYWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsb2cud2FybignW1N5bmNoZXJNYW5hZ2VyLl9kZWNyeXB0Q2hpbGRyZW5zXSBmYWlsZWQgOiAnLCByZWFzb24sICcgU3RvcmluZyB1bmVuY3J5cHRlZCcpO1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5fc3RvcmVDaGlsZE9iamVjdChtc2csIG1zZy5ib2R5LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5fc3RvcmVDaGlsZE9iamVjdChtc2csIG1zZy5ib2R5LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBfdGhpcy5fY2hpbGRyZW5MaXN0ZW5lcnMucHVzaChjaGlsZExpc3RlbmVyKTtcblxuICAgICAgICAgICAgbGV0IHNlbGZGb3J3YXJkID0gX3RoaXMuX2J1cy5hZGRGb3J3YXJkKGNoaWxkVVJMLCBfdGhpcy5fb3duZXIpO1xuICAgICAgICAgICAgX3RoaXMuX2NoaWxkcmVuTGlzdGVuZXJzLnB1c2goc2VsZkZvcndhcmQpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdCgnRXJyb3Igb24gbXNnLW5vZGUgc3Vic2NyaXB0aW9uOiAnICsgcmVwbHkuYm9keS5kZXNjKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBzdG9yZSBjaGlsZE9iamVjdFxuXG4gIF9zdG9yZUNoaWxkT2JqZWN0KG1zZywgZGF0YSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgc3BsaXRlZFJlcG9ydGVyVVJMID0gc3BsaXRPYmplY3RVUkwobXNnLnRvKTtcblxuICAgIGxldCB1cmwgPSBzcGxpdGVkUmVwb3J0ZXJVUkwudXJsO1xuXG4gICAgbGV0IHJlc291cmNlID0gc3BsaXRlZFJlcG9ydGVyVVJMLnJlc291cmNlO1xuICAgIGxldCB2YWx1ZSA9IHtcbiAgICAgIGlkZW50aXR5OiBtc2cuYm9keS5pZGVudGl0eSxcbiAgICAgIHZhbHVlOiBkYXRhXG4gICAgfTtcblxuICAgIGxldCBvYmplY3RVUkxSZXNvdXJjZSA9IG1zZy5ib2R5LnJlc291cmNlO1xuICAgIGxldCBhdHRyaWJ1dGUgPSByZXNvdXJjZTtcblxuICAgIGlmIChvYmplY3RVUkxSZXNvdXJjZSkgYXR0cmlidXRlICs9ICcuJyArIG9iamVjdFVSTFJlc291cmNlO1xuXG4gICAgLy8gdGhpcyBpZGVudGl0eSBkYXRhIGlzIG5vdCBuZWVkZWQgdG8gYmUgc3RvcmVkXG4gICAgZGVsZXRlIHZhbHVlLmlkZW50aXR5LmFzc2VydGlvbjtcbiAgICBkZWxldGUgdmFsdWUuaWRlbnRpdHkuZXhwaXJlcztcblxuXG4gICAgY29uc29sZS5sb2coJ1tTeW5jaGVyTWFuYWdlci5SZXBvcnRlck9iamVjdC5fc3RvcmVDaGlsZE9iamVjdF0gOiAnLCB1cmwsIGF0dHJpYnV0ZSwgdmFsdWUpO1xuXG4gICAgX3RoaXMuX3BhcmVudC5fZGF0YU9iamVjdHNTdG9yYWdlLnNhdmVDaGlsZHJlbnModHJ1ZSwgdXJsLCBhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgfVxuXG4gIGRlbGV0ZSgpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIGxldCBkb21haW4gPSBkaXZpZGVVUkwoX3RoaXMuX293bmVyKS5kb21haW47XG5cbiAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHNlbnQgZGlyZWN0bHkgdG8gYWxsIHN1YnNjcmliZXJzIG9mIHRoZSByZXBvcnRlclxuICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2Uoe1xuICAgICAgdHlwZTogJ2RlbGV0ZScsIGZyb206IF90aGlzLl9vYmpTdWJzY3JpcHRvclVSTCwgdG86IF90aGlzLl91cmwgKyAnL2NoYW5nZXMnXG4gICAgfSk7XG5cbiAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHNlbnQgdG8gdGhlIG1zZy1ub2RlIE9iamVjdEFsbG9jYXRpb25NYW5hZ2VyIGNvbXBvbmVudFxuICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2Uoe1xuICAgICAgdHlwZTogJ2RlbGV0ZScsIGZyb206IF90aGlzLl9wYXJlbnQuX3VybCwgdG86ICdkb21haW46Ly9tc2ctbm9kZS4nICsgZG9tYWluICsgJy9vYmplY3QtYWRkcmVzcy1hbGxvY2F0aW9uJyxcbiAgICAgIGJvZHk6IHsgcmVzb3VyY2U6IF90aGlzLl91cmwsIGNoaWxkcmVuUmVzb3VyY2VzOiBfdGhpcy5fY2hpbGRyZW5zIH1cbiAgICB9KTtcblxuICAgIF90aGlzLl9yZWxlYXNlTGlzdGVuZXJzKCk7XG4gICAgZGVsZXRlIF90aGlzLl9wYXJlbnQuX3JlcG9ydGVyc1tfdGhpcy5fdXJsXTtcbiAgfVxuXG4gIF9vblJlbW90ZVJlc3BvbnNlKG1zZykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHtcbiAgICAgIGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIGZyb206IG1zZy50bywgdG86IF90aGlzLl91cmwsXG4gICAgICBib2R5OiB7IGNvZGU6IG1zZy5ib2R5LmNvZGUsIGlkZW50aXR5OiBtc2cuYm9keS5pZGVudGl0eSwgc291cmNlOiBtc2cuZnJvbSB9XG4gICAgfSk7XG4gIH1cblxuICAvL0ZMT1ctSU46IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBTeW5jaGVyIC0+IHN1YnNjcmliZVxuICBfb25SZW1vdGVTdWJzY3JpYmUobXNnKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBsZXQgaHlwZXJ0eVVSTCA9IG1zZy5ib2R5LnN1YnNjcmliZXI7XG5cbiAgICAvL3ZhbGlkYXRlIGlmIHN1YnNjcmlwdGlvbiBhbHJlYWR5IGV4aXN0cz9cbiAgICBpZiAoX3RoaXMuX3N1YnNjcmlwdGlvbnNbaHlwZXJ0eVVSTF0pIHtcbiAgICAgIC8vIGxldCBlcnJvck1zZyA9IHtcbiAgICAgIC8vICAgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgZnJvbTogbXNnLnRvLCB0bzogaHlwZXJ0eVVSTCxcbiAgICAgIC8vICAgYm9keTogeyBjb2RlOiA1MDAsIGRlc2M6ICdTdWJzY3JpcHRpb24gZm9yICgnICsgX3RoaXMuX3VybCArICcgOiAnICsgIGh5cGVydHlVUkwgKyAnKSBhbHJlYWR5IGV4aXN0cyEnIH1cbiAgICAgIC8vIH07XG4gICAgICAvL1xuICAgICAgLy8gX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShlcnJvck1zZyk7XG4gICAgICAvLyByZXR1cm47XG5cbiAgICAgIC8vIG5ldyB2ZXJzaW9uIGJlY2F1c2Ugb2YgcmV1c2FnZVxuICAgICAgX3RoaXMuX3N1YnNjcmlwdGlvbnNbaHlwZXJ0eVVSTF0uX3JlbGVhc2VMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICAvL2FzayB0byBzdWJzY3JpYmUgdG8gU3luY2hlcj8gKGRlcGVuZHMgb24gdGhlIG9wZXJhdGlvbiBtb2RlKVxuICAgIC8vVE9ETzogZ2V0IG1vZGUgZnJvbSBvYmplY3QhXG4gICAgbGV0IG1vZGUgPSAnc3ViL3B1Yic7XG5cbiAgICBpZiAobW9kZSA9PT0gJ3N1Yi9wdWInKSB7XG4gICAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHNlbnQgdG8gbG9jYWwgaHlwZXJ0eSBhZGRyZXNzIFN5bmNoZXIgLT4gX29uRm9yd2FyZFxuICAgICAgbGV0IGZvcndhcmRNc2cgPSB7XG4gICAgICAgIHR5cGU6ICdmb3J3YXJkJywgZnJvbTogX3RoaXMuX3VybCwgdG86IF90aGlzLl9vd25lcixcbiAgICAgICAgYm9keTogeyB0eXBlOiBtc2cudHlwZSwgZnJvbTogaHlwZXJ0eVVSTCwgdG86IF90aGlzLl91cmwsIGlkZW50aXR5OiBtc2cuYm9keS5pZGVudGl0eSB9XG4gICAgICB9O1xuXG4gICAgICAvL1RPRE86IEZvciBGdXJ0aGVyIFN0dWR5XG4gICAgICBpZiAobXNnLmJvZHkuaGFzT3duUHJvcGVydHkoJ211dHVhbCcpKSBmb3J3YXJkTXNnLmJvZHkubXV0dWFsID0gbXNnLmJvZHkubXV0dWFsO1xuXG4gICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKGZvcndhcmRNc2csIChyZXBseSkgPT4ge1xuICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuUmVwb3J0ZXJPYmplY3QgXWZvcndhcmQtcmVwbHk6ICcsIHJlcGx5KTtcbiAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgaWYgKCFfdGhpcy5fc3Vic2NyaXB0aW9uc1toeXBlcnR5VVJMXSkge1xuICAgICAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLlJlcG9ydGVyT2JqZWN0XSAtIF9vblJlbW90ZVN1YnNjcmliZTonLCBfdGhpcy5fY2hpbGRyZW5zKTtcbiAgICAgICAgICAgIF90aGlzLl9zdWJzY3JpcHRpb25zW2h5cGVydHlVUkxdID0gbmV3IFN1YnNjcmlwdGlvbihfdGhpcy5fYnVzLCBfdGhpcy5fb3duZXIsIF90aGlzLl91cmwsIF90aGlzLl9jaGlsZHJlbnMsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vVE9ETzogYXR1YWxpemFyIG11dHVhbCBubyBzdG9yYWdlIGUgdGIgbmEgc2Vzc2lvbktleXNcblxuICAgICAgICAvLyBTdG9yZSBmb3IgZWFjaCByZXBvcnRlciBoeXBlcnR5IHRoZSBkYXRhT2JqZWN0XG4gICAgICAgIGxldCB1c2VyVVJMO1xuICAgICAgICBpZiAobXNnLmJvZHkuaWRlbnRpdHkgJiYgbXNnLmJvZHkuaWRlbnRpdHkudXNlclByb2ZpbGUudXNlclVSTCkge1xuICAgICAgICAgIHVzZXJVUkwgPSBtc2cuYm9keS5pZGVudGl0eS51c2VyUHJvZmlsZS51c2VyVVJMO1xuICAgICAgICAgIF90aGlzLl9wYXJlbnQuX2RhdGFPYmplY3RzU3RvcmFnZS51cGRhdGUodHJ1ZSwgX3RoaXMuX3VybCwgJ3N1YnNjcmliZXJVc2VycycsIHVzZXJVUkwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1zZy5ib2R5Lmhhc093blByb3BlcnR5KCdtdXR1YWwnKSkge1xuLy8gICAgICAgICAgX3RoaXMuX3BhcmVudC5faWRlbnRpdHlNb2R1bGUudXBkYXRlSXNUb0VuY3J5cHRGb3JEYXRhT2JqZWN0U2Vzc2lvbktleShfdGhpcy5fdXJsLCBtc2cuYm9keS5tdXR1YWwpLnRoZW4oKCk9PntcbiAgICAgICAgICAgIF90aGlzLl9wYXJlbnQuX2RhdGFPYmplY3RzU3RvcmFnZS51cGRhdGUodHJ1ZSwgX3RoaXMuX3VybCwgJ211dHVhbCcsIG1zZy5ib2R5Lm11dHVhbCk7XG4vLyAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLl9wYXJlbnQuX2RhdGFPYmplY3RzU3RvcmFnZS51cGRhdGUodHJ1ZSwgX3RoaXMuX3VybCwgJ3N1YnNjcmlwdGlvbnMnLCBoeXBlcnR5VVJMKTtcblxuICAgICAgICByZXBseS5ib2R5Lm93bmVyID0gX3RoaXMuX293bmVyO1xuXG4gICAgICAgIC8vRkxPVy1PVVQ6IHN1YnNjcmlwdGlvbiByZXNwb25zZSBzZW50IChmb3J3YXJkIGZyb20gaW50ZXJuYWwgSHlwZXJ0eSlcbiAgICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgZnJvbTogbXNnLnRvLCB0bzogbXNnLmZyb20sXG4gICAgICAgICAgYm9keTogcmVwbHkuYm9keVxuICAgICAgICB9KTtcblxuICAgICAgfSk7XG4gICAgfVxuXG4gIH1cblxuICAvL0ZMT1ctSU46IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSByZW1vdGUgT2JzZXJ2ZXJPYmplY3QgLT4gcmVtb3ZlU3Vic2NyaXB0aW9uXG4gIF9vblJlbW90ZVVuU3Vic2NyaWJlKG1zZykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgbGV0IHVuc3Vic2NyaWJlciA9IG1zZy5ib2R5LnNvdXJjZTtcblxuICAgIGxldCBzdWJzY3JpcHRpb24gPSBfdGhpcy5fc3Vic2NyaXB0aW9uc1t1bnN1YnNjcmliZXJdO1xuICAgIGlmIChzdWJzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmlwdGlvbi5fcmVsZWFzZUxpc3RlbmVycygpO1xuICAgICAgZGVsZXRlIF90aGlzLl9zdWJzY3JpcHRpb25zW3Vuc3Vic2NyaWJlcl07XG5cbiAgICAgIGxldCBmb3J3YXJkTXNnID0ge1xuICAgICAgICB0eXBlOiAnZm9yd2FyZCcsIGZyb206IF90aGlzLl91cmwsIHRvOiBfdGhpcy5fb3duZXIsXG4gICAgICAgIGJvZHk6IHsgdHlwZTogbXNnLnR5cGUsIGZyb206IHVuc3Vic2NyaWJlciwgdG86IF90aGlzLl91cmwsIGlkZW50aXR5OiBtc2cuYm9keS5pZGVudGl0eSB9XG4gICAgICB9O1xuXG5cbiAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2UoZm9yd2FyZE1zZyk7XG4gICAgfVxuXG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBSZXBvcnRlck9iamVjdDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvc3luY2hlci9SZXBvcnRlck9iamVjdC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBOzs7QUFBQTtBQUNBO0FBREE7QUFDQTs7Ozs7QUFMQTtBQUNBO0FBS0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQVFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUtBO0FBQ0E7QUFFQTs7O0FBMVVBO0FBQ0E7QUFDQTs7Ozs7QUE0VUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///518\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(42);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(11);\n\nvar _Subscription = __webpack_require__(212);\n\nvar _Subscription2 = _interopRequireDefault(_Subscription);\n\nvar _CryptoManager = __webpack_require__(101);\n\nvar cryptoManager = _interopRequireWildcard(_CryptoManager);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('ObserverObject'); // Log System\n\nvar ObserverObject = function () {\n function ObserverObject(parent, url, childrens) {\n var _this2 = this;\n\n (0, _classCallCheck3.default)(this, ObserverObject);\n\n var _this = this;\n\n _this._parent = parent;\n _this._url = url;\n _this._childrens = childrens;\n\n _this._bus = parent._bus;\n\n _this._subscriptions = {};\n _this._storageSubscriptions = {};\n _this._childrenListeners = [];\n\n this._isToSaveData = false;\n\n var changeURL = _this._url + '/changes';\n _this._changeListener = _this._bus.addListener(changeURL, function (msg) {\n\n log.log('[SyncherManager.ObserverObject ] SyncherManager-' + changeURL + '-RCV: ', msg);\n\n //TODO: what todo here? Save changes?\n if (_this2._isToSaveData && msg.body.attribute) {\n log.log('[SyncherManager.ObserverObject ] SyncherManager - save data: ', msg);\n _this._parent._dataObjectsStorage.update(false, _this._url, 'version', msg.body.version);\n _this._parent._dataObjectsStorage.update(false, _this._url, 'lastModified', msg.body.lastModified);\n _this._parent._dataObjectsStorage.saveData(false, _this._url, msg.body.attribute, msg.body.value);\n }\n });\n }\n\n (0, _createClass3.default)(ObserverObject, [{\n key: '_newSubscription',\n value: function _newSubscription(hyperty) {\n var _this = this;\n\n var subscription = _this._subscriptions[hyperty];\n log.log('[Observer Object - new subscription] - ', _this._subscriptions, hyperty, _this._subscriptions.hasOwnProperty(hyperty));\n if (!subscription) {\n _this._subscriptions[hyperty] = new _Subscription2.default(_this._bus, hyperty, _this._url, _this._childrens, false);\n }\n }\n }, {\n key: 'addSubscription',\n value: function addSubscription(hyperty) {\n var _this = this;\n\n _this._newSubscription(hyperty);\n }\n }, {\n key: 'addChildrens',\n value: function addChildrens(childrens) {\n var _this3 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve) {\n if (childrens.length === 0) {\n return resolve();\n }\n\n var childBaseURL = _this._url + '/children/';\n log.log('[SyncherManager.ObserverObject - addChildrens] - childrens: ', childrens, childBaseURL);\n\n childrens.forEach(function (child) {\n\n var childListener = _this._bus.addListener(childBaseURL + child, function (msg) {\n //TODO: what todo here? Save childrens?\n log.log('[SyncherManager.ObserverObject received]', msg);\n\n if (msg.type === 'create' && msg.to.includes('children') && _this3._isToSaveData) {\n var splitedReporterURL = (0, _utils.splitObjectURL)(msg.to);\n\n var url = splitedReporterURL.url;\n\n //remove false when mutualAuthentication is enabled\n if (!(typeof msg.body.value === 'string')) {\n\n log.log('[SyncherManager.ObserverObject] encrypting received data ', msg.body.value);\n\n cryptoManager.default.encryptDataObject(msg.body.value, url).then(function (encryptedValue) {\n log.log('[SyncherManager.ObserverObject] encrypted data ', encryptedValue);\n\n _this._storeChildObject(msg, (0, _stringify2.default)(encryptedValue));\n }).catch(function (reason) {\n log.warn('[SyncherManager.ObserverObject._encryptChild] failed, storing unencrypted ', reason);\n _this._storeChildObject(msg, msg.body.value);\n });\n } else {\n _this._storeChildObject(msg, msg.body.value);\n }\n }\n\n log.log('[SyncherManager.ObserverObject children Listeners]', _this._childrenListeners, childListener);\n if (_this._childrenListeners.indexOf(childListener) === -1) {\n _this._childrenListeners.push(childListener);\n }\n });\n });\n });\n }\n\n // store childObject\n\n }, {\n key: '_storeChildObject',\n value: function _storeChildObject(msg, data) {\n var _this = this;\n\n var splitedReporterURL = (0, _utils.splitObjectURL)(msg.to);\n\n var url = splitedReporterURL.url;\n\n var resource = splitedReporterURL.resource;\n var value = {\n identity: msg.body.identity,\n value: data\n };\n\n // this identity data is not needed to be stored\n delete value.identity.assertion;\n delete value.identity.expires;\n\n var objectURLResource = msg.body.resource;\n var attribute = resource;\n\n if (objectURLResource) attribute += '.' + objectURLResource;\n\n log.log('[SyncherManager.ObserverObject._storeChildObject] : ', url, attribute, value);\n\n _this._parent._dataObjectsStorage.saveChildrens(false, url, attribute, value);\n }\n }, {\n key: 'removeSubscription',\n value: function removeSubscription(msg) {\n var _this = this;\n\n var hyperty = msg.from;\n\n var domain = (0, _utils.divideURL)(hyperty).domain;\n var objURLSubscription = _this._url + '/subscription';\n\n var subscription = _this._subscriptions[hyperty];\n if (subscription) {\n //FLOW-OUT: message sent to remote ReporterObject -> _onRemoteUnSubscribe\n _this._bus.postMessage({\n type: 'unsubscribe', from: _this._parent._url, to: objURLSubscription,\n body: { source: hyperty, identity: msg.body.identity }\n });\n\n //TODO: should I wait for response before unsubscribe on msg-node\n //FLOW-OUT: message sent to msg-node SubscriptionManager component\n _this._bus.postMessage({\n type: 'unsubscribe', from: _this._parent._url, to: 'domain://msg-node.' + domain + '/sm',\n body: { resource: _this._url, childrenResources: _this._childrens }\n });\n\n subscription._releaseListeners();\n delete _this._subscriptions[hyperty];\n }\n }\n }, {\n key: 'isToSaveData',\n set: function set(value) {\n this._isToSaveData = value;\n }\n }]);\n return ObserverObject;\n}();\n\nexports.default = ObserverObject;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTE5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zeW5jaGVyL09ic2VydmVyT2JqZWN0LmpzPzFiNTUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9nIFN5c3RlbVxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJ2xvZ2xldmVsJztcbmxldCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdPYnNlcnZlck9iamVjdCcpO1xuXG5pbXBvcnQgeyBkaXZpZGVVUkwsIHNwbGl0T2JqZWN0VVJMIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IFN1YnNjcmlwdGlvbiBmcm9tICcuL1N1YnNjcmlwdGlvbic7XG5pbXBvcnQgKiBhcyBjcnlwdG9NYW5hZ2VyIGZyb20gJy4uL2NyeXB0b01hbmFnZXIvQ3J5cHRvTWFuYWdlcic7XG5cbmNsYXNzIE9ic2VydmVyT2JqZWN0IHtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQsIHVybCwgY2hpbGRyZW5zKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIF90aGlzLl9wYXJlbnQgPSBwYXJlbnQ7XG4gICAgX3RoaXMuX3VybCA9IHVybDtcbiAgICBfdGhpcy5fY2hpbGRyZW5zID0gY2hpbGRyZW5zO1xuXG4gICAgX3RoaXMuX2J1cyA9IHBhcmVudC5fYnVzO1xuXG4gICAgX3RoaXMuX3N1YnNjcmlwdGlvbnMgPSB7fTtcbiAgICBfdGhpcy5fc3RvcmFnZVN1YnNjcmlwdGlvbnMgPSB7fTtcbiAgICBfdGhpcy5fY2hpbGRyZW5MaXN0ZW5lcnMgPSBbXTtcblxuICAgIHRoaXMuX2lzVG9TYXZlRGF0YSA9IGZhbHNlO1xuXG4gICAgbGV0IGNoYW5nZVVSTCA9IF90aGlzLl91cmwgKyAnL2NoYW5nZXMnO1xuICAgIF90aGlzLl9jaGFuZ2VMaXN0ZW5lciA9IF90aGlzLl9idXMuYWRkTGlzdGVuZXIoY2hhbmdlVVJMLCAobXNnKSA9PiB7XG5cbiAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5PYnNlcnZlck9iamVjdCBdIFN5bmNoZXJNYW5hZ2VyLScgKyBjaGFuZ2VVUkwgKyAnLVJDVjogJywgbXNnKTtcblxuICAgICAgLy9UT0RPOiB3aGF0IHRvZG8gaGVyZT8gU2F2ZSBjaGFuZ2VzP1xuICAgICAgaWYgKHRoaXMuX2lzVG9TYXZlRGF0YSAmJiBtc2cuYm9keS5hdHRyaWJ1dGUpIHtcbiAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLk9ic2VydmVyT2JqZWN0IF0gU3luY2hlck1hbmFnZXIgLSBzYXZlIGRhdGE6ICcsIG1zZyk7XG4gICAgICAgIF90aGlzLl9wYXJlbnQuX2RhdGFPYmplY3RzU3RvcmFnZS51cGRhdGUoZmFsc2UsIF90aGlzLl91cmwsICd2ZXJzaW9uJywgbXNnLmJvZHkudmVyc2lvbik7XG4gICAgICAgIF90aGlzLl9wYXJlbnQuX2RhdGFPYmplY3RzU3RvcmFnZS51cGRhdGUoZmFsc2UsIF90aGlzLl91cmwsICdsYXN0TW9kaWZpZWQnLCBtc2cuYm9keS5sYXN0TW9kaWZpZWQpO1xuICAgICAgICBfdGhpcy5fcGFyZW50Ll9kYXRhT2JqZWN0c1N0b3JhZ2Uuc2F2ZURhdGEoZmFsc2UsIF90aGlzLl91cmwsIG1zZy5ib2R5LmF0dHJpYnV0ZSwgbXNnLmJvZHkudmFsdWUpO1xuICAgICAgfVxuXG4gICAgfSk7XG4gIH1cblxuICBzZXQgaXNUb1NhdmVEYXRhKHZhbHVlKSB7XG4gICAgdGhpcy5faXNUb1NhdmVEYXRhID0gdmFsdWU7XG4gIH1cblxuICBfbmV3U3Vic2NyaXB0aW9uKGh5cGVydHkpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IHN1YnNjcmlwdGlvbiA9IF90aGlzLl9zdWJzY3JpcHRpb25zW2h5cGVydHldO1xuICAgIGxvZy5sb2coJ1tPYnNlcnZlciBPYmplY3QgLSBuZXcgc3Vic2NyaXB0aW9uXSAtICcsICBfdGhpcy5fc3Vic2NyaXB0aW9ucywgaHlwZXJ0eSwgX3RoaXMuX3N1YnNjcmlwdGlvbnMuaGFzT3duUHJvcGVydHkoaHlwZXJ0eSkpO1xuICAgIGlmICghc3Vic2NyaXB0aW9uKSB7XG4gICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1toeXBlcnR5XSA9IG5ldyBTdWJzY3JpcHRpb24oX3RoaXMuX2J1cywgaHlwZXJ0eSwgX3RoaXMuX3VybCwgX3RoaXMuX2NoaWxkcmVucywgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFN1YnNjcmlwdGlvbihoeXBlcnR5KSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIF90aGlzLl9uZXdTdWJzY3JpcHRpb24oaHlwZXJ0eSk7XG4gIH1cblxuICBhZGRDaGlsZHJlbnMoY2hpbGRyZW5zKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgaWYgKGNoaWxkcmVucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGNoaWxkQmFzZVVSTCA9IF90aGlzLl91cmwgKyAnL2NoaWxkcmVuLyc7XG4gICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuT2JzZXJ2ZXJPYmplY3QgLSBhZGRDaGlsZHJlbnNdIC0gY2hpbGRyZW5zOiAnLCBjaGlsZHJlbnMsIGNoaWxkQmFzZVVSTCk7XG5cbiAgICAgIGNoaWxkcmVucy5mb3JFYWNoKChjaGlsZCkgPT4ge1xuXG4gICAgICAgIGxldCBjaGlsZExpc3RlbmVyID0gX3RoaXMuX2J1cy5hZGRMaXN0ZW5lcihjaGlsZEJhc2VVUkwgKyBjaGlsZCwgKG1zZykgPT4ge1xuICAgICAgICAgIC8vVE9ETzogd2hhdCB0b2RvIGhlcmU/IFNhdmUgY2hpbGRyZW5zP1xuICAgICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5PYnNlcnZlck9iamVjdCByZWNlaXZlZF0nLCBtc2cpO1xuXG4gICAgICAgICAgaWYgKG1zZy50eXBlID09PSAnY3JlYXRlJyAmJiBtc2cudG8uaW5jbHVkZXMoJ2NoaWxkcmVuJykgJiYgdGhpcy5faXNUb1NhdmVEYXRhKSB7XG4gICAgICAgICAgICBsZXQgc3BsaXRlZFJlcG9ydGVyVVJMID0gc3BsaXRPYmplY3RVUkwobXNnLnRvKTtcblxuICAgICAgICAgICAgbGV0IHVybCA9IHNwbGl0ZWRSZXBvcnRlclVSTC51cmw7XG5cbiAgICAgICAgICAgIC8vcmVtb3ZlIGZhbHNlIHdoZW4gbXV0dWFsQXV0aGVudGljYXRpb24gaXMgZW5hYmxlZFxuICAgICAgICAgICAgaWYgKCEodHlwZW9mIG1zZy5ib2R5LnZhbHVlID09PSAnc3RyaW5nJykpIHtcblxuICAgICAgICAgICAgICBsb2cubG9nKCdbU3luY2hlck1hbmFnZXIuT2JzZXJ2ZXJPYmplY3RdIGVuY3J5cHRpbmcgcmVjZWl2ZWQgZGF0YSAnLCBtc2cuYm9keS52YWx1ZSk7XG5cbiAgICAgICAgICAgICAgY3J5cHRvTWFuYWdlci5kZWZhdWx0LmVuY3J5cHREYXRhT2JqZWN0KG1zZy5ib2R5LnZhbHVlLCB1cmwpLnRoZW4oKGVuY3J5cHRlZFZhbHVlKT0+e1xuICAgICAgICAgICAgICAgIGxvZy5sb2coJ1tTeW5jaGVyTWFuYWdlci5PYnNlcnZlck9iamVjdF0gZW5jcnlwdGVkIGRhdGEgJywgIGVuY3J5cHRlZFZhbHVlKTtcblxuICAgICAgICAgICAgICAgIF90aGlzLl9zdG9yZUNoaWxkT2JqZWN0KG1zZywgSlNPTi5zdHJpbmdpZnkoZW5jcnlwdGVkVmFsdWUpKTtcbiAgICAgICAgICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xuICAgICAgICAgICAgICAgIGxvZy53YXJuKCdbU3luY2hlck1hbmFnZXIuT2JzZXJ2ZXJPYmplY3QuX2VuY3J5cHRDaGlsZF0gZmFpbGVkLCBzdG9yaW5nIHVuZW5jcnlwdGVkICcsIHJlYXNvbik7XG4gICAgICAgICAgICAgICAgX3RoaXMuX3N0b3JlQ2hpbGRPYmplY3QobXNnLCBtc2cuYm9keS52YWx1ZSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgX3RoaXMuX3N0b3JlQ2hpbGRPYmplY3QobXNnLCBtc2cuYm9keS52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLk9ic2VydmVyT2JqZWN0IGNoaWxkcmVuIExpc3RlbmVyc10nLCBfdGhpcy5fY2hpbGRyZW5MaXN0ZW5lcnMsIGNoaWxkTGlzdGVuZXIpO1xuICAgICAgICAgIGlmIChfdGhpcy5fY2hpbGRyZW5MaXN0ZW5lcnMuaW5kZXhPZihjaGlsZExpc3RlbmVyKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIF90aGlzLl9jaGlsZHJlbkxpc3RlbmVycy5wdXNoKGNoaWxkTGlzdGVuZXIpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9KTtcblxuICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfVxuXG4gIC8vIHN0b3JlIGNoaWxkT2JqZWN0XG5cbiAgX3N0b3JlQ2hpbGRPYmplY3QobXNnLCBkYXRhKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGxldCBzcGxpdGVkUmVwb3J0ZXJVUkwgPSBzcGxpdE9iamVjdFVSTChtc2cudG8pO1xuXG4gICAgbGV0IHVybCA9IHNwbGl0ZWRSZXBvcnRlclVSTC51cmw7XG5cbiAgICBsZXQgcmVzb3VyY2UgPSBzcGxpdGVkUmVwb3J0ZXJVUkwucmVzb3VyY2U7XG4gICAgbGV0IHZhbHVlID0ge1xuICAgICAgaWRlbnRpdHk6IG1zZy5ib2R5LmlkZW50aXR5LFxuICAgICAgdmFsdWU6IGRhdGFcbiAgICB9O1xuXG4gICAgLy8gdGhpcyBpZGVudGl0eSBkYXRhIGlzIG5vdCBuZWVkZWQgdG8gYmUgc3RvcmVkXG4gICAgZGVsZXRlIHZhbHVlLmlkZW50aXR5LmFzc2VydGlvbjtcbiAgICBkZWxldGUgdmFsdWUuaWRlbnRpdHkuZXhwaXJlcztcblxuICAgIGxldCBvYmplY3RVUkxSZXNvdXJjZSA9IG1zZy5ib2R5LnJlc291cmNlO1xuICAgIGxldCBhdHRyaWJ1dGUgPSByZXNvdXJjZTtcblxuICAgIGlmIChvYmplY3RVUkxSZXNvdXJjZSkgYXR0cmlidXRlICs9ICcuJyArIG9iamVjdFVSTFJlc291cmNlO1xuXG4gICAgbG9nLmxvZygnW1N5bmNoZXJNYW5hZ2VyLk9ic2VydmVyT2JqZWN0Ll9zdG9yZUNoaWxkT2JqZWN0XSA6ICcsIHVybCwgYXR0cmlidXRlLCB2YWx1ZSk7XG5cbiAgICBfdGhpcy5fcGFyZW50Ll9kYXRhT2JqZWN0c1N0b3JhZ2Uuc2F2ZUNoaWxkcmVucyhmYWxzZSwgdXJsLCBhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgfVxuXG4gIHJlbW92ZVN1YnNjcmlwdGlvbihtc2cpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IGh5cGVydHkgPSBtc2cuZnJvbTtcblxuICAgIGxldCBkb21haW4gPSBkaXZpZGVVUkwoaHlwZXJ0eSkuZG9tYWluO1xuICAgIGxldCBvYmpVUkxTdWJzY3JpcHRpb24gPSBfdGhpcy5fdXJsICsgJy9zdWJzY3JpcHRpb24nO1xuXG4gICAgbGV0IHN1YnNjcmlwdGlvbiA9IF90aGlzLl9zdWJzY3JpcHRpb25zW2h5cGVydHldO1xuICAgIGlmIChzdWJzY3JpcHRpb24pIHtcbiAgICAgIC8vRkxPVy1PVVQ6IG1lc3NhZ2Ugc2VudCB0byByZW1vdGUgUmVwb3J0ZXJPYmplY3QgLT4gX29uUmVtb3RlVW5TdWJzY3JpYmVcbiAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2Uoe1xuICAgICAgICB0eXBlOiAndW5zdWJzY3JpYmUnLCBmcm9tOiBfdGhpcy5fcGFyZW50Ll91cmwsIHRvOiBvYmpVUkxTdWJzY3JpcHRpb24sXG4gICAgICAgIGJvZHk6IHsgc291cmNlOiBoeXBlcnR5LCBpZGVudGl0eTogbXNnLmJvZHkuaWRlbnRpdHkgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vVE9ETzogc2hvdWxkIEkgd2FpdCBmb3IgcmVzcG9uc2UgYmVmb3JlIHVuc3Vic2NyaWJlIG9uIG1zZy1ub2RlXG4gICAgICAvL0ZMT1ctT1VUOiBtZXNzYWdlIHNlbnQgdG8gbXNnLW5vZGUgU3Vic2NyaXB0aW9uTWFuYWdlciBjb21wb25lbnRcbiAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2Uoe1xuICAgICAgICB0eXBlOiAndW5zdWJzY3JpYmUnLCBmcm9tOiBfdGhpcy5fcGFyZW50Ll91cmwsIHRvOiAnZG9tYWluOi8vbXNnLW5vZGUuJyArIGRvbWFpbiArICcvc20nLFxuICAgICAgICBib2R5OiB7IHJlc291cmNlOiBfdGhpcy5fdXJsLCBjaGlsZHJlblJlc291cmNlczogX3RoaXMuX2NoaWxkcmVucyB9XG4gICAgICB9KTtcblxuICAgICAgc3Vic2NyaXB0aW9uLl9yZWxlYXNlTGlzdGVuZXJzKCk7XG4gICAgICBkZWxldGUgX3RoaXMuX3N1YnNjcmlwdGlvbnNbaHlwZXJ0eV07XG4gICAgfVxuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgT2JzZXJ2ZXJPYmplY3Q7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3N5bmNoZXIvT2JzZXJ2ZXJPYmplY3QuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBOzs7QUFBQTtBQUNBO0FBREE7QUFDQTs7Ozs7QUFMQTtBQUNBO0FBS0E7QUFFQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7OztBQS9IQTtBQUNBO0FBQ0E7Ozs7O0FBaUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///519\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _values = __webpack_require__(211);\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _utils = __webpack_require__(11);\n\nvar _Subscription = __webpack_require__(521);\n\nvar _Subscription2 = _interopRequireDefault(_Subscription);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('SubscriptionManager'); /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\n// Log System\n\n/**\n * @author paulo-g-chainho@alticelabs.com\n * Subscription Manager used to manage routing paths at the runtime.\n */\n\nvar SubscriptionManager = function () {\n function SubscriptionManager(runtimeURL, bus, storage) {\n (0, _classCallCheck3.default)(this, SubscriptionManager);\n\n if (!runtimeURL) throw new Error('[SubscriptionManager] - needs the runtimeURL parameter');\n if (!bus) throw new Error('[SubscriptionManager] - needs the MessageBus instance');\n\n var _this = this;\n\n _this._bus = bus;\n _this._storage = storage;\n\n _this._subscriptions = {};\n\n _this._subscriptionsStorage = {};\n\n //TODO: these should be saved in persistence engine?\n _this.runtimeURL = runtimeURL;\n _this._url = runtimeURL + '/subscriptions';\n\n //TODO: this should not be hardcoded!\n _this._domain = (0, _utils.divideURL)(runtimeURL).domain;\n\n bus.addListener(_this._url, function (msg) {\n log.info('[SubscriptionManager] RCV: ', msg);\n switch (msg.type) {\n case 'subscribe':\n _this._onSubscribe(msg);break;\n case 'unsubscribe':\n _this._onUnSubscribe(msg);break;\n case 'read':\n _this._onRead(msg);break;\n }\n });\n }\n\n (0, _createClass3.default)(SubscriptionManager, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n return new _promise2.default(function (resolve) {\n\n _this._storage.get('subscriptions').then(function (subscriptions) {\n log.log('[SubscriptionManager.init] resume subscriptions: ', subscriptions);\n if (subscriptions) {\n\n _this._subscriptionsStorage = subscriptions;\n\n (0, _values2.default)(subscriptions).forEach(function (subscription) {\n _this._createSubscription(subscription.domain, subscription.resources, subscription.subscriber, subscription.identity);\n });\n }\n resolve();\n });\n });\n }\n }, {\n key: '_onSubscribe',\n\n\n //message received to set a routing path\n value: function _onSubscribe(msg) {\n\n var _this = this;\n\n var resources = msg.body.resources;\n\n var subscriber = msg.from;\n var domain = (0, _utils.divideURL)(resources[0]).domain; //we are assuming resources are all from the same domain\n\n var identity = msg.body.identity;\n\n _this._createSubscription(domain, resources, subscriber, identity).then(function (reply) {\n //forward to hyperty:\n reply.id = msg.id;\n reply.from = _this._url;\n reply.to = subscriber;\n reply.body = msg.body;\n reply.body.code = 200;\n\n log.log('[SubscriptionManager] - craeteSubscription: ', msg, reply, subscriber);\n\n _this._bus.postMessage(reply);\n\n if (!_this._subscriptionsStorage[subscriber]) {\n\n _this._subscriptionsStorage[subscriber] = {\n domain: domain,\n resources: resources,\n subscriber: subscriber,\n identity: identity\n };\n } else {\n resources.forEach(function (resource) {\n if (!_this._subscriptionsStorage[subscriber].resources.includes(resource)) {\n _this._subscriptionsStorage[subscriber].resources.push(resource);\n }\n });\n }\n\n _this._storage.set('subscriptions', 1, _this._subscriptionsStorage);\n });\n }\n }, {\n key: '_createSubscription',\n value: function _createSubscription(domain, resources, subscriber, identity) {\n\n var _this = this;\n //debugger;\n return new _promise2.default(function (resolve) {\n //FLOW-OUT: subscribe message to the msg-node, registering listeners on the broker\n\n var nodeSubscribeMsg = {\n type: 'subscribe', from: _this._url, to: 'domain://msg-node.' + domain + '/sm',\n body: { identity: identity, resources: resources, source: subscriber }\n };\n\n //subscribe in msg-node\n _this._bus.postMessage(nodeSubscribeMsg, function (reply) {\n log.log('[SubscriptionManager] node-subscribe-response: ', reply);\n\n //if (reply.body.code === 200) {//TODO: uncomment when MN replies with correct response body code\n\n //TODO: support multiple routes for multiple resources\n\n var subscription = _this._subscriptions[subscriber];\n log.log('[SubscriptionManager] - ', _this._subscriptions, resources, _this._subscriptions.hasOwnProperty(subscriber));\n if (!subscription) {\n _this._subscriptions[subscriber] = {};\n }\n\n resources.forEach(function (resource) {\n _this._subscriptions[subscriber][resource] = new _Subscription2.default(_this._bus, subscriber, resource);\n });\n\n resolve(reply);\n });\n });\n }\n\n // message received to remove routing path\n\n }, {\n key: '_onUnSubscribe',\n value: function _onUnSubscribe(msg) {\n var _this = this;\n\n var unsubscriber = msg.from;\n var resource = msg.body.resource;\n\n if (_this._subscriptions[unsubscriber] && _this._subscriptions[unsubscriber][resource]) {\n var domain = (0, _utils.divideURL)(resource).domain;\n var subscription = _this._subscriptions[unsubscriber][resource];\n\n //FLOW-OUT: message sent to msg-node SubscriptionManager component\n _this._bus.postMessage({\n type: 'unsubscribe', from: _this._url, to: 'domain://msg-node.' + domain + '/sm',\n body: { resources: [resource], source: unsubscriber }\n });\n\n subscription._releaseListeners();\n delete _this._subscriptions[unsubscriber][resource];\n\n if (_this._subscriptionsStorage[unsubscriber]) {\n var i = _this._subscriptionsStorage[unsubscriber].resources.indexOf(resource);\n if (i != -1) {\n _this._subscriptionsStorage[unsubscriber].resources.splice(i, 1);\n }\n _this._storage.set('subscriptions', 1, _this._subscriptionsStorage);\n }\n }\n\n _this._bus.postMessage({\n id: msg.id, type: 'response', from: msg.to, to: msg.from,\n body: { code: 200 }\n });\n }\n\n //message received to read existing routing paths. At this point limited to read all existing routing paths set for one listener\n\n }, {\n key: '_onRead',\n value: function _onRead(msg) {\n\n var _this = this;\n\n var listenerAddress = msg.body.resource;\n var reply = void 0;\n\n log.log('[SubscriptionManager] - request to read Subscriptions: ', msg);\n\n _this._storage.get('subscriptions').then(function (subscriptions) {\n if (subscriptions && subscriptions[listenerAddress]) {\n var resources = subscriptions[listenerAddress].resources;\n\n reply = {\n id: msg.id, type: 'response', from: msg.to, to: msg.from,\n body: { code: 200, value: resources }\n };\n } else {\n reply = {\n id: msg.id, type: 'response', from: msg.to, to: msg.from,\n body: { code: 404, description: 'Not Found' }\n };\n }\n _this._bus.postMessage(reply);\n });\n }\n }, {\n key: 'url',\n get: function get() {\n return this._url;\n }\n }]);\n return SubscriptionManager;\n}();\n\nexports.default = SubscriptionManager;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zdWJzY3JpcHRpb25NYW5hZ2VyL1N1YnNjcmlwdGlvbk1hbmFnZXIuanM/ZGE4MiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKiovXG5cbi8vIExvZyBTeXN0ZW1cbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignU3Vic2NyaXB0aW9uTWFuYWdlcicpO1xuXG5pbXBvcnQgeyBkaXZpZGVVUkwgfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5pbXBvcnQgU3Vic2NyaXB0aW9uIGZyb20gJy4vU3Vic2NyaXB0aW9uJztcblxuXG4vKipcbiAqIEBhdXRob3IgcGF1bG8tZy1jaGFpbmhvQGFsdGljZWxhYnMuY29tXG4gKiBTdWJzY3JpcHRpb24gTWFuYWdlciB1c2VkIHRvIG1hbmFnZSByb3V0aW5nIHBhdGhzIGF0IHRoZSBydW50aW1lLlxuICovXG5cbmNsYXNzIFN1YnNjcmlwdGlvbk1hbmFnZXIge1xuXG4gIGNvbnN0cnVjdG9yKHJ1bnRpbWVVUkwsIGJ1cywgc3RvcmFnZSkge1xuICAgIGlmICghcnVudGltZVVSTCkgdGhyb3cgbmV3IEVycm9yKCdbU3Vic2NyaXB0aW9uTWFuYWdlcl0gLSBuZWVkcyB0aGUgcnVudGltZVVSTCBwYXJhbWV0ZXInKTtcbiAgICBpZiAoIWJ1cykgdGhyb3cgbmV3IEVycm9yKCdbU3Vic2NyaXB0aW9uTWFuYWdlcl0gLSBuZWVkcyB0aGUgTWVzc2FnZUJ1cyBpbnN0YW5jZScpO1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIF90aGlzLl9idXMgPSBidXM7XG4gICAgX3RoaXMuX3N0b3JhZ2UgPSBzdG9yYWdlO1xuXG4gICAgX3RoaXMuX3N1YnNjcmlwdGlvbnMgPSB7fTtcblxuICAgIF90aGlzLl9zdWJzY3JpcHRpb25zU3RvcmFnZSA9IHt9O1xuXG4gICAgLy9UT0RPOiB0aGVzZSBzaG91bGQgYmUgc2F2ZWQgaW4gcGVyc2lzdGVuY2UgZW5naW5lP1xuICAgIF90aGlzLnJ1bnRpbWVVUkwgPSBydW50aW1lVVJMO1xuICAgIF90aGlzLl91cmwgPSBydW50aW1lVVJMICsgJy9zdWJzY3JpcHRpb25zJztcblxuICAgIC8vVE9ETzogdGhpcyBzaG91bGQgbm90IGJlIGhhcmRjb2RlZCFcbiAgICBfdGhpcy5fZG9tYWluID0gZGl2aWRlVVJMKHJ1bnRpbWVVUkwpLmRvbWFpbjtcblxuICAgIGJ1cy5hZGRMaXN0ZW5lcihfdGhpcy5fdXJsLCAobXNnKSA9PiB7XG4gICAgICBsb2cuaW5mbygnW1N1YnNjcmlwdGlvbk1hbmFnZXJdIFJDVjogJywgbXNnKTtcbiAgICAgIHN3aXRjaCAobXNnLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnc3Vic2NyaWJlJzogX3RoaXMuX29uU3Vic2NyaWJlKG1zZyk7IGJyZWFrO1xuICAgICAgICBjYXNlICd1bnN1YnNjcmliZSc6IF90aGlzLl9vblVuU3Vic2NyaWJlKG1zZyk7IGJyZWFrO1xuICAgICAgICBjYXNlICdyZWFkJzogX3RoaXMuX29uUmVhZChtc2cpOyBicmVhaztcbiAgICAgIH1cbiAgICB9KTtcblxuICB9XG5cbiAgaW5pdCgpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cbiAgICAgIF90aGlzLl9zdG9yYWdlLmdldCgnc3Vic2NyaXB0aW9ucycpLnRoZW4oKHN1YnNjcmlwdGlvbnMpID0+IHtcbiAgICAgICAgbG9nLmxvZygnW1N1YnNjcmlwdGlvbk1hbmFnZXIuaW5pdF0gcmVzdW1lIHN1YnNjcmlwdGlvbnM6ICcsIHN1YnNjcmlwdGlvbnMpO1xuICAgICAgICBpZiAoc3Vic2NyaXB0aW9ucykge1xuXG4gICAgICAgICAgX3RoaXMuX3N1YnNjcmlwdGlvbnNTdG9yYWdlID0gc3Vic2NyaXB0aW9ucztcblxuICAgICAgICAgIE9iamVjdC52YWx1ZXMoc3Vic2NyaXB0aW9ucykuZm9yRWFjaCgoc3Vic2NyaXB0aW9uKT0+e1xuICAgICAgICAgICAgX3RoaXMuX2NyZWF0ZVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24uZG9tYWluLCBzdWJzY3JpcHRpb24ucmVzb3VyY2VzLCBzdWJzY3JpcHRpb24uc3Vic2NyaWJlciwgc3Vic2NyaXB0aW9uLmlkZW50aXR5KTtcblxuICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG5cbiAgICB9KTtcblxuXG4gIH1cblxuICBnZXQgdXJsKCkgeyByZXR1cm4gdGhpcy5fdXJsOyB9XG5cblxuICAvL21lc3NhZ2UgcmVjZWl2ZWQgdG8gc2V0IGEgcm91dGluZyBwYXRoXG4gIF9vblN1YnNjcmliZShtc2cpIHtcblxuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgcmVzb3VyY2VzID0gbXNnLmJvZHkucmVzb3VyY2VzO1xuXG4gICAgbGV0IHN1YnNjcmliZXIgPSBtc2cuZnJvbTtcbiAgICBsZXQgZG9tYWluID0gZGl2aWRlVVJMKHJlc291cmNlc1swXSkuZG9tYWluOyAvL3dlIGFyZSBhc3N1bWluZyByZXNvdXJjZXMgYXJlIGFsbCBmcm9tIHRoZSBzYW1lIGRvbWFpblxuXG4gICAgbGV0IGlkZW50aXR5ID0gbXNnLmJvZHkuaWRlbnRpdHk7XG5cbiAgICBfdGhpcy5fY3JlYXRlU3Vic2NyaXB0aW9uKGRvbWFpbiwgcmVzb3VyY2VzLCBzdWJzY3JpYmVyLCBpZGVudGl0eSkudGhlbigocmVwbHkpPT57XG4gICAgICAvL2ZvcndhcmQgdG8gaHlwZXJ0eTpcbiAgICAgIHJlcGx5LmlkID0gbXNnLmlkO1xuICAgICAgcmVwbHkuZnJvbSA9IF90aGlzLl91cmw7XG4gICAgICByZXBseS50byA9IHN1YnNjcmliZXI7XG4gICAgICByZXBseS5ib2R5ID0gbXNnLmJvZHk7XG4gICAgICByZXBseS5ib2R5LmNvZGUgPSAyMDA7XG5cbiAgICAgIGxvZy5sb2coJ1tTdWJzY3JpcHRpb25NYW5hZ2VyXSAtIGNyYWV0ZVN1YnNjcmlwdGlvbjogJywgbXNnLCByZXBseSwgc3Vic2NyaWJlcik7XG5cbiAgICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2UocmVwbHkpO1xuXG5cbiAgICAgIGlmICghX3RoaXMuX3N1YnNjcmlwdGlvbnNTdG9yYWdlW3N1YnNjcmliZXJdKSB7XG5cblxuICAgICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1N0b3JhZ2Vbc3Vic2NyaWJlcl0gPSB7XG4gICAgICAgICAgZG9tYWluOiBkb21haW4sXG4gICAgICAgICAgcmVzb3VyY2VzOiByZXNvdXJjZXMsXG4gICAgICAgICAgc3Vic2NyaWJlcjogc3Vic2NyaWJlcixcbiAgICAgICAgICBpZGVudGl0eTogaWRlbnRpdHlcbiAgICAgICAgfTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb3VyY2VzLmZvckVhY2goKHJlc291cmNlKSA9PiB7XG4gICAgICAgICAgaWYgKCEoX3RoaXMuX3N1YnNjcmlwdGlvbnNTdG9yYWdlW3N1YnNjcmliZXJdLnJlc291cmNlcy5pbmNsdWRlcyhyZXNvdXJjZSkpKSB7XG4gICAgICAgICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1N0b3JhZ2Vbc3Vic2NyaWJlcl0ucmVzb3VyY2VzLnB1c2gocmVzb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLl9zdG9yYWdlLnNldCgnc3Vic2NyaXB0aW9ucycsIDEsIF90aGlzLl9zdWJzY3JpcHRpb25zU3RvcmFnZSk7XG4gICAgfSk7XG4gIH1cblxuICBfY3JlYXRlU3Vic2NyaXB0aW9uKGRvbWFpbiwgcmVzb3VyY2VzLCBzdWJzY3JpYmVyLCBpZGVudGl0eSkge1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICAvL2RlYnVnZ2VyO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgLy9GTE9XLU9VVDogc3Vic2NyaWJlIG1lc3NhZ2UgdG8gdGhlIG1zZy1ub2RlLCByZWdpc3RlcmluZyBsaXN0ZW5lcnMgb24gdGhlIGJyb2tlclxuXG4gICAgICBsZXQgbm9kZVN1YnNjcmliZU1zZyA9IHtcbiAgICAgICAgdHlwZTogJ3N1YnNjcmliZScsIGZyb206IF90aGlzLl91cmwsIHRvOiAnZG9tYWluOi8vbXNnLW5vZGUuJyArIGRvbWFpbiArICcvc20nLFxuICAgICAgICBib2R5OiB7IGlkZW50aXR5OiBpZGVudGl0eSwgcmVzb3VyY2VzOiByZXNvdXJjZXMsIHNvdXJjZTogc3Vic2NyaWJlciB9XG4gICAgICB9O1xuXG4gICAgICAvL3N1YnNjcmliZSBpbiBtc2ctbm9kZVxuICAgICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShub2RlU3Vic2NyaWJlTXNnLCAocmVwbHkpID0+IHtcbiAgICAgICAgbG9nLmxvZygnW1N1YnNjcmlwdGlvbk1hbmFnZXJdIG5vZGUtc3Vic2NyaWJlLXJlc3BvbnNlOiAnLCByZXBseSk7XG5cbiAgICAgICAgLy9pZiAocmVwbHkuYm9keS5jb2RlID09PSAyMDApIHsvL1RPRE86IHVuY29tbWVudCB3aGVuICBNTiByZXBsaWVzIHdpdGggY29ycmVjdCByZXNwb25zZSBib2R5IGNvZGVcblxuICAgICAgICAvL1RPRE86IHN1cHBvcnQgbXVsdGlwbGUgcm91dGVzIGZvciBtdWx0aXBsZSByZXNvdXJjZXNcblxuICAgICAgICBsZXQgc3Vic2NyaXB0aW9uID0gX3RoaXMuX3N1YnNjcmlwdGlvbnNbc3Vic2NyaWJlcl07XG4gICAgICAgIGxvZy5sb2coJ1tTdWJzY3JpcHRpb25NYW5hZ2VyXSAtICcsICBfdGhpcy5fc3Vic2NyaXB0aW9ucywgcmVzb3VyY2VzLCBfdGhpcy5fc3Vic2NyaXB0aW9ucy5oYXNPd25Qcm9wZXJ0eShzdWJzY3JpYmVyKSk7XG4gICAgICAgIGlmICghc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgX3RoaXMuX3N1YnNjcmlwdGlvbnNbc3Vic2NyaWJlcl0gPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc291cmNlcy5mb3JFYWNoKChyZXNvdXJjZSk9PntcbiAgICAgICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1tzdWJzY3JpYmVyXVtyZXNvdXJjZV0gPSBuZXcgU3Vic2NyaXB0aW9uKF90aGlzLl9idXMsIHN1YnNjcmliZXIsIHJlc291cmNlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmVzb2x2ZShyZXBseSk7XG5cbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH1cblxuXG4gIC8vIG1lc3NhZ2UgcmVjZWl2ZWQgdG8gcmVtb3ZlIHJvdXRpbmcgcGF0aFxuICBfb25VblN1YnNjcmliZShtc2cpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IHVuc3Vic2NyaWJlciA9IG1zZy5mcm9tO1xuICAgIGxldCByZXNvdXJjZSA9IG1zZy5ib2R5LnJlc291cmNlO1xuXG4gICAgaWYgKF90aGlzLl9zdWJzY3JpcHRpb25zW3Vuc3Vic2NyaWJlcl0gJiYgX3RoaXMuX3N1YnNjcmlwdGlvbnNbdW5zdWJzY3JpYmVyXVtyZXNvdXJjZV0pIHtcbiAgICAgIGxldCBkb21haW4gPSBkaXZpZGVVUkwocmVzb3VyY2UpLmRvbWFpbjtcbiAgICAgIGxldCBzdWJzY3JpcHRpb24gPSBfdGhpcy5fc3Vic2NyaXB0aW9uc1t1bnN1YnNjcmliZXJdW3Jlc291cmNlXTtcblxuICAgICAgLy9GTE9XLU9VVDogbWVzc2FnZSBzZW50IHRvIG1zZy1ub2RlIFN1YnNjcmlwdGlvbk1hbmFnZXIgY29tcG9uZW50XG4gICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgdHlwZTogJ3Vuc3Vic2NyaWJlJywgZnJvbTogX3RoaXMuX3VybCwgdG86ICdkb21haW46Ly9tc2ctbm9kZS4nICsgZG9tYWluICsgJy9zbScsXG4gICAgICAgIGJvZHk6IHsgcmVzb3VyY2VzOiBbcmVzb3VyY2VdLCBzb3VyY2U6IHVuc3Vic2NyaWJlciB9XG4gICAgICB9KTtcblxuICAgICAgc3Vic2NyaXB0aW9uLl9yZWxlYXNlTGlzdGVuZXJzKCk7XG4gICAgICBkZWxldGUgX3RoaXMuX3N1YnNjcmlwdGlvbnNbdW5zdWJzY3JpYmVyXVtyZXNvdXJjZV07XG5cbiAgICAgIGlmIChfdGhpcy5fc3Vic2NyaXB0aW9uc1N0b3JhZ2VbdW5zdWJzY3JpYmVyXSkge1xuICAgICAgICBsZXQgaSA9IF90aGlzLl9zdWJzY3JpcHRpb25zU3RvcmFnZVt1bnN1YnNjcmliZXJdLnJlc291cmNlcy5pbmRleE9mKHJlc291cmNlKTtcbiAgICAgICAgaWYgKGkgIT0gLTEpIHtcbiAgICAgICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1N0b3JhZ2VbdW5zdWJzY3JpYmVyXS5yZXNvdXJjZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLl9zdG9yYWdlLnNldCgnc3Vic2NyaXB0aW9ucycsIDEsIF90aGlzLl9zdWJzY3JpcHRpb25zU3RvcmFnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZSh7XG4gICAgICBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCBmcm9tOiBtc2cudG8sIHRvOiBtc2cuZnJvbSxcbiAgICAgIGJvZHk6IHsgY29kZTogMjAwIH1cbiAgICB9KTtcblxuICB9XG5cbiAgLy9tZXNzYWdlIHJlY2VpdmVkIHRvIHJlYWQgZXhpc3Rpbmcgcm91dGluZyBwYXRocy4gQXQgdGhpcyBwb2ludCBsaW1pdGVkIHRvIHJlYWQgYWxsIGV4aXN0aW5nIHJvdXRpbmcgcGF0aHMgc2V0IGZvciBvbmUgbGlzdGVuZXJcbiAgX29uUmVhZChtc2cpIHtcblxuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgbGlzdGVuZXJBZGRyZXNzID0gbXNnLmJvZHkucmVzb3VyY2U7XG4gICAgbGV0IHJlcGx5O1xuXG4gICAgbG9nLmxvZygnW1N1YnNjcmlwdGlvbk1hbmFnZXJdIC0gcmVxdWVzdCB0byByZWFkIFN1YnNjcmlwdGlvbnM6ICcsIG1zZyk7XG5cbiAgICBfdGhpcy5fc3RvcmFnZS5nZXQoJ3N1YnNjcmlwdGlvbnMnKS50aGVuKChzdWJzY3JpcHRpb25zKT0+e1xuICAgICAgaWYgKHN1YnNjcmlwdGlvbnMgJiYgc3Vic2NyaXB0aW9uc1tsaXN0ZW5lckFkZHJlc3NdKSB7XG4gICAgICAgIGxldCByZXNvdXJjZXMgPSBzdWJzY3JpcHRpb25zW2xpc3RlbmVyQWRkcmVzc10ucmVzb3VyY2VzO1xuXG4gICAgICAgIHJlcGx5ID0ge1xuICAgICAgICAgIGlkOiBtc2cuaWQsIHR5cGU6ICdyZXNwb25zZScsIGZyb206IG1zZy50bywgdG86IG1zZy5mcm9tLFxuICAgICAgICAgIGJvZHk6IHsgY29kZTogMjAwLCB2YWx1ZTogcmVzb3VyY2VzIH1cbiAgICAgICAgfTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVwbHkgPSB7XG4gICAgICAgICAgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgZnJvbTogbXNnLnRvLCB0bzogbXNnLmZyb20sXG4gICAgICAgICAgYm9keTogeyBjb2RlOiA0MDQsIGRlc2NyaXB0aW9uOiAnTm90IEZvdW5kJyB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHJlcGx5KTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTdWJzY3JpcHRpb25NYW5hZ2VyO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9zdWJzY3JpcHRpb25NYW5hZ2VyL1N1YnNjcmlwdGlvbk1hbmFnZXIuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkE7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTs7Ozs7OztBQUpBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUZBO0FBQ0E7QUFPQTs7Ozs7QUFLQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBSEE7QUFLQTtBQUVBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUdBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBOzs7QUF2SkE7QUFBQTtBQUFBOzs7OztBQTBKQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///520\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('Subscription'); // Log System\n\nvar Subscription = function () {\n function Subscription(bus, subscriber, resource) {\n (0, _classCallCheck3.default)(this, Subscription);\n\n var _this = this;\n _this._subscriber = subscriber;\n _this.resource = resource;\n\n log.log('[SubscriptionManager.Subscription] new: ', subscriber, resource);\n\n //add forward\n _this._listener = bus.addForward(resource, subscriber);\n }\n\n (0, _createClass3.default)(Subscription, [{\n key: '_releaseListeners',\n value: function _releaseListeners() {\n var _this = this;\n\n _this._listener.remove();\n }\n }]);\n return Subscription;\n}();\n\nexports.default = Subscription;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zdWJzY3JpcHRpb25NYW5hZ2VyL1N1YnNjcmlwdGlvbi5qcz85NDk1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIExvZyBTeXN0ZW1cbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignU3Vic2NyaXB0aW9uJyk7XG5cbmNsYXNzIFN1YnNjcmlwdGlvbiB7XG5cbiAgY29uc3RydWN0b3IoYnVzLCBzdWJzY3JpYmVyLCByZXNvdXJjZSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgX3RoaXMuX3N1YnNjcmliZXIgPSBzdWJzY3JpYmVyO1xuICAgIF90aGlzLnJlc291cmNlID0gcmVzb3VyY2U7XG5cbiAgICBsb2cubG9nKCdbU3Vic2NyaXB0aW9uTWFuYWdlci5TdWJzY3JpcHRpb25dIG5ldzogJywgc3Vic2NyaWJlciwgcmVzb3VyY2UpXG5cbiAgICAvL2FkZCBmb3J3YXJkXG4gICAgX3RoaXMuX2xpc3RlbmVyID0gYnVzLmFkZEZvcndhcmQocmVzb3VyY2UsIHN1YnNjcmliZXIpO1xuXG4gIH1cblxuICBfcmVsZWFzZUxpc3RlbmVycygpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMuX2xpc3RlbmVyLnJlbW92ZSgpO1xuXG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBTdWJzY3JpcHRpb247XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3N1YnNjcmlwdGlvbk1hbmFnZXIvU3Vic2NyaXB0aW9uLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFEQTtBQUNBOzs7OztBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///521\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(42);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = __webpack_require__(8);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _getPrototypeOf = __webpack_require__(60);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(68);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(69);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _loglevel = __webpack_require__(7);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nvar _AllowOverrides = __webpack_require__(207);\n\nvar _AllowOverrides2 = _interopRequireDefault(_AllowOverrides);\n\nvar _BlockOverrides = __webpack_require__(208);\n\nvar _BlockOverrides2 = _interopRequireDefault(_BlockOverrides);\n\nvar _utils = __webpack_require__(11);\n\nvar _FirstApplicable = __webpack_require__(209);\n\nvar _FirstApplicable2 = _interopRequireDefault(_FirstApplicable);\n\nvar _ReThinkCtx2 = __webpack_require__(523);\n\nvar _ReThinkCtx3 = _interopRequireDefault(_ReThinkCtx2);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('PEP');\n\nvar RuntimeCoreCtx = function (_ReThinkCtx) {\n (0, _inherits3.default)(RuntimeCoreCtx, _ReThinkCtx);\n\n function RuntimeCoreCtx(runtimeURL, idModule, runtimeRegistry, storageManager, runtimeCapabilities) {\n (0, _classCallCheck3.default)(this, RuntimeCoreCtx);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (RuntimeCoreCtx.__proto__ || (0, _getPrototypeOf2.default)(RuntimeCoreCtx)).call(this));\n\n _this2._runtimeURL = runtimeURL;\n _this2._pepURL = _this2._runtimeURL + '/pep';\n _this2._guiURL = _this2._runtimeURL + '/policy-gui';\n _this2.idModule = idModule;\n _this2.runtimeRegistry = runtimeRegistry;\n _this2.activeUserPolicy = undefined;\n _this2.serviceProviderPolicy = {};\n _this2.userPolicies = {};\n _this2.storageManager = storageManager;\n _this2.runtimeCapabilities = runtimeCapabilities;\n return _this2;\n }\n\n (0, _createClass3.default)(RuntimeCoreCtx, [{\n key: 'loadConfigurations',\n value: function loadConfigurations() {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n console.log(_this.storageManager);\n\n _this.storageManager.get('rethink:activePolicy').then(function (value) {\n _this.activeUserPolicy = value;\n\n return _this.storageManager.get('rethink:groups');\n }).then(function (groupInfo) {\n var groups = groupInfo;\n _this.groups = groups === undefined ? {} : groups;\n\n return _this.storageManager.get('rethink:spPolicies');\n }).then(function (policiesInfo) {\n var spPolicies = policiesInfo;\n _this.serviceProviderPolicy = spPolicies === undefined ? {} : spPolicies;\n\n _this._loadUserPolicies().then(function () {\n resolve();\n });\n });\n });\n }\n }, {\n key: 'getPolicies',\n value: function getPolicies(message, isIncomingMessage) {\n var policies = {};\n\n if (this.activeUserPolicy !== undefined) {\n policies.userPolicy = this.userPolicies[this.activeUserPolicy];\n }\n\n policies.serviceProviderPolicy = this.getServiceProviderPolicy(message, isIncomingMessage);\n\n return policies;\n }\n }, {\n key: '_isValidUpdate',\n value: function _isValidUpdate(message) {\n var _this = this;\n return new _promise2.default(function (resolve, reject) {\n if (message.from.split('://').length > 1) {\n _this.idModule._getHypertyFromDataObject(message.from).then(function (hypertyURL) {\n if (hypertyURL === message.body.source) {\n resolve(message);\n } else {\n reject('The source of the message is not valid.');\n }\n }, function (error) {\n reject(error);\n });\n } else {\n resolve(message);\n }\n });\n }\n }, {\n key: 'getMyEmails',\n value: function getMyEmails() {\n var identities = this.idModule.getIdentities();\n var emails = [];\n\n for (var i in identities) {\n emails.push((0, _utils.getUserEmailFromURL)(identities[i].identity));\n }\n\n return emails;\n }\n }, {\n key: 'getMyHyperties',\n value: function getMyHyperties() {\n var hyperties = this.runtimeRegistry.hypertiesList;\n var hypertiesNames = [];\n\n for (var i in hyperties) {\n var hypertyName = hyperties[i].objectName;\n if (hypertiesNames.indexOf(hypertyName) === -1) {\n hypertiesNames.push(hypertyName);\n }\n }\n\n return hypertiesNames;\n }\n }, {\n key: 'getServiceProviderPolicy',\n value: function getServiceProviderPolicy(message, isIncoming) {\n var policy = void 0;\n\n if (isIncoming) {\n var toHyperty = this.runtimeRegistry.getHypertyName(message.to);\n policy = this.serviceProviderPolicy[toHyperty];\n } else {\n var fromHyperty = this.runtimeRegistry.getHypertyName(message.from);\n policy = this.serviceProviderPolicy[fromHyperty];\n }\n return policy;\n }\n }, {\n key: 'getURL',\n value: function getURL(url) {\n var splitURL = url.split('/');\n return splitURL[0] + '//' + splitURL[2] + '/' + splitURL[3];\n }\n\n /**\n * Creates a group with the given name.\n * @param {String} groupName\n */\n\n }, {\n key: '_loadUserPolicies',\n value: function _loadUserPolicies() {\n var _this3 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n\n _this.storageManager.get('rethink:userPolicies').then(function (value) {\n var policies = value;\n if (policies !== undefined) {\n for (var i in policies) {\n _this3.pep.addPolicy('USER', i, policies[i]);\n }\n }\n resolve();\n });\n });\n }\n }, {\n key: '_getLastComponentOfURL',\n value: function _getLastComponentOfURL(url) {\n var split = url.split('/');\n return split[split.length - 1];\n }\n }, {\n key: '_getPoliciesJSON',\n value: function _getPoliciesJSON(policies) {\n for (var i in policies) {\n var combiningAlgorithm = policies[i].combiningAlgorithm;\n if (combiningAlgorithm instanceof _BlockOverrides2.default) {\n policies[i].combiningAlgorithm = 'blockOverrides';\n } else {\n if (combiningAlgorithm instanceof _AllowOverrides2.default) {\n policies[i].combiningAlgorithm = 'allowOverrides';\n } else {\n if (combiningAlgorithm instanceof _FirstApplicable2.default) {\n policies[i].combiningAlgorithm = 'firstApplicable';\n } else {\n policies[i].combiningAlgorithm = undefined;\n }\n }\n }\n }\n\n return policies;\n }\n }, {\n key: 'saveActivePolicy',\n value: function saveActivePolicy() {\n var _this4 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this.storageManager.set('rethink:activePolicy', 0, _this4.activeUserPolicy).then(function () {\n resolve();\n });\n });\n }\n }, {\n key: 'saveGroups',\n value: function saveGroups() {\n var _this5 = this;\n\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n _this.storageManager.set('rethink:groups', 0, _this5.groups).then(function () {\n resolve();\n });\n });\n }\n }, {\n key: 'savePolicies',\n value: function savePolicies(source, policy, key) {\n var policiesJson = void 0;\n\n switch (source) {\n case 'USER':\n policiesJson = (0, _stringify2.default)(this.userPolicies);\n policiesJson = this._getPoliciesJSON(JSON.parse(policiesJson));\n this.storageManager.set('rethink:userPolicies', 0, policiesJson);\n break;\n case 'SERVICE_PROVIDER':\n if (policy !== undefined & key !== undefined) {\n this.serviceProviderPolicy[key] = policy;\n }\n policiesJson = (0, _stringify2.default)(this.serviceProviderPolicy);\n policiesJson = this._getPoliciesJSON(JSON.parse(policiesJson));\n this.storageManager.set('rethink:spPolicies', 0, policiesJson);\n break;\n default:\n throw Error('Unknown policy source: ' + source);\n }\n }\n }, {\n key: 'getGroupsNames',\n value: function getGroupsNames() {\n var myGroups = this.groups;\n var groupsNames = [];\n if (myGroups !== undefined) {\n for (var groupName in myGroups) {\n groupsNames.push(groupName);\n }\n }\n return groupsNames;\n }\n }, {\n key: 'getGroup',\n value: function getGroup(groupName, destination) {\n var members = [];\n\n if (groupName === 'preauthorised') {\n var dataObjectURL = destination.split('/');\n dataObjectURL.pop();\n dataObjectURL = dataObjectURL[0] + '//' + dataObjectURL[2];\n members = this.runtimeRegistry.getPreAuthSubscribers(dataObjectURL);\n } else {\n if (this.groups[groupName] !== undefined) {\n members = this.groups[groupName];\n }\n }\n\n return members;\n }\n\n /**\n * Creates a group with the given name.\n * @param {String} groupName\n */\n\n }, {\n key: 'createGroup',\n value: function createGroup(groupName) {\n this.groups[groupName] = [];\n this.saveGroups();\n }\n }, {\n key: 'deleteGroup',\n value: function deleteGroup(groupName) {\n delete this.groups[groupName];\n this.saveGroups();\n }\n\n /**\n * Adds the given user email to the group with the given name.\n * @param {String} userEmail\n * @param {String} groupName\n */\n\n }, {\n key: 'addToGroup',\n value: function addToGroup(groupName, userEmail) {\n var myGroups = this.groups;\n if (myGroups[groupName] !== undefined) {\n if (myGroups[groupName].indexOf(userEmail) === -1) {\n myGroups[groupName].push(userEmail);\n this.saveGroups();\n }\n } else {\n throw Error('Group \"' + groupName + '\" does not exist!');\n }\n }\n }, {\n key: 'removeFromGroup',\n value: function removeFromGroup(groupName, userEmail) {\n var group = this.groups[groupName];\n\n group.splice(group.indexOf(userEmail), 1);\n this.saveGroups();\n }\n }, {\n key: 'pepURL',\n get: function get() {\n var _this = this;\n return _this._pepURL;\n }\n }, {\n key: 'guiURL',\n get: function get() {\n var _this = this;\n return _this._guiURL;\n }\n }, {\n key: 'runtimeURL',\n get: function get() {\n var _this = this;\n return _this._runtimeURL;\n }\n\n /**\n * return the messageBus in this Registry\n * @param {MessageBus} messageBus\n */\n\n }, {\n key: 'messageBus',\n get: function get() {\n var _this = this;\n return _this._messageBus;\n }\n\n /**\n * Set the messageBus in this Registry\n * @param {MessageBus} messageBus\n */\n ,\n set: function set(messageBus) {\n var _this = this;\n _this._messageBus = messageBus;\n }\n }, {\n key: 'subscription',\n get: function get() {\n return this._subscription;\n },\n set: function set(params) {\n this._subscription = params.message.body.subscriber;\n }\n }]);\n return RuntimeCoreCtx;\n}(_ReThinkCtx3.default);\n\nexports.default = RuntimeCoreCtx;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvY29udGV4dC9SdW50aW1lQ29yZUN0eC5qcz85NWRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICdsb2dsZXZlbCc7XG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignUEVQJyk7XG5cbmltcG9ydCBBbGxvd092ZXJyaWRlcyBmcm9tICcuLi9jb21iaW5pbmdBbGdvcml0aG1zL0FsbG93T3ZlcnJpZGVzJztcbmltcG9ydCBCbG9ja092ZXJyaWRlcyBmcm9tICcuLi9jb21iaW5pbmdBbGdvcml0aG1zL0Jsb2NrT3ZlcnJpZGVzJztcbmltcG9ydCB7ZGl2aWRlVVJMLCBnZXRVc2VyRW1haWxGcm9tVVJMLCBpc0RhdGFPYmplY3RVUkx9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCBGaXJzdEFwcGxpY2FibGUgZnJvbSAnLi4vY29tYmluaW5nQWxnb3JpdGhtcy9GaXJzdEFwcGxpY2FibGUnO1xuaW1wb3J0IFJlVGhpbmtDdHggZnJvbSAnLi4vUmVUaGlua0N0eCc7XG5cbmNsYXNzIFJ1bnRpbWVDb3JlQ3R4IGV4dGVuZHMgUmVUaGlua0N0eCB7XG5cbiAgY29uc3RydWN0b3IocnVudGltZVVSTCwgaWRNb2R1bGUsIHJ1bnRpbWVSZWdpc3RyeSwgc3RvcmFnZU1hbmFnZXIsIHJ1bnRpbWVDYXBhYmlsaXRpZXMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX3J1bnRpbWVVUkwgPSBydW50aW1lVVJMO1xuICAgIHRoaXMuX3BlcFVSTCA9IHRoaXMuX3J1bnRpbWVVUkwgKyAnL3BlcCc7XG4gICAgdGhpcy5fZ3VpVVJMID0gdGhpcy5fcnVudGltZVVSTCArICcvcG9saWN5LWd1aSc7XG4gICAgdGhpcy5pZE1vZHVsZSA9IGlkTW9kdWxlO1xuICAgIHRoaXMucnVudGltZVJlZ2lzdHJ5ID0gcnVudGltZVJlZ2lzdHJ5O1xuICAgIHRoaXMuYWN0aXZlVXNlclBvbGljeSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlcnZpY2VQcm92aWRlclBvbGljeSA9IHt9O1xuICAgIHRoaXMudXNlclBvbGljaWVzID0ge307XG4gICAgdGhpcy5zdG9yYWdlTWFuYWdlciA9IHN0b3JhZ2VNYW5hZ2VyO1xuICAgIHRoaXMucnVudGltZUNhcGFiaWxpdGllcyA9IHJ1bnRpbWVDYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgcGVwVVJMKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIF90aGlzLl9wZXBVUkw7XG4gIH1cblxuICBnZXQgZ3VpVVJMKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIF90aGlzLl9ndWlVUkw7XG4gIH1cblxuICBnZXQgcnVudGltZVVSTCgpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBfdGhpcy5fcnVudGltZVVSTDtcbiAgfVxuXG4gIC8qKlxuICAqIHJldHVybiB0aGUgbWVzc2FnZUJ1cyBpbiB0aGlzIFJlZ2lzdHJ5XG4gICogQHBhcmFtIHtNZXNzYWdlQnVzfSAgICAgICAgICAgbWVzc2FnZUJ1c1xuICAqL1xuICBnZXQgbWVzc2FnZUJ1cygpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBfdGhpcy5fbWVzc2FnZUJ1cztcbiAgfVxuXG4gIC8qKlxuICAqIFNldCB0aGUgbWVzc2FnZUJ1cyBpbiB0aGlzIFJlZ2lzdHJ5XG4gICogQHBhcmFtIHtNZXNzYWdlQnVzfSAgICAgICAgICAgbWVzc2FnZUJ1c1xuICAqL1xuICBzZXQgbWVzc2FnZUJ1cyhtZXNzYWdlQnVzKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBfdGhpcy5fbWVzc2FnZUJ1cyA9IG1lc3NhZ2VCdXM7XG4gIH1cblxuICBnZXQgc3Vic2NyaXB0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9zdWJzY3JpcHRpb247XG4gIH1cblxuICBzZXQgc3Vic2NyaXB0aW9uKHBhcmFtcykge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IHBhcmFtcy5tZXNzYWdlLmJvZHkuc3Vic2NyaWJlcjtcbiAgfVxuXG4gIGxvYWRDb25maWd1cmF0aW9ucygpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgY29uc29sZS5sb2coX3RoaXMuc3RvcmFnZU1hbmFnZXIpO1xuXG4gICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5nZXQoJ3JldGhpbms6YWN0aXZlUG9saWN5JykudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgX3RoaXMuYWN0aXZlVXNlclBvbGljeSA9IHZhbHVlO1xuXG4gICAgICAgIHJldHVybiBfdGhpcy5zdG9yYWdlTWFuYWdlci5nZXQoJ3JldGhpbms6Z3JvdXBzJyk7XG4gICAgICB9KS50aGVuKChncm91cEluZm8pID0+IHtcbiAgICAgICAgbGV0IGdyb3VwcyA9IGdyb3VwSW5mbztcbiAgICAgICAgX3RoaXMuZ3JvdXBzID0gKGdyb3VwcyA9PT0gdW5kZWZpbmVkKSA/IHt9IDogZ3JvdXBzO1xuXG4gICAgICAgIHJldHVybiBfdGhpcy5zdG9yYWdlTWFuYWdlci5nZXQoJ3JldGhpbms6c3BQb2xpY2llcycpO1xuICAgICAgfSkudGhlbigocG9saWNpZXNJbmZvKSA9PiB7XG4gICAgICAgIGxldCBzcFBvbGljaWVzID0gcG9saWNpZXNJbmZvO1xuICAgICAgICBfdGhpcy5zZXJ2aWNlUHJvdmlkZXJQb2xpY3kgPSAoc3BQb2xpY2llcyA9PT0gdW5kZWZpbmVkKSA/IHt9IDogc3BQb2xpY2llcztcblxuICAgICAgICBfdGhpcy5fbG9hZFVzZXJQb2xpY2llcygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG5cbiAgZ2V0UG9saWNpZXMobWVzc2FnZSwgaXNJbmNvbWluZ01lc3NhZ2UpIHtcbiAgICBsZXQgcG9saWNpZXMgPSB7fTtcblxuICAgIGlmICh0aGlzLmFjdGl2ZVVzZXJQb2xpY3kgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcG9saWNpZXMudXNlclBvbGljeSA9IHRoaXMudXNlclBvbGljaWVzW3RoaXMuYWN0aXZlVXNlclBvbGljeV07XG4gICAgfVxuXG4gICAgcG9saWNpZXMuc2VydmljZVByb3ZpZGVyUG9saWN5ID0gdGhpcy5nZXRTZXJ2aWNlUHJvdmlkZXJQb2xpY3kobWVzc2FnZSwgaXNJbmNvbWluZ01lc3NhZ2UpO1xuXG4gICAgcmV0dXJuIHBvbGljaWVzO1xuICB9XG5cbiAgX2lzVmFsaWRVcGRhdGUobWVzc2FnZSkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChtZXNzYWdlLmZyb20uc3BsaXQoJzovLycpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgX3RoaXMuaWRNb2R1bGUuX2dldEh5cGVydHlGcm9tRGF0YU9iamVjdChtZXNzYWdlLmZyb20pLnRoZW4oaHlwZXJ0eVVSTCA9PiB7XG4gICAgICAgICAgaWYgKGh5cGVydHlVUkwgPT09IG1lc3NhZ2UuYm9keS5zb3VyY2UpIHtcbiAgICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdCgnVGhlIHNvdXJjZSBvZiB0aGUgbWVzc2FnZSBpcyBub3QgdmFsaWQuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUobWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG5cbiAgZ2V0TXlFbWFpbHMoKSB7XG4gICAgbGV0IGlkZW50aXRpZXMgPSB0aGlzLmlkTW9kdWxlLmdldElkZW50aXRpZXMoKTtcbiAgICBsZXQgZW1haWxzID0gW107XG5cbiAgICBmb3IgKGxldCBpIGluIGlkZW50aXRpZXMpIHtcbiAgICAgIGVtYWlscy5wdXNoKGdldFVzZXJFbWFpbEZyb21VUkwoaWRlbnRpdGllc1tpXS5pZGVudGl0eSkpO1xuICAgIH1cblxuICAgIHJldHVybiBlbWFpbHM7XG4gIH1cblxuICBnZXRNeUh5cGVydGllcygpIHtcbiAgICBsZXQgaHlwZXJ0aWVzID0gdGhpcy5ydW50aW1lUmVnaXN0cnkuaHlwZXJ0aWVzTGlzdDtcbiAgICBsZXQgaHlwZXJ0aWVzTmFtZXMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgaW4gaHlwZXJ0aWVzKSB7XG4gICAgICBsZXQgaHlwZXJ0eU5hbWUgPSBoeXBlcnRpZXNbaV0ub2JqZWN0TmFtZTtcbiAgICAgIGlmIChoeXBlcnRpZXNOYW1lcy5pbmRleE9mKGh5cGVydHlOYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgaHlwZXJ0aWVzTmFtZXMucHVzaChoeXBlcnR5TmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGh5cGVydGllc05hbWVzO1xuICB9XG5cbiAgZ2V0U2VydmljZVByb3ZpZGVyUG9saWN5KG1lc3NhZ2UsIGlzSW5jb21pbmcpIHtcbiAgICBsZXQgcG9saWN5O1xuXG4gICAgaWYgKGlzSW5jb21pbmcpIHtcbiAgICAgIGxldCB0b0h5cGVydHkgPSB0aGlzLnJ1bnRpbWVSZWdpc3RyeS5nZXRIeXBlcnR5TmFtZShtZXNzYWdlLnRvKTtcbiAgICAgIHBvbGljeSA9IHRoaXMuc2VydmljZVByb3ZpZGVyUG9saWN5W3RvSHlwZXJ0eV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBmcm9tSHlwZXJ0eSA9IHRoaXMucnVudGltZVJlZ2lzdHJ5LmdldEh5cGVydHlOYW1lKG1lc3NhZ2UuZnJvbSk7XG4gICAgICBwb2xpY3kgPSB0aGlzLnNlcnZpY2VQcm92aWRlclBvbGljeVtmcm9tSHlwZXJ0eV07XG4gICAgfVxuICAgIHJldHVybiBwb2xpY3k7XG4gIH1cblxuXG4gIGdldFVSTCh1cmwpIHtcbiAgICBsZXQgc3BsaXRVUkwgPSB1cmwuc3BsaXQoJy8nKTtcbiAgICByZXR1cm4gc3BsaXRVUkxbMF0gKyAnLy8nICsgc3BsaXRVUkxbMl0gKyAnLycgKyBzcGxpdFVSTFszXTtcbiAgfVxuXG5cbiAgLyoqXG4gICogQ3JlYXRlcyBhIGdyb3VwIHdpdGggdGhlIGdpdmVuIG5hbWUuXG4gICogQHBhcmFtICB7U3RyaW5nfSAgZ3JvdXBOYW1lXG4gICovXG4gIF9sb2FkVXNlclBvbGljaWVzKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5nZXQoJ3JldGhpbms6dXNlclBvbGljaWVzJykudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgbGV0IHBvbGljaWVzID0gdmFsdWU7XG4gICAgICAgIGlmIChwb2xpY2llcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSBpbiBwb2xpY2llcykge1xuICAgICAgICAgICAgdGhpcy5wZXAuYWRkUG9saWN5KCdVU0VSJywgaSwgcG9saWNpZXNbaV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICB9XG5cbiAgX2dldExhc3RDb21wb25lbnRPZlVSTCh1cmwpIHtcbiAgICBsZXQgc3BsaXQgPSB1cmwuc3BsaXQoJy8nKTtcbiAgICByZXR1cm4gc3BsaXRbc3BsaXQubGVuZ3RoIC0gMV07XG4gIH1cblxuICBfZ2V0UG9saWNpZXNKU09OKHBvbGljaWVzKSB7XG4gICAgZm9yIChsZXQgaSBpbiBwb2xpY2llcykge1xuICAgICAgbGV0IGNvbWJpbmluZ0FsZ29yaXRobSA9IHBvbGljaWVzW2ldLmNvbWJpbmluZ0FsZ29yaXRobTtcbiAgICAgIGlmIChjb21iaW5pbmdBbGdvcml0aG0gaW5zdGFuY2VvZiBCbG9ja092ZXJyaWRlcykge1xuICAgICAgICBwb2xpY2llc1tpXS5jb21iaW5pbmdBbGdvcml0aG0gPSAnYmxvY2tPdmVycmlkZXMnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGNvbWJpbmluZ0FsZ29yaXRobSBpbnN0YW5jZW9mIEFsbG93T3ZlcnJpZGVzKSB7XG4gICAgICAgICAgcG9saWNpZXNbaV0uY29tYmluaW5nQWxnb3JpdGhtID0gJ2FsbG93T3ZlcnJpZGVzJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoY29tYmluaW5nQWxnb3JpdGhtIGluc3RhbmNlb2YgRmlyc3RBcHBsaWNhYmxlKSB7XG4gICAgICAgICAgICBwb2xpY2llc1tpXS5jb21iaW5pbmdBbGdvcml0aG0gPSAnZmlyc3RBcHBsaWNhYmxlJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9saWNpZXNbaV0uY29tYmluaW5nQWxnb3JpdGhtID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwb2xpY2llcztcbiAgfVxuXG4gIHNhdmVBY3RpdmVQb2xpY3koKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBfdGhpcy5zdG9yYWdlTWFuYWdlci5zZXQoJ3JldGhpbms6YWN0aXZlUG9saWN5JywgMCwgdGhpcy5hY3RpdmVVc2VyUG9saWN5KS50aGVuKCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzYXZlR3JvdXBzKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgX3RoaXMuc3RvcmFnZU1hbmFnZXIuc2V0KCdyZXRoaW5rOmdyb3VwcycsIDAsIHRoaXMuZ3JvdXBzKS50aGVuKCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzYXZlUG9saWNpZXMoc291cmNlLCBwb2xpY3ksIGtleSkge1xuICAgIGxldCBwb2xpY2llc0pzb247XG5cbiAgICBzd2l0Y2ggKHNvdXJjZSkge1xuICAgICAgY2FzZSAnVVNFUic6XG4gICAgICAgIHBvbGljaWVzSnNvbiA9IEpTT04uc3RyaW5naWZ5KHRoaXMudXNlclBvbGljaWVzKTtcbiAgICAgICAgcG9saWNpZXNKc29uID0gdGhpcy5fZ2V0UG9saWNpZXNKU09OKEpTT04ucGFyc2UocG9saWNpZXNKc29uKSk7XG4gICAgICAgIHRoaXMuc3RvcmFnZU1hbmFnZXIuc2V0KCdyZXRoaW5rOnVzZXJQb2xpY2llcycsIDAsIHBvbGljaWVzSnNvbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnU0VSVklDRV9QUk9WSURFUic6XG4gICAgICAgIGlmIChwb2xpY3kgIT09IHVuZGVmaW5lZCAmIGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlUHJvdmlkZXJQb2xpY3lba2V5XSA9IHBvbGljeTtcbiAgICAgICAgfVxuICAgICAgICBwb2xpY2llc0pzb24gPSBKU09OLnN0cmluZ2lmeSh0aGlzLnNlcnZpY2VQcm92aWRlclBvbGljeSk7XG4gICAgICAgIHBvbGljaWVzSnNvbiA9IHRoaXMuX2dldFBvbGljaWVzSlNPTihKU09OLnBhcnNlKHBvbGljaWVzSnNvbikpO1xuICAgICAgICB0aGlzLnN0b3JhZ2VNYW5hZ2VyLnNldCgncmV0aGluazpzcFBvbGljaWVzJywgMCwgcG9saWNpZXNKc29uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBFcnJvcignVW5rbm93biBwb2xpY3kgc291cmNlOiAnICsgc291cmNlKTtcbiAgICB9XG4gIH1cblxuICBnZXRHcm91cHNOYW1lcygpIHtcbiAgICBsZXQgbXlHcm91cHMgPSB0aGlzLmdyb3VwcztcbiAgICBsZXQgZ3JvdXBzTmFtZXMgPSBbXTtcbiAgICBpZiAobXlHcm91cHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChsZXQgZ3JvdXBOYW1lIGluIG15R3JvdXBzKSB7XG4gICAgICAgIGdyb3Vwc05hbWVzLnB1c2goZ3JvdXBOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGdyb3Vwc05hbWVzO1xuICB9XG5cbiAgZ2V0R3JvdXAoZ3JvdXBOYW1lLCBkZXN0aW5hdGlvbikge1xuICAgIGxldCBtZW1iZXJzID0gW107XG5cbiAgICBpZiAoZ3JvdXBOYW1lID09PSAncHJlYXV0aG9yaXNlZCcpIHtcbiAgICAgIGxldCBkYXRhT2JqZWN0VVJMID0gZGVzdGluYXRpb24uc3BsaXQoJy8nKTtcbiAgICAgIGRhdGFPYmplY3RVUkwucG9wKCk7XG4gICAgICBkYXRhT2JqZWN0VVJMID0gZGF0YU9iamVjdFVSTFswXSArICcvLycgKyBkYXRhT2JqZWN0VVJMWzJdO1xuICAgICAgbWVtYmVycyA9IHRoaXMucnVudGltZVJlZ2lzdHJ5LmdldFByZUF1dGhTdWJzY3JpYmVycyhkYXRhT2JqZWN0VVJMKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZ3JvdXBzW2dyb3VwTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtZW1iZXJzID0gdGhpcy5ncm91cHNbZ3JvdXBOYW1lXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWVtYmVycztcbiAgfVxuXG4gIC8qKlxuICAqIENyZWF0ZXMgYSBncm91cCB3aXRoIHRoZSBnaXZlbiBuYW1lLlxuICAqIEBwYXJhbSAge1N0cmluZ30gIGdyb3VwTmFtZVxuICAqL1xuICBjcmVhdGVHcm91cChncm91cE5hbWUpIHtcbiAgICB0aGlzLmdyb3Vwc1tncm91cE5hbWVdID0gW107XG4gICAgdGhpcy5zYXZlR3JvdXBzKCk7XG4gIH1cblxuICBkZWxldGVHcm91cChncm91cE5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5ncm91cHNbZ3JvdXBOYW1lXTtcbiAgICB0aGlzLnNhdmVHcm91cHMoKTtcbiAgfVxuXG4gIC8qKlxuICAqIEFkZHMgdGhlIGdpdmVuIHVzZXIgZW1haWwgdG8gdGhlIGdyb3VwIHdpdGggdGhlIGdpdmVuIG5hbWUuXG4gICogQHBhcmFtICB7U3RyaW5nfSAgdXNlckVtYWlsXG4gICogQHBhcmFtICB7U3RyaW5nfSAgZ3JvdXBOYW1lXG4gICovXG4gIGFkZFRvR3JvdXAoZ3JvdXBOYW1lLCB1c2VyRW1haWwpIHtcbiAgICBsZXQgbXlHcm91cHMgPSB0aGlzLmdyb3VwcztcbiAgICBpZiAobXlHcm91cHNbZ3JvdXBOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAobXlHcm91cHNbZ3JvdXBOYW1lXS5pbmRleE9mKHVzZXJFbWFpbCkgPT09IC0xKSB7XG4gICAgICAgIG15R3JvdXBzW2dyb3VwTmFtZV0ucHVzaCh1c2VyRW1haWwpO1xuICAgICAgICB0aGlzLnNhdmVHcm91cHMoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgRXJyb3IoJ0dyb3VwIFwiJyArIGdyb3VwTmFtZSArICdcIiBkb2VzIG5vdCBleGlzdCEnKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVGcm9tR3JvdXAoZ3JvdXBOYW1lLCB1c2VyRW1haWwpIHtcbiAgICBsZXQgZ3JvdXAgPSB0aGlzLmdyb3Vwc1tncm91cE5hbWVdO1xuXG4gICAgZ3JvdXAuc3BsaWNlKGdyb3VwLmluZGV4T2YodXNlckVtYWlsKSwgMSk7XG4gICAgdGhpcy5zYXZlR3JvdXBzKCk7XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBSdW50aW1lQ29yZUN0eDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvcG9saWN5L2NvbnRleHQvUnVudGltZUNvcmVDdHguanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7Ozs7O0FBUEE7QUFDQTtBQU9BOzs7QUFFQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFYQTtBQVlBO0FBQ0E7OztBQTBDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWZBO0FBaUJBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQTdTQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7QUF2REE7QUFDQTtBQWdVQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///522\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(2);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _utils = __webpack_require__(11);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ReThinkCtx = function () {\n function ReThinkCtx() {\n (0, _classCallCheck3.default)(this, ReThinkCtx);\n\n this.defaultBehaviour = true;\n this.groups = {};\n }\n\n (0, _createClass3.default)(ReThinkCtx, [{\n key: 'scheme',\n get: function get() {\n return this._scheme;\n },\n set: function set(params) {\n var from = params.message.from;\n if ((0, _utils.isDataObjectURL)(from)) {\n this._scheme = (0, _utils.divideURL)(from).type;\n } else {\n this._scheme = undefined;\n }\n }\n }, {\n key: 'date',\n get: function get() {\n return this._date;\n },\n set: function set(now) {\n var date = new Date();\n var day = String(date.getDate());\n if (day.length === 1) {\n day = '0' + day;\n }\n var month = String(date.getMonth() + 1);\n if (month.length === 1) {\n month = '0' + month;\n }\n this._date = day + '/' + month + '/' + date.getFullYear();\n }\n }, {\n key: 'domain',\n get: function get() {\n return this._domain;\n },\n set: function set(params) {\n if (params.message.body.identity !== undefined) {\n this._domain = (0, _utils.divideEmail)(params.message.body.identity.userProfile.username).domain;\n }\n }\n }, {\n key: 'type',\n get: function get() {\n return this._type;\n },\n set: function set(params) {\n var message = params.message;\n if (message.body.value !== undefined) {\n this._type = message.body.value.resourceType;\n }\n }\n }, {\n key: 'source',\n get: function get() {\n return this._source;\n },\n set: function set(params) {\n if (params.message.body.identity !== undefined) {\n this._source = params.message.body.identity.userProfile.username;\n }\n }\n }, {\n key: 'time',\n get: function get() {\n return this._time;\n },\n set: function set(now) {\n now = new Date();\n var minutes = String(now.getMinutes());\n if (minutes.length === 1) {\n minutes = '0' + minutes;\n }\n this._time = parseInt(String(now.getHours()) + minutes);\n }\n }, {\n key: 'weekday',\n get: function get() {\n return this._weekday;\n },\n set: function set(now) {\n this._weekday = String(new Date().getDay());\n }\n }]);\n return ReThinkCtx;\n}();\n\nexports.default = ReThinkCtx;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9wb2xpY3kvUmVUaGlua0N0eC5qcz82ZmRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGl2aWRlRW1haWwsIGRpdmlkZVVSTCwgaXNEYXRhT2JqZWN0VVJMfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5cbmNsYXNzIFJlVGhpbmtDdHgge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZGVmYXVsdEJlaGF2aW91ciA9IHRydWU7XG4gICAgdGhpcy5ncm91cHMgPSB7fTtcbiAgfVxuXG4gIGdldCBzY2hlbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NjaGVtZTtcbiAgfVxuXG4gIGdldCBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRlO1xuICB9XG5cbiAgZ2V0IGRvbWFpbigpIHtcbiAgICByZXR1cm4gdGhpcy5fZG9tYWluO1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cblxuICBnZXQgc291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLl9zb3VyY2U7XG4gIH1cblxuICBnZXQgdGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdGltZTtcbiAgfVxuXG4gIGdldCB3ZWVrZGF5KCkge1xuICAgIHJldHVybiB0aGlzLl93ZWVrZGF5O1xuICB9XG5cbiAgc2V0IHNjaGVtZShwYXJhbXMpIHtcbiAgICBsZXQgZnJvbSA9IHBhcmFtcy5tZXNzYWdlLmZyb207XG4gICAgaWYgKGlzRGF0YU9iamVjdFVSTChmcm9tKSkge1xuICAgICAgdGhpcy5fc2NoZW1lID0gZGl2aWRlVVJMKGZyb20pLnR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NjaGVtZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBzZXQgZGF0ZShub3cpIHtcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgbGV0IGRheSA9IFN0cmluZyhkYXRlLmdldERhdGUoKSk7XG4gICAgaWYgKGRheS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGRheSA9ICcwJyArIGRheTtcbiAgICB9XG4gICAgbGV0IG1vbnRoID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpO1xuICAgIGlmIChtb250aC5sZW5ndGggPT09IDEpIHtcbiAgICAgIG1vbnRoID0gJzAnICsgbW9udGg7XG4gICAgfVxuICAgIHRoaXMuX2RhdGUgPSBkYXkgKyAnLycgKyBtb250aCArICcvJyArIGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgfVxuXG4gIHNldCBkb21haW4ocGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcy5tZXNzYWdlLmJvZHkuaWRlbnRpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZG9tYWluID0gZGl2aWRlRW1haWwocGFyYW1zLm1lc3NhZ2UuYm9keS5pZGVudGl0eS51c2VyUHJvZmlsZS51c2VybmFtZSkuZG9tYWluO1xuICAgIH1cbiAgfVxuXG4gIHNldCB0eXBlKHBhcmFtcykge1xuICAgIGxldCBtZXNzYWdlID0gcGFyYW1zLm1lc3NhZ2U7XG4gICAgaWYgKG1lc3NhZ2UuYm9keS52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl90eXBlID0gbWVzc2FnZS5ib2R5LnZhbHVlLnJlc291cmNlVHlwZTtcbiAgICB9XG4gIH1cblxuICBzZXQgc291cmNlKHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMubWVzc2FnZS5ib2R5LmlkZW50aXR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3NvdXJjZSA9IHBhcmFtcy5tZXNzYWdlLmJvZHkuaWRlbnRpdHkudXNlclByb2ZpbGUudXNlcm5hbWU7XG4gICAgfVxuICB9XG5cbiAgc2V0IHRpbWUobm93KSB7XG4gICAgbm93ID0gbmV3IERhdGUoKTtcbiAgICBsZXQgbWludXRlcyA9IFN0cmluZyhub3cuZ2V0TWludXRlcygpKTtcbiAgICBpZiAobWludXRlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIG1pbnV0ZXMgPSAnMCcgKyBtaW51dGVzO1xuICAgIH1cbiAgICB0aGlzLl90aW1lID0gcGFyc2VJbnQoU3RyaW5nKG5vdy5nZXRIb3VycygpKSArIG1pbnV0ZXMpO1xuICB9XG5cbiAgc2V0IHdlZWtkYXkobm93KSB7XG4gICAgdGhpcy5fd2Vla2RheSA9IFN0cmluZyhuZXcgRGF0ZSgpLmdldERheSgpKTtcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlVGhpbmtDdHg7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3BvbGljeS9SZVRoaW5rQ3R4LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7OztBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQTBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUEvQkE7QUFDQTtBQUNBO0FBK0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBeENBO0FBQ0E7QUFDQTtBQXdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUExQ0E7QUFDQTtBQUNBO0FBMENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBN0NBO0FBQ0E7QUFDQTtBQTZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUEvQ0E7QUFDQTtBQUNBO0FBK0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQXBEQTtBQUNBO0FBQ0E7QUFvREE7QUFDQTtBQUNBOzs7OztBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///523\n")}])}); \ No newline at end of file diff --git a/dist/Runtime.light.js b/dist/Runtime.light.js old mode 100644 new mode 100755 index 8a42bb20..9e9a6f95 --- a/dist/Runtime.light.js +++ b/dist/Runtime.light.js @@ -1,3 +1,273 @@ +// version: 0.11.1 +// date: Mon Jun 04 2018 11:42:23 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Mon Jun 04 2018 11:42:23 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Mon Jun 04 2018 10:54:59 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Mon Jun 04 2018 10:54:59 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Mon Jun 04 2018 10:15:27 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Mon Jun 04 2018 10:15:27 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Wed May 30 2018 13:17:34 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Wed May 30 2018 13:17:34 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Wed May 30 2018 12:46:28 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Wed May 30 2018 12:46:28 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + // version: 0.11.1 // date: Fri May 25 2018 12:35:36 GMT+0100 (GMT Daylight Time) // licence: diff --git a/dist/Runtime.min.js b/dist/Runtime.min.js old mode 100644 new mode 100755 index 6e0804b9..562e916f --- a/dist/Runtime.min.js +++ b/dist/Runtime.min.js @@ -1,3 +1,273 @@ +// version: 0.11.1 +// date: Mon Jun 04 2018 11:42:23 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Mon Jun 04 2018 11:42:23 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Mon Jun 04 2018 10:54:59 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Mon Jun 04 2018 10:54:59 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Mon Jun 04 2018 10:15:27 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Mon Jun 04 2018 10:15:27 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Wed May 30 2018 13:17:34 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Wed May 30 2018 13:17:34 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Wed May 30 2018 12:46:28 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + +// version: 0.11.1 +// date: Wed May 30 2018 12:46:28 GMT+0100 (WEST) +// licence: +/** +* Copyright 2016 PT Inovação e Sistemas SA +* Copyright 2016 INESC-ID +* Copyright 2016 QUOBIS NETWORKS SL +* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V +* Copyright 2016 ORANGE SA +* Copyright 2016 Deutsche Telekom AG +* Copyright 2016 Apizee +* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ + + // version: 0.11.1 // date: Fri May 25 2018 12:35:36 GMT+0100 (GMT Daylight Time) // licence: diff --git a/dist/minibus.js b/dist/minibus.js old mode 100644 new mode 100755 index 0405c24f..bbaabae5 --- a/dist/minibus.js +++ b/dist/minibus.js @@ -1,5 +1,5 @@ // version: 0.11.1 -// date: Fri May 25 2018 12:35:36 GMT+0100 (GMT Daylight Time) +// date: Mon Jun 04 2018 11:42:23 GMT+0100 (WEST) // licence: /** * Copyright 2016 PT Inovação e Sistemas SA @@ -26,7 +26,7 @@ // version: 0.11.1 -// date: Fri May 25 2018 12:35:36 GMT+0100 (GMT Daylight Time) +// date: Mon Jun 04 2018 11:42:23 GMT+0100 (WEST) // licence: /** * Copyright 2016 PT Inovação e Sistemas SA @@ -52,4 +52,4 @@ **/ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("minibus",[],n):"object"==typeof exports?exports.minibus=n():e.minibus=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function c(l){if(n[l])return n[l].exports;var t=n[l]={i:l,l:!1,exports:{}};return e[l].call(t.exports,t,t.exports,c),t.l=!0,t.exports}return c.m=e,c.c=n,c.d=function(e,n,l){c.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:l})},c.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(n,"a",n),n},c.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},c.p="",c(c.s=135)}([function(module,exports){eval("var core = module.exports = { version: '2.5.3' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcz8xNWUwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjUuMycgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qc1xuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n")},function(module,exports){eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzP2VjYWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1\n")},function(module,exports,__webpack_require__){eval("var store = __webpack_require__(28)('wks');\nvar uid = __webpack_require__(19);\nvar Symbol = __webpack_require__(1).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzPzc1MmMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qc1xuLy8gbW9kdWxlIGlkID0gMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar ctx = __webpack_require__(14);\nvar hide = __webpack_require__(8);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzPzkwY2QiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGtleSBpbiBleHBvcnRzKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///3\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzP2VmYjMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4\n")},function(module,exports,__webpack_require__){eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(13)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanM/Zjg0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n")},function(module,exports){eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzPzEyYTgiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(4);\nvar IE8_DOM_DEFINE = __webpack_require__(36);\nvar toPrimitive = __webpack_require__(26);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzPzdhZjAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanNcbi8vIG1vZHVsZSBpZCA9IDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(7);\nvar createDesc = __webpack_require__(18);\nmodule.exports = __webpack_require__(5) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qcz84NDljIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n")},function(module,exports){eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzPzBmNjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanNcbi8vIG1vZHVsZSBpZCA9IDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9\n")},function(module,exports,__webpack_require__){eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(57);\nvar defined = __webpack_require__(22);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NGRjNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///10\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzY2YjkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(60);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzP2MzMTAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5XCIpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///12\n')},function(module,exports){eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///13\n")},function(module,exports,__webpack_require__){eval("// optional / simple context binding\nvar aFunction = __webpack_require__(17);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanNcbi8vIG1vZHVsZSBpZCA9IDE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanNcbi8vIG1vZHVsZSBpZCA9IDE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///15\n")},function(module,exports){eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcz9mZGI0Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///16\n")},function(module,exports){eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///17\n")},function(module,exports){eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanNcbi8vIG1vZHVsZSBpZCA9IDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///18\n")},function(module,exports){eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qc1xuLy8gbW9kdWxlIGlkID0gMTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///19\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(37);\nvar enumBugKeys = __webpack_require__(29);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///20\n")},function(module,exports){eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/NTJlMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAyMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///21\n")},function(module,exports){eval('// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError("Can\'t call method on " + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTc2OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanNcbi8vIG1vZHVsZSBpZCA9IDIyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///22\n')},function(module,exports){eval("module.exports = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qc1xuLy8gbW9kdWxlIGlkID0gMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///23\n")},function(module,exports,__webpack_require__){eval("var def = __webpack_require__(7).f;\nvar has = __webpack_require__(9);\nvar TAG = __webpack_require__(2)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdiYTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///24\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nvar document = __webpack_require__(1).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n")},function(module,exports,__webpack_require__){eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(6);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///26\n")},function(module,exports,__webpack_require__){eval("var shared = __webpack_require__(28)('keys');\nvar uid = __webpack_require__(19);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NmIxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///27\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcz83YmMwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHt9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2hhcmVkLmpzXG4vLyBtb2R1bGUgaWQgPSAyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///28\n")},function(module,exports){eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/YzY3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n")},function(module,exports,__webpack_require__){eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(22);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(4);\nvar dPs = __webpack_require__(69);\nvar enumBugKeys = __webpack_require__(29);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(25)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(46).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanM/NjI4NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGRQcyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2lmcmFtZScpO1xuICB2YXIgaSA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJlcXVpcmUoJy4vX2h0bWwnKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(17);\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanM/YTgwNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAyNS40LjEuNSBOZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcblxuZnVuY3Rpb24gUHJvbWlzZUNhcGFiaWxpdHkoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUZ1bmN0aW9uKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFGdW5jdGlvbihyZWplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qc1xuLy8gbW9kdWxlIGlkID0gMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///32\n")},function(module,exports,__webpack_require__){eval("exports.f = __webpack_require__(2);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1leHQuanM/MmExZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSByZXF1aXJlKCcuL193a3MnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///33\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar LIBRARY = __webpack_require__(23);\nvar wksExt = __webpack_require__(33);\nvar defineProperty = __webpack_require__(7).f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1kZWZpbmUuanM/NzJiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciAkU3ltYm9sID0gY29yZS5TeW1ib2wgfHwgKGNvcmUuU3ltYm9sID0gTElCUkFSWSA/IHt9IDogZ2xvYmFsLlN5bWJvbCB8fCB7fSk7XG4gIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///34\n")},function(module,exports){eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanM/MzY5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtcGllLmpzXG4vLyBtb2R1bGUgaWQgPSAzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///35\n")},function(module,exports,__webpack_require__){eval("module.exports = !__webpack_require__(5) && !__webpack_require__(13)(function () {\n return Object.defineProperty(__webpack_require__(25)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///36\n")},function(module,exports,__webpack_require__){eval("var has = __webpack_require__(9);\nvar toIObject = __webpack_require__(10);\nvar arrayIndexOf = __webpack_require__(58)(false);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzIxYjgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///37\n")},function(module,exports,__webpack_require__){eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(21);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz80MTExIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qc1xuLy8gbW9kdWxlIGlkID0gMzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///38\n")},function(module,exports,__webpack_require__){eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar fails = __webpack_require__(13);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanM/YmFhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qtc2FwLmpzXG4vLyBtb2R1bGUgaWQgPSAzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///39\n")},function(module,exports,__webpack_require__){eval("var pIE = __webpack_require__(35);\nvar createDesc = __webpack_require__(18);\nvar toIObject = __webpack_require__(10);\nvar toPrimitive = __webpack_require__(26);\nvar has = __webpack_require__(9);\nvar IE8_DOM_DEFINE = __webpack_require__(36);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(5) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzPzJjYTYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcGQuanNcbi8vIG1vZHVsZSBpZCA9IDQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///40\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(66), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3Byb21pc2UuanM/ZmZmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vcHJvbWlzZVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///41\n')},function(module,exports){eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///42\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $at = __webpack_require__(67)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(44)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcz9jZDA0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///43\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(23);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(45);\nvar hide = __webpack_require__(8);\nvar has = __webpack_require__(9);\nvar Iterators = __webpack_require__(16);\nvar $iterCreate = __webpack_require__(68);\nvar setToStringTag = __webpack_require__(24);\nvar getPrototypeOf = __webpack_require__(47);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = (!BUGGY && $native) || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzP2JjODAiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAoIUJVR0dZICYmICRuYXRpdmUpIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiAhaGFzKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUikpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///44\n")},function(module,exports,__webpack_require__){eval("module.exports = __webpack_require__(8);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzP2YzY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///45\n")},function(module,exports,__webpack_require__){eval("var document = __webpack_require__(1).document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanM/NDRmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanNcbi8vIG1vZHVsZSBpZCA9IDQ2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(9);\nvar toObject = __webpack_require__(30);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanM/M2YzYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///47\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(70);\nvar global = __webpack_require__(1);\nvar hide = __webpack_require__(8);\nvar Iterators = __webpack_require__(16);\nvar TO_STRING_TAG = __webpack_require__(2)('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcz9mYWQzIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSA0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///48\n")},function(module,exports,__webpack_require__){eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(15);\nvar TAG = __webpack_require__(2)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanM/NDU4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBBUkcgPSBjb2YoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIFQsIEI7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFRcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IEFSRyA/IGNvZihPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY2xhc3NvZi5qc1xuLy8gbW9kdWxlIGlkID0gNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n")},function(module,exports,__webpack_require__){eval("// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(4);\nvar aFunction = __webpack_require__(17);\nvar SPECIES = __webpack_require__(2)('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanM/YjdjYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjMuMjAgU3BlY2llc0NvbnN0cnVjdG9yKE8sIGRlZmF1bHRDb25zdHJ1Y3RvcilcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIEQpIHtcbiAgdmFyIEMgPSBhbk9iamVjdChPKS5jb25zdHJ1Y3RvcjtcbiAgdmFyIFM7XG4gIHJldHVybiBDID09PSB1bmRlZmluZWQgfHwgKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPT0gdW5kZWZpbmVkID8gRCA6IGFGdW5jdGlvbihTKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3BlY2llcy1jb25zdHJ1Y3Rvci5qc1xuLy8gbW9kdWxlIGlkID0gNTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///50\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(14);\nvar invoke = __webpack_require__(79);\nvar html = __webpack_require__(46);\nvar cel = __webpack_require__(25);\nvar global = __webpack_require__(1);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(15)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanM/MmY4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vX2h0bWwnKTtcbnZhciBjZWwgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHNldFRhc2sgPSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyVGFzayA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbDtcbnZhciBEaXNwYXRjaCA9IGdsb2JhbC5EaXNwYXRjaDtcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xudmFyIHJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgaWYgKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICAgIGZuKCk7XG4gIH1cbn07XG52YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXRUYXNrIHx8ICFjbGVhclRhc2spIHtcbiAgc2V0VGFzayA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCkge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RlbmVyO1xuICAgIGRlZmVyID0gY3R4KHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQsIDEpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdHMpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG4gICAgfTtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICAgIHJ1bi5jYWxsKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChjdHgocnVuLCBpZCwgMSksIDApO1xuICAgIH07XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldFRhc2ssXG4gIGNsZWFyOiBjbGVhclRhc2tcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gNTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///51\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanM/NzRkMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZTogZmFsc2UsIHY6IGV4ZWMoKSB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHsgZTogdHJ1ZSwgdjogZSB9O1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanNcbi8vIG1vZHVsZSBpZCA9IDUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///52\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(4);\nvar isObject = __webpack_require__(6);\nvar newPromiseCapability = __webpack_require__(32);\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qcz83Yzk1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEMsIHgpIHtcbiAgYW5PYmplY3QoQyk7XG4gIGlmIChpc09iamVjdCh4KSAmJiB4LmNvbnN0cnVjdG9yID09PSBDKSByZXR1cm4geDtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZihDKTtcbiAgdmFyIHJlc29sdmUgPSBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlO1xuICByZXNvbHZlKHgpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzXG4vLyBtb2R1bGUgaWQgPSA1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///53\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(89);\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(91);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {\n return typeof obj === "undefined" ? "undefined" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcz9hNDU2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2l0ZXJhdG9yID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yXCIpO1xuXG52YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTtcblxudmFyIF9zeW1ib2wgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9zeW1ib2xcIik7XG5cbnZhciBfc3ltYm9sMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N5bWJvbCk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgX2l0ZXJhdG9yMi5kZWZhdWx0ID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgX3R5cGVvZihfaXRlcmF0b3IyLmRlZmF1bHQpID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YuanNcbi8vIG1vZHVsZSBpZCA9IDU0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///54\n')},function(module,exports){eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BzLmpzP2Q2NDQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wcy5qc1xuLy8gbW9kdWxlIGlkID0gNTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///55\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(37);\nvar hiddenKeys = __webpack_require__(29).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLmpzPzlmNDQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGhpZGRlbktleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi5qc1xuLy8gbW9kdWxlIGlkID0gNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n")},function(module,exports,__webpack_require__){eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(15);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/MzE0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///57\n")},function(module,exports,__webpack_require__){eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(10);\nvar toLength = __webpack_require__(38);\nvar toAbsoluteIndex = __webpack_require__(59);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2JjNTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanNcbi8vIG1vZHVsZSBpZCA9IDU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///58\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(21);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzdlNDAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///59\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(61), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/MGI4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA2MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///60\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(62);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ZjViMCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///61\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(3);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(5), 'Object', { defineProperty: __webpack_require__(7).f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanM/OTgyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///62\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(87), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzY3MWUiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///63\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(54);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n }\n\n return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanM/Y2YwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHNlbGYsIGNhbGwpIHtcbiAgaWYgKCFzZWxmKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNhbGwgJiYgKCh0eXBlb2YgY2FsbCA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoY2FsbCkpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzXG4vLyBtb2R1bGUgaWQgPSA2NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///64\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(100);\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(104);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(54);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== "function" && superClass !== null) {\n throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzPzNkZmQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKTtcblxudmFyIF9zZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXRQcm90b3R5cGVPZik7XG5cbnZhciBfY3JlYXRlID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2NyZWF0ZVwiKTtcblxudmFyIF9jcmVhdGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlKTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArICh0eXBlb2Ygc3VwZXJDbGFzcyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoc3VwZXJDbGFzcykpKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9ICgwLCBfY3JlYXRlMi5kZWZhdWx0KShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mMi5kZWZhdWx0ID8gKDAsIF9zZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzcztcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzXG4vLyBtb2R1bGUgaWQgPSA2NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///65\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(42);\n__webpack_require__(43);\n__webpack_require__(48);\n__webpack_require__(73);\n__webpack_require__(84);\n__webpack_require__(85);\nmodule.exports = __webpack_require__(0).Promise;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2UuanM/NTM5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucHJvbWlzZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL19jb3JlJykuUHJvbWlzZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA2NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///66\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(21);\nvar defined = __webpack_require__(22);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcz84N2FlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbi8vIHRydWUgIC0+IFN0cmluZyNhdFxuLy8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGF0LCBwb3MpIHtcbiAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbiAgICB2YXIgaSA9IHRvSW50ZWdlcihwb3MpO1xuICAgIHZhciBsID0gcy5sZW5ndGg7XG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGkgPCAwIHx8IGkgPj0gbCkgcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcbiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG4gICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzXG4vLyBtb2R1bGUgaWQgPSA2N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///67\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar create = __webpack_require__(31);\nvar descriptor = __webpack_require__(18);\nvar setToStringTag = __webpack_require__(24);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(8)(IteratorPrototype, __webpack_require__(2)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzP2Y3ODUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBkZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDY4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///68\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(7);\nvar anObject = __webpack_require__(4);\nvar getKeys = __webpack_require__(20);\n\nmodule.exports = __webpack_require__(5) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanM/YWEyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///69\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar addToUnscopables = __webpack_require__(71);\nvar step = __webpack_require__(72);\nvar Iterators = __webpack_require__(16);\nvar toIObject = __webpack_require__(10);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(44)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzP2M0NjkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///70\n")},function(module,exports){eval("module.exports = function () { /* empty */ };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcz9lMjY3Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qc1xuLy8gbW9kdWxlIGlkID0gNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///71\n")},function(module,exports){eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcz8xMDY2Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRvbmUsIHZhbHVlKSB7XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qc1xuLy8gbW9kdWxlIGlkID0gNzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///72\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(23);\nvar global = __webpack_require__(1);\nvar ctx = __webpack_require__(14);\nvar classof = __webpack_require__(49);\nvar $export = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\nvar aFunction = __webpack_require__(17);\nvar anInstance = __webpack_require__(74);\nvar forOf = __webpack_require__(75);\nvar speciesConstructor = __webpack_require__(50);\nvar task = __webpack_require__(51).set;\nvar microtask = __webpack_require__(80)();\nvar newPromiseCapabilityModule = __webpack_require__(32);\nvar perform = __webpack_require__(52);\nvar promiseResolve = __webpack_require__(53);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(2)('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value);\n if (domain) domain.exit();\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(81)($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(24)($Promise, PROMISE);\n__webpack_require__(82)(PROMISE);\nWrapper = __webpack_require__(0)[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(83)(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnByb21pc2UuanM/MDk3YyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuL19wcm9taXNlLXJlc29sdmUnKTtcbnZhciBQUk9NSVNFID0gJ1Byb21pc2UnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyICRQcm9taXNlID0gZ2xvYmFsW1BST01JU0VdO1xudmFyIGlzTm9kZSA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xudmFyIGVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIEludGVybmFsLCBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHksIE93blByb21pc2VDYXBhYmlsaXR5LCBXcmFwcGVyO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcblxudmFyIFVTRV9OQVRJVkUgPSAhIWZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBjb3JyZWN0IHN1YmNsYXNzaW5nIHdpdGggQEBzcGVjaWVzIHN1cHBvcnRcbiAgICB2YXIgcHJvbWlzZSA9ICRQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgdmFyIEZha2VQcm9taXNlID0gKHByb21pc2UuY29uc3RydWN0b3IgPSB7fSlbcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKV0gPSBmdW5jdGlvbiAoZXhlYykge1xuICAgICAgZXhlYyhlbXB0eSwgZW1wdHkpO1xuICAgIH07XG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIHJldHVybiAoaXNOb2RlIHx8IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJykgJiYgcHJvbWlzZS50aGVuKGVtcHR5KSBpbnN0YW5jZW9mIEZha2VQcm9taXNlO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn0oKTtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgdHlwZW9mICh0aGVuID0gaXQudGhlbikgPT0gJ2Z1bmN0aW9uJyA/IHRoZW4gOiBmYWxzZTtcbn07XG52YXIgbm90aWZ5ID0gZnVuY3Rpb24gKHByb21pc2UsIGlzUmVqZWN0KSB7XG4gIGlmIChwcm9taXNlLl9uKSByZXR1cm47XG4gIHByb21pc2UuX24gPSB0cnVlO1xuICB2YXIgY2hhaW4gPSBwcm9taXNlLl9jO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIG9rID0gcHJvbWlzZS5fcyA9PSAxO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgcnVuID0gZnVuY3Rpb24gKHJlYWN0aW9uKSB7XG4gICAgICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsO1xuICAgICAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICAgICAgdmFyIHJlamVjdCA9IHJlYWN0aW9uLnJlamVjdDtcbiAgICAgIHZhciBkb21haW4gPSByZWFjdGlvbi5kb21haW47XG4gICAgICB2YXIgcmVzdWx0LCB0aGVuO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgICAgICBpZiAoIW9rKSB7XG4gICAgICAgICAgICBpZiAocHJvbWlzZS5faCA9PSAyKSBvbkhhbmRsZVVuaGFuZGxlZChwcm9taXNlKTtcbiAgICAgICAgICAgIHByb21pc2UuX2ggPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaGFuZGxlciA9PT0gdHJ1ZSkgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoZG9tYWluKSBkb21haW4uZW50ZXIoKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IGhhbmRsZXIodmFsdWUpO1xuICAgICAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmV4aXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gcmVhY3Rpb24ucHJvbWlzZSkge1xuICAgICAgICAgICAgcmVqZWN0KFR5cGVFcnJvcignUHJvbWlzZS1jaGFpbiBjeWNsZScpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoZW4gPSBpc1RoZW5hYmxlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgIHRoZW4uY2FsbChyZXN1bHQsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSBlbHNlIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSBlbHNlIHJlamVjdCh2YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGggPiBpKSBydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgcHJvbWlzZS5fYyA9IFtdO1xuICAgIHByb21pc2UuX24gPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXByb21pc2UuX2gpIG9uVW5oYW5kbGVkKHByb21pc2UpO1xuICB9KTtcbn07XG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgdW5oYW5kbGVkID0gaXNVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgdmFyIHJlc3VsdCwgaGFuZGxlciwgY29uc29sZTtcbiAgICBpZiAodW5oYW5kbGVkKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGlzTm9kZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub251bmhhbmRsZWRyZWplY3Rpb24pIHtcbiAgICAgICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmICgoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBwcm9taXNlLl9oID0gaXNOb2RlIHx8IGlzVW5oYW5kbGVkKHByb21pc2UpID8gMiA6IDE7XG4gICAgfSBwcm9taXNlLl9hID0gdW5kZWZpbmVkO1xuICAgIGlmICh1bmhhbmRsZWQgJiYgcmVzdWx0LmUpIHRocm93IHJlc3VsdC52O1xuICB9KTtcbn07XG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICByZXR1cm4gcHJvbWlzZS5faCAhPT0gMSAmJiAocHJvbWlzZS5fYSB8fCBwcm9taXNlLl9jKS5sZW5ndGggPT09IDA7XG59O1xudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYW5kbGVyO1xuICAgIGlmIChpc05vZGUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBpZiAoaGFuZGxlciA9IGdsb2JhbC5vbnJlamVjdGlvbmhhbmRsZWQpIHtcbiAgICAgIGhhbmRsZXIoeyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHByb21pc2UuX3YgfSk7XG4gICAgfVxuICB9KTtcbn07XG52YXIgJHJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICBwcm9taXNlLl9zID0gMjtcbiAgaWYgKCFwcm9taXNlLl9hKSBwcm9taXNlLl9hID0gcHJvbWlzZS5fYy5zbGljZSgpO1xuICBub3RpZnkocHJvbWlzZSwgdHJ1ZSk7XG59O1xudmFyICRyZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgdmFyIHRoZW47XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgdHJ5IHtcbiAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIGlmICh0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBfdzogcHJvbWlzZSwgX2Q6IGZhbHNlIH07IC8vIHdyYXBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAkcmVqZWN0LmNhbGwod3JhcHBlciwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9taXNlLl92ID0gdmFsdWU7XG4gICAgICBwcm9taXNlLl9zID0gMTtcbiAgICAgIG5vdGlmeShwcm9taXNlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgJHJlamVjdC5jYWxsKHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9LCBlKTsgLy8gd3JhcFxuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gICRQcm9taXNlID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJFByb21pc2UsIFBST01JU0UsICdfaCcpO1xuICAgIGFGdW5jdGlvbihleGVjdXRvcik7XG4gICAgSW50ZXJuYWwuY2FsbCh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoY3R4KCRyZXNvbHZlLCB0aGlzLCAxKSwgY3R4KCRyZWplY3QsIHRoaXMsIDEpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICRyZWplY3QuY2FsbCh0aGlzLCBlcnIpO1xuICAgIH1cbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHRoaXMuX2MgPSBbXTsgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG4gICAgdGhpcy5fYSA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuICAgIHRoaXMuX3MgPSAwOyAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcbiAgICB0aGlzLl9kID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIGRvbmVcbiAgICB0aGlzLl92ID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIHZhbHVlXG4gICAgdGhpcy5faCA9IDA7ICAgICAgICAgICAgICAvLyA8LSByZWplY3Rpb24gc3RhdGUsIDAgLSBkZWZhdWx0LCAxIC0gaGFuZGxlZCwgMiAtIHVuaGFuZGxlZFxuICAgIHRoaXMuX24gPSBmYWxzZTsgICAgICAgICAgLy8gPC0gbm90aWZ5XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpKCRQcm9taXNlLnByb3RvdHlwZSwge1xuICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsICRQcm9taXNlKSk7XG4gICAgICByZWFjdGlvbi5vayA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCA9IHR5cGVvZiBvblJlamVjdGVkID09ICdmdW5jdGlvbicgJiYgb25SZWplY3RlZDtcbiAgICAgIHJlYWN0aW9uLmRvbWFpbiA9IGlzTm9kZSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fYy5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9hKSB0aGlzLl9hLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHRoaXMuX3MpIG5vdGlmeSh0aGlzLCBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH0pO1xuICBPd25Qcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBJbnRlcm5hbCgpO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgdGhpcy5yZXNvbHZlID0gY3R4KCRyZXNvbHZlLCBwcm9taXNlLCAxKTtcbiAgICB0aGlzLnJlamVjdCA9IGN0eCgkcmVqZWN0LCBwcm9taXNlLCAxKTtcbiAgfTtcbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gJFByb21pc2UgfHwgQyA9PT0gV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFByb21pc2U6ICRQcm9taXNlIH0pO1xucmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKSgkUHJvbWlzZSwgUFJPTUlTRSk7XG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKFBST01JU0UpO1xuV3JhcHBlciA9IHJlcXVpcmUoJy4vX2NvcmUnKVtQUk9NSVNFXTtcblxuLy8gc3RhdGljc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNSBQcm9taXNlLnJlamVjdChyKVxuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTtcbiAgICB2YXIgJCRyZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICAkJHJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKExJQlJBUlkgfHwgIVVTRV9OQVRJVkUpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC42IFByb21pc2UucmVzb2x2ZSh4KVxuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoTElCUkFSWSAmJiB0aGlzID09PSBXcmFwcGVyID8gJFByb21pc2UgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoVVNFX05BVElWRSAmJiByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7XG4gICRQcm9taXNlLmFsbChpdGVyKVsnY2F0Y2gnXShlbXB0eSk7XG59KSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyICRpbmRleCA9IGluZGV4Kys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1skaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lKSByZWplY3QocmVzdWx0LnYpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA3M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///73\n")},function(module,exports){eval("module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzP2Q4YWMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIENvbnN0cnVjdG9yLCBuYW1lLCBmb3JiaWRkZW5GaWVsZCkge1xuICBpZiAoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSB8fCAoZm9yYmlkZGVuRmllbGQgIT09IHVuZGVmaW5lZCAmJiBmb3JiaWRkZW5GaWVsZCBpbiBpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IobmFtZSArICc6IGluY29ycmVjdCBpbnZvY2F0aW9uIScpO1xuICB9IHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4taW5zdGFuY2UuanNcbi8vIG1vZHVsZSBpZCA9IDc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///74\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(14);\nvar call = __webpack_require__(76);\nvar isArrayIter = __webpack_require__(77);\nvar anObject = __webpack_require__(4);\nvar toLength = __webpack_require__(38);\nvar getIterFn = __webpack_require__(78);\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qcz8zNTZiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgQlJFQUsgPSB7fTtcbnZhciBSRVRVUk4gPSB7fTtcbnZhciBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0LCBJVEVSQVRPUikge1xuICB2YXIgaXRlckZuID0gSVRFUkFUT1IgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSk7XG4gIHZhciBmID0gY3R4KGZuLCB0aGF0LCBlbnRyaWVzID8gMiA6IDEpO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0O1xuICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXRlcmFibGUgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcbiAgLy8gZmFzdCBjYXNlIGZvciBhcnJheXMgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yXG4gIGlmIChpc0FycmF5SXRlcihpdGVyRm4pKSBmb3IgKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgcmVzdWx0ID0gZW50cmllcyA/IGYoYW5PYmplY3Qoc3RlcCA9IGl0ZXJhYmxlW2luZGV4XSlbMF0sIHN0ZXBbMV0pIDogZihpdGVyYWJsZVtpbmRleF0pO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9IGVsc2UgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOykge1xuICAgIHJlc3VsdCA9IGNhbGwoaXRlcmF0b3IsIGYsIHN0ZXAudmFsdWUsIGVudHJpZXMpO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9XG59O1xuZXhwb3J0cy5CUkVBSyA9IEJSRUFLO1xuZXhwb3J0cy5SRVRVUk4gPSBSRVRVUk47XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZm9yLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA3NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///75\n")},function(module,exports,__webpack_require__){eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(4);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qcz85YWM1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcykge1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qc1xuLy8gbW9kdWxlIGlkID0gNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///76\n")},function(module,exports,__webpack_require__){eval("// check on default Array iterator\nvar Iterators = __webpack_require__(16);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanM/MzIxYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1hcnJheS1pdGVyLmpzXG4vLyBtb2R1bGUgaWQgPSA3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///77\n")},function(module,exports,__webpack_require__){eval("var classof = __webpack_require__(49);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar Iterators = __webpack_require__(16);\nmodule.exports = __webpack_require__(0).getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzP2RkZmIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanNcbi8vIG1vZHVsZSBpZCA9IDc4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///78\n")},function(module,exports){eval("// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ludm9rZS5qcz85MjdiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhc3QgYXBwbHksIGh0dHA6Ly9qc3BlcmYubG5raXQuY29tL2Zhc3QtYXBwbHkvNVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIGFyZ3MsIHRoYXQpIHtcbiAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gdW4gPyBmbigpXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQpO1xuICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gIH0gcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3MpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pbnZva2UuanNcbi8vIG1vZHVsZSBpZCA9IDc5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///79\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar macrotask = __webpack_require__(51).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(15)(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n var promise = Promise.resolve();\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qcz9mMzYzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBtYWNyb3Rhc2sgPSByZXF1aXJlKCcuL190YXNrJykuc2V0O1xudmFyIE9ic2VydmVyID0gZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIFByb21pc2UgPSBnbG9iYWwuUHJvbWlzZTtcbnZhciBpc05vZGUgPSByZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaGVhZCwgbGFzdCwgbm90aWZ5O1xuXG4gIHZhciBmbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50LCBmbjtcbiAgICBpZiAoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGhlYWQpIHtcbiAgICAgIGZuID0gaGVhZC5mbjtcbiAgICAgIGhlYWQgPSBoZWFkLm5leHQ7XG4gICAgICB0cnkge1xuICAgICAgICBmbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoaGVhZCkgbm90aWZ5KCk7XG4gICAgICAgIGVsc2UgbGFzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LmVudGVyKCk7XG4gIH07XG5cbiAgLy8gTm9kZS5qc1xuICBpZiAoaXNOb2RlKSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XG4gICAgfTtcbiAgLy8gYnJvd3NlcnMgd2l0aCBNdXRhdGlvbk9ic2VydmVyLCBleGNlcHQgaU9TIFNhZmFyaSAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMzlcbiAgfSBlbHNlIGlmIChPYnNlcnZlciAmJiAhKGdsb2JhbC5uYXZpZ2F0b3IgJiYgZ2xvYmFsLm5hdmlnYXRvci5zdGFuZGFsb25lKSkge1xuICAgIHZhciB0b2dnbGUgPSB0cnVlO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG5ldyBPYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7IGNoYXJhY3RlckRhdGE6IHRydWUgfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYgKFByb21pc2UgJiYgUHJvbWlzZS5yZXNvbHZlKSB7XG4gICAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9taXNlLnRoZW4oZmx1c2gpO1xuICAgIH07XG4gIC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XG4gIC8vIC0gc2V0SW1tZWRpYXRlXG4gIC8vIC0gTWVzc2FnZUNoYW5uZWxcbiAgLy8gLSB3aW5kb3cucG9zdE1lc3NhZ1xuICAvLyAtIG9ucmVhZHlzdGF0ZWNoYW5nZVxuICAvLyAtIHNldFRpbWVvdXRcbiAgfSBlbHNlIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBzdHJhbmdlIElFICsgd2VicGFjayBkZXYgc2VydmVyIGJ1ZyAtIHVzZSAuY2FsbChnbG9iYWwpXG4gICAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChmbikge1xuICAgIHZhciB0YXNrID0geyBmbjogZm4sIG5leHQ6IHVuZGVmaW5lZCB9O1xuICAgIGlmIChsYXN0KSBsYXN0Lm5leHQgPSB0YXNrO1xuICAgIGlmICghaGVhZCkge1xuICAgICAgaGVhZCA9IHRhc2s7XG4gICAgICBub3RpZnkoKTtcbiAgICB9IGxhc3QgPSB0YXNrO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19taWNyb3Rhc2suanNcbi8vIG1vZHVsZSBpZCA9IDgwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///80\n")},function(module,exports,__webpack_require__){eval("var hide = __webpack_require__(8);\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcz9jNDdmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGlmIChzYWZlICYmIHRhcmdldFtrZXldKSB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgIGVsc2UgaGlkZSh0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9IHJldHVybiB0YXJnZXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qc1xuLy8gbW9kdWxlIGlkID0gODFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///81\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar dP = __webpack_require__(7);\nvar DESCRIPTORS = __webpack_require__(5);\nvar SPECIES = __webpack_require__(2)('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1zcGVjaWVzLmpzPzZkMWEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgQyA9IHR5cGVvZiBjb3JlW0tFWV0gPT0gJ2Z1bmN0aW9uJyA/IGNvcmVbS0VZXSA6IGdsb2JhbFtLRVldO1xuICBpZiAoREVTQ1JJUFRPUlMgJiYgQyAmJiAhQ1tTUEVDSUVTXSkgZFAuZihDLCBTUEVDSUVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDgyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///82\n")},function(module,exports,__webpack_require__){eval("var ITERATOR = __webpack_require__(2)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzPzc1OGQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTtcbiAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24gKCkgeyBTQUZFX0NMT1NJTkcgPSB0cnVlOyB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7XG4gIGlmICghc2tpcENsb3NpbmcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBbN107XG4gICAgdmFyIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9O1xuICAgIGFycltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBzYWZlO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qc1xuLy8gbW9kdWxlIGlkID0gODNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///83\n")},function(module,exports,__webpack_require__){"use strict";eval("// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar global = __webpack_require__(1);\nvar speciesConstructor = __webpack_require__(50);\nvar promiseResolve = __webpack_require__(53);\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseS5qcz8xMmEwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtZmluYWxseVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1Byb21pc2UnLCB7ICdmaW5hbGx5JzogZnVuY3Rpb24gKG9uRmluYWxseSkge1xuICB2YXIgQyA9IHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBjb3JlLlByb21pc2UgfHwgZ2xvYmFsLlByb21pc2UpO1xuICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBvbkZpbmFsbHkgPT0gJ2Z1bmN0aW9uJztcbiAgcmV0dXJuIHRoaXMudGhlbihcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKHgpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB4OyB9KTtcbiAgICB9IDogb25GaW5hbGx5LFxuICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgdGhyb3cgZTsgfSk7XG4gICAgfSA6IG9uRmluYWxseVxuICApO1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHkuanNcbi8vIG1vZHVsZSBpZCA9IDg0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///84\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(3);\nvar newPromiseCapability = __webpack_require__(32);\nvar perform = __webpack_require__(52);\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzPzhjYTUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS10cnlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4vX3BlcmZvcm0nKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdQcm9taXNlJywgeyAndHJ5JzogZnVuY3Rpb24gKGNhbGxiYWNrZm4pIHtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZih0aGlzKTtcbiAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oY2FsbGJhY2tmbik7XG4gIChyZXN1bHQuZSA/IHByb21pc2VDYXBhYmlsaXR5LnJlamVjdCA6IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmUpKHJlc3VsdC52KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzXG4vLyBtb2R1bGUgaWQgPSA4NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///85\n")},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n "use strict";\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof module === \'object\' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n "use strict";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = "undefined";\n\n var logMethods = [\n "trace",\n "debug",\n "info",\n "warn",\n "error"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === \'function\') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === \'debug\') {\n methodName = \'log\';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, \'log\');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn\'t present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = "loglevel";\n if (name) {\n storageKey += ":" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || \'silent\').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + "=" + levelName + ";";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + "=");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { "TRACE": 0, "DEBUG": 1, "INFO": 2, "WARN": 3,\n "ERROR": 4, "SILENT": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return "No console available for logging";\n }\n } else {\n throw "log.setLevel() called with invalid level: " + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? "WARN" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== "string" || name === "") {\n throw new TypeError("You must supply a name when creating a logger.");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9nbGV2ZWwvbGliL2xvZ2xldmVsLmpzPzA2ZmMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiogbG9nbGV2ZWwgLSBodHRwczovL2dpdGh1Yi5jb20vcGltdGVycnkvbG9nbGV2ZWxcbipcbiogQ29weXJpZ2h0IChjKSAyMDEzIFRpbSBQZXJyeVxuKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4qL1xuKGZ1bmN0aW9uIChyb290LCBkZWZpbml0aW9uKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgICBkZWZpbmUoZGVmaW5pdGlvbik7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGRlZmluaXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByb290LmxvZyA9IGRlZmluaXRpb24oKTtcbiAgICB9XG59KHRoaXMsIGZ1bmN0aW9uICgpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIC8vIFNsaWdodGx5IGR1YmlvdXMgdHJpY2tzIHRvIGN1dCBkb3duIG1pbmltaXplZCBmaWxlIHNpemVcbiAgICB2YXIgbm9vcCA9IGZ1bmN0aW9uKCkge307XG4gICAgdmFyIHVuZGVmaW5lZFR5cGUgPSBcInVuZGVmaW5lZFwiO1xuXG4gICAgdmFyIGxvZ01ldGhvZHMgPSBbXG4gICAgICAgIFwidHJhY2VcIixcbiAgICAgICAgXCJkZWJ1Z1wiLFxuICAgICAgICBcImluZm9cIixcbiAgICAgICAgXCJ3YXJuXCIsXG4gICAgICAgIFwiZXJyb3JcIlxuICAgIF07XG5cbiAgICAvLyBDcm9zcy1icm93c2VyIGJpbmQgZXF1aXZhbGVudCB0aGF0IHdvcmtzIGF0IGxlYXN0IGJhY2sgdG8gSUU2XG4gICAgZnVuY3Rpb24gYmluZE1ldGhvZChvYmosIG1ldGhvZE5hbWUpIHtcbiAgICAgICAgdmFyIG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTtcbiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QuYmluZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIG1ldGhvZC5iaW5kKG9iaik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5jYWxsKG1ldGhvZCwgb2JqKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBNaXNzaW5nIGJpbmQgc2hpbSBvciBJRTggKyBNb2Rlcm5penIsIGZhbGxiYWNrIHRvIHdyYXBwaW5nXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmFwcGx5KG1ldGhvZCwgW29iaiwgYXJndW1lbnRzXSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJ1aWxkIHRoZSBiZXN0IGxvZ2dpbmcgbWV0aG9kIHBvc3NpYmxlIGZvciB0aGlzIGVudlxuICAgIC8vIFdoZXJldmVyIHBvc3NpYmxlIHdlIHdhbnQgdG8gYmluZCwgbm90IHdyYXAsIHRvIHByZXNlcnZlIHN0YWNrIHRyYWNlc1xuICAgIGZ1bmN0aW9uIHJlYWxNZXRob2QobWV0aG9kTmFtZSkge1xuICAgICAgICBpZiAobWV0aG9kTmFtZSA9PT0gJ2RlYnVnJykge1xuICAgICAgICAgICAgbWV0aG9kTmFtZSA9ICdsb2cnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE5vIG1ldGhvZCBwb3NzaWJsZSwgZm9yIG5vdyAtIGZpeGVkIGxhdGVyIGJ5IGVuYWJsZUxvZ2dpbmdXaGVuQ29uc29sZUFycml2ZXNcbiAgICAgICAgfSBlbHNlIGlmIChjb25zb2xlW21ldGhvZE5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBiaW5kTWV0aG9kKGNvbnNvbGUsIG1ldGhvZE5hbWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnNvbGUubG9nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBiaW5kTWV0aG9kKGNvbnNvbGUsICdsb2cnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBub29wO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlc2UgcHJpdmF0ZSBmdW5jdGlvbnMgYWx3YXlzIG5lZWQgYHRoaXNgIHRvIGJlIHNldCBwcm9wZXJseVxuXG4gICAgZnVuY3Rpb24gcmVwbGFjZUxvZ2dpbmdNZXRob2RzKGxldmVsLCBsb2dnZXJOYW1lKSB7XG4gICAgICAgIC8qanNoaW50IHZhbGlkdGhpczp0cnVlICovXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbG9nTWV0aG9kcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIG1ldGhvZE5hbWUgPSBsb2dNZXRob2RzW2ldO1xuICAgICAgICAgICAgdGhpc1ttZXRob2ROYW1lXSA9IChpIDwgbGV2ZWwpID9cbiAgICAgICAgICAgICAgICBub29wIDpcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZEZhY3RvcnkobWV0aG9kTmFtZSwgbGV2ZWwsIGxvZ2dlck5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmaW5lIGxvZy5sb2cgYXMgYW4gYWxpYXMgZm9yIGxvZy5kZWJ1Z1xuICAgICAgICB0aGlzLmxvZyA9IHRoaXMuZGVidWc7XG4gICAgfVxuXG4gICAgLy8gSW4gb2xkIElFIHZlcnNpb25zLCB0aGUgY29uc29sZSBpc24ndCBwcmVzZW50IHVudGlsIHlvdSBmaXJzdCBvcGVuIGl0LlxuICAgIC8vIFdlIGJ1aWxkIHJlYWxNZXRob2QoKSByZXBsYWNlbWVudHMgaGVyZSB0aGF0IHJlZ2VuZXJhdGUgbG9nZ2luZyBtZXRob2RzXG4gICAgZnVuY3Rpb24gZW5hYmxlTG9nZ2luZ1doZW5Db25zb2xlQXJyaXZlcyhtZXRob2ROYW1lLCBsZXZlbCwgbG9nZ2VyTmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICAgICAgcmVwbGFjZUxvZ2dpbmdNZXRob2RzLmNhbGwodGhpcywgbGV2ZWwsIGxvZ2dlck5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXNbbWV0aG9kTmFtZV0uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCeSBkZWZhdWx0LCB3ZSB1c2UgY2xvc2VseSBib3VuZCByZWFsIG1ldGhvZHMgd2hlcmV2ZXIgcG9zc2libGUsIGFuZFxuICAgIC8vIG90aGVyd2lzZSB3ZSB3YWl0IGZvciBhIGNvbnNvbGUgdG8gYXBwZWFyLCBhbmQgdGhlbiB0cnkgYWdhaW4uXG4gICAgZnVuY3Rpb24gZGVmYXVsdE1ldGhvZEZhY3RvcnkobWV0aG9kTmFtZSwgbGV2ZWwsIGxvZ2dlck5hbWUpIHtcbiAgICAgICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cbiAgICAgICAgcmV0dXJuIHJlYWxNZXRob2QobWV0aG9kTmFtZSkgfHxcbiAgICAgICAgICAgICAgIGVuYWJsZUxvZ2dpbmdXaGVuQ29uc29sZUFycml2ZXMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBMb2dnZXIobmFtZSwgZGVmYXVsdExldmVsLCBmYWN0b3J5KSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgY3VycmVudExldmVsO1xuICAgICAgdmFyIHN0b3JhZ2VLZXkgPSBcImxvZ2xldmVsXCI7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICBzdG9yYWdlS2V5ICs9IFwiOlwiICsgbmFtZTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcGVyc2lzdExldmVsSWZQb3NzaWJsZShsZXZlbE51bSkge1xuICAgICAgICAgIHZhciBsZXZlbE5hbWUgPSAobG9nTWV0aG9kc1tsZXZlbE51bV0gfHwgJ3NpbGVudCcpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gdW5kZWZpbmVkVHlwZSkgcmV0dXJuO1xuXG4gICAgICAgICAgLy8gVXNlIGxvY2FsU3RvcmFnZSBpZiBhdmFpbGFibGVcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlW3N0b3JhZ2VLZXldID0gbGV2ZWxOYW1lO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuXG4gICAgICAgICAgLy8gVXNlIHNlc3Npb24gY29va2llIGFzIGZhbGxiYWNrXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgd2luZG93LmRvY3VtZW50LmNvb2tpZSA9XG4gICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHN0b3JhZ2VLZXkpICsgXCI9XCIgKyBsZXZlbE5hbWUgKyBcIjtcIjtcbiAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGdldFBlcnNpc3RlZExldmVsKCkge1xuICAgICAgICAgIHZhciBzdG9yZWRMZXZlbDtcblxuICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSB1bmRlZmluZWRUeXBlKSByZXR1cm47XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBzdG9yZWRMZXZlbCA9IHdpbmRvdy5sb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV07XG4gICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuXG4gICAgICAgICAgLy8gRmFsbGJhY2sgdG8gY29va2llcyBpZiBsb2NhbCBzdG9yYWdlIGdpdmVzIHVzIG5vdGhpbmdcbiAgICAgICAgICBpZiAodHlwZW9mIHN0b3JlZExldmVsID09PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICB2YXIgY29va2llID0gd2luZG93LmRvY3VtZW50LmNvb2tpZTtcbiAgICAgICAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IGNvb2tpZS5pbmRleE9mKFxuICAgICAgICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzdG9yYWdlS2V5KSArIFwiPVwiKTtcbiAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbiAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yZWRMZXZlbCA9IC9eKFteO10rKS8uZXhlYyhjb29raWUuc2xpY2UobG9jYXRpb24pKVsxXTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHRoZSBzdG9yZWQgbGV2ZWwgaXMgbm90IHZhbGlkLCB0cmVhdCBpdCBhcyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG4gICAgICAgICAgaWYgKHNlbGYubGV2ZWxzW3N0b3JlZExldmVsXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHN0b3JlZExldmVsID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBzdG9yZWRMZXZlbDtcbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgICAqXG4gICAgICAgKiBQdWJsaWMgbG9nZ2VyIEFQSSAtIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGltdGVycnkvbG9nbGV2ZWwgZm9yIGRldGFpbHNcbiAgICAgICAqXG4gICAgICAgKi9cblxuICAgICAgc2VsZi5uYW1lID0gbmFtZTtcblxuICAgICAgc2VsZi5sZXZlbHMgPSB7IFwiVFJBQ0VcIjogMCwgXCJERUJVR1wiOiAxLCBcIklORk9cIjogMiwgXCJXQVJOXCI6IDMsXG4gICAgICAgICAgXCJFUlJPUlwiOiA0LCBcIlNJTEVOVFwiOiA1fTtcblxuICAgICAgc2VsZi5tZXRob2RGYWN0b3J5ID0gZmFjdG9yeSB8fCBkZWZhdWx0TWV0aG9kRmFjdG9yeTtcblxuICAgICAgc2VsZi5nZXRMZXZlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gY3VycmVudExldmVsO1xuICAgICAgfTtcblxuICAgICAgc2VsZi5zZXRMZXZlbCA9IGZ1bmN0aW9uIChsZXZlbCwgcGVyc2lzdCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09IFwic3RyaW5nXCIgJiYgc2VsZi5sZXZlbHNbbGV2ZWwudG9VcHBlckNhc2UoKV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsZXZlbCA9IHNlbGYubGV2ZWxzW2xldmVsLnRvVXBwZXJDYXNlKCldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIGxldmVsID09PSBcIm51bWJlclwiICYmIGxldmVsID49IDAgJiYgbGV2ZWwgPD0gc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRMZXZlbCA9IGxldmVsO1xuICAgICAgICAgICAgICBpZiAocGVyc2lzdCAhPT0gZmFsc2UpIHsgIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICAgICAgICAgICAgICAgIHBlcnNpc3RMZXZlbElmUG9zc2libGUobGV2ZWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlcGxhY2VMb2dnaW5nTWV0aG9kcy5jYWxsKHNlbGYsIGxldmVsLCBuYW1lKTtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSB1bmRlZmluZWRUeXBlICYmIGxldmVsIDwgc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCJObyBjb25zb2xlIGF2YWlsYWJsZSBmb3IgbG9nZ2luZ1wiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhyb3cgXCJsb2cuc2V0TGV2ZWwoKSBjYWxsZWQgd2l0aCBpbnZhbGlkIGxldmVsOiBcIiArIGxldmVsO1xuICAgICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHNlbGYuc2V0RGVmYXVsdExldmVsID0gZnVuY3Rpb24gKGxldmVsKSB7XG4gICAgICAgICAgaWYgKCFnZXRQZXJzaXN0ZWRMZXZlbCgpKSB7XG4gICAgICAgICAgICAgIHNlbGYuc2V0TGV2ZWwobGV2ZWwsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBzZWxmLmVuYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlRSQUNFLCBwZXJzaXN0KTtcbiAgICAgIH07XG5cbiAgICAgIHNlbGYuZGlzYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlNJTEVOVCwgcGVyc2lzdCk7XG4gICAgICB9O1xuXG4gICAgICAvLyBJbml0aWFsaXplIHdpdGggdGhlIHJpZ2h0IGxldmVsXG4gICAgICB2YXIgaW5pdGlhbExldmVsID0gZ2V0UGVyc2lzdGVkTGV2ZWwoKTtcbiAgICAgIGlmIChpbml0aWFsTGV2ZWwgPT0gbnVsbCkge1xuICAgICAgICAgIGluaXRpYWxMZXZlbCA9IGRlZmF1bHRMZXZlbCA9PSBudWxsID8gXCJXQVJOXCIgOiBkZWZhdWx0TGV2ZWw7XG4gICAgICB9XG4gICAgICBzZWxmLnNldExldmVsKGluaXRpYWxMZXZlbCwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICpcbiAgICAgKiBUb3AtbGV2ZWwgQVBJXG4gICAgICpcbiAgICAgKi9cblxuICAgIHZhciBkZWZhdWx0TG9nZ2VyID0gbmV3IExvZ2dlcigpO1xuXG4gICAgdmFyIF9sb2dnZXJzQnlOYW1lID0ge307XG4gICAgZGVmYXVsdExvZ2dlci5nZXRMb2dnZXIgPSBmdW5jdGlvbiBnZXRMb2dnZXIobmFtZSkge1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgIT09IFwic3RyaW5nXCIgfHwgbmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJZb3UgbXVzdCBzdXBwbHkgYSBuYW1lIHdoZW4gY3JlYXRpbmcgYSBsb2dnZXIuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvZ2dlciA9IF9sb2dnZXJzQnlOYW1lW25hbWVdO1xuICAgICAgICBpZiAoIWxvZ2dlcikge1xuICAgICAgICAgIGxvZ2dlciA9IF9sb2dnZXJzQnlOYW1lW25hbWVdID0gbmV3IExvZ2dlcihcbiAgICAgICAgICAgIG5hbWUsIGRlZmF1bHRMb2dnZXIuZ2V0TGV2ZWwoKSwgZGVmYXVsdExvZ2dlci5tZXRob2RGYWN0b3J5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH07XG5cbiAgICAvLyBHcmFiIHRoZSBjdXJyZW50IGdsb2JhbCBsb2cgdmFyaWFibGUgaW4gY2FzZSBvZiBvdmVyd3JpdGVcbiAgICB2YXIgX2xvZyA9ICh0eXBlb2Ygd2luZG93ICE9PSB1bmRlZmluZWRUeXBlKSA/IHdpbmRvdy5sb2cgOiB1bmRlZmluZWQ7XG4gICAgZGVmYXVsdExvZ2dlci5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSB1bmRlZmluZWRUeXBlICYmXG4gICAgICAgICAgICAgICB3aW5kb3cubG9nID09PSBkZWZhdWx0TG9nZ2VyKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9nID0gX2xvZztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWZhdWx0TG9nZ2VyO1xuICAgIH07XG5cbiAgICBkZWZhdWx0TG9nZ2VyLmdldExvZ2dlcnMgPSBmdW5jdGlvbiBnZXRMb2dnZXJzKCkge1xuICAgICAgICByZXR1cm4gX2xvZ2dlcnNCeU5hbWU7XG4gICAgfTtcblxuICAgIHJldHVybiBkZWZhdWx0TG9nZ2VyO1xufSkpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvbG9nbGV2ZWwvbGliL2xvZ2xldmVsLmpzXG4vLyBtb2R1bGUgaWQgPSA4NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///86\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(88);\nmodule.exports = __webpack_require__(0).Object.getPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzdkMmUiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///87\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(30);\nvar $getPrototypeOf = __webpack_require__(47);\n\n__webpack_require__(39)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzPzJhMWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjkgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciAkZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnZ2V0UHJvdG90eXBlT2YnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZihpdCkge1xuICAgIHJldHVybiAkZ2V0UHJvdG90eXBlT2YodG9PYmplY3QoaXQpKTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA4OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///88\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(90), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvci5qcz82NzM4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA4OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///89\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(43);\n__webpack_require__(48);\nmodule.exports = __webpack_require__(33).f('iterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qcz9mZTdlIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX3drcy1leHQnKS5mKCdpdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gOTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///90\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(92), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC5qcz9lNTA1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2xcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA5MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///91\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(93);\n__webpack_require__(42);\n__webpack_require__(98);\n__webpack_require__(99);\nmodule.exports = __webpack_require__(0).Symbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qcz8wNzA3Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN5bWJvbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuU3ltYm9sO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gOTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///92\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(1);\nvar has = __webpack_require__(9);\nvar DESCRIPTORS = __webpack_require__(5);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(45);\nvar META = __webpack_require__(94).KEY;\nvar $fails = __webpack_require__(13);\nvar shared = __webpack_require__(28);\nvar setToStringTag = __webpack_require__(24);\nvar uid = __webpack_require__(19);\nvar wks = __webpack_require__(2);\nvar wksExt = __webpack_require__(33);\nvar wksDefine = __webpack_require__(34);\nvar enumKeys = __webpack_require__(95);\nvar isArray = __webpack_require__(96);\nvar anObject = __webpack_require__(4);\nvar isObject = __webpack_require__(6);\nvar toIObject = __webpack_require__(10);\nvar toPrimitive = __webpack_require__(26);\nvar createDesc = __webpack_require__(18);\nvar _create = __webpack_require__(31);\nvar gOPNExt = __webpack_require__(97);\nvar $GOPD = __webpack_require__(40);\nvar $DP = __webpack_require__(7);\nvar $keys = __webpack_require__(20);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(56).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(35).f = $propertyIsEnumerable;\n __webpack_require__(55).f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(23)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(8)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qcz83ZDY3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBNRVRBID0gcmVxdWlyZSgnLi9fbWV0YScpLktFWTtcbnZhciAkZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgd2tzRGVmaW5lID0gcmVxdWlyZSgnLi9fd2tzLWRlZmluZScpO1xudmFyIGVudW1LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1rZXlzJyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgX2NyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBnT1BORXh0ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4tZXh0Jyk7XG52YXIgJEdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyICREUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BEID0gJEdPUEQuZjtcbnZhciBkUCA9ICREUC5mO1xudmFyIGdPUE4gPSBnT1BORXh0LmY7XG52YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgJEpTT04gPSBnbG9iYWwuSlNPTjtcbnZhciBfc3RyaW5naWZ5ID0gJEpTT04gJiYgJEpTT04uc3RyaW5naWZ5O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEhJRERFTiA9IHdrcygnX2hpZGRlbicpO1xudmFyIFRPX1BSSU1JVElWRSA9IHdrcygndG9QcmltaXRpdmUnKTtcbnZhciBpc0VudW0gPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBTeW1ib2xSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXJlZ2lzdHJ5Jyk7XG52YXIgQWxsU3ltYm9scyA9IHNoYXJlZCgnc3ltYm9scycpO1xudmFyIE9QU3ltYm9scyA9IHNoYXJlZCgnb3Atc3ltYm9scycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0W1BST1RPVFlQRV07XG52YXIgVVNFX05BVElWRSA9IHR5cGVvZiAkU3ltYm9sID09ICdmdW5jdGlvbic7XG52YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0O1xuLy8gRG9uJ3QgdXNlIHNldHRlcnMgaW4gUXQgU2NyaXB0LCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTczXG52YXIgc2V0dGVyID0gIVFPYmplY3QgfHwgIVFPYmplY3RbUFJPVE9UWVBFXSB8fCAhUU9iamVjdFtQUk9UT1RZUEVdLmZpbmRDaGlsZDtcblxuLy8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG52YXIgc2V0U3ltYm9sRGVzYyA9IERFU0NSSVBUT1JTICYmICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRQKHRoaXMsICdhJywgeyB2YWx1ZTogNyB9KS5hOyB9XG4gIH0pKS5hICE9IDc7XG59KSA/IGZ1bmN0aW9uIChpdCwga2V5LCBEKSB7XG4gIHZhciBwcm90b0Rlc2MgPSBnT1BEKE9iamVjdFByb3RvLCBrZXkpO1xuICBpZiAocHJvdG9EZXNjKSBkZWxldGUgT2JqZWN0UHJvdG9ba2V5XTtcbiAgZFAoaXQsIGtleSwgRCk7XG4gIGlmIChwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKSBkUChPYmplY3RQcm90bywga2V5LCBwcm90b0Rlc2MpO1xufSA6IGRQO1xuXG52YXIgd3JhcCA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbFtQUk9UT1RZUEVdKTtcbiAgc3ltLl9rID0gdGFnO1xuICByZXR1cm4gc3ltO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX05BVElWRSAmJiB0eXBlb2YgJFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJyA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgaW5zdGFuY2VvZiAkU3ltYm9sO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIEQpIHtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90bykgJGRlZmluZVByb3BlcnR5KE9QU3ltYm9scywga2V5LCBEKTtcbiAgYW5PYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBhbk9iamVjdChEKTtcbiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7XG4gICAgaWYgKCFELmVudW1lcmFibGUpIHtcbiAgICAgIGlmICghaGFzKGl0LCBISURERU4pKSBkUChpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG4gICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkgaXRbSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBEID0gX2NyZWF0ZShELCB7IGVudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpIH0pO1xuICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG4gIH0gcmV0dXJuIGRQKGl0LCBrZXksIEQpO1xufTtcbnZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoaXQsIFApIHtcbiAgYW5PYmplY3QoaXQpO1xuICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpO1xuICB2YXIgaSA9IDA7XG4gIHZhciBsID0ga2V5cy5sZW5ndGg7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsID4gaSkgJGRlZmluZVByb3BlcnR5KGl0LCBrZXkgPSBrZXlzW2krK10sIFBba2V5XSk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpdCwgUCkge1xuICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG59O1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSkge1xuICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpO1xuICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XSA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHtcbiAgaXQgPSB0b0lPYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm47XG4gIHZhciBEID0gZ09QRChpdCwga2V5KTtcbiAgaWYgKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSkgRC5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgcmV0dXJuIEQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICB2YXIgbmFtZXMgPSBnT1BOKHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoIWhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiBrZXkgIT0gSElEREVOICYmIGtleSAhPSBNRVRBKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgdmFyIElTX09QID0gaXQgPT09IE9iamVjdFByb3RvO1xuICB2YXIgbmFtZXMgPSBnT1BOKElTX09QID8gT1BTeW1ib2xzIDogdG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYgKElTX09QID8gaGFzKE9iamVjdFByb3RvLCBrZXkpIDogdHJ1ZSkpIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIDE5LjQuMS4xIFN5bWJvbChbZGVzY3JpcHRpb25dKVxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKSB7XG4gICAgaWYgKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKSB0aHJvdyBUeXBlRXJyb3IoJ1N5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciEnKTtcbiAgICB2YXIgdGFnID0gdWlkKGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcbiAgICB2YXIgJHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvKSAkc2V0LmNhbGwoT1BTeW1ib2xzLCB2YWx1ZSk7XG4gICAgICBpZiAoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSkgdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcbiAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG4gICAgfTtcbiAgICBpZiAoREVTQ1JJUFRPUlMgJiYgc2V0dGVyKSBzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6ICRzZXQgfSk7XG4gICAgcmV0dXJuIHdyYXAodGFnKTtcbiAgfTtcbiAgcmVkZWZpbmUoJFN5bWJvbFtQUk9UT1RZUEVdLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faztcbiAgfSk7XG5cbiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICREUC5mID0gJGRlZmluZVByb3BlcnR5O1xuICByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmYgPSBnT1BORXh0LmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpLmYgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJykuZiA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbiAgaWYgKERFU0NSSVBUT1JTICYmICFyZXF1aXJlKCcuL19saWJyYXJ5JykpIHtcbiAgICByZWRlZmluZShPYmplY3RQcm90bywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB0cnVlKTtcbiAgfVxuXG4gIHdrc0V4dC5mID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gd3JhcCh3a3MobmFtZSkpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFN5bWJvbDogJFN5bWJvbCB9KTtcblxuZm9yICh2YXIgZXM2U3ltYm9scyA9IChcbiAgLy8gMTkuNC4yLjIsIDE5LjQuMi4zLCAxOS40LjIuNCwgMTkuNC4yLjYsIDE5LjQuMi44LCAxOS40LjIuOSwgMTkuNC4yLjEwLCAxOS40LjIuMTEsIDE5LjQuMi4xMiwgMTkuNC4yLjEzLCAxOS40LjIuMTRcbiAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJ1xuKS5zcGxpdCgnLCcpLCBqID0gMDsgZXM2U3ltYm9scy5sZW5ndGggPiBqOyl3a3MoZXM2U3ltYm9sc1tqKytdKTtcblxuZm9yICh2YXIgd2VsbEtub3duU3ltYm9scyA9ICRrZXlzKHdrcy5zdG9yZSksIGsgPSAwOyB3ZWxsS25vd25TeW1ib2xzLmxlbmd0aCA+IGs7KSB3a3NEZWZpbmUod2VsbEtub3duU3ltYm9sc1trKytdKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ1N5bWJvbCcsIHtcbiAgLy8gMTkuNC4yLjEgU3ltYm9sLmZvcihrZXkpXG4gICdmb3InOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGhhcyhTeW1ib2xSZWdpc3RyeSwga2V5ICs9ICcnKVxuICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG4gICAgICA6IFN5bWJvbFJlZ2lzdHJ5W2tleV0gPSAkU3ltYm9sKGtleSk7XG4gIH0sXG4gIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihzeW0pIHtcbiAgICBpZiAoIWlzU3ltYm9sKHN5bSkpIHRocm93IFR5cGVFcnJvcihzeW0gKyAnIGlzIG5vdCBhIHN5bWJvbCEnKTtcbiAgICBmb3IgKHZhciBrZXkgaW4gU3ltYm9sUmVnaXN0cnkpIGlmIChTeW1ib2xSZWdpc3RyeVtrZXldID09PSBzeW0pIHJldHVybiBrZXk7XG4gIH0sXG4gIHVzZVNldHRlcjogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSB0cnVlOyB9LFxuICB1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gZmFsc2U7IH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0Jywge1xuICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4gIGNyZWF0ZTogJGNyZWF0ZSxcbiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4gIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG4gIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG4gIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgUyA9ICRTeW1ib2woKTtcbiAgLy8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge31cbiAgLy8gV2ViS2l0IGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyBudWxsXG4gIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gIHJldHVybiBfc3RyaW5naWZ5KFtTXSkgIT0gJ1tudWxsXScgfHwgX3N0cmluZ2lmeSh7IGE6IFMgfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9Jztcbn0pKSwgJ0pTT04nLCB7XG4gIHN0cmluZ2lmeTogZnVuY3Rpb24gc3RyaW5naWZ5KGl0KSB7XG4gICAgdmFyIGFyZ3MgPSBbaXRdO1xuICAgIHZhciBpID0gMTtcbiAgICB2YXIgcmVwbGFjZXIsICRyZXBsYWNlcjtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgJHJlcGxhY2VyID0gcmVwbGFjZXIgPSBhcmdzWzFdO1xuICAgIGlmICghaXNPYmplY3QocmVwbGFjZXIpICYmIGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKSByZXR1cm47IC8vIElFOCByZXR1cm5zIHN0cmluZyBvbiB1bmRlZmluZWRcbiAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mICRyZXBsYWNlciA9PSAnZnVuY3Rpb24nKSB2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgaWYgKCFpc1N5bWJvbCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIGFyZ3NbMV0gPSByZXBsYWNlcjtcbiAgICByZXR1cm4gX3N0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJncyk7XG4gIH1cbn0pO1xuXG4vLyAxOS40LjMuNCBTeW1ib2wucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdKGhpbnQpXG4kU3ltYm9sW1BST1RPVFlQRV1bVE9fUFJJTUlUSVZFXSB8fCByZXF1aXJlKCcuL19oaWRlJykoJFN5bWJvbFtQUk9UT1RZUEVdLCBUT19QUklNSVRJVkUsICRTeW1ib2xbUFJPVE9UWVBFXS52YWx1ZU9mKTtcbi8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcbi8vIDIwLjIuMS45IE1hdGhbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7XG4vLyAyNC4zLjMgSlNPTltAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoZ2xvYmFsLkpTT04sICdKU09OJywgdHJ1ZSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA5M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///93\n")},function(module,exports,__webpack_require__){eval("var META = __webpack_require__(19)('meta');\nvar isObject = __webpack_require__(6);\nvar has = __webpack_require__(9);\nvar setDesc = __webpack_require__(7).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(13)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanM/ZDNhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTUVUQSA9IHJlcXVpcmUoJy4vX3VpZCcpKCdtZXRhJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBzZXREZXNjID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBpZCA9IDA7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBGUkVFWkUgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7XG4gIHNldERlc2MoaXQsIE1FVEEsIHsgdmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IH0pO1xufTtcbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuICdFJztcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gb2JqZWN0IElEXG4gIH0gcmV0dXJuIGl0W01FVEFdLmk7XG59O1xudmFyIGdldFdlYWsgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuIHRydWU7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gcmV0dXJuIGl0W01FVEFdLnc7XG59O1xuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaRSAmJiBtZXRhLk5FRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzKGl0LCBNRVRBKSkgc2V0TWV0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgbWV0YSA9IG1vZHVsZS5leHBvcnRzID0ge1xuICBLRVk6IE1FVEEsXG4gIE5FRUQ6IGZhbHNlLFxuICBmYXN0S2V5OiBmYXN0S2V5LFxuICBnZXRXZWFrOiBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWV0YS5qc1xuLy8gbW9kdWxlIGlkID0gOTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///94\n")},function(module,exports,__webpack_require__){eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(20);\nvar gOPS = __webpack_require__(55);\nvar pIE = __webpack_require__(35);\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0ta2V5cy5qcz81ZGNlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGFsbCBlbnVtZXJhYmxlIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBzeW1ib2xzXG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHJlc3VsdCA9IGdldEtleXMoaXQpO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgaWYgKGdldFN5bWJvbHMpIHtcbiAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpO1xuICAgIHZhciBpc0VudW0gPSBwSUUuZjtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAoc3ltYm9scy5sZW5ndGggPiBpKSBpZiAoaXNFbnVtLmNhbGwoaXQsIGtleSA9IHN5bWJvbHNbaSsrXSkpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSA5NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///95\n")},function(module,exports,__webpack_require__){eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(15);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LmpzP2VkNDMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDk2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///96\n")},function(module,exports,__webpack_require__){eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(10);\nvar gOPN = __webpack_require__(56).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qcz80NmI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG52YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxudmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGdPUE4oaXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHJldHVybiB3aW5kb3dOYW1lcyAmJiB0b1N0cmluZy5jYWxsKGl0KSA9PSAnW29iamVjdCBXaW5kb3ddJyA/IGdldFdpbmRvd05hbWVzKGl0KSA6IGdPUE4odG9JT2JqZWN0KGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qc1xuLy8gbW9kdWxlIGlkID0gOTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///97\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(34)('asyncIterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcz8zOTg5Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnYXN5bmNJdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gOThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///98\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(34)('observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlLmpzPzQxNjciXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdvYnNlcnZhYmxlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUuanNcbi8vIG1vZHVsZSBpZCA9IDk5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///99\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(101), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz85MjIwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gMTAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///100\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(102);\nmodule.exports = __webpack_require__(0).Object.setPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz84YmYwIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Quc2V0UHJvdG90eXBlT2Y7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L3NldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDEwMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///101\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(3);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(103).set });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcz83YjE4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMy4xOSBPYmplY3Quc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IHNldFByb3RvdHlwZU9mOiByZXF1aXJlKCcuL19zZXQtcHJvdG8nKS5zZXQgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDEwMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///102\n")},function(module,exports,__webpack_require__){eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(6);\nvar anObject = __webpack_require__(4);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(14)(Function.call, __webpack_require__(40).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtcHJvdG8uanM/NjVhNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXByb3RvLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///103\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(105), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzPzNhZjQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGVcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2NyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///104\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(106);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlLmpzP2EwY2UiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGUoUCwgRCkge1xuICByZXR1cm4gJE9iamVjdC5jcmVhdGUoUCwgRCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///105\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(3);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(31) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlLmpzP2IwNWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IGNyZWF0ZTogcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///106\n")},,,,,,,,,function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(63);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(64);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(65);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Bus2 = __webpack_require__(116);\n\nvar _Bus3 = _interopRequireDefault(_Bus2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* @author micaelpedrosa@gmail.com\r\n* Message BUS Interface is an extension of the Bus\r\n* It is used mainly in the internal sandbox routing.\r\n*/\nvar MiniBus = function (_Bus) {\n (0, _inherits3.default)(MiniBus, _Bus);\n\n function MiniBus() {\n (0, _classCallCheck3.default)(this, MiniBus);\n return (0, _possibleConstructorReturn3.default)(this, (MiniBus.__proto__ || (0, _getPrototypeOf2.default)(MiniBus)).call(this));\n }\n\n /**\r\n * Post a message for routing. Message is routed directly to the external routing _onPostMessage.\r\n * @param {Message} inMsg JSON with mandatory Message structure {id, type, from, to}\r\n * @param {Callback} responseCallback Optional callback if a response is expected from the request. A response will be always sent, even if it is a \"Timeout\".\r\n * @return {number} the Message id\r\n */\n\n\n (0, _createClass3.default)(MiniBus, [{\n key: 'postMessage',\n value: function postMessage(inMsg, responseCallback, timeout) {\n var _this = this;\n\n _this._genId(inMsg);\n _this._responseCallback(inMsg, responseCallback, timeout);\n\n //always send to external (to core MessageBus)\n _this._onPostMessage(inMsg);\n\n return inMsg.id;\n }\n\n //internal method used when a message is received by an external routing system\n\n }, {\n key: '_onMessage',\n value: function _onMessage(msg) {\n var _this = this;\n\n if (!_this._onResponse(msg)) {\n var itemList = _this._subscriptions[msg.to];\n if (itemList) {\n _this._publishOn(itemList, msg);\n if (!msg.to.startsWith('hyperty')) {\n _this._publishOnDefault(msg);\n }\n } else {\n _this._publishOnDefault(msg);\n }\n }\n }\n }]);\n return MiniBus;\n}(_Bus3.default); /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\n\nexports.default = MiniBus;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvTWluaUJ1cy5qcz9lNTIwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuaW1wb3J0IEJ1cyBmcm9tICcuL0J1cyc7XHJcblxyXG4vKipcclxuKiBAYXV0aG9yIG1pY2FlbHBlZHJvc2FAZ21haWwuY29tXHJcbiogTWVzc2FnZSBCVVMgSW50ZXJmYWNlIGlzIGFuIGV4dGVuc2lvbiBvZiB0aGUgQnVzXHJcbiogSXQgaXMgdXNlZCBtYWlubHkgaW4gdGhlIGludGVybmFsIHNhbmRib3ggcm91dGluZy5cclxuKi9cclxuY2xhc3MgTWluaUJ1cyBleHRlbmRzIEJ1cyB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvc3QgYSBtZXNzYWdlIGZvciByb3V0aW5nLiBNZXNzYWdlIGlzIHJvdXRlZCBkaXJlY3RseSB0byB0aGUgZXh0ZXJuYWwgcm91dGluZyBfb25Qb3N0TWVzc2FnZS5cclxuICAgKiBAcGFyYW0gIHtNZXNzYWdlfSBpbk1zZyAgICAgICAgICAgIEpTT04gd2l0aCBtYW5kYXRvcnkgTWVzc2FnZSBzdHJ1Y3R1cmUge2lkLCB0eXBlLCBmcm9tLCB0b31cclxuICAgKiBAcGFyYW0gIHtDYWxsYmFja30gcmVzcG9uc2VDYWxsYmFjayBPcHRpb25hbCBjYWxsYmFjayBpZiBhIHJlc3BvbnNlIGlzIGV4cGVjdGVkIGZyb20gdGhlIHJlcXVlc3QuIEEgcmVzcG9uc2Ugd2lsbCBiZSBhbHdheXMgc2VudCwgZXZlbiBpZiBpdCBpcyBhIFwiVGltZW91dFwiLlxyXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgICAgICAgICAgICB0aGUgTWVzc2FnZSBpZFxyXG4gICAqL1xyXG4gIHBvc3RNZXNzYWdlKGluTXNnLCByZXNwb25zZUNhbGxiYWNrLCB0aW1lb3V0KSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIF90aGlzLl9nZW5JZChpbk1zZyk7XHJcbiAgICBfdGhpcy5fcmVzcG9uc2VDYWxsYmFjayhpbk1zZywgcmVzcG9uc2VDYWxsYmFjaywgdGltZW91dCk7XHJcblxyXG4gICAgLy9hbHdheXMgc2VuZCB0byBleHRlcm5hbCAodG8gY29yZSBNZXNzYWdlQnVzKVxyXG4gICAgX3RoaXMuX29uUG9zdE1lc3NhZ2UoaW5Nc2cpO1xyXG5cclxuICAgIHJldHVybiBpbk1zZy5pZDtcclxuICB9XHJcblxyXG4gIC8vaW50ZXJuYWwgbWV0aG9kIHVzZWQgd2hlbiBhIG1lc3NhZ2UgaXMgcmVjZWl2ZWQgYnkgYW4gZXh0ZXJuYWwgcm91dGluZyBzeXN0ZW1cclxuICBfb25NZXNzYWdlKG1zZykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBpZiAoIV90aGlzLl9vblJlc3BvbnNlKG1zZykpIHtcclxuICAgICAgbGV0IGl0ZW1MaXN0ID0gX3RoaXMuX3N1YnNjcmlwdGlvbnNbbXNnLnRvXTtcclxuICAgICAgaWYgKGl0ZW1MaXN0KSB7XHJcbiAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKTtcclxuICAgICAgICBpZiAoIW1zZy50by5zdGFydHNXaXRoKCdoeXBlcnR5JykpIHtcclxuICAgICAgICAgIF90aGlzLl9wdWJsaXNoT25EZWZhdWx0KG1zZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIF90aGlzLl9wdWJsaXNoT25EZWZhdWx0KG1zZyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNaW5pQnVzO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2J1cy9NaW5pQnVzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTtBQUNBOzs7OztBQUNBOzs7OztBQUtBOzs7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQXBFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0VBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///115\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(41);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(86);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('Bus');\n\n/**\r\n* @author micaelpedrosa@gmail.com\r\n* Minimal interface and implementation to send and receive messages. It can be reused in many type of components.\r\n* Components that need a message system should receive this class as a dependency or extend it.\r\n* Extensions should implement the following private methods: _onPostMessage and _registerExternalListener\r\n*/\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n\n// Log system\n\nvar Bus = function () {\n /* private\r\n _msgId: number;\r\n _subscriptions: \r\n _responseTimeOut: number\r\n _responseCallbacks: void>\r\n */\n\n function Bus() {\n (0, _classCallCheck3.default)(this, Bus);\n\n var _this = this;\n _this._msgId = 0;\n _this._subscriptions = {};\n\n _this._responseTimeOut = 15000; //default to 3s\n _this._responseCallbacks = {};\n\n _this._registerExternalListener();\n }\n\n /**\r\n * Register listener to receive message when \"msg.to === url\".\r\n * Special url \"*\" for default listener is accepted to intercept all messages.\r\n * @param {URL} url Address to intercept, tha is in the message \"to\"\r\n * @param {Listener} listener listener\r\n * @return {MsgListener} instance of MsgListener\r\n */\n\n\n (0, _createClass3.default)(Bus, [{\n key: 'addListener',\n value: function addListener(url, listener) {\n var _this = this;\n\n var item = new MsgListener(_this._subscriptions, url, listener);\n var itemList = _this._subscriptions[url];\n if (!itemList) {\n itemList = [];\n _this._subscriptions[url] = itemList;\n }\n\n itemList.push(item);\n return item;\n }\n\n /**\r\n * Manually add a response listener. Only one listener per message ID should exist.\r\n * ATENTION, there is no timeout for this listener.\r\n * The listener should be removed with a removeResponseListener, failing to do this will result in a unreleased memory problem.\r\n * @param {URL} url Origin address of the message sent, \"msg.from\".\r\n * @param {number} msgId Message ID that is returned from the postMessage.\r\n * @param {Function} responseListener Callback function for the response\r\n */\n\n }, {\n key: 'addResponseListener',\n value: function addResponseListener(url, msgId, responseListener) {\n this._responseCallbacks[url + msgId] = responseListener;\n }\n\n /**\r\n * Remove the response listener.\r\n * @param {URL} url Origin address of the message sent, \"msg.from\".\r\n * @param {number} msgId Message ID that is returned from the postMessage\r\n */\n\n }, {\n key: 'removeResponseListener',\n value: function removeResponseListener(url, msgId) {\n delete this._responseCallbacks[url + msgId];\n }\n\n /**\r\n * Remove all existent listeners for the URL\r\n * @param {URL} url Address registered\r\n */\n\n }, {\n key: 'removeAllListenersOf',\n value: function removeAllListenersOf(url) {\n delete this._subscriptions[url];\n }\n\n /**\r\n * Helper method to bind listeners (in both directions) into other MiniBus target.\r\n * @param {URL} outUrl Outbound URL, register listener for url in direction \"this -> target\"\r\n * @param {URL} inUrl Inbound URL, register listener for url in direction \"target -> this\"\r\n * @param {MiniBus} target The other target MiniBus\r\n * @return {Bound} an object that contains the properties [thisListener, targetListener] and the unbind method.\r\n */\n\n }, {\n key: 'bind',\n value: function bind(outUrl, inUrl, target) {\n var _this2 = this;\n\n var _this = this;\n\n var thisListn = _this.addListener(outUrl, function (msg) {\n target.postMessage(msg);\n });\n\n var targetListn = target.addListener(inUrl, function (msg) {\n _this.postMessage(msg);\n });\n\n return {\n thisListener: thisListn,\n targetListener: targetListn,\n unbind: function unbind() {\n _this2.thisListener.remove();\n _this2.targetListener.remove();\n }\n };\n }\n\n //publish on default listeners\n\n }, {\n key: '_publishOnDefault',\n value: function _publishOnDefault(msg) {\n //is there any \"*\" (default) listeners?\n var itemList = this._subscriptions['*'];\n if (itemList) {\n this._publishOn(itemList, msg);\n }\n }\n\n //publish on a subscription list.\n\n }, {\n key: '_publishOn',\n value: function _publishOn(itemList, msg) {\n itemList.forEach(function (sub) {\n sub._callback(msg);\n });\n }\n }, {\n key: '_responseCallback',\n value: function _responseCallback(inMsg, responseCallback) {\n var timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n var _this = this;\n\n //automatic management of response handlers\n if (responseCallback) {\n var responseId = inMsg.from + inMsg.id;\n _this._responseCallbacks[responseId] = responseCallback;\n\n if (timeout) {\n setTimeout(function () {\n var responseFun = _this._responseCallbacks[responseId];\n delete _this._responseCallbacks[responseId];\n\n if (responseFun) {\n var errorMsg = {\n id: inMsg.id, type: 'response',\n body: { code: 408, desc: 'Response timeout!', value: inMsg }\n };\n\n responseFun(errorMsg);\n }\n }, _this._responseTimeOut);\n }\n }\n }\n\n //TODO: provisional responses should reset timeout\n\n }, {\n key: '_onResponse',\n value: function _onResponse(msg) {\n var _this = this;\n\n if (msg.type === 'response') {\n var responseId = msg.to + msg.id;\n var responseFun = _this._responseCallbacks[responseId];\n\n if (msg.body.code >= 200) {\n //if it's a provisional response, don't delete response listener\n delete _this._responseCallbacks[responseId];\n }\n\n if (responseFun) {\n responseFun(msg);\n return true;\n }\n }\n\n return false;\n }\n\n //receive messages from external interface\n\n }, {\n key: '_onMessage',\n value: function _onMessage(msg) {\n var _this = this;\n\n if (!_this._onResponse(msg)) {\n var itemList = _this._subscriptions[msg.to];\n if (itemList) {\n _this._publishOn(itemList, msg);\n } else {\n _this._publishOnDefault(msg);\n }\n }\n }\n }, {\n key: '_genId',\n value: function _genId(inMsg) {\n //TODO: how do we manage message ID's? Should it be a global runtime counter, or per URL address?\n //Global counter will not work, because there will be multiple MiniBus instances!\n //Per URL, can be a lot of data to maintain!\n //Maybe a counter per MiniBus instance. This is the assumed solution for now.\n if (!inMsg.id || inMsg.id === 0) {\n this._msgId++;\n inMsg.id = this._msgId;\n }\n }\n\n /**\r\n * Send messages to local listeners, or if not exists to external listeners.\r\n * It's has an optional mechanism for automatic management of response handlers.\r\n * The response handler will be unregistered after receiving the response, or after response timeout (default to 3s).\r\n * @param {Message} msg Message to send. Message ID is automatically added to the message.\r\n * @param {Function} responseCallback Optional parameter, if the developer what's automatic response management.\r\n * @return {number} Returns the message ID, in case it should be needed for manual management of the response handler.\r\n */\n\n }, {\n key: 'postMessage',\n value: function postMessage(inMsg, responseCallback) {}\n\n /**\r\n * Function to post messages with a number of retries in case timeouts occur.\r\n * @param {Message} msg Message to send. Message ID is automatically added to the message.\r\n * @param {Function} responseCallback Optional parameter, if the developer what's automatic response management.\r\n * @param {integer} retries number of retries when timeouts occur\r\n * @return {boolean} message delivery result;\r\n */\n\n }, {\n key: 'postMessageWithRetries',\n value: function postMessageWithRetries(msg, retries, callback) {\n\n var _this = this;\n\n var retry = 0;\n //let timeout = true;\n\n var sendMsg = function sendMsg() {\n\n return new _promise2.default(function (resolve, reject) {\n _this.postMessage(msg, function (reply) {\n if (reply.body.code === 408 || reply.body.code === 500) reject();else {\n log.info('[Bus.postMessageWithRetries] msg delivered: ', msg);\n callback(reply);\n resolve();\n }\n });\n });\n };\n\n var tryAgain = function tryAgain() {\n sendMsg().then(function () {\n //timeout = false;\n return;\n }, function () {\n log.warn('[Bus.postMessageWithRetries] Message Bounced (retry ' + retry + '): \\'', msg);\n if (retry++ < retries) {\n tryAgain();\n // setTimeout(() => { tryAgain(); }, 1000);\n } else {\n var error = '[Error] Message Bounced (delivery attempts ' + retries + '): \\'';\n throw new Error(error + msg);\n }\n });\n };\n tryAgain();\n }\n\n /**\r\n * Not public available, used by the class extension implementation, to process messages from the public \"postMessage\" without a registered listener.\r\n * Used to send the message to an external interface, like a WebWorker, IFrame, etc.\r\n * @param {Message.Message} msg Message\r\n */\n\n }, {\n key: '_onPostMessage',\n value: function _onPostMessage(msg) {} /*implementation will send message to external system*/\n\n /**\r\n * Not public available, used by the class extension implementation, to process all messages that enter the MiniBus from an external interface, like a WebWorker, IFrame, etc.\r\n * This method is called one time in the constructor to register external listeners.\r\n * The implementation will probably call the \"_onMessage\" method to publish in the local listeners.\r\n * DO NOT call \"postMessage\", there is a danger that the message enters in a cycle!\r\n */\n\n }, {\n key: '_registerExternalListener',\n value: function _registerExternalListener() {/*implementation will register external listener and call \"this._onMessage(msg)\" */}\n }]);\n return Bus;\n}();\n\nvar MsgListener = function () {\n /* private\r\n _subscriptions: ;\r\n _url: string;\r\n _callback: (msg) => void;\r\n */\n\n function MsgListener(subscriptions, url, callback) {\n (0, _classCallCheck3.default)(this, MsgListener);\n\n var _this = this;\n\n _this._subscriptions = subscriptions;\n _this._url = url;\n _this._callback = callback;\n }\n\n (0, _createClass3.default)(MsgListener, [{\n key: 'remove',\n\n\n /**\r\n * Remove this listener from the Bus\r\n */\n value: function remove() {\n var _this = this;\n\n var subs = _this._subscriptions[_this._url];\n if (subs) {\n var index = subs.indexOf(_this);\n subs.splice(index, 1);\n\n //if there are no listeners, remove the subscription entirely.\n if (subs.length === 0) {\n delete _this._subscriptions[_this._url];\n }\n }\n }\n }, {\n key: 'url',\n get: function get() {\n return this._url;\n }\n }]);\n return MsgListener;\n}();\n\nexports.default = Bus;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvQnVzLmpzPzZkMTciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcclxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcclxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxyXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxyXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcclxuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcclxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxyXG4qXHJcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcclxuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbipcclxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4qXHJcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbioqL1xyXG5cclxuLy8gTG9nIHN5c3RlbVxyXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xyXG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignQnVzJyk7XHJcblxyXG4vKipcclxuKiBAYXV0aG9yIG1pY2FlbHBlZHJvc2FAZ21haWwuY29tXHJcbiogTWluaW1hbCBpbnRlcmZhY2UgYW5kIGltcGxlbWVudGF0aW9uIHRvIHNlbmQgYW5kIHJlY2VpdmUgbWVzc2FnZXMuIEl0IGNhbiBiZSByZXVzZWQgaW4gbWFueSB0eXBlIG9mIGNvbXBvbmVudHMuXHJcbiogQ29tcG9uZW50cyB0aGF0IG5lZWQgYSBtZXNzYWdlIHN5c3RlbSBzaG91bGQgcmVjZWl2ZSB0aGlzIGNsYXNzIGFzIGEgZGVwZW5kZW5jeSBvciBleHRlbmQgaXQuXHJcbiogRXh0ZW5zaW9ucyBzaG91bGQgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgcHJpdmF0ZSBtZXRob2RzOiBfb25Qb3N0TWVzc2FnZSBhbmQgX3JlZ2lzdGVyRXh0ZXJuYWxMaXN0ZW5lclxyXG4qL1xyXG5jbGFzcyBCdXMge1xyXG4gIC8qIHByaXZhdGVcclxuICBfbXNnSWQ6IG51bWJlcjtcclxuICBfc3Vic2NyaXB0aW9uczogPHVybDogTXNnTGlzdGVuZXJbXT5cclxuXHJcbiAgX3Jlc3BvbnNlVGltZU91dDogbnVtYmVyXHJcbiAgX3Jlc3BvbnNlQ2FsbGJhY2tzOiA8dXJsK2lkOiAobXNnKSA9PiB2b2lkPlxyXG5cclxuICAqL1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBfdGhpcy5fbXNnSWQgPSAwO1xyXG4gICAgX3RoaXMuX3N1YnNjcmlwdGlvbnMgPSB7fTtcclxuXHJcbiAgICBfdGhpcy5fcmVzcG9uc2VUaW1lT3V0ID0gMTUwMDA7IC8vZGVmYXVsdCB0byAzc1xyXG4gICAgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzID0ge307XHJcblxyXG4gICAgX3RoaXMuX3JlZ2lzdGVyRXh0ZXJuYWxMaXN0ZW5lcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBSZWdpc3RlciBsaXN0ZW5lciB0byByZWNlaXZlIG1lc3NhZ2Ugd2hlbiBcIm1zZy50byA9PT0gdXJsXCIuXHJcbiAgKiBTcGVjaWFsIHVybCBcIipcIiBmb3IgZGVmYXVsdCBsaXN0ZW5lciBpcyBhY2NlcHRlZCB0byBpbnRlcmNlcHQgYWxsIG1lc3NhZ2VzLlxyXG4gICogQHBhcmFtIHtVUkx9IHVybCBBZGRyZXNzIHRvIGludGVyY2VwdCwgdGhhIGlzIGluIHRoZSBtZXNzYWdlIFwidG9cIlxyXG4gICogQHBhcmFtIHtMaXN0ZW5lcn0gbGlzdGVuZXIgbGlzdGVuZXJcclxuICAqIEByZXR1cm4ge01zZ0xpc3RlbmVyfSBpbnN0YW5jZSBvZiBNc2dMaXN0ZW5lclxyXG4gICovXHJcbiAgYWRkTGlzdGVuZXIodXJsLCBsaXN0ZW5lcikge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBsZXQgaXRlbSA9IG5ldyBNc2dMaXN0ZW5lcihfdGhpcy5fc3Vic2NyaXB0aW9ucywgdXJsLCBsaXN0ZW5lcik7XHJcbiAgICBsZXQgaXRlbUxpc3QgPSBfdGhpcy5fc3Vic2NyaXB0aW9uc1t1cmxdO1xyXG4gICAgaWYgKCFpdGVtTGlzdCkge1xyXG4gICAgICBpdGVtTGlzdCA9IFtdO1xyXG4gICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1t1cmxdID0gaXRlbUxpc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgaXRlbUxpc3QucHVzaChpdGVtKTtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFudWFsbHkgYWRkIGEgcmVzcG9uc2UgbGlzdGVuZXIuIE9ubHkgb25lIGxpc3RlbmVyIHBlciBtZXNzYWdlIElEIHNob3VsZCBleGlzdC5cclxuICAgKiBBVEVOVElPTiwgdGhlcmUgaXMgbm8gdGltZW91dCBmb3IgdGhpcyBsaXN0ZW5lci5cclxuICAgKiBUaGUgbGlzdGVuZXIgc2hvdWxkIGJlIHJlbW92ZWQgd2l0aCBhIHJlbW92ZVJlc3BvbnNlTGlzdGVuZXIsIGZhaWxpbmcgdG8gZG8gdGhpcyB3aWxsIHJlc3VsdCBpbiBhIHVucmVsZWFzZWQgbWVtb3J5IHByb2JsZW0uXHJcbiAgICogQHBhcmFtIHtVUkx9IHVybCBPcmlnaW4gYWRkcmVzcyBvZiB0aGUgbWVzc2FnZSBzZW50LCBcIm1zZy5mcm9tXCIuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1zZ0lkIE1lc3NhZ2UgSUQgdGhhdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBwb3N0TWVzc2FnZS5cclxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNwb25zZUxpc3RlbmVyIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgcmVzcG9uc2VcclxuICAgKi9cclxuICBhZGRSZXNwb25zZUxpc3RlbmVyKHVybCwgbXNnSWQsIHJlc3BvbnNlTGlzdGVuZXIpIHtcclxuICAgIHRoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3VybCArIG1zZ0lkXSA9IHJlc3BvbnNlTGlzdGVuZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgdGhlIHJlc3BvbnNlIGxpc3RlbmVyLlxyXG4gICAqIEBwYXJhbSB7VVJMfSB1cmwgT3JpZ2luIGFkZHJlc3Mgb2YgdGhlIG1lc3NhZ2Ugc2VudCwgXCJtc2cuZnJvbVwiLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtc2dJZCAgTWVzc2FnZSBJRCB0aGF0IGlzIHJldHVybmVkIGZyb20gdGhlIHBvc3RNZXNzYWdlXHJcbiAgICovXHJcbiAgcmVtb3ZlUmVzcG9uc2VMaXN0ZW5lcih1cmwsIG1zZ0lkKSB7XHJcbiAgICBkZWxldGUgdGhpcy5fcmVzcG9uc2VDYWxsYmFja3NbdXJsICsgbXNnSWRdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGFsbCBleGlzdGVudCBsaXN0ZW5lcnMgZm9yIHRoZSBVUkxcclxuICAgKiBAcGFyYW0gIHtVUkx9IHVybCBBZGRyZXNzIHJlZ2lzdGVyZWRcclxuICAgKi9cclxuICByZW1vdmVBbGxMaXN0ZW5lcnNPZih1cmwpIHtcclxuICAgIGRlbGV0ZSB0aGlzLl9zdWJzY3JpcHRpb25zW3VybF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGJpbmQgbGlzdGVuZXJzIChpbiBib3RoIGRpcmVjdGlvbnMpIGludG8gb3RoZXIgTWluaUJ1cyB0YXJnZXQuXHJcbiAgICogQHBhcmFtICB7VVJMfSBvdXRVcmwgT3V0Ym91bmQgVVJMLCByZWdpc3RlciBsaXN0ZW5lciBmb3IgdXJsIGluIGRpcmVjdGlvbiBcInRoaXMgLT4gdGFyZ2V0XCJcclxuICAgKiBAcGFyYW0gIHtVUkx9IGluVXJsIEluYm91bmQgVVJMLCByZWdpc3RlciBsaXN0ZW5lciBmb3IgdXJsIGluIGRpcmVjdGlvbiBcInRhcmdldCAtPiB0aGlzXCJcclxuICAgKiBAcGFyYW0gIHtNaW5pQnVzfSB0YXJnZXQgVGhlIG90aGVyIHRhcmdldCBNaW5pQnVzXHJcbiAgICogQHJldHVybiB7Qm91bmR9IGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBwcm9wZXJ0aWVzIFt0aGlzTGlzdGVuZXIsIHRhcmdldExpc3RlbmVyXSBhbmQgdGhlIHVuYmluZCBtZXRob2QuXHJcbiAgICovXHJcbiAgYmluZChvdXRVcmwsIGluVXJsLCB0YXJnZXQpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IHRoaXNMaXN0biA9IF90aGlzLmFkZExpc3RlbmVyKG91dFVybCwgKG1zZykgPT4ge1xyXG4gICAgICB0YXJnZXQucG9zdE1lc3NhZ2UobXNnKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCB0YXJnZXRMaXN0biA9IHRhcmdldC5hZGRMaXN0ZW5lcihpblVybCwgKG1zZykgPT4ge1xyXG4gICAgICBfdGhpcy5wb3N0TWVzc2FnZShtc2cpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGhpc0xpc3RlbmVyOiB0aGlzTGlzdG4sXHJcbiAgICAgIHRhcmdldExpc3RlbmVyOiB0YXJnZXRMaXN0bixcclxuICAgICAgdW5iaW5kOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50aGlzTGlzdGVuZXIucmVtb3ZlKCk7XHJcbiAgICAgICAgdGhpcy50YXJnZXRMaXN0ZW5lci5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vcHVibGlzaCBvbiBkZWZhdWx0IGxpc3RlbmVyc1xyXG4gIF9wdWJsaXNoT25EZWZhdWx0KG1zZykge1xyXG4gICAgLy9pcyB0aGVyZSBhbnkgXCIqXCIgKGRlZmF1bHQpIGxpc3RlbmVycz9cclxuICAgIGxldCBpdGVtTGlzdCA9IHRoaXMuX3N1YnNjcmlwdGlvbnNbJyonXTtcclxuICAgIGlmIChpdGVtTGlzdCkge1xyXG4gICAgICB0aGlzLl9wdWJsaXNoT24oaXRlbUxpc3QsIG1zZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3B1Ymxpc2ggb24gYSBzdWJzY3JpcHRpb24gbGlzdC5cclxuICBfcHVibGlzaE9uKGl0ZW1MaXN0LCBtc2cpIHtcclxuICAgIGl0ZW1MaXN0LmZvckVhY2goKHN1YikgPT4ge1xyXG4gICAgICBzdWIuX2NhbGxiYWNrKG1zZyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIF9yZXNwb25zZUNhbGxiYWNrKGluTXNnLCByZXNwb25zZUNhbGxiYWNrLCB0aW1lb3V0ID0gdHJ1ZSkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICAvL2F1dG9tYXRpYyBtYW5hZ2VtZW50IG9mIHJlc3BvbnNlIGhhbmRsZXJzXHJcbiAgICBpZiAocmVzcG9uc2VDYWxsYmFjaykge1xyXG4gICAgICBsZXQgcmVzcG9uc2VJZCA9IGluTXNnLmZyb20gKyBpbk1zZy5pZDtcclxuICAgICAgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdID0gcmVzcG9uc2VDYWxsYmFjaztcclxuXHJcbiAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgcmVzcG9uc2VGdW4gPSBfdGhpcy5fcmVzcG9uc2VDYWxsYmFja3NbcmVzcG9uc2VJZF07XHJcbiAgICAgICAgICBkZWxldGUgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdO1xyXG5cclxuICAgICAgICAgIGlmIChyZXNwb25zZUZ1bikge1xyXG4gICAgICAgICAgICBsZXQgZXJyb3JNc2cgPSB7XHJcbiAgICAgICAgICAgICAgaWQ6IGluTXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgICAgICAgIGJvZHk6IHsgY29kZTogNDA4LCBkZXNjOiAnUmVzcG9uc2UgdGltZW91dCEnLCB2YWx1ZTogaW5Nc2cgfVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgcmVzcG9uc2VGdW4oZXJyb3JNc2cpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIF90aGlzLl9yZXNwb25zZVRpbWVPdXQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbi8vVE9ETzogcHJvdmlzaW9uYWwgcmVzcG9uc2VzIHNob3VsZCByZXNldCB0aW1lb3V0XHJcbiAgX29uUmVzcG9uc2UobXNnKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGlmIChtc2cudHlwZSA9PT0gJ3Jlc3BvbnNlJykge1xyXG4gICAgICBsZXQgcmVzcG9uc2VJZCA9IG1zZy50byArIG1zZy5pZDtcclxuICAgICAgbGV0IHJlc3BvbnNlRnVuID0gX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdO1xyXG5cclxuICAgICAgaWYgKG1zZy5ib2R5LmNvZGUgPj0gMjAwKSB7IC8vaWYgaXQncyBhIHByb3Zpc2lvbmFsIHJlc3BvbnNlLCBkb24ndCBkZWxldGUgcmVzcG9uc2UgbGlzdGVuZXJcclxuICAgICAgICBkZWxldGUgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocmVzcG9uc2VGdW4pIHtcclxuICAgICAgICByZXNwb25zZUZ1bihtc2cpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvL3JlY2VpdmUgbWVzc2FnZXMgZnJvbSBleHRlcm5hbCBpbnRlcmZhY2VcclxuICBfb25NZXNzYWdlKG1zZykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBpZiAoIV90aGlzLl9vblJlc3BvbnNlKG1zZykpIHtcclxuICAgICAgbGV0IGl0ZW1MaXN0ID0gX3RoaXMuX3N1YnNjcmlwdGlvbnNbbXNnLnRvXTtcclxuICAgICAgaWYgKGl0ZW1MaXN0KSB7XHJcbiAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBfdGhpcy5fcHVibGlzaE9uRGVmYXVsdChtc2cpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfZ2VuSWQoaW5Nc2cpIHtcclxuICAgIC8vVE9ETzogaG93IGRvIHdlIG1hbmFnZSBtZXNzYWdlIElEJ3M/IFNob3VsZCBpdCBiZSBhIGdsb2JhbCBydW50aW1lIGNvdW50ZXIsIG9yIHBlciBVUkwgYWRkcmVzcz9cclxuICAgIC8vR2xvYmFsIGNvdW50ZXIgd2lsbCBub3Qgd29yaywgYmVjYXVzZSB0aGVyZSB3aWxsIGJlIG11bHRpcGxlIE1pbmlCdXMgaW5zdGFuY2VzIVxyXG4gICAgLy9QZXIgVVJMLCBjYW4gYmUgYSBsb3Qgb2YgZGF0YSB0byBtYWludGFpbiFcclxuICAgIC8vTWF5YmUgYSBjb3VudGVyIHBlciBNaW5pQnVzIGluc3RhbmNlLiBUaGlzIGlzIHRoZSBhc3N1bWVkIHNvbHV0aW9uIGZvciBub3cuXHJcbiAgICBpZiAoIWluTXNnLmlkIHx8IGluTXNnLmlkID09PSAwKSB7XHJcbiAgICAgIHRoaXMuX21zZ0lkKys7XHJcbiAgICAgIGluTXNnLmlkID0gdGhpcy5fbXNnSWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFNlbmQgbWVzc2FnZXMgdG8gbG9jYWwgbGlzdGVuZXJzLCBvciBpZiBub3QgZXhpc3RzIHRvIGV4dGVybmFsIGxpc3RlbmVycy5cclxuICAqIEl0J3MgaGFzIGFuIG9wdGlvbmFsIG1lY2hhbmlzbSBmb3IgYXV0b21hdGljIG1hbmFnZW1lbnQgb2YgcmVzcG9uc2UgaGFuZGxlcnMuXHJcbiAgKiBUaGUgcmVzcG9uc2UgaGFuZGxlciB3aWxsIGJlIHVucmVnaXN0ZXJlZCBhZnRlciByZWNlaXZpbmcgdGhlIHJlc3BvbnNlLCBvciBhZnRlciByZXNwb25zZSB0aW1lb3V0IChkZWZhdWx0IHRvIDNzKS5cclxuICAqIEBwYXJhbSAge01lc3NhZ2V9IG1zZyBNZXNzYWdlIHRvIHNlbmQuIE1lc3NhZ2UgSUQgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgbWVzc2FnZS5cclxuICAqIEBwYXJhbSAge0Z1bmN0aW9ufSByZXNwb25zZUNhbGxiYWNrIE9wdGlvbmFsIHBhcmFtZXRlciwgaWYgdGhlIGRldmVsb3BlciB3aGF0J3MgYXV0b21hdGljIHJlc3BvbnNlIG1hbmFnZW1lbnQuXHJcbiAgKiBAcmV0dXJuIHtudW1iZXJ9IFJldHVybnMgdGhlIG1lc3NhZ2UgSUQsIGluIGNhc2UgaXQgc2hvdWxkIGJlIG5lZWRlZCBmb3IgbWFudWFsIG1hbmFnZW1lbnQgb2YgdGhlIHJlc3BvbnNlIGhhbmRsZXIuXHJcbiAgKi9cclxuICBwb3N0TWVzc2FnZShpbk1zZywgcmVzcG9uc2VDYWxsYmFjaykgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIHRvIHBvc3QgbWVzc2FnZXMgd2l0aCBhIG51bWJlciBvZiByZXRyaWVzIGluIGNhc2UgdGltZW91dHMgb2NjdXIuXHJcbiAgICogQHBhcmFtICB7TWVzc2FnZX0gbXNnIE1lc3NhZ2UgdG8gc2VuZC4gTWVzc2FnZSBJRCBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBtZXNzYWdlLlxyXG4gICAqIEBwYXJhbSAge0Z1bmN0aW9ufSByZXNwb25zZUNhbGxiYWNrIE9wdGlvbmFsIHBhcmFtZXRlciwgaWYgdGhlIGRldmVsb3BlciB3aGF0J3MgYXV0b21hdGljIHJlc3BvbnNlIG1hbmFnZW1lbnQuXHJcbiAgICogQHBhcmFtICB7aW50ZWdlcn0gcmV0cmllcyBudW1iZXIgb2YgcmV0cmllcyB3aGVuIHRpbWVvdXRzIG9jY3VyXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gbWVzc2FnZSBkZWxpdmVyeSByZXN1bHQ7XHJcbiAgICovXHJcblxyXG5cclxuICBwb3N0TWVzc2FnZVdpdGhSZXRyaWVzKG1zZywgcmV0cmllcywgY2FsbGJhY2spIHtcclxuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCByZXRyeSA9IDA7XHJcbiAgICAvL2xldCB0aW1lb3V0ID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgc2VuZE1zZyA9IGZ1bmN0aW9uKCkge1xyXG5cclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBfdGhpcy5wb3N0TWVzc2FnZShtc2csIChyZXBseSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gNDA4IHx8IHJlcGx5LmJvZHkuY29kZSA9PT0gNTAwKSByZWplY3QoKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsb2cuaW5mbygnW0J1cy5wb3N0TWVzc2FnZVdpdGhSZXRyaWVzXSBtc2cgZGVsaXZlcmVkOiAnLCBtc2cpO1xyXG4gICAgICAgICAgICBjYWxsYmFjayhyZXBseSk7XHJcbiAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGxldCB0cnlBZ2FpbiA9ICgpID0+IHtcclxuICAgICAgc2VuZE1zZygpLnRoZW4oKCk9PntcclxuICAgICAgICAvL3RpbWVvdXQgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0sICgpPT57XHJcbiAgICAgICAgbG9nLndhcm4oYFtCdXMucG9zdE1lc3NhZ2VXaXRoUmV0cmllc10gTWVzc2FnZSBCb3VuY2VkIChyZXRyeSAke3JldHJ5fSk6ICdgLCBtc2cpO1xyXG4gICAgICAgIGlmIChyZXRyeSsrIDwgcmV0cmllcykge1xyXG4gICAgICAgICAgdHJ5QWdhaW4oKTtcclxuICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4geyB0cnlBZ2FpbigpOyB9LCAxMDAwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBgW0Vycm9yXSBNZXNzYWdlIEJvdW5jZWQgKGRlbGl2ZXJ5IGF0dGVtcHRzICR7cmV0cmllc30pOiAnYDtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvciArIG1zZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICB0cnlBZ2FpbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTm90IHB1YmxpYyBhdmFpbGFibGUsIHVzZWQgYnkgdGhlIGNsYXNzIGV4dGVuc2lvbiBpbXBsZW1lbnRhdGlvbiwgdG8gcHJvY2VzcyBtZXNzYWdlcyBmcm9tIHRoZSBwdWJsaWMgXCJwb3N0TWVzc2FnZVwiIHdpdGhvdXQgYSByZWdpc3RlcmVkIGxpc3RlbmVyLlxyXG4gICAqIFVzZWQgdG8gc2VuZCB0aGUgbWVzc2FnZSB0byBhbiBleHRlcm5hbCBpbnRlcmZhY2UsIGxpa2UgYSBXZWJXb3JrZXIsIElGcmFtZSwgZXRjLlxyXG4gICAqIEBwYXJhbSAge01lc3NhZ2UuTWVzc2FnZX0gbXNnIE1lc3NhZ2VcclxuICAgKi9cclxuICBfb25Qb3N0TWVzc2FnZShtc2cpIHsgLyppbXBsZW1lbnRhdGlvbiB3aWxsIHNlbmQgbWVzc2FnZSB0byBleHRlcm5hbCBzeXN0ZW0qLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5vdCBwdWJsaWMgYXZhaWxhYmxlLCB1c2VkIGJ5IHRoZSBjbGFzcyBleHRlbnNpb24gaW1wbGVtZW50YXRpb24sIHRvIHByb2Nlc3MgYWxsIG1lc3NhZ2VzIHRoYXQgZW50ZXIgdGhlIE1pbmlCdXMgZnJvbSBhbiBleHRlcm5hbCBpbnRlcmZhY2UsIGxpa2UgYSBXZWJXb3JrZXIsIElGcmFtZSwgZXRjLlxyXG4gICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmUgdGltZSBpbiB0aGUgY29uc3RydWN0b3IgdG8gcmVnaXN0ZXIgZXh0ZXJuYWwgbGlzdGVuZXJzLlxyXG4gICAqIFRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIHByb2JhYmx5IGNhbGwgdGhlIFwiX29uTWVzc2FnZVwiIG1ldGhvZCB0byBwdWJsaXNoIGluIHRoZSBsb2NhbCBsaXN0ZW5lcnMuXHJcbiAgICogRE8gTk9UIGNhbGwgXCJwb3N0TWVzc2FnZVwiLCB0aGVyZSBpcyBhIGRhbmdlciB0aGF0IHRoZSBtZXNzYWdlIGVudGVycyBpbiBhIGN5Y2xlIVxyXG4gICAqL1xyXG4gIF9yZWdpc3RlckV4dGVybmFsTGlzdGVuZXIoKSB7IC8qaW1wbGVtZW50YXRpb24gd2lsbCByZWdpc3RlciBleHRlcm5hbCBsaXN0ZW5lciBhbmQgY2FsbCBcInRoaXMuX29uTWVzc2FnZShtc2cpXCIgKi8gfVxyXG5cclxufVxyXG5cclxuY2xhc3MgTXNnTGlzdGVuZXIge1xyXG4gIC8qIHByaXZhdGVcclxuICBfc3Vic2NyaXB0aW9uczogPHN0cmluZzogTXNnTGlzdGVuZXJbXT47XHJcbiAgX3VybDogc3RyaW5nO1xyXG4gIF9jYWxsYmFjazogKG1zZykgPT4gdm9pZDtcclxuICAqL1xyXG5cclxuICBjb25zdHJ1Y3RvcihzdWJzY3JpcHRpb25zLCB1cmwsIGNhbGxiYWNrKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIF90aGlzLl9zdWJzY3JpcHRpb25zID0gc3Vic2NyaXB0aW9ucztcclxuICAgIF90aGlzLl91cmwgPSB1cmw7XHJcbiAgICBfdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjaztcclxuICB9XHJcblxyXG4gIGdldCB1cmwoKSB7IHJldHVybiB0aGlzLl91cmw7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIHRoaXMgbGlzdGVuZXIgZnJvbSB0aGUgQnVzXHJcbiAgICovXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBsZXQgc3VicyA9IF90aGlzLl9zdWJzY3JpcHRpb25zW190aGlzLl91cmxdO1xyXG4gICAgaWYgKHN1YnMpIHtcclxuICAgICAgbGV0IGluZGV4ID0gc3Vicy5pbmRleE9mKF90aGlzKTtcclxuICAgICAgc3Vicy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cclxuICAgICAgLy9pZiB0aGVyZSBhcmUgbm8gbGlzdGVuZXJzLCByZW1vdmUgdGhlIHN1YnNjcmlwdGlvbiBlbnRpcmVseS5cclxuICAgICAgaWYgKHN1YnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgZGVsZXRlIF90aGlzLl9zdWJzY3JpcHRpb25zW190aGlzLl91cmxdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBCdXM7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvYnVzL0J1cy5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBO0FBQ0E7QUFEQTtBQUNBOzs7OztBQUFBO0FBQ0E7QUFDQTs7Ozs7O0FBM0JBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTtBQUNBO0FBU0E7QUFDQTs7Ozs7OztBQVNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFPQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBTUE7Ozs7O0FBSUE7QUFDQTs7Ozs7O0FBTUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBR0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQWxCQTtBQUFBO0FBQUE7Ozs7O0FBcUJBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///116\n")},,,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\n\nvar _MiniBus = __webpack_require__(115);\n\nvar _MiniBus2 = _interopRequireDefault(_MiniBus);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _MiniBus2.default; /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the "License");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an "AS IS" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\nmodule.exports = exports[\'default\'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9taW5pYnVzLmpzP2JhN2MiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcclxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcclxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxyXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxyXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcclxuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcclxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxyXG4qXHJcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcclxuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbipcclxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4qXHJcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbioqL1xyXG5pbXBvcnQgTWluaUJ1cyBmcm9tICcuL2J1cy9NaW5pQnVzJztcclxuZXhwb3J0IGRlZmF1bHQgTWluaUJ1cztcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9taW5pYnVzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFzQkE7QUFDQTs7Ozs7QUF2QkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///135\n')}])}); \ No newline at end of file +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("minibus",[],n):"object"==typeof exports?exports.minibus=n():e.minibus=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function c(l){if(n[l])return n[l].exports;var t=n[l]={i:l,l:!1,exports:{}};return e[l].call(t.exports,t,t.exports,c),t.l=!0,t.exports}return c.m=e,c.c=n,c.d=function(e,n,l){c.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:l})},c.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(n,"a",n),n},c.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},c.p="",c(c.s=136)}([function(module,exports){eval("var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcz8xNWUwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjUuNycgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qc1xuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n")},function(module,exports){eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzP2VjYWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1\n")},function(module,exports,__webpack_require__){eval("var store = __webpack_require__(28)('wks');\nvar uid = __webpack_require__(20);\nvar Symbol = __webpack_require__(1).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzPzc1MmMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qc1xuLy8gbW9kdWxlIGlkID0gMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar ctx = __webpack_require__(15);\nvar hide = __webpack_require__(9);\nvar has = __webpack_require__(8);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzPzkwY2QiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzP2VmYjMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4\n")},function(module,exports,__webpack_require__){eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(13)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanM/Zjg0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n")},function(module,exports){eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzPzEyYTgiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(4);\nvar IE8_DOM_DEFINE = __webpack_require__(36);\nvar toPrimitive = __webpack_require__(26);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzPzdhZjAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanNcbi8vIG1vZHVsZSBpZCA9IDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7\n")},function(module,exports){eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzPzBmNjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanNcbi8vIG1vZHVsZSBpZCA9IDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(7);\nvar createDesc = __webpack_require__(19);\nmodule.exports = __webpack_require__(5) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qcz84NDljIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9\n")},function(module,exports,__webpack_require__){eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(57);\nvar defined = __webpack_require__(23);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NGRjNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///10\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzY2YjkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(60);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzP2MzMTAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5XCIpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///12\n')},function(module,exports){eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///13\n")},function(module,exports){eval("module.exports = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qc1xuLy8gbW9kdWxlIGlkID0gMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n")},function(module,exports,__webpack_require__){eval("// optional / simple context binding\nvar aFunction = __webpack_require__(18);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanNcbi8vIG1vZHVsZSBpZCA9IDE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///15\n")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanNcbi8vIG1vZHVsZSBpZCA9IDE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///16\n")},function(module,exports){eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcz9mZGI0Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzXG4vLyBtb2R1bGUgaWQgPSAxN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///17\n")},function(module,exports){eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///18\n")},function(module,exports){eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanNcbi8vIG1vZHVsZSBpZCA9IDE5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///19\n")},function(module,exports){eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qc1xuLy8gbW9kdWxlIGlkID0gMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///20\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(37);\nvar enumBugKeys = __webpack_require__(29);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///21\n")},function(module,exports){eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/NTJlMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///22\n")},function(module,exports){eval('// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError("Can\'t call method on " + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTc2OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///23\n')},function(module,exports,__webpack_require__){eval("var def = __webpack_require__(7).f;\nvar has = __webpack_require__(8);\nvar TAG = __webpack_require__(2)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdiYTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///24\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nvar document = __webpack_require__(1).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n")},function(module,exports,__webpack_require__){eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(6);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///26\n")},function(module,exports,__webpack_require__){eval("var shared = __webpack_require__(28)('keys');\nvar uid = __webpack_require__(20);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NmIxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///27\n")},function(module,exports,__webpack_require__){eval("var core = __webpack_require__(0);\nvar global = __webpack_require__(1);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(14) ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcz83YmMwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogY29yZS52ZXJzaW9uLFxuICBtb2RlOiByZXF1aXJlKCcuL19saWJyYXJ5JykgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxOCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qc1xuLy8gbW9kdWxlIGlkID0gMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///28\n")},function(module,exports){eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/YzY3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n")},function(module,exports,__webpack_require__){eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(23);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(4);\nvar dPs = __webpack_require__(69);\nvar enumBugKeys = __webpack_require__(29);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(25)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(46).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanM/NjI4NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGRQcyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2lmcmFtZScpO1xuICB2YXIgaSA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJlcXVpcmUoJy4vX2h0bWwnKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(18);\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanM/YTgwNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAyNS40LjEuNSBOZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcblxuZnVuY3Rpb24gUHJvbWlzZUNhcGFiaWxpdHkoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUZ1bmN0aW9uKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFGdW5jdGlvbihyZWplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qc1xuLy8gbW9kdWxlIGlkID0gMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///32\n")},function(module,exports,__webpack_require__){eval("exports.f = __webpack_require__(2);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1leHQuanM/MmExZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSByZXF1aXJlKCcuL193a3MnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///33\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar LIBRARY = __webpack_require__(14);\nvar wksExt = __webpack_require__(33);\nvar defineProperty = __webpack_require__(7).f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1kZWZpbmUuanM/NzJiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciAkU3ltYm9sID0gY29yZS5TeW1ib2wgfHwgKGNvcmUuU3ltYm9sID0gTElCUkFSWSA/IHt9IDogZ2xvYmFsLlN5bWJvbCB8fCB7fSk7XG4gIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///34\n")},function(module,exports){eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanM/MzY5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtcGllLmpzXG4vLyBtb2R1bGUgaWQgPSAzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///35\n")},function(module,exports,__webpack_require__){eval("module.exports = !__webpack_require__(5) && !__webpack_require__(13)(function () {\n return Object.defineProperty(__webpack_require__(25)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///36\n")},function(module,exports,__webpack_require__){eval("var has = __webpack_require__(8);\nvar toIObject = __webpack_require__(10);\nvar arrayIndexOf = __webpack_require__(58)(false);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzIxYjgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///37\n")},function(module,exports,__webpack_require__){eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(22);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz80MTExIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qc1xuLy8gbW9kdWxlIGlkID0gMzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///38\n")},function(module,exports,__webpack_require__){eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar fails = __webpack_require__(13);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanM/YmFhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qtc2FwLmpzXG4vLyBtb2R1bGUgaWQgPSAzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///39\n")},function(module,exports,__webpack_require__){eval("var pIE = __webpack_require__(35);\nvar createDesc = __webpack_require__(19);\nvar toIObject = __webpack_require__(10);\nvar toPrimitive = __webpack_require__(26);\nvar has = __webpack_require__(8);\nvar IE8_DOM_DEFINE = __webpack_require__(36);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(5) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzPzJjYTYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcGQuanNcbi8vIG1vZHVsZSBpZCA9IDQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///40\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(66), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3Byb21pc2UuanM/ZmZmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vcHJvbWlzZVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///41\n')},function(module,exports){eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///42\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $at = __webpack_require__(67)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(44)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcz9jZDA0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///43\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(14);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(45);\nvar hide = __webpack_require__(9);\nvar Iterators = __webpack_require__(17);\nvar $iterCreate = __webpack_require__(68);\nvar setToStringTag = __webpack_require__(24);\nvar getPrototypeOf = __webpack_require__(47);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzP2JjODAiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///44\n")},function(module,exports,__webpack_require__){eval("module.exports = __webpack_require__(9);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzP2YzY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///45\n")},function(module,exports,__webpack_require__){eval("var document = __webpack_require__(1).document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanM/NDRmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanNcbi8vIG1vZHVsZSBpZCA9IDQ2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(8);\nvar toObject = __webpack_require__(30);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanM/M2YzYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///47\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(70);\nvar global = __webpack_require__(1);\nvar hide = __webpack_require__(9);\nvar Iterators = __webpack_require__(17);\nvar TO_STRING_TAG = __webpack_require__(2)('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcz9mYWQzIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSA0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///48\n")},function(module,exports,__webpack_require__){eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(16);\nvar TAG = __webpack_require__(2)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanM/NDU4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBBUkcgPSBjb2YoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIFQsIEI7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFRcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IEFSRyA/IGNvZihPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY2xhc3NvZi5qc1xuLy8gbW9kdWxlIGlkID0gNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n")},function(module,exports,__webpack_require__){eval("// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(4);\nvar aFunction = __webpack_require__(18);\nvar SPECIES = __webpack_require__(2)('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanM/YjdjYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjMuMjAgU3BlY2llc0NvbnN0cnVjdG9yKE8sIGRlZmF1bHRDb25zdHJ1Y3RvcilcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIEQpIHtcbiAgdmFyIEMgPSBhbk9iamVjdChPKS5jb25zdHJ1Y3RvcjtcbiAgdmFyIFM7XG4gIHJldHVybiBDID09PSB1bmRlZmluZWQgfHwgKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPT0gdW5kZWZpbmVkID8gRCA6IGFGdW5jdGlvbihTKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3BlY2llcy1jb25zdHJ1Y3Rvci5qc1xuLy8gbW9kdWxlIGlkID0gNTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///50\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(15);\nvar invoke = __webpack_require__(79);\nvar html = __webpack_require__(46);\nvar cel = __webpack_require__(25);\nvar global = __webpack_require__(1);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(16)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanM/MmY4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vX2h0bWwnKTtcbnZhciBjZWwgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHNldFRhc2sgPSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyVGFzayA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbDtcbnZhciBEaXNwYXRjaCA9IGdsb2JhbC5EaXNwYXRjaDtcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xudmFyIHJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgaWYgKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICAgIGZuKCk7XG4gIH1cbn07XG52YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXRUYXNrIHx8ICFjbGVhclRhc2spIHtcbiAgc2V0VGFzayA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCkge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RlbmVyO1xuICAgIGRlZmVyID0gY3R4KHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQsIDEpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdHMpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG4gICAgfTtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICAgIHJ1bi5jYWxsKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChjdHgocnVuLCBpZCwgMSksIDApO1xuICAgIH07XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldFRhc2ssXG4gIGNsZWFyOiBjbGVhclRhc2tcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gNTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///51\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanM/NzRkMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZTogZmFsc2UsIHY6IGV4ZWMoKSB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHsgZTogdHJ1ZSwgdjogZSB9O1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanNcbi8vIG1vZHVsZSBpZCA9IDUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///52\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(4);\nvar isObject = __webpack_require__(6);\nvar newPromiseCapability = __webpack_require__(32);\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qcz83Yzk1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEMsIHgpIHtcbiAgYW5PYmplY3QoQyk7XG4gIGlmIChpc09iamVjdCh4KSAmJiB4LmNvbnN0cnVjdG9yID09PSBDKSByZXR1cm4geDtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZihDKTtcbiAgdmFyIHJlc29sdmUgPSBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlO1xuICByZXNvbHZlKHgpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzXG4vLyBtb2R1bGUgaWQgPSA1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///53\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(90);\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(92);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {\n return typeof obj === "undefined" ? "undefined" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcz9hNDU2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2l0ZXJhdG9yID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yXCIpO1xuXG52YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTtcblxudmFyIF9zeW1ib2wgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9zeW1ib2xcIik7XG5cbnZhciBfc3ltYm9sMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N5bWJvbCk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgX2l0ZXJhdG9yMi5kZWZhdWx0ID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgX3R5cGVvZihfaXRlcmF0b3IyLmRlZmF1bHQpID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YuanNcbi8vIG1vZHVsZSBpZCA9IDU0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///54\n')},function(module,exports){eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BzLmpzP2Q2NDQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wcy5qc1xuLy8gbW9kdWxlIGlkID0gNTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///55\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(37);\nvar hiddenKeys = __webpack_require__(29).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLmpzPzlmNDQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGhpZGRlbktleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi5qc1xuLy8gbW9kdWxlIGlkID0gNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n")},function(module,exports,__webpack_require__){eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(16);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/MzE0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///57\n")},function(module,exports,__webpack_require__){eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(10);\nvar toLength = __webpack_require__(38);\nvar toAbsoluteIndex = __webpack_require__(59);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2JjNTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanNcbi8vIG1vZHVsZSBpZCA9IDU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///58\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(22);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzdlNDAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///59\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(61), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/MGI4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA2MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///60\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(62);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ZjViMCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///61\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(3);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(5), 'Object', { defineProperty: __webpack_require__(7).f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanM/OTgyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///62\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(88), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzY3MWUiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///63\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(54);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n }\n\n return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanM/Y2YwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHNlbGYsIGNhbGwpIHtcbiAgaWYgKCFzZWxmKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNhbGwgJiYgKCh0eXBlb2YgY2FsbCA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoY2FsbCkpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzXG4vLyBtb2R1bGUgaWQgPSA2NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///64\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(101);\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(105);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(54);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== "function" && superClass !== null) {\n throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzPzNkZmQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKTtcblxudmFyIF9zZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXRQcm90b3R5cGVPZik7XG5cbnZhciBfY3JlYXRlID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2NyZWF0ZVwiKTtcblxudmFyIF9jcmVhdGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlKTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArICh0eXBlb2Ygc3VwZXJDbGFzcyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoc3VwZXJDbGFzcykpKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9ICgwLCBfY3JlYXRlMi5kZWZhdWx0KShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mMi5kZWZhdWx0ID8gKDAsIF9zZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzcztcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzXG4vLyBtb2R1bGUgaWQgPSA2NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///65\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(42);\n__webpack_require__(43);\n__webpack_require__(48);\n__webpack_require__(73);\n__webpack_require__(85);\n__webpack_require__(86);\nmodule.exports = __webpack_require__(0).Promise;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2UuanM/NTM5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucHJvbWlzZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL19jb3JlJykuUHJvbWlzZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA2NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///66\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(22);\nvar defined = __webpack_require__(23);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcz84N2FlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbi8vIHRydWUgIC0+IFN0cmluZyNhdFxuLy8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGF0LCBwb3MpIHtcbiAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbiAgICB2YXIgaSA9IHRvSW50ZWdlcihwb3MpO1xuICAgIHZhciBsID0gcy5sZW5ndGg7XG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGkgPCAwIHx8IGkgPj0gbCkgcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcbiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG4gICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzXG4vLyBtb2R1bGUgaWQgPSA2N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///67\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar create = __webpack_require__(31);\nvar descriptor = __webpack_require__(19);\nvar setToStringTag = __webpack_require__(24);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(9)(IteratorPrototype, __webpack_require__(2)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzP2Y3ODUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBkZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDY4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///68\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(7);\nvar anObject = __webpack_require__(4);\nvar getKeys = __webpack_require__(21);\n\nmodule.exports = __webpack_require__(5) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanM/YWEyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///69\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar addToUnscopables = __webpack_require__(71);\nvar step = __webpack_require__(72);\nvar Iterators = __webpack_require__(17);\nvar toIObject = __webpack_require__(10);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(44)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzP2M0NjkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///70\n")},function(module,exports){eval("module.exports = function () { /* empty */ };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcz9lMjY3Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qc1xuLy8gbW9kdWxlIGlkID0gNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///71\n")},function(module,exports){eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcz8xMDY2Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRvbmUsIHZhbHVlKSB7XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qc1xuLy8gbW9kdWxlIGlkID0gNzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///72\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(14);\nvar global = __webpack_require__(1);\nvar ctx = __webpack_require__(15);\nvar classof = __webpack_require__(49);\nvar $export = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\nvar aFunction = __webpack_require__(18);\nvar anInstance = __webpack_require__(74);\nvar forOf = __webpack_require__(75);\nvar speciesConstructor = __webpack_require__(50);\nvar task = __webpack_require__(51).set;\nvar microtask = __webpack_require__(80)();\nvar newPromiseCapabilityModule = __webpack_require__(32);\nvar perform = __webpack_require__(52);\nvar userAgent = __webpack_require__(81);\nvar promiseResolve = __webpack_require__(53);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(2)('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(82)($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(24)($Promise, PROMISE);\n__webpack_require__(83)(PROMISE);\nWrapper = __webpack_require__(0)[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(84)(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnByb21pc2UuanM/MDk3YyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG52YXIgUFJPTUlTRSA9ICdQcm9taXNlJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucztcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4IHx8ICcnO1xudmFyICRQcm9taXNlID0gZ2xvYmFsW1BST01JU0VdO1xudmFyIGlzTm9kZSA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xudmFyIGVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIEludGVybmFsLCBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHksIE93blByb21pc2VDYXBhYmlsaXR5LCBXcmFwcGVyO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcblxudmFyIFVTRV9OQVRJVkUgPSAhIWZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBjb3JyZWN0IHN1YmNsYXNzaW5nIHdpdGggQEBzcGVjaWVzIHN1cHBvcnRcbiAgICB2YXIgcHJvbWlzZSA9ICRQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgdmFyIEZha2VQcm9taXNlID0gKHByb21pc2UuY29uc3RydWN0b3IgPSB7fSlbcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKV0gPSBmdW5jdGlvbiAoZXhlYykge1xuICAgICAgZXhlYyhlbXB0eSwgZW1wdHkpO1xuICAgIH07XG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIHJldHVybiAoaXNOb2RlIHx8IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICYmIHByb21pc2UudGhlbihlbXB0eSkgaW5zdGFuY2VvZiBGYWtlUHJvbWlzZVxuICAgICAgLy8gdjggNi42IChOb2RlIDEwIGFuZCBDaHJvbWUgNjYpIGhhdmUgYSBidWcgd2l0aCByZXNvbHZpbmcgY3VzdG9tIHRoZW5hYmxlc1xuICAgICAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODMwNTY1XG4gICAgICAvLyB3ZSBjYW4ndCBkZXRlY3QgaXQgc3luY2hyb25vdXNseSwgc28ganVzdCBjaGVjayB2ZXJzaW9uc1xuICAgICAgJiYgdjguaW5kZXhPZignNi42JykgIT09IDBcbiAgICAgICYmIHVzZXJBZ2VudC5pbmRleE9mKCdDaHJvbWUvNjYnKSA9PT0gLTE7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufSgpO1xuXG4vLyBoZWxwZXJzXG52YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgdGhlbjtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiB0eXBlb2YgKHRoZW4gPSBpdC50aGVuKSA9PSAnZnVuY3Rpb24nID8gdGhlbiA6IGZhbHNlO1xufTtcbnZhciBub3RpZnkgPSBmdW5jdGlvbiAocHJvbWlzZSwgaXNSZWplY3QpIHtcbiAgaWYgKHByb21pc2UuX24pIHJldHVybjtcbiAgcHJvbWlzZS5fbiA9IHRydWU7XG4gIHZhciBjaGFpbiA9IHByb21pc2UuX2M7XG4gIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgb2sgPSBwcm9taXNlLl9zID09IDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBydW4gPSBmdW5jdGlvbiAocmVhY3Rpb24pIHtcbiAgICAgIHZhciBoYW5kbGVyID0gb2sgPyByZWFjdGlvbi5vayA6IHJlYWN0aW9uLmZhaWw7XG4gICAgICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gICAgICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICAgICAgdmFyIGRvbWFpbiA9IHJlYWN0aW9uLmRvbWFpbjtcbiAgICAgIHZhciByZXN1bHQsIHRoZW4sIGV4aXRlZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgaWYgKHByb21pc2UuX2ggPT0gMikgb25IYW5kbGVVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgICAgICAgICBwcm9taXNlLl9oID0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhbmRsZXIgPT09IHRydWUpIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVyKHZhbHVlKTsgLy8gbWF5IHRocm93XG4gICAgICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgICAgIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgICAgIGV4aXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHJlYWN0aW9uLnByb21pc2UpIHtcbiAgICAgICAgICAgIHJlamVjdChUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aGVuLmNhbGwocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZG9tYWluICYmICFleGl0ZWQpIGRvbWFpbi5leGl0KCk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGggPiBpKSBydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgcHJvbWlzZS5fYyA9IFtdO1xuICAgIHByb21pc2UuX24gPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXByb21pc2UuX2gpIG9uVW5oYW5kbGVkKHByb21pc2UpO1xuICB9KTtcbn07XG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgdW5oYW5kbGVkID0gaXNVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgdmFyIHJlc3VsdCwgaGFuZGxlciwgY29uc29sZTtcbiAgICBpZiAodW5oYW5kbGVkKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGlzTm9kZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub251bmhhbmRsZWRyZWplY3Rpb24pIHtcbiAgICAgICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmICgoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBwcm9taXNlLl9oID0gaXNOb2RlIHx8IGlzVW5oYW5kbGVkKHByb21pc2UpID8gMiA6IDE7XG4gICAgfSBwcm9taXNlLl9hID0gdW5kZWZpbmVkO1xuICAgIGlmICh1bmhhbmRsZWQgJiYgcmVzdWx0LmUpIHRocm93IHJlc3VsdC52O1xuICB9KTtcbn07XG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICByZXR1cm4gcHJvbWlzZS5faCAhPT0gMSAmJiAocHJvbWlzZS5fYSB8fCBwcm9taXNlLl9jKS5sZW5ndGggPT09IDA7XG59O1xudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYW5kbGVyO1xuICAgIGlmIChpc05vZGUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBpZiAoaGFuZGxlciA9IGdsb2JhbC5vbnJlamVjdGlvbmhhbmRsZWQpIHtcbiAgICAgIGhhbmRsZXIoeyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHByb21pc2UuX3YgfSk7XG4gICAgfVxuICB9KTtcbn07XG52YXIgJHJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICBwcm9taXNlLl9zID0gMjtcbiAgaWYgKCFwcm9taXNlLl9hKSBwcm9taXNlLl9hID0gcHJvbWlzZS5fYy5zbGljZSgpO1xuICBub3RpZnkocHJvbWlzZSwgdHJ1ZSk7XG59O1xudmFyICRyZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgdmFyIHRoZW47XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgdHJ5IHtcbiAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIGlmICh0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBfdzogcHJvbWlzZSwgX2Q6IGZhbHNlIH07IC8vIHdyYXBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAkcmVqZWN0LmNhbGwod3JhcHBlciwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9taXNlLl92ID0gdmFsdWU7XG4gICAgICBwcm9taXNlLl9zID0gMTtcbiAgICAgIG5vdGlmeShwcm9taXNlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgJHJlamVjdC5jYWxsKHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9LCBlKTsgLy8gd3JhcFxuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gICRQcm9taXNlID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJFByb21pc2UsIFBST01JU0UsICdfaCcpO1xuICAgIGFGdW5jdGlvbihleGVjdXRvcik7XG4gICAgSW50ZXJuYWwuY2FsbCh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoY3R4KCRyZXNvbHZlLCB0aGlzLCAxKSwgY3R4KCRyZWplY3QsIHRoaXMsIDEpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICRyZWplY3QuY2FsbCh0aGlzLCBlcnIpO1xuICAgIH1cbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHRoaXMuX2MgPSBbXTsgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG4gICAgdGhpcy5fYSA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuICAgIHRoaXMuX3MgPSAwOyAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcbiAgICB0aGlzLl9kID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIGRvbmVcbiAgICB0aGlzLl92ID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIHZhbHVlXG4gICAgdGhpcy5faCA9IDA7ICAgICAgICAgICAgICAvLyA8LSByZWplY3Rpb24gc3RhdGUsIDAgLSBkZWZhdWx0LCAxIC0gaGFuZGxlZCwgMiAtIHVuaGFuZGxlZFxuICAgIHRoaXMuX24gPSBmYWxzZTsgICAgICAgICAgLy8gPC0gbm90aWZ5XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpKCRQcm9taXNlLnByb3RvdHlwZSwge1xuICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsICRQcm9taXNlKSk7XG4gICAgICByZWFjdGlvbi5vayA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCA9IHR5cGVvZiBvblJlamVjdGVkID09ICdmdW5jdGlvbicgJiYgb25SZWplY3RlZDtcbiAgICAgIHJlYWN0aW9uLmRvbWFpbiA9IGlzTm9kZSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fYy5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9hKSB0aGlzLl9hLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHRoaXMuX3MpIG5vdGlmeSh0aGlzLCBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH0pO1xuICBPd25Qcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBJbnRlcm5hbCgpO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgdGhpcy5yZXNvbHZlID0gY3R4KCRyZXNvbHZlLCBwcm9taXNlLCAxKTtcbiAgICB0aGlzLnJlamVjdCA9IGN0eCgkcmVqZWN0LCBwcm9taXNlLCAxKTtcbiAgfTtcbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gJFByb21pc2UgfHwgQyA9PT0gV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFByb21pc2U6ICRQcm9taXNlIH0pO1xucmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKSgkUHJvbWlzZSwgUFJPTUlTRSk7XG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKFBST01JU0UpO1xuV3JhcHBlciA9IHJlcXVpcmUoJy4vX2NvcmUnKVtQUk9NSVNFXTtcblxuLy8gc3RhdGljc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNSBQcm9taXNlLnJlamVjdChyKVxuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTtcbiAgICB2YXIgJCRyZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICAkJHJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKExJQlJBUlkgfHwgIVVTRV9OQVRJVkUpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC42IFByb21pc2UucmVzb2x2ZSh4KVxuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoTElCUkFSWSAmJiB0aGlzID09PSBXcmFwcGVyID8gJFByb21pc2UgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoVVNFX05BVElWRSAmJiByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7XG4gICRQcm9taXNlLmFsbChpdGVyKVsnY2F0Y2gnXShlbXB0eSk7XG59KSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyICRpbmRleCA9IGluZGV4Kys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1skaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lKSByZWplY3QocmVzdWx0LnYpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA3M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///73\n")},function(module,exports){eval("module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzP2Q4YWMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIENvbnN0cnVjdG9yLCBuYW1lLCBmb3JiaWRkZW5GaWVsZCkge1xuICBpZiAoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSB8fCAoZm9yYmlkZGVuRmllbGQgIT09IHVuZGVmaW5lZCAmJiBmb3JiaWRkZW5GaWVsZCBpbiBpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IobmFtZSArICc6IGluY29ycmVjdCBpbnZvY2F0aW9uIScpO1xuICB9IHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4taW5zdGFuY2UuanNcbi8vIG1vZHVsZSBpZCA9IDc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///74\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(15);\nvar call = __webpack_require__(76);\nvar isArrayIter = __webpack_require__(77);\nvar anObject = __webpack_require__(4);\nvar toLength = __webpack_require__(38);\nvar getIterFn = __webpack_require__(78);\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qcz8zNTZiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgQlJFQUsgPSB7fTtcbnZhciBSRVRVUk4gPSB7fTtcbnZhciBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0LCBJVEVSQVRPUikge1xuICB2YXIgaXRlckZuID0gSVRFUkFUT1IgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSk7XG4gIHZhciBmID0gY3R4KGZuLCB0aGF0LCBlbnRyaWVzID8gMiA6IDEpO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0O1xuICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXRlcmFibGUgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcbiAgLy8gZmFzdCBjYXNlIGZvciBhcnJheXMgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yXG4gIGlmIChpc0FycmF5SXRlcihpdGVyRm4pKSBmb3IgKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgcmVzdWx0ID0gZW50cmllcyA/IGYoYW5PYmplY3Qoc3RlcCA9IGl0ZXJhYmxlW2luZGV4XSlbMF0sIHN0ZXBbMV0pIDogZihpdGVyYWJsZVtpbmRleF0pO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9IGVsc2UgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOykge1xuICAgIHJlc3VsdCA9IGNhbGwoaXRlcmF0b3IsIGYsIHN0ZXAudmFsdWUsIGVudHJpZXMpO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9XG59O1xuZXhwb3J0cy5CUkVBSyA9IEJSRUFLO1xuZXhwb3J0cy5SRVRVUk4gPSBSRVRVUk47XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZm9yLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA3NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///75\n")},function(module,exports,__webpack_require__){eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(4);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qcz85YWM1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcykge1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qc1xuLy8gbW9kdWxlIGlkID0gNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///76\n")},function(module,exports,__webpack_require__){eval("// check on default Array iterator\nvar Iterators = __webpack_require__(17);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanM/MzIxYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1hcnJheS1pdGVyLmpzXG4vLyBtb2R1bGUgaWQgPSA3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///77\n")},function(module,exports,__webpack_require__){eval("var classof = __webpack_require__(49);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar Iterators = __webpack_require__(17);\nmodule.exports = __webpack_require__(0).getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzP2RkZmIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanNcbi8vIG1vZHVsZSBpZCA9IDc4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///78\n")},function(module,exports){eval("// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ludm9rZS5qcz85MjdiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhc3QgYXBwbHksIGh0dHA6Ly9qc3BlcmYubG5raXQuY29tL2Zhc3QtYXBwbHkvNVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIGFyZ3MsIHRoYXQpIHtcbiAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gdW4gPyBmbigpXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQpO1xuICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gIH0gcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3MpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pbnZva2UuanNcbi8vIG1vZHVsZSBpZCA9IDc5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///79\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar macrotask = __webpack_require__(51).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(16)(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qcz9mMzYzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBtYWNyb3Rhc2sgPSByZXF1aXJlKCcuL190YXNrJykuc2V0O1xudmFyIE9ic2VydmVyID0gZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIFByb21pc2UgPSBnbG9iYWwuUHJvbWlzZTtcbnZhciBpc05vZGUgPSByZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaGVhZCwgbGFzdCwgbm90aWZ5O1xuXG4gIHZhciBmbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50LCBmbjtcbiAgICBpZiAoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGhlYWQpIHtcbiAgICAgIGZuID0gaGVhZC5mbjtcbiAgICAgIGhlYWQgPSBoZWFkLm5leHQ7XG4gICAgICB0cnkge1xuICAgICAgICBmbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoaGVhZCkgbm90aWZ5KCk7XG4gICAgICAgIGVsc2UgbGFzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LmVudGVyKCk7XG4gIH07XG5cbiAgLy8gTm9kZS5qc1xuICBpZiAoaXNOb2RlKSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XG4gICAgfTtcbiAgLy8gYnJvd3NlcnMgd2l0aCBNdXRhdGlvbk9ic2VydmVyLCBleGNlcHQgaU9TIFNhZmFyaSAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMzlcbiAgfSBlbHNlIGlmIChPYnNlcnZlciAmJiAhKGdsb2JhbC5uYXZpZ2F0b3IgJiYgZ2xvYmFsLm5hdmlnYXRvci5zdGFuZGFsb25lKSkge1xuICAgIHZhciB0b2dnbGUgPSB0cnVlO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG5ldyBPYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7IGNoYXJhY3RlckRhdGE6IHRydWUgfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYgKFByb21pc2UgJiYgUHJvbWlzZS5yZXNvbHZlKSB7XG4gICAgLy8gUHJvbWlzZS5yZXNvbHZlIHdpdGhvdXQgYW4gYXJndW1lbnQgdGhyb3dzIGFuIGVycm9yIGluIExHIFdlYk9TIDJcbiAgICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb21pc2UudGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcbiAgLy8gLSBzZXRJbW1lZGlhdGVcbiAgLy8gLSBNZXNzYWdlQ2hhbm5lbFxuICAvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIHN0cmFuZ2UgSUUgKyB3ZWJwYWNrIGRldiBzZXJ2ZXIgYnVnIC0gdXNlIC5jYWxsKGdsb2JhbClcbiAgICAgIG1hY3JvdGFzay5jYWxsKGdsb2JhbCwgZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgdmFyIHRhc2sgPSB7IGZuOiBmbiwgbmV4dDogdW5kZWZpbmVkIH07XG4gICAgaWYgKGxhc3QpIGxhc3QubmV4dCA9IHRhc2s7XG4gICAgaWYgKCFoZWFkKSB7XG4gICAgICBoZWFkID0gdGFzaztcbiAgICAgIG5vdGlmeSgpO1xuICAgIH0gbGFzdCA9IHRhc2s7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///80\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VzZXItYWdlbnQuanM/ODk0NiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsLm5hdmlnYXRvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCAnJztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191c2VyLWFnZW50LmpzXG4vLyBtb2R1bGUgaWQgPSA4MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///81\n")},function(module,exports,__webpack_require__){eval("var hide = __webpack_require__(9);\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcz9jNDdmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGlmIChzYWZlICYmIHRhcmdldFtrZXldKSB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgIGVsc2UgaGlkZSh0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9IHJldHVybiB0YXJnZXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qc1xuLy8gbW9kdWxlIGlkID0gODJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///82\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar dP = __webpack_require__(7);\nvar DESCRIPTORS = __webpack_require__(5);\nvar SPECIES = __webpack_require__(2)('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1zcGVjaWVzLmpzPzZkMWEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgQyA9IHR5cGVvZiBjb3JlW0tFWV0gPT0gJ2Z1bmN0aW9uJyA/IGNvcmVbS0VZXSA6IGdsb2JhbFtLRVldO1xuICBpZiAoREVTQ1JJUFRPUlMgJiYgQyAmJiAhQ1tTUEVDSUVTXSkgZFAuZihDLCBTUEVDSUVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDgzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///83\n")},function(module,exports,__webpack_require__){eval("var ITERATOR = __webpack_require__(2)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzPzc1OGQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTtcbiAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24gKCkgeyBTQUZFX0NMT1NJTkcgPSB0cnVlOyB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7XG4gIGlmICghc2tpcENsb3NpbmcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBbN107XG4gICAgdmFyIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9O1xuICAgIGFycltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBzYWZlO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qc1xuLy8gbW9kdWxlIGlkID0gODRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///84\n")},function(module,exports,__webpack_require__){"use strict";eval("// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar global = __webpack_require__(1);\nvar speciesConstructor = __webpack_require__(50);\nvar promiseResolve = __webpack_require__(53);\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseS5qcz8xMmEwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtZmluYWxseVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1Byb21pc2UnLCB7ICdmaW5hbGx5JzogZnVuY3Rpb24gKG9uRmluYWxseSkge1xuICB2YXIgQyA9IHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBjb3JlLlByb21pc2UgfHwgZ2xvYmFsLlByb21pc2UpO1xuICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBvbkZpbmFsbHkgPT0gJ2Z1bmN0aW9uJztcbiAgcmV0dXJuIHRoaXMudGhlbihcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKHgpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB4OyB9KTtcbiAgICB9IDogb25GaW5hbGx5LFxuICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgdGhyb3cgZTsgfSk7XG4gICAgfSA6IG9uRmluYWxseVxuICApO1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHkuanNcbi8vIG1vZHVsZSBpZCA9IDg1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///85\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(3);\nvar newPromiseCapability = __webpack_require__(32);\nvar perform = __webpack_require__(52);\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzPzhjYTUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS10cnlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4vX3BlcmZvcm0nKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdQcm9taXNlJywgeyAndHJ5JzogZnVuY3Rpb24gKGNhbGxiYWNrZm4pIHtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZih0aGlzKTtcbiAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oY2FsbGJhY2tmbik7XG4gIChyZXN1bHQuZSA/IHByb21pc2VDYXBhYmlsaXR5LnJlamVjdCA6IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmUpKHJlc3VsdC52KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzXG4vLyBtb2R1bGUgaWQgPSA4NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///86\n")},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n "use strict";\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof module === \'object\' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n "use strict";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = "undefined";\n\n var logMethods = [\n "trace",\n "debug",\n "info",\n "warn",\n "error"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === \'function\') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === \'debug\') {\n methodName = \'log\';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, \'log\');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn\'t present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = "loglevel";\n if (name) {\n storageKey += ":" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || \'silent\').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + "=" + levelName + ";";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + "=");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { "TRACE": 0, "DEBUG": 1, "INFO": 2, "WARN": 3,\n "ERROR": 4, "SILENT": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return "No console available for logging";\n }\n } else {\n throw "log.setLevel() called with invalid level: " + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? "WARN" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== "string" || name === "") {\n throw new TypeError("You must supply a name when creating a logger.");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9nbGV2ZWwvbGliL2xvZ2xldmVsLmpzPzA2ZmMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiogbG9nbGV2ZWwgLSBodHRwczovL2dpdGh1Yi5jb20vcGltdGVycnkvbG9nbGV2ZWxcbipcbiogQ29weXJpZ2h0IChjKSAyMDEzIFRpbSBQZXJyeVxuKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4qL1xuKGZ1bmN0aW9uIChyb290LCBkZWZpbml0aW9uKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgICBkZWZpbmUoZGVmaW5pdGlvbik7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGRlZmluaXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByb290LmxvZyA9IGRlZmluaXRpb24oKTtcbiAgICB9XG59KHRoaXMsIGZ1bmN0aW9uICgpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIC8vIFNsaWdodGx5IGR1YmlvdXMgdHJpY2tzIHRvIGN1dCBkb3duIG1pbmltaXplZCBmaWxlIHNpemVcbiAgICB2YXIgbm9vcCA9IGZ1bmN0aW9uKCkge307XG4gICAgdmFyIHVuZGVmaW5lZFR5cGUgPSBcInVuZGVmaW5lZFwiO1xuXG4gICAgdmFyIGxvZ01ldGhvZHMgPSBbXG4gICAgICAgIFwidHJhY2VcIixcbiAgICAgICAgXCJkZWJ1Z1wiLFxuICAgICAgICBcImluZm9cIixcbiAgICAgICAgXCJ3YXJuXCIsXG4gICAgICAgIFwiZXJyb3JcIlxuICAgIF07XG5cbiAgICAvLyBDcm9zcy1icm93c2VyIGJpbmQgZXF1aXZhbGVudCB0aGF0IHdvcmtzIGF0IGxlYXN0IGJhY2sgdG8gSUU2XG4gICAgZnVuY3Rpb24gYmluZE1ldGhvZChvYmosIG1ldGhvZE5hbWUpIHtcbiAgICAgICAgdmFyIG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTtcbiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QuYmluZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIG1ldGhvZC5iaW5kKG9iaik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5jYWxsKG1ldGhvZCwgb2JqKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBNaXNzaW5nIGJpbmQgc2hpbSBvciBJRTggKyBNb2Rlcm5penIsIGZhbGxiYWNrIHRvIHdyYXBwaW5nXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmFwcGx5KG1ldGhvZCwgW29iaiwgYXJndW1lbnRzXSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJ1aWxkIHRoZSBiZXN0IGxvZ2dpbmcgbWV0aG9kIHBvc3NpYmxlIGZvciB0aGlzIGVudlxuICAgIC8vIFdoZXJldmVyIHBvc3NpYmxlIHdlIHdhbnQgdG8gYmluZCwgbm90IHdyYXAsIHRvIHByZXNlcnZlIHN0YWNrIHRyYWNlc1xuICAgIGZ1bmN0aW9uIHJlYWxNZXRob2QobWV0aG9kTmFtZSkge1xuICAgICAgICBpZiAobWV0aG9kTmFtZSA9PT0gJ2RlYnVnJykge1xuICAgICAgICAgICAgbWV0aG9kTmFtZSA9ICdsb2cnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE5vIG1ldGhvZCBwb3NzaWJsZSwgZm9yIG5vdyAtIGZpeGVkIGxhdGVyIGJ5IGVuYWJsZUxvZ2dpbmdXaGVuQ29uc29sZUFycml2ZXNcbiAgICAgICAgfSBlbHNlIGlmIChjb25zb2xlW21ldGhvZE5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBiaW5kTWV0aG9kKGNvbnNvbGUsIG1ldGhvZE5hbWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnNvbGUubG9nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBiaW5kTWV0aG9kKGNvbnNvbGUsICdsb2cnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBub29wO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlc2UgcHJpdmF0ZSBmdW5jdGlvbnMgYWx3YXlzIG5lZWQgYHRoaXNgIHRvIGJlIHNldCBwcm9wZXJseVxuXG4gICAgZnVuY3Rpb24gcmVwbGFjZUxvZ2dpbmdNZXRob2RzKGxldmVsLCBsb2dnZXJOYW1lKSB7XG4gICAgICAgIC8qanNoaW50IHZhbGlkdGhpczp0cnVlICovXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbG9nTWV0aG9kcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIG1ldGhvZE5hbWUgPSBsb2dNZXRob2RzW2ldO1xuICAgICAgICAgICAgdGhpc1ttZXRob2ROYW1lXSA9IChpIDwgbGV2ZWwpID9cbiAgICAgICAgICAgICAgICBub29wIDpcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZEZhY3RvcnkobWV0aG9kTmFtZSwgbGV2ZWwsIGxvZ2dlck5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmaW5lIGxvZy5sb2cgYXMgYW4gYWxpYXMgZm9yIGxvZy5kZWJ1Z1xuICAgICAgICB0aGlzLmxvZyA9IHRoaXMuZGVidWc7XG4gICAgfVxuXG4gICAgLy8gSW4gb2xkIElFIHZlcnNpb25zLCB0aGUgY29uc29sZSBpc24ndCBwcmVzZW50IHVudGlsIHlvdSBmaXJzdCBvcGVuIGl0LlxuICAgIC8vIFdlIGJ1aWxkIHJlYWxNZXRob2QoKSByZXBsYWNlbWVudHMgaGVyZSB0aGF0IHJlZ2VuZXJhdGUgbG9nZ2luZyBtZXRob2RzXG4gICAgZnVuY3Rpb24gZW5hYmxlTG9nZ2luZ1doZW5Db25zb2xlQXJyaXZlcyhtZXRob2ROYW1lLCBsZXZlbCwgbG9nZ2VyTmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICAgICAgcmVwbGFjZUxvZ2dpbmdNZXRob2RzLmNhbGwodGhpcywgbGV2ZWwsIGxvZ2dlck5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXNbbWV0aG9kTmFtZV0uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCeSBkZWZhdWx0LCB3ZSB1c2UgY2xvc2VseSBib3VuZCByZWFsIG1ldGhvZHMgd2hlcmV2ZXIgcG9zc2libGUsIGFuZFxuICAgIC8vIG90aGVyd2lzZSB3ZSB3YWl0IGZvciBhIGNvbnNvbGUgdG8gYXBwZWFyLCBhbmQgdGhlbiB0cnkgYWdhaW4uXG4gICAgZnVuY3Rpb24gZGVmYXVsdE1ldGhvZEZhY3RvcnkobWV0aG9kTmFtZSwgbGV2ZWwsIGxvZ2dlck5hbWUpIHtcbiAgICAgICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cbiAgICAgICAgcmV0dXJuIHJlYWxNZXRob2QobWV0aG9kTmFtZSkgfHxcbiAgICAgICAgICAgICAgIGVuYWJsZUxvZ2dpbmdXaGVuQ29uc29sZUFycml2ZXMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBMb2dnZXIobmFtZSwgZGVmYXVsdExldmVsLCBmYWN0b3J5KSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgY3VycmVudExldmVsO1xuICAgICAgdmFyIHN0b3JhZ2VLZXkgPSBcImxvZ2xldmVsXCI7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICBzdG9yYWdlS2V5ICs9IFwiOlwiICsgbmFtZTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcGVyc2lzdExldmVsSWZQb3NzaWJsZShsZXZlbE51bSkge1xuICAgICAgICAgIHZhciBsZXZlbE5hbWUgPSAobG9nTWV0aG9kc1tsZXZlbE51bV0gfHwgJ3NpbGVudCcpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gdW5kZWZpbmVkVHlwZSkgcmV0dXJuO1xuXG4gICAgICAgICAgLy8gVXNlIGxvY2FsU3RvcmFnZSBpZiBhdmFpbGFibGVcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlW3N0b3JhZ2VLZXldID0gbGV2ZWxOYW1lO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuXG4gICAgICAgICAgLy8gVXNlIHNlc3Npb24gY29va2llIGFzIGZhbGxiYWNrXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgd2luZG93LmRvY3VtZW50LmNvb2tpZSA9XG4gICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHN0b3JhZ2VLZXkpICsgXCI9XCIgKyBsZXZlbE5hbWUgKyBcIjtcIjtcbiAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGdldFBlcnNpc3RlZExldmVsKCkge1xuICAgICAgICAgIHZhciBzdG9yZWRMZXZlbDtcblxuICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSB1bmRlZmluZWRUeXBlKSByZXR1cm47XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBzdG9yZWRMZXZlbCA9IHdpbmRvdy5sb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV07XG4gICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuXG4gICAgICAgICAgLy8gRmFsbGJhY2sgdG8gY29va2llcyBpZiBsb2NhbCBzdG9yYWdlIGdpdmVzIHVzIG5vdGhpbmdcbiAgICAgICAgICBpZiAodHlwZW9mIHN0b3JlZExldmVsID09PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICB2YXIgY29va2llID0gd2luZG93LmRvY3VtZW50LmNvb2tpZTtcbiAgICAgICAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IGNvb2tpZS5pbmRleE9mKFxuICAgICAgICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzdG9yYWdlS2V5KSArIFwiPVwiKTtcbiAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbiAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yZWRMZXZlbCA9IC9eKFteO10rKS8uZXhlYyhjb29raWUuc2xpY2UobG9jYXRpb24pKVsxXTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHRoZSBzdG9yZWQgbGV2ZWwgaXMgbm90IHZhbGlkLCB0cmVhdCBpdCBhcyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG4gICAgICAgICAgaWYgKHNlbGYubGV2ZWxzW3N0b3JlZExldmVsXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHN0b3JlZExldmVsID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBzdG9yZWRMZXZlbDtcbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgICAqXG4gICAgICAgKiBQdWJsaWMgbG9nZ2VyIEFQSSAtIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGltdGVycnkvbG9nbGV2ZWwgZm9yIGRldGFpbHNcbiAgICAgICAqXG4gICAgICAgKi9cblxuICAgICAgc2VsZi5uYW1lID0gbmFtZTtcblxuICAgICAgc2VsZi5sZXZlbHMgPSB7IFwiVFJBQ0VcIjogMCwgXCJERUJVR1wiOiAxLCBcIklORk9cIjogMiwgXCJXQVJOXCI6IDMsXG4gICAgICAgICAgXCJFUlJPUlwiOiA0LCBcIlNJTEVOVFwiOiA1fTtcblxuICAgICAgc2VsZi5tZXRob2RGYWN0b3J5ID0gZmFjdG9yeSB8fCBkZWZhdWx0TWV0aG9kRmFjdG9yeTtcblxuICAgICAgc2VsZi5nZXRMZXZlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gY3VycmVudExldmVsO1xuICAgICAgfTtcblxuICAgICAgc2VsZi5zZXRMZXZlbCA9IGZ1bmN0aW9uIChsZXZlbCwgcGVyc2lzdCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09IFwic3RyaW5nXCIgJiYgc2VsZi5sZXZlbHNbbGV2ZWwudG9VcHBlckNhc2UoKV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsZXZlbCA9IHNlbGYubGV2ZWxzW2xldmVsLnRvVXBwZXJDYXNlKCldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIGxldmVsID09PSBcIm51bWJlclwiICYmIGxldmVsID49IDAgJiYgbGV2ZWwgPD0gc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRMZXZlbCA9IGxldmVsO1xuICAgICAgICAgICAgICBpZiAocGVyc2lzdCAhPT0gZmFsc2UpIHsgIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICAgICAgICAgICAgICAgIHBlcnNpc3RMZXZlbElmUG9zc2libGUobGV2ZWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlcGxhY2VMb2dnaW5nTWV0aG9kcy5jYWxsKHNlbGYsIGxldmVsLCBuYW1lKTtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSB1bmRlZmluZWRUeXBlICYmIGxldmVsIDwgc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCJObyBjb25zb2xlIGF2YWlsYWJsZSBmb3IgbG9nZ2luZ1wiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhyb3cgXCJsb2cuc2V0TGV2ZWwoKSBjYWxsZWQgd2l0aCBpbnZhbGlkIGxldmVsOiBcIiArIGxldmVsO1xuICAgICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHNlbGYuc2V0RGVmYXVsdExldmVsID0gZnVuY3Rpb24gKGxldmVsKSB7XG4gICAgICAgICAgaWYgKCFnZXRQZXJzaXN0ZWRMZXZlbCgpKSB7XG4gICAgICAgICAgICAgIHNlbGYuc2V0TGV2ZWwobGV2ZWwsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBzZWxmLmVuYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlRSQUNFLCBwZXJzaXN0KTtcbiAgICAgIH07XG5cbiAgICAgIHNlbGYuZGlzYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlNJTEVOVCwgcGVyc2lzdCk7XG4gICAgICB9O1xuXG4gICAgICAvLyBJbml0aWFsaXplIHdpdGggdGhlIHJpZ2h0IGxldmVsXG4gICAgICB2YXIgaW5pdGlhbExldmVsID0gZ2V0UGVyc2lzdGVkTGV2ZWwoKTtcbiAgICAgIGlmIChpbml0aWFsTGV2ZWwgPT0gbnVsbCkge1xuICAgICAgICAgIGluaXRpYWxMZXZlbCA9IGRlZmF1bHRMZXZlbCA9PSBudWxsID8gXCJXQVJOXCIgOiBkZWZhdWx0TGV2ZWw7XG4gICAgICB9XG4gICAgICBzZWxmLnNldExldmVsKGluaXRpYWxMZXZlbCwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICpcbiAgICAgKiBUb3AtbGV2ZWwgQVBJXG4gICAgICpcbiAgICAgKi9cblxuICAgIHZhciBkZWZhdWx0TG9nZ2VyID0gbmV3IExvZ2dlcigpO1xuXG4gICAgdmFyIF9sb2dnZXJzQnlOYW1lID0ge307XG4gICAgZGVmYXVsdExvZ2dlci5nZXRMb2dnZXIgPSBmdW5jdGlvbiBnZXRMb2dnZXIobmFtZSkge1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgIT09IFwic3RyaW5nXCIgfHwgbmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJZb3UgbXVzdCBzdXBwbHkgYSBuYW1lIHdoZW4gY3JlYXRpbmcgYSBsb2dnZXIuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvZ2dlciA9IF9sb2dnZXJzQnlOYW1lW25hbWVdO1xuICAgICAgICBpZiAoIWxvZ2dlcikge1xuICAgICAgICAgIGxvZ2dlciA9IF9sb2dnZXJzQnlOYW1lW25hbWVdID0gbmV3IExvZ2dlcihcbiAgICAgICAgICAgIG5hbWUsIGRlZmF1bHRMb2dnZXIuZ2V0TGV2ZWwoKSwgZGVmYXVsdExvZ2dlci5tZXRob2RGYWN0b3J5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH07XG5cbiAgICAvLyBHcmFiIHRoZSBjdXJyZW50IGdsb2JhbCBsb2cgdmFyaWFibGUgaW4gY2FzZSBvZiBvdmVyd3JpdGVcbiAgICB2YXIgX2xvZyA9ICh0eXBlb2Ygd2luZG93ICE9PSB1bmRlZmluZWRUeXBlKSA/IHdpbmRvdy5sb2cgOiB1bmRlZmluZWQ7XG4gICAgZGVmYXVsdExvZ2dlci5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSB1bmRlZmluZWRUeXBlICYmXG4gICAgICAgICAgICAgICB3aW5kb3cubG9nID09PSBkZWZhdWx0TG9nZ2VyKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9nID0gX2xvZztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWZhdWx0TG9nZ2VyO1xuICAgIH07XG5cbiAgICBkZWZhdWx0TG9nZ2VyLmdldExvZ2dlcnMgPSBmdW5jdGlvbiBnZXRMb2dnZXJzKCkge1xuICAgICAgICByZXR1cm4gX2xvZ2dlcnNCeU5hbWU7XG4gICAgfTtcblxuICAgIHJldHVybiBkZWZhdWx0TG9nZ2VyO1xufSkpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvbG9nbGV2ZWwvbGliL2xvZ2xldmVsLmpzXG4vLyBtb2R1bGUgaWQgPSA4N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///87\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(89);\nmodule.exports = __webpack_require__(0).Object.getPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzdkMmUiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gODhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///88\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(30);\nvar $getPrototypeOf = __webpack_require__(47);\n\n__webpack_require__(39)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzPzJhMWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjkgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciAkZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnZ2V0UHJvdG90eXBlT2YnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZihpdCkge1xuICAgIHJldHVybiAkZ2V0UHJvdG90eXBlT2YodG9PYmplY3QoaXQpKTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA4OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///89\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(91), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvci5qcz82NzM4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA5MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///90\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(43);\n__webpack_require__(48);\nmodule.exports = __webpack_require__(33).f('iterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qcz9mZTdlIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX3drcy1leHQnKS5mKCdpdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gOTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///91\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(93), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC5qcz9lNTA1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2xcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA5MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///92\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(94);\n__webpack_require__(42);\n__webpack_require__(99);\n__webpack_require__(100);\nmodule.exports = __webpack_require__(0).Symbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qcz8wNzA3Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN5bWJvbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuU3ltYm9sO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gOTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///93\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(1);\nvar has = __webpack_require__(8);\nvar DESCRIPTORS = __webpack_require__(5);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(45);\nvar META = __webpack_require__(95).KEY;\nvar $fails = __webpack_require__(13);\nvar shared = __webpack_require__(28);\nvar setToStringTag = __webpack_require__(24);\nvar uid = __webpack_require__(20);\nvar wks = __webpack_require__(2);\nvar wksExt = __webpack_require__(33);\nvar wksDefine = __webpack_require__(34);\nvar enumKeys = __webpack_require__(96);\nvar isArray = __webpack_require__(97);\nvar anObject = __webpack_require__(4);\nvar isObject = __webpack_require__(6);\nvar toIObject = __webpack_require__(10);\nvar toPrimitive = __webpack_require__(26);\nvar createDesc = __webpack_require__(19);\nvar _create = __webpack_require__(31);\nvar gOPNExt = __webpack_require__(98);\nvar $GOPD = __webpack_require__(40);\nvar $DP = __webpack_require__(7);\nvar $keys = __webpack_require__(21);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(56).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(35).f = $propertyIsEnumerable;\n __webpack_require__(55).f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(14)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(9)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qcz83ZDY3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBNRVRBID0gcmVxdWlyZSgnLi9fbWV0YScpLktFWTtcbnZhciAkZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgd2tzRGVmaW5lID0gcmVxdWlyZSgnLi9fd2tzLWRlZmluZScpO1xudmFyIGVudW1LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1rZXlzJyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgX2NyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBnT1BORXh0ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4tZXh0Jyk7XG52YXIgJEdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyICREUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BEID0gJEdPUEQuZjtcbnZhciBkUCA9ICREUC5mO1xudmFyIGdPUE4gPSBnT1BORXh0LmY7XG52YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgJEpTT04gPSBnbG9iYWwuSlNPTjtcbnZhciBfc3RyaW5naWZ5ID0gJEpTT04gJiYgJEpTT04uc3RyaW5naWZ5O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEhJRERFTiA9IHdrcygnX2hpZGRlbicpO1xudmFyIFRPX1BSSU1JVElWRSA9IHdrcygndG9QcmltaXRpdmUnKTtcbnZhciBpc0VudW0gPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBTeW1ib2xSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXJlZ2lzdHJ5Jyk7XG52YXIgQWxsU3ltYm9scyA9IHNoYXJlZCgnc3ltYm9scycpO1xudmFyIE9QU3ltYm9scyA9IHNoYXJlZCgnb3Atc3ltYm9scycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0W1BST1RPVFlQRV07XG52YXIgVVNFX05BVElWRSA9IHR5cGVvZiAkU3ltYm9sID09ICdmdW5jdGlvbic7XG52YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0O1xuLy8gRG9uJ3QgdXNlIHNldHRlcnMgaW4gUXQgU2NyaXB0LCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTczXG52YXIgc2V0dGVyID0gIVFPYmplY3QgfHwgIVFPYmplY3RbUFJPVE9UWVBFXSB8fCAhUU9iamVjdFtQUk9UT1RZUEVdLmZpbmRDaGlsZDtcblxuLy8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG52YXIgc2V0U3ltYm9sRGVzYyA9IERFU0NSSVBUT1JTICYmICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRQKHRoaXMsICdhJywgeyB2YWx1ZTogNyB9KS5hOyB9XG4gIH0pKS5hICE9IDc7XG59KSA/IGZ1bmN0aW9uIChpdCwga2V5LCBEKSB7XG4gIHZhciBwcm90b0Rlc2MgPSBnT1BEKE9iamVjdFByb3RvLCBrZXkpO1xuICBpZiAocHJvdG9EZXNjKSBkZWxldGUgT2JqZWN0UHJvdG9ba2V5XTtcbiAgZFAoaXQsIGtleSwgRCk7XG4gIGlmIChwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKSBkUChPYmplY3RQcm90bywga2V5LCBwcm90b0Rlc2MpO1xufSA6IGRQO1xuXG52YXIgd3JhcCA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbFtQUk9UT1RZUEVdKTtcbiAgc3ltLl9rID0gdGFnO1xuICByZXR1cm4gc3ltO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX05BVElWRSAmJiB0eXBlb2YgJFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJyA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgaW5zdGFuY2VvZiAkU3ltYm9sO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIEQpIHtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90bykgJGRlZmluZVByb3BlcnR5KE9QU3ltYm9scywga2V5LCBEKTtcbiAgYW5PYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBhbk9iamVjdChEKTtcbiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7XG4gICAgaWYgKCFELmVudW1lcmFibGUpIHtcbiAgICAgIGlmICghaGFzKGl0LCBISURERU4pKSBkUChpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG4gICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkgaXRbSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBEID0gX2NyZWF0ZShELCB7IGVudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpIH0pO1xuICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG4gIH0gcmV0dXJuIGRQKGl0LCBrZXksIEQpO1xufTtcbnZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoaXQsIFApIHtcbiAgYW5PYmplY3QoaXQpO1xuICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpO1xuICB2YXIgaSA9IDA7XG4gIHZhciBsID0ga2V5cy5sZW5ndGg7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsID4gaSkgJGRlZmluZVByb3BlcnR5KGl0LCBrZXkgPSBrZXlzW2krK10sIFBba2V5XSk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpdCwgUCkge1xuICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG59O1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSkge1xuICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpO1xuICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XSA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHtcbiAgaXQgPSB0b0lPYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm47XG4gIHZhciBEID0gZ09QRChpdCwga2V5KTtcbiAgaWYgKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSkgRC5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgcmV0dXJuIEQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICB2YXIgbmFtZXMgPSBnT1BOKHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoIWhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiBrZXkgIT0gSElEREVOICYmIGtleSAhPSBNRVRBKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgdmFyIElTX09QID0gaXQgPT09IE9iamVjdFByb3RvO1xuICB2YXIgbmFtZXMgPSBnT1BOKElTX09QID8gT1BTeW1ib2xzIDogdG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYgKElTX09QID8gaGFzKE9iamVjdFByb3RvLCBrZXkpIDogdHJ1ZSkpIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIDE5LjQuMS4xIFN5bWJvbChbZGVzY3JpcHRpb25dKVxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKSB7XG4gICAgaWYgKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKSB0aHJvdyBUeXBlRXJyb3IoJ1N5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciEnKTtcbiAgICB2YXIgdGFnID0gdWlkKGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcbiAgICB2YXIgJHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvKSAkc2V0LmNhbGwoT1BTeW1ib2xzLCB2YWx1ZSk7XG4gICAgICBpZiAoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSkgdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcbiAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG4gICAgfTtcbiAgICBpZiAoREVTQ1JJUFRPUlMgJiYgc2V0dGVyKSBzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6ICRzZXQgfSk7XG4gICAgcmV0dXJuIHdyYXAodGFnKTtcbiAgfTtcbiAgcmVkZWZpbmUoJFN5bWJvbFtQUk9UT1RZUEVdLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faztcbiAgfSk7XG5cbiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICREUC5mID0gJGRlZmluZVByb3BlcnR5O1xuICByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmYgPSBnT1BORXh0LmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpLmYgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJykuZiA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbiAgaWYgKERFU0NSSVBUT1JTICYmICFyZXF1aXJlKCcuL19saWJyYXJ5JykpIHtcbiAgICByZWRlZmluZShPYmplY3RQcm90bywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB0cnVlKTtcbiAgfVxuXG4gIHdrc0V4dC5mID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gd3JhcCh3a3MobmFtZSkpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFN5bWJvbDogJFN5bWJvbCB9KTtcblxuZm9yICh2YXIgZXM2U3ltYm9scyA9IChcbiAgLy8gMTkuNC4yLjIsIDE5LjQuMi4zLCAxOS40LjIuNCwgMTkuNC4yLjYsIDE5LjQuMi44LCAxOS40LjIuOSwgMTkuNC4yLjEwLCAxOS40LjIuMTEsIDE5LjQuMi4xMiwgMTkuNC4yLjEzLCAxOS40LjIuMTRcbiAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJ1xuKS5zcGxpdCgnLCcpLCBqID0gMDsgZXM2U3ltYm9scy5sZW5ndGggPiBqOyl3a3MoZXM2U3ltYm9sc1tqKytdKTtcblxuZm9yICh2YXIgd2VsbEtub3duU3ltYm9scyA9ICRrZXlzKHdrcy5zdG9yZSksIGsgPSAwOyB3ZWxsS25vd25TeW1ib2xzLmxlbmd0aCA+IGs7KSB3a3NEZWZpbmUod2VsbEtub3duU3ltYm9sc1trKytdKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ1N5bWJvbCcsIHtcbiAgLy8gMTkuNC4yLjEgU3ltYm9sLmZvcihrZXkpXG4gICdmb3InOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGhhcyhTeW1ib2xSZWdpc3RyeSwga2V5ICs9ICcnKVxuICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG4gICAgICA6IFN5bWJvbFJlZ2lzdHJ5W2tleV0gPSAkU3ltYm9sKGtleSk7XG4gIH0sXG4gIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihzeW0pIHtcbiAgICBpZiAoIWlzU3ltYm9sKHN5bSkpIHRocm93IFR5cGVFcnJvcihzeW0gKyAnIGlzIG5vdCBhIHN5bWJvbCEnKTtcbiAgICBmb3IgKHZhciBrZXkgaW4gU3ltYm9sUmVnaXN0cnkpIGlmIChTeW1ib2xSZWdpc3RyeVtrZXldID09PSBzeW0pIHJldHVybiBrZXk7XG4gIH0sXG4gIHVzZVNldHRlcjogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSB0cnVlOyB9LFxuICB1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gZmFsc2U7IH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0Jywge1xuICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4gIGNyZWF0ZTogJGNyZWF0ZSxcbiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4gIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG4gIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG4gIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgUyA9ICRTeW1ib2woKTtcbiAgLy8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge31cbiAgLy8gV2ViS2l0IGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyBudWxsXG4gIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gIHJldHVybiBfc3RyaW5naWZ5KFtTXSkgIT0gJ1tudWxsXScgfHwgX3N0cmluZ2lmeSh7IGE6IFMgfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9Jztcbn0pKSwgJ0pTT04nLCB7XG4gIHN0cmluZ2lmeTogZnVuY3Rpb24gc3RyaW5naWZ5KGl0KSB7XG4gICAgdmFyIGFyZ3MgPSBbaXRdO1xuICAgIHZhciBpID0gMTtcbiAgICB2YXIgcmVwbGFjZXIsICRyZXBsYWNlcjtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgJHJlcGxhY2VyID0gcmVwbGFjZXIgPSBhcmdzWzFdO1xuICAgIGlmICghaXNPYmplY3QocmVwbGFjZXIpICYmIGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKSByZXR1cm47IC8vIElFOCByZXR1cm5zIHN0cmluZyBvbiB1bmRlZmluZWRcbiAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mICRyZXBsYWNlciA9PSAnZnVuY3Rpb24nKSB2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgaWYgKCFpc1N5bWJvbCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIGFyZ3NbMV0gPSByZXBsYWNlcjtcbiAgICByZXR1cm4gX3N0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJncyk7XG4gIH1cbn0pO1xuXG4vLyAxOS40LjMuNCBTeW1ib2wucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdKGhpbnQpXG4kU3ltYm9sW1BST1RPVFlQRV1bVE9fUFJJTUlUSVZFXSB8fCByZXF1aXJlKCcuL19oaWRlJykoJFN5bWJvbFtQUk9UT1RZUEVdLCBUT19QUklNSVRJVkUsICRTeW1ib2xbUFJPVE9UWVBFXS52YWx1ZU9mKTtcbi8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcbi8vIDIwLjIuMS45IE1hdGhbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7XG4vLyAyNC4zLjMgSlNPTltAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoZ2xvYmFsLkpTT04sICdKU09OJywgdHJ1ZSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA5NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///94\n")},function(module,exports,__webpack_require__){eval("var META = __webpack_require__(20)('meta');\nvar isObject = __webpack_require__(6);\nvar has = __webpack_require__(8);\nvar setDesc = __webpack_require__(7).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(13)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanM/ZDNhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTUVUQSA9IHJlcXVpcmUoJy4vX3VpZCcpKCdtZXRhJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBzZXREZXNjID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBpZCA9IDA7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBGUkVFWkUgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7XG4gIHNldERlc2MoaXQsIE1FVEEsIHsgdmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IH0pO1xufTtcbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuICdFJztcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gb2JqZWN0IElEXG4gIH0gcmV0dXJuIGl0W01FVEFdLmk7XG59O1xudmFyIGdldFdlYWsgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuIHRydWU7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gcmV0dXJuIGl0W01FVEFdLnc7XG59O1xuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaRSAmJiBtZXRhLk5FRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzKGl0LCBNRVRBKSkgc2V0TWV0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgbWV0YSA9IG1vZHVsZS5leHBvcnRzID0ge1xuICBLRVk6IE1FVEEsXG4gIE5FRUQ6IGZhbHNlLFxuICBmYXN0S2V5OiBmYXN0S2V5LFxuICBnZXRXZWFrOiBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWV0YS5qc1xuLy8gbW9kdWxlIGlkID0gOTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///95\n")},function(module,exports,__webpack_require__){eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(21);\nvar gOPS = __webpack_require__(55);\nvar pIE = __webpack_require__(35);\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0ta2V5cy5qcz81ZGNlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGFsbCBlbnVtZXJhYmxlIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBzeW1ib2xzXG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHJlc3VsdCA9IGdldEtleXMoaXQpO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgaWYgKGdldFN5bWJvbHMpIHtcbiAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpO1xuICAgIHZhciBpc0VudW0gPSBwSUUuZjtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAoc3ltYm9scy5sZW5ndGggPiBpKSBpZiAoaXNFbnVtLmNhbGwoaXQsIGtleSA9IHN5bWJvbHNbaSsrXSkpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSA5NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///96\n")},function(module,exports,__webpack_require__){eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(16);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LmpzP2VkNDMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDk3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///97\n")},function(module,exports,__webpack_require__){eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(10);\nvar gOPN = __webpack_require__(56).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qcz80NmI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG52YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxudmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGdPUE4oaXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHJldHVybiB3aW5kb3dOYW1lcyAmJiB0b1N0cmluZy5jYWxsKGl0KSA9PSAnW29iamVjdCBXaW5kb3ddJyA/IGdldFdpbmRvd05hbWVzKGl0KSA6IGdPUE4odG9JT2JqZWN0KGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qc1xuLy8gbW9kdWxlIGlkID0gOThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///98\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(34)('asyncIterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcz8zOTg5Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnYXN5bmNJdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gOTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///99\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(34)('observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZS5qcz80MTY3Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnb2JzZXJ2YWJsZScpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///100\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(102), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz85MjIwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gMTAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///101\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(103);\nmodule.exports = __webpack_require__(0).Object.setPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz84YmYwIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Quc2V0UHJvdG90eXBlT2Y7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L3NldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDEwMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///102\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(3);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(104).set });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcz83YjE4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMy4xOSBPYmplY3Quc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IHNldFByb3RvdHlwZU9mOiByZXF1aXJlKCcuL19zZXQtcHJvdG8nKS5zZXQgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDEwM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///103\n")},function(module,exports,__webpack_require__){eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(6);\nvar anObject = __webpack_require__(4);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(15)(Function.call, __webpack_require__(40).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtcHJvdG8uanM/NjVhNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXByb3RvLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///104\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(106), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzPzNhZjQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGVcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2NyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///105\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(107);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlLmpzP2EwY2UiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGUoUCwgRCkge1xuICByZXR1cm4gJE9iamVjdC5jcmVhdGUoUCwgRCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///106\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(3);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(31) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlLmpzP2IwNWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IGNyZWF0ZTogcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///107\n")},,,,,,,,,function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(63);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(64);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(65);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Bus2 = __webpack_require__(117);\n\nvar _Bus3 = _interopRequireDefault(_Bus2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* @author micaelpedrosa@gmail.com\n* Message BUS Interface is an extension of the Bus\n* It is used mainly in the internal sandbox routing.\n*/\nvar MiniBus = function (_Bus) {\n (0, _inherits3.default)(MiniBus, _Bus);\n\n function MiniBus() {\n (0, _classCallCheck3.default)(this, MiniBus);\n return (0, _possibleConstructorReturn3.default)(this, (MiniBus.__proto__ || (0, _getPrototypeOf2.default)(MiniBus)).call(this));\n }\n\n /**\n * Post a message for routing. Message is routed directly to the external routing _onPostMessage.\n * @param {Message} inMsg JSON with mandatory Message structure {id, type, from, to}\n * @param {Callback} responseCallback Optional callback if a response is expected from the request. A response will be always sent, even if it is a \"Timeout\".\n * @return {number} the Message id\n */\n\n\n (0, _createClass3.default)(MiniBus, [{\n key: 'postMessage',\n value: function postMessage(inMsg, responseCallback, timeout) {\n var _this = this;\n\n _this._genId(inMsg);\n _this._responseCallback(inMsg, responseCallback, timeout);\n\n //always send to external (to core MessageBus)\n _this._onPostMessage(inMsg);\n\n return inMsg.id;\n }\n\n //internal method used when a message is received by an external routing system\n\n }, {\n key: '_onMessage',\n value: function _onMessage(msg) {\n var _this = this;\n\n if (!_this._onResponse(msg)) {\n var itemList = _this._subscriptions[msg.to];\n if (itemList) {\n _this._publishOn(itemList, msg);\n if (!msg.to.startsWith('hyperty')) {\n _this._publishOnDefault(msg);\n }\n } else {\n _this._publishOnDefault(msg);\n }\n }\n }\n }]);\n return MiniBus;\n}(_Bus3.default); /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\n\nexports.default = MiniBus;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvTWluaUJ1cy5qcz9lNTIwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cbmltcG9ydCBCdXMgZnJvbSAnLi9CdXMnO1xuXG4vKipcbiogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxuKiBNZXNzYWdlIEJVUyBJbnRlcmZhY2UgaXMgYW4gZXh0ZW5zaW9uIG9mIHRoZSBCdXNcbiogSXQgaXMgdXNlZCBtYWlubHkgaW4gdGhlIGludGVybmFsIHNhbmRib3ggcm91dGluZy5cbiovXG5jbGFzcyBNaW5pQnVzIGV4dGVuZHMgQnVzIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBvc3QgYSBtZXNzYWdlIGZvciByb3V0aW5nLiBNZXNzYWdlIGlzIHJvdXRlZCBkaXJlY3RseSB0byB0aGUgZXh0ZXJuYWwgcm91dGluZyBfb25Qb3N0TWVzc2FnZS5cbiAgICogQHBhcmFtICB7TWVzc2FnZX0gaW5Nc2cgICAgICAgICAgICBKU09OIHdpdGggbWFuZGF0b3J5IE1lc3NhZ2Ugc3RydWN0dXJlIHtpZCwgdHlwZSwgZnJvbSwgdG99XG4gICAqIEBwYXJhbSAge0NhbGxiYWNrfSByZXNwb25zZUNhbGxiYWNrIE9wdGlvbmFsIGNhbGxiYWNrIGlmIGEgcmVzcG9uc2UgaXMgZXhwZWN0ZWQgZnJvbSB0aGUgcmVxdWVzdC4gQSByZXNwb25zZSB3aWxsIGJlIGFsd2F5cyBzZW50LCBldmVuIGlmIGl0IGlzIGEgXCJUaW1lb3V0XCIuXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgICAgICAgICAgICB0aGUgTWVzc2FnZSBpZFxuICAgKi9cbiAgcG9zdE1lc3NhZ2UoaW5Nc2csIHJlc3BvbnNlQ2FsbGJhY2ssIHRpbWVvdXQpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMuX2dlbklkKGluTXNnKTtcbiAgICBfdGhpcy5fcmVzcG9uc2VDYWxsYmFjayhpbk1zZywgcmVzcG9uc2VDYWxsYmFjaywgdGltZW91dCk7XG5cbiAgICAvL2Fsd2F5cyBzZW5kIHRvIGV4dGVybmFsICh0byBjb3JlIE1lc3NhZ2VCdXMpXG4gICAgX3RoaXMuX29uUG9zdE1lc3NhZ2UoaW5Nc2cpO1xuXG4gICAgcmV0dXJuIGluTXNnLmlkO1xuICB9XG5cbiAgLy9pbnRlcm5hbCBtZXRob2QgdXNlZCB3aGVuIGEgbWVzc2FnZSBpcyByZWNlaXZlZCBieSBhbiBleHRlcm5hbCByb3V0aW5nIHN5c3RlbVxuICBfb25NZXNzYWdlKG1zZykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIV90aGlzLl9vblJlc3BvbnNlKG1zZykpIHtcbiAgICAgIGxldCBpdGVtTGlzdCA9IF90aGlzLl9zdWJzY3JpcHRpb25zW21zZy50b107XG4gICAgICBpZiAoaXRlbUxpc3QpIHtcbiAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKTtcbiAgICAgICAgaWYgKCFtc2cudG8uc3RhcnRzV2l0aCgnaHlwZXJ0eScpKSB7XG4gICAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbkRlZmF1bHQobXNnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbkRlZmF1bHQobXNnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBNaW5pQnVzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9idXMvTWluaUJ1cy5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkE7QUFDQTs7Ozs7QUFDQTs7Ozs7QUFLQTs7O0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUF2Q0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///116\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(41);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(87);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('Bus');\n\n/**\n* @author micaelpedrosa@gmail.com\n* Minimal interface and implementation to send and receive messages. It can be reused in many type of components.\n* Components that need a message system should receive this class as a dependency or extend it.\n* Extensions should implement the following private methods: _onPostMessage and _registerExternalListener\n*/\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n\n// Log system\n\nvar Bus = function () {\n /* private\n _msgId: number;\n _subscriptions: \n _responseTimeOut: number\n _responseCallbacks: void>\n */\n\n function Bus() {\n (0, _classCallCheck3.default)(this, Bus);\n\n var _this = this;\n _this._msgId = 0;\n _this._subscriptions = {};\n\n _this._responseTimeOut = 15000; //default to 3s\n _this._responseCallbacks = {};\n\n _this._registerExternalListener();\n }\n\n /**\n * Register listener to receive message when \"msg.to === url\".\n * Special url \"*\" for default listener is accepted to intercept all messages.\n * @param {URL} url Address to intercept, tha is in the message \"to\"\n * @param {Listener} listener listener\n * @return {MsgListener} instance of MsgListener\n */\n\n\n (0, _createClass3.default)(Bus, [{\n key: 'addListener',\n value: function addListener(url, listener) {\n var _this = this;\n\n var item = new MsgListener(_this._subscriptions, url, listener);\n var itemList = _this._subscriptions[url];\n if (!itemList) {\n itemList = [];\n _this._subscriptions[url] = itemList;\n }\n\n itemList.push(item);\n return item;\n }\n\n /**\n * Manually add a response listener. Only one listener per message ID should exist.\n * ATENTION, there is no timeout for this listener.\n * The listener should be removed with a removeResponseListener, failing to do this will result in a unreleased memory problem.\n * @param {URL} url Origin address of the message sent, \"msg.from\".\n * @param {number} msgId Message ID that is returned from the postMessage.\n * @param {Function} responseListener Callback function for the response\n */\n\n }, {\n key: 'addResponseListener',\n value: function addResponseListener(url, msgId, responseListener) {\n this._responseCallbacks[url + msgId] = responseListener;\n }\n\n /**\n * Remove the response listener.\n * @param {URL} url Origin address of the message sent, \"msg.from\".\n * @param {number} msgId Message ID that is returned from the postMessage\n */\n\n }, {\n key: 'removeResponseListener',\n value: function removeResponseListener(url, msgId) {\n delete this._responseCallbacks[url + msgId];\n }\n\n /**\n * Remove all existent listeners for the URL\n * @param {URL} url Address registered\n */\n\n }, {\n key: 'removeAllListenersOf',\n value: function removeAllListenersOf(url) {\n delete this._subscriptions[url];\n }\n\n /**\n * Helper method to bind listeners (in both directions) into other MiniBus target.\n * @param {URL} outUrl Outbound URL, register listener for url in direction \"this -> target\"\n * @param {URL} inUrl Inbound URL, register listener for url in direction \"target -> this\"\n * @param {MiniBus} target The other target MiniBus\n * @return {Bound} an object that contains the properties [thisListener, targetListener] and the unbind method.\n */\n\n }, {\n key: 'bind',\n value: function bind(outUrl, inUrl, target) {\n var _this2 = this;\n\n var _this = this;\n\n var thisListn = _this.addListener(outUrl, function (msg) {\n target.postMessage(msg);\n });\n\n var targetListn = target.addListener(inUrl, function (msg) {\n _this.postMessage(msg);\n });\n\n return {\n thisListener: thisListn,\n targetListener: targetListn,\n unbind: function unbind() {\n _this2.thisListener.remove();\n _this2.targetListener.remove();\n }\n };\n }\n\n //publish on default listeners\n\n }, {\n key: '_publishOnDefault',\n value: function _publishOnDefault(msg) {\n //is there any \"*\" (default) listeners?\n var itemList = this._subscriptions['*'];\n if (itemList) {\n this._publishOn(itemList, msg);\n }\n }\n\n //publish on a subscription list.\n\n }, {\n key: '_publishOn',\n value: function _publishOn(itemList, msg) {\n itemList.forEach(function (sub) {\n sub._callback(msg);\n });\n }\n }, {\n key: '_responseCallback',\n value: function _responseCallback(inMsg, responseCallback) {\n var timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n var _this = this;\n\n //automatic management of response handlers\n if (responseCallback) {\n var responseId = inMsg.from + inMsg.id;\n _this._responseCallbacks[responseId] = responseCallback;\n\n if (timeout) {\n setTimeout(function () {\n var responseFun = _this._responseCallbacks[responseId];\n delete _this._responseCallbacks[responseId];\n\n if (responseFun) {\n var errorMsg = {\n id: inMsg.id, type: 'response',\n body: { code: 408, desc: 'Response timeout!', value: inMsg }\n };\n\n responseFun(errorMsg);\n }\n }, _this._responseTimeOut);\n }\n }\n }\n\n //TODO: provisional responses should reset timeout\n\n }, {\n key: '_onResponse',\n value: function _onResponse(msg) {\n var _this = this;\n\n if (msg.type === 'response') {\n var responseId = msg.to + msg.id;\n var responseFun = _this._responseCallbacks[responseId];\n\n if (msg.body.code >= 200) {\n //if it's a provisional response, don't delete response listener\n delete _this._responseCallbacks[responseId];\n }\n\n if (responseFun) {\n responseFun(msg);\n return true;\n }\n }\n\n return false;\n }\n\n //receive messages from external interface\n\n }, {\n key: '_onMessage',\n value: function _onMessage(msg) {\n var _this = this;\n\n if (!_this._onResponse(msg)) {\n var itemList = _this._subscriptions[msg.to];\n if (itemList) {\n _this._publishOn(itemList, msg);\n } else {\n _this._publishOnDefault(msg);\n }\n }\n }\n }, {\n key: '_genId',\n value: function _genId(inMsg) {\n //TODO: how do we manage message ID's? Should it be a global runtime counter, or per URL address?\n //Global counter will not work, because there will be multiple MiniBus instances!\n //Per URL, can be a lot of data to maintain!\n //Maybe a counter per MiniBus instance. This is the assumed solution for now.\n if (!inMsg.id || inMsg.id === 0) {\n this._msgId++;\n inMsg.id = this._msgId;\n }\n }\n\n /**\n * Send messages to local listeners, or if not exists to external listeners.\n * It's has an optional mechanism for automatic management of response handlers.\n * The response handler will be unregistered after receiving the response, or after response timeout (default to 3s).\n * @param {Message} msg Message to send. Message ID is automatically added to the message.\n * @param {Function} responseCallback Optional parameter, if the developer what's automatic response management.\n * @return {number} Returns the message ID, in case it should be needed for manual management of the response handler.\n */\n\n }, {\n key: 'postMessage',\n value: function postMessage(inMsg, responseCallback) {}\n\n /**\n * Function to post messages with a number of retries in case timeouts occur.\n * @param {Message} msg Message to send. Message ID is automatically added to the message.\n * @param {Function} responseCallback Optional parameter, if the developer what's automatic response management.\n * @param {integer} retries number of retries when timeouts occur\n * @return {boolean} message delivery result;\n */\n\n }, {\n key: 'postMessageWithRetries',\n value: function postMessageWithRetries(msg, retries, callback) {\n\n var _this = this;\n\n var retry = 0;\n //let timeout = true;\n\n var sendMsg = function sendMsg() {\n\n return new _promise2.default(function (resolve, reject) {\n _this.postMessage(msg, function (reply) {\n if (reply.body.code === 408 || reply.body.code === 500) reject();else {\n log.info('[Bus.postMessageWithRetries] msg delivered: ', msg);\n callback(reply);\n resolve();\n }\n });\n });\n };\n\n var tryAgain = function tryAgain() {\n sendMsg().then(function () {\n //timeout = false;\n return;\n }, function () {\n log.warn('[Bus.postMessageWithRetries] Message Bounced (retry ' + retry + '): \\'', msg);\n if (retry++ < retries) {\n tryAgain();\n // setTimeout(() => { tryAgain(); }, 1000);\n } else {\n var error = '[Error] Message Bounced (delivery attempts ' + retries + '): \\'';\n throw new Error(error + msg);\n }\n });\n };\n tryAgain();\n }\n\n /**\n * Not public available, used by the class extension implementation, to process messages from the public \"postMessage\" without a registered listener.\n * Used to send the message to an external interface, like a WebWorker, IFrame, etc.\n * @param {Message.Message} msg Message\n */\n\n }, {\n key: '_onPostMessage',\n value: function _onPostMessage(msg) {} /*implementation will send message to external system*/\n\n /**\n * Not public available, used by the class extension implementation, to process all messages that enter the MiniBus from an external interface, like a WebWorker, IFrame, etc.\n * This method is called one time in the constructor to register external listeners.\n * The implementation will probably call the \"_onMessage\" method to publish in the local listeners.\n * DO NOT call \"postMessage\", there is a danger that the message enters in a cycle!\n */\n\n }, {\n key: '_registerExternalListener',\n value: function _registerExternalListener() {/*implementation will register external listener and call \"this._onMessage(msg)\" */}\n }]);\n return Bus;\n}();\n\nvar MsgListener = function () {\n /* private\n _subscriptions: ;\n _url: string;\n _callback: (msg) => void;\n */\n\n function MsgListener(subscriptions, url, callback) {\n (0, _classCallCheck3.default)(this, MsgListener);\n\n var _this = this;\n\n _this._subscriptions = subscriptions;\n _this._url = url;\n _this._callback = callback;\n }\n\n (0, _createClass3.default)(MsgListener, [{\n key: 'remove',\n\n\n /**\n * Remove this listener from the Bus\n */\n value: function remove() {\n var _this = this;\n\n var subs = _this._subscriptions[_this._url];\n if (subs) {\n var index = subs.indexOf(_this);\n subs.splice(index, 1);\n\n //if there are no listeners, remove the subscription entirely.\n if (subs.length === 0) {\n delete _this._subscriptions[_this._url];\n }\n }\n }\n }, {\n key: 'url',\n get: function get() {\n return this._url;\n }\n }]);\n return MsgListener;\n}();\n\nexports.default = Bus;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvQnVzLmpzPzZkMTciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXG4qXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4qXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4qXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbioqL1xuXG4vLyBMb2cgc3lzdGVtXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0J1cycpO1xuXG4vKipcbiogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxuKiBNaW5pbWFsIGludGVyZmFjZSBhbmQgaW1wbGVtZW50YXRpb24gdG8gc2VuZCBhbmQgcmVjZWl2ZSBtZXNzYWdlcy4gSXQgY2FuIGJlIHJldXNlZCBpbiBtYW55IHR5cGUgb2YgY29tcG9uZW50cy5cbiogQ29tcG9uZW50cyB0aGF0IG5lZWQgYSBtZXNzYWdlIHN5c3RlbSBzaG91bGQgcmVjZWl2ZSB0aGlzIGNsYXNzIGFzIGEgZGVwZW5kZW5jeSBvciBleHRlbmQgaXQuXG4qIEV4dGVuc2lvbnMgc2hvdWxkIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIHByaXZhdGUgbWV0aG9kczogX29uUG9zdE1lc3NhZ2UgYW5kIF9yZWdpc3RlckV4dGVybmFsTGlzdGVuZXJcbiovXG5jbGFzcyBCdXMge1xuICAvKiBwcml2YXRlXG4gIF9tc2dJZDogbnVtYmVyO1xuICBfc3Vic2NyaXB0aW9uczogPHVybDogTXNnTGlzdGVuZXJbXT5cblxuICBfcmVzcG9uc2VUaW1lT3V0OiBudW1iZXJcbiAgX3Jlc3BvbnNlQ2FsbGJhY2tzOiA8dXJsK2lkOiAobXNnKSA9PiB2b2lkPlxuXG4gICovXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBfdGhpcy5fbXNnSWQgPSAwO1xuICAgIF90aGlzLl9zdWJzY3JpcHRpb25zID0ge307XG5cbiAgICBfdGhpcy5fcmVzcG9uc2VUaW1lT3V0ID0gMTUwMDA7IC8vZGVmYXVsdCB0byAzc1xuICAgIF90aGlzLl9yZXNwb25zZUNhbGxiYWNrcyA9IHt9O1xuXG4gICAgX3RoaXMuX3JlZ2lzdGVyRXh0ZXJuYWxMaXN0ZW5lcigpO1xuICB9XG5cbiAgLyoqXG4gICogUmVnaXN0ZXIgbGlzdGVuZXIgdG8gcmVjZWl2ZSBtZXNzYWdlIHdoZW4gXCJtc2cudG8gPT09IHVybFwiLlxuICAqIFNwZWNpYWwgdXJsIFwiKlwiIGZvciBkZWZhdWx0IGxpc3RlbmVyIGlzIGFjY2VwdGVkIHRvIGludGVyY2VwdCBhbGwgbWVzc2FnZXMuXG4gICogQHBhcmFtIHtVUkx9IHVybCBBZGRyZXNzIHRvIGludGVyY2VwdCwgdGhhIGlzIGluIHRoZSBtZXNzYWdlIFwidG9cIlxuICAqIEBwYXJhbSB7TGlzdGVuZXJ9IGxpc3RlbmVyIGxpc3RlbmVyXG4gICogQHJldHVybiB7TXNnTGlzdGVuZXJ9IGluc3RhbmNlIG9mIE1zZ0xpc3RlbmVyXG4gICovXG4gIGFkZExpc3RlbmVyKHVybCwgbGlzdGVuZXIpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IGl0ZW0gPSBuZXcgTXNnTGlzdGVuZXIoX3RoaXMuX3N1YnNjcmlwdGlvbnMsIHVybCwgbGlzdGVuZXIpO1xuICAgIGxldCBpdGVtTGlzdCA9IF90aGlzLl9zdWJzY3JpcHRpb25zW3VybF07XG4gICAgaWYgKCFpdGVtTGlzdCkge1xuICAgICAgaXRlbUxpc3QgPSBbXTtcbiAgICAgIF90aGlzLl9zdWJzY3JpcHRpb25zW3VybF0gPSBpdGVtTGlzdDtcbiAgICB9XG5cbiAgICBpdGVtTGlzdC5wdXNoKGl0ZW0pO1xuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IGFkZCBhIHJlc3BvbnNlIGxpc3RlbmVyLiBPbmx5IG9uZSBsaXN0ZW5lciBwZXIgbWVzc2FnZSBJRCBzaG91bGQgZXhpc3QuXG4gICAqIEFURU5USU9OLCB0aGVyZSBpcyBubyB0aW1lb3V0IGZvciB0aGlzIGxpc3RlbmVyLlxuICAgKiBUaGUgbGlzdGVuZXIgc2hvdWxkIGJlIHJlbW92ZWQgd2l0aCBhIHJlbW92ZVJlc3BvbnNlTGlzdGVuZXIsIGZhaWxpbmcgdG8gZG8gdGhpcyB3aWxsIHJlc3VsdCBpbiBhIHVucmVsZWFzZWQgbWVtb3J5IHByb2JsZW0uXG4gICAqIEBwYXJhbSB7VVJMfSB1cmwgT3JpZ2luIGFkZHJlc3Mgb2YgdGhlIG1lc3NhZ2Ugc2VudCwgXCJtc2cuZnJvbVwiLlxuICAgKiBAcGFyYW0ge251bWJlcn0gbXNnSWQgTWVzc2FnZSBJRCB0aGF0IGlzIHJldHVybmVkIGZyb20gdGhlIHBvc3RNZXNzYWdlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNwb25zZUxpc3RlbmVyIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgcmVzcG9uc2VcbiAgICovXG4gIGFkZFJlc3BvbnNlTGlzdGVuZXIodXJsLCBtc2dJZCwgcmVzcG9uc2VMaXN0ZW5lcikge1xuICAgIHRoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3VybCArIG1zZ0lkXSA9IHJlc3BvbnNlTGlzdGVuZXI7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSByZXNwb25zZSBsaXN0ZW5lci5cbiAgICogQHBhcmFtIHtVUkx9IHVybCBPcmlnaW4gYWRkcmVzcyBvZiB0aGUgbWVzc2FnZSBzZW50LCBcIm1zZy5mcm9tXCIuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtc2dJZCAgTWVzc2FnZSBJRCB0aGF0IGlzIHJldHVybmVkIGZyb20gdGhlIHBvc3RNZXNzYWdlXG4gICAqL1xuICByZW1vdmVSZXNwb25zZUxpc3RlbmVyKHVybCwgbXNnSWQpIHtcbiAgICBkZWxldGUgdGhpcy5fcmVzcG9uc2VDYWxsYmFja3NbdXJsICsgbXNnSWRdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgZXhpc3RlbnQgbGlzdGVuZXJzIGZvciB0aGUgVVJMXG4gICAqIEBwYXJhbSAge1VSTH0gdXJsIEFkZHJlc3MgcmVnaXN0ZXJlZFxuICAgKi9cbiAgcmVtb3ZlQWxsTGlzdGVuZXJzT2YodXJsKSB7XG4gICAgZGVsZXRlIHRoaXMuX3N1YnNjcmlwdGlvbnNbdXJsXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGJpbmQgbGlzdGVuZXJzIChpbiBib3RoIGRpcmVjdGlvbnMpIGludG8gb3RoZXIgTWluaUJ1cyB0YXJnZXQuXG4gICAqIEBwYXJhbSAge1VSTH0gb3V0VXJsIE91dGJvdW5kIFVSTCwgcmVnaXN0ZXIgbGlzdGVuZXIgZm9yIHVybCBpbiBkaXJlY3Rpb24gXCJ0aGlzIC0+IHRhcmdldFwiXG4gICAqIEBwYXJhbSAge1VSTH0gaW5VcmwgSW5ib3VuZCBVUkwsIHJlZ2lzdGVyIGxpc3RlbmVyIGZvciB1cmwgaW4gZGlyZWN0aW9uIFwidGFyZ2V0IC0+IHRoaXNcIlxuICAgKiBAcGFyYW0gIHtNaW5pQnVzfSB0YXJnZXQgVGhlIG90aGVyIHRhcmdldCBNaW5pQnVzXG4gICAqIEByZXR1cm4ge0JvdW5kfSBhbiBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgcHJvcGVydGllcyBbdGhpc0xpc3RlbmVyLCB0YXJnZXRMaXN0ZW5lcl0gYW5kIHRoZSB1bmJpbmQgbWV0aG9kLlxuICAgKi9cbiAgYmluZChvdXRVcmwsIGluVXJsLCB0YXJnZXQpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IHRoaXNMaXN0biA9IF90aGlzLmFkZExpc3RlbmVyKG91dFVybCwgKG1zZykgPT4ge1xuICAgICAgdGFyZ2V0LnBvc3RNZXNzYWdlKG1zZyk7XG4gICAgfSk7XG5cbiAgICBsZXQgdGFyZ2V0TGlzdG4gPSB0YXJnZXQuYWRkTGlzdGVuZXIoaW5VcmwsIChtc2cpID0+IHtcbiAgICAgIF90aGlzLnBvc3RNZXNzYWdlKG1zZyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGhpc0xpc3RlbmVyOiB0aGlzTGlzdG4sXG4gICAgICB0YXJnZXRMaXN0ZW5lcjogdGFyZ2V0TGlzdG4sXG4gICAgICB1bmJpbmQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy50aGlzTGlzdGVuZXIucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMudGFyZ2V0TGlzdGVuZXIucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vcHVibGlzaCBvbiBkZWZhdWx0IGxpc3RlbmVyc1xuICBfcHVibGlzaE9uRGVmYXVsdChtc2cpIHtcbiAgICAvL2lzIHRoZXJlIGFueSBcIipcIiAoZGVmYXVsdCkgbGlzdGVuZXJzP1xuICAgIGxldCBpdGVtTGlzdCA9IHRoaXMuX3N1YnNjcmlwdGlvbnNbJyonXTtcbiAgICBpZiAoaXRlbUxpc3QpIHtcbiAgICAgIHRoaXMuX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKTtcbiAgICB9XG4gIH1cblxuICAvL3B1Ymxpc2ggb24gYSBzdWJzY3JpcHRpb24gbGlzdC5cbiAgX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKSB7XG4gICAgaXRlbUxpc3QuZm9yRWFjaCgoc3ViKSA9PiB7XG4gICAgICBzdWIuX2NhbGxiYWNrKG1zZyk7XG4gICAgfSk7XG4gIH1cblxuICBfcmVzcG9uc2VDYWxsYmFjayhpbk1zZywgcmVzcG9uc2VDYWxsYmFjaywgdGltZW91dCA9IHRydWUpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgLy9hdXRvbWF0aWMgbWFuYWdlbWVudCBvZiByZXNwb25zZSBoYW5kbGVyc1xuICAgIGlmIChyZXNwb25zZUNhbGxiYWNrKSB7XG4gICAgICBsZXQgcmVzcG9uc2VJZCA9IGluTXNnLmZyb20gKyBpbk1zZy5pZDtcbiAgICAgIF90aGlzLl9yZXNwb25zZUNhbGxiYWNrc1tyZXNwb25zZUlkXSA9IHJlc3BvbnNlQ2FsbGJhY2s7XG5cbiAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGxldCByZXNwb25zZUZ1biA9IF90aGlzLl9yZXNwb25zZUNhbGxiYWNrc1tyZXNwb25zZUlkXTtcbiAgICAgICAgICBkZWxldGUgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdO1xuXG4gICAgICAgICAgaWYgKHJlc3BvbnNlRnVuKSB7XG4gICAgICAgICAgICBsZXQgZXJyb3JNc2cgPSB7XG4gICAgICAgICAgICAgIGlkOiBpbk1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJyxcbiAgICAgICAgICAgICAgYm9keTogeyBjb2RlOiA0MDgsIGRlc2M6ICdSZXNwb25zZSB0aW1lb3V0IScsIHZhbHVlOiBpbk1zZyB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXNwb25zZUZ1bihlcnJvck1zZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfdGhpcy5fcmVzcG9uc2VUaW1lT3V0KTtcbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4vL1RPRE86IHByb3Zpc2lvbmFsIHJlc3BvbnNlcyBzaG91bGQgcmVzZXQgdGltZW91dFxuICBfb25SZXNwb25zZShtc2cpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKG1zZy50eXBlID09PSAncmVzcG9uc2UnKSB7XG4gICAgICBsZXQgcmVzcG9uc2VJZCA9IG1zZy50byArIG1zZy5pZDtcbiAgICAgIGxldCByZXNwb25zZUZ1biA9IF90aGlzLl9yZXNwb25zZUNhbGxiYWNrc1tyZXNwb25zZUlkXTtcblxuICAgICAgaWYgKG1zZy5ib2R5LmNvZGUgPj0gMjAwKSB7IC8vaWYgaXQncyBhIHByb3Zpc2lvbmFsIHJlc3BvbnNlLCBkb24ndCBkZWxldGUgcmVzcG9uc2UgbGlzdGVuZXJcbiAgICAgICAgZGVsZXRlIF90aGlzLl9yZXNwb25zZUNhbGxiYWNrc1tyZXNwb25zZUlkXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3BvbnNlRnVuKSB7XG4gICAgICAgIHJlc3BvbnNlRnVuKG1zZyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG5cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvL3JlY2VpdmUgbWVzc2FnZXMgZnJvbSBleHRlcm5hbCBpbnRlcmZhY2VcbiAgX29uTWVzc2FnZShtc2cpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKCFfdGhpcy5fb25SZXNwb25zZShtc2cpKSB7XG4gICAgICBsZXQgaXRlbUxpc3QgPSBfdGhpcy5fc3Vic2NyaXB0aW9uc1ttc2cudG9dO1xuICAgICAgaWYgKGl0ZW1MaXN0KSB7XG4gICAgICAgIF90aGlzLl9wdWJsaXNoT24oaXRlbUxpc3QsIG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5fcHVibGlzaE9uRGVmYXVsdChtc2cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9nZW5JZChpbk1zZykge1xuICAgIC8vVE9ETzogaG93IGRvIHdlIG1hbmFnZSBtZXNzYWdlIElEJ3M/IFNob3VsZCBpdCBiZSBhIGdsb2JhbCBydW50aW1lIGNvdW50ZXIsIG9yIHBlciBVUkwgYWRkcmVzcz9cbiAgICAvL0dsb2JhbCBjb3VudGVyIHdpbGwgbm90IHdvcmssIGJlY2F1c2UgdGhlcmUgd2lsbCBiZSBtdWx0aXBsZSBNaW5pQnVzIGluc3RhbmNlcyFcbiAgICAvL1BlciBVUkwsIGNhbiBiZSBhIGxvdCBvZiBkYXRhIHRvIG1haW50YWluIVxuICAgIC8vTWF5YmUgYSBjb3VudGVyIHBlciBNaW5pQnVzIGluc3RhbmNlLiBUaGlzIGlzIHRoZSBhc3N1bWVkIHNvbHV0aW9uIGZvciBub3cuXG4gICAgaWYgKCFpbk1zZy5pZCB8fCBpbk1zZy5pZCA9PT0gMCkge1xuICAgICAgdGhpcy5fbXNnSWQrKztcbiAgICAgIGluTXNnLmlkID0gdGhpcy5fbXNnSWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICogU2VuZCBtZXNzYWdlcyB0byBsb2NhbCBsaXN0ZW5lcnMsIG9yIGlmIG5vdCBleGlzdHMgdG8gZXh0ZXJuYWwgbGlzdGVuZXJzLlxuICAqIEl0J3MgaGFzIGFuIG9wdGlvbmFsIG1lY2hhbmlzbSBmb3IgYXV0b21hdGljIG1hbmFnZW1lbnQgb2YgcmVzcG9uc2UgaGFuZGxlcnMuXG4gICogVGhlIHJlc3BvbnNlIGhhbmRsZXIgd2lsbCBiZSB1bnJlZ2lzdGVyZWQgYWZ0ZXIgcmVjZWl2aW5nIHRoZSByZXNwb25zZSwgb3IgYWZ0ZXIgcmVzcG9uc2UgdGltZW91dCAoZGVmYXVsdCB0byAzcykuXG4gICogQHBhcmFtICB7TWVzc2FnZX0gbXNnIE1lc3NhZ2UgdG8gc2VuZC4gTWVzc2FnZSBJRCBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBtZXNzYWdlLlxuICAqIEBwYXJhbSAge0Z1bmN0aW9ufSByZXNwb25zZUNhbGxiYWNrIE9wdGlvbmFsIHBhcmFtZXRlciwgaWYgdGhlIGRldmVsb3BlciB3aGF0J3MgYXV0b21hdGljIHJlc3BvbnNlIG1hbmFnZW1lbnQuXG4gICogQHJldHVybiB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZXNzYWdlIElELCBpbiBjYXNlIGl0IHNob3VsZCBiZSBuZWVkZWQgZm9yIG1hbnVhbCBtYW5hZ2VtZW50IG9mIHRoZSByZXNwb25zZSBoYW5kbGVyLlxuICAqL1xuICBwb3N0TWVzc2FnZShpbk1zZywgcmVzcG9uc2VDYWxsYmFjaykgeyB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIHBvc3QgbWVzc2FnZXMgd2l0aCBhIG51bWJlciBvZiByZXRyaWVzIGluIGNhc2UgdGltZW91dHMgb2NjdXIuXG4gICAqIEBwYXJhbSAge01lc3NhZ2V9IG1zZyBNZXNzYWdlIHRvIHNlbmQuIE1lc3NhZ2UgSUQgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgbWVzc2FnZS5cbiAgICogQHBhcmFtICB7RnVuY3Rpb259IHJlc3BvbnNlQ2FsbGJhY2sgT3B0aW9uYWwgcGFyYW1ldGVyLCBpZiB0aGUgZGV2ZWxvcGVyIHdoYXQncyBhdXRvbWF0aWMgcmVzcG9uc2UgbWFuYWdlbWVudC5cbiAgICogQHBhcmFtICB7aW50ZWdlcn0gcmV0cmllcyBudW1iZXIgb2YgcmV0cmllcyB3aGVuIHRpbWVvdXRzIG9jY3VyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IG1lc3NhZ2UgZGVsaXZlcnkgcmVzdWx0O1xuICAgKi9cblxuXG4gIHBvc3RNZXNzYWdlV2l0aFJldHJpZXMobXNnLCByZXRyaWVzLCBjYWxsYmFjaykge1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGxldCByZXRyeSA9IDA7XG4gICAgLy9sZXQgdGltZW91dCA9IHRydWU7XG5cbiAgICBsZXQgc2VuZE1zZyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBfdGhpcy5wb3N0TWVzc2FnZShtc2csIChyZXBseSkgPT4ge1xuICAgICAgICAgIGlmIChyZXBseS5ib2R5LmNvZGUgPT09IDQwOCB8fCByZXBseS5ib2R5LmNvZGUgPT09IDUwMCkgcmVqZWN0KCk7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsb2cuaW5mbygnW0J1cy5wb3N0TWVzc2FnZVdpdGhSZXRyaWVzXSBtc2cgZGVsaXZlcmVkOiAnLCBtc2cpO1xuICAgICAgICAgICAgY2FsbGJhY2socmVwbHkpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgbGV0IHRyeUFnYWluID0gKCkgPT4ge1xuICAgICAgc2VuZE1zZygpLnRoZW4oKCk9PntcbiAgICAgICAgLy90aW1lb3V0ID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0sICgpPT57XG4gICAgICAgIGxvZy53YXJuKGBbQnVzLnBvc3RNZXNzYWdlV2l0aFJldHJpZXNdIE1lc3NhZ2UgQm91bmNlZCAocmV0cnkgJHtyZXRyeX0pOiAnYCwgbXNnKTtcbiAgICAgICAgaWYgKHJldHJ5KysgPCByZXRyaWVzKSB7XG4gICAgICAgICAgdHJ5QWdhaW4oKTtcbiAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHsgdHJ5QWdhaW4oKTsgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBgW0Vycm9yXSBNZXNzYWdlIEJvdW5jZWQgKGRlbGl2ZXJ5IGF0dGVtcHRzICR7cmV0cmllc30pOiAnYDtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IgKyBtc2cpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHRyeUFnYWluKCk7XG4gIH1cblxuICAvKipcbiAgICogTm90IHB1YmxpYyBhdmFpbGFibGUsIHVzZWQgYnkgdGhlIGNsYXNzIGV4dGVuc2lvbiBpbXBsZW1lbnRhdGlvbiwgdG8gcHJvY2VzcyBtZXNzYWdlcyBmcm9tIHRoZSBwdWJsaWMgXCJwb3N0TWVzc2FnZVwiIHdpdGhvdXQgYSByZWdpc3RlcmVkIGxpc3RlbmVyLlxuICAgKiBVc2VkIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG8gYW4gZXh0ZXJuYWwgaW50ZXJmYWNlLCBsaWtlIGEgV2ViV29ya2VyLCBJRnJhbWUsIGV0Yy5cbiAgICogQHBhcmFtICB7TWVzc2FnZS5NZXNzYWdlfSBtc2cgTWVzc2FnZVxuICAgKi9cbiAgX29uUG9zdE1lc3NhZ2UobXNnKSB7IC8qaW1wbGVtZW50YXRpb24gd2lsbCBzZW5kIG1lc3NhZ2UgdG8gZXh0ZXJuYWwgc3lzdGVtKi8gfVxuXG4gIC8qKlxuICAgKiBOb3QgcHVibGljIGF2YWlsYWJsZSwgdXNlZCBieSB0aGUgY2xhc3MgZXh0ZW5zaW9uIGltcGxlbWVudGF0aW9uLCB0byBwcm9jZXNzIGFsbCBtZXNzYWdlcyB0aGF0IGVudGVyIHRoZSBNaW5pQnVzIGZyb20gYW4gZXh0ZXJuYWwgaW50ZXJmYWNlLCBsaWtlIGEgV2ViV29ya2VyLCBJRnJhbWUsIGV0Yy5cbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uZSB0aW1lIGluIHRoZSBjb25zdHJ1Y3RvciB0byByZWdpc3RlciBleHRlcm5hbCBsaXN0ZW5lcnMuXG4gICAqIFRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIHByb2JhYmx5IGNhbGwgdGhlIFwiX29uTWVzc2FnZVwiIG1ldGhvZCB0byBwdWJsaXNoIGluIHRoZSBsb2NhbCBsaXN0ZW5lcnMuXG4gICAqIERPIE5PVCBjYWxsIFwicG9zdE1lc3NhZ2VcIiwgdGhlcmUgaXMgYSBkYW5nZXIgdGhhdCB0aGUgbWVzc2FnZSBlbnRlcnMgaW4gYSBjeWNsZSFcbiAgICovXG4gIF9yZWdpc3RlckV4dGVybmFsTGlzdGVuZXIoKSB7IC8qaW1wbGVtZW50YXRpb24gd2lsbCByZWdpc3RlciBleHRlcm5hbCBsaXN0ZW5lciBhbmQgY2FsbCBcInRoaXMuX29uTWVzc2FnZShtc2cpXCIgKi8gfVxuXG59XG5cbmNsYXNzIE1zZ0xpc3RlbmVyIHtcbiAgLyogcHJpdmF0ZVxuICBfc3Vic2NyaXB0aW9uczogPHN0cmluZzogTXNnTGlzdGVuZXJbXT47XG4gIF91cmw6IHN0cmluZztcbiAgX2NhbGxiYWNrOiAobXNnKSA9PiB2b2lkO1xuICAqL1xuXG4gIGNvbnN0cnVjdG9yKHN1YnNjcmlwdGlvbnMsIHVybCwgY2FsbGJhY2spIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMuX3N1YnNjcmlwdGlvbnMgPSBzdWJzY3JpcHRpb25zO1xuICAgIF90aGlzLl91cmwgPSB1cmw7XG4gICAgX3RoaXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7XG4gIH1cblxuICBnZXQgdXJsKCkgeyByZXR1cm4gdGhpcy5fdXJsOyB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGlzIGxpc3RlbmVyIGZyb20gdGhlIEJ1c1xuICAgKi9cbiAgcmVtb3ZlKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgc3VicyA9IF90aGlzLl9zdWJzY3JpcHRpb25zW190aGlzLl91cmxdO1xuICAgIGlmIChzdWJzKSB7XG4gICAgICBsZXQgaW5kZXggPSBzdWJzLmluZGV4T2YoX3RoaXMpO1xuICAgICAgc3Vicy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAvL2lmIHRoZXJlIGFyZSBubyBsaXN0ZW5lcnMsIHJlbW92ZSB0aGUgc3Vic2NyaXB0aW9uIGVudGlyZWx5LlxuICAgICAgaWYgKHN1YnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGRlbGV0ZSBfdGhpcy5fc3Vic2NyaXB0aW9uc1tfdGhpcy5fdXJsXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQnVzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9idXMvQnVzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkE7QUFDQTtBQURBO0FBQ0E7Ozs7O0FBQUE7QUFDQTtBQUNBOzs7Ozs7QUEzQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBO0FBQ0E7QUFTQTtBQUNBOzs7Ozs7O0FBU0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQU9BO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVFBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTs7Ozs7QUFJQTtBQUNBOzs7Ozs7QUFNQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFHQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBbEJBO0FBQUE7QUFBQTs7Ozs7QUFxQkE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///117\n")},,,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\n\nvar _MiniBus = __webpack_require__(116);\n\nvar _MiniBus2 = _interopRequireDefault(_MiniBus);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _MiniBus2.default; /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nmodule.exports = exports[\'default\'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9taW5pYnVzLmpzP2JhN2MiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXG4qXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4qXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4qXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbioqL1xuaW1wb3J0IE1pbmlCdXMgZnJvbSAnLi9idXMvTWluaUJ1cyc7XG5leHBvcnQgZGVmYXVsdCBNaW5pQnVzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9taW5pYnVzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFzQkE7QUFDQTs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///136\n')}])}); \ No newline at end of file diff --git a/dist/sandbox.js b/dist/sandbox.js old mode 100644 new mode 100755 index 2d6f60c2..760a45b7 --- a/dist/sandbox.js +++ b/dist/sandbox.js @@ -1,5 +1,5 @@ // version: 0.11.1 -// date: Fri May 25 2018 12:35:36 GMT+0100 (GMT Daylight Time) +// date: Mon Jun 04 2018 11:42:23 GMT+0100 (WEST) // licence: /** * Copyright 2016 PT Inovação e Sistemas SA @@ -26,7 +26,7 @@ // version: 0.11.1 -// date: Fri May 25 2018 12:35:36 GMT+0100 (GMT Daylight Time) +// date: Mon Jun 04 2018 11:42:23 GMT+0100 (WEST) // licence: /** * Copyright 2016 PT Inovação e Sistemas SA @@ -52,4 +52,4 @@ **/ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("sandbox",[],n):"object"==typeof exports?exports.sandbox=n():e.sandbox=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function c(l){if(n[l])return n[l].exports;var t=n[l]={i:l,l:!1,exports:{}};return e[l].call(t.exports,t,t.exports,c),t.l=!0,t.exports}return c.m=e,c.c=n,c.d=function(e,n,l){c.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:l})},c.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(n,"a",n),n},c.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},c.p="",c(c.s=133)}([function(module,exports){eval("var core = module.exports = { version: '2.5.3' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcz8xNWUwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjUuMycgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qc1xuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n")},function(module,exports){eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzP2VjYWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1\n")},function(module,exports,__webpack_require__){eval("var store = __webpack_require__(28)('wks');\nvar uid = __webpack_require__(19);\nvar Symbol = __webpack_require__(1).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzPzc1MmMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qc1xuLy8gbW9kdWxlIGlkID0gMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar ctx = __webpack_require__(14);\nvar hide = __webpack_require__(8);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzPzkwY2QiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGtleSBpbiBleHBvcnRzKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///3\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzP2VmYjMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4\n")},function(module,exports,__webpack_require__){eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(13)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanM/Zjg0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n")},function(module,exports){eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzPzEyYTgiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(4);\nvar IE8_DOM_DEFINE = __webpack_require__(36);\nvar toPrimitive = __webpack_require__(26);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzPzdhZjAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanNcbi8vIG1vZHVsZSBpZCA9IDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(7);\nvar createDesc = __webpack_require__(18);\nmodule.exports = __webpack_require__(5) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qcz84NDljIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n")},function(module,exports){eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzPzBmNjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanNcbi8vIG1vZHVsZSBpZCA9IDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9\n")},function(module,exports,__webpack_require__){eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(57);\nvar defined = __webpack_require__(22);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NGRjNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///10\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzY2YjkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(60);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzP2MzMTAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5XCIpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///12\n')},function(module,exports){eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///13\n")},function(module,exports,__webpack_require__){eval("// optional / simple context binding\nvar aFunction = __webpack_require__(17);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanNcbi8vIG1vZHVsZSBpZCA9IDE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanNcbi8vIG1vZHVsZSBpZCA9IDE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///15\n")},function(module,exports){eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcz9mZGI0Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///16\n")},function(module,exports){eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///17\n")},function(module,exports){eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanNcbi8vIG1vZHVsZSBpZCA9IDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///18\n")},function(module,exports){eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qc1xuLy8gbW9kdWxlIGlkID0gMTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///19\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(37);\nvar enumBugKeys = __webpack_require__(29);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///20\n")},function(module,exports){eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/NTJlMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAyMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///21\n")},function(module,exports){eval('// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError("Can\'t call method on " + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTc2OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanNcbi8vIG1vZHVsZSBpZCA9IDIyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///22\n')},function(module,exports){eval("module.exports = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qc1xuLy8gbW9kdWxlIGlkID0gMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///23\n")},function(module,exports,__webpack_require__){eval("var def = __webpack_require__(7).f;\nvar has = __webpack_require__(9);\nvar TAG = __webpack_require__(2)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdiYTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///24\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nvar document = __webpack_require__(1).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n")},function(module,exports,__webpack_require__){eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(6);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///26\n")},function(module,exports,__webpack_require__){eval("var shared = __webpack_require__(28)('keys');\nvar uid = __webpack_require__(19);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NmIxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///27\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcz83YmMwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHt9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2hhcmVkLmpzXG4vLyBtb2R1bGUgaWQgPSAyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///28\n")},function(module,exports){eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/YzY3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n")},function(module,exports,__webpack_require__){eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(22);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(4);\nvar dPs = __webpack_require__(69);\nvar enumBugKeys = __webpack_require__(29);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(25)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(46).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanM/NjI4NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGRQcyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2lmcmFtZScpO1xuICB2YXIgaSA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJlcXVpcmUoJy4vX2h0bWwnKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(17);\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanM/YTgwNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAyNS40LjEuNSBOZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcblxuZnVuY3Rpb24gUHJvbWlzZUNhcGFiaWxpdHkoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUZ1bmN0aW9uKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFGdW5jdGlvbihyZWplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qc1xuLy8gbW9kdWxlIGlkID0gMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///32\n")},function(module,exports,__webpack_require__){eval("exports.f = __webpack_require__(2);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1leHQuanM/MmExZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSByZXF1aXJlKCcuL193a3MnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///33\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar LIBRARY = __webpack_require__(23);\nvar wksExt = __webpack_require__(33);\nvar defineProperty = __webpack_require__(7).f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1kZWZpbmUuanM/NzJiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciAkU3ltYm9sID0gY29yZS5TeW1ib2wgfHwgKGNvcmUuU3ltYm9sID0gTElCUkFSWSA/IHt9IDogZ2xvYmFsLlN5bWJvbCB8fCB7fSk7XG4gIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///34\n")},function(module,exports){eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanM/MzY5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtcGllLmpzXG4vLyBtb2R1bGUgaWQgPSAzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///35\n")},function(module,exports,__webpack_require__){eval("module.exports = !__webpack_require__(5) && !__webpack_require__(13)(function () {\n return Object.defineProperty(__webpack_require__(25)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///36\n")},function(module,exports,__webpack_require__){eval("var has = __webpack_require__(9);\nvar toIObject = __webpack_require__(10);\nvar arrayIndexOf = __webpack_require__(58)(false);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzIxYjgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///37\n")},function(module,exports,__webpack_require__){eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(21);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz80MTExIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qc1xuLy8gbW9kdWxlIGlkID0gMzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///38\n")},function(module,exports,__webpack_require__){eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar fails = __webpack_require__(13);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanM/YmFhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qtc2FwLmpzXG4vLyBtb2R1bGUgaWQgPSAzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///39\n")},function(module,exports,__webpack_require__){eval("var pIE = __webpack_require__(35);\nvar createDesc = __webpack_require__(18);\nvar toIObject = __webpack_require__(10);\nvar toPrimitive = __webpack_require__(26);\nvar has = __webpack_require__(9);\nvar IE8_DOM_DEFINE = __webpack_require__(36);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(5) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzPzJjYTYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcGQuanNcbi8vIG1vZHVsZSBpZCA9IDQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///40\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(66), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3Byb21pc2UuanM/ZmZmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vcHJvbWlzZVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///41\n')},function(module,exports){eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///42\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $at = __webpack_require__(67)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(44)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcz9jZDA0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///43\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(23);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(45);\nvar hide = __webpack_require__(8);\nvar has = __webpack_require__(9);\nvar Iterators = __webpack_require__(16);\nvar $iterCreate = __webpack_require__(68);\nvar setToStringTag = __webpack_require__(24);\nvar getPrototypeOf = __webpack_require__(47);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = (!BUGGY && $native) || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzP2JjODAiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAoIUJVR0dZICYmICRuYXRpdmUpIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiAhaGFzKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUikpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///44\n")},function(module,exports,__webpack_require__){eval("module.exports = __webpack_require__(8);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzP2YzY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///45\n")},function(module,exports,__webpack_require__){eval("var document = __webpack_require__(1).document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanM/NDRmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanNcbi8vIG1vZHVsZSBpZCA9IDQ2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(9);\nvar toObject = __webpack_require__(30);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanM/M2YzYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///47\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(70);\nvar global = __webpack_require__(1);\nvar hide = __webpack_require__(8);\nvar Iterators = __webpack_require__(16);\nvar TO_STRING_TAG = __webpack_require__(2)('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcz9mYWQzIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSA0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///48\n")},function(module,exports,__webpack_require__){eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(15);\nvar TAG = __webpack_require__(2)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanM/NDU4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBBUkcgPSBjb2YoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIFQsIEI7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFRcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IEFSRyA/IGNvZihPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY2xhc3NvZi5qc1xuLy8gbW9kdWxlIGlkID0gNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n")},function(module,exports,__webpack_require__){eval("// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(4);\nvar aFunction = __webpack_require__(17);\nvar SPECIES = __webpack_require__(2)('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanM/YjdjYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjMuMjAgU3BlY2llc0NvbnN0cnVjdG9yKE8sIGRlZmF1bHRDb25zdHJ1Y3RvcilcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIEQpIHtcbiAgdmFyIEMgPSBhbk9iamVjdChPKS5jb25zdHJ1Y3RvcjtcbiAgdmFyIFM7XG4gIHJldHVybiBDID09PSB1bmRlZmluZWQgfHwgKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPT0gdW5kZWZpbmVkID8gRCA6IGFGdW5jdGlvbihTKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3BlY2llcy1jb25zdHJ1Y3Rvci5qc1xuLy8gbW9kdWxlIGlkID0gNTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///50\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(14);\nvar invoke = __webpack_require__(79);\nvar html = __webpack_require__(46);\nvar cel = __webpack_require__(25);\nvar global = __webpack_require__(1);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(15)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanM/MmY4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vX2h0bWwnKTtcbnZhciBjZWwgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHNldFRhc2sgPSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyVGFzayA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbDtcbnZhciBEaXNwYXRjaCA9IGdsb2JhbC5EaXNwYXRjaDtcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xudmFyIHJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgaWYgKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICAgIGZuKCk7XG4gIH1cbn07XG52YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXRUYXNrIHx8ICFjbGVhclRhc2spIHtcbiAgc2V0VGFzayA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCkge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RlbmVyO1xuICAgIGRlZmVyID0gY3R4KHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQsIDEpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdHMpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG4gICAgfTtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICAgIHJ1bi5jYWxsKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChjdHgocnVuLCBpZCwgMSksIDApO1xuICAgIH07XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldFRhc2ssXG4gIGNsZWFyOiBjbGVhclRhc2tcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gNTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///51\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanM/NzRkMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZTogZmFsc2UsIHY6IGV4ZWMoKSB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHsgZTogdHJ1ZSwgdjogZSB9O1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanNcbi8vIG1vZHVsZSBpZCA9IDUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///52\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(4);\nvar isObject = __webpack_require__(6);\nvar newPromiseCapability = __webpack_require__(32);\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qcz83Yzk1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEMsIHgpIHtcbiAgYW5PYmplY3QoQyk7XG4gIGlmIChpc09iamVjdCh4KSAmJiB4LmNvbnN0cnVjdG9yID09PSBDKSByZXR1cm4geDtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZihDKTtcbiAgdmFyIHJlc29sdmUgPSBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlO1xuICByZXNvbHZlKHgpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzXG4vLyBtb2R1bGUgaWQgPSA1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///53\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(89);\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(91);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {\n return typeof obj === "undefined" ? "undefined" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcz9hNDU2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2l0ZXJhdG9yID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yXCIpO1xuXG52YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTtcblxudmFyIF9zeW1ib2wgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9zeW1ib2xcIik7XG5cbnZhciBfc3ltYm9sMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N5bWJvbCk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgX2l0ZXJhdG9yMi5kZWZhdWx0ID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgX3R5cGVvZihfaXRlcmF0b3IyLmRlZmF1bHQpID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YuanNcbi8vIG1vZHVsZSBpZCA9IDU0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///54\n')},function(module,exports){eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BzLmpzP2Q2NDQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wcy5qc1xuLy8gbW9kdWxlIGlkID0gNTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///55\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(37);\nvar hiddenKeys = __webpack_require__(29).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLmpzPzlmNDQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGhpZGRlbktleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi5qc1xuLy8gbW9kdWxlIGlkID0gNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n")},function(module,exports,__webpack_require__){eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(15);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/MzE0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///57\n")},function(module,exports,__webpack_require__){eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(10);\nvar toLength = __webpack_require__(38);\nvar toAbsoluteIndex = __webpack_require__(59);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2JjNTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanNcbi8vIG1vZHVsZSBpZCA9IDU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///58\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(21);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzdlNDAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///59\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(61), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/MGI4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA2MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///60\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(62);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ZjViMCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///61\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(3);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(5), 'Object', { defineProperty: __webpack_require__(7).f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanM/OTgyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///62\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(87), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzY3MWUiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///63\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(54);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n }\n\n return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanM/Y2YwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHNlbGYsIGNhbGwpIHtcbiAgaWYgKCFzZWxmKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNhbGwgJiYgKCh0eXBlb2YgY2FsbCA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoY2FsbCkpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzXG4vLyBtb2R1bGUgaWQgPSA2NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///64\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(100);\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(104);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(54);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== "function" && superClass !== null) {\n throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzPzNkZmQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKTtcblxudmFyIF9zZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXRQcm90b3R5cGVPZik7XG5cbnZhciBfY3JlYXRlID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2NyZWF0ZVwiKTtcblxudmFyIF9jcmVhdGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlKTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArICh0eXBlb2Ygc3VwZXJDbGFzcyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoc3VwZXJDbGFzcykpKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9ICgwLCBfY3JlYXRlMi5kZWZhdWx0KShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mMi5kZWZhdWx0ID8gKDAsIF9zZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzcztcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzXG4vLyBtb2R1bGUgaWQgPSA2NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///65\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(42);\n__webpack_require__(43);\n__webpack_require__(48);\n__webpack_require__(73);\n__webpack_require__(84);\n__webpack_require__(85);\nmodule.exports = __webpack_require__(0).Promise;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2UuanM/NTM5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucHJvbWlzZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL19jb3JlJykuUHJvbWlzZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA2NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///66\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(21);\nvar defined = __webpack_require__(22);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcz84N2FlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbi8vIHRydWUgIC0+IFN0cmluZyNhdFxuLy8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGF0LCBwb3MpIHtcbiAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbiAgICB2YXIgaSA9IHRvSW50ZWdlcihwb3MpO1xuICAgIHZhciBsID0gcy5sZW5ndGg7XG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGkgPCAwIHx8IGkgPj0gbCkgcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcbiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG4gICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzXG4vLyBtb2R1bGUgaWQgPSA2N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///67\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar create = __webpack_require__(31);\nvar descriptor = __webpack_require__(18);\nvar setToStringTag = __webpack_require__(24);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(8)(IteratorPrototype, __webpack_require__(2)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzP2Y3ODUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBkZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDY4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///68\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(7);\nvar anObject = __webpack_require__(4);\nvar getKeys = __webpack_require__(20);\n\nmodule.exports = __webpack_require__(5) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanM/YWEyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///69\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar addToUnscopables = __webpack_require__(71);\nvar step = __webpack_require__(72);\nvar Iterators = __webpack_require__(16);\nvar toIObject = __webpack_require__(10);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(44)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzP2M0NjkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///70\n")},function(module,exports){eval("module.exports = function () { /* empty */ };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcz9lMjY3Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qc1xuLy8gbW9kdWxlIGlkID0gNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///71\n")},function(module,exports){eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcz8xMDY2Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRvbmUsIHZhbHVlKSB7XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qc1xuLy8gbW9kdWxlIGlkID0gNzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///72\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(23);\nvar global = __webpack_require__(1);\nvar ctx = __webpack_require__(14);\nvar classof = __webpack_require__(49);\nvar $export = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\nvar aFunction = __webpack_require__(17);\nvar anInstance = __webpack_require__(74);\nvar forOf = __webpack_require__(75);\nvar speciesConstructor = __webpack_require__(50);\nvar task = __webpack_require__(51).set;\nvar microtask = __webpack_require__(80)();\nvar newPromiseCapabilityModule = __webpack_require__(32);\nvar perform = __webpack_require__(52);\nvar promiseResolve = __webpack_require__(53);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(2)('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value);\n if (domain) domain.exit();\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(81)($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(24)($Promise, PROMISE);\n__webpack_require__(82)(PROMISE);\nWrapper = __webpack_require__(0)[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(83)(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnByb21pc2UuanM/MDk3YyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuL19wcm9taXNlLXJlc29sdmUnKTtcbnZhciBQUk9NSVNFID0gJ1Byb21pc2UnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyICRQcm9taXNlID0gZ2xvYmFsW1BST01JU0VdO1xudmFyIGlzTm9kZSA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xudmFyIGVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIEludGVybmFsLCBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHksIE93blByb21pc2VDYXBhYmlsaXR5LCBXcmFwcGVyO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcblxudmFyIFVTRV9OQVRJVkUgPSAhIWZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBjb3JyZWN0IHN1YmNsYXNzaW5nIHdpdGggQEBzcGVjaWVzIHN1cHBvcnRcbiAgICB2YXIgcHJvbWlzZSA9ICRQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgdmFyIEZha2VQcm9taXNlID0gKHByb21pc2UuY29uc3RydWN0b3IgPSB7fSlbcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKV0gPSBmdW5jdGlvbiAoZXhlYykge1xuICAgICAgZXhlYyhlbXB0eSwgZW1wdHkpO1xuICAgIH07XG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIHJldHVybiAoaXNOb2RlIHx8IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJykgJiYgcHJvbWlzZS50aGVuKGVtcHR5KSBpbnN0YW5jZW9mIEZha2VQcm9taXNlO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn0oKTtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgdHlwZW9mICh0aGVuID0gaXQudGhlbikgPT0gJ2Z1bmN0aW9uJyA/IHRoZW4gOiBmYWxzZTtcbn07XG52YXIgbm90aWZ5ID0gZnVuY3Rpb24gKHByb21pc2UsIGlzUmVqZWN0KSB7XG4gIGlmIChwcm9taXNlLl9uKSByZXR1cm47XG4gIHByb21pc2UuX24gPSB0cnVlO1xuICB2YXIgY2hhaW4gPSBwcm9taXNlLl9jO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIG9rID0gcHJvbWlzZS5fcyA9PSAxO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgcnVuID0gZnVuY3Rpb24gKHJlYWN0aW9uKSB7XG4gICAgICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsO1xuICAgICAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICAgICAgdmFyIHJlamVjdCA9IHJlYWN0aW9uLnJlamVjdDtcbiAgICAgIHZhciBkb21haW4gPSByZWFjdGlvbi5kb21haW47XG4gICAgICB2YXIgcmVzdWx0LCB0aGVuO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgICAgICBpZiAoIW9rKSB7XG4gICAgICAgICAgICBpZiAocHJvbWlzZS5faCA9PSAyKSBvbkhhbmRsZVVuaGFuZGxlZChwcm9taXNlKTtcbiAgICAgICAgICAgIHByb21pc2UuX2ggPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaGFuZGxlciA9PT0gdHJ1ZSkgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoZG9tYWluKSBkb21haW4uZW50ZXIoKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IGhhbmRsZXIodmFsdWUpO1xuICAgICAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmV4aXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gcmVhY3Rpb24ucHJvbWlzZSkge1xuICAgICAgICAgICAgcmVqZWN0KFR5cGVFcnJvcignUHJvbWlzZS1jaGFpbiBjeWNsZScpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoZW4gPSBpc1RoZW5hYmxlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgIHRoZW4uY2FsbChyZXN1bHQsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSBlbHNlIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSBlbHNlIHJlamVjdCh2YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGggPiBpKSBydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgcHJvbWlzZS5fYyA9IFtdO1xuICAgIHByb21pc2UuX24gPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXByb21pc2UuX2gpIG9uVW5oYW5kbGVkKHByb21pc2UpO1xuICB9KTtcbn07XG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgdW5oYW5kbGVkID0gaXNVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgdmFyIHJlc3VsdCwgaGFuZGxlciwgY29uc29sZTtcbiAgICBpZiAodW5oYW5kbGVkKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGlzTm9kZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub251bmhhbmRsZWRyZWplY3Rpb24pIHtcbiAgICAgICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmICgoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBwcm9taXNlLl9oID0gaXNOb2RlIHx8IGlzVW5oYW5kbGVkKHByb21pc2UpID8gMiA6IDE7XG4gICAgfSBwcm9taXNlLl9hID0gdW5kZWZpbmVkO1xuICAgIGlmICh1bmhhbmRsZWQgJiYgcmVzdWx0LmUpIHRocm93IHJlc3VsdC52O1xuICB9KTtcbn07XG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICByZXR1cm4gcHJvbWlzZS5faCAhPT0gMSAmJiAocHJvbWlzZS5fYSB8fCBwcm9taXNlLl9jKS5sZW5ndGggPT09IDA7XG59O1xudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYW5kbGVyO1xuICAgIGlmIChpc05vZGUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBpZiAoaGFuZGxlciA9IGdsb2JhbC5vbnJlamVjdGlvbmhhbmRsZWQpIHtcbiAgICAgIGhhbmRsZXIoeyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHByb21pc2UuX3YgfSk7XG4gICAgfVxuICB9KTtcbn07XG52YXIgJHJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICBwcm9taXNlLl9zID0gMjtcbiAgaWYgKCFwcm9taXNlLl9hKSBwcm9taXNlLl9hID0gcHJvbWlzZS5fYy5zbGljZSgpO1xuICBub3RpZnkocHJvbWlzZSwgdHJ1ZSk7XG59O1xudmFyICRyZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgdmFyIHRoZW47XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgdHJ5IHtcbiAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIGlmICh0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBfdzogcHJvbWlzZSwgX2Q6IGZhbHNlIH07IC8vIHdyYXBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAkcmVqZWN0LmNhbGwod3JhcHBlciwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9taXNlLl92ID0gdmFsdWU7XG4gICAgICBwcm9taXNlLl9zID0gMTtcbiAgICAgIG5vdGlmeShwcm9taXNlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgJHJlamVjdC5jYWxsKHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9LCBlKTsgLy8gd3JhcFxuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gICRQcm9taXNlID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJFByb21pc2UsIFBST01JU0UsICdfaCcpO1xuICAgIGFGdW5jdGlvbihleGVjdXRvcik7XG4gICAgSW50ZXJuYWwuY2FsbCh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoY3R4KCRyZXNvbHZlLCB0aGlzLCAxKSwgY3R4KCRyZWplY3QsIHRoaXMsIDEpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICRyZWplY3QuY2FsbCh0aGlzLCBlcnIpO1xuICAgIH1cbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHRoaXMuX2MgPSBbXTsgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG4gICAgdGhpcy5fYSA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuICAgIHRoaXMuX3MgPSAwOyAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcbiAgICB0aGlzLl9kID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIGRvbmVcbiAgICB0aGlzLl92ID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIHZhbHVlXG4gICAgdGhpcy5faCA9IDA7ICAgICAgICAgICAgICAvLyA8LSByZWplY3Rpb24gc3RhdGUsIDAgLSBkZWZhdWx0LCAxIC0gaGFuZGxlZCwgMiAtIHVuaGFuZGxlZFxuICAgIHRoaXMuX24gPSBmYWxzZTsgICAgICAgICAgLy8gPC0gbm90aWZ5XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpKCRQcm9taXNlLnByb3RvdHlwZSwge1xuICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsICRQcm9taXNlKSk7XG4gICAgICByZWFjdGlvbi5vayA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCA9IHR5cGVvZiBvblJlamVjdGVkID09ICdmdW5jdGlvbicgJiYgb25SZWplY3RlZDtcbiAgICAgIHJlYWN0aW9uLmRvbWFpbiA9IGlzTm9kZSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fYy5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9hKSB0aGlzLl9hLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHRoaXMuX3MpIG5vdGlmeSh0aGlzLCBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH0pO1xuICBPd25Qcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBJbnRlcm5hbCgpO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgdGhpcy5yZXNvbHZlID0gY3R4KCRyZXNvbHZlLCBwcm9taXNlLCAxKTtcbiAgICB0aGlzLnJlamVjdCA9IGN0eCgkcmVqZWN0LCBwcm9taXNlLCAxKTtcbiAgfTtcbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gJFByb21pc2UgfHwgQyA9PT0gV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFByb21pc2U6ICRQcm9taXNlIH0pO1xucmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKSgkUHJvbWlzZSwgUFJPTUlTRSk7XG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKFBST01JU0UpO1xuV3JhcHBlciA9IHJlcXVpcmUoJy4vX2NvcmUnKVtQUk9NSVNFXTtcblxuLy8gc3RhdGljc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNSBQcm9taXNlLnJlamVjdChyKVxuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTtcbiAgICB2YXIgJCRyZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICAkJHJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKExJQlJBUlkgfHwgIVVTRV9OQVRJVkUpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC42IFByb21pc2UucmVzb2x2ZSh4KVxuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoTElCUkFSWSAmJiB0aGlzID09PSBXcmFwcGVyID8gJFByb21pc2UgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoVVNFX05BVElWRSAmJiByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7XG4gICRQcm9taXNlLmFsbChpdGVyKVsnY2F0Y2gnXShlbXB0eSk7XG59KSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyICRpbmRleCA9IGluZGV4Kys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1skaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lKSByZWplY3QocmVzdWx0LnYpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA3M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///73\n")},function(module,exports){eval("module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzP2Q4YWMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIENvbnN0cnVjdG9yLCBuYW1lLCBmb3JiaWRkZW5GaWVsZCkge1xuICBpZiAoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSB8fCAoZm9yYmlkZGVuRmllbGQgIT09IHVuZGVmaW5lZCAmJiBmb3JiaWRkZW5GaWVsZCBpbiBpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IobmFtZSArICc6IGluY29ycmVjdCBpbnZvY2F0aW9uIScpO1xuICB9IHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4taW5zdGFuY2UuanNcbi8vIG1vZHVsZSBpZCA9IDc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///74\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(14);\nvar call = __webpack_require__(76);\nvar isArrayIter = __webpack_require__(77);\nvar anObject = __webpack_require__(4);\nvar toLength = __webpack_require__(38);\nvar getIterFn = __webpack_require__(78);\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qcz8zNTZiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgQlJFQUsgPSB7fTtcbnZhciBSRVRVUk4gPSB7fTtcbnZhciBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0LCBJVEVSQVRPUikge1xuICB2YXIgaXRlckZuID0gSVRFUkFUT1IgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSk7XG4gIHZhciBmID0gY3R4KGZuLCB0aGF0LCBlbnRyaWVzID8gMiA6IDEpO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0O1xuICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXRlcmFibGUgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcbiAgLy8gZmFzdCBjYXNlIGZvciBhcnJheXMgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yXG4gIGlmIChpc0FycmF5SXRlcihpdGVyRm4pKSBmb3IgKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgcmVzdWx0ID0gZW50cmllcyA/IGYoYW5PYmplY3Qoc3RlcCA9IGl0ZXJhYmxlW2luZGV4XSlbMF0sIHN0ZXBbMV0pIDogZihpdGVyYWJsZVtpbmRleF0pO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9IGVsc2UgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOykge1xuICAgIHJlc3VsdCA9IGNhbGwoaXRlcmF0b3IsIGYsIHN0ZXAudmFsdWUsIGVudHJpZXMpO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9XG59O1xuZXhwb3J0cy5CUkVBSyA9IEJSRUFLO1xuZXhwb3J0cy5SRVRVUk4gPSBSRVRVUk47XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZm9yLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA3NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///75\n")},function(module,exports,__webpack_require__){eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(4);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qcz85YWM1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcykge1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qc1xuLy8gbW9kdWxlIGlkID0gNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///76\n")},function(module,exports,__webpack_require__){eval("// check on default Array iterator\nvar Iterators = __webpack_require__(16);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanM/MzIxYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1hcnJheS1pdGVyLmpzXG4vLyBtb2R1bGUgaWQgPSA3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///77\n")},function(module,exports,__webpack_require__){eval("var classof = __webpack_require__(49);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar Iterators = __webpack_require__(16);\nmodule.exports = __webpack_require__(0).getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzP2RkZmIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanNcbi8vIG1vZHVsZSBpZCA9IDc4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///78\n")},function(module,exports){eval("// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ludm9rZS5qcz85MjdiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhc3QgYXBwbHksIGh0dHA6Ly9qc3BlcmYubG5raXQuY29tL2Zhc3QtYXBwbHkvNVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIGFyZ3MsIHRoYXQpIHtcbiAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gdW4gPyBmbigpXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQpO1xuICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gIH0gcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3MpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pbnZva2UuanNcbi8vIG1vZHVsZSBpZCA9IDc5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///79\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar macrotask = __webpack_require__(51).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(15)(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n var promise = Promise.resolve();\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qcz9mMzYzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBtYWNyb3Rhc2sgPSByZXF1aXJlKCcuL190YXNrJykuc2V0O1xudmFyIE9ic2VydmVyID0gZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIFByb21pc2UgPSBnbG9iYWwuUHJvbWlzZTtcbnZhciBpc05vZGUgPSByZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaGVhZCwgbGFzdCwgbm90aWZ5O1xuXG4gIHZhciBmbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50LCBmbjtcbiAgICBpZiAoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGhlYWQpIHtcbiAgICAgIGZuID0gaGVhZC5mbjtcbiAgICAgIGhlYWQgPSBoZWFkLm5leHQ7XG4gICAgICB0cnkge1xuICAgICAgICBmbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoaGVhZCkgbm90aWZ5KCk7XG4gICAgICAgIGVsc2UgbGFzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LmVudGVyKCk7XG4gIH07XG5cbiAgLy8gTm9kZS5qc1xuICBpZiAoaXNOb2RlKSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XG4gICAgfTtcbiAgLy8gYnJvd3NlcnMgd2l0aCBNdXRhdGlvbk9ic2VydmVyLCBleGNlcHQgaU9TIFNhZmFyaSAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMzlcbiAgfSBlbHNlIGlmIChPYnNlcnZlciAmJiAhKGdsb2JhbC5uYXZpZ2F0b3IgJiYgZ2xvYmFsLm5hdmlnYXRvci5zdGFuZGFsb25lKSkge1xuICAgIHZhciB0b2dnbGUgPSB0cnVlO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG5ldyBPYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7IGNoYXJhY3RlckRhdGE6IHRydWUgfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYgKFByb21pc2UgJiYgUHJvbWlzZS5yZXNvbHZlKSB7XG4gICAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9taXNlLnRoZW4oZmx1c2gpO1xuICAgIH07XG4gIC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XG4gIC8vIC0gc2V0SW1tZWRpYXRlXG4gIC8vIC0gTWVzc2FnZUNoYW5uZWxcbiAgLy8gLSB3aW5kb3cucG9zdE1lc3NhZ1xuICAvLyAtIG9ucmVhZHlzdGF0ZWNoYW5nZVxuICAvLyAtIHNldFRpbWVvdXRcbiAgfSBlbHNlIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBzdHJhbmdlIElFICsgd2VicGFjayBkZXYgc2VydmVyIGJ1ZyAtIHVzZSAuY2FsbChnbG9iYWwpXG4gICAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChmbikge1xuICAgIHZhciB0YXNrID0geyBmbjogZm4sIG5leHQ6IHVuZGVmaW5lZCB9O1xuICAgIGlmIChsYXN0KSBsYXN0Lm5leHQgPSB0YXNrO1xuICAgIGlmICghaGVhZCkge1xuICAgICAgaGVhZCA9IHRhc2s7XG4gICAgICBub3RpZnkoKTtcbiAgICB9IGxhc3QgPSB0YXNrO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19taWNyb3Rhc2suanNcbi8vIG1vZHVsZSBpZCA9IDgwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///80\n")},function(module,exports,__webpack_require__){eval("var hide = __webpack_require__(8);\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcz9jNDdmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGlmIChzYWZlICYmIHRhcmdldFtrZXldKSB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgIGVsc2UgaGlkZSh0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9IHJldHVybiB0YXJnZXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qc1xuLy8gbW9kdWxlIGlkID0gODFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///81\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar dP = __webpack_require__(7);\nvar DESCRIPTORS = __webpack_require__(5);\nvar SPECIES = __webpack_require__(2)('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1zcGVjaWVzLmpzPzZkMWEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgQyA9IHR5cGVvZiBjb3JlW0tFWV0gPT0gJ2Z1bmN0aW9uJyA/IGNvcmVbS0VZXSA6IGdsb2JhbFtLRVldO1xuICBpZiAoREVTQ1JJUFRPUlMgJiYgQyAmJiAhQ1tTUEVDSUVTXSkgZFAuZihDLCBTUEVDSUVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDgyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///82\n")},function(module,exports,__webpack_require__){eval("var ITERATOR = __webpack_require__(2)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzPzc1OGQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTtcbiAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24gKCkgeyBTQUZFX0NMT1NJTkcgPSB0cnVlOyB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7XG4gIGlmICghc2tpcENsb3NpbmcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBbN107XG4gICAgdmFyIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9O1xuICAgIGFycltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBzYWZlO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qc1xuLy8gbW9kdWxlIGlkID0gODNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///83\n")},function(module,exports,__webpack_require__){"use strict";eval("// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar global = __webpack_require__(1);\nvar speciesConstructor = __webpack_require__(50);\nvar promiseResolve = __webpack_require__(53);\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseS5qcz8xMmEwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtZmluYWxseVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1Byb21pc2UnLCB7ICdmaW5hbGx5JzogZnVuY3Rpb24gKG9uRmluYWxseSkge1xuICB2YXIgQyA9IHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBjb3JlLlByb21pc2UgfHwgZ2xvYmFsLlByb21pc2UpO1xuICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBvbkZpbmFsbHkgPT0gJ2Z1bmN0aW9uJztcbiAgcmV0dXJuIHRoaXMudGhlbihcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKHgpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB4OyB9KTtcbiAgICB9IDogb25GaW5hbGx5LFxuICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgdGhyb3cgZTsgfSk7XG4gICAgfSA6IG9uRmluYWxseVxuICApO1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHkuanNcbi8vIG1vZHVsZSBpZCA9IDg0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///84\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(3);\nvar newPromiseCapability = __webpack_require__(32);\nvar perform = __webpack_require__(52);\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzPzhjYTUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS10cnlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4vX3BlcmZvcm0nKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdQcm9taXNlJywgeyAndHJ5JzogZnVuY3Rpb24gKGNhbGxiYWNrZm4pIHtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZih0aGlzKTtcbiAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oY2FsbGJhY2tmbik7XG4gIChyZXN1bHQuZSA/IHByb21pc2VDYXBhYmlsaXR5LnJlamVjdCA6IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmUpKHJlc3VsdC52KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzXG4vLyBtb2R1bGUgaWQgPSA4NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///85\n")},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n "use strict";\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof module === \'object\' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n "use strict";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = "undefined";\n\n var logMethods = [\n "trace",\n "debug",\n "info",\n "warn",\n "error"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === \'function\') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === \'debug\') {\n methodName = \'log\';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, \'log\');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn\'t present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = "loglevel";\n if (name) {\n storageKey += ":" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || \'silent\').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + "=" + levelName + ";";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + "=");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { "TRACE": 0, "DEBUG": 1, "INFO": 2, "WARN": 3,\n "ERROR": 4, "SILENT": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return "No console available for logging";\n }\n } else {\n throw "log.setLevel() called with invalid level: " + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? "WARN" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== "string" || name === "") {\n throw new TypeError("You must supply a name when creating a logger.");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9nbGV2ZWwvbGliL2xvZ2xldmVsLmpzPzA2ZmMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiogbG9nbGV2ZWwgLSBodHRwczovL2dpdGh1Yi5jb20vcGltdGVycnkvbG9nbGV2ZWxcbipcbiogQ29weXJpZ2h0IChjKSAyMDEzIFRpbSBQZXJyeVxuKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4qL1xuKGZ1bmN0aW9uIChyb290LCBkZWZpbml0aW9uKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgICBkZWZpbmUoZGVmaW5pdGlvbik7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGRlZmluaXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByb290LmxvZyA9IGRlZmluaXRpb24oKTtcbiAgICB9XG59KHRoaXMsIGZ1bmN0aW9uICgpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIC8vIFNsaWdodGx5IGR1YmlvdXMgdHJpY2tzIHRvIGN1dCBkb3duIG1pbmltaXplZCBmaWxlIHNpemVcbiAgICB2YXIgbm9vcCA9IGZ1bmN0aW9uKCkge307XG4gICAgdmFyIHVuZGVmaW5lZFR5cGUgPSBcInVuZGVmaW5lZFwiO1xuXG4gICAgdmFyIGxvZ01ldGhvZHMgPSBbXG4gICAgICAgIFwidHJhY2VcIixcbiAgICAgICAgXCJkZWJ1Z1wiLFxuICAgICAgICBcImluZm9cIixcbiAgICAgICAgXCJ3YXJuXCIsXG4gICAgICAgIFwiZXJyb3JcIlxuICAgIF07XG5cbiAgICAvLyBDcm9zcy1icm93c2VyIGJpbmQgZXF1aXZhbGVudCB0aGF0IHdvcmtzIGF0IGxlYXN0IGJhY2sgdG8gSUU2XG4gICAgZnVuY3Rpb24gYmluZE1ldGhvZChvYmosIG1ldGhvZE5hbWUpIHtcbiAgICAgICAgdmFyIG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTtcbiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QuYmluZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIG1ldGhvZC5iaW5kKG9iaik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5jYWxsKG1ldGhvZCwgb2JqKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBNaXNzaW5nIGJpbmQgc2hpbSBvciBJRTggKyBNb2Rlcm5penIsIGZhbGxiYWNrIHRvIHdyYXBwaW5nXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmFwcGx5KG1ldGhvZCwgW29iaiwgYXJndW1lbnRzXSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJ1aWxkIHRoZSBiZXN0IGxvZ2dpbmcgbWV0aG9kIHBvc3NpYmxlIGZvciB0aGlzIGVudlxuICAgIC8vIFdoZXJldmVyIHBvc3NpYmxlIHdlIHdhbnQgdG8gYmluZCwgbm90IHdyYXAsIHRvIHByZXNlcnZlIHN0YWNrIHRyYWNlc1xuICAgIGZ1bmN0aW9uIHJlYWxNZXRob2QobWV0aG9kTmFtZSkge1xuICAgICAgICBpZiAobWV0aG9kTmFtZSA9PT0gJ2RlYnVnJykge1xuICAgICAgICAgICAgbWV0aG9kTmFtZSA9ICdsb2cnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE5vIG1ldGhvZCBwb3NzaWJsZSwgZm9yIG5vdyAtIGZpeGVkIGxhdGVyIGJ5IGVuYWJsZUxvZ2dpbmdXaGVuQ29uc29sZUFycml2ZXNcbiAgICAgICAgfSBlbHNlIGlmIChjb25zb2xlW21ldGhvZE5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBiaW5kTWV0aG9kKGNvbnNvbGUsIG1ldGhvZE5hbWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnNvbGUubG9nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBiaW5kTWV0aG9kKGNvbnNvbGUsICdsb2cnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBub29wO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlc2UgcHJpdmF0ZSBmdW5jdGlvbnMgYWx3YXlzIG5lZWQgYHRoaXNgIHRvIGJlIHNldCBwcm9wZXJseVxuXG4gICAgZnVuY3Rpb24gcmVwbGFjZUxvZ2dpbmdNZXRob2RzKGxldmVsLCBsb2dnZXJOYW1lKSB7XG4gICAgICAgIC8qanNoaW50IHZhbGlkdGhpczp0cnVlICovXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbG9nTWV0aG9kcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIG1ldGhvZE5hbWUgPSBsb2dNZXRob2RzW2ldO1xuICAgICAgICAgICAgdGhpc1ttZXRob2ROYW1lXSA9IChpIDwgbGV2ZWwpID9cbiAgICAgICAgICAgICAgICBub29wIDpcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZEZhY3RvcnkobWV0aG9kTmFtZSwgbGV2ZWwsIGxvZ2dlck5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmaW5lIGxvZy5sb2cgYXMgYW4gYWxpYXMgZm9yIGxvZy5kZWJ1Z1xuICAgICAgICB0aGlzLmxvZyA9IHRoaXMuZGVidWc7XG4gICAgfVxuXG4gICAgLy8gSW4gb2xkIElFIHZlcnNpb25zLCB0aGUgY29uc29sZSBpc24ndCBwcmVzZW50IHVudGlsIHlvdSBmaXJzdCBvcGVuIGl0LlxuICAgIC8vIFdlIGJ1aWxkIHJlYWxNZXRob2QoKSByZXBsYWNlbWVudHMgaGVyZSB0aGF0IHJlZ2VuZXJhdGUgbG9nZ2luZyBtZXRob2RzXG4gICAgZnVuY3Rpb24gZW5hYmxlTG9nZ2luZ1doZW5Db25zb2xlQXJyaXZlcyhtZXRob2ROYW1lLCBsZXZlbCwgbG9nZ2VyTmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICAgICAgcmVwbGFjZUxvZ2dpbmdNZXRob2RzLmNhbGwodGhpcywgbGV2ZWwsIGxvZ2dlck5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXNbbWV0aG9kTmFtZV0uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCeSBkZWZhdWx0LCB3ZSB1c2UgY2xvc2VseSBib3VuZCByZWFsIG1ldGhvZHMgd2hlcmV2ZXIgcG9zc2libGUsIGFuZFxuICAgIC8vIG90aGVyd2lzZSB3ZSB3YWl0IGZvciBhIGNvbnNvbGUgdG8gYXBwZWFyLCBhbmQgdGhlbiB0cnkgYWdhaW4uXG4gICAgZnVuY3Rpb24gZGVmYXVsdE1ldGhvZEZhY3RvcnkobWV0aG9kTmFtZSwgbGV2ZWwsIGxvZ2dlck5hbWUpIHtcbiAgICAgICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cbiAgICAgICAgcmV0dXJuIHJlYWxNZXRob2QobWV0aG9kTmFtZSkgfHxcbiAgICAgICAgICAgICAgIGVuYWJsZUxvZ2dpbmdXaGVuQ29uc29sZUFycml2ZXMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBMb2dnZXIobmFtZSwgZGVmYXVsdExldmVsLCBmYWN0b3J5KSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgY3VycmVudExldmVsO1xuICAgICAgdmFyIHN0b3JhZ2VLZXkgPSBcImxvZ2xldmVsXCI7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICBzdG9yYWdlS2V5ICs9IFwiOlwiICsgbmFtZTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcGVyc2lzdExldmVsSWZQb3NzaWJsZShsZXZlbE51bSkge1xuICAgICAgICAgIHZhciBsZXZlbE5hbWUgPSAobG9nTWV0aG9kc1tsZXZlbE51bV0gfHwgJ3NpbGVudCcpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gdW5kZWZpbmVkVHlwZSkgcmV0dXJuO1xuXG4gICAgICAgICAgLy8gVXNlIGxvY2FsU3RvcmFnZSBpZiBhdmFpbGFibGVcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlW3N0b3JhZ2VLZXldID0gbGV2ZWxOYW1lO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuXG4gICAgICAgICAgLy8gVXNlIHNlc3Npb24gY29va2llIGFzIGZhbGxiYWNrXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgd2luZG93LmRvY3VtZW50LmNvb2tpZSA9XG4gICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHN0b3JhZ2VLZXkpICsgXCI9XCIgKyBsZXZlbE5hbWUgKyBcIjtcIjtcbiAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGdldFBlcnNpc3RlZExldmVsKCkge1xuICAgICAgICAgIHZhciBzdG9yZWRMZXZlbDtcblxuICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSB1bmRlZmluZWRUeXBlKSByZXR1cm47XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBzdG9yZWRMZXZlbCA9IHdpbmRvdy5sb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV07XG4gICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuXG4gICAgICAgICAgLy8gRmFsbGJhY2sgdG8gY29va2llcyBpZiBsb2NhbCBzdG9yYWdlIGdpdmVzIHVzIG5vdGhpbmdcbiAgICAgICAgICBpZiAodHlwZW9mIHN0b3JlZExldmVsID09PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICB2YXIgY29va2llID0gd2luZG93LmRvY3VtZW50LmNvb2tpZTtcbiAgICAgICAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IGNvb2tpZS5pbmRleE9mKFxuICAgICAgICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzdG9yYWdlS2V5KSArIFwiPVwiKTtcbiAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbiAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yZWRMZXZlbCA9IC9eKFteO10rKS8uZXhlYyhjb29raWUuc2xpY2UobG9jYXRpb24pKVsxXTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHRoZSBzdG9yZWQgbGV2ZWwgaXMgbm90IHZhbGlkLCB0cmVhdCBpdCBhcyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG4gICAgICAgICAgaWYgKHNlbGYubGV2ZWxzW3N0b3JlZExldmVsXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHN0b3JlZExldmVsID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBzdG9yZWRMZXZlbDtcbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgICAqXG4gICAgICAgKiBQdWJsaWMgbG9nZ2VyIEFQSSAtIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGltdGVycnkvbG9nbGV2ZWwgZm9yIGRldGFpbHNcbiAgICAgICAqXG4gICAgICAgKi9cblxuICAgICAgc2VsZi5uYW1lID0gbmFtZTtcblxuICAgICAgc2VsZi5sZXZlbHMgPSB7IFwiVFJBQ0VcIjogMCwgXCJERUJVR1wiOiAxLCBcIklORk9cIjogMiwgXCJXQVJOXCI6IDMsXG4gICAgICAgICAgXCJFUlJPUlwiOiA0LCBcIlNJTEVOVFwiOiA1fTtcblxuICAgICAgc2VsZi5tZXRob2RGYWN0b3J5ID0gZmFjdG9yeSB8fCBkZWZhdWx0TWV0aG9kRmFjdG9yeTtcblxuICAgICAgc2VsZi5nZXRMZXZlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gY3VycmVudExldmVsO1xuICAgICAgfTtcblxuICAgICAgc2VsZi5zZXRMZXZlbCA9IGZ1bmN0aW9uIChsZXZlbCwgcGVyc2lzdCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09IFwic3RyaW5nXCIgJiYgc2VsZi5sZXZlbHNbbGV2ZWwudG9VcHBlckNhc2UoKV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsZXZlbCA9IHNlbGYubGV2ZWxzW2xldmVsLnRvVXBwZXJDYXNlKCldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIGxldmVsID09PSBcIm51bWJlclwiICYmIGxldmVsID49IDAgJiYgbGV2ZWwgPD0gc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRMZXZlbCA9IGxldmVsO1xuICAgICAgICAgICAgICBpZiAocGVyc2lzdCAhPT0gZmFsc2UpIHsgIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICAgICAgICAgICAgICAgIHBlcnNpc3RMZXZlbElmUG9zc2libGUobGV2ZWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlcGxhY2VMb2dnaW5nTWV0aG9kcy5jYWxsKHNlbGYsIGxldmVsLCBuYW1lKTtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSB1bmRlZmluZWRUeXBlICYmIGxldmVsIDwgc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCJObyBjb25zb2xlIGF2YWlsYWJsZSBmb3IgbG9nZ2luZ1wiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhyb3cgXCJsb2cuc2V0TGV2ZWwoKSBjYWxsZWQgd2l0aCBpbnZhbGlkIGxldmVsOiBcIiArIGxldmVsO1xuICAgICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHNlbGYuc2V0RGVmYXVsdExldmVsID0gZnVuY3Rpb24gKGxldmVsKSB7XG4gICAgICAgICAgaWYgKCFnZXRQZXJzaXN0ZWRMZXZlbCgpKSB7XG4gICAgICAgICAgICAgIHNlbGYuc2V0TGV2ZWwobGV2ZWwsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBzZWxmLmVuYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlRSQUNFLCBwZXJzaXN0KTtcbiAgICAgIH07XG5cbiAgICAgIHNlbGYuZGlzYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlNJTEVOVCwgcGVyc2lzdCk7XG4gICAgICB9O1xuXG4gICAgICAvLyBJbml0aWFsaXplIHdpdGggdGhlIHJpZ2h0IGxldmVsXG4gICAgICB2YXIgaW5pdGlhbExldmVsID0gZ2V0UGVyc2lzdGVkTGV2ZWwoKTtcbiAgICAgIGlmIChpbml0aWFsTGV2ZWwgPT0gbnVsbCkge1xuICAgICAgICAgIGluaXRpYWxMZXZlbCA9IGRlZmF1bHRMZXZlbCA9PSBudWxsID8gXCJXQVJOXCIgOiBkZWZhdWx0TGV2ZWw7XG4gICAgICB9XG4gICAgICBzZWxmLnNldExldmVsKGluaXRpYWxMZXZlbCwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICpcbiAgICAgKiBUb3AtbGV2ZWwgQVBJXG4gICAgICpcbiAgICAgKi9cblxuICAgIHZhciBkZWZhdWx0TG9nZ2VyID0gbmV3IExvZ2dlcigpO1xuXG4gICAgdmFyIF9sb2dnZXJzQnlOYW1lID0ge307XG4gICAgZGVmYXVsdExvZ2dlci5nZXRMb2dnZXIgPSBmdW5jdGlvbiBnZXRMb2dnZXIobmFtZSkge1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgIT09IFwic3RyaW5nXCIgfHwgbmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJZb3UgbXVzdCBzdXBwbHkgYSBuYW1lIHdoZW4gY3JlYXRpbmcgYSBsb2dnZXIuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvZ2dlciA9IF9sb2dnZXJzQnlOYW1lW25hbWVdO1xuICAgICAgICBpZiAoIWxvZ2dlcikge1xuICAgICAgICAgIGxvZ2dlciA9IF9sb2dnZXJzQnlOYW1lW25hbWVdID0gbmV3IExvZ2dlcihcbiAgICAgICAgICAgIG5hbWUsIGRlZmF1bHRMb2dnZXIuZ2V0TGV2ZWwoKSwgZGVmYXVsdExvZ2dlci5tZXRob2RGYWN0b3J5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH07XG5cbiAgICAvLyBHcmFiIHRoZSBjdXJyZW50IGdsb2JhbCBsb2cgdmFyaWFibGUgaW4gY2FzZSBvZiBvdmVyd3JpdGVcbiAgICB2YXIgX2xvZyA9ICh0eXBlb2Ygd2luZG93ICE9PSB1bmRlZmluZWRUeXBlKSA/IHdpbmRvdy5sb2cgOiB1bmRlZmluZWQ7XG4gICAgZGVmYXVsdExvZ2dlci5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSB1bmRlZmluZWRUeXBlICYmXG4gICAgICAgICAgICAgICB3aW5kb3cubG9nID09PSBkZWZhdWx0TG9nZ2VyKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9nID0gX2xvZztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWZhdWx0TG9nZ2VyO1xuICAgIH07XG5cbiAgICBkZWZhdWx0TG9nZ2VyLmdldExvZ2dlcnMgPSBmdW5jdGlvbiBnZXRMb2dnZXJzKCkge1xuICAgICAgICByZXR1cm4gX2xvZ2dlcnNCeU5hbWU7XG4gICAgfTtcblxuICAgIHJldHVybiBkZWZhdWx0TG9nZ2VyO1xufSkpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvbG9nbGV2ZWwvbGliL2xvZ2xldmVsLmpzXG4vLyBtb2R1bGUgaWQgPSA4NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///86\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(88);\nmodule.exports = __webpack_require__(0).Object.getPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzdkMmUiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///87\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(30);\nvar $getPrototypeOf = __webpack_require__(47);\n\n__webpack_require__(39)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzPzJhMWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjkgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciAkZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnZ2V0UHJvdG90eXBlT2YnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZihpdCkge1xuICAgIHJldHVybiAkZ2V0UHJvdG90eXBlT2YodG9PYmplY3QoaXQpKTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA4OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///88\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(90), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvci5qcz82NzM4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA4OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///89\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(43);\n__webpack_require__(48);\nmodule.exports = __webpack_require__(33).f('iterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qcz9mZTdlIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX3drcy1leHQnKS5mKCdpdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gOTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///90\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(92), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC5qcz9lNTA1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2xcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA5MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///91\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(93);\n__webpack_require__(42);\n__webpack_require__(98);\n__webpack_require__(99);\nmodule.exports = __webpack_require__(0).Symbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qcz8wNzA3Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN5bWJvbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuU3ltYm9sO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gOTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///92\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(1);\nvar has = __webpack_require__(9);\nvar DESCRIPTORS = __webpack_require__(5);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(45);\nvar META = __webpack_require__(94).KEY;\nvar $fails = __webpack_require__(13);\nvar shared = __webpack_require__(28);\nvar setToStringTag = __webpack_require__(24);\nvar uid = __webpack_require__(19);\nvar wks = __webpack_require__(2);\nvar wksExt = __webpack_require__(33);\nvar wksDefine = __webpack_require__(34);\nvar enumKeys = __webpack_require__(95);\nvar isArray = __webpack_require__(96);\nvar anObject = __webpack_require__(4);\nvar isObject = __webpack_require__(6);\nvar toIObject = __webpack_require__(10);\nvar toPrimitive = __webpack_require__(26);\nvar createDesc = __webpack_require__(18);\nvar _create = __webpack_require__(31);\nvar gOPNExt = __webpack_require__(97);\nvar $GOPD = __webpack_require__(40);\nvar $DP = __webpack_require__(7);\nvar $keys = __webpack_require__(20);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(56).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(35).f = $propertyIsEnumerable;\n __webpack_require__(55).f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(23)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(8)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qcz83ZDY3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBNRVRBID0gcmVxdWlyZSgnLi9fbWV0YScpLktFWTtcbnZhciAkZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgd2tzRGVmaW5lID0gcmVxdWlyZSgnLi9fd2tzLWRlZmluZScpO1xudmFyIGVudW1LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1rZXlzJyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgX2NyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBnT1BORXh0ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4tZXh0Jyk7XG52YXIgJEdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyICREUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BEID0gJEdPUEQuZjtcbnZhciBkUCA9ICREUC5mO1xudmFyIGdPUE4gPSBnT1BORXh0LmY7XG52YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgJEpTT04gPSBnbG9iYWwuSlNPTjtcbnZhciBfc3RyaW5naWZ5ID0gJEpTT04gJiYgJEpTT04uc3RyaW5naWZ5O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEhJRERFTiA9IHdrcygnX2hpZGRlbicpO1xudmFyIFRPX1BSSU1JVElWRSA9IHdrcygndG9QcmltaXRpdmUnKTtcbnZhciBpc0VudW0gPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBTeW1ib2xSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXJlZ2lzdHJ5Jyk7XG52YXIgQWxsU3ltYm9scyA9IHNoYXJlZCgnc3ltYm9scycpO1xudmFyIE9QU3ltYm9scyA9IHNoYXJlZCgnb3Atc3ltYm9scycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0W1BST1RPVFlQRV07XG52YXIgVVNFX05BVElWRSA9IHR5cGVvZiAkU3ltYm9sID09ICdmdW5jdGlvbic7XG52YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0O1xuLy8gRG9uJ3QgdXNlIHNldHRlcnMgaW4gUXQgU2NyaXB0LCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTczXG52YXIgc2V0dGVyID0gIVFPYmplY3QgfHwgIVFPYmplY3RbUFJPVE9UWVBFXSB8fCAhUU9iamVjdFtQUk9UT1RZUEVdLmZpbmRDaGlsZDtcblxuLy8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG52YXIgc2V0U3ltYm9sRGVzYyA9IERFU0NSSVBUT1JTICYmICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRQKHRoaXMsICdhJywgeyB2YWx1ZTogNyB9KS5hOyB9XG4gIH0pKS5hICE9IDc7XG59KSA/IGZ1bmN0aW9uIChpdCwga2V5LCBEKSB7XG4gIHZhciBwcm90b0Rlc2MgPSBnT1BEKE9iamVjdFByb3RvLCBrZXkpO1xuICBpZiAocHJvdG9EZXNjKSBkZWxldGUgT2JqZWN0UHJvdG9ba2V5XTtcbiAgZFAoaXQsIGtleSwgRCk7XG4gIGlmIChwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKSBkUChPYmplY3RQcm90bywga2V5LCBwcm90b0Rlc2MpO1xufSA6IGRQO1xuXG52YXIgd3JhcCA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbFtQUk9UT1RZUEVdKTtcbiAgc3ltLl9rID0gdGFnO1xuICByZXR1cm4gc3ltO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX05BVElWRSAmJiB0eXBlb2YgJFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJyA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgaW5zdGFuY2VvZiAkU3ltYm9sO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIEQpIHtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90bykgJGRlZmluZVByb3BlcnR5KE9QU3ltYm9scywga2V5LCBEKTtcbiAgYW5PYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBhbk9iamVjdChEKTtcbiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7XG4gICAgaWYgKCFELmVudW1lcmFibGUpIHtcbiAgICAgIGlmICghaGFzKGl0LCBISURERU4pKSBkUChpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG4gICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkgaXRbSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBEID0gX2NyZWF0ZShELCB7IGVudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpIH0pO1xuICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG4gIH0gcmV0dXJuIGRQKGl0LCBrZXksIEQpO1xufTtcbnZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoaXQsIFApIHtcbiAgYW5PYmplY3QoaXQpO1xuICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpO1xuICB2YXIgaSA9IDA7XG4gIHZhciBsID0ga2V5cy5sZW5ndGg7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsID4gaSkgJGRlZmluZVByb3BlcnR5KGl0LCBrZXkgPSBrZXlzW2krK10sIFBba2V5XSk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpdCwgUCkge1xuICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG59O1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSkge1xuICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpO1xuICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XSA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHtcbiAgaXQgPSB0b0lPYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm47XG4gIHZhciBEID0gZ09QRChpdCwga2V5KTtcbiAgaWYgKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSkgRC5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgcmV0dXJuIEQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICB2YXIgbmFtZXMgPSBnT1BOKHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoIWhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiBrZXkgIT0gSElEREVOICYmIGtleSAhPSBNRVRBKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgdmFyIElTX09QID0gaXQgPT09IE9iamVjdFByb3RvO1xuICB2YXIgbmFtZXMgPSBnT1BOKElTX09QID8gT1BTeW1ib2xzIDogdG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYgKElTX09QID8gaGFzKE9iamVjdFByb3RvLCBrZXkpIDogdHJ1ZSkpIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIDE5LjQuMS4xIFN5bWJvbChbZGVzY3JpcHRpb25dKVxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKSB7XG4gICAgaWYgKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKSB0aHJvdyBUeXBlRXJyb3IoJ1N5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciEnKTtcbiAgICB2YXIgdGFnID0gdWlkKGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcbiAgICB2YXIgJHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvKSAkc2V0LmNhbGwoT1BTeW1ib2xzLCB2YWx1ZSk7XG4gICAgICBpZiAoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSkgdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcbiAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG4gICAgfTtcbiAgICBpZiAoREVTQ1JJUFRPUlMgJiYgc2V0dGVyKSBzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6ICRzZXQgfSk7XG4gICAgcmV0dXJuIHdyYXAodGFnKTtcbiAgfTtcbiAgcmVkZWZpbmUoJFN5bWJvbFtQUk9UT1RZUEVdLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faztcbiAgfSk7XG5cbiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICREUC5mID0gJGRlZmluZVByb3BlcnR5O1xuICByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmYgPSBnT1BORXh0LmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpLmYgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJykuZiA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbiAgaWYgKERFU0NSSVBUT1JTICYmICFyZXF1aXJlKCcuL19saWJyYXJ5JykpIHtcbiAgICByZWRlZmluZShPYmplY3RQcm90bywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB0cnVlKTtcbiAgfVxuXG4gIHdrc0V4dC5mID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gd3JhcCh3a3MobmFtZSkpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFN5bWJvbDogJFN5bWJvbCB9KTtcblxuZm9yICh2YXIgZXM2U3ltYm9scyA9IChcbiAgLy8gMTkuNC4yLjIsIDE5LjQuMi4zLCAxOS40LjIuNCwgMTkuNC4yLjYsIDE5LjQuMi44LCAxOS40LjIuOSwgMTkuNC4yLjEwLCAxOS40LjIuMTEsIDE5LjQuMi4xMiwgMTkuNC4yLjEzLCAxOS40LjIuMTRcbiAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJ1xuKS5zcGxpdCgnLCcpLCBqID0gMDsgZXM2U3ltYm9scy5sZW5ndGggPiBqOyl3a3MoZXM2U3ltYm9sc1tqKytdKTtcblxuZm9yICh2YXIgd2VsbEtub3duU3ltYm9scyA9ICRrZXlzKHdrcy5zdG9yZSksIGsgPSAwOyB3ZWxsS25vd25TeW1ib2xzLmxlbmd0aCA+IGs7KSB3a3NEZWZpbmUod2VsbEtub3duU3ltYm9sc1trKytdKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ1N5bWJvbCcsIHtcbiAgLy8gMTkuNC4yLjEgU3ltYm9sLmZvcihrZXkpXG4gICdmb3InOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGhhcyhTeW1ib2xSZWdpc3RyeSwga2V5ICs9ICcnKVxuICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG4gICAgICA6IFN5bWJvbFJlZ2lzdHJ5W2tleV0gPSAkU3ltYm9sKGtleSk7XG4gIH0sXG4gIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihzeW0pIHtcbiAgICBpZiAoIWlzU3ltYm9sKHN5bSkpIHRocm93IFR5cGVFcnJvcihzeW0gKyAnIGlzIG5vdCBhIHN5bWJvbCEnKTtcbiAgICBmb3IgKHZhciBrZXkgaW4gU3ltYm9sUmVnaXN0cnkpIGlmIChTeW1ib2xSZWdpc3RyeVtrZXldID09PSBzeW0pIHJldHVybiBrZXk7XG4gIH0sXG4gIHVzZVNldHRlcjogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSB0cnVlOyB9LFxuICB1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gZmFsc2U7IH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0Jywge1xuICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4gIGNyZWF0ZTogJGNyZWF0ZSxcbiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4gIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG4gIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG4gIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgUyA9ICRTeW1ib2woKTtcbiAgLy8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge31cbiAgLy8gV2ViS2l0IGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyBudWxsXG4gIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gIHJldHVybiBfc3RyaW5naWZ5KFtTXSkgIT0gJ1tudWxsXScgfHwgX3N0cmluZ2lmeSh7IGE6IFMgfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9Jztcbn0pKSwgJ0pTT04nLCB7XG4gIHN0cmluZ2lmeTogZnVuY3Rpb24gc3RyaW5naWZ5KGl0KSB7XG4gICAgdmFyIGFyZ3MgPSBbaXRdO1xuICAgIHZhciBpID0gMTtcbiAgICB2YXIgcmVwbGFjZXIsICRyZXBsYWNlcjtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgJHJlcGxhY2VyID0gcmVwbGFjZXIgPSBhcmdzWzFdO1xuICAgIGlmICghaXNPYmplY3QocmVwbGFjZXIpICYmIGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKSByZXR1cm47IC8vIElFOCByZXR1cm5zIHN0cmluZyBvbiB1bmRlZmluZWRcbiAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mICRyZXBsYWNlciA9PSAnZnVuY3Rpb24nKSB2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgaWYgKCFpc1N5bWJvbCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIGFyZ3NbMV0gPSByZXBsYWNlcjtcbiAgICByZXR1cm4gX3N0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJncyk7XG4gIH1cbn0pO1xuXG4vLyAxOS40LjMuNCBTeW1ib2wucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdKGhpbnQpXG4kU3ltYm9sW1BST1RPVFlQRV1bVE9fUFJJTUlUSVZFXSB8fCByZXF1aXJlKCcuL19oaWRlJykoJFN5bWJvbFtQUk9UT1RZUEVdLCBUT19QUklNSVRJVkUsICRTeW1ib2xbUFJPVE9UWVBFXS52YWx1ZU9mKTtcbi8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcbi8vIDIwLjIuMS45IE1hdGhbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7XG4vLyAyNC4zLjMgSlNPTltAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoZ2xvYmFsLkpTT04sICdKU09OJywgdHJ1ZSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA5M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///93\n")},function(module,exports,__webpack_require__){eval("var META = __webpack_require__(19)('meta');\nvar isObject = __webpack_require__(6);\nvar has = __webpack_require__(9);\nvar setDesc = __webpack_require__(7).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(13)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanM/ZDNhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTUVUQSA9IHJlcXVpcmUoJy4vX3VpZCcpKCdtZXRhJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBzZXREZXNjID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBpZCA9IDA7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBGUkVFWkUgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7XG4gIHNldERlc2MoaXQsIE1FVEEsIHsgdmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IH0pO1xufTtcbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuICdFJztcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gb2JqZWN0IElEXG4gIH0gcmV0dXJuIGl0W01FVEFdLmk7XG59O1xudmFyIGdldFdlYWsgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuIHRydWU7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gcmV0dXJuIGl0W01FVEFdLnc7XG59O1xuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaRSAmJiBtZXRhLk5FRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzKGl0LCBNRVRBKSkgc2V0TWV0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgbWV0YSA9IG1vZHVsZS5leHBvcnRzID0ge1xuICBLRVk6IE1FVEEsXG4gIE5FRUQ6IGZhbHNlLFxuICBmYXN0S2V5OiBmYXN0S2V5LFxuICBnZXRXZWFrOiBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWV0YS5qc1xuLy8gbW9kdWxlIGlkID0gOTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///94\n")},function(module,exports,__webpack_require__){eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(20);\nvar gOPS = __webpack_require__(55);\nvar pIE = __webpack_require__(35);\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0ta2V5cy5qcz81ZGNlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGFsbCBlbnVtZXJhYmxlIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBzeW1ib2xzXG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHJlc3VsdCA9IGdldEtleXMoaXQpO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgaWYgKGdldFN5bWJvbHMpIHtcbiAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpO1xuICAgIHZhciBpc0VudW0gPSBwSUUuZjtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAoc3ltYm9scy5sZW5ndGggPiBpKSBpZiAoaXNFbnVtLmNhbGwoaXQsIGtleSA9IHN5bWJvbHNbaSsrXSkpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSA5NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///95\n")},function(module,exports,__webpack_require__){eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(15);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LmpzP2VkNDMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDk2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///96\n")},function(module,exports,__webpack_require__){eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(10);\nvar gOPN = __webpack_require__(56).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qcz80NmI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG52YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxudmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGdPUE4oaXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHJldHVybiB3aW5kb3dOYW1lcyAmJiB0b1N0cmluZy5jYWxsKGl0KSA9PSAnW29iamVjdCBXaW5kb3ddJyA/IGdldFdpbmRvd05hbWVzKGl0KSA6IGdPUE4odG9JT2JqZWN0KGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qc1xuLy8gbW9kdWxlIGlkID0gOTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///97\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(34)('asyncIterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcz8zOTg5Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnYXN5bmNJdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gOThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///98\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(34)('observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlLmpzPzQxNjciXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdvYnNlcnZhYmxlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUuanNcbi8vIG1vZHVsZSBpZCA9IDk5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///99\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(101), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz85MjIwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gMTAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///100\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(102);\nmodule.exports = __webpack_require__(0).Object.setPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz84YmYwIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Quc2V0UHJvdG90eXBlT2Y7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L3NldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDEwMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///101\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(3);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(103).set });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcz83YjE4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMy4xOSBPYmplY3Quc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IHNldFByb3RvdHlwZU9mOiByZXF1aXJlKCcuL19zZXQtcHJvdG8nKS5zZXQgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDEwMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///102\n")},function(module,exports,__webpack_require__){eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(6);\nvar anObject = __webpack_require__(4);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(14)(Function.call, __webpack_require__(40).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtcHJvdG8uanM/NjVhNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXByb3RvLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///103\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(105), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzPzNhZjQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGVcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2NyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///104\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(106);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlLmpzP2EwY2UiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGUoUCwgRCkge1xuICByZXR1cm4gJE9iamVjdC5jcmVhdGUoUCwgRCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///105\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(3);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(31) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlLmpzP2IwNWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IGNyZWF0ZTogcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///106\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(108), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cy5qcz83ZDk4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5c1wiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///107\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(109);\nmodule.exports = __webpack_require__(0).Object.keys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qcz84YzU2Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Qua2V5cztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///108\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(30);\nvar $keys = __webpack_require__(20);\n\n__webpack_require__(39)('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qcz8wOWRjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2tleXMnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBrZXlzKGl0KSB7XG4gICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///109\n")},,,,,,function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(63);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(64);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(65);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Bus2 = __webpack_require__(116);\n\nvar _Bus3 = _interopRequireDefault(_Bus2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* @author micaelpedrosa@gmail.com\r\n* Message BUS Interface is an extension of the Bus\r\n* It is used mainly in the internal sandbox routing.\r\n*/\nvar MiniBus = function (_Bus) {\n (0, _inherits3.default)(MiniBus, _Bus);\n\n function MiniBus() {\n (0, _classCallCheck3.default)(this, MiniBus);\n return (0, _possibleConstructorReturn3.default)(this, (MiniBus.__proto__ || (0, _getPrototypeOf2.default)(MiniBus)).call(this));\n }\n\n /**\r\n * Post a message for routing. Message is routed directly to the external routing _onPostMessage.\r\n * @param {Message} inMsg JSON with mandatory Message structure {id, type, from, to}\r\n * @param {Callback} responseCallback Optional callback if a response is expected from the request. A response will be always sent, even if it is a \"Timeout\".\r\n * @return {number} the Message id\r\n */\n\n\n (0, _createClass3.default)(MiniBus, [{\n key: 'postMessage',\n value: function postMessage(inMsg, responseCallback, timeout) {\n var _this = this;\n\n _this._genId(inMsg);\n _this._responseCallback(inMsg, responseCallback, timeout);\n\n //always send to external (to core MessageBus)\n _this._onPostMessage(inMsg);\n\n return inMsg.id;\n }\n\n //internal method used when a message is received by an external routing system\n\n }, {\n key: '_onMessage',\n value: function _onMessage(msg) {\n var _this = this;\n\n if (!_this._onResponse(msg)) {\n var itemList = _this._subscriptions[msg.to];\n if (itemList) {\n _this._publishOn(itemList, msg);\n if (!msg.to.startsWith('hyperty')) {\n _this._publishOnDefault(msg);\n }\n } else {\n _this._publishOnDefault(msg);\n }\n }\n }\n }]);\n return MiniBus;\n}(_Bus3.default); /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **/\n\n\nexports.default = MiniBus;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvTWluaUJ1cy5qcz9lNTIwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuaW1wb3J0IEJ1cyBmcm9tICcuL0J1cyc7XHJcblxyXG4vKipcclxuKiBAYXV0aG9yIG1pY2FlbHBlZHJvc2FAZ21haWwuY29tXHJcbiogTWVzc2FnZSBCVVMgSW50ZXJmYWNlIGlzIGFuIGV4dGVuc2lvbiBvZiB0aGUgQnVzXHJcbiogSXQgaXMgdXNlZCBtYWlubHkgaW4gdGhlIGludGVybmFsIHNhbmRib3ggcm91dGluZy5cclxuKi9cclxuY2xhc3MgTWluaUJ1cyBleHRlbmRzIEJ1cyB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvc3QgYSBtZXNzYWdlIGZvciByb3V0aW5nLiBNZXNzYWdlIGlzIHJvdXRlZCBkaXJlY3RseSB0byB0aGUgZXh0ZXJuYWwgcm91dGluZyBfb25Qb3N0TWVzc2FnZS5cclxuICAgKiBAcGFyYW0gIHtNZXNzYWdlfSBpbk1zZyAgICAgICAgICAgIEpTT04gd2l0aCBtYW5kYXRvcnkgTWVzc2FnZSBzdHJ1Y3R1cmUge2lkLCB0eXBlLCBmcm9tLCB0b31cclxuICAgKiBAcGFyYW0gIHtDYWxsYmFja30gcmVzcG9uc2VDYWxsYmFjayBPcHRpb25hbCBjYWxsYmFjayBpZiBhIHJlc3BvbnNlIGlzIGV4cGVjdGVkIGZyb20gdGhlIHJlcXVlc3QuIEEgcmVzcG9uc2Ugd2lsbCBiZSBhbHdheXMgc2VudCwgZXZlbiBpZiBpdCBpcyBhIFwiVGltZW91dFwiLlxyXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgICAgICAgICAgICB0aGUgTWVzc2FnZSBpZFxyXG4gICAqL1xyXG4gIHBvc3RNZXNzYWdlKGluTXNnLCByZXNwb25zZUNhbGxiYWNrLCB0aW1lb3V0KSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIF90aGlzLl9nZW5JZChpbk1zZyk7XHJcbiAgICBfdGhpcy5fcmVzcG9uc2VDYWxsYmFjayhpbk1zZywgcmVzcG9uc2VDYWxsYmFjaywgdGltZW91dCk7XHJcblxyXG4gICAgLy9hbHdheXMgc2VuZCB0byBleHRlcm5hbCAodG8gY29yZSBNZXNzYWdlQnVzKVxyXG4gICAgX3RoaXMuX29uUG9zdE1lc3NhZ2UoaW5Nc2cpO1xyXG5cclxuICAgIHJldHVybiBpbk1zZy5pZDtcclxuICB9XHJcblxyXG4gIC8vaW50ZXJuYWwgbWV0aG9kIHVzZWQgd2hlbiBhIG1lc3NhZ2UgaXMgcmVjZWl2ZWQgYnkgYW4gZXh0ZXJuYWwgcm91dGluZyBzeXN0ZW1cclxuICBfb25NZXNzYWdlKG1zZykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBpZiAoIV90aGlzLl9vblJlc3BvbnNlKG1zZykpIHtcclxuICAgICAgbGV0IGl0ZW1MaXN0ID0gX3RoaXMuX3N1YnNjcmlwdGlvbnNbbXNnLnRvXTtcclxuICAgICAgaWYgKGl0ZW1MaXN0KSB7XHJcbiAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKTtcclxuICAgICAgICBpZiAoIW1zZy50by5zdGFydHNXaXRoKCdoeXBlcnR5JykpIHtcclxuICAgICAgICAgIF90aGlzLl9wdWJsaXNoT25EZWZhdWx0KG1zZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIF90aGlzLl9wdWJsaXNoT25EZWZhdWx0KG1zZyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNaW5pQnVzO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2J1cy9NaW5pQnVzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTtBQUNBOzs7OztBQUNBOzs7OztBQUtBOzs7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQXBFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0VBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///115\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(41);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(86);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('Bus');\n\n/**\r\n* @author micaelpedrosa@gmail.com\r\n* Minimal interface and implementation to send and receive messages. It can be reused in many type of components.\r\n* Components that need a message system should receive this class as a dependency or extend it.\r\n* Extensions should implement the following private methods: _onPostMessage and _registerExternalListener\r\n*/\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n\n// Log system\n\nvar Bus = function () {\n /* private\r\n _msgId: number;\r\n _subscriptions: \r\n _responseTimeOut: number\r\n _responseCallbacks: void>\r\n */\n\n function Bus() {\n (0, _classCallCheck3.default)(this, Bus);\n\n var _this = this;\n _this._msgId = 0;\n _this._subscriptions = {};\n\n _this._responseTimeOut = 15000; //default to 3s\n _this._responseCallbacks = {};\n\n _this._registerExternalListener();\n }\n\n /**\r\n * Register listener to receive message when \"msg.to === url\".\r\n * Special url \"*\" for default listener is accepted to intercept all messages.\r\n * @param {URL} url Address to intercept, tha is in the message \"to\"\r\n * @param {Listener} listener listener\r\n * @return {MsgListener} instance of MsgListener\r\n */\n\n\n (0, _createClass3.default)(Bus, [{\n key: 'addListener',\n value: function addListener(url, listener) {\n var _this = this;\n\n var item = new MsgListener(_this._subscriptions, url, listener);\n var itemList = _this._subscriptions[url];\n if (!itemList) {\n itemList = [];\n _this._subscriptions[url] = itemList;\n }\n\n itemList.push(item);\n return item;\n }\n\n /**\r\n * Manually add a response listener. Only one listener per message ID should exist.\r\n * ATENTION, there is no timeout for this listener.\r\n * The listener should be removed with a removeResponseListener, failing to do this will result in a unreleased memory problem.\r\n * @param {URL} url Origin address of the message sent, \"msg.from\".\r\n * @param {number} msgId Message ID that is returned from the postMessage.\r\n * @param {Function} responseListener Callback function for the response\r\n */\n\n }, {\n key: 'addResponseListener',\n value: function addResponseListener(url, msgId, responseListener) {\n this._responseCallbacks[url + msgId] = responseListener;\n }\n\n /**\r\n * Remove the response listener.\r\n * @param {URL} url Origin address of the message sent, \"msg.from\".\r\n * @param {number} msgId Message ID that is returned from the postMessage\r\n */\n\n }, {\n key: 'removeResponseListener',\n value: function removeResponseListener(url, msgId) {\n delete this._responseCallbacks[url + msgId];\n }\n\n /**\r\n * Remove all existent listeners for the URL\r\n * @param {URL} url Address registered\r\n */\n\n }, {\n key: 'removeAllListenersOf',\n value: function removeAllListenersOf(url) {\n delete this._subscriptions[url];\n }\n\n /**\r\n * Helper method to bind listeners (in both directions) into other MiniBus target.\r\n * @param {URL} outUrl Outbound URL, register listener for url in direction \"this -> target\"\r\n * @param {URL} inUrl Inbound URL, register listener for url in direction \"target -> this\"\r\n * @param {MiniBus} target The other target MiniBus\r\n * @return {Bound} an object that contains the properties [thisListener, targetListener] and the unbind method.\r\n */\n\n }, {\n key: 'bind',\n value: function bind(outUrl, inUrl, target) {\n var _this2 = this;\n\n var _this = this;\n\n var thisListn = _this.addListener(outUrl, function (msg) {\n target.postMessage(msg);\n });\n\n var targetListn = target.addListener(inUrl, function (msg) {\n _this.postMessage(msg);\n });\n\n return {\n thisListener: thisListn,\n targetListener: targetListn,\n unbind: function unbind() {\n _this2.thisListener.remove();\n _this2.targetListener.remove();\n }\n };\n }\n\n //publish on default listeners\n\n }, {\n key: '_publishOnDefault',\n value: function _publishOnDefault(msg) {\n //is there any \"*\" (default) listeners?\n var itemList = this._subscriptions['*'];\n if (itemList) {\n this._publishOn(itemList, msg);\n }\n }\n\n //publish on a subscription list.\n\n }, {\n key: '_publishOn',\n value: function _publishOn(itemList, msg) {\n itemList.forEach(function (sub) {\n sub._callback(msg);\n });\n }\n }, {\n key: '_responseCallback',\n value: function _responseCallback(inMsg, responseCallback) {\n var timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n var _this = this;\n\n //automatic management of response handlers\n if (responseCallback) {\n var responseId = inMsg.from + inMsg.id;\n _this._responseCallbacks[responseId] = responseCallback;\n\n if (timeout) {\n setTimeout(function () {\n var responseFun = _this._responseCallbacks[responseId];\n delete _this._responseCallbacks[responseId];\n\n if (responseFun) {\n var errorMsg = {\n id: inMsg.id, type: 'response',\n body: { code: 408, desc: 'Response timeout!', value: inMsg }\n };\n\n responseFun(errorMsg);\n }\n }, _this._responseTimeOut);\n }\n }\n }\n\n //TODO: provisional responses should reset timeout\n\n }, {\n key: '_onResponse',\n value: function _onResponse(msg) {\n var _this = this;\n\n if (msg.type === 'response') {\n var responseId = msg.to + msg.id;\n var responseFun = _this._responseCallbacks[responseId];\n\n if (msg.body.code >= 200) {\n //if it's a provisional response, don't delete response listener\n delete _this._responseCallbacks[responseId];\n }\n\n if (responseFun) {\n responseFun(msg);\n return true;\n }\n }\n\n return false;\n }\n\n //receive messages from external interface\n\n }, {\n key: '_onMessage',\n value: function _onMessage(msg) {\n var _this = this;\n\n if (!_this._onResponse(msg)) {\n var itemList = _this._subscriptions[msg.to];\n if (itemList) {\n _this._publishOn(itemList, msg);\n } else {\n _this._publishOnDefault(msg);\n }\n }\n }\n }, {\n key: '_genId',\n value: function _genId(inMsg) {\n //TODO: how do we manage message ID's? Should it be a global runtime counter, or per URL address?\n //Global counter will not work, because there will be multiple MiniBus instances!\n //Per URL, can be a lot of data to maintain!\n //Maybe a counter per MiniBus instance. This is the assumed solution for now.\n if (!inMsg.id || inMsg.id === 0) {\n this._msgId++;\n inMsg.id = this._msgId;\n }\n }\n\n /**\r\n * Send messages to local listeners, or if not exists to external listeners.\r\n * It's has an optional mechanism for automatic management of response handlers.\r\n * The response handler will be unregistered after receiving the response, or after response timeout (default to 3s).\r\n * @param {Message} msg Message to send. Message ID is automatically added to the message.\r\n * @param {Function} responseCallback Optional parameter, if the developer what's automatic response management.\r\n * @return {number} Returns the message ID, in case it should be needed for manual management of the response handler.\r\n */\n\n }, {\n key: 'postMessage',\n value: function postMessage(inMsg, responseCallback) {}\n\n /**\r\n * Function to post messages with a number of retries in case timeouts occur.\r\n * @param {Message} msg Message to send. Message ID is automatically added to the message.\r\n * @param {Function} responseCallback Optional parameter, if the developer what's automatic response management.\r\n * @param {integer} retries number of retries when timeouts occur\r\n * @return {boolean} message delivery result;\r\n */\n\n }, {\n key: 'postMessageWithRetries',\n value: function postMessageWithRetries(msg, retries, callback) {\n\n var _this = this;\n\n var retry = 0;\n //let timeout = true;\n\n var sendMsg = function sendMsg() {\n\n return new _promise2.default(function (resolve, reject) {\n _this.postMessage(msg, function (reply) {\n if (reply.body.code === 408 || reply.body.code === 500) reject();else {\n log.info('[Bus.postMessageWithRetries] msg delivered: ', msg);\n callback(reply);\n resolve();\n }\n });\n });\n };\n\n var tryAgain = function tryAgain() {\n sendMsg().then(function () {\n //timeout = false;\n return;\n }, function () {\n log.warn('[Bus.postMessageWithRetries] Message Bounced (retry ' + retry + '): \\'', msg);\n if (retry++ < retries) {\n tryAgain();\n // setTimeout(() => { tryAgain(); }, 1000);\n } else {\n var error = '[Error] Message Bounced (delivery attempts ' + retries + '): \\'';\n throw new Error(error + msg);\n }\n });\n };\n tryAgain();\n }\n\n /**\r\n * Not public available, used by the class extension implementation, to process messages from the public \"postMessage\" without a registered listener.\r\n * Used to send the message to an external interface, like a WebWorker, IFrame, etc.\r\n * @param {Message.Message} msg Message\r\n */\n\n }, {\n key: '_onPostMessage',\n value: function _onPostMessage(msg) {} /*implementation will send message to external system*/\n\n /**\r\n * Not public available, used by the class extension implementation, to process all messages that enter the MiniBus from an external interface, like a WebWorker, IFrame, etc.\r\n * This method is called one time in the constructor to register external listeners.\r\n * The implementation will probably call the \"_onMessage\" method to publish in the local listeners.\r\n * DO NOT call \"postMessage\", there is a danger that the message enters in a cycle!\r\n */\n\n }, {\n key: '_registerExternalListener',\n value: function _registerExternalListener() {/*implementation will register external listener and call \"this._onMessage(msg)\" */}\n }]);\n return Bus;\n}();\n\nvar MsgListener = function () {\n /* private\r\n _subscriptions: ;\r\n _url: string;\r\n _callback: (msg) => void;\r\n */\n\n function MsgListener(subscriptions, url, callback) {\n (0, _classCallCheck3.default)(this, MsgListener);\n\n var _this = this;\n\n _this._subscriptions = subscriptions;\n _this._url = url;\n _this._callback = callback;\n }\n\n (0, _createClass3.default)(MsgListener, [{\n key: 'remove',\n\n\n /**\r\n * Remove this listener from the Bus\r\n */\n value: function remove() {\n var _this = this;\n\n var subs = _this._subscriptions[_this._url];\n if (subs) {\n var index = subs.indexOf(_this);\n subs.splice(index, 1);\n\n //if there are no listeners, remove the subscription entirely.\n if (subs.length === 0) {\n delete _this._subscriptions[_this._url];\n }\n }\n }\n }, {\n key: 'url',\n get: function get() {\n return this._url;\n }\n }]);\n return MsgListener;\n}();\n\nexports.default = Bus;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvQnVzLmpzPzZkMTciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcclxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcclxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxyXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxyXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcclxuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcclxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxyXG4qXHJcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcclxuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbipcclxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4qXHJcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbioqL1xyXG5cclxuLy8gTG9nIHN5c3RlbVxyXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xyXG5sZXQgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignQnVzJyk7XHJcblxyXG4vKipcclxuKiBAYXV0aG9yIG1pY2FlbHBlZHJvc2FAZ21haWwuY29tXHJcbiogTWluaW1hbCBpbnRlcmZhY2UgYW5kIGltcGxlbWVudGF0aW9uIHRvIHNlbmQgYW5kIHJlY2VpdmUgbWVzc2FnZXMuIEl0IGNhbiBiZSByZXVzZWQgaW4gbWFueSB0eXBlIG9mIGNvbXBvbmVudHMuXHJcbiogQ29tcG9uZW50cyB0aGF0IG5lZWQgYSBtZXNzYWdlIHN5c3RlbSBzaG91bGQgcmVjZWl2ZSB0aGlzIGNsYXNzIGFzIGEgZGVwZW5kZW5jeSBvciBleHRlbmQgaXQuXHJcbiogRXh0ZW5zaW9ucyBzaG91bGQgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgcHJpdmF0ZSBtZXRob2RzOiBfb25Qb3N0TWVzc2FnZSBhbmQgX3JlZ2lzdGVyRXh0ZXJuYWxMaXN0ZW5lclxyXG4qL1xyXG5jbGFzcyBCdXMge1xyXG4gIC8qIHByaXZhdGVcclxuICBfbXNnSWQ6IG51bWJlcjtcclxuICBfc3Vic2NyaXB0aW9uczogPHVybDogTXNnTGlzdGVuZXJbXT5cclxuXHJcbiAgX3Jlc3BvbnNlVGltZU91dDogbnVtYmVyXHJcbiAgX3Jlc3BvbnNlQ2FsbGJhY2tzOiA8dXJsK2lkOiAobXNnKSA9PiB2b2lkPlxyXG5cclxuICAqL1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBfdGhpcy5fbXNnSWQgPSAwO1xyXG4gICAgX3RoaXMuX3N1YnNjcmlwdGlvbnMgPSB7fTtcclxuXHJcbiAgICBfdGhpcy5fcmVzcG9uc2VUaW1lT3V0ID0gMTUwMDA7IC8vZGVmYXVsdCB0byAzc1xyXG4gICAgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzID0ge307XHJcblxyXG4gICAgX3RoaXMuX3JlZ2lzdGVyRXh0ZXJuYWxMaXN0ZW5lcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBSZWdpc3RlciBsaXN0ZW5lciB0byByZWNlaXZlIG1lc3NhZ2Ugd2hlbiBcIm1zZy50byA9PT0gdXJsXCIuXHJcbiAgKiBTcGVjaWFsIHVybCBcIipcIiBmb3IgZGVmYXVsdCBsaXN0ZW5lciBpcyBhY2NlcHRlZCB0byBpbnRlcmNlcHQgYWxsIG1lc3NhZ2VzLlxyXG4gICogQHBhcmFtIHtVUkx9IHVybCBBZGRyZXNzIHRvIGludGVyY2VwdCwgdGhhIGlzIGluIHRoZSBtZXNzYWdlIFwidG9cIlxyXG4gICogQHBhcmFtIHtMaXN0ZW5lcn0gbGlzdGVuZXIgbGlzdGVuZXJcclxuICAqIEByZXR1cm4ge01zZ0xpc3RlbmVyfSBpbnN0YW5jZSBvZiBNc2dMaXN0ZW5lclxyXG4gICovXHJcbiAgYWRkTGlzdGVuZXIodXJsLCBsaXN0ZW5lcikge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBsZXQgaXRlbSA9IG5ldyBNc2dMaXN0ZW5lcihfdGhpcy5fc3Vic2NyaXB0aW9ucywgdXJsLCBsaXN0ZW5lcik7XHJcbiAgICBsZXQgaXRlbUxpc3QgPSBfdGhpcy5fc3Vic2NyaXB0aW9uc1t1cmxdO1xyXG4gICAgaWYgKCFpdGVtTGlzdCkge1xyXG4gICAgICBpdGVtTGlzdCA9IFtdO1xyXG4gICAgICBfdGhpcy5fc3Vic2NyaXB0aW9uc1t1cmxdID0gaXRlbUxpc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgaXRlbUxpc3QucHVzaChpdGVtKTtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFudWFsbHkgYWRkIGEgcmVzcG9uc2UgbGlzdGVuZXIuIE9ubHkgb25lIGxpc3RlbmVyIHBlciBtZXNzYWdlIElEIHNob3VsZCBleGlzdC5cclxuICAgKiBBVEVOVElPTiwgdGhlcmUgaXMgbm8gdGltZW91dCBmb3IgdGhpcyBsaXN0ZW5lci5cclxuICAgKiBUaGUgbGlzdGVuZXIgc2hvdWxkIGJlIHJlbW92ZWQgd2l0aCBhIHJlbW92ZVJlc3BvbnNlTGlzdGVuZXIsIGZhaWxpbmcgdG8gZG8gdGhpcyB3aWxsIHJlc3VsdCBpbiBhIHVucmVsZWFzZWQgbWVtb3J5IHByb2JsZW0uXHJcbiAgICogQHBhcmFtIHtVUkx9IHVybCBPcmlnaW4gYWRkcmVzcyBvZiB0aGUgbWVzc2FnZSBzZW50LCBcIm1zZy5mcm9tXCIuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1zZ0lkIE1lc3NhZ2UgSUQgdGhhdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBwb3N0TWVzc2FnZS5cclxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNwb25zZUxpc3RlbmVyIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgcmVzcG9uc2VcclxuICAgKi9cclxuICBhZGRSZXNwb25zZUxpc3RlbmVyKHVybCwgbXNnSWQsIHJlc3BvbnNlTGlzdGVuZXIpIHtcclxuICAgIHRoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3VybCArIG1zZ0lkXSA9IHJlc3BvbnNlTGlzdGVuZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgdGhlIHJlc3BvbnNlIGxpc3RlbmVyLlxyXG4gICAqIEBwYXJhbSB7VVJMfSB1cmwgT3JpZ2luIGFkZHJlc3Mgb2YgdGhlIG1lc3NhZ2Ugc2VudCwgXCJtc2cuZnJvbVwiLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtc2dJZCAgTWVzc2FnZSBJRCB0aGF0IGlzIHJldHVybmVkIGZyb20gdGhlIHBvc3RNZXNzYWdlXHJcbiAgICovXHJcbiAgcmVtb3ZlUmVzcG9uc2VMaXN0ZW5lcih1cmwsIG1zZ0lkKSB7XHJcbiAgICBkZWxldGUgdGhpcy5fcmVzcG9uc2VDYWxsYmFja3NbdXJsICsgbXNnSWRdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGFsbCBleGlzdGVudCBsaXN0ZW5lcnMgZm9yIHRoZSBVUkxcclxuICAgKiBAcGFyYW0gIHtVUkx9IHVybCBBZGRyZXNzIHJlZ2lzdGVyZWRcclxuICAgKi9cclxuICByZW1vdmVBbGxMaXN0ZW5lcnNPZih1cmwpIHtcclxuICAgIGRlbGV0ZSB0aGlzLl9zdWJzY3JpcHRpb25zW3VybF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGJpbmQgbGlzdGVuZXJzIChpbiBib3RoIGRpcmVjdGlvbnMpIGludG8gb3RoZXIgTWluaUJ1cyB0YXJnZXQuXHJcbiAgICogQHBhcmFtICB7VVJMfSBvdXRVcmwgT3V0Ym91bmQgVVJMLCByZWdpc3RlciBsaXN0ZW5lciBmb3IgdXJsIGluIGRpcmVjdGlvbiBcInRoaXMgLT4gdGFyZ2V0XCJcclxuICAgKiBAcGFyYW0gIHtVUkx9IGluVXJsIEluYm91bmQgVVJMLCByZWdpc3RlciBsaXN0ZW5lciBmb3IgdXJsIGluIGRpcmVjdGlvbiBcInRhcmdldCAtPiB0aGlzXCJcclxuICAgKiBAcGFyYW0gIHtNaW5pQnVzfSB0YXJnZXQgVGhlIG90aGVyIHRhcmdldCBNaW5pQnVzXHJcbiAgICogQHJldHVybiB7Qm91bmR9IGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBwcm9wZXJ0aWVzIFt0aGlzTGlzdGVuZXIsIHRhcmdldExpc3RlbmVyXSBhbmQgdGhlIHVuYmluZCBtZXRob2QuXHJcbiAgICovXHJcbiAgYmluZChvdXRVcmwsIGluVXJsLCB0YXJnZXQpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IHRoaXNMaXN0biA9IF90aGlzLmFkZExpc3RlbmVyKG91dFVybCwgKG1zZykgPT4ge1xyXG4gICAgICB0YXJnZXQucG9zdE1lc3NhZ2UobXNnKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCB0YXJnZXRMaXN0biA9IHRhcmdldC5hZGRMaXN0ZW5lcihpblVybCwgKG1zZykgPT4ge1xyXG4gICAgICBfdGhpcy5wb3N0TWVzc2FnZShtc2cpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGhpc0xpc3RlbmVyOiB0aGlzTGlzdG4sXHJcbiAgICAgIHRhcmdldExpc3RlbmVyOiB0YXJnZXRMaXN0bixcclxuICAgICAgdW5iaW5kOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50aGlzTGlzdGVuZXIucmVtb3ZlKCk7XHJcbiAgICAgICAgdGhpcy50YXJnZXRMaXN0ZW5lci5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vcHVibGlzaCBvbiBkZWZhdWx0IGxpc3RlbmVyc1xyXG4gIF9wdWJsaXNoT25EZWZhdWx0KG1zZykge1xyXG4gICAgLy9pcyB0aGVyZSBhbnkgXCIqXCIgKGRlZmF1bHQpIGxpc3RlbmVycz9cclxuICAgIGxldCBpdGVtTGlzdCA9IHRoaXMuX3N1YnNjcmlwdGlvbnNbJyonXTtcclxuICAgIGlmIChpdGVtTGlzdCkge1xyXG4gICAgICB0aGlzLl9wdWJsaXNoT24oaXRlbUxpc3QsIG1zZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3B1Ymxpc2ggb24gYSBzdWJzY3JpcHRpb24gbGlzdC5cclxuICBfcHVibGlzaE9uKGl0ZW1MaXN0LCBtc2cpIHtcclxuICAgIGl0ZW1MaXN0LmZvckVhY2goKHN1YikgPT4ge1xyXG4gICAgICBzdWIuX2NhbGxiYWNrKG1zZyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIF9yZXNwb25zZUNhbGxiYWNrKGluTXNnLCByZXNwb25zZUNhbGxiYWNrLCB0aW1lb3V0ID0gdHJ1ZSkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICAvL2F1dG9tYXRpYyBtYW5hZ2VtZW50IG9mIHJlc3BvbnNlIGhhbmRsZXJzXHJcbiAgICBpZiAocmVzcG9uc2VDYWxsYmFjaykge1xyXG4gICAgICBsZXQgcmVzcG9uc2VJZCA9IGluTXNnLmZyb20gKyBpbk1zZy5pZDtcclxuICAgICAgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdID0gcmVzcG9uc2VDYWxsYmFjaztcclxuXHJcbiAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgcmVzcG9uc2VGdW4gPSBfdGhpcy5fcmVzcG9uc2VDYWxsYmFja3NbcmVzcG9uc2VJZF07XHJcbiAgICAgICAgICBkZWxldGUgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdO1xyXG5cclxuICAgICAgICAgIGlmIChyZXNwb25zZUZ1bikge1xyXG4gICAgICAgICAgICBsZXQgZXJyb3JNc2cgPSB7XHJcbiAgICAgICAgICAgICAgaWQ6IGluTXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgICAgICAgIGJvZHk6IHsgY29kZTogNDA4LCBkZXNjOiAnUmVzcG9uc2UgdGltZW91dCEnLCB2YWx1ZTogaW5Nc2cgfVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgcmVzcG9uc2VGdW4oZXJyb3JNc2cpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIF90aGlzLl9yZXNwb25zZVRpbWVPdXQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbi8vVE9ETzogcHJvdmlzaW9uYWwgcmVzcG9uc2VzIHNob3VsZCByZXNldCB0aW1lb3V0XHJcbiAgX29uUmVzcG9uc2UobXNnKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGlmIChtc2cudHlwZSA9PT0gJ3Jlc3BvbnNlJykge1xyXG4gICAgICBsZXQgcmVzcG9uc2VJZCA9IG1zZy50byArIG1zZy5pZDtcclxuICAgICAgbGV0IHJlc3BvbnNlRnVuID0gX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdO1xyXG5cclxuICAgICAgaWYgKG1zZy5ib2R5LmNvZGUgPj0gMjAwKSB7IC8vaWYgaXQncyBhIHByb3Zpc2lvbmFsIHJlc3BvbnNlLCBkb24ndCBkZWxldGUgcmVzcG9uc2UgbGlzdGVuZXJcclxuICAgICAgICBkZWxldGUgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocmVzcG9uc2VGdW4pIHtcclxuICAgICAgICByZXNwb25zZUZ1bihtc2cpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvL3JlY2VpdmUgbWVzc2FnZXMgZnJvbSBleHRlcm5hbCBpbnRlcmZhY2VcclxuICBfb25NZXNzYWdlKG1zZykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBpZiAoIV90aGlzLl9vblJlc3BvbnNlKG1zZykpIHtcclxuICAgICAgbGV0IGl0ZW1MaXN0ID0gX3RoaXMuX3N1YnNjcmlwdGlvbnNbbXNnLnRvXTtcclxuICAgICAgaWYgKGl0ZW1MaXN0KSB7XHJcbiAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBfdGhpcy5fcHVibGlzaE9uRGVmYXVsdChtc2cpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfZ2VuSWQoaW5Nc2cpIHtcclxuICAgIC8vVE9ETzogaG93IGRvIHdlIG1hbmFnZSBtZXNzYWdlIElEJ3M/IFNob3VsZCBpdCBiZSBhIGdsb2JhbCBydW50aW1lIGNvdW50ZXIsIG9yIHBlciBVUkwgYWRkcmVzcz9cclxuICAgIC8vR2xvYmFsIGNvdW50ZXIgd2lsbCBub3Qgd29yaywgYmVjYXVzZSB0aGVyZSB3aWxsIGJlIG11bHRpcGxlIE1pbmlCdXMgaW5zdGFuY2VzIVxyXG4gICAgLy9QZXIgVVJMLCBjYW4gYmUgYSBsb3Qgb2YgZGF0YSB0byBtYWludGFpbiFcclxuICAgIC8vTWF5YmUgYSBjb3VudGVyIHBlciBNaW5pQnVzIGluc3RhbmNlLiBUaGlzIGlzIHRoZSBhc3N1bWVkIHNvbHV0aW9uIGZvciBub3cuXHJcbiAgICBpZiAoIWluTXNnLmlkIHx8IGluTXNnLmlkID09PSAwKSB7XHJcbiAgICAgIHRoaXMuX21zZ0lkKys7XHJcbiAgICAgIGluTXNnLmlkID0gdGhpcy5fbXNnSWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFNlbmQgbWVzc2FnZXMgdG8gbG9jYWwgbGlzdGVuZXJzLCBvciBpZiBub3QgZXhpc3RzIHRvIGV4dGVybmFsIGxpc3RlbmVycy5cclxuICAqIEl0J3MgaGFzIGFuIG9wdGlvbmFsIG1lY2hhbmlzbSBmb3IgYXV0b21hdGljIG1hbmFnZW1lbnQgb2YgcmVzcG9uc2UgaGFuZGxlcnMuXHJcbiAgKiBUaGUgcmVzcG9uc2UgaGFuZGxlciB3aWxsIGJlIHVucmVnaXN0ZXJlZCBhZnRlciByZWNlaXZpbmcgdGhlIHJlc3BvbnNlLCBvciBhZnRlciByZXNwb25zZSB0aW1lb3V0IChkZWZhdWx0IHRvIDNzKS5cclxuICAqIEBwYXJhbSAge01lc3NhZ2V9IG1zZyBNZXNzYWdlIHRvIHNlbmQuIE1lc3NhZ2UgSUQgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgbWVzc2FnZS5cclxuICAqIEBwYXJhbSAge0Z1bmN0aW9ufSByZXNwb25zZUNhbGxiYWNrIE9wdGlvbmFsIHBhcmFtZXRlciwgaWYgdGhlIGRldmVsb3BlciB3aGF0J3MgYXV0b21hdGljIHJlc3BvbnNlIG1hbmFnZW1lbnQuXHJcbiAgKiBAcmV0dXJuIHtudW1iZXJ9IFJldHVybnMgdGhlIG1lc3NhZ2UgSUQsIGluIGNhc2UgaXQgc2hvdWxkIGJlIG5lZWRlZCBmb3IgbWFudWFsIG1hbmFnZW1lbnQgb2YgdGhlIHJlc3BvbnNlIGhhbmRsZXIuXHJcbiAgKi9cclxuICBwb3N0TWVzc2FnZShpbk1zZywgcmVzcG9uc2VDYWxsYmFjaykgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIHRvIHBvc3QgbWVzc2FnZXMgd2l0aCBhIG51bWJlciBvZiByZXRyaWVzIGluIGNhc2UgdGltZW91dHMgb2NjdXIuXHJcbiAgICogQHBhcmFtICB7TWVzc2FnZX0gbXNnIE1lc3NhZ2UgdG8gc2VuZC4gTWVzc2FnZSBJRCBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBtZXNzYWdlLlxyXG4gICAqIEBwYXJhbSAge0Z1bmN0aW9ufSByZXNwb25zZUNhbGxiYWNrIE9wdGlvbmFsIHBhcmFtZXRlciwgaWYgdGhlIGRldmVsb3BlciB3aGF0J3MgYXV0b21hdGljIHJlc3BvbnNlIG1hbmFnZW1lbnQuXHJcbiAgICogQHBhcmFtICB7aW50ZWdlcn0gcmV0cmllcyBudW1iZXIgb2YgcmV0cmllcyB3aGVuIHRpbWVvdXRzIG9jY3VyXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gbWVzc2FnZSBkZWxpdmVyeSByZXN1bHQ7XHJcbiAgICovXHJcblxyXG5cclxuICBwb3N0TWVzc2FnZVdpdGhSZXRyaWVzKG1zZywgcmV0cmllcywgY2FsbGJhY2spIHtcclxuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGxldCByZXRyeSA9IDA7XHJcbiAgICAvL2xldCB0aW1lb3V0ID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgc2VuZE1zZyA9IGZ1bmN0aW9uKCkge1xyXG5cclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBfdGhpcy5wb3N0TWVzc2FnZShtc2csIChyZXBseSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gNDA4IHx8IHJlcGx5LmJvZHkuY29kZSA9PT0gNTAwKSByZWplY3QoKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsb2cuaW5mbygnW0J1cy5wb3N0TWVzc2FnZVdpdGhSZXRyaWVzXSBtc2cgZGVsaXZlcmVkOiAnLCBtc2cpO1xyXG4gICAgICAgICAgICBjYWxsYmFjayhyZXBseSk7XHJcbiAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGxldCB0cnlBZ2FpbiA9ICgpID0+IHtcclxuICAgICAgc2VuZE1zZygpLnRoZW4oKCk9PntcclxuICAgICAgICAvL3RpbWVvdXQgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0sICgpPT57XHJcbiAgICAgICAgbG9nLndhcm4oYFtCdXMucG9zdE1lc3NhZ2VXaXRoUmV0cmllc10gTWVzc2FnZSBCb3VuY2VkIChyZXRyeSAke3JldHJ5fSk6ICdgLCBtc2cpO1xyXG4gICAgICAgIGlmIChyZXRyeSsrIDwgcmV0cmllcykge1xyXG4gICAgICAgICAgdHJ5QWdhaW4oKTtcclxuICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4geyB0cnlBZ2FpbigpOyB9LCAxMDAwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBgW0Vycm9yXSBNZXNzYWdlIEJvdW5jZWQgKGRlbGl2ZXJ5IGF0dGVtcHRzICR7cmV0cmllc30pOiAnYDtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvciArIG1zZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICB0cnlBZ2FpbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTm90IHB1YmxpYyBhdmFpbGFibGUsIHVzZWQgYnkgdGhlIGNsYXNzIGV4dGVuc2lvbiBpbXBsZW1lbnRhdGlvbiwgdG8gcHJvY2VzcyBtZXNzYWdlcyBmcm9tIHRoZSBwdWJsaWMgXCJwb3N0TWVzc2FnZVwiIHdpdGhvdXQgYSByZWdpc3RlcmVkIGxpc3RlbmVyLlxyXG4gICAqIFVzZWQgdG8gc2VuZCB0aGUgbWVzc2FnZSB0byBhbiBleHRlcm5hbCBpbnRlcmZhY2UsIGxpa2UgYSBXZWJXb3JrZXIsIElGcmFtZSwgZXRjLlxyXG4gICAqIEBwYXJhbSAge01lc3NhZ2UuTWVzc2FnZX0gbXNnIE1lc3NhZ2VcclxuICAgKi9cclxuICBfb25Qb3N0TWVzc2FnZShtc2cpIHsgLyppbXBsZW1lbnRhdGlvbiB3aWxsIHNlbmQgbWVzc2FnZSB0byBleHRlcm5hbCBzeXN0ZW0qLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5vdCBwdWJsaWMgYXZhaWxhYmxlLCB1c2VkIGJ5IHRoZSBjbGFzcyBleHRlbnNpb24gaW1wbGVtZW50YXRpb24sIHRvIHByb2Nlc3MgYWxsIG1lc3NhZ2VzIHRoYXQgZW50ZXIgdGhlIE1pbmlCdXMgZnJvbSBhbiBleHRlcm5hbCBpbnRlcmZhY2UsIGxpa2UgYSBXZWJXb3JrZXIsIElGcmFtZSwgZXRjLlxyXG4gICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmUgdGltZSBpbiB0aGUgY29uc3RydWN0b3IgdG8gcmVnaXN0ZXIgZXh0ZXJuYWwgbGlzdGVuZXJzLlxyXG4gICAqIFRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIHByb2JhYmx5IGNhbGwgdGhlIFwiX29uTWVzc2FnZVwiIG1ldGhvZCB0byBwdWJsaXNoIGluIHRoZSBsb2NhbCBsaXN0ZW5lcnMuXHJcbiAgICogRE8gTk9UIGNhbGwgXCJwb3N0TWVzc2FnZVwiLCB0aGVyZSBpcyBhIGRhbmdlciB0aGF0IHRoZSBtZXNzYWdlIGVudGVycyBpbiBhIGN5Y2xlIVxyXG4gICAqL1xyXG4gIF9yZWdpc3RlckV4dGVybmFsTGlzdGVuZXIoKSB7IC8qaW1wbGVtZW50YXRpb24gd2lsbCByZWdpc3RlciBleHRlcm5hbCBsaXN0ZW5lciBhbmQgY2FsbCBcInRoaXMuX29uTWVzc2FnZShtc2cpXCIgKi8gfVxyXG5cclxufVxyXG5cclxuY2xhc3MgTXNnTGlzdGVuZXIge1xyXG4gIC8qIHByaXZhdGVcclxuICBfc3Vic2NyaXB0aW9uczogPHN0cmluZzogTXNnTGlzdGVuZXJbXT47XHJcbiAgX3VybDogc3RyaW5nO1xyXG4gIF9jYWxsYmFjazogKG1zZykgPT4gdm9pZDtcclxuICAqL1xyXG5cclxuICBjb25zdHJ1Y3RvcihzdWJzY3JpcHRpb25zLCB1cmwsIGNhbGxiYWNrKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIF90aGlzLl9zdWJzY3JpcHRpb25zID0gc3Vic2NyaXB0aW9ucztcclxuICAgIF90aGlzLl91cmwgPSB1cmw7XHJcbiAgICBfdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjaztcclxuICB9XHJcblxyXG4gIGdldCB1cmwoKSB7IHJldHVybiB0aGlzLl91cmw7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIHRoaXMgbGlzdGVuZXIgZnJvbSB0aGUgQnVzXHJcbiAgICovXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICBsZXQgc3VicyA9IF90aGlzLl9zdWJzY3JpcHRpb25zW190aGlzLl91cmxdO1xyXG4gICAgaWYgKHN1YnMpIHtcclxuICAgICAgbGV0IGluZGV4ID0gc3Vicy5pbmRleE9mKF90aGlzKTtcclxuICAgICAgc3Vicy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cclxuICAgICAgLy9pZiB0aGVyZSBhcmUgbm8gbGlzdGVuZXJzLCByZW1vdmUgdGhlIHN1YnNjcmlwdGlvbiBlbnRpcmVseS5cclxuICAgICAgaWYgKHN1YnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgZGVsZXRlIF90aGlzLl9zdWJzY3JpcHRpb25zW190aGlzLl91cmxdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBCdXM7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvYnVzL0J1cy5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBO0FBQ0E7QUFEQTtBQUNBOzs7OztBQUFBO0FBQ0E7QUFDQTs7Ozs7O0FBM0JBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTtBQUNBO0FBU0E7QUFDQTs7Ozs7OztBQVNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFPQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBTUE7Ozs7O0FBSUE7QUFDQTs7Ozs7O0FBTUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBR0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQWxCQTtBQUFBO0FBQUE7Ozs7O0FBcUJBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///116\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\n/**\r\n * @author micaelpedrosa@gmail.com\r\n * Base class to implement internal deploy manager of components.\r\n */\n\n/**\r\n * @author micaelpedrosa@gmail.com\r\n * Internal component registry of all sandboxes.\r\n * Process internal request's for component deploy.\r\n */\nvar SandboxRegistry = function () {\n /* private\r\n _components: \r\n */\n\n function SandboxRegistry(bus) {\n (0, _classCallCheck3.default)(this, SandboxRegistry);\n\n var _this = this;\n\n _this._bus = bus;\n _this._components = {};\n\n bus.addListener(SandboxRegistry.InternalDeployAddress, function (msg) {\n //console.log('SandboxRegistry-RCV: ', msg);\n // let responseMsg = {\n // id: msg.id, type: 'response', from: SandboxRegistry.InternalDeployAddress, to: SandboxRegistry.ExternalDeployAddress\n // };\n\n switch (msg.type) {\n case 'create':\n _this._onDeploy(msg);break;\n case 'delete':\n _this._onRemove(msg);break;\n }\n });\n }\n\n (0, _createClass3.default)(SandboxRegistry, [{\n key: '_responseMsg',\n value: function _responseMsg(msg, code, value) {\n\n var _this = this;\n\n // let messageFactory = _this.messageFactory;\n\n //FLOW-OUT: generic response message to external Sandbox (deploy and un-deploy responses)\n var responseMsg = {\n id: msg.id, type: 'response', from: SandboxRegistry.InternalDeployAddress, to: SandboxRegistry.ExternalDeployAddress\n };\n\n // Chanege the origin message, because the response;\n // msg.from = SandboxRegistry.InternalDeployAddress;\n // msg.to = SandboxRegistry.ExternalDeployAddress;\n\n var body = {};\n if (code) body.code = code;\n if (value) body.desc = value;\n\n responseMsg.body = body;\n\n // return messageFactory.createResponse(msg, code, value);\n return responseMsg;\n }\n\n //FLOW-IN: message from the runtime core Sandbox -> deployComponent\n\n }, {\n key: '_onDeploy',\n value: function _onDeploy(msg) {\n var _this = this;\n var config = msg.body.config;\n var componentURL = msg.body.url;\n var sourceCode = msg.body.sourceCode;\n var responseCode = void 0;\n var responseDesc = void 0;\n\n if (!_this._components.hasOwnProperty(componentURL)) {\n try {\n _this._components[componentURL] = _this._create(componentURL, sourceCode, config);\n responseCode = 200;\n } catch (error) {\n responseCode = 500;\n responseDesc = error;\n }\n } else {\n responseCode = 500;\n responseDesc = 'Instance ' + componentURL + ' already exist!';\n }\n\n var responseMsg = _this._responseMsg(msg, responseCode, responseDesc);\n _this._bus.postMessage(responseMsg);\n }\n\n //FLOW-IN: message from the runtime core Sandbox -> removeComponent\n\n }, {\n key: '_onRemove',\n value: function _onRemove(msg) {\n var _this = this;\n var componentURL = msg.body.url;\n var responseCode = void 0;\n var responseDesc = void 0;\n\n if (_this._components.hasOwnProperty(componentURL)) {\n //remove component from the pool and all listeners\n delete _this._components[componentURL];\n _this._bus.removeAllListenersOf(componentURL);\n responseCode = 200;\n } else {\n responseCode = 500;\n responseDesc = 'Instance ' + componentURL + ' doesn\\'t exist!';\n }\n\n var responseMsg = _this._responseMsg(msg, responseCode, responseDesc);\n\n _this._bus.postMessage(responseMsg);\n }\n\n /**\r\n * This method should be implemented by the internal sandbox code.\r\n * @param {ComponentURL} url URL used for the instance\r\n * @param {string} sourceCode Code of the component\r\n * @param {Config} config Configuration parameters\r\n * @return {Object} Returns instance of the component or throw an error \"throw 'error message'\"\r\n */\n\n }, {\n key: '_create',\n value: function _create(url, sourceCode, config) {\n //implementation specific\n /* example code:\r\n eval(sourceCode);\r\n return activate(url, _this._bus, config);\r\n */\n }\n }, {\n key: 'components',\n get: function get() {\n return this._components;\n }\n }]);\n return SandboxRegistry;\n}();\n\nSandboxRegistry.ExternalDeployAddress = 'hyperty-runtime://sandbox/external';\nSandboxRegistry.InternalDeployAddress = 'hyperty-runtime://sandbox/internal';\n\nexports.default = SandboxRegistry;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zYW5kYm94L1NhbmRib3hSZWdpc3RyeS5qcz9lZTFjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxyXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXHJcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXHJcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcclxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXHJcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXHJcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cclxuKlxyXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4qXHJcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuKlxyXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKi9cclxuLyoqXHJcbiAqIEBhdXRob3IgbWljYWVscGVkcm9zYUBnbWFpbC5jb21cclxuICogQmFzZSBjbGFzcyB0byBpbXBsZW1lbnQgaW50ZXJuYWwgZGVwbG95IG1hbmFnZXIgb2YgY29tcG9uZW50cy5cclxuICovXHJcblxyXG4vKipcclxuICogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxyXG4gKiBJbnRlcm5hbCBjb21wb25lbnQgcmVnaXN0cnkgb2YgYWxsIHNhbmRib3hlcy5cclxuICogUHJvY2VzcyBpbnRlcm5hbCByZXF1ZXN0J3MgZm9yIGNvbXBvbmVudCBkZXBsb3kuXHJcbiAqL1xyXG5jbGFzcyBTYW5kYm94UmVnaXN0cnkge1xyXG4gIC8qIHByaXZhdGVcclxuICBfY29tcG9uZW50czogPHVybDogaW5zdGFuY2U+XHJcbiAgKi9cclxuXHJcbiAgY29uc3RydWN0b3IoYnVzKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIF90aGlzLl9idXMgPSBidXM7XHJcbiAgICBfdGhpcy5fY29tcG9uZW50cyA9IHt9O1xyXG5cclxuICAgIGJ1cy5hZGRMaXN0ZW5lcihTYW5kYm94UmVnaXN0cnkuSW50ZXJuYWxEZXBsb3lBZGRyZXNzLCAobXNnKSA9PiB7XHJcbiAgICAgIC8vY29uc29sZS5sb2coJ1NhbmRib3hSZWdpc3RyeS1SQ1Y6ICcsIG1zZyk7XHJcbiAgICAgIC8vIGxldCByZXNwb25zZU1zZyA9IHtcclxuICAgICAgLy8gICBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCBmcm9tOiBTYW5kYm94UmVnaXN0cnkuSW50ZXJuYWxEZXBsb3lBZGRyZXNzLCB0bzogU2FuZGJveFJlZ2lzdHJ5LkV4dGVybmFsRGVwbG95QWRkcmVzc1xyXG4gICAgICAvLyB9O1xyXG5cclxuICAgICAgc3dpdGNoIChtc2cudHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2NyZWF0ZSc6IF90aGlzLl9vbkRlcGxveShtc2cpOyBicmVhaztcclxuICAgICAgICBjYXNlICdkZWxldGUnOiBfdGhpcy5fb25SZW1vdmUobXNnKTsgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbXBvbmVudHMoKSB7IHJldHVybiB0aGlzLl9jb21wb25lbnRzOyB9XHJcblxyXG4gIF9yZXNwb25zZU1zZyhtc2csIGNvZGUsIHZhbHVlKSB7XHJcblxyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICAvLyBsZXQgbWVzc2FnZUZhY3RvcnkgPSBfdGhpcy5tZXNzYWdlRmFjdG9yeTtcclxuXHJcbiAgICAvL0ZMT1ctT1VUOiBnZW5lcmljIHJlc3BvbnNlIG1lc3NhZ2UgdG8gZXh0ZXJuYWwgU2FuZGJveCAoZGVwbG95IGFuZCB1bi1kZXBsb3kgcmVzcG9uc2VzKVxyXG4gICAgbGV0IHJlc3BvbnNlTXNnID0ge1xyXG4gICAgICBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCBmcm9tOiBTYW5kYm94UmVnaXN0cnkuSW50ZXJuYWxEZXBsb3lBZGRyZXNzLCB0bzogU2FuZGJveFJlZ2lzdHJ5LkV4dGVybmFsRGVwbG95QWRkcmVzc1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBDaGFuZWdlIHRoZSBvcmlnaW4gbWVzc2FnZSwgYmVjYXVzZSB0aGUgcmVzcG9uc2U7XHJcbiAgICAvLyBtc2cuZnJvbSA9IFNhbmRib3hSZWdpc3RyeS5JbnRlcm5hbERlcGxveUFkZHJlc3M7XHJcbiAgICAvLyBtc2cudG8gPSBTYW5kYm94UmVnaXN0cnkuRXh0ZXJuYWxEZXBsb3lBZGRyZXNzO1xyXG5cclxuICAgIGxldCBib2R5ID0ge307XHJcbiAgICBpZiAoY29kZSkgYm9keS5jb2RlID0gY29kZTtcclxuICAgIGlmICh2YWx1ZSkgYm9keS5kZXNjID0gdmFsdWU7XHJcblxyXG4gICAgcmVzcG9uc2VNc2cuYm9keSA9IGJvZHk7XHJcblxyXG4gICAgLy8gcmV0dXJuIG1lc3NhZ2VGYWN0b3J5LmNyZWF0ZVJlc3BvbnNlKG1zZywgY29kZSwgdmFsdWUpO1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlTXNnO1xyXG4gIH1cclxuXHJcbiAgLy9GTE9XLUlOOiBtZXNzYWdlIGZyb20gdGhlIHJ1bnRpbWUgY29yZSBTYW5kYm94IC0+IGRlcGxveUNvbXBvbmVudFxyXG4gIF9vbkRlcGxveShtc2cpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgY29uZmlnID0gbXNnLmJvZHkuY29uZmlnO1xyXG4gICAgbGV0IGNvbXBvbmVudFVSTCA9IG1zZy5ib2R5LnVybDtcclxuICAgIGxldCBzb3VyY2VDb2RlID0gbXNnLmJvZHkuc291cmNlQ29kZTtcclxuICAgIGxldCByZXNwb25zZUNvZGU7XHJcbiAgICBsZXQgcmVzcG9uc2VEZXNjO1xyXG5cclxuICAgIGlmICghX3RoaXMuX2NvbXBvbmVudHMuaGFzT3duUHJvcGVydHkoY29tcG9uZW50VVJMKSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIF90aGlzLl9jb21wb25lbnRzW2NvbXBvbmVudFVSTF0gPSBfdGhpcy5fY3JlYXRlKGNvbXBvbmVudFVSTCwgc291cmNlQ29kZSwgY29uZmlnKTtcclxuICAgICAgICByZXNwb25zZUNvZGUgPSAyMDA7XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgcmVzcG9uc2VDb2RlID0gNTAwO1xyXG4gICAgICAgIHJlc3BvbnNlRGVzYyA9IGVycm9yO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNwb25zZUNvZGUgPSA1MDA7XHJcbiAgICAgIHJlc3BvbnNlRGVzYyA9ICdJbnN0YW5jZSAnICsgY29tcG9uZW50VVJMICsgJyBhbHJlYWR5IGV4aXN0ISc7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHJlc3BvbnNlTXNnID0gX3RoaXMuX3Jlc3BvbnNlTXNnKG1zZywgcmVzcG9uc2VDb2RlLCByZXNwb25zZURlc2MpO1xyXG4gICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShyZXNwb25zZU1zZyk7XHJcbiAgfVxyXG5cclxuICAvL0ZMT1ctSU46IG1lc3NhZ2UgZnJvbSB0aGUgcnVudGltZSBjb3JlIFNhbmRib3ggLT4gcmVtb3ZlQ29tcG9uZW50XHJcbiAgX29uUmVtb3ZlKG1zZykge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBjb21wb25lbnRVUkwgPSBtc2cuYm9keS51cmw7XHJcbiAgICBsZXQgcmVzcG9uc2VDb2RlO1xyXG4gICAgbGV0IHJlc3BvbnNlRGVzYztcclxuXHJcbiAgICBpZiAoX3RoaXMuX2NvbXBvbmVudHMuaGFzT3duUHJvcGVydHkoY29tcG9uZW50VVJMKSkge1xyXG4gICAgICAvL3JlbW92ZSBjb21wb25lbnQgZnJvbSB0aGUgcG9vbCBhbmQgYWxsIGxpc3RlbmVyc1xyXG4gICAgICBkZWxldGUgX3RoaXMuX2NvbXBvbmVudHNbY29tcG9uZW50VVJMXTtcclxuICAgICAgX3RoaXMuX2J1cy5yZW1vdmVBbGxMaXN0ZW5lcnNPZihjb21wb25lbnRVUkwpO1xyXG4gICAgICByZXNwb25zZUNvZGUgPSAyMDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNwb25zZUNvZGUgPSA1MDA7XHJcbiAgICAgIHJlc3BvbnNlRGVzYyA9ICdJbnN0YW5jZSAnICsgY29tcG9uZW50VVJMICsgJyBkb2VzblxcJ3QgZXhpc3QhJztcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcmVzcG9uc2VNc2cgPSBfdGhpcy5fcmVzcG9uc2VNc2cobXNnLCByZXNwb25zZUNvZGUsIHJlc3BvbnNlRGVzYyk7XHJcblxyXG4gICAgX3RoaXMuX2J1cy5wb3N0TWVzc2FnZShyZXNwb25zZU1zZyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgdGhlIGludGVybmFsIHNhbmRib3ggY29kZS5cclxuICAgKiBAcGFyYW0gIHtDb21wb25lbnRVUkx9IHVybCBVUkwgdXNlZCBmb3IgdGhlIGluc3RhbmNlXHJcbiAgICogQHBhcmFtICB7c3RyaW5nfSBzb3VyY2VDb2RlIENvZGUgb2YgdGhlIGNvbXBvbmVudFxyXG4gICAqIEBwYXJhbSAge0NvbmZpZ30gY29uZmlnIENvbmZpZ3VyYXRpb24gcGFyYW1ldGVyc1xyXG4gICAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBpbnN0YW5jZSBvZiB0aGUgY29tcG9uZW50IG9yIHRocm93IGFuIGVycm9yIFwidGhyb3cgJ2Vycm9yIG1lc3NhZ2UnXCJcclxuICAgKi9cclxuICBfY3JlYXRlKHVybCwgc291cmNlQ29kZSwgY29uZmlnKSB7XHJcbiAgICAvL2ltcGxlbWVudGF0aW9uIHNwZWNpZmljXHJcbiAgICAvKiBleGFtcGxlIGNvZGU6XHJcbiAgICAgIGV2YWwoc291cmNlQ29kZSk7XHJcbiAgICAgIHJldHVybiBhY3RpdmF0ZSh1cmwsIF90aGlzLl9idXMsIGNvbmZpZyk7XHJcbiAgICAqL1xyXG4gIH1cclxufVxyXG5cclxuU2FuZGJveFJlZ2lzdHJ5LkV4dGVybmFsRGVwbG95QWRkcmVzcyA9ICdoeXBlcnR5LXJ1bnRpbWU6Ly9zYW5kYm94L2V4dGVybmFsJztcclxuU2FuZGJveFJlZ2lzdHJ5LkludGVybmFsRGVwbG95QWRkcmVzcyA9ICdoeXBlcnR5LXJ1bnRpbWU6Ly9zYW5kYm94L2ludGVybmFsJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFNhbmRib3hSZWdpc3RyeTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9zYW5kYm94L1NhbmRib3hSZWdpc3RyeS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBOzs7OztBQUtBOzs7OztBQUtBO0FBQ0E7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUZBO0FBSUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7Ozs7QUFJQTs7O0FBeEZBO0FBQUE7QUFBQTs7Ozs7QUEyRkE7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///117\n")},,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\nexports.SandboxRegistry = exports.SandboxType = exports.Sandbox = undefined;\n\nvar _Sandbox = __webpack_require__(134);\n\nvar _Sandbox2 = _interopRequireDefault(_Sandbox);\n\nvar _SandboxRegistry = __webpack_require__(117);\n\nvar _SandboxRegistry2 = _interopRequireDefault(_SandboxRegistry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Sandbox = _Sandbox2.default;\nexports.SandboxType = _Sandbox.SandboxType;\nexports.SandboxRegistry = _SandboxRegistry2.default; /**\r\n * Copyright 2016 PT Inovação e Sistemas SA\r\n * Copyright 2016 INESC-ID\r\n * Copyright 2016 QUOBIS NETWORKS SL\r\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n * Copyright 2016 ORANGE SA\r\n * Copyright 2016 Deutsche Telekom AG\r\n * Copyright 2016 Apizee\r\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the "License");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an "AS IS" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n **///# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zYW5kYm94LmpzP2JlYTEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcclxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcclxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxyXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxyXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcclxuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcclxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxyXG4qXHJcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcclxuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbipcclxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4qXHJcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbioqL1xyXG5pbXBvcnQgU2FuZGJveCBmcm9tICcuL3NhbmRib3gvU2FuZGJveCc7XHJcbmltcG9ydCB7U2FuZGJveFR5cGV9IGZyb20gJy4vc2FuZGJveC9TYW5kYm94JztcclxuaW1wb3J0IFNhbmRib3hSZWdpc3RyeSBmcm9tICcuL3NhbmRib3gvU2FuZGJveFJlZ2lzdHJ5JztcclxuXHJcbmV4cG9ydCB7U2FuZGJveCwgU2FuZGJveFR5cGUsIFNhbmRib3hSZWdpc3RyeX07XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvc2FuZGJveC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQXNCQTtBQUNBOzs7QUFDQTtBQUNBOzs7OztBQUNBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///133\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SandboxType = undefined;\n\nvar _keys = __webpack_require__(107);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = __webpack_require__(41);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _getPrototypeOf = __webpack_require__(63);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(64);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(65);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SandboxRegistry = __webpack_require__(117);\n\nvar _SandboxRegistry2 = _interopRequireDefault(_SandboxRegistry);\n\nvar _MiniBus2 = __webpack_require__(115);\n\nvar _MiniBus3 = _interopRequireDefault(_MiniBus2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n* Copyright 2016 PT Inovação e Sistemas SA\r\n* Copyright 2016 INESC-ID\r\n* Copyright 2016 QUOBIS NETWORKS SL\r\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\r\n* Copyright 2016 ORANGE SA\r\n* Copyright 2016 Deutsche Telekom AG\r\n* Copyright 2016 Apizee\r\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n**/\nvar SandboxType = exports.SandboxType = { APP: 'app', NORMAL: 'normal', WINDOW: 'window' };\n\n/**\r\n * @author micaelpedrosa@gmail.com\r\n * Base class to implement external sandbox component\r\n */\n\nvar Sandbox = function (_MiniBus) {\n (0, _inherits3.default)(Sandbox, _MiniBus);\n\n function Sandbox(capabilities) {\n (0, _classCallCheck3.default)(this, Sandbox);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (Sandbox.__proto__ || (0, _getPrototypeOf2.default)(Sandbox)).call(this));\n\n var _this = _this2;\n\n if (capabilities) {\n _this.capabilities = capabilities;\n }\n\n return _this2;\n }\n\n /**\r\n * Deploy an instance of the component into the sandbox.\r\n * @param {string} componentSourceCode Component source code (Hyperty, ProtoStub, etc)\r\n * @param {URL} componentURL Hyperty, ProtoStub, or any other component address.\r\n * @param {Config} configuration Config parameters of the component\r\n * @return {Promise} return deployed if successful, or any other string with an error\r\n */\n\n\n (0, _createClass3.default)(Sandbox, [{\n key: 'deployComponent',\n value: function deployComponent(componentSourceCode, componentURL, configuration) {\n\n var _this = this;\n\n // let messageFactory = _this.messageFactory;\n\n return new _promise2.default(function (resolve, reject) {\n //FLOW-OUT: deploy message for the internal SandboxRegistry -> _onDeploy\n var deployMessage = {\n type: 'create', from: _SandboxRegistry2.default.ExternalDeployAddress, to: _SandboxRegistry2.default.InternalDeployAddress,\n body: { url: componentURL, sourceCode: componentSourceCode, config: configuration }\n };\n\n //send message into the sandbox internals and wait for reply\n _this.postMessage(deployMessage, function (reply) {\n if (reply.body.code === 200) {\n //is this response complaint with the spec?\n resolve('deployed');\n } else {\n reject(reply.body.desc);\n }\n });\n });\n }\n\n /**\r\n * Remove the instance of a previously deployed component.\r\n * @param {URL} componentURL Hyperty, ProtoStub, or any other component address.\r\n * @return {Promise} return undeployed if successful, or any other string with an error\r\n */\n\n }, {\n key: 'removeComponent',\n value: function removeComponent(componentURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n //FLOW-OUT: un-deploy message for the internal SandboxRegistry -> _onRemove\n var removeMessage = {\n type: 'delete', from: _SandboxRegistry2.default.ExternalDeployAddress, to: _SandboxRegistry2.default.InternalDeployAddress,\n body: { url: componentURL }\n };\n\n //send message into the sandbox internals and wait for reply\n _this.postMessage(removeMessage, function (reply) {\n if (reply.body.code === 200) {\n //is this response complaint with the spec?\n resolve('undeployed');\n } else {\n reject(reply.body.desc);\n }\n });\n });\n }\n\n /**\r\n * Matches Sandbox capabilities against provided capabilities. Used to check if sandbox provides all required capabilities\r\n * @param {RuntimeCapabilities} constraints set of RuntimeCapabilities to match with.\r\n * @return {boolean} return true if constraints are matched false otherwise\r\n */\n\n }, {\n key: 'matches',\n value: function matches(constraints) {\n var _this = this;\n\n var filtered = (0, _keys2.default)(constraints).filter(function (key) {\n return !(_this.capabilities[key] && _this.capabilities[key] === constraints[key]);\n });\n\n if (filtered.length === 0) {\n return true;\n } else {\n return !constraints[filtered];\n }\n }\n }]);\n return Sandbox;\n}(_MiniBus3.default);\n\nexports.default = Sandbox;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zYW5kYm94L1NhbmRib3guanM/MGEzMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcclxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxyXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxyXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXHJcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXHJcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xyXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxyXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXHJcbipcclxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuKlxyXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbipcclxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKiovXHJcbmltcG9ydCBTYW5kYm94UmVnaXN0cnkgZnJvbSAnLi4vc2FuZGJveC9TYW5kYm94UmVnaXN0cnknO1xyXG5pbXBvcnQgTWluaUJ1cyBmcm9tICcuLi9idXMvTWluaUJ1cyc7XHJcblxyXG5leHBvcnQgbGV0IFNhbmRib3hUeXBlID0ge0FQUDogJ2FwcCcsIE5PUk1BTDogJ25vcm1hbCcsIFdJTkRPVzogJ3dpbmRvdyd9O1xyXG5cclxuLyoqXHJcbiAqIEBhdXRob3IgbWljYWVscGVkcm9zYUBnbWFpbC5jb21cclxuICogQmFzZSBjbGFzcyB0byBpbXBsZW1lbnQgZXh0ZXJuYWwgc2FuZGJveCBjb21wb25lbnRcclxuICovXHJcbmNsYXNzIFNhbmRib3ggZXh0ZW5kcyBNaW5pQnVzIHtcclxuXHJcbiAgY29uc3RydWN0b3IoY2FwYWJpbGl0aWVzKSB7XHJcblxyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIGlmIChjYXBhYmlsaXRpZXMpICAgICAgeyBfdGhpcy5jYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXRpZXM7IH1cclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXBsb3kgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudCBpbnRvIHRoZSBzYW5kYm94LlxyXG4gICAqIEBwYXJhbSAge3N0cmluZ30gY29tcG9uZW50U291cmNlQ29kZSBDb21wb25lbnQgc291cmNlIGNvZGUgKEh5cGVydHksIFByb3RvU3R1YiwgZXRjKVxyXG4gICAqIEBwYXJhbSAge1VSTH0gY29tcG9uZW50VVJMIEh5cGVydHksIFByb3RvU3R1Yiwgb3IgYW55IG90aGVyIGNvbXBvbmVudCBhZGRyZXNzLlxyXG4gICAqIEBwYXJhbSAge0NvbmZpZ30gY29uZmlndXJhdGlvbiBDb25maWcgcGFyYW1ldGVycyBvZiB0aGUgY29tcG9uZW50XHJcbiAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSByZXR1cm4gZGVwbG95ZWQgaWYgc3VjY2Vzc2Z1bCwgb3IgYW55IG90aGVyIHN0cmluZyB3aXRoIGFuIGVycm9yXHJcbiAgICovXHJcbiAgZGVwbG95Q29tcG9uZW50KGNvbXBvbmVudFNvdXJjZUNvZGUsIGNvbXBvbmVudFVSTCwgY29uZmlndXJhdGlvbikge1xyXG5cclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgLy8gbGV0IG1lc3NhZ2VGYWN0b3J5ID0gX3RoaXMubWVzc2FnZUZhY3Rvcnk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgLy9GTE9XLU9VVDogZGVwbG95IG1lc3NhZ2UgZm9yIHRoZSBpbnRlcm5hbCBTYW5kYm94UmVnaXN0cnkgLT4gX29uRGVwbG95XHJcbiAgICAgIGxldCBkZXBsb3lNZXNzYWdlID0ge1xyXG4gICAgICAgIHR5cGU6ICdjcmVhdGUnLCBmcm9tOiBTYW5kYm94UmVnaXN0cnkuRXh0ZXJuYWxEZXBsb3lBZGRyZXNzLCB0bzogU2FuZGJveFJlZ2lzdHJ5LkludGVybmFsRGVwbG95QWRkcmVzcyxcclxuICAgICAgICBib2R5OiB7IHVybDogY29tcG9uZW50VVJMLCBzb3VyY2VDb2RlOiBjb21wb25lbnRTb3VyY2VDb2RlLCBjb25maWc6IGNvbmZpZ3VyYXRpb24gfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy9zZW5kIG1lc3NhZ2UgaW50byB0aGUgc2FuZGJveCBpbnRlcm5hbHMgYW5kIHdhaXQgZm9yIHJlcGx5XHJcbiAgICAgIF90aGlzLnBvc3RNZXNzYWdlKGRlcGxveU1lc3NhZ2UsIChyZXBseSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXBseS5ib2R5LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgLy9pcyB0aGlzIHJlc3BvbnNlIGNvbXBsYWludCB3aXRoIHRoZSBzcGVjP1xyXG4gICAgICAgICAgcmVzb2x2ZSgnZGVwbG95ZWQnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVqZWN0KHJlcGx5LmJvZHkuZGVzYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIHRoZSBpbnN0YW5jZSBvZiBhIHByZXZpb3VzbHkgZGVwbG95ZWQgY29tcG9uZW50LlxyXG4gICAqIEBwYXJhbSAge1VSTH0gY29tcG9uZW50VVJMIEh5cGVydHksIFByb3RvU3R1Yiwgb3IgYW55IG90aGVyIGNvbXBvbmVudCBhZGRyZXNzLlxyXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gcmV0dXJuIHVuZGVwbG95ZWQgaWYgc3VjY2Vzc2Z1bCwgb3IgYW55IG90aGVyIHN0cmluZyB3aXRoIGFuIGVycm9yXHJcbiAgICovXHJcbiAgcmVtb3ZlQ29tcG9uZW50KGNvbXBvbmVudFVSTCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAvL0ZMT1ctT1VUOiB1bi1kZXBsb3kgbWVzc2FnZSBmb3IgdGhlIGludGVybmFsIFNhbmRib3hSZWdpc3RyeSAtPiBfb25SZW1vdmVcclxuICAgICAgbGV0IHJlbW92ZU1lc3NhZ2UgPSB7XHJcbiAgICAgICAgdHlwZTogJ2RlbGV0ZScsIGZyb206IFNhbmRib3hSZWdpc3RyeS5FeHRlcm5hbERlcGxveUFkZHJlc3MsIHRvOiBTYW5kYm94UmVnaXN0cnkuSW50ZXJuYWxEZXBsb3lBZGRyZXNzLFxyXG4gICAgICAgIGJvZHk6IHsgdXJsOiBjb21wb25lbnRVUkwgfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy9zZW5kIG1lc3NhZ2UgaW50byB0aGUgc2FuZGJveCBpbnRlcm5hbHMgYW5kIHdhaXQgZm9yIHJlcGx5XHJcbiAgICAgIF90aGlzLnBvc3RNZXNzYWdlKHJlbW92ZU1lc3NhZ2UsIChyZXBseSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXBseS5ib2R5LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgLy9pcyB0aGlzIHJlc3BvbnNlIGNvbXBsYWludCB3aXRoIHRoZSBzcGVjP1xyXG4gICAgICAgICAgcmVzb2x2ZSgndW5kZXBsb3llZCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWplY3QocmVwbHkuYm9keS5kZXNjKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIE1hdGNoZXMgU2FuZGJveCBjYXBhYmlsaXRpZXMgYWdhaW5zdCBwcm92aWRlZCBjYXBhYmlsaXRpZXMuIFVzZWQgdG8gY2hlY2sgaWYgc2FuZGJveCBwcm92aWRlcyBhbGwgcmVxdWlyZWQgY2FwYWJpbGl0aWVzXHJcbiAgKiBAcGFyYW0gIHtSdW50aW1lQ2FwYWJpbGl0aWVzfSBjb25zdHJhaW50cyBzZXQgb2YgUnVudGltZUNhcGFiaWxpdGllcyB0byBtYXRjaCB3aXRoLlxyXG4gICogQHJldHVybiB7Ym9vbGVhbn0gcmV0dXJuIHRydWUgaWYgY29uc3RyYWludHMgYXJlIG1hdGNoZWQgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAgICovXHJcblxyXG4gIG1hdGNoZXMoY29uc3RyYWludHMpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcblxyXG4gICAgbGV0IGZpbHRlcmVkID0gT2JqZWN0LmtleXMoY29uc3RyYWludHMpLmZpbHRlcigoa2V5KSA9PiB7XHJcbiAgICAgIHJldHVybiAhKF90aGlzLmNhcGFiaWxpdGllc1trZXldICYmIF90aGlzLmNhcGFiaWxpdGllc1trZXldID09PSBjb25zdHJhaW50c1trZXldKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChmaWx0ZXJlZC5sZW5ndGggPT09IDApICAgICAgeyByZXR1cm4gdHJ1ZTsgfSAgICBlbHNlICAgICAgeyByZXR1cm4gIShjb25zdHJhaW50c1tmaWx0ZXJlZF0pOyB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgU2FuZGJveDtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9zYW5kYm94L1NhbmRib3guanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7O0FBeEJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJBO0FBQ0E7QUFDQTs7Ozs7QUFJQTs7O0FBRUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQVBBO0FBUUE7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7QUFJQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///134\n")}])}); \ No newline at end of file +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("sandbox",[],n):"object"==typeof exports?exports.sandbox=n():e.sandbox=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function c(l){if(n[l])return n[l].exports;var t=n[l]={i:l,l:!1,exports:{}};return e[l].call(t.exports,t,t.exports,c),t.l=!0,t.exports}return c.m=e,c.c=n,c.d=function(e,n,l){c.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:l})},c.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(n,"a",n),n},c.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},c.p="",c(c.s=134)}([function(module,exports){eval("var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcz8xNWUwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjUuNycgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qc1xuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n")},function(module,exports){eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzP2VjYWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1\n")},function(module,exports,__webpack_require__){eval("var store = __webpack_require__(28)('wks');\nvar uid = __webpack_require__(20);\nvar Symbol = __webpack_require__(1).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzPzc1MmMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qc1xuLy8gbW9kdWxlIGlkID0gMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar ctx = __webpack_require__(15);\nvar hide = __webpack_require__(9);\nvar has = __webpack_require__(8);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzPzkwY2QiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzP2VmYjMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4\n")},function(module,exports,__webpack_require__){eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(13)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanM/Zjg0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n")},function(module,exports){eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzPzEyYTgiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(4);\nvar IE8_DOM_DEFINE = __webpack_require__(36);\nvar toPrimitive = __webpack_require__(26);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzPzdhZjAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanNcbi8vIG1vZHVsZSBpZCA9IDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7\n")},function(module,exports){eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzPzBmNjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanNcbi8vIG1vZHVsZSBpZCA9IDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(7);\nvar createDesc = __webpack_require__(19);\nmodule.exports = __webpack_require__(5) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qcz84NDljIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9\n")},function(module,exports,__webpack_require__){eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(57);\nvar defined = __webpack_require__(23);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NGRjNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///10\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzY2YjkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(60);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzP2MzMTAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5XCIpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///12\n')},function(module,exports){eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///13\n")},function(module,exports){eval("module.exports = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qc1xuLy8gbW9kdWxlIGlkID0gMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n")},function(module,exports,__webpack_require__){eval("// optional / simple context binding\nvar aFunction = __webpack_require__(18);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanNcbi8vIG1vZHVsZSBpZCA9IDE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///15\n")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanNcbi8vIG1vZHVsZSBpZCA9IDE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///16\n")},function(module,exports){eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcz9mZGI0Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzXG4vLyBtb2R1bGUgaWQgPSAxN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///17\n")},function(module,exports){eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///18\n")},function(module,exports){eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanNcbi8vIG1vZHVsZSBpZCA9IDE5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///19\n")},function(module,exports){eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qc1xuLy8gbW9kdWxlIGlkID0gMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///20\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(37);\nvar enumBugKeys = __webpack_require__(29);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///21\n")},function(module,exports){eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/NTJlMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///22\n")},function(module,exports){eval('// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError("Can\'t call method on " + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTc2OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///23\n')},function(module,exports,__webpack_require__){eval("var def = __webpack_require__(7).f;\nvar has = __webpack_require__(8);\nvar TAG = __webpack_require__(2)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdiYTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///24\n")},function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(6);\nvar document = __webpack_require__(1).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n")},function(module,exports,__webpack_require__){eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(6);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///26\n")},function(module,exports,__webpack_require__){eval("var shared = __webpack_require__(28)('keys');\nvar uid = __webpack_require__(20);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NmIxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///27\n")},function(module,exports,__webpack_require__){eval("var core = __webpack_require__(0);\nvar global = __webpack_require__(1);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(14) ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcz83YmMwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogY29yZS52ZXJzaW9uLFxuICBtb2RlOiByZXF1aXJlKCcuL19saWJyYXJ5JykgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxOCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qc1xuLy8gbW9kdWxlIGlkID0gMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///28\n")},function(module,exports){eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/YzY3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n")},function(module,exports,__webpack_require__){eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(23);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(4);\nvar dPs = __webpack_require__(69);\nvar enumBugKeys = __webpack_require__(29);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(25)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(46).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanM/NjI4NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGRQcyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2lmcmFtZScpO1xuICB2YXIgaSA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJlcXVpcmUoJy4vX2h0bWwnKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(18);\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanM/YTgwNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAyNS40LjEuNSBOZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcblxuZnVuY3Rpb24gUHJvbWlzZUNhcGFiaWxpdHkoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUZ1bmN0aW9uKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFGdW5jdGlvbihyZWplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qc1xuLy8gbW9kdWxlIGlkID0gMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///32\n")},function(module,exports,__webpack_require__){eval("exports.f = __webpack_require__(2);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1leHQuanM/MmExZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSByZXF1aXJlKCcuL193a3MnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///33\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar LIBRARY = __webpack_require__(14);\nvar wksExt = __webpack_require__(33);\nvar defineProperty = __webpack_require__(7).f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1kZWZpbmUuanM/NzJiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciAkU3ltYm9sID0gY29yZS5TeW1ib2wgfHwgKGNvcmUuU3ltYm9sID0gTElCUkFSWSA/IHt9IDogZ2xvYmFsLlN5bWJvbCB8fCB7fSk7XG4gIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///34\n")},function(module,exports){eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanM/MzY5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtcGllLmpzXG4vLyBtb2R1bGUgaWQgPSAzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///35\n")},function(module,exports,__webpack_require__){eval("module.exports = !__webpack_require__(5) && !__webpack_require__(13)(function () {\n return Object.defineProperty(__webpack_require__(25)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///36\n")},function(module,exports,__webpack_require__){eval("var has = __webpack_require__(8);\nvar toIObject = __webpack_require__(10);\nvar arrayIndexOf = __webpack_require__(58)(false);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzIxYjgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///37\n")},function(module,exports,__webpack_require__){eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(22);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz80MTExIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qc1xuLy8gbW9kdWxlIGlkID0gMzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///38\n")},function(module,exports,__webpack_require__){eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar fails = __webpack_require__(13);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanM/YmFhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qtc2FwLmpzXG4vLyBtb2R1bGUgaWQgPSAzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///39\n")},function(module,exports,__webpack_require__){eval("var pIE = __webpack_require__(35);\nvar createDesc = __webpack_require__(19);\nvar toIObject = __webpack_require__(10);\nvar toPrimitive = __webpack_require__(26);\nvar has = __webpack_require__(8);\nvar IE8_DOM_DEFINE = __webpack_require__(36);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(5) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzPzJjYTYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcGQuanNcbi8vIG1vZHVsZSBpZCA9IDQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///40\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(66), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3Byb21pc2UuanM/ZmZmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vcHJvbWlzZVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///41\n')},function(module,exports){eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///42\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar $at = __webpack_require__(67)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(44)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcz9jZDA0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///43\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(14);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(45);\nvar hide = __webpack_require__(9);\nvar Iterators = __webpack_require__(17);\nvar $iterCreate = __webpack_require__(68);\nvar setToStringTag = __webpack_require__(24);\nvar getPrototypeOf = __webpack_require__(47);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzP2JjODAiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///44\n")},function(module,exports,__webpack_require__){eval("module.exports = __webpack_require__(9);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzP2YzY2QiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///45\n")},function(module,exports,__webpack_require__){eval("var document = __webpack_require__(1).document;\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanM/NDRmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanNcbi8vIG1vZHVsZSBpZCA9IDQ2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(8);\nvar toObject = __webpack_require__(30);\nvar IE_PROTO = __webpack_require__(27)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanM/M2YzYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///47\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(70);\nvar global = __webpack_require__(1);\nvar hide = __webpack_require__(9);\nvar Iterators = __webpack_require__(17);\nvar TO_STRING_TAG = __webpack_require__(2)('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcz9mYWQzIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSA0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///48\n")},function(module,exports,__webpack_require__){eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(16);\nvar TAG = __webpack_require__(2)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanM/NDU4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBBUkcgPSBjb2YoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIFQsIEI7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFRcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IEFSRyA/IGNvZihPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY2xhc3NvZi5qc1xuLy8gbW9kdWxlIGlkID0gNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n")},function(module,exports,__webpack_require__){eval("// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(4);\nvar aFunction = __webpack_require__(18);\nvar SPECIES = __webpack_require__(2)('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanM/YjdjYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjMuMjAgU3BlY2llc0NvbnN0cnVjdG9yKE8sIGRlZmF1bHRDb25zdHJ1Y3RvcilcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIEQpIHtcbiAgdmFyIEMgPSBhbk9iamVjdChPKS5jb25zdHJ1Y3RvcjtcbiAgdmFyIFM7XG4gIHJldHVybiBDID09PSB1bmRlZmluZWQgfHwgKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPT0gdW5kZWZpbmVkID8gRCA6IGFGdW5jdGlvbihTKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3BlY2llcy1jb25zdHJ1Y3Rvci5qc1xuLy8gbW9kdWxlIGlkID0gNTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///50\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(15);\nvar invoke = __webpack_require__(79);\nvar html = __webpack_require__(46);\nvar cel = __webpack_require__(25);\nvar global = __webpack_require__(1);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(16)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanM/MmY4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vX2h0bWwnKTtcbnZhciBjZWwgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHNldFRhc2sgPSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyVGFzayA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbDtcbnZhciBEaXNwYXRjaCA9IGdsb2JhbC5EaXNwYXRjaDtcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xudmFyIHJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgaWYgKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICAgIGZuKCk7XG4gIH1cbn07XG52YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXRUYXNrIHx8ICFjbGVhclRhc2spIHtcbiAgc2V0VGFzayA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCkge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RlbmVyO1xuICAgIGRlZmVyID0gY3R4KHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQsIDEpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdHMpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG4gICAgfTtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICAgIHJ1bi5jYWxsKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChjdHgocnVuLCBpZCwgMSksIDApO1xuICAgIH07XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldFRhc2ssXG4gIGNsZWFyOiBjbGVhclRhc2tcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gNTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///51\n")},function(module,exports){eval("module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanM/NzRkMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZTogZmFsc2UsIHY6IGV4ZWMoKSB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHsgZTogdHJ1ZSwgdjogZSB9O1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanNcbi8vIG1vZHVsZSBpZCA9IDUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///52\n")},function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(4);\nvar isObject = __webpack_require__(6);\nvar newPromiseCapability = __webpack_require__(32);\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qcz83Yzk1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEMsIHgpIHtcbiAgYW5PYmplY3QoQyk7XG4gIGlmIChpc09iamVjdCh4KSAmJiB4LmNvbnN0cnVjdG9yID09PSBDKSByZXR1cm4geDtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZihDKTtcbiAgdmFyIHJlc29sdmUgPSBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlO1xuICByZXNvbHZlKHgpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzXG4vLyBtb2R1bGUgaWQgPSA1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///53\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(90);\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(92);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {\n return typeof obj === "undefined" ? "undefined" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcz9hNDU2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2l0ZXJhdG9yID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yXCIpO1xuXG52YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTtcblxudmFyIF9zeW1ib2wgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9zeW1ib2xcIik7XG5cbnZhciBfc3ltYm9sMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N5bWJvbCk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgX2l0ZXJhdG9yMi5kZWZhdWx0ID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgX3R5cGVvZihfaXRlcmF0b3IyLmRlZmF1bHQpID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YuanNcbi8vIG1vZHVsZSBpZCA9IDU0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///54\n')},function(module,exports){eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BzLmpzP2Q2NDQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wcy5qc1xuLy8gbW9kdWxlIGlkID0gNTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///55\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(37);\nvar hiddenKeys = __webpack_require__(29).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLmpzPzlmNDQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGhpZGRlbktleXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi5qc1xuLy8gbW9kdWxlIGlkID0gNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n")},function(module,exports,__webpack_require__){eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(16);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/MzE0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///57\n")},function(module,exports,__webpack_require__){eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(10);\nvar toLength = __webpack_require__(38);\nvar toAbsoluteIndex = __webpack_require__(59);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2JjNTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanNcbi8vIG1vZHVsZSBpZCA9IDU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///58\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(22);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzdlNDAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///59\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(61), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/MGI4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSA2MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///60\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(62);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ZjViMCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///61\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(3);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(5), 'Object', { defineProperty: __webpack_require__(7).f });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanM/OTgyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///62\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(88), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzY3MWUiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///63\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(54);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n }\n\n return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanM/Y2YwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHNlbGYsIGNhbGwpIHtcbiAgaWYgKCFzZWxmKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNhbGwgJiYgKCh0eXBlb2YgY2FsbCA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoY2FsbCkpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzXG4vLyBtb2R1bGUgaWQgPSA2NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///64\n')},function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(101);\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(105);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(54);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== "function" && superClass !== null) {\n throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzPzNkZmQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKTtcblxudmFyIF9zZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXRQcm90b3R5cGVPZik7XG5cbnZhciBfY3JlYXRlID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2NyZWF0ZVwiKTtcblxudmFyIF9jcmVhdGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlKTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArICh0eXBlb2Ygc3VwZXJDbGFzcyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoc3VwZXJDbGFzcykpKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9ICgwLCBfY3JlYXRlMi5kZWZhdWx0KShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mMi5kZWZhdWx0ID8gKDAsIF9zZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzcztcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzXG4vLyBtb2R1bGUgaWQgPSA2NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///65\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(42);\n__webpack_require__(43);\n__webpack_require__(48);\n__webpack_require__(73);\n__webpack_require__(85);\n__webpack_require__(86);\nmodule.exports = __webpack_require__(0).Promise;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2UuanM/NTM5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucHJvbWlzZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL19jb3JlJykuUHJvbWlzZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA2NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///66\n")},function(module,exports,__webpack_require__){eval("var toInteger = __webpack_require__(22);\nvar defined = __webpack_require__(23);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcz84N2FlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbi8vIHRydWUgIC0+IFN0cmluZyNhdFxuLy8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGF0LCBwb3MpIHtcbiAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbiAgICB2YXIgaSA9IHRvSW50ZWdlcihwb3MpO1xuICAgIHZhciBsID0gcy5sZW5ndGg7XG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGkgPCAwIHx8IGkgPj0gbCkgcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcbiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG4gICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzXG4vLyBtb2R1bGUgaWQgPSA2N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///67\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar create = __webpack_require__(31);\nvar descriptor = __webpack_require__(19);\nvar setToStringTag = __webpack_require__(24);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(9)(IteratorPrototype, __webpack_require__(2)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzP2Y3ODUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBkZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDY4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///68\n")},function(module,exports,__webpack_require__){eval("var dP = __webpack_require__(7);\nvar anObject = __webpack_require__(4);\nvar getKeys = __webpack_require__(21);\n\nmodule.exports = __webpack_require__(5) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanM/YWEyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///69\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar addToUnscopables = __webpack_require__(71);\nvar step = __webpack_require__(72);\nvar Iterators = __webpack_require__(17);\nvar toIObject = __webpack_require__(10);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(44)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzP2M0NjkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///70\n")},function(module,exports){eval("module.exports = function () { /* empty */ };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcz9lMjY3Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qc1xuLy8gbW9kdWxlIGlkID0gNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///71\n")},function(module,exports){eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcz8xMDY2Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRvbmUsIHZhbHVlKSB7XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qc1xuLy8gbW9kdWxlIGlkID0gNzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///72\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar LIBRARY = __webpack_require__(14);\nvar global = __webpack_require__(1);\nvar ctx = __webpack_require__(15);\nvar classof = __webpack_require__(49);\nvar $export = __webpack_require__(3);\nvar isObject = __webpack_require__(6);\nvar aFunction = __webpack_require__(18);\nvar anInstance = __webpack_require__(74);\nvar forOf = __webpack_require__(75);\nvar speciesConstructor = __webpack_require__(50);\nvar task = __webpack_require__(51).set;\nvar microtask = __webpack_require__(80)();\nvar newPromiseCapabilityModule = __webpack_require__(32);\nvar perform = __webpack_require__(52);\nvar userAgent = __webpack_require__(81);\nvar promiseResolve = __webpack_require__(53);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(2)('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(82)($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(24)($Promise, PROMISE);\n__webpack_require__(83)(PROMISE);\nWrapper = __webpack_require__(0)[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(84)(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnByb21pc2UuanM/MDk3YyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG52YXIgUFJPTUlTRSA9ICdQcm9taXNlJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucztcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4IHx8ICcnO1xudmFyICRQcm9taXNlID0gZ2xvYmFsW1BST01JU0VdO1xudmFyIGlzTm9kZSA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xudmFyIGVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIEludGVybmFsLCBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHksIE93blByb21pc2VDYXBhYmlsaXR5LCBXcmFwcGVyO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcblxudmFyIFVTRV9OQVRJVkUgPSAhIWZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBjb3JyZWN0IHN1YmNsYXNzaW5nIHdpdGggQEBzcGVjaWVzIHN1cHBvcnRcbiAgICB2YXIgcHJvbWlzZSA9ICRQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgdmFyIEZha2VQcm9taXNlID0gKHByb21pc2UuY29uc3RydWN0b3IgPSB7fSlbcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKV0gPSBmdW5jdGlvbiAoZXhlYykge1xuICAgICAgZXhlYyhlbXB0eSwgZW1wdHkpO1xuICAgIH07XG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIHJldHVybiAoaXNOb2RlIHx8IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICYmIHByb21pc2UudGhlbihlbXB0eSkgaW5zdGFuY2VvZiBGYWtlUHJvbWlzZVxuICAgICAgLy8gdjggNi42IChOb2RlIDEwIGFuZCBDaHJvbWUgNjYpIGhhdmUgYSBidWcgd2l0aCByZXNvbHZpbmcgY3VzdG9tIHRoZW5hYmxlc1xuICAgICAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODMwNTY1XG4gICAgICAvLyB3ZSBjYW4ndCBkZXRlY3QgaXQgc3luY2hyb25vdXNseSwgc28ganVzdCBjaGVjayB2ZXJzaW9uc1xuICAgICAgJiYgdjguaW5kZXhPZignNi42JykgIT09IDBcbiAgICAgICYmIHVzZXJBZ2VudC5pbmRleE9mKCdDaHJvbWUvNjYnKSA9PT0gLTE7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufSgpO1xuXG4vLyBoZWxwZXJzXG52YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgdGhlbjtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiB0eXBlb2YgKHRoZW4gPSBpdC50aGVuKSA9PSAnZnVuY3Rpb24nID8gdGhlbiA6IGZhbHNlO1xufTtcbnZhciBub3RpZnkgPSBmdW5jdGlvbiAocHJvbWlzZSwgaXNSZWplY3QpIHtcbiAgaWYgKHByb21pc2UuX24pIHJldHVybjtcbiAgcHJvbWlzZS5fbiA9IHRydWU7XG4gIHZhciBjaGFpbiA9IHByb21pc2UuX2M7XG4gIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgb2sgPSBwcm9taXNlLl9zID09IDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBydW4gPSBmdW5jdGlvbiAocmVhY3Rpb24pIHtcbiAgICAgIHZhciBoYW5kbGVyID0gb2sgPyByZWFjdGlvbi5vayA6IHJlYWN0aW9uLmZhaWw7XG4gICAgICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gICAgICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICAgICAgdmFyIGRvbWFpbiA9IHJlYWN0aW9uLmRvbWFpbjtcbiAgICAgIHZhciByZXN1bHQsIHRoZW4sIGV4aXRlZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgaWYgKHByb21pc2UuX2ggPT0gMikgb25IYW5kbGVVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgICAgICAgICBwcm9taXNlLl9oID0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhbmRsZXIgPT09IHRydWUpIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVyKHZhbHVlKTsgLy8gbWF5IHRocm93XG4gICAgICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgICAgIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgICAgIGV4aXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHJlYWN0aW9uLnByb21pc2UpIHtcbiAgICAgICAgICAgIHJlamVjdChUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aGVuLmNhbGwocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZG9tYWluICYmICFleGl0ZWQpIGRvbWFpbi5leGl0KCk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGggPiBpKSBydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgcHJvbWlzZS5fYyA9IFtdO1xuICAgIHByb21pc2UuX24gPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXByb21pc2UuX2gpIG9uVW5oYW5kbGVkKHByb21pc2UpO1xuICB9KTtcbn07XG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgdW5oYW5kbGVkID0gaXNVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgdmFyIHJlc3VsdCwgaGFuZGxlciwgY29uc29sZTtcbiAgICBpZiAodW5oYW5kbGVkKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGlzTm9kZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub251bmhhbmRsZWRyZWplY3Rpb24pIHtcbiAgICAgICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmICgoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBwcm9taXNlLl9oID0gaXNOb2RlIHx8IGlzVW5oYW5kbGVkKHByb21pc2UpID8gMiA6IDE7XG4gICAgfSBwcm9taXNlLl9hID0gdW5kZWZpbmVkO1xuICAgIGlmICh1bmhhbmRsZWQgJiYgcmVzdWx0LmUpIHRocm93IHJlc3VsdC52O1xuICB9KTtcbn07XG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICByZXR1cm4gcHJvbWlzZS5faCAhPT0gMSAmJiAocHJvbWlzZS5fYSB8fCBwcm9taXNlLl9jKS5sZW5ndGggPT09IDA7XG59O1xudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYW5kbGVyO1xuICAgIGlmIChpc05vZGUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBpZiAoaGFuZGxlciA9IGdsb2JhbC5vbnJlamVjdGlvbmhhbmRsZWQpIHtcbiAgICAgIGhhbmRsZXIoeyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHByb21pc2UuX3YgfSk7XG4gICAgfVxuICB9KTtcbn07XG52YXIgJHJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICBwcm9taXNlLl9zID0gMjtcbiAgaWYgKCFwcm9taXNlLl9hKSBwcm9taXNlLl9hID0gcHJvbWlzZS5fYy5zbGljZSgpO1xuICBub3RpZnkocHJvbWlzZSwgdHJ1ZSk7XG59O1xudmFyICRyZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgdmFyIHRoZW47XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgdHJ5IHtcbiAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIGlmICh0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBfdzogcHJvbWlzZSwgX2Q6IGZhbHNlIH07IC8vIHdyYXBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAkcmVqZWN0LmNhbGwod3JhcHBlciwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9taXNlLl92ID0gdmFsdWU7XG4gICAgICBwcm9taXNlLl9zID0gMTtcbiAgICAgIG5vdGlmeShwcm9taXNlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgJHJlamVjdC5jYWxsKHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9LCBlKTsgLy8gd3JhcFxuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gICRQcm9taXNlID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJFByb21pc2UsIFBST01JU0UsICdfaCcpO1xuICAgIGFGdW5jdGlvbihleGVjdXRvcik7XG4gICAgSW50ZXJuYWwuY2FsbCh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoY3R4KCRyZXNvbHZlLCB0aGlzLCAxKSwgY3R4KCRyZWplY3QsIHRoaXMsIDEpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICRyZWplY3QuY2FsbCh0aGlzLCBlcnIpO1xuICAgIH1cbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHRoaXMuX2MgPSBbXTsgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG4gICAgdGhpcy5fYSA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuICAgIHRoaXMuX3MgPSAwOyAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcbiAgICB0aGlzLl9kID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIGRvbmVcbiAgICB0aGlzLl92ID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIHZhbHVlXG4gICAgdGhpcy5faCA9IDA7ICAgICAgICAgICAgICAvLyA8LSByZWplY3Rpb24gc3RhdGUsIDAgLSBkZWZhdWx0LCAxIC0gaGFuZGxlZCwgMiAtIHVuaGFuZGxlZFxuICAgIHRoaXMuX24gPSBmYWxzZTsgICAgICAgICAgLy8gPC0gbm90aWZ5XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpKCRQcm9taXNlLnByb3RvdHlwZSwge1xuICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsICRQcm9taXNlKSk7XG4gICAgICByZWFjdGlvbi5vayA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCA9IHR5cGVvZiBvblJlamVjdGVkID09ICdmdW5jdGlvbicgJiYgb25SZWplY3RlZDtcbiAgICAgIHJlYWN0aW9uLmRvbWFpbiA9IGlzTm9kZSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fYy5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9hKSB0aGlzLl9hLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHRoaXMuX3MpIG5vdGlmeSh0aGlzLCBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH0pO1xuICBPd25Qcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBJbnRlcm5hbCgpO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgdGhpcy5yZXNvbHZlID0gY3R4KCRyZXNvbHZlLCBwcm9taXNlLCAxKTtcbiAgICB0aGlzLnJlamVjdCA9IGN0eCgkcmVqZWN0LCBwcm9taXNlLCAxKTtcbiAgfTtcbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gJFByb21pc2UgfHwgQyA9PT0gV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFByb21pc2U6ICRQcm9taXNlIH0pO1xucmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKSgkUHJvbWlzZSwgUFJPTUlTRSk7XG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKFBST01JU0UpO1xuV3JhcHBlciA9IHJlcXVpcmUoJy4vX2NvcmUnKVtQUk9NSVNFXTtcblxuLy8gc3RhdGljc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNSBQcm9taXNlLnJlamVjdChyKVxuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTtcbiAgICB2YXIgJCRyZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICAkJHJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKExJQlJBUlkgfHwgIVVTRV9OQVRJVkUpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC42IFByb21pc2UucmVzb2x2ZSh4KVxuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoTElCUkFSWSAmJiB0aGlzID09PSBXcmFwcGVyID8gJFByb21pc2UgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoVVNFX05BVElWRSAmJiByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7XG4gICRQcm9taXNlLmFsbChpdGVyKVsnY2F0Y2gnXShlbXB0eSk7XG59KSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyICRpbmRleCA9IGluZGV4Kys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1skaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lKSByZWplY3QocmVzdWx0LnYpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSA3M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///73\n")},function(module,exports){eval("module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzP2Q4YWMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIENvbnN0cnVjdG9yLCBuYW1lLCBmb3JiaWRkZW5GaWVsZCkge1xuICBpZiAoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSB8fCAoZm9yYmlkZGVuRmllbGQgIT09IHVuZGVmaW5lZCAmJiBmb3JiaWRkZW5GaWVsZCBpbiBpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IobmFtZSArICc6IGluY29ycmVjdCBpbnZvY2F0aW9uIScpO1xuICB9IHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4taW5zdGFuY2UuanNcbi8vIG1vZHVsZSBpZCA9IDc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///74\n")},function(module,exports,__webpack_require__){eval("var ctx = __webpack_require__(15);\nvar call = __webpack_require__(76);\nvar isArrayIter = __webpack_require__(77);\nvar anObject = __webpack_require__(4);\nvar toLength = __webpack_require__(38);\nvar getIterFn = __webpack_require__(78);\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qcz8zNTZiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgQlJFQUsgPSB7fTtcbnZhciBSRVRVUk4gPSB7fTtcbnZhciBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0LCBJVEVSQVRPUikge1xuICB2YXIgaXRlckZuID0gSVRFUkFUT1IgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSk7XG4gIHZhciBmID0gY3R4KGZuLCB0aGF0LCBlbnRyaWVzID8gMiA6IDEpO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0O1xuICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXRlcmFibGUgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcbiAgLy8gZmFzdCBjYXNlIGZvciBhcnJheXMgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yXG4gIGlmIChpc0FycmF5SXRlcihpdGVyRm4pKSBmb3IgKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgcmVzdWx0ID0gZW50cmllcyA/IGYoYW5PYmplY3Qoc3RlcCA9IGl0ZXJhYmxlW2luZGV4XSlbMF0sIHN0ZXBbMV0pIDogZihpdGVyYWJsZVtpbmRleF0pO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9IGVsc2UgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOykge1xuICAgIHJlc3VsdCA9IGNhbGwoaXRlcmF0b3IsIGYsIHN0ZXAudmFsdWUsIGVudHJpZXMpO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9XG59O1xuZXhwb3J0cy5CUkVBSyA9IEJSRUFLO1xuZXhwb3J0cy5SRVRVUk4gPSBSRVRVUk47XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZm9yLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA3NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///75\n")},function(module,exports,__webpack_require__){eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(4);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qcz85YWM1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcykge1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qc1xuLy8gbW9kdWxlIGlkID0gNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///76\n")},function(module,exports,__webpack_require__){eval("// check on default Array iterator\nvar Iterators = __webpack_require__(17);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanM/MzIxYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1hcnJheS1pdGVyLmpzXG4vLyBtb2R1bGUgaWQgPSA3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///77\n")},function(module,exports,__webpack_require__){eval("var classof = __webpack_require__(49);\nvar ITERATOR = __webpack_require__(2)('iterator');\nvar Iterators = __webpack_require__(17);\nmodule.exports = __webpack_require__(0).getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzP2RkZmIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanNcbi8vIG1vZHVsZSBpZCA9IDc4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///78\n")},function(module,exports){eval("// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ludm9rZS5qcz85MjdiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhc3QgYXBwbHksIGh0dHA6Ly9qc3BlcmYubG5raXQuY29tL2Zhc3QtYXBwbHkvNVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIGFyZ3MsIHRoYXQpIHtcbiAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gdW4gPyBmbigpXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQpO1xuICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gIH0gcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3MpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pbnZva2UuanNcbi8vIG1vZHVsZSBpZCA9IDc5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///79\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar macrotask = __webpack_require__(51).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(16)(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qcz9mMzYzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBtYWNyb3Rhc2sgPSByZXF1aXJlKCcuL190YXNrJykuc2V0O1xudmFyIE9ic2VydmVyID0gZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIFByb21pc2UgPSBnbG9iYWwuUHJvbWlzZTtcbnZhciBpc05vZGUgPSByZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaGVhZCwgbGFzdCwgbm90aWZ5O1xuXG4gIHZhciBmbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50LCBmbjtcbiAgICBpZiAoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGhlYWQpIHtcbiAgICAgIGZuID0gaGVhZC5mbjtcbiAgICAgIGhlYWQgPSBoZWFkLm5leHQ7XG4gICAgICB0cnkge1xuICAgICAgICBmbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoaGVhZCkgbm90aWZ5KCk7XG4gICAgICAgIGVsc2UgbGFzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LmVudGVyKCk7XG4gIH07XG5cbiAgLy8gTm9kZS5qc1xuICBpZiAoaXNOb2RlKSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XG4gICAgfTtcbiAgLy8gYnJvd3NlcnMgd2l0aCBNdXRhdGlvbk9ic2VydmVyLCBleGNlcHQgaU9TIFNhZmFyaSAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMzlcbiAgfSBlbHNlIGlmIChPYnNlcnZlciAmJiAhKGdsb2JhbC5uYXZpZ2F0b3IgJiYgZ2xvYmFsLm5hdmlnYXRvci5zdGFuZGFsb25lKSkge1xuICAgIHZhciB0b2dnbGUgPSB0cnVlO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG5ldyBPYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7IGNoYXJhY3RlckRhdGE6IHRydWUgfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYgKFByb21pc2UgJiYgUHJvbWlzZS5yZXNvbHZlKSB7XG4gICAgLy8gUHJvbWlzZS5yZXNvbHZlIHdpdGhvdXQgYW4gYXJndW1lbnQgdGhyb3dzIGFuIGVycm9yIGluIExHIFdlYk9TIDJcbiAgICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb21pc2UudGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcbiAgLy8gLSBzZXRJbW1lZGlhdGVcbiAgLy8gLSBNZXNzYWdlQ2hhbm5lbFxuICAvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIHN0cmFuZ2UgSUUgKyB3ZWJwYWNrIGRldiBzZXJ2ZXIgYnVnIC0gdXNlIC5jYWxsKGdsb2JhbClcbiAgICAgIG1hY3JvdGFzay5jYWxsKGdsb2JhbCwgZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgdmFyIHRhc2sgPSB7IGZuOiBmbiwgbmV4dDogdW5kZWZpbmVkIH07XG4gICAgaWYgKGxhc3QpIGxhc3QubmV4dCA9IHRhc2s7XG4gICAgaWYgKCFoZWFkKSB7XG4gICAgICBoZWFkID0gdGFzaztcbiAgICAgIG5vdGlmeSgpO1xuICAgIH0gbGFzdCA9IHRhc2s7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///80\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(1);\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VzZXItYWdlbnQuanM/ODk0NiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsLm5hdmlnYXRvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCAnJztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191c2VyLWFnZW50LmpzXG4vLyBtb2R1bGUgaWQgPSA4MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///81\n")},function(module,exports,__webpack_require__){eval("var hide = __webpack_require__(9);\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcz9jNDdmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGlmIChzYWZlICYmIHRhcmdldFtrZXldKSB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgIGVsc2UgaGlkZSh0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9IHJldHVybiB0YXJnZXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qc1xuLy8gbW9kdWxlIGlkID0gODJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///82\n")},function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(1);\nvar core = __webpack_require__(0);\nvar dP = __webpack_require__(7);\nvar DESCRIPTORS = __webpack_require__(5);\nvar SPECIES = __webpack_require__(2)('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1zcGVjaWVzLmpzPzZkMWEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgQyA9IHR5cGVvZiBjb3JlW0tFWV0gPT0gJ2Z1bmN0aW9uJyA/IGNvcmVbS0VZXSA6IGdsb2JhbFtLRVldO1xuICBpZiAoREVTQ1JJUFRPUlMgJiYgQyAmJiAhQ1tTUEVDSUVTXSkgZFAuZihDLCBTUEVDSUVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDgzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///83\n")},function(module,exports,__webpack_require__){eval("var ITERATOR = __webpack_require__(2)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzPzc1OGQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTtcbiAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24gKCkgeyBTQUZFX0NMT1NJTkcgPSB0cnVlOyB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7XG4gIGlmICghc2tpcENsb3NpbmcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBbN107XG4gICAgdmFyIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9O1xuICAgIGFycltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBzYWZlO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qc1xuLy8gbW9kdWxlIGlkID0gODRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///84\n")},function(module,exports,__webpack_require__){"use strict";eval("// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar global = __webpack_require__(1);\nvar speciesConstructor = __webpack_require__(50);\nvar promiseResolve = __webpack_require__(53);\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseS5qcz8xMmEwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtZmluYWxseVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1Byb21pc2UnLCB7ICdmaW5hbGx5JzogZnVuY3Rpb24gKG9uRmluYWxseSkge1xuICB2YXIgQyA9IHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBjb3JlLlByb21pc2UgfHwgZ2xvYmFsLlByb21pc2UpO1xuICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBvbkZpbmFsbHkgPT0gJ2Z1bmN0aW9uJztcbiAgcmV0dXJuIHRoaXMudGhlbihcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKHgpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB4OyB9KTtcbiAgICB9IDogb25GaW5hbGx5LFxuICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgdGhyb3cgZTsgfSk7XG4gICAgfSA6IG9uRmluYWxseVxuICApO1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHkuanNcbi8vIG1vZHVsZSBpZCA9IDg1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///85\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(3);\nvar newPromiseCapability = __webpack_require__(32);\nvar perform = __webpack_require__(52);\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzPzhjYTUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS10cnlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4vX3BlcmZvcm0nKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdQcm9taXNlJywgeyAndHJ5JzogZnVuY3Rpb24gKGNhbGxiYWNrZm4pIHtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZih0aGlzKTtcbiAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oY2FsbGJhY2tmbik7XG4gIChyZXN1bHQuZSA/IHByb21pc2VDYXBhYmlsaXR5LnJlamVjdCA6IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmUpKHJlc3VsdC52KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzXG4vLyBtb2R1bGUgaWQgPSA4NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///86\n")},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n "use strict";\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof module === \'object\' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n "use strict";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = "undefined";\n\n var logMethods = [\n "trace",\n "debug",\n "info",\n "warn",\n "error"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === \'function\') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === \'debug\') {\n methodName = \'log\';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, \'log\');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn\'t present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = "loglevel";\n if (name) {\n storageKey += ":" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || \'silent\').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + "=" + levelName + ";";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + "=");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { "TRACE": 0, "DEBUG": 1, "INFO": 2, "WARN": 3,\n "ERROR": 4, "SILENT": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return "No console available for logging";\n }\n } else {\n throw "log.setLevel() called with invalid level: " + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? "WARN" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== "string" || name === "") {\n throw new TypeError("You must supply a name when creating a logger.");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9nbGV2ZWwvbGliL2xvZ2xldmVsLmpzPzA2ZmMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiogbG9nbGV2ZWwgLSBodHRwczovL2dpdGh1Yi5jb20vcGltdGVycnkvbG9nbGV2ZWxcbipcbiogQ29weXJpZ2h0IChjKSAyMDEzIFRpbSBQZXJyeVxuKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4qL1xuKGZ1bmN0aW9uIChyb290LCBkZWZpbml0aW9uKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgICBkZWZpbmUoZGVmaW5pdGlvbik7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGRlZmluaXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByb290LmxvZyA9IGRlZmluaXRpb24oKTtcbiAgICB9XG59KHRoaXMsIGZ1bmN0aW9uICgpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIC8vIFNsaWdodGx5IGR1YmlvdXMgdHJpY2tzIHRvIGN1dCBkb3duIG1pbmltaXplZCBmaWxlIHNpemVcbiAgICB2YXIgbm9vcCA9IGZ1bmN0aW9uKCkge307XG4gICAgdmFyIHVuZGVmaW5lZFR5cGUgPSBcInVuZGVmaW5lZFwiO1xuXG4gICAgdmFyIGxvZ01ldGhvZHMgPSBbXG4gICAgICAgIFwidHJhY2VcIixcbiAgICAgICAgXCJkZWJ1Z1wiLFxuICAgICAgICBcImluZm9cIixcbiAgICAgICAgXCJ3YXJuXCIsXG4gICAgICAgIFwiZXJyb3JcIlxuICAgIF07XG5cbiAgICAvLyBDcm9zcy1icm93c2VyIGJpbmQgZXF1aXZhbGVudCB0aGF0IHdvcmtzIGF0IGxlYXN0IGJhY2sgdG8gSUU2XG4gICAgZnVuY3Rpb24gYmluZE1ldGhvZChvYmosIG1ldGhvZE5hbWUpIHtcbiAgICAgICAgdmFyIG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTtcbiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QuYmluZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIG1ldGhvZC5iaW5kKG9iaik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5jYWxsKG1ldGhvZCwgb2JqKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBNaXNzaW5nIGJpbmQgc2hpbSBvciBJRTggKyBNb2Rlcm5penIsIGZhbGxiYWNrIHRvIHdyYXBwaW5nXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmFwcGx5KG1ldGhvZCwgW29iaiwgYXJndW1lbnRzXSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJ1aWxkIHRoZSBiZXN0IGxvZ2dpbmcgbWV0aG9kIHBvc3NpYmxlIGZvciB0aGlzIGVudlxuICAgIC8vIFdoZXJldmVyIHBvc3NpYmxlIHdlIHdhbnQgdG8gYmluZCwgbm90IHdyYXAsIHRvIHByZXNlcnZlIHN0YWNrIHRyYWNlc1xuICAgIGZ1bmN0aW9uIHJlYWxNZXRob2QobWV0aG9kTmFtZSkge1xuICAgICAgICBpZiAobWV0aG9kTmFtZSA9PT0gJ2RlYnVnJykge1xuICAgICAgICAgICAgbWV0aG9kTmFtZSA9ICdsb2cnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE5vIG1ldGhvZCBwb3NzaWJsZSwgZm9yIG5vdyAtIGZpeGVkIGxhdGVyIGJ5IGVuYWJsZUxvZ2dpbmdXaGVuQ29uc29sZUFycml2ZXNcbiAgICAgICAgfSBlbHNlIGlmIChjb25zb2xlW21ldGhvZE5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBiaW5kTWV0aG9kKGNvbnNvbGUsIG1ldGhvZE5hbWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnNvbGUubG9nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBiaW5kTWV0aG9kKGNvbnNvbGUsICdsb2cnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBub29wO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlc2UgcHJpdmF0ZSBmdW5jdGlvbnMgYWx3YXlzIG5lZWQgYHRoaXNgIHRvIGJlIHNldCBwcm9wZXJseVxuXG4gICAgZnVuY3Rpb24gcmVwbGFjZUxvZ2dpbmdNZXRob2RzKGxldmVsLCBsb2dnZXJOYW1lKSB7XG4gICAgICAgIC8qanNoaW50IHZhbGlkdGhpczp0cnVlICovXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbG9nTWV0aG9kcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIG1ldGhvZE5hbWUgPSBsb2dNZXRob2RzW2ldO1xuICAgICAgICAgICAgdGhpc1ttZXRob2ROYW1lXSA9IChpIDwgbGV2ZWwpID9cbiAgICAgICAgICAgICAgICBub29wIDpcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZEZhY3RvcnkobWV0aG9kTmFtZSwgbGV2ZWwsIGxvZ2dlck5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmaW5lIGxvZy5sb2cgYXMgYW4gYWxpYXMgZm9yIGxvZy5kZWJ1Z1xuICAgICAgICB0aGlzLmxvZyA9IHRoaXMuZGVidWc7XG4gICAgfVxuXG4gICAgLy8gSW4gb2xkIElFIHZlcnNpb25zLCB0aGUgY29uc29sZSBpc24ndCBwcmVzZW50IHVudGlsIHlvdSBmaXJzdCBvcGVuIGl0LlxuICAgIC8vIFdlIGJ1aWxkIHJlYWxNZXRob2QoKSByZXBsYWNlbWVudHMgaGVyZSB0aGF0IHJlZ2VuZXJhdGUgbG9nZ2luZyBtZXRob2RzXG4gICAgZnVuY3Rpb24gZW5hYmxlTG9nZ2luZ1doZW5Db25zb2xlQXJyaXZlcyhtZXRob2ROYW1lLCBsZXZlbCwgbG9nZ2VyTmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICAgICAgcmVwbGFjZUxvZ2dpbmdNZXRob2RzLmNhbGwodGhpcywgbGV2ZWwsIGxvZ2dlck5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXNbbWV0aG9kTmFtZV0uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCeSBkZWZhdWx0LCB3ZSB1c2UgY2xvc2VseSBib3VuZCByZWFsIG1ldGhvZHMgd2hlcmV2ZXIgcG9zc2libGUsIGFuZFxuICAgIC8vIG90aGVyd2lzZSB3ZSB3YWl0IGZvciBhIGNvbnNvbGUgdG8gYXBwZWFyLCBhbmQgdGhlbiB0cnkgYWdhaW4uXG4gICAgZnVuY3Rpb24gZGVmYXVsdE1ldGhvZEZhY3RvcnkobWV0aG9kTmFtZSwgbGV2ZWwsIGxvZ2dlck5hbWUpIHtcbiAgICAgICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cbiAgICAgICAgcmV0dXJuIHJlYWxNZXRob2QobWV0aG9kTmFtZSkgfHxcbiAgICAgICAgICAgICAgIGVuYWJsZUxvZ2dpbmdXaGVuQ29uc29sZUFycml2ZXMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBMb2dnZXIobmFtZSwgZGVmYXVsdExldmVsLCBmYWN0b3J5KSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgY3VycmVudExldmVsO1xuICAgICAgdmFyIHN0b3JhZ2VLZXkgPSBcImxvZ2xldmVsXCI7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICBzdG9yYWdlS2V5ICs9IFwiOlwiICsgbmFtZTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcGVyc2lzdExldmVsSWZQb3NzaWJsZShsZXZlbE51bSkge1xuICAgICAgICAgIHZhciBsZXZlbE5hbWUgPSAobG9nTWV0aG9kc1tsZXZlbE51bV0gfHwgJ3NpbGVudCcpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gdW5kZWZpbmVkVHlwZSkgcmV0dXJuO1xuXG4gICAgICAgICAgLy8gVXNlIGxvY2FsU3RvcmFnZSBpZiBhdmFpbGFibGVcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlW3N0b3JhZ2VLZXldID0gbGV2ZWxOYW1lO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuXG4gICAgICAgICAgLy8gVXNlIHNlc3Npb24gY29va2llIGFzIGZhbGxiYWNrXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgd2luZG93LmRvY3VtZW50LmNvb2tpZSA9XG4gICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHN0b3JhZ2VLZXkpICsgXCI9XCIgKyBsZXZlbE5hbWUgKyBcIjtcIjtcbiAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGdldFBlcnNpc3RlZExldmVsKCkge1xuICAgICAgICAgIHZhciBzdG9yZWRMZXZlbDtcblxuICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSB1bmRlZmluZWRUeXBlKSByZXR1cm47XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBzdG9yZWRMZXZlbCA9IHdpbmRvdy5sb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV07XG4gICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuXG4gICAgICAgICAgLy8gRmFsbGJhY2sgdG8gY29va2llcyBpZiBsb2NhbCBzdG9yYWdlIGdpdmVzIHVzIG5vdGhpbmdcbiAgICAgICAgICBpZiAodHlwZW9mIHN0b3JlZExldmVsID09PSB1bmRlZmluZWRUeXBlKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICB2YXIgY29va2llID0gd2luZG93LmRvY3VtZW50LmNvb2tpZTtcbiAgICAgICAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IGNvb2tpZS5pbmRleE9mKFxuICAgICAgICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzdG9yYWdlS2V5KSArIFwiPVwiKTtcbiAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbiAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yZWRMZXZlbCA9IC9eKFteO10rKS8uZXhlYyhjb29raWUuc2xpY2UobG9jYXRpb24pKVsxXTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHRoZSBzdG9yZWQgbGV2ZWwgaXMgbm90IHZhbGlkLCB0cmVhdCBpdCBhcyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG4gICAgICAgICAgaWYgKHNlbGYubGV2ZWxzW3N0b3JlZExldmVsXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHN0b3JlZExldmVsID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBzdG9yZWRMZXZlbDtcbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgICAqXG4gICAgICAgKiBQdWJsaWMgbG9nZ2VyIEFQSSAtIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGltdGVycnkvbG9nbGV2ZWwgZm9yIGRldGFpbHNcbiAgICAgICAqXG4gICAgICAgKi9cblxuICAgICAgc2VsZi5uYW1lID0gbmFtZTtcblxuICAgICAgc2VsZi5sZXZlbHMgPSB7IFwiVFJBQ0VcIjogMCwgXCJERUJVR1wiOiAxLCBcIklORk9cIjogMiwgXCJXQVJOXCI6IDMsXG4gICAgICAgICAgXCJFUlJPUlwiOiA0LCBcIlNJTEVOVFwiOiA1fTtcblxuICAgICAgc2VsZi5tZXRob2RGYWN0b3J5ID0gZmFjdG9yeSB8fCBkZWZhdWx0TWV0aG9kRmFjdG9yeTtcblxuICAgICAgc2VsZi5nZXRMZXZlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gY3VycmVudExldmVsO1xuICAgICAgfTtcblxuICAgICAgc2VsZi5zZXRMZXZlbCA9IGZ1bmN0aW9uIChsZXZlbCwgcGVyc2lzdCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09IFwic3RyaW5nXCIgJiYgc2VsZi5sZXZlbHNbbGV2ZWwudG9VcHBlckNhc2UoKV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsZXZlbCA9IHNlbGYubGV2ZWxzW2xldmVsLnRvVXBwZXJDYXNlKCldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIGxldmVsID09PSBcIm51bWJlclwiICYmIGxldmVsID49IDAgJiYgbGV2ZWwgPD0gc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRMZXZlbCA9IGxldmVsO1xuICAgICAgICAgICAgICBpZiAocGVyc2lzdCAhPT0gZmFsc2UpIHsgIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICAgICAgICAgICAgICAgIHBlcnNpc3RMZXZlbElmUG9zc2libGUobGV2ZWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlcGxhY2VMb2dnaW5nTWV0aG9kcy5jYWxsKHNlbGYsIGxldmVsLCBuYW1lKTtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSB1bmRlZmluZWRUeXBlICYmIGxldmVsIDwgc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCJObyBjb25zb2xlIGF2YWlsYWJsZSBmb3IgbG9nZ2luZ1wiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhyb3cgXCJsb2cuc2V0TGV2ZWwoKSBjYWxsZWQgd2l0aCBpbnZhbGlkIGxldmVsOiBcIiArIGxldmVsO1xuICAgICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHNlbGYuc2V0RGVmYXVsdExldmVsID0gZnVuY3Rpb24gKGxldmVsKSB7XG4gICAgICAgICAgaWYgKCFnZXRQZXJzaXN0ZWRMZXZlbCgpKSB7XG4gICAgICAgICAgICAgIHNlbGYuc2V0TGV2ZWwobGV2ZWwsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBzZWxmLmVuYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlRSQUNFLCBwZXJzaXN0KTtcbiAgICAgIH07XG5cbiAgICAgIHNlbGYuZGlzYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlNJTEVOVCwgcGVyc2lzdCk7XG4gICAgICB9O1xuXG4gICAgICAvLyBJbml0aWFsaXplIHdpdGggdGhlIHJpZ2h0IGxldmVsXG4gICAgICB2YXIgaW5pdGlhbExldmVsID0gZ2V0UGVyc2lzdGVkTGV2ZWwoKTtcbiAgICAgIGlmIChpbml0aWFsTGV2ZWwgPT0gbnVsbCkge1xuICAgICAgICAgIGluaXRpYWxMZXZlbCA9IGRlZmF1bHRMZXZlbCA9PSBudWxsID8gXCJXQVJOXCIgOiBkZWZhdWx0TGV2ZWw7XG4gICAgICB9XG4gICAgICBzZWxmLnNldExldmVsKGluaXRpYWxMZXZlbCwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICpcbiAgICAgKiBUb3AtbGV2ZWwgQVBJXG4gICAgICpcbiAgICAgKi9cblxuICAgIHZhciBkZWZhdWx0TG9nZ2VyID0gbmV3IExvZ2dlcigpO1xuXG4gICAgdmFyIF9sb2dnZXJzQnlOYW1lID0ge307XG4gICAgZGVmYXVsdExvZ2dlci5nZXRMb2dnZXIgPSBmdW5jdGlvbiBnZXRMb2dnZXIobmFtZSkge1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgIT09IFwic3RyaW5nXCIgfHwgbmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJZb3UgbXVzdCBzdXBwbHkgYSBuYW1lIHdoZW4gY3JlYXRpbmcgYSBsb2dnZXIuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvZ2dlciA9IF9sb2dnZXJzQnlOYW1lW25hbWVdO1xuICAgICAgICBpZiAoIWxvZ2dlcikge1xuICAgICAgICAgIGxvZ2dlciA9IF9sb2dnZXJzQnlOYW1lW25hbWVdID0gbmV3IExvZ2dlcihcbiAgICAgICAgICAgIG5hbWUsIGRlZmF1bHRMb2dnZXIuZ2V0TGV2ZWwoKSwgZGVmYXVsdExvZ2dlci5tZXRob2RGYWN0b3J5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH07XG5cbiAgICAvLyBHcmFiIHRoZSBjdXJyZW50IGdsb2JhbCBsb2cgdmFyaWFibGUgaW4gY2FzZSBvZiBvdmVyd3JpdGVcbiAgICB2YXIgX2xvZyA9ICh0eXBlb2Ygd2luZG93ICE9PSB1bmRlZmluZWRUeXBlKSA/IHdpbmRvdy5sb2cgOiB1bmRlZmluZWQ7XG4gICAgZGVmYXVsdExvZ2dlci5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSB1bmRlZmluZWRUeXBlICYmXG4gICAgICAgICAgICAgICB3aW5kb3cubG9nID09PSBkZWZhdWx0TG9nZ2VyKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9nID0gX2xvZztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWZhdWx0TG9nZ2VyO1xuICAgIH07XG5cbiAgICBkZWZhdWx0TG9nZ2VyLmdldExvZ2dlcnMgPSBmdW5jdGlvbiBnZXRMb2dnZXJzKCkge1xuICAgICAgICByZXR1cm4gX2xvZ2dlcnNCeU5hbWU7XG4gICAgfTtcblxuICAgIHJldHVybiBkZWZhdWx0TG9nZ2VyO1xufSkpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvbG9nbGV2ZWwvbGliL2xvZ2xldmVsLmpzXG4vLyBtb2R1bGUgaWQgPSA4N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///87\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(89);\nmodule.exports = __webpack_require__(0).Object.getPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzPzdkMmUiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gODhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///88\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(30);\nvar $getPrototypeOf = __webpack_require__(47);\n\n__webpack_require__(39)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzPzJhMWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjkgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciAkZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnZ2V0UHJvdG90eXBlT2YnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZihpdCkge1xuICAgIHJldHVybiAkZ2V0UHJvdG90eXBlT2YodG9PYmplY3QoaXQpKTtcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzXG4vLyBtb2R1bGUgaWQgPSA4OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///89\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(91), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvci5qcz82NzM4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA5MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///90\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(43);\n__webpack_require__(48);\nmodule.exports = __webpack_require__(33).f('iterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qcz9mZTdlIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX3drcy1leHQnKS5mKCdpdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gOTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///91\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(93), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC5qcz9lNTA1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2xcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA5MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///92\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(94);\n__webpack_require__(42);\n__webpack_require__(99);\n__webpack_require__(100);\nmodule.exports = __webpack_require__(0).Symbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qcz8wNzA3Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN5bWJvbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuU3ltYm9sO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gOTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///93\n")},function(module,exports,__webpack_require__){"use strict";eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(1);\nvar has = __webpack_require__(8);\nvar DESCRIPTORS = __webpack_require__(5);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(45);\nvar META = __webpack_require__(95).KEY;\nvar $fails = __webpack_require__(13);\nvar shared = __webpack_require__(28);\nvar setToStringTag = __webpack_require__(24);\nvar uid = __webpack_require__(20);\nvar wks = __webpack_require__(2);\nvar wksExt = __webpack_require__(33);\nvar wksDefine = __webpack_require__(34);\nvar enumKeys = __webpack_require__(96);\nvar isArray = __webpack_require__(97);\nvar anObject = __webpack_require__(4);\nvar isObject = __webpack_require__(6);\nvar toIObject = __webpack_require__(10);\nvar toPrimitive = __webpack_require__(26);\nvar createDesc = __webpack_require__(19);\nvar _create = __webpack_require__(31);\nvar gOPNExt = __webpack_require__(98);\nvar $GOPD = __webpack_require__(40);\nvar $DP = __webpack_require__(7);\nvar $keys = __webpack_require__(21);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(56).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(35).f = $propertyIsEnumerable;\n __webpack_require__(55).f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(14)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(9)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qcz83ZDY3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0Jztcbi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBNRVRBID0gcmVxdWlyZSgnLi9fbWV0YScpLktFWTtcbnZhciAkZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgd2tzRGVmaW5lID0gcmVxdWlyZSgnLi9fd2tzLWRlZmluZScpO1xudmFyIGVudW1LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1rZXlzJyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgX2NyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBnT1BORXh0ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4tZXh0Jyk7XG52YXIgJEdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyICREUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BEID0gJEdPUEQuZjtcbnZhciBkUCA9ICREUC5mO1xudmFyIGdPUE4gPSBnT1BORXh0LmY7XG52YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgJEpTT04gPSBnbG9iYWwuSlNPTjtcbnZhciBfc3RyaW5naWZ5ID0gJEpTT04gJiYgJEpTT04uc3RyaW5naWZ5O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEhJRERFTiA9IHdrcygnX2hpZGRlbicpO1xudmFyIFRPX1BSSU1JVElWRSA9IHdrcygndG9QcmltaXRpdmUnKTtcbnZhciBpc0VudW0gPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBTeW1ib2xSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXJlZ2lzdHJ5Jyk7XG52YXIgQWxsU3ltYm9scyA9IHNoYXJlZCgnc3ltYm9scycpO1xudmFyIE9QU3ltYm9scyA9IHNoYXJlZCgnb3Atc3ltYm9scycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0W1BST1RPVFlQRV07XG52YXIgVVNFX05BVElWRSA9IHR5cGVvZiAkU3ltYm9sID09ICdmdW5jdGlvbic7XG52YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0O1xuLy8gRG9uJ3QgdXNlIHNldHRlcnMgaW4gUXQgU2NyaXB0LCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTczXG52YXIgc2V0dGVyID0gIVFPYmplY3QgfHwgIVFPYmplY3RbUFJPVE9UWVBFXSB8fCAhUU9iamVjdFtQUk9UT1RZUEVdLmZpbmRDaGlsZDtcblxuLy8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG52YXIgc2V0U3ltYm9sRGVzYyA9IERFU0NSSVBUT1JTICYmICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRQKHRoaXMsICdhJywgeyB2YWx1ZTogNyB9KS5hOyB9XG4gIH0pKS5hICE9IDc7XG59KSA/IGZ1bmN0aW9uIChpdCwga2V5LCBEKSB7XG4gIHZhciBwcm90b0Rlc2MgPSBnT1BEKE9iamVjdFByb3RvLCBrZXkpO1xuICBpZiAocHJvdG9EZXNjKSBkZWxldGUgT2JqZWN0UHJvdG9ba2V5XTtcbiAgZFAoaXQsIGtleSwgRCk7XG4gIGlmIChwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKSBkUChPYmplY3RQcm90bywga2V5LCBwcm90b0Rlc2MpO1xufSA6IGRQO1xuXG52YXIgd3JhcCA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbFtQUk9UT1RZUEVdKTtcbiAgc3ltLl9rID0gdGFnO1xuICByZXR1cm4gc3ltO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX05BVElWRSAmJiB0eXBlb2YgJFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJyA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgaW5zdGFuY2VvZiAkU3ltYm9sO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIEQpIHtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90bykgJGRlZmluZVByb3BlcnR5KE9QU3ltYm9scywga2V5LCBEKTtcbiAgYW5PYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBhbk9iamVjdChEKTtcbiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7XG4gICAgaWYgKCFELmVudW1lcmFibGUpIHtcbiAgICAgIGlmICghaGFzKGl0LCBISURERU4pKSBkUChpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG4gICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkgaXRbSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBEID0gX2NyZWF0ZShELCB7IGVudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpIH0pO1xuICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG4gIH0gcmV0dXJuIGRQKGl0LCBrZXksIEQpO1xufTtcbnZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoaXQsIFApIHtcbiAgYW5PYmplY3QoaXQpO1xuICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpO1xuICB2YXIgaSA9IDA7XG4gIHZhciBsID0ga2V5cy5sZW5ndGg7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsID4gaSkgJGRlZmluZVByb3BlcnR5KGl0LCBrZXkgPSBrZXlzW2krK10sIFBba2V5XSk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpdCwgUCkge1xuICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG59O1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSkge1xuICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpO1xuICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XSA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHtcbiAgaXQgPSB0b0lPYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm47XG4gIHZhciBEID0gZ09QRChpdCwga2V5KTtcbiAgaWYgKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSkgRC5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgcmV0dXJuIEQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICB2YXIgbmFtZXMgPSBnT1BOKHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoIWhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiBrZXkgIT0gSElEREVOICYmIGtleSAhPSBNRVRBKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgdmFyIElTX09QID0gaXQgPT09IE9iamVjdFByb3RvO1xuICB2YXIgbmFtZXMgPSBnT1BOKElTX09QID8gT1BTeW1ib2xzIDogdG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYgKElTX09QID8gaGFzKE9iamVjdFByb3RvLCBrZXkpIDogdHJ1ZSkpIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIDE5LjQuMS4xIFN5bWJvbChbZGVzY3JpcHRpb25dKVxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKSB7XG4gICAgaWYgKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKSB0aHJvdyBUeXBlRXJyb3IoJ1N5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciEnKTtcbiAgICB2YXIgdGFnID0gdWlkKGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcbiAgICB2YXIgJHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvKSAkc2V0LmNhbGwoT1BTeW1ib2xzLCB2YWx1ZSk7XG4gICAgICBpZiAoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSkgdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcbiAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG4gICAgfTtcbiAgICBpZiAoREVTQ1JJUFRPUlMgJiYgc2V0dGVyKSBzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6ICRzZXQgfSk7XG4gICAgcmV0dXJuIHdyYXAodGFnKTtcbiAgfTtcbiAgcmVkZWZpbmUoJFN5bWJvbFtQUk9UT1RZUEVdLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faztcbiAgfSk7XG5cbiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICREUC5mID0gJGRlZmluZVByb3BlcnR5O1xuICByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmYgPSBnT1BORXh0LmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpLmYgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJykuZiA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbiAgaWYgKERFU0NSSVBUT1JTICYmICFyZXF1aXJlKCcuL19saWJyYXJ5JykpIHtcbiAgICByZWRlZmluZShPYmplY3RQcm90bywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB0cnVlKTtcbiAgfVxuXG4gIHdrc0V4dC5mID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gd3JhcCh3a3MobmFtZSkpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFN5bWJvbDogJFN5bWJvbCB9KTtcblxuZm9yICh2YXIgZXM2U3ltYm9scyA9IChcbiAgLy8gMTkuNC4yLjIsIDE5LjQuMi4zLCAxOS40LjIuNCwgMTkuNC4yLjYsIDE5LjQuMi44LCAxOS40LjIuOSwgMTkuNC4yLjEwLCAxOS40LjIuMTEsIDE5LjQuMi4xMiwgMTkuNC4yLjEzLCAxOS40LjIuMTRcbiAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJ1xuKS5zcGxpdCgnLCcpLCBqID0gMDsgZXM2U3ltYm9scy5sZW5ndGggPiBqOyl3a3MoZXM2U3ltYm9sc1tqKytdKTtcblxuZm9yICh2YXIgd2VsbEtub3duU3ltYm9scyA9ICRrZXlzKHdrcy5zdG9yZSksIGsgPSAwOyB3ZWxsS25vd25TeW1ib2xzLmxlbmd0aCA+IGs7KSB3a3NEZWZpbmUod2VsbEtub3duU3ltYm9sc1trKytdKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ1N5bWJvbCcsIHtcbiAgLy8gMTkuNC4yLjEgU3ltYm9sLmZvcihrZXkpXG4gICdmb3InOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGhhcyhTeW1ib2xSZWdpc3RyeSwga2V5ICs9ICcnKVxuICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG4gICAgICA6IFN5bWJvbFJlZ2lzdHJ5W2tleV0gPSAkU3ltYm9sKGtleSk7XG4gIH0sXG4gIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihzeW0pIHtcbiAgICBpZiAoIWlzU3ltYm9sKHN5bSkpIHRocm93IFR5cGVFcnJvcihzeW0gKyAnIGlzIG5vdCBhIHN5bWJvbCEnKTtcbiAgICBmb3IgKHZhciBrZXkgaW4gU3ltYm9sUmVnaXN0cnkpIGlmIChTeW1ib2xSZWdpc3RyeVtrZXldID09PSBzeW0pIHJldHVybiBrZXk7XG4gIH0sXG4gIHVzZVNldHRlcjogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSB0cnVlOyB9LFxuICB1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gZmFsc2U7IH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0Jywge1xuICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4gIGNyZWF0ZTogJGNyZWF0ZSxcbiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4gIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG4gIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG4gIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgUyA9ICRTeW1ib2woKTtcbiAgLy8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge31cbiAgLy8gV2ViS2l0IGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyBudWxsXG4gIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gIHJldHVybiBfc3RyaW5naWZ5KFtTXSkgIT0gJ1tudWxsXScgfHwgX3N0cmluZ2lmeSh7IGE6IFMgfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9Jztcbn0pKSwgJ0pTT04nLCB7XG4gIHN0cmluZ2lmeTogZnVuY3Rpb24gc3RyaW5naWZ5KGl0KSB7XG4gICAgdmFyIGFyZ3MgPSBbaXRdO1xuICAgIHZhciBpID0gMTtcbiAgICB2YXIgcmVwbGFjZXIsICRyZXBsYWNlcjtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgJHJlcGxhY2VyID0gcmVwbGFjZXIgPSBhcmdzWzFdO1xuICAgIGlmICghaXNPYmplY3QocmVwbGFjZXIpICYmIGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKSByZXR1cm47IC8vIElFOCByZXR1cm5zIHN0cmluZyBvbiB1bmRlZmluZWRcbiAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mICRyZXBsYWNlciA9PSAnZnVuY3Rpb24nKSB2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgaWYgKCFpc1N5bWJvbCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIGFyZ3NbMV0gPSByZXBsYWNlcjtcbiAgICByZXR1cm4gX3N0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJncyk7XG4gIH1cbn0pO1xuXG4vLyAxOS40LjMuNCBTeW1ib2wucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdKGhpbnQpXG4kU3ltYm9sW1BST1RPVFlQRV1bVE9fUFJJTUlUSVZFXSB8fCByZXF1aXJlKCcuL19oaWRlJykoJFN5bWJvbFtQUk9UT1RZUEVdLCBUT19QUklNSVRJVkUsICRTeW1ib2xbUFJPVE9UWVBFXS52YWx1ZU9mKTtcbi8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcbi8vIDIwLjIuMS45IE1hdGhbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7XG4vLyAyNC4zLjMgSlNPTltAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoZ2xvYmFsLkpTT04sICdKU09OJywgdHJ1ZSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3ltYm9sLmpzXG4vLyBtb2R1bGUgaWQgPSA5NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///94\n")},function(module,exports,__webpack_require__){eval("var META = __webpack_require__(20)('meta');\nvar isObject = __webpack_require__(6);\nvar has = __webpack_require__(8);\nvar setDesc = __webpack_require__(7).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(13)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanM/ZDNhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTUVUQSA9IHJlcXVpcmUoJy4vX3VpZCcpKCdtZXRhJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBzZXREZXNjID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBpZCA9IDA7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBGUkVFWkUgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7XG4gIHNldERlc2MoaXQsIE1FVEEsIHsgdmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IH0pO1xufTtcbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuICdFJztcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gb2JqZWN0IElEXG4gIH0gcmV0dXJuIGl0W01FVEFdLmk7XG59O1xudmFyIGdldFdlYWsgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuIHRydWU7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gcmV0dXJuIGl0W01FVEFdLnc7XG59O1xuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaRSAmJiBtZXRhLk5FRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzKGl0LCBNRVRBKSkgc2V0TWV0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgbWV0YSA9IG1vZHVsZS5leHBvcnRzID0ge1xuICBLRVk6IE1FVEEsXG4gIE5FRUQ6IGZhbHNlLFxuICBmYXN0S2V5OiBmYXN0S2V5LFxuICBnZXRXZWFrOiBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWV0YS5qc1xuLy8gbW9kdWxlIGlkID0gOTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///95\n")},function(module,exports,__webpack_require__){eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(21);\nvar gOPS = __webpack_require__(55);\nvar pIE = __webpack_require__(35);\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0ta2V5cy5qcz81ZGNlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGFsbCBlbnVtZXJhYmxlIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBzeW1ib2xzXG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHJlc3VsdCA9IGdldEtleXMoaXQpO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgaWYgKGdldFN5bWJvbHMpIHtcbiAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpO1xuICAgIHZhciBpc0VudW0gPSBwSUUuZjtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAoc3ltYm9scy5sZW5ndGggPiBpKSBpZiAoaXNFbnVtLmNhbGwoaXQsIGtleSA9IHN5bWJvbHNbaSsrXSkpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSA5NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///96\n")},function(module,exports,__webpack_require__){eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(16);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LmpzP2VkNDMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDk3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///97\n")},function(module,exports,__webpack_require__){eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(10);\nvar gOPN = __webpack_require__(56).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qcz80NmI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG52YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxudmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGdPUE4oaXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHJldHVybiB3aW5kb3dOYW1lcyAmJiB0b1N0cmluZy5jYWxsKGl0KSA9PSAnW29iamVjdCBXaW5kb3ddJyA/IGdldFdpbmRvd05hbWVzKGl0KSA6IGdPUE4odG9JT2JqZWN0KGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qc1xuLy8gbW9kdWxlIGlkID0gOThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///98\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(34)('asyncIterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcz8zOTg5Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnYXN5bmNJdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gOTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///99\n")},function(module,exports,__webpack_require__){eval("__webpack_require__(34)('observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZS5qcz80MTY3Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnb2JzZXJ2YWJsZScpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///100\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(102), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz85MjIwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qc1xuLy8gbW9kdWxlIGlkID0gMTAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///101\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(103);\nmodule.exports = __webpack_require__(0).Object.setPrototypeOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcz84YmYwIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Quc2V0UHJvdG90eXBlT2Y7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L3NldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDEwMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///102\n")},function(module,exports,__webpack_require__){eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(3);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(104).set });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcz83YjE4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMy4xOSBPYmplY3Quc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IHNldFByb3RvdHlwZU9mOiByZXF1aXJlKCcuL19zZXQtcHJvdG8nKS5zZXQgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanNcbi8vIG1vZHVsZSBpZCA9IDEwM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///103\n")},function(module,exports,__webpack_require__){eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(6);\nvar anObject = __webpack_require__(4);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(15)(Function.call, __webpack_require__(40).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtcHJvdG8uanM/NjVhNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXByb3RvLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///104\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(106), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzPzNhZjQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGVcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2NyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///105\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(107);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlLmpzP2EwY2UiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGUoUCwgRCkge1xuICByZXR1cm4gJE9iamVjdC5jcmVhdGUoUCwgRCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///106\n")},function(module,exports,__webpack_require__){eval("var $export = __webpack_require__(3);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(31) });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlLmpzP2IwNWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IGNyZWF0ZTogcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpIH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///107\n")},function(module,exports,__webpack_require__){eval('module.exports = { "default": __webpack_require__(109), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cy5qcz83ZDk4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5c1wiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///108\n')},function(module,exports,__webpack_require__){eval("__webpack_require__(110);\nmodule.exports = __webpack_require__(0).Object.keys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qcz84YzU2Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Qua2V5cztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///109\n")},function(module,exports,__webpack_require__){eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(30);\nvar $keys = __webpack_require__(21);\n\n__webpack_require__(39)('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qcz8wOWRjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2tleXMnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBrZXlzKGl0KSB7XG4gICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///110\n")},,,,,,function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(63);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(64);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(65);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Bus2 = __webpack_require__(117);\n\nvar _Bus3 = _interopRequireDefault(_Bus2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* @author micaelpedrosa@gmail.com\n* Message BUS Interface is an extension of the Bus\n* It is used mainly in the internal sandbox routing.\n*/\nvar MiniBus = function (_Bus) {\n (0, _inherits3.default)(MiniBus, _Bus);\n\n function MiniBus() {\n (0, _classCallCheck3.default)(this, MiniBus);\n return (0, _possibleConstructorReturn3.default)(this, (MiniBus.__proto__ || (0, _getPrototypeOf2.default)(MiniBus)).call(this));\n }\n\n /**\n * Post a message for routing. Message is routed directly to the external routing _onPostMessage.\n * @param {Message} inMsg JSON with mandatory Message structure {id, type, from, to}\n * @param {Callback} responseCallback Optional callback if a response is expected from the request. A response will be always sent, even if it is a \"Timeout\".\n * @return {number} the Message id\n */\n\n\n (0, _createClass3.default)(MiniBus, [{\n key: 'postMessage',\n value: function postMessage(inMsg, responseCallback, timeout) {\n var _this = this;\n\n _this._genId(inMsg);\n _this._responseCallback(inMsg, responseCallback, timeout);\n\n //always send to external (to core MessageBus)\n _this._onPostMessage(inMsg);\n\n return inMsg.id;\n }\n\n //internal method used when a message is received by an external routing system\n\n }, {\n key: '_onMessage',\n value: function _onMessage(msg) {\n var _this = this;\n\n if (!_this._onResponse(msg)) {\n var itemList = _this._subscriptions[msg.to];\n if (itemList) {\n _this._publishOn(itemList, msg);\n if (!msg.to.startsWith('hyperty')) {\n _this._publishOnDefault(msg);\n }\n } else {\n _this._publishOnDefault(msg);\n }\n }\n }\n }]);\n return MiniBus;\n}(_Bus3.default); /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\n\nexports.default = MiniBus;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvTWluaUJ1cy5qcz9lNTIwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cbmltcG9ydCBCdXMgZnJvbSAnLi9CdXMnO1xuXG4vKipcbiogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxuKiBNZXNzYWdlIEJVUyBJbnRlcmZhY2UgaXMgYW4gZXh0ZW5zaW9uIG9mIHRoZSBCdXNcbiogSXQgaXMgdXNlZCBtYWlubHkgaW4gdGhlIGludGVybmFsIHNhbmRib3ggcm91dGluZy5cbiovXG5jbGFzcyBNaW5pQnVzIGV4dGVuZHMgQnVzIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBvc3QgYSBtZXNzYWdlIGZvciByb3V0aW5nLiBNZXNzYWdlIGlzIHJvdXRlZCBkaXJlY3RseSB0byB0aGUgZXh0ZXJuYWwgcm91dGluZyBfb25Qb3N0TWVzc2FnZS5cbiAgICogQHBhcmFtICB7TWVzc2FnZX0gaW5Nc2cgICAgICAgICAgICBKU09OIHdpdGggbWFuZGF0b3J5IE1lc3NhZ2Ugc3RydWN0dXJlIHtpZCwgdHlwZSwgZnJvbSwgdG99XG4gICAqIEBwYXJhbSAge0NhbGxiYWNrfSByZXNwb25zZUNhbGxiYWNrIE9wdGlvbmFsIGNhbGxiYWNrIGlmIGEgcmVzcG9uc2UgaXMgZXhwZWN0ZWQgZnJvbSB0aGUgcmVxdWVzdC4gQSByZXNwb25zZSB3aWxsIGJlIGFsd2F5cyBzZW50LCBldmVuIGlmIGl0IGlzIGEgXCJUaW1lb3V0XCIuXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgICAgICAgICAgICB0aGUgTWVzc2FnZSBpZFxuICAgKi9cbiAgcG9zdE1lc3NhZ2UoaW5Nc2csIHJlc3BvbnNlQ2FsbGJhY2ssIHRpbWVvdXQpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMuX2dlbklkKGluTXNnKTtcbiAgICBfdGhpcy5fcmVzcG9uc2VDYWxsYmFjayhpbk1zZywgcmVzcG9uc2VDYWxsYmFjaywgdGltZW91dCk7XG5cbiAgICAvL2Fsd2F5cyBzZW5kIHRvIGV4dGVybmFsICh0byBjb3JlIE1lc3NhZ2VCdXMpXG4gICAgX3RoaXMuX29uUG9zdE1lc3NhZ2UoaW5Nc2cpO1xuXG4gICAgcmV0dXJuIGluTXNnLmlkO1xuICB9XG5cbiAgLy9pbnRlcm5hbCBtZXRob2QgdXNlZCB3aGVuIGEgbWVzc2FnZSBpcyByZWNlaXZlZCBieSBhbiBleHRlcm5hbCByb3V0aW5nIHN5c3RlbVxuICBfb25NZXNzYWdlKG1zZykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIV90aGlzLl9vblJlc3BvbnNlKG1zZykpIHtcbiAgICAgIGxldCBpdGVtTGlzdCA9IF90aGlzLl9zdWJzY3JpcHRpb25zW21zZy50b107XG4gICAgICBpZiAoaXRlbUxpc3QpIHtcbiAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKTtcbiAgICAgICAgaWYgKCFtc2cudG8uc3RhcnRzV2l0aCgnaHlwZXJ0eScpKSB7XG4gICAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbkRlZmF1bHQobXNnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMuX3B1Ymxpc2hPbkRlZmF1bHQobXNnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBNaW5pQnVzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9idXMvTWluaUJ1cy5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkE7QUFDQTs7Ozs7QUFDQTs7Ozs7QUFLQTs7O0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUF2Q0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///116\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(41);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _loglevel = __webpack_require__(87);\n\nvar logger = _interopRequireWildcard(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = logger.getLogger('Bus');\n\n/**\n* @author micaelpedrosa@gmail.com\n* Minimal interface and implementation to send and receive messages. It can be reused in many type of components.\n* Components that need a message system should receive this class as a dependency or extend it.\n* Extensions should implement the following private methods: _onPostMessage and _registerExternalListener\n*/\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n\n// Log system\n\nvar Bus = function () {\n /* private\n _msgId: number;\n _subscriptions: \n _responseTimeOut: number\n _responseCallbacks: void>\n */\n\n function Bus() {\n (0, _classCallCheck3.default)(this, Bus);\n\n var _this = this;\n _this._msgId = 0;\n _this._subscriptions = {};\n\n _this._responseTimeOut = 15000; //default to 3s\n _this._responseCallbacks = {};\n\n _this._registerExternalListener();\n }\n\n /**\n * Register listener to receive message when \"msg.to === url\".\n * Special url \"*\" for default listener is accepted to intercept all messages.\n * @param {URL} url Address to intercept, tha is in the message \"to\"\n * @param {Listener} listener listener\n * @return {MsgListener} instance of MsgListener\n */\n\n\n (0, _createClass3.default)(Bus, [{\n key: 'addListener',\n value: function addListener(url, listener) {\n var _this = this;\n\n var item = new MsgListener(_this._subscriptions, url, listener);\n var itemList = _this._subscriptions[url];\n if (!itemList) {\n itemList = [];\n _this._subscriptions[url] = itemList;\n }\n\n itemList.push(item);\n return item;\n }\n\n /**\n * Manually add a response listener. Only one listener per message ID should exist.\n * ATENTION, there is no timeout for this listener.\n * The listener should be removed with a removeResponseListener, failing to do this will result in a unreleased memory problem.\n * @param {URL} url Origin address of the message sent, \"msg.from\".\n * @param {number} msgId Message ID that is returned from the postMessage.\n * @param {Function} responseListener Callback function for the response\n */\n\n }, {\n key: 'addResponseListener',\n value: function addResponseListener(url, msgId, responseListener) {\n this._responseCallbacks[url + msgId] = responseListener;\n }\n\n /**\n * Remove the response listener.\n * @param {URL} url Origin address of the message sent, \"msg.from\".\n * @param {number} msgId Message ID that is returned from the postMessage\n */\n\n }, {\n key: 'removeResponseListener',\n value: function removeResponseListener(url, msgId) {\n delete this._responseCallbacks[url + msgId];\n }\n\n /**\n * Remove all existent listeners for the URL\n * @param {URL} url Address registered\n */\n\n }, {\n key: 'removeAllListenersOf',\n value: function removeAllListenersOf(url) {\n delete this._subscriptions[url];\n }\n\n /**\n * Helper method to bind listeners (in both directions) into other MiniBus target.\n * @param {URL} outUrl Outbound URL, register listener for url in direction \"this -> target\"\n * @param {URL} inUrl Inbound URL, register listener for url in direction \"target -> this\"\n * @param {MiniBus} target The other target MiniBus\n * @return {Bound} an object that contains the properties [thisListener, targetListener] and the unbind method.\n */\n\n }, {\n key: 'bind',\n value: function bind(outUrl, inUrl, target) {\n var _this2 = this;\n\n var _this = this;\n\n var thisListn = _this.addListener(outUrl, function (msg) {\n target.postMessage(msg);\n });\n\n var targetListn = target.addListener(inUrl, function (msg) {\n _this.postMessage(msg);\n });\n\n return {\n thisListener: thisListn,\n targetListener: targetListn,\n unbind: function unbind() {\n _this2.thisListener.remove();\n _this2.targetListener.remove();\n }\n };\n }\n\n //publish on default listeners\n\n }, {\n key: '_publishOnDefault',\n value: function _publishOnDefault(msg) {\n //is there any \"*\" (default) listeners?\n var itemList = this._subscriptions['*'];\n if (itemList) {\n this._publishOn(itemList, msg);\n }\n }\n\n //publish on a subscription list.\n\n }, {\n key: '_publishOn',\n value: function _publishOn(itemList, msg) {\n itemList.forEach(function (sub) {\n sub._callback(msg);\n });\n }\n }, {\n key: '_responseCallback',\n value: function _responseCallback(inMsg, responseCallback) {\n var timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n var _this = this;\n\n //automatic management of response handlers\n if (responseCallback) {\n var responseId = inMsg.from + inMsg.id;\n _this._responseCallbacks[responseId] = responseCallback;\n\n if (timeout) {\n setTimeout(function () {\n var responseFun = _this._responseCallbacks[responseId];\n delete _this._responseCallbacks[responseId];\n\n if (responseFun) {\n var errorMsg = {\n id: inMsg.id, type: 'response',\n body: { code: 408, desc: 'Response timeout!', value: inMsg }\n };\n\n responseFun(errorMsg);\n }\n }, _this._responseTimeOut);\n }\n }\n }\n\n //TODO: provisional responses should reset timeout\n\n }, {\n key: '_onResponse',\n value: function _onResponse(msg) {\n var _this = this;\n\n if (msg.type === 'response') {\n var responseId = msg.to + msg.id;\n var responseFun = _this._responseCallbacks[responseId];\n\n if (msg.body.code >= 200) {\n //if it's a provisional response, don't delete response listener\n delete _this._responseCallbacks[responseId];\n }\n\n if (responseFun) {\n responseFun(msg);\n return true;\n }\n }\n\n return false;\n }\n\n //receive messages from external interface\n\n }, {\n key: '_onMessage',\n value: function _onMessage(msg) {\n var _this = this;\n\n if (!_this._onResponse(msg)) {\n var itemList = _this._subscriptions[msg.to];\n if (itemList) {\n _this._publishOn(itemList, msg);\n } else {\n _this._publishOnDefault(msg);\n }\n }\n }\n }, {\n key: '_genId',\n value: function _genId(inMsg) {\n //TODO: how do we manage message ID's? Should it be a global runtime counter, or per URL address?\n //Global counter will not work, because there will be multiple MiniBus instances!\n //Per URL, can be a lot of data to maintain!\n //Maybe a counter per MiniBus instance. This is the assumed solution for now.\n if (!inMsg.id || inMsg.id === 0) {\n this._msgId++;\n inMsg.id = this._msgId;\n }\n }\n\n /**\n * Send messages to local listeners, or if not exists to external listeners.\n * It's has an optional mechanism for automatic management of response handlers.\n * The response handler will be unregistered after receiving the response, or after response timeout (default to 3s).\n * @param {Message} msg Message to send. Message ID is automatically added to the message.\n * @param {Function} responseCallback Optional parameter, if the developer what's automatic response management.\n * @return {number} Returns the message ID, in case it should be needed for manual management of the response handler.\n */\n\n }, {\n key: 'postMessage',\n value: function postMessage(inMsg, responseCallback) {}\n\n /**\n * Function to post messages with a number of retries in case timeouts occur.\n * @param {Message} msg Message to send. Message ID is automatically added to the message.\n * @param {Function} responseCallback Optional parameter, if the developer what's automatic response management.\n * @param {integer} retries number of retries when timeouts occur\n * @return {boolean} message delivery result;\n */\n\n }, {\n key: 'postMessageWithRetries',\n value: function postMessageWithRetries(msg, retries, callback) {\n\n var _this = this;\n\n var retry = 0;\n //let timeout = true;\n\n var sendMsg = function sendMsg() {\n\n return new _promise2.default(function (resolve, reject) {\n _this.postMessage(msg, function (reply) {\n if (reply.body.code === 408 || reply.body.code === 500) reject();else {\n log.info('[Bus.postMessageWithRetries] msg delivered: ', msg);\n callback(reply);\n resolve();\n }\n });\n });\n };\n\n var tryAgain = function tryAgain() {\n sendMsg().then(function () {\n //timeout = false;\n return;\n }, function () {\n log.warn('[Bus.postMessageWithRetries] Message Bounced (retry ' + retry + '): \\'', msg);\n if (retry++ < retries) {\n tryAgain();\n // setTimeout(() => { tryAgain(); }, 1000);\n } else {\n var error = '[Error] Message Bounced (delivery attempts ' + retries + '): \\'';\n throw new Error(error + msg);\n }\n });\n };\n tryAgain();\n }\n\n /**\n * Not public available, used by the class extension implementation, to process messages from the public \"postMessage\" without a registered listener.\n * Used to send the message to an external interface, like a WebWorker, IFrame, etc.\n * @param {Message.Message} msg Message\n */\n\n }, {\n key: '_onPostMessage',\n value: function _onPostMessage(msg) {} /*implementation will send message to external system*/\n\n /**\n * Not public available, used by the class extension implementation, to process all messages that enter the MiniBus from an external interface, like a WebWorker, IFrame, etc.\n * This method is called one time in the constructor to register external listeners.\n * The implementation will probably call the \"_onMessage\" method to publish in the local listeners.\n * DO NOT call \"postMessage\", there is a danger that the message enters in a cycle!\n */\n\n }, {\n key: '_registerExternalListener',\n value: function _registerExternalListener() {/*implementation will register external listener and call \"this._onMessage(msg)\" */}\n }]);\n return Bus;\n}();\n\nvar MsgListener = function () {\n /* private\n _subscriptions: ;\n _url: string;\n _callback: (msg) => void;\n */\n\n function MsgListener(subscriptions, url, callback) {\n (0, _classCallCheck3.default)(this, MsgListener);\n\n var _this = this;\n\n _this._subscriptions = subscriptions;\n _this._url = url;\n _this._callback = callback;\n }\n\n (0, _createClass3.default)(MsgListener, [{\n key: 'remove',\n\n\n /**\n * Remove this listener from the Bus\n */\n value: function remove() {\n var _this = this;\n\n var subs = _this._subscriptions[_this._url];\n if (subs) {\n var index = subs.indexOf(_this);\n subs.splice(index, 1);\n\n //if there are no listeners, remove the subscription entirely.\n if (subs.length === 0) {\n delete _this._subscriptions[_this._url];\n }\n }\n }\n }, {\n key: 'url',\n get: function get() {\n return this._url;\n }\n }]);\n return MsgListener;\n}();\n\nexports.default = Bus;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9idXMvQnVzLmpzPzZkMTciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXG4qXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4qXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4qXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbioqL1xuXG4vLyBMb2cgc3lzdGVtXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnbG9nbGV2ZWwnO1xubGV0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0J1cycpO1xuXG4vKipcbiogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxuKiBNaW5pbWFsIGludGVyZmFjZSBhbmQgaW1wbGVtZW50YXRpb24gdG8gc2VuZCBhbmQgcmVjZWl2ZSBtZXNzYWdlcy4gSXQgY2FuIGJlIHJldXNlZCBpbiBtYW55IHR5cGUgb2YgY29tcG9uZW50cy5cbiogQ29tcG9uZW50cyB0aGF0IG5lZWQgYSBtZXNzYWdlIHN5c3RlbSBzaG91bGQgcmVjZWl2ZSB0aGlzIGNsYXNzIGFzIGEgZGVwZW5kZW5jeSBvciBleHRlbmQgaXQuXG4qIEV4dGVuc2lvbnMgc2hvdWxkIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIHByaXZhdGUgbWV0aG9kczogX29uUG9zdE1lc3NhZ2UgYW5kIF9yZWdpc3RlckV4dGVybmFsTGlzdGVuZXJcbiovXG5jbGFzcyBCdXMge1xuICAvKiBwcml2YXRlXG4gIF9tc2dJZDogbnVtYmVyO1xuICBfc3Vic2NyaXB0aW9uczogPHVybDogTXNnTGlzdGVuZXJbXT5cblxuICBfcmVzcG9uc2VUaW1lT3V0OiBudW1iZXJcbiAgX3Jlc3BvbnNlQ2FsbGJhY2tzOiA8dXJsK2lkOiAobXNnKSA9PiB2b2lkPlxuXG4gICovXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBfdGhpcy5fbXNnSWQgPSAwO1xuICAgIF90aGlzLl9zdWJzY3JpcHRpb25zID0ge307XG5cbiAgICBfdGhpcy5fcmVzcG9uc2VUaW1lT3V0ID0gMTUwMDA7IC8vZGVmYXVsdCB0byAzc1xuICAgIF90aGlzLl9yZXNwb25zZUNhbGxiYWNrcyA9IHt9O1xuXG4gICAgX3RoaXMuX3JlZ2lzdGVyRXh0ZXJuYWxMaXN0ZW5lcigpO1xuICB9XG5cbiAgLyoqXG4gICogUmVnaXN0ZXIgbGlzdGVuZXIgdG8gcmVjZWl2ZSBtZXNzYWdlIHdoZW4gXCJtc2cudG8gPT09IHVybFwiLlxuICAqIFNwZWNpYWwgdXJsIFwiKlwiIGZvciBkZWZhdWx0IGxpc3RlbmVyIGlzIGFjY2VwdGVkIHRvIGludGVyY2VwdCBhbGwgbWVzc2FnZXMuXG4gICogQHBhcmFtIHtVUkx9IHVybCBBZGRyZXNzIHRvIGludGVyY2VwdCwgdGhhIGlzIGluIHRoZSBtZXNzYWdlIFwidG9cIlxuICAqIEBwYXJhbSB7TGlzdGVuZXJ9IGxpc3RlbmVyIGxpc3RlbmVyXG4gICogQHJldHVybiB7TXNnTGlzdGVuZXJ9IGluc3RhbmNlIG9mIE1zZ0xpc3RlbmVyXG4gICovXG4gIGFkZExpc3RlbmVyKHVybCwgbGlzdGVuZXIpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IGl0ZW0gPSBuZXcgTXNnTGlzdGVuZXIoX3RoaXMuX3N1YnNjcmlwdGlvbnMsIHVybCwgbGlzdGVuZXIpO1xuICAgIGxldCBpdGVtTGlzdCA9IF90aGlzLl9zdWJzY3JpcHRpb25zW3VybF07XG4gICAgaWYgKCFpdGVtTGlzdCkge1xuICAgICAgaXRlbUxpc3QgPSBbXTtcbiAgICAgIF90aGlzLl9zdWJzY3JpcHRpb25zW3VybF0gPSBpdGVtTGlzdDtcbiAgICB9XG5cbiAgICBpdGVtTGlzdC5wdXNoKGl0ZW0pO1xuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IGFkZCBhIHJlc3BvbnNlIGxpc3RlbmVyLiBPbmx5IG9uZSBsaXN0ZW5lciBwZXIgbWVzc2FnZSBJRCBzaG91bGQgZXhpc3QuXG4gICAqIEFURU5USU9OLCB0aGVyZSBpcyBubyB0aW1lb3V0IGZvciB0aGlzIGxpc3RlbmVyLlxuICAgKiBUaGUgbGlzdGVuZXIgc2hvdWxkIGJlIHJlbW92ZWQgd2l0aCBhIHJlbW92ZVJlc3BvbnNlTGlzdGVuZXIsIGZhaWxpbmcgdG8gZG8gdGhpcyB3aWxsIHJlc3VsdCBpbiBhIHVucmVsZWFzZWQgbWVtb3J5IHByb2JsZW0uXG4gICAqIEBwYXJhbSB7VVJMfSB1cmwgT3JpZ2luIGFkZHJlc3Mgb2YgdGhlIG1lc3NhZ2Ugc2VudCwgXCJtc2cuZnJvbVwiLlxuICAgKiBAcGFyYW0ge251bWJlcn0gbXNnSWQgTWVzc2FnZSBJRCB0aGF0IGlzIHJldHVybmVkIGZyb20gdGhlIHBvc3RNZXNzYWdlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNwb25zZUxpc3RlbmVyIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgcmVzcG9uc2VcbiAgICovXG4gIGFkZFJlc3BvbnNlTGlzdGVuZXIodXJsLCBtc2dJZCwgcmVzcG9uc2VMaXN0ZW5lcikge1xuICAgIHRoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3VybCArIG1zZ0lkXSA9IHJlc3BvbnNlTGlzdGVuZXI7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSByZXNwb25zZSBsaXN0ZW5lci5cbiAgICogQHBhcmFtIHtVUkx9IHVybCBPcmlnaW4gYWRkcmVzcyBvZiB0aGUgbWVzc2FnZSBzZW50LCBcIm1zZy5mcm9tXCIuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtc2dJZCAgTWVzc2FnZSBJRCB0aGF0IGlzIHJldHVybmVkIGZyb20gdGhlIHBvc3RNZXNzYWdlXG4gICAqL1xuICByZW1vdmVSZXNwb25zZUxpc3RlbmVyKHVybCwgbXNnSWQpIHtcbiAgICBkZWxldGUgdGhpcy5fcmVzcG9uc2VDYWxsYmFja3NbdXJsICsgbXNnSWRdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgZXhpc3RlbnQgbGlzdGVuZXJzIGZvciB0aGUgVVJMXG4gICAqIEBwYXJhbSAge1VSTH0gdXJsIEFkZHJlc3MgcmVnaXN0ZXJlZFxuICAgKi9cbiAgcmVtb3ZlQWxsTGlzdGVuZXJzT2YodXJsKSB7XG4gICAgZGVsZXRlIHRoaXMuX3N1YnNjcmlwdGlvbnNbdXJsXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGJpbmQgbGlzdGVuZXJzIChpbiBib3RoIGRpcmVjdGlvbnMpIGludG8gb3RoZXIgTWluaUJ1cyB0YXJnZXQuXG4gICAqIEBwYXJhbSAge1VSTH0gb3V0VXJsIE91dGJvdW5kIFVSTCwgcmVnaXN0ZXIgbGlzdGVuZXIgZm9yIHVybCBpbiBkaXJlY3Rpb24gXCJ0aGlzIC0+IHRhcmdldFwiXG4gICAqIEBwYXJhbSAge1VSTH0gaW5VcmwgSW5ib3VuZCBVUkwsIHJlZ2lzdGVyIGxpc3RlbmVyIGZvciB1cmwgaW4gZGlyZWN0aW9uIFwidGFyZ2V0IC0+IHRoaXNcIlxuICAgKiBAcGFyYW0gIHtNaW5pQnVzfSB0YXJnZXQgVGhlIG90aGVyIHRhcmdldCBNaW5pQnVzXG4gICAqIEByZXR1cm4ge0JvdW5kfSBhbiBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgcHJvcGVydGllcyBbdGhpc0xpc3RlbmVyLCB0YXJnZXRMaXN0ZW5lcl0gYW5kIHRoZSB1bmJpbmQgbWV0aG9kLlxuICAgKi9cbiAgYmluZChvdXRVcmwsIGluVXJsLCB0YXJnZXQpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IHRoaXNMaXN0biA9IF90aGlzLmFkZExpc3RlbmVyKG91dFVybCwgKG1zZykgPT4ge1xuICAgICAgdGFyZ2V0LnBvc3RNZXNzYWdlKG1zZyk7XG4gICAgfSk7XG5cbiAgICBsZXQgdGFyZ2V0TGlzdG4gPSB0YXJnZXQuYWRkTGlzdGVuZXIoaW5VcmwsIChtc2cpID0+IHtcbiAgICAgIF90aGlzLnBvc3RNZXNzYWdlKG1zZyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGhpc0xpc3RlbmVyOiB0aGlzTGlzdG4sXG4gICAgICB0YXJnZXRMaXN0ZW5lcjogdGFyZ2V0TGlzdG4sXG4gICAgICB1bmJpbmQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy50aGlzTGlzdGVuZXIucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMudGFyZ2V0TGlzdGVuZXIucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vcHVibGlzaCBvbiBkZWZhdWx0IGxpc3RlbmVyc1xuICBfcHVibGlzaE9uRGVmYXVsdChtc2cpIHtcbiAgICAvL2lzIHRoZXJlIGFueSBcIipcIiAoZGVmYXVsdCkgbGlzdGVuZXJzP1xuICAgIGxldCBpdGVtTGlzdCA9IHRoaXMuX3N1YnNjcmlwdGlvbnNbJyonXTtcbiAgICBpZiAoaXRlbUxpc3QpIHtcbiAgICAgIHRoaXMuX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKTtcbiAgICB9XG4gIH1cblxuICAvL3B1Ymxpc2ggb24gYSBzdWJzY3JpcHRpb24gbGlzdC5cbiAgX3B1Ymxpc2hPbihpdGVtTGlzdCwgbXNnKSB7XG4gICAgaXRlbUxpc3QuZm9yRWFjaCgoc3ViKSA9PiB7XG4gICAgICBzdWIuX2NhbGxiYWNrKG1zZyk7XG4gICAgfSk7XG4gIH1cblxuICBfcmVzcG9uc2VDYWxsYmFjayhpbk1zZywgcmVzcG9uc2VDYWxsYmFjaywgdGltZW91dCA9IHRydWUpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgLy9hdXRvbWF0aWMgbWFuYWdlbWVudCBvZiByZXNwb25zZSBoYW5kbGVyc1xuICAgIGlmIChyZXNwb25zZUNhbGxiYWNrKSB7XG4gICAgICBsZXQgcmVzcG9uc2VJZCA9IGluTXNnLmZyb20gKyBpbk1zZy5pZDtcbiAgICAgIF90aGlzLl9yZXNwb25zZUNhbGxiYWNrc1tyZXNwb25zZUlkXSA9IHJlc3BvbnNlQ2FsbGJhY2s7XG5cbiAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGxldCByZXNwb25zZUZ1biA9IF90aGlzLl9yZXNwb25zZUNhbGxiYWNrc1tyZXNwb25zZUlkXTtcbiAgICAgICAgICBkZWxldGUgX3RoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3Jlc3BvbnNlSWRdO1xuXG4gICAgICAgICAgaWYgKHJlc3BvbnNlRnVuKSB7XG4gICAgICAgICAgICBsZXQgZXJyb3JNc2cgPSB7XG4gICAgICAgICAgICAgIGlkOiBpbk1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJyxcbiAgICAgICAgICAgICAgYm9keTogeyBjb2RlOiA0MDgsIGRlc2M6ICdSZXNwb25zZSB0aW1lb3V0IScsIHZhbHVlOiBpbk1zZyB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXNwb25zZUZ1bihlcnJvck1zZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfdGhpcy5fcmVzcG9uc2VUaW1lT3V0KTtcbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4vL1RPRE86IHByb3Zpc2lvbmFsIHJlc3BvbnNlcyBzaG91bGQgcmVzZXQgdGltZW91dFxuICBfb25SZXNwb25zZShtc2cpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKG1zZy50eXBlID09PSAncmVzcG9uc2UnKSB7XG4gICAgICBsZXQgcmVzcG9uc2VJZCA9IG1zZy50byArIG1zZy5pZDtcbiAgICAgIGxldCByZXNwb25zZUZ1biA9IF90aGlzLl9yZXNwb25zZUNhbGxiYWNrc1tyZXNwb25zZUlkXTtcblxuICAgICAgaWYgKG1zZy5ib2R5LmNvZGUgPj0gMjAwKSB7IC8vaWYgaXQncyBhIHByb3Zpc2lvbmFsIHJlc3BvbnNlLCBkb24ndCBkZWxldGUgcmVzcG9uc2UgbGlzdGVuZXJcbiAgICAgICAgZGVsZXRlIF90aGlzLl9yZXNwb25zZUNhbGxiYWNrc1tyZXNwb25zZUlkXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3BvbnNlRnVuKSB7XG4gICAgICAgIHJlc3BvbnNlRnVuKG1zZyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG5cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvL3JlY2VpdmUgbWVzc2FnZXMgZnJvbSBleHRlcm5hbCBpbnRlcmZhY2VcbiAgX29uTWVzc2FnZShtc2cpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKCFfdGhpcy5fb25SZXNwb25zZShtc2cpKSB7XG4gICAgICBsZXQgaXRlbUxpc3QgPSBfdGhpcy5fc3Vic2NyaXB0aW9uc1ttc2cudG9dO1xuICAgICAgaWYgKGl0ZW1MaXN0KSB7XG4gICAgICAgIF90aGlzLl9wdWJsaXNoT24oaXRlbUxpc3QsIG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5fcHVibGlzaE9uRGVmYXVsdChtc2cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9nZW5JZChpbk1zZykge1xuICAgIC8vVE9ETzogaG93IGRvIHdlIG1hbmFnZSBtZXNzYWdlIElEJ3M/IFNob3VsZCBpdCBiZSBhIGdsb2JhbCBydW50aW1lIGNvdW50ZXIsIG9yIHBlciBVUkwgYWRkcmVzcz9cbiAgICAvL0dsb2JhbCBjb3VudGVyIHdpbGwgbm90IHdvcmssIGJlY2F1c2UgdGhlcmUgd2lsbCBiZSBtdWx0aXBsZSBNaW5pQnVzIGluc3RhbmNlcyFcbiAgICAvL1BlciBVUkwsIGNhbiBiZSBhIGxvdCBvZiBkYXRhIHRvIG1haW50YWluIVxuICAgIC8vTWF5YmUgYSBjb3VudGVyIHBlciBNaW5pQnVzIGluc3RhbmNlLiBUaGlzIGlzIHRoZSBhc3N1bWVkIHNvbHV0aW9uIGZvciBub3cuXG4gICAgaWYgKCFpbk1zZy5pZCB8fCBpbk1zZy5pZCA9PT0gMCkge1xuICAgICAgdGhpcy5fbXNnSWQrKztcbiAgICAgIGluTXNnLmlkID0gdGhpcy5fbXNnSWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICogU2VuZCBtZXNzYWdlcyB0byBsb2NhbCBsaXN0ZW5lcnMsIG9yIGlmIG5vdCBleGlzdHMgdG8gZXh0ZXJuYWwgbGlzdGVuZXJzLlxuICAqIEl0J3MgaGFzIGFuIG9wdGlvbmFsIG1lY2hhbmlzbSBmb3IgYXV0b21hdGljIG1hbmFnZW1lbnQgb2YgcmVzcG9uc2UgaGFuZGxlcnMuXG4gICogVGhlIHJlc3BvbnNlIGhhbmRsZXIgd2lsbCBiZSB1bnJlZ2lzdGVyZWQgYWZ0ZXIgcmVjZWl2aW5nIHRoZSByZXNwb25zZSwgb3IgYWZ0ZXIgcmVzcG9uc2UgdGltZW91dCAoZGVmYXVsdCB0byAzcykuXG4gICogQHBhcmFtICB7TWVzc2FnZX0gbXNnIE1lc3NhZ2UgdG8gc2VuZC4gTWVzc2FnZSBJRCBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBtZXNzYWdlLlxuICAqIEBwYXJhbSAge0Z1bmN0aW9ufSByZXNwb25zZUNhbGxiYWNrIE9wdGlvbmFsIHBhcmFtZXRlciwgaWYgdGhlIGRldmVsb3BlciB3aGF0J3MgYXV0b21hdGljIHJlc3BvbnNlIG1hbmFnZW1lbnQuXG4gICogQHJldHVybiB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZXNzYWdlIElELCBpbiBjYXNlIGl0IHNob3VsZCBiZSBuZWVkZWQgZm9yIG1hbnVhbCBtYW5hZ2VtZW50IG9mIHRoZSByZXNwb25zZSBoYW5kbGVyLlxuICAqL1xuICBwb3N0TWVzc2FnZShpbk1zZywgcmVzcG9uc2VDYWxsYmFjaykgeyB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIHBvc3QgbWVzc2FnZXMgd2l0aCBhIG51bWJlciBvZiByZXRyaWVzIGluIGNhc2UgdGltZW91dHMgb2NjdXIuXG4gICAqIEBwYXJhbSAge01lc3NhZ2V9IG1zZyBNZXNzYWdlIHRvIHNlbmQuIE1lc3NhZ2UgSUQgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgbWVzc2FnZS5cbiAgICogQHBhcmFtICB7RnVuY3Rpb259IHJlc3BvbnNlQ2FsbGJhY2sgT3B0aW9uYWwgcGFyYW1ldGVyLCBpZiB0aGUgZGV2ZWxvcGVyIHdoYXQncyBhdXRvbWF0aWMgcmVzcG9uc2UgbWFuYWdlbWVudC5cbiAgICogQHBhcmFtICB7aW50ZWdlcn0gcmV0cmllcyBudW1iZXIgb2YgcmV0cmllcyB3aGVuIHRpbWVvdXRzIG9jY3VyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IG1lc3NhZ2UgZGVsaXZlcnkgcmVzdWx0O1xuICAgKi9cblxuXG4gIHBvc3RNZXNzYWdlV2l0aFJldHJpZXMobXNnLCByZXRyaWVzLCBjYWxsYmFjaykge1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGxldCByZXRyeSA9IDA7XG4gICAgLy9sZXQgdGltZW91dCA9IHRydWU7XG5cbiAgICBsZXQgc2VuZE1zZyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBfdGhpcy5wb3N0TWVzc2FnZShtc2csIChyZXBseSkgPT4ge1xuICAgICAgICAgIGlmIChyZXBseS5ib2R5LmNvZGUgPT09IDQwOCB8fCByZXBseS5ib2R5LmNvZGUgPT09IDUwMCkgcmVqZWN0KCk7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsb2cuaW5mbygnW0J1cy5wb3N0TWVzc2FnZVdpdGhSZXRyaWVzXSBtc2cgZGVsaXZlcmVkOiAnLCBtc2cpO1xuICAgICAgICAgICAgY2FsbGJhY2socmVwbHkpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgbGV0IHRyeUFnYWluID0gKCkgPT4ge1xuICAgICAgc2VuZE1zZygpLnRoZW4oKCk9PntcbiAgICAgICAgLy90aW1lb3V0ID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0sICgpPT57XG4gICAgICAgIGxvZy53YXJuKGBbQnVzLnBvc3RNZXNzYWdlV2l0aFJldHJpZXNdIE1lc3NhZ2UgQm91bmNlZCAocmV0cnkgJHtyZXRyeX0pOiAnYCwgbXNnKTtcbiAgICAgICAgaWYgKHJldHJ5KysgPCByZXRyaWVzKSB7XG4gICAgICAgICAgdHJ5QWdhaW4oKTtcbiAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHsgdHJ5QWdhaW4oKTsgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBgW0Vycm9yXSBNZXNzYWdlIEJvdW5jZWQgKGRlbGl2ZXJ5IGF0dGVtcHRzICR7cmV0cmllc30pOiAnYDtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IgKyBtc2cpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHRyeUFnYWluKCk7XG4gIH1cblxuICAvKipcbiAgICogTm90IHB1YmxpYyBhdmFpbGFibGUsIHVzZWQgYnkgdGhlIGNsYXNzIGV4dGVuc2lvbiBpbXBsZW1lbnRhdGlvbiwgdG8gcHJvY2VzcyBtZXNzYWdlcyBmcm9tIHRoZSBwdWJsaWMgXCJwb3N0TWVzc2FnZVwiIHdpdGhvdXQgYSByZWdpc3RlcmVkIGxpc3RlbmVyLlxuICAgKiBVc2VkIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG8gYW4gZXh0ZXJuYWwgaW50ZXJmYWNlLCBsaWtlIGEgV2ViV29ya2VyLCBJRnJhbWUsIGV0Yy5cbiAgICogQHBhcmFtICB7TWVzc2FnZS5NZXNzYWdlfSBtc2cgTWVzc2FnZVxuICAgKi9cbiAgX29uUG9zdE1lc3NhZ2UobXNnKSB7IC8qaW1wbGVtZW50YXRpb24gd2lsbCBzZW5kIG1lc3NhZ2UgdG8gZXh0ZXJuYWwgc3lzdGVtKi8gfVxuXG4gIC8qKlxuICAgKiBOb3QgcHVibGljIGF2YWlsYWJsZSwgdXNlZCBieSB0aGUgY2xhc3MgZXh0ZW5zaW9uIGltcGxlbWVudGF0aW9uLCB0byBwcm9jZXNzIGFsbCBtZXNzYWdlcyB0aGF0IGVudGVyIHRoZSBNaW5pQnVzIGZyb20gYW4gZXh0ZXJuYWwgaW50ZXJmYWNlLCBsaWtlIGEgV2ViV29ya2VyLCBJRnJhbWUsIGV0Yy5cbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uZSB0aW1lIGluIHRoZSBjb25zdHJ1Y3RvciB0byByZWdpc3RlciBleHRlcm5hbCBsaXN0ZW5lcnMuXG4gICAqIFRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIHByb2JhYmx5IGNhbGwgdGhlIFwiX29uTWVzc2FnZVwiIG1ldGhvZCB0byBwdWJsaXNoIGluIHRoZSBsb2NhbCBsaXN0ZW5lcnMuXG4gICAqIERPIE5PVCBjYWxsIFwicG9zdE1lc3NhZ2VcIiwgdGhlcmUgaXMgYSBkYW5nZXIgdGhhdCB0aGUgbWVzc2FnZSBlbnRlcnMgaW4gYSBjeWNsZSFcbiAgICovXG4gIF9yZWdpc3RlckV4dGVybmFsTGlzdGVuZXIoKSB7IC8qaW1wbGVtZW50YXRpb24gd2lsbCByZWdpc3RlciBleHRlcm5hbCBsaXN0ZW5lciBhbmQgY2FsbCBcInRoaXMuX29uTWVzc2FnZShtc2cpXCIgKi8gfVxuXG59XG5cbmNsYXNzIE1zZ0xpc3RlbmVyIHtcbiAgLyogcHJpdmF0ZVxuICBfc3Vic2NyaXB0aW9uczogPHN0cmluZzogTXNnTGlzdGVuZXJbXT47XG4gIF91cmw6IHN0cmluZztcbiAgX2NhbGxiYWNrOiAobXNnKSA9PiB2b2lkO1xuICAqL1xuXG4gIGNvbnN0cnVjdG9yKHN1YnNjcmlwdGlvbnMsIHVybCwgY2FsbGJhY2spIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgX3RoaXMuX3N1YnNjcmlwdGlvbnMgPSBzdWJzY3JpcHRpb25zO1xuICAgIF90aGlzLl91cmwgPSB1cmw7XG4gICAgX3RoaXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7XG4gIH1cblxuICBnZXQgdXJsKCkgeyByZXR1cm4gdGhpcy5fdXJsOyB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGlzIGxpc3RlbmVyIGZyb20gdGhlIEJ1c1xuICAgKi9cbiAgcmVtb3ZlKCkge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgc3VicyA9IF90aGlzLl9zdWJzY3JpcHRpb25zW190aGlzLl91cmxdO1xuICAgIGlmIChzdWJzKSB7XG4gICAgICBsZXQgaW5kZXggPSBzdWJzLmluZGV4T2YoX3RoaXMpO1xuICAgICAgc3Vicy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAvL2lmIHRoZXJlIGFyZSBubyBsaXN0ZW5lcnMsIHJlbW92ZSB0aGUgc3Vic2NyaXB0aW9uIGVudGlyZWx5LlxuICAgICAgaWYgKHN1YnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGRlbGV0ZSBfdGhpcy5fc3Vic2NyaXB0aW9uc1tfdGhpcy5fdXJsXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQnVzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9idXMvQnVzLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkE7QUFDQTtBQURBO0FBQ0E7Ozs7O0FBQUE7QUFDQTtBQUNBOzs7Ozs7QUEzQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBO0FBQ0E7QUFTQTtBQUNBOzs7Ozs7O0FBU0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQU9BO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVFBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBS0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFNQTs7Ozs7QUFJQTtBQUNBOzs7Ozs7QUFNQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFHQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBbEJBO0FBQUE7QUFBQTs7Ozs7QUFxQkE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///117\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\n/**\n * @author micaelpedrosa@gmail.com\n * Base class to implement internal deploy manager of components.\n */\n\n/**\n * @author micaelpedrosa@gmail.com\n * Internal component registry of all sandboxes.\n * Process internal request's for component deploy.\n */\nvar SandboxRegistry = function () {\n /* private\n _components: \n */\n\n function SandboxRegistry(bus) {\n (0, _classCallCheck3.default)(this, SandboxRegistry);\n\n var _this = this;\n\n _this._bus = bus;\n _this._components = {};\n\n bus.addListener(SandboxRegistry.InternalDeployAddress, function (msg) {\n //console.log('SandboxRegistry-RCV: ', msg);\n // let responseMsg = {\n // id: msg.id, type: 'response', from: SandboxRegistry.InternalDeployAddress, to: SandboxRegistry.ExternalDeployAddress\n // };\n\n switch (msg.type) {\n case 'create':\n _this._onDeploy(msg);break;\n case 'delete':\n _this._onRemove(msg);break;\n }\n });\n }\n\n (0, _createClass3.default)(SandboxRegistry, [{\n key: '_responseMsg',\n value: function _responseMsg(msg, code, value) {\n\n var _this = this;\n\n // let messageFactory = _this.messageFactory;\n\n //FLOW-OUT: generic response message to external Sandbox (deploy and un-deploy responses)\n var responseMsg = {\n id: msg.id, type: 'response', from: SandboxRegistry.InternalDeployAddress, to: SandboxRegistry.ExternalDeployAddress\n };\n\n // Chanege the origin message, because the response;\n // msg.from = SandboxRegistry.InternalDeployAddress;\n // msg.to = SandboxRegistry.ExternalDeployAddress;\n\n var body = {};\n if (code) body.code = code;\n if (value) body.desc = value;\n\n responseMsg.body = body;\n\n // return messageFactory.createResponse(msg, code, value);\n return responseMsg;\n }\n\n //FLOW-IN: message from the runtime core Sandbox -> deployComponent\n\n }, {\n key: '_onDeploy',\n value: function _onDeploy(msg) {\n var _this = this;\n var config = msg.body.config;\n var componentURL = msg.body.url;\n var sourceCode = msg.body.sourceCode;\n var responseCode = void 0;\n var responseDesc = void 0;\n\n if (!_this._components.hasOwnProperty(componentURL)) {\n try {\n _this._components[componentURL] = _this._create(componentURL, sourceCode, config);\n responseCode = 200;\n } catch (error) {\n responseCode = 500;\n responseDesc = error;\n }\n } else {\n responseCode = 500;\n responseDesc = 'Instance ' + componentURL + ' already exist!';\n }\n\n var responseMsg = _this._responseMsg(msg, responseCode, responseDesc);\n _this._bus.postMessage(responseMsg);\n }\n\n //FLOW-IN: message from the runtime core Sandbox -> removeComponent\n\n }, {\n key: '_onRemove',\n value: function _onRemove(msg) {\n var _this = this;\n var componentURL = msg.body.url;\n var responseCode = void 0;\n var responseDesc = void 0;\n\n if (_this._components.hasOwnProperty(componentURL)) {\n //remove component from the pool and all listeners\n delete _this._components[componentURL];\n _this._bus.removeAllListenersOf(componentURL);\n responseCode = 200;\n } else {\n responseCode = 500;\n responseDesc = 'Instance ' + componentURL + ' doesn\\'t exist!';\n }\n\n var responseMsg = _this._responseMsg(msg, responseCode, responseDesc);\n\n _this._bus.postMessage(responseMsg);\n }\n\n /**\n * This method should be implemented by the internal sandbox code.\n * @param {ComponentURL} url URL used for the instance\n * @param {string} sourceCode Code of the component\n * @param {Config} config Configuration parameters\n * @return {Object} Returns instance of the component or throw an error \"throw 'error message'\"\n */\n\n }, {\n key: '_create',\n value: function _create(url, sourceCode, config) {\n //implementation specific\n /* example code:\n eval(sourceCode);\n return activate(url, _this._bus, config);\n */\n }\n }, {\n key: 'components',\n get: function get() {\n return this._components;\n }\n }]);\n return SandboxRegistry;\n}();\n\nSandboxRegistry.ExternalDeployAddress = 'hyperty-runtime://sandbox/external';\nSandboxRegistry.InternalDeployAddress = 'hyperty-runtime://sandbox/internal';\n\nexports.default = SandboxRegistry;\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zYW5kYm94L1NhbmRib3hSZWdpc3RyeS5qcz9lZTFjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBDb3B5cmlnaHQgMjAxNiBQVCBJbm92YcOnw6NvIGUgU2lzdGVtYXMgU0FcbiogQ29weXJpZ2h0IDIwMTYgSU5FU0MtSURcbiogQ29weXJpZ2h0IDIwMTYgUVVPQklTIE5FVFdPUktTIFNMXG4qIENvcHlyaWdodCAyMDE2IEZSQVVOSE9GRVItR0VTRUxMU0NIQUZUIFpVUiBGT0VSREVSVU5HIERFUiBBTkdFV0FORFRFTiBGT1JTQ0hVTkcgRS5WXG4qIENvcHlyaWdodCAyMDE2IE9SQU5HRSBTQVxuKiBDb3B5cmlnaHQgMjAxNiBEZXV0c2NoZSBUZWxla29tIEFHXG4qIENvcHlyaWdodCAyMDE2IEFwaXplZVxuKiBDb3B5cmlnaHQgMjAxNiBURUNITklTQ0hFIFVOSVZFUlNJVEFUIEJFUkxJTlxuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKi9cbi8qKlxuICogQGF1dGhvciBtaWNhZWxwZWRyb3NhQGdtYWlsLmNvbVxuICogQmFzZSBjbGFzcyB0byBpbXBsZW1lbnQgaW50ZXJuYWwgZGVwbG95IG1hbmFnZXIgb2YgY29tcG9uZW50cy5cbiAqL1xuXG4vKipcbiAqIEBhdXRob3IgbWljYWVscGVkcm9zYUBnbWFpbC5jb21cbiAqIEludGVybmFsIGNvbXBvbmVudCByZWdpc3RyeSBvZiBhbGwgc2FuZGJveGVzLlxuICogUHJvY2VzcyBpbnRlcm5hbCByZXF1ZXN0J3MgZm9yIGNvbXBvbmVudCBkZXBsb3kuXG4gKi9cbmNsYXNzIFNhbmRib3hSZWdpc3RyeSB7XG4gIC8qIHByaXZhdGVcbiAgX2NvbXBvbmVudHM6IDx1cmw6IGluc3RhbmNlPlxuICAqL1xuXG4gIGNvbnN0cnVjdG9yKGJ1cykge1xuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBfdGhpcy5fYnVzID0gYnVzO1xuICAgIF90aGlzLl9jb21wb25lbnRzID0ge307XG5cbiAgICBidXMuYWRkTGlzdGVuZXIoU2FuZGJveFJlZ2lzdHJ5LkludGVybmFsRGVwbG95QWRkcmVzcywgKG1zZykgPT4ge1xuICAgICAgLy9jb25zb2xlLmxvZygnU2FuZGJveFJlZ2lzdHJ5LVJDVjogJywgbXNnKTtcbiAgICAgIC8vIGxldCByZXNwb25zZU1zZyA9IHtcbiAgICAgIC8vICAgaWQ6IG1zZy5pZCwgdHlwZTogJ3Jlc3BvbnNlJywgZnJvbTogU2FuZGJveFJlZ2lzdHJ5LkludGVybmFsRGVwbG95QWRkcmVzcywgdG86IFNhbmRib3hSZWdpc3RyeS5FeHRlcm5hbERlcGxveUFkZHJlc3NcbiAgICAgIC8vIH07XG5cbiAgICAgIHN3aXRjaCAobXNnLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnY3JlYXRlJzogX3RoaXMuX29uRGVwbG95KG1zZyk7IGJyZWFrO1xuICAgICAgICBjYXNlICdkZWxldGUnOiBfdGhpcy5fb25SZW1vdmUobXNnKTsgYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXQgY29tcG9uZW50cygpIHsgcmV0dXJuIHRoaXMuX2NvbXBvbmVudHM7IH1cblxuICBfcmVzcG9uc2VNc2cobXNnLCBjb2RlLCB2YWx1ZSkge1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIC8vIGxldCBtZXNzYWdlRmFjdG9yeSA9IF90aGlzLm1lc3NhZ2VGYWN0b3J5O1xuXG4gICAgLy9GTE9XLU9VVDogZ2VuZXJpYyByZXNwb25zZSBtZXNzYWdlIHRvIGV4dGVybmFsIFNhbmRib3ggKGRlcGxveSBhbmQgdW4tZGVwbG95IHJlc3BvbnNlcylcbiAgICBsZXQgcmVzcG9uc2VNc2cgPSB7XG4gICAgICBpZDogbXNnLmlkLCB0eXBlOiAncmVzcG9uc2UnLCBmcm9tOiBTYW5kYm94UmVnaXN0cnkuSW50ZXJuYWxEZXBsb3lBZGRyZXNzLCB0bzogU2FuZGJveFJlZ2lzdHJ5LkV4dGVybmFsRGVwbG95QWRkcmVzc1xuICAgIH07XG5cbiAgICAvLyBDaGFuZWdlIHRoZSBvcmlnaW4gbWVzc2FnZSwgYmVjYXVzZSB0aGUgcmVzcG9uc2U7XG4gICAgLy8gbXNnLmZyb20gPSBTYW5kYm94UmVnaXN0cnkuSW50ZXJuYWxEZXBsb3lBZGRyZXNzO1xuICAgIC8vIG1zZy50byA9IFNhbmRib3hSZWdpc3RyeS5FeHRlcm5hbERlcGxveUFkZHJlc3M7XG5cbiAgICBsZXQgYm9keSA9IHt9O1xuICAgIGlmIChjb2RlKSBib2R5LmNvZGUgPSBjb2RlO1xuICAgIGlmICh2YWx1ZSkgYm9keS5kZXNjID0gdmFsdWU7XG5cbiAgICByZXNwb25zZU1zZy5ib2R5ID0gYm9keTtcblxuICAgIC8vIHJldHVybiBtZXNzYWdlRmFjdG9yeS5jcmVhdGVSZXNwb25zZShtc2csIGNvZGUsIHZhbHVlKTtcbiAgICByZXR1cm4gcmVzcG9uc2VNc2c7XG4gIH1cblxuICAvL0ZMT1ctSU46IG1lc3NhZ2UgZnJvbSB0aGUgcnVudGltZSBjb3JlIFNhbmRib3ggLT4gZGVwbG95Q29tcG9uZW50XG4gIF9vbkRlcGxveShtc2cpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuICAgIGxldCBjb25maWcgPSBtc2cuYm9keS5jb25maWc7XG4gICAgbGV0IGNvbXBvbmVudFVSTCA9IG1zZy5ib2R5LnVybDtcbiAgICBsZXQgc291cmNlQ29kZSA9IG1zZy5ib2R5LnNvdXJjZUNvZGU7XG4gICAgbGV0IHJlc3BvbnNlQ29kZTtcbiAgICBsZXQgcmVzcG9uc2VEZXNjO1xuXG4gICAgaWYgKCFfdGhpcy5fY29tcG9uZW50cy5oYXNPd25Qcm9wZXJ0eShjb21wb25lbnRVUkwpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBfdGhpcy5fY29tcG9uZW50c1tjb21wb25lbnRVUkxdID0gX3RoaXMuX2NyZWF0ZShjb21wb25lbnRVUkwsIHNvdXJjZUNvZGUsIGNvbmZpZyk7XG4gICAgICAgIHJlc3BvbnNlQ29kZSA9IDIwMDtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlc3BvbnNlQ29kZSA9IDUwMDtcbiAgICAgICAgcmVzcG9uc2VEZXNjID0gZXJyb3I7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3BvbnNlQ29kZSA9IDUwMDtcbiAgICAgIHJlc3BvbnNlRGVzYyA9ICdJbnN0YW5jZSAnICsgY29tcG9uZW50VVJMICsgJyBhbHJlYWR5IGV4aXN0ISc7XG4gICAgfVxuXG4gICAgbGV0IHJlc3BvbnNlTXNnID0gX3RoaXMuX3Jlc3BvbnNlTXNnKG1zZywgcmVzcG9uc2VDb2RlLCByZXNwb25zZURlc2MpO1xuICAgIF90aGlzLl9idXMucG9zdE1lc3NhZ2UocmVzcG9uc2VNc2cpO1xuICB9XG5cbiAgLy9GTE9XLUlOOiBtZXNzYWdlIGZyb20gdGhlIHJ1bnRpbWUgY29yZSBTYW5kYm94IC0+IHJlbW92ZUNvbXBvbmVudFxuICBfb25SZW1vdmUobXNnKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcbiAgICBsZXQgY29tcG9uZW50VVJMID0gbXNnLmJvZHkudXJsO1xuICAgIGxldCByZXNwb25zZUNvZGU7XG4gICAgbGV0IHJlc3BvbnNlRGVzYztcblxuICAgIGlmIChfdGhpcy5fY29tcG9uZW50cy5oYXNPd25Qcm9wZXJ0eShjb21wb25lbnRVUkwpKSB7XG4gICAgICAvL3JlbW92ZSBjb21wb25lbnQgZnJvbSB0aGUgcG9vbCBhbmQgYWxsIGxpc3RlbmVyc1xuICAgICAgZGVsZXRlIF90aGlzLl9jb21wb25lbnRzW2NvbXBvbmVudFVSTF07XG4gICAgICBfdGhpcy5fYnVzLnJlbW92ZUFsbExpc3RlbmVyc09mKGNvbXBvbmVudFVSTCk7XG4gICAgICByZXNwb25zZUNvZGUgPSAyMDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3BvbnNlQ29kZSA9IDUwMDtcbiAgICAgIHJlc3BvbnNlRGVzYyA9ICdJbnN0YW5jZSAnICsgY29tcG9uZW50VVJMICsgJyBkb2VzblxcJ3QgZXhpc3QhJztcbiAgICB9XG5cbiAgICBsZXQgcmVzcG9uc2VNc2cgPSBfdGhpcy5fcmVzcG9uc2VNc2cobXNnLCByZXNwb25zZUNvZGUsIHJlc3BvbnNlRGVzYyk7XG5cbiAgICBfdGhpcy5fYnVzLnBvc3RNZXNzYWdlKHJlc3BvbnNlTXNnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgdGhlIGludGVybmFsIHNhbmRib3ggY29kZS5cbiAgICogQHBhcmFtICB7Q29tcG9uZW50VVJMfSB1cmwgVVJMIHVzZWQgZm9yIHRoZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IHNvdXJjZUNvZGUgQ29kZSBvZiB0aGUgY29tcG9uZW50XG4gICAqIEBwYXJhbSAge0NvbmZpZ30gY29uZmlnIENvbmZpZ3VyYXRpb24gcGFyYW1ldGVyc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgaW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudCBvciB0aHJvdyBhbiBlcnJvciBcInRocm93ICdlcnJvciBtZXNzYWdlJ1wiXG4gICAqL1xuICBfY3JlYXRlKHVybCwgc291cmNlQ29kZSwgY29uZmlnKSB7XG4gICAgLy9pbXBsZW1lbnRhdGlvbiBzcGVjaWZpY1xuICAgIC8qIGV4YW1wbGUgY29kZTpcbiAgICAgIGV2YWwoc291cmNlQ29kZSk7XG4gICAgICByZXR1cm4gYWN0aXZhdGUodXJsLCBfdGhpcy5fYnVzLCBjb25maWcpO1xuICAgICovXG4gIH1cbn1cblxuU2FuZGJveFJlZ2lzdHJ5LkV4dGVybmFsRGVwbG95QWRkcmVzcyA9ICdoeXBlcnR5LXJ1bnRpbWU6Ly9zYW5kYm94L2V4dGVybmFsJztcblNhbmRib3hSZWdpc3RyeS5JbnRlcm5hbERlcGxveUFkZHJlc3MgPSAnaHlwZXJ0eS1ydW50aW1lOi8vc2FuZGJveC9pbnRlcm5hbCc7XG5cbmV4cG9ydCBkZWZhdWx0IFNhbmRib3hSZWdpc3RyeTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvc2FuZGJveC9TYW5kYm94UmVnaXN0cnkuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTs7Ozs7QUFLQTs7Ozs7QUFLQTtBQUNBOzs7O0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFGQTtBQUlBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBOzs7O0FBSUE7OztBQXhGQTtBQUFBO0FBQUE7Ozs7O0FBMkZBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///118\n")},,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\nexports.SandboxRegistry = exports.SandboxType = exports.Sandbox = undefined;\n\nvar _Sandbox = __webpack_require__(135);\n\nvar _Sandbox2 = _interopRequireDefault(_Sandbox);\n\nvar _SandboxRegistry = __webpack_require__(118);\n\nvar _SandboxRegistry2 = _interopRequireDefault(_SandboxRegistry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Sandbox = _Sandbox2.default;\nexports.SandboxType = _Sandbox.SandboxType;\nexports.SandboxRegistry = _SandboxRegistry2.default; /**\n * Copyright 2016 PT Inovação e Sistemas SA\n * Copyright 2016 INESC-ID\n * Copyright 2016 QUOBIS NETWORKS SL\n * Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n * Copyright 2016 ORANGE SA\n * Copyright 2016 Deutsche Telekom AG\n * Copyright 2016 Apizee\n * Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **///# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zYW5kYm94LmpzP2JlYTEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4qIENvcHlyaWdodCAyMDE2IFBUIElub3Zhw6fDo28gZSBTaXN0ZW1hcyBTQVxuKiBDb3B5cmlnaHQgMjAxNiBJTkVTQy1JRFxuKiBDb3B5cmlnaHQgMjAxNiBRVU9CSVMgTkVUV09SS1MgU0xcbiogQ29weXJpZ2h0IDIwMTYgRlJBVU5IT0ZFUi1HRVNFTExTQ0hBRlQgWlVSIEZPRVJERVJVTkcgREVSIEFOR0VXQU5EVEVOIEZPUlNDSFVORyBFLlZcbiogQ29weXJpZ2h0IDIwMTYgT1JBTkdFIFNBXG4qIENvcHlyaWdodCAyMDE2IERldXRzY2hlIFRlbGVrb20gQUdcbiogQ29weXJpZ2h0IDIwMTYgQXBpemVlXG4qIENvcHlyaWdodCAyMDE2IFRFQ0hOSVNDSEUgVU5JVkVSU0lUQVQgQkVSTElOXG4qXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4qXG4qICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4qXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbioqL1xuaW1wb3J0IFNhbmRib3ggZnJvbSAnLi9zYW5kYm94L1NhbmRib3gnO1xuaW1wb3J0IHtTYW5kYm94VHlwZX0gZnJvbSAnLi9zYW5kYm94L1NhbmRib3gnO1xuaW1wb3J0IFNhbmRib3hSZWdpc3RyeSBmcm9tICcuL3NhbmRib3gvU2FuZGJveFJlZ2lzdHJ5JztcblxuZXhwb3J0IHtTYW5kYm94LCBTYW5kYm94VHlwZSwgU2FuZGJveFJlZ2lzdHJ5fTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvc2FuZGJveC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQXNCQTtBQUNBOzs7QUFDQTtBQUNBOzs7OztBQUNBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///134\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SandboxType = undefined;\n\nvar _keys = __webpack_require__(108);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = __webpack_require__(41);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _getPrototypeOf = __webpack_require__(63);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(11);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(12);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(64);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(65);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SandboxRegistry = __webpack_require__(118);\n\nvar _SandboxRegistry2 = _interopRequireDefault(_SandboxRegistry);\n\nvar _MiniBus2 = __webpack_require__(116);\n\nvar _MiniBus3 = _interopRequireDefault(_MiniBus2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Copyright 2016 PT Inovação e Sistemas SA\n* Copyright 2016 INESC-ID\n* Copyright 2016 QUOBIS NETWORKS SL\n* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V\n* Copyright 2016 ORANGE SA\n* Copyright 2016 Deutsche Telekom AG\n* Copyright 2016 Apizee\n* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n**/\nvar SandboxType = exports.SandboxType = { APP: 'app', NORMAL: 'normal', WINDOW: 'window' };\n\n/**\n * @author micaelpedrosa@gmail.com\n * Base class to implement external sandbox component\n */\n\nvar Sandbox = function (_MiniBus) {\n (0, _inherits3.default)(Sandbox, _MiniBus);\n\n function Sandbox(capabilities) {\n (0, _classCallCheck3.default)(this, Sandbox);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (Sandbox.__proto__ || (0, _getPrototypeOf2.default)(Sandbox)).call(this));\n\n var _this = _this2;\n\n if (capabilities) {\n _this.capabilities = capabilities;\n }\n\n return _this2;\n }\n\n /**\n * Deploy an instance of the component into the sandbox.\n * @param {string} componentSourceCode Component source code (Hyperty, ProtoStub, etc)\n * @param {URL} componentURL Hyperty, ProtoStub, or any other component address.\n * @param {Config} configuration Config parameters of the component\n * @return {Promise} return deployed if successful, or any other string with an error\n */\n\n\n (0, _createClass3.default)(Sandbox, [{\n key: 'deployComponent',\n value: function deployComponent(componentSourceCode, componentURL, configuration) {\n\n var _this = this;\n\n // let messageFactory = _this.messageFactory;\n\n return new _promise2.default(function (resolve, reject) {\n //FLOW-OUT: deploy message for the internal SandboxRegistry -> _onDeploy\n var deployMessage = {\n type: 'create', from: _SandboxRegistry2.default.ExternalDeployAddress, to: _SandboxRegistry2.default.InternalDeployAddress,\n body: { url: componentURL, sourceCode: componentSourceCode, config: configuration }\n };\n\n //send message into the sandbox internals and wait for reply\n _this.postMessage(deployMessage, function (reply) {\n if (reply.body.code === 200) {\n //is this response complaint with the spec?\n resolve('deployed');\n } else {\n reject(reply.body.desc);\n }\n });\n });\n }\n\n /**\n * Remove the instance of a previously deployed component.\n * @param {URL} componentURL Hyperty, ProtoStub, or any other component address.\n * @return {Promise} return undeployed if successful, or any other string with an error\n */\n\n }, {\n key: 'removeComponent',\n value: function removeComponent(componentURL) {\n var _this = this;\n\n return new _promise2.default(function (resolve, reject) {\n //FLOW-OUT: un-deploy message for the internal SandboxRegistry -> _onRemove\n var removeMessage = {\n type: 'delete', from: _SandboxRegistry2.default.ExternalDeployAddress, to: _SandboxRegistry2.default.InternalDeployAddress,\n body: { url: componentURL }\n };\n\n //send message into the sandbox internals and wait for reply\n _this.postMessage(removeMessage, function (reply) {\n if (reply.body.code === 200) {\n //is this response complaint with the spec?\n resolve('undeployed');\n } else {\n reject(reply.body.desc);\n }\n });\n });\n }\n\n /**\n * Matches Sandbox capabilities against provided capabilities. Used to check if sandbox provides all required capabilities\n * @param {RuntimeCapabilities} constraints set of RuntimeCapabilities to match with.\n * @return {boolean} return true if constraints are matched false otherwise\n */\n\n }, {\n key: 'matches',\n value: function matches(constraints) {\n var _this = this;\n\n var filtered = (0, _keys2.default)(constraints).filter(function (key) {\n return !(_this.capabilities[key] && _this.capabilities[key] === constraints[key]);\n });\n\n if (filtered.length === 0) {\n return true;\n } else {\n return !constraints[filtered];\n }\n }\n }]);\n return Sandbox;\n}(_MiniBus3.default);\n\nexports.default = Sandbox;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9zYW5kYm94L1NhbmRib3guanM/MGEzMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogQ29weXJpZ2h0IDIwMTYgUFQgSW5vdmHDp8OjbyBlIFNpc3RlbWFzIFNBXG4qIENvcHlyaWdodCAyMDE2IElORVNDLUlEXG4qIENvcHlyaWdodCAyMDE2IFFVT0JJUyBORVRXT1JLUyBTTFxuKiBDb3B5cmlnaHQgMjAxNiBGUkFVTkhPRkVSLUdFU0VMTFNDSEFGVCBaVVIgRk9FUkRFUlVORyBERVIgQU5HRVdBTkRURU4gRk9SU0NIVU5HIEUuVlxuKiBDb3B5cmlnaHQgMjAxNiBPUkFOR0UgU0FcbiogQ29weXJpZ2h0IDIwMTYgRGV1dHNjaGUgVGVsZWtvbSBBR1xuKiBDb3B5cmlnaHQgMjAxNiBBcGl6ZWVcbiogQ29weXJpZ2h0IDIwMTYgVEVDSE5JU0NIRSBVTklWRVJTSVRBVCBCRVJMSU5cbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKiovXG5pbXBvcnQgU2FuZGJveFJlZ2lzdHJ5IGZyb20gJy4uL3NhbmRib3gvU2FuZGJveFJlZ2lzdHJ5JztcbmltcG9ydCBNaW5pQnVzIGZyb20gJy4uL2J1cy9NaW5pQnVzJztcblxuZXhwb3J0IGxldCBTYW5kYm94VHlwZSA9IHtBUFA6ICdhcHAnLCBOT1JNQUw6ICdub3JtYWwnLCBXSU5ET1c6ICd3aW5kb3cnfTtcblxuLyoqXG4gKiBAYXV0aG9yIG1pY2FlbHBlZHJvc2FAZ21haWwuY29tXG4gKiBCYXNlIGNsYXNzIHRvIGltcGxlbWVudCBleHRlcm5hbCBzYW5kYm94IGNvbXBvbmVudFxuICovXG5jbGFzcyBTYW5kYm94IGV4dGVuZHMgTWluaUJ1cyB7XG5cbiAgY29uc3RydWN0b3IoY2FwYWJpbGl0aWVzKSB7XG5cbiAgICBzdXBlcigpO1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIGlmIChjYXBhYmlsaXRpZXMpICAgICAgeyBfdGhpcy5jYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXRpZXM7IH1cblxuICB9XG5cbiAgLyoqXG4gICAqIERlcGxveSBhbiBpbnN0YW5jZSBvZiB0aGUgY29tcG9uZW50IGludG8gdGhlIHNhbmRib3guXG4gICAqIEBwYXJhbSAge3N0cmluZ30gY29tcG9uZW50U291cmNlQ29kZSBDb21wb25lbnQgc291cmNlIGNvZGUgKEh5cGVydHksIFByb3RvU3R1YiwgZXRjKVxuICAgKiBAcGFyYW0gIHtVUkx9IGNvbXBvbmVudFVSTCBIeXBlcnR5LCBQcm90b1N0dWIsIG9yIGFueSBvdGhlciBjb21wb25lbnQgYWRkcmVzcy5cbiAgICogQHBhcmFtICB7Q29uZmlnfSBjb25maWd1cmF0aW9uIENvbmZpZyBwYXJhbWV0ZXJzIG9mIHRoZSBjb21wb25lbnRcbiAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSByZXR1cm4gZGVwbG95ZWQgaWYgc3VjY2Vzc2Z1bCwgb3IgYW55IG90aGVyIHN0cmluZyB3aXRoIGFuIGVycm9yXG4gICAqL1xuICBkZXBsb3lDb21wb25lbnQoY29tcG9uZW50U291cmNlQ29kZSwgY29tcG9uZW50VVJMLCBjb25maWd1cmF0aW9uKSB7XG5cbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgLy8gbGV0IG1lc3NhZ2VGYWN0b3J5ID0gX3RoaXMubWVzc2FnZUZhY3Rvcnk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgLy9GTE9XLU9VVDogZGVwbG95IG1lc3NhZ2UgZm9yIHRoZSBpbnRlcm5hbCBTYW5kYm94UmVnaXN0cnkgLT4gX29uRGVwbG95XG4gICAgICBsZXQgZGVwbG95TWVzc2FnZSA9IHtcbiAgICAgICAgdHlwZTogJ2NyZWF0ZScsIGZyb206IFNhbmRib3hSZWdpc3RyeS5FeHRlcm5hbERlcGxveUFkZHJlc3MsIHRvOiBTYW5kYm94UmVnaXN0cnkuSW50ZXJuYWxEZXBsb3lBZGRyZXNzLFxuICAgICAgICBib2R5OiB7IHVybDogY29tcG9uZW50VVJMLCBzb3VyY2VDb2RlOiBjb21wb25lbnRTb3VyY2VDb2RlLCBjb25maWc6IGNvbmZpZ3VyYXRpb24gfVxuICAgICAgfTtcblxuICAgICAgLy9zZW5kIG1lc3NhZ2UgaW50byB0aGUgc2FuZGJveCBpbnRlcm5hbHMgYW5kIHdhaXQgZm9yIHJlcGx5XG4gICAgICBfdGhpcy5wb3N0TWVzc2FnZShkZXBsb3lNZXNzYWdlLCAocmVwbHkpID0+IHtcbiAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgLy9pcyB0aGlzIHJlc3BvbnNlIGNvbXBsYWludCB3aXRoIHRoZSBzcGVjP1xuICAgICAgICAgIHJlc29sdmUoJ2RlcGxveWVkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KHJlcGx5LmJvZHkuZGVzYyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgaW5zdGFuY2Ugb2YgYSBwcmV2aW91c2x5IGRlcGxveWVkIGNvbXBvbmVudC5cbiAgICogQHBhcmFtICB7VVJMfSBjb21wb25lbnRVUkwgSHlwZXJ0eSwgUHJvdG9TdHViLCBvciBhbnkgb3RoZXIgY29tcG9uZW50IGFkZHJlc3MuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gcmV0dXJuIHVuZGVwbG95ZWQgaWYgc3VjY2Vzc2Z1bCwgb3IgYW55IG90aGVyIHN0cmluZyB3aXRoIGFuIGVycm9yXG4gICAqL1xuICByZW1vdmVDb21wb25lbnQoY29tcG9uZW50VVJMKSB7XG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvL0ZMT1ctT1VUOiB1bi1kZXBsb3kgbWVzc2FnZSBmb3IgdGhlIGludGVybmFsIFNhbmRib3hSZWdpc3RyeSAtPiBfb25SZW1vdmVcbiAgICAgIGxldCByZW1vdmVNZXNzYWdlID0ge1xuICAgICAgICB0eXBlOiAnZGVsZXRlJywgZnJvbTogU2FuZGJveFJlZ2lzdHJ5LkV4dGVybmFsRGVwbG95QWRkcmVzcywgdG86IFNhbmRib3hSZWdpc3RyeS5JbnRlcm5hbERlcGxveUFkZHJlc3MsXG4gICAgICAgIGJvZHk6IHsgdXJsOiBjb21wb25lbnRVUkwgfVxuICAgICAgfTtcblxuICAgICAgLy9zZW5kIG1lc3NhZ2UgaW50byB0aGUgc2FuZGJveCBpbnRlcm5hbHMgYW5kIHdhaXQgZm9yIHJlcGx5XG4gICAgICBfdGhpcy5wb3N0TWVzc2FnZShyZW1vdmVNZXNzYWdlLCAocmVwbHkpID0+IHtcbiAgICAgICAgaWYgKHJlcGx5LmJvZHkuY29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgLy9pcyB0aGlzIHJlc3BvbnNlIGNvbXBsYWludCB3aXRoIHRoZSBzcGVjP1xuICAgICAgICAgIHJlc29sdmUoJ3VuZGVwbG95ZWQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QocmVwbHkuYm9keS5kZXNjKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBNYXRjaGVzIFNhbmRib3ggY2FwYWJpbGl0aWVzIGFnYWluc3QgcHJvdmlkZWQgY2FwYWJpbGl0aWVzLiBVc2VkIHRvIGNoZWNrIGlmIHNhbmRib3ggcHJvdmlkZXMgYWxsIHJlcXVpcmVkIGNhcGFiaWxpdGllc1xuICAqIEBwYXJhbSAge1J1bnRpbWVDYXBhYmlsaXRpZXN9IGNvbnN0cmFpbnRzIHNldCBvZiBSdW50aW1lQ2FwYWJpbGl0aWVzIHRvIG1hdGNoIHdpdGguXG4gICogQHJldHVybiB7Ym9vbGVhbn0gcmV0dXJuIHRydWUgaWYgY29uc3RyYWludHMgYXJlIG1hdGNoZWQgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuXG4gIG1hdGNoZXMoY29uc3RyYWludHMpIHtcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgbGV0IGZpbHRlcmVkID0gT2JqZWN0LmtleXMoY29uc3RyYWludHMpLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICByZXR1cm4gIShfdGhpcy5jYXBhYmlsaXRpZXNba2V5XSAmJiBfdGhpcy5jYXBhYmlsaXRpZXNba2V5XSA9PT0gY29uc3RyYWludHNba2V5XSk7XG4gICAgfSk7XG5cbiAgICBpZiAoZmlsdGVyZWQubGVuZ3RoID09PSAwKSAgICAgIHsgcmV0dXJuIHRydWU7IH0gICAgZWxzZSAgICAgIHsgcmV0dXJuICEoY29uc3RyYWludHNbZmlsdGVyZWRdKTsgfVxuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2FuZGJveDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvc2FuZGJveC9TYW5kYm94LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTtBQUNBOzs7QUFBQTtBQUNBOzs7OztBQXhCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlCQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7OztBQUVBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFQQTtBQVFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7OztBQXJGQTtBQUNBO0FBd0ZBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///135\n")}])}); \ No newline at end of file diff --git a/karma.conf.js b/karma.conf.js index 12cb80a1..4efaff48 100755 --- a/karma.conf.js +++ b/karma.conf.js @@ -3,7 +3,7 @@ module.exports = function(config) { basePath: '', frameworks: ['mocha', 'chai', 'sinon'], files: [ - './test/*.spec.js' + './test/CryptoManager.spec.js' ], exclude: [ './test/GraphConnector.spec.js', @@ -87,6 +87,6 @@ module.exports = function(config) { // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits - singleRun: true + singleRun: false }); }; diff --git a/package-lock.json b/package-lock.json index 339da6a6..75df4bf5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -258,6 +258,23 @@ "dev": true, "requires": { "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } } }, "assert-plus": { @@ -892,7 +909,7 @@ "dev": true, "requires": { "babel-runtime": "6.26.0", - "core-js": "2.5.5", + "core-js": "2.5.7", "regenerator-runtime": "0.10.5" }, "dependencies": { @@ -905,9 +922,9 @@ } }, "babel-preset-env": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", - "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", "dev": true, "requires": { "babel-plugin-check-es2015-constants": "6.22.0", @@ -937,7 +954,7 @@ "babel-plugin-transform-es2015-unicode-regex": "6.24.1", "babel-plugin-transform-exponentiation-operator": "6.24.1", "babel-plugin-transform-regenerator": "6.26.0", - "browserslist": "2.11.3", + "browserslist": "3.2.8", "invariant": "2.2.4", "semver": "5.5.0" } @@ -950,7 +967,7 @@ "requires": { "babel-core": "6.26.3", "babel-runtime": "6.26.0", - "core-js": "2.5.5", + "core-js": "2.5.7", "home-or-tmp": "2.0.0", "lodash": "4.17.10", "mkdirp": "0.5.1", @@ -963,7 +980,7 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.7", "regenerator-runtime": "0.11.1" } }, @@ -1246,9 +1263,9 @@ "dev": true }, "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", "dev": true, "requires": { "bytes": "3.0.0", @@ -1256,19 +1273,11 @@ "debug": "2.6.9", "depd": "1.1.2", "http-errors": "1.6.3", - "iconv-lite": "0.4.19", + "iconv-lite": "0.4.23", "on-finished": "2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", + "qs": "6.5.2", + "raw-body": "2.3.3", "type-is": "1.6.16" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - } } }, "boolbase": { @@ -1277,16 +1286,6 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true, - "optional": true, - "requires": { - "hoek": "4.2.1" - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1391,13 +1390,13 @@ } }, "browserslist": { - "version": "2.11.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", - "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "dev": true, "requires": { - "caniuse-lite": "1.0.30000833", - "electron-to-chromium": "1.3.45" + "caniuse-lite": "1.0.30000847", + "electron-to-chromium": "1.3.48" } }, "bs58": { @@ -1431,9 +1430,9 @@ } }, "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", + "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", "dev": true }, "buffer-xor": { @@ -1470,7 +1469,7 @@ "chownr": "1.0.1", "glob": "7.1.2", "graceful-fs": "4.1.11", - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "mississippi": "2.0.0", "mkdirp": "0.5.1", "move-concurrently": "1.0.1", @@ -1550,9 +1549,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000833", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000833.tgz", - "integrity": "sha512-tKNuKu4WLImh4NxoTgntxFpDrRiA0Q6Q1NycNhuMST0Kx+Pt8YnRDW6V8xsyH6AtO2CpAoibatEk5eaEhP3O1g==", + "version": "1.0.30000847", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000847.tgz", + "integrity": "sha512-Weo+tRtVWcN2da782Ebx/27hFNEb+KP+uP6tdqAa+2S5bp1zOJhVH9tEpDygagrfvU4QjeuPwi/5VGsgT4SLaA==", "dev": true }, "caseless": { @@ -1822,9 +1821,9 @@ "dev": true }, "colors": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.3.tgz", - "integrity": "sha512-qTfM2pNFeMZcLvf/RbrVAzDEVttZjFhaApfx9dplNjvHSX88Ui66zBRb/4YGob/xUWxDceirgoC1lT676asfCQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.0.tgz", + "integrity": "sha512-EDpX3a7wHMWFA7PUHWPHNWqOxIIRSJetuwl0AS5Oi/5FMV8kWm69RTlgm00GKjBO1xFHMtBbL49yRtMMdticBw==", "dev": true }, "combine-lists": { @@ -1890,7 +1889,7 @@ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { - "buffer-from": "1.0.0", + "buffer-from": "1.1.0", "inherits": "2.0.3", "readable-stream": "2.3.6", "typedarray": "0.0.6" @@ -1980,9 +1979,9 @@ "dev": true }, "core-js": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", - "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", "dev": true }, "core-util-is": { @@ -1992,9 +1991,9 @@ "dev": true }, "create-ecdh": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.1.tgz", - "integrity": "sha512-iZvCCg8XqHQZ1ioNBTzXS/cQSkqkqcPs8xSX4upNB+DAk9Ht3uzQf2J32uAHNCne8LDmKr29AgZrEs4oIrwLuQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, "requires": { "bn.js": "4.11.8", @@ -2029,9 +2028,9 @@ } }, "cross-env": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.1.4.tgz", - "integrity": "sha512-Mx8mw6JWhfpYoEk7PGvHxJMLQwQHORAs8+2bX+C1lGQ4h3GkDb1zbzC2Nw85YH9ZQMlO0BHZxMacgrfPmMFxbg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.1.6.tgz", + "integrity": "sha512-VWTDq+G4v383SzgRS7jsAVWqEWF0aKZpDz1GVjhONvPRgHB1LnxP2sXUVFKbykHkPSnfRKS8YdiDevWFwZmQ9g==", "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -2044,31 +2043,9 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "shebang-command": "1.2.0", - "which": "1.3.0" - } - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "dev": true, - "optional": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "dev": true, - "optional": true, - "requires": { - "hoek": "4.2.1" - } - } + "which": "1.3.1" } }, "crypto-browserify": { @@ -2079,7 +2056,7 @@ "requires": { "browserify-cipher": "1.0.1", "browserify-sign": "4.0.4", - "create-ecdh": "4.0.1", + "create-ecdh": "4.0.3", "create-hash": "1.2.0", "create-hmac": "1.1.7", "diffie-hellman": "5.0.3", @@ -2098,7 +2075,7 @@ "requires": { "inherits": "2.0.3", "source-map": "0.1.43", - "source-map-resolve": "0.5.1", + "source-map-resolve": "0.5.2", "urix": "0.1.0" }, "dependencies": { @@ -2174,7 +2151,7 @@ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.42" + "es5-ext": "0.10.45" } }, "dashdash": { @@ -2443,9 +2420,9 @@ "dev": true }, "domhandler": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", - "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, "requires": { "domelementtype": "1.3.0" @@ -2462,9 +2439,9 @@ } }, "duplexify": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", - "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", "dev": true, "requires": { "end-of-stream": "1.4.1", @@ -2500,9 +2477,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.45", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.45.tgz", - "integrity": "sha1-RYrBscXHYM6IEaFtK/vZfsMLr7g=", + "version": "1.3.48", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz", + "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=", "dev": true }, "elliptic": { @@ -2672,9 +2649,9 @@ } }, "es5-ext": { - "version": "0.10.42", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", - "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", + "version": "0.10.45", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz", + "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==", "dev": true, "requires": { "es6-iterator": "2.0.3", @@ -2689,7 +2666,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.42", + "es5-ext": "0.10.45", "es6-symbol": "3.1.1" } }, @@ -2700,7 +2677,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.42", + "es5-ext": "0.10.45", "es6-iterator": "2.0.3", "es6-set": "0.1.5", "es6-symbol": "3.1.1", @@ -2714,7 +2691,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.42", + "es5-ext": "0.10.45", "es6-iterator": "2.0.3", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" @@ -2727,7 +2704,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.42" + "es5-ext": "0.10.45" } }, "es6-weak-map": { @@ -2737,7 +2714,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.42", + "es5-ext": "0.10.45", "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } @@ -2871,7 +2848,7 @@ "imurmurhash": "0.1.4", "inquirer": "3.3.0", "is-resolvable": "1.1.0", - "js-yaml": "3.11.0", + "js-yaml": "3.12.0", "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", "lodash": "4.17.10", @@ -3003,9 +2980,9 @@ } }, "eslint-plugin-import": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.11.0.tgz", - "integrity": "sha1-Fa7qN6Z0mdhI6OmBgG1GJ7VQOBY=", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.12.0.tgz", + "integrity": "sha1-2tMXgSktZmSyUxf9BJ0uKy8CIF0=", "dev": true, "requires": { "contains-path": "0.1.0", @@ -3013,7 +2990,7 @@ "doctrine": "1.5.0", "eslint-import-resolver-node": "0.3.2", "eslint-module-utils": "2.2.0", - "has": "1.0.1", + "has": "1.0.2", "lodash": "4.17.10", "minimatch": "3.0.4", "read-pkg-up": "2.0.0", @@ -3054,14 +3031,14 @@ "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "requires": { - "acorn": "5.5.3", + "acorn": "5.6.1", "acorn-jsx": "3.0.1" }, "dependencies": { "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.1.tgz", + "integrity": "sha512-XH4o5BK5jmw9PzSGK7mNf+/xV+mPxQxGZoeC36OVsJZYV77JAG9NnI7T90hoUpI/C1TOfXWTvugRdZ9ZR3iE2Q==", "dev": true } } @@ -3116,7 +3093,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.42" + "es5-ext": "0.10.45" } }, "eventemitter3": { @@ -3215,7 +3192,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "2.2.4" } }, "express": { @@ -3266,6 +3243,24 @@ "negotiator": "0.6.1" } }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.3", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.16" + } + }, "finalhandler": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", @@ -3281,12 +3276,62 @@ "unpipe": "1.0.0" } }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.4.0" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } + } + }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", @@ -3335,7 +3380,7 @@ "dev": true, "requires": { "chardet": "0.4.2", - "iconv-lite": "0.4.21", + "iconv-lite": "0.4.23", "tmp": "0.0.33" } }, @@ -3398,14 +3443,14 @@ "dev": true }, "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { "is-number": "2.1.0", "isobject": "2.1.0", - "randomatic": "1.1.7", + "randomatic": "3.0.0", "repeat-element": "1.1.2", "repeat-string": "1.6.1" } @@ -3440,7 +3485,7 @@ "dev": true, "requires": { "commondir": "1.0.1", - "make-dir": "1.2.0", + "make-dir": "1.3.0", "pkg-dir": "2.0.0" } }, @@ -3476,9 +3521,9 @@ } }, "follow-redirects": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", - "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", + "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", "dev": true, "requires": { "debug": "3.1.0" @@ -3780,9 +3825,9 @@ } }, "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.2.tgz", + "integrity": "sha512-D5/WxwX+SrGfs/fiQn34RAoIZkCLJBDEfBWS1kmTI6G/1mtjhxTBiIiJi8EsKhwaQqKqj7lpKOi3i69tg3P+OQ==", "dev": true, "requires": { "function-bind": "1.1.1" @@ -3906,19 +3951,6 @@ "minimalistic-assert": "1.0.1" } }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "dev": true, - "optional": true, - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" - } - }, "hex64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/hex64/-/hex64-0.4.0.tgz", @@ -3936,12 +3968,6 @@ "minimalistic-crypto-utils": "1.0.1" } }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", - "dev": true - }, "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", @@ -3965,7 +3991,7 @@ "dev": true, "requires": { "domelementtype": "1.3.0", - "domhandler": "2.4.1", + "domhandler": "2.4.2", "domutils": "1.5.1", "entities": "1.1.1", "inherits": "2.0.3", @@ -3991,7 +4017,7 @@ "dev": true, "requires": { "eventemitter3": "3.1.0", - "follow-redirects": "1.4.1", + "follow-redirects": "1.5.0", "requires-port": "1.0.0" } }, @@ -4094,9 +4120,9 @@ } }, "iconv-lite": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", - "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "dev": true, "requires": { "safer-buffer": "2.1.2" @@ -4543,13 +4569,13 @@ "esprima": "2.7.3", "glob": "5.0.15", "handlebars": "4.0.11", - "js-yaml": "3.11.0", + "js-yaml": "3.12.0", "mkdirp": "0.5.1", "nopt": "3.0.6", "once": "1.4.0", "resolve": "1.1.7", "supports-color": "3.2.3", - "which": "1.3.0", + "which": "1.3.1", "wordwrap": "1.0.0" }, "dependencies": { @@ -4631,9 +4657,9 @@ "dev": true }, "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "dev": true, "requires": { "argparse": "1.0.10", @@ -4670,7 +4696,7 @@ "escodegen": "1.9.1", "nwmatcher": "1.4.4", "parse5": "1.5.1", - "request": "2.85.0", + "request": "2.87.0", "sax": "1.2.4", "symbol-tree": "3.2.2", "tough-cookie": "2.3.4", @@ -4770,12 +4796,12 @@ "dev": true, "requires": { "bluebird": "3.5.1", - "body-parser": "1.18.2", + "body-parser": "1.18.3", "chokidar": "1.7.0", - "colors": "1.2.3", + "colors": "1.3.0", "combine-lists": "1.0.1", "connect": "3.6.6", - "core-js": "2.5.5", + "core-js": "2.5.7", "di": "0.0.1", "dom-serialize": "2.2.1", "expand-braces": "0.1.2", @@ -4828,28 +4854,20 @@ "dev": true, "requires": { "fs-access": "1.0.1", - "which": "1.3.0" + "which": "1.3.1" } }, "karma-coverage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-1.1.1.tgz", - "integrity": "sha1-Wv+LOc9plNwi3kyENix2ABtjfPY=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-1.1.2.tgz", + "integrity": "sha512-eQawj4Cl3z/CjxslYy9ariU4uDh7cCNFZHNWXWRpl0pNeblY/4wHR7M7boTYXWrn9bY0z2pZmr11eKje/S/hIw==", "dev": true, "requires": { "dateformat": "1.0.12", "istanbul": "0.4.5", - "lodash": "3.10.1", + "lodash": "4.17.10", "minimatch": "3.0.4", "source-map": "0.5.7" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } } }, "karma-firefox-launcher": { @@ -4980,7 +4998,7 @@ "integrity": "sha1-SDDccUihVcfXoYbmMjOaDYD63sM=", "dev": true, "requires": { - "colors": "1.2.3" + "colors": "1.3.0" } }, "karma-webpack": { @@ -4989,7 +5007,7 @@ "integrity": "sha512-2cyII34jfrAabbI2+4Rk4j95Nazl98FvZQhgSiqKUDarT317rxfv/EdzZ60CyATN4PQxJdO5ucR5bOOXkEVrXw==", "dev": true, "requires": { - "async": "2.6.0", + "async": "2.6.1", "babel-runtime": "6.26.0", "loader-utils": "1.1.0", "lodash": "4.17.10", @@ -4998,9 +5016,9 @@ }, "dependencies": { "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", "dev": true, "requires": { "lodash": "4.17.10" @@ -5363,9 +5381,9 @@ } }, "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "dev": true, "requires": { "pseudomap": "1.0.2", @@ -5373,9 +5391,9 @@ } }, "make-dir": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", - "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dev": true, "requires": { "pify": "3.0.0" @@ -5408,6 +5426,12 @@ "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", "dev": true }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, "md5.js": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", @@ -5658,13 +5682,13 @@ "dev": true, "requires": { "concat-stream": "1.6.2", - "duplexify": "3.5.4", + "duplexify": "3.6.0", "end-of-stream": "1.4.1", "flush-write-stream": "1.0.3", "from2": "2.3.0", "parallel-transform": "1.1.0", "pump": "2.0.1", - "pumpify": "1.4.0", + "pumpify": "1.5.1", "stream-each": "1.2.2", "through2": "2.0.3" } @@ -5888,12 +5912,12 @@ "querystring-es3": "0.2.1", "readable-stream": "2.3.6", "stream-browserify": "2.0.1", - "stream-http": "2.8.1", + "stream-http": "2.8.3", "string_decoder": "1.1.1", "timers-browserify": "2.0.10", "tty-browserify": "0.0.0", "url": "0.11.0", - "util": "0.10.3", + "util": "0.10.4", "vm-browserify": "0.0.4" } }, @@ -6514,12 +6538,12 @@ } }, "pumpify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", - "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dev": true, "requires": { - "duplexify": "3.5.4", + "duplexify": "3.6.0", "inherits": "2.0.3", "pump": "2.0.1" } @@ -6539,7 +6563,7 @@ "clean-css": "4.1.11", "glob": "7.1.2", "rework": "1.0.1", - "uglify-js": "3.3.23", + "uglify-js": "3.4.0", "yargs": "8.0.2" }, "dependencies": { @@ -6595,9 +6619,9 @@ "dev": true }, "uglify-js": { - "version": "3.3.23", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.23.tgz", - "integrity": "sha512-Ks+KqLGDsYn4z+pU7JsKCzC0T3mPYl+rU+VcPZiQOazjE4Uqi4UCRY3qPMDbJi7ze37n1lDXj3biz1ik93vqvw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.0.tgz", + "integrity": "sha512-Jcf5naPkX3rVPSQpRn9Vm6Rr572I1gTtR9LnqKgXjmOgfYQ/QS0V2WRStFR53Bdj520M66aCZqt9uzYXgtGrJQ==", "dev": true, "requires": { "commander": "2.15.1", @@ -6649,9 +6673,9 @@ "dev": true }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, "querystring": { @@ -6667,43 +6691,27 @@ "dev": true }, "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", + "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "4.0.0", + "kind-of": "6.0.2", + "math-random": "1.0.1" }, "dependencies": { "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true }, "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -6733,47 +6741,15 @@ "dev": true }, "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", "dev": true, "requires": { "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", "unpipe": "1.0.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "dev": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.5.0" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - } } }, "read-pkg": { @@ -6835,9 +6811,9 @@ } }, "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", "dev": true }, "regenerator-runtime": { @@ -6888,7 +6864,7 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "1.3.3", + "regenerate": "1.4.0", "regjsgen": "0.2.0", "regjsparser": "0.1.5" } @@ -6936,9 +6912,9 @@ } }, "request": { - "version": "2.85.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", - "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", "dev": true, "optional": true, "requires": { @@ -6950,7 +6926,6 @@ "forever-agent": "0.6.1", "form-data": "2.3.2", "har-validator": "5.0.3", - "hawk": "6.0.2", "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", @@ -6958,9 +6933,8 @@ "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "2.1.0", - "qs": "6.5.1", + "qs": "6.5.2", "safe-buffer": "5.1.2", - "stringstream": "0.0.5", "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", "uuid": "3.2.1" @@ -7150,20 +7124,20 @@ "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", "dev": true, "requires": { - "ajv": "6.4.0", + "ajv": "6.5.0", "ajv-keywords": "3.2.0" }, "dependencies": { "ajv": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", - "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", + "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", "dev": true, "requires": { - "fast-deep-equal": "1.1.0", + "fast-deep-equal": "2.0.1", "fast-json-stable-stringify": "2.0.0", "json-schema-traverse": "0.3.1", - "uri-js": "3.0.2" + "uri-js": "4.2.2" } }, "ajv-keywords": { @@ -7171,6 +7145,12 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true } } }, @@ -7363,7 +7343,7 @@ "extend-shallow": "2.0.1", "map-cache": "0.2.2", "source-map": "0.5.7", - "source-map-resolve": "0.5.1", + "source-map-resolve": "0.5.2", "use": "3.1.0" }, "dependencies": { @@ -7459,16 +7439,6 @@ "kind-of": "3.2.2" } }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "dev": true, - "optional": true, - "requires": { - "hoek": "4.2.1" - } - }, "socket.io": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", @@ -7624,9 +7594,9 @@ "dev": true }, "source-map-resolve": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", - "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "dev": true, "requires": { "atob": "2.1.1", @@ -7772,9 +7742,9 @@ } }, "stream-http": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz", - "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "dev": true, "requires": { "builtin-status-codes": "3.0.0", @@ -7826,13 +7796,6 @@ "safe-buffer": "5.1.2" } }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true, - "optional": true - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -8321,24 +8284,24 @@ } }, "upath": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.5.tgz", - "integrity": "sha512-qbKn90aDQ0YEwvXoLqj0oiuUYroLX2lVHZ+b+xwjozFasAOC4GneDq5+OaIG5Zj+jFmbz/uO+f7a9qxjktJQww==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", "dev": true }, "uri-js": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz", - "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "dev": true, "requires": { - "punycode": "2.1.0" + "punycode": "2.1.1" }, "dependencies": { "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true } } @@ -8390,25 +8353,17 @@ "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", "dev": true, "requires": { - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "tmp": "0.0.33" } }, "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", "dev": true, "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } + "inherits": "2.0.3" } }, "util-deprecate": { @@ -8560,7 +8515,7 @@ "normalize-path": "2.1.1", "path-is-absolute": "1.0.1", "readdirp": "2.1.0", - "upath": "1.0.5" + "upath": "1.1.0" } }, "expand-brackets": { @@ -8842,16 +8797,16 @@ "optional": true }, "webpack": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.11.0.tgz", - "integrity": "sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz", + "integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==", "dev": true, "requires": { - "acorn": "5.5.3", + "acorn": "5.6.1", "acorn-dynamic-import": "2.0.2", - "ajv": "6.4.0", + "ajv": "6.5.0", "ajv-keywords": "3.2.0", - "async": "2.6.0", + "async": "2.6.1", "enhanced-resolve": "3.4.1", "escope": "3.6.0", "interpret": "1.1.0", @@ -8872,21 +8827,21 @@ }, "dependencies": { "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.1.tgz", + "integrity": "sha512-XH4o5BK5jmw9PzSGK7mNf+/xV+mPxQxGZoeC36OVsJZYV77JAG9NnI7T90hoUpI/C1TOfXWTvugRdZ9ZR3iE2Q==", "dev": true }, "ajv": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", - "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", + "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", "dev": true, "requires": { - "fast-deep-equal": "1.1.0", + "fast-deep-equal": "2.0.1", "fast-json-stable-stringify": "2.0.0", "json-schema-traverse": "0.3.1", - "uri-js": "3.0.2" + "uri-js": "4.2.2" } }, "ajv-keywords": { @@ -8896,9 +8851,9 @@ "dev": true }, "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", "dev": true, "requires": { "lodash": "4.17.10" @@ -8934,6 +8889,12 @@ } } }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", @@ -9018,7 +8979,7 @@ "dev": true, "requires": { "babel-core": "6.26.3", - "colors": "1.2.3", + "colors": "1.3.0", "express": "4.16.3", "opener": "1.4.3", "purify-css": "1.2.6" @@ -9053,9 +9014,9 @@ } }, "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "2.0.0" diff --git a/run.sh b/run.sh index cbcf7c30..355097df 100755 --- a/run.sh +++ b/run.sh @@ -1,2 +1,4 @@ npm run build:dev cp ./dist/Runtime.js ../dev-hyperty-toolkit/resources +cp ./dist/Runtime.js ../dev-runtime-nodejs/node_modules/runtime-core/dist + diff --git a/src/cryptoManager/Crypto.js b/src/cryptoManager/Crypto.js index bf592f6b..7bfeb226 100755 --- a/src/cryptoManager/Crypto.js +++ b/src/cryptoManager/Crypto.js @@ -101,7 +101,6 @@ class Crypto { return new Promise(function(resolve, reject) { _this._importRSAsignKey(privKey).then(function(privateKey) { - _this._crypto.subtle.sign( { name: 'RSASSA-PKCS1-v1_5' @@ -119,7 +118,7 @@ class Crypto { reject(err); }); - }); + }).catch(err => { console.log(err); }); }); } diff --git a/src/cryptoManager/CryptoManager.js b/src/cryptoManager/CryptoManager.js index eaddd42b..7637d1e7 100755 --- a/src/cryptoManager/CryptoManager.js +++ b/src/cryptoManager/CryptoManager.js @@ -1,9 +1,12 @@ // Log System import * as logger from 'loglevel'; let log = logger.getLogger('CryptoManager'); +import HandShakeProtocol from './HandShakeProtocol'; import {divideURL, isDataObjectURL, isLegacy, chatkeysToStringCloner, chatkeysToArrayCloner, parseMessageURL, - parse, stringify, encode, decode, decodeToUint8Array, parseToUint8Array} from '../utils/utils.js'; + parse, stringify, encode, decodeToUint8Array, filterMessageToHash} from '../utils/utils.js'; +import MessageEncryptionHandling from './MessageEncryptionHandling.js'; + import Crypto from './Crypto'; /** @@ -20,8 +23,7 @@ class CryptoManager { * The init() must called in order to set mandatories attributes */ - constructor(storageManager) { - this.storageManager = storageManager; + constructor() { this.userDefaultKeyRef = 'userAsymmetricKey'; } @@ -42,14 +44,13 @@ class CryptoManager { _this._runtimeFactory = runtimeFactory; _this._domain = divideURL(_this._runtimeURL).domain; - - _this.crypto = new Crypto(_this._runtimeFactory); - - // hashTable to store all the crypto information between two hyperties _this.chatKeys = {}; + _this._idm = idm; - // hashTable to store the symmetric keys to be used in the chat group _this.dataObjectSessionKeys = {}; + _this.crypto = new Crypto(_this._runtimeFactory); + _this.handShakeProtocol = new HandShakeProtocol(_this.chatKeys, _this.crypto, _this._idm, + _this.dataObjectSessionKeys, _this.storageManager); //failsafe to enable/disable all the criptographic functions _this.isToUseEncryption = true; @@ -57,8 +58,8 @@ class CryptoManager { _this._registry = registry; _this._coreDiscovery = coreDiscovery; - _this._idm = idm; - + _this._messageEncryptionHandling = new MessageEncryptionHandling(_this._registry, + _this.chatKeys, _this.crypto, _this.storageManager, _this.dataObjectsStorage, _this._idm); } //******************* GET AND SET METHODS ******************* @@ -262,16 +263,12 @@ class CryptoManager { return new Promise(function(resolve, reject) { - let isHandShakeType = message.type === 'handshake'; - //if is not to apply encryption, then returns resolve if (!_this._isToEncrypt(message)) { - // log.log('decryption disabled'); return resolve(message); } let dataObjectURL = parseMessageURL(message.to); - let isToDataObject = isDataObjectURL(dataObjectURL); let isToLegacyIdentity = isLegacy(message.to); let isFromHyperty = divideURL(message.from).type === 'hyperty'; @@ -282,123 +279,34 @@ class CryptoManager { return resolve(message); } + //------------> Needs tests! if (isToLegacyIdentity) { resolve(message); - } else if (isFromHyperty && isToHyperty) { - let userURL = _this._registry.getHypertyOwner(message.from); - if (userURL) { - - // check if exists any keys between two users - let chatKeys = _this.chatKeys[message.from + '<->' + message.to]; - if (!chatKeys) { - chatKeys = _this._newChatCrypto(message, userURL); - - //log.log('createChatKey encrypt', message.from + message.to); - _this.chatKeys[message.from + '<->' + message.to] = chatKeys; - message.body.handshakePhase = 'startHandShake'; - } - if (chatKeys.authenticated && !isHandShakeType) { - - let iv = _this.crypto.generateIV(); - _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, stringify(message.body.value), iv).then(encryptedValue => { - - let filteredMessage = _this._filterMessageToHash(message, stringify(message.body.value) + - stringify(iv), chatKeys.hypertyFrom.messageInfo); - - _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage).then(hash => { - //log.log('result of hash ', hash); - let value = {iv: encode(iv), value: encode(encryptedValue), hash: encode(hash)}; - message.body.value = encode(value); - - resolve(message); - }); - }); - - // if is a handshake message, just resolve it - } else if (isHandShakeType) { - resolve(message); - - // else, starts a new handshake protocol + } else if (isFromHyperty && isToHyperty) { + _this._messageEncryptionHandling.encryptBetweenHyperties(message).then(result => { + if (!result.isHandShakeNeeded) { + resolve(result.message); } else { - _this._doHandShakePhase(message, chatKeys).then(function(value) { + _this._doHandShakePhase(result.message, result.chatKeys).then(function(value) { _this.chatKeys[message.from + '<->' + message.to] = value.chatKeys; _this._messageBus.postMessage(value.message); reject('encrypt handshake protocol phase '); }); } - } else { - reject('In encryptMessage: Hyperty owner URL was not found'); - } + }); //if from hyperty to a dataObjectURL } else if (isFromHyperty && isToDataObject) { - - //log.log('dataObject value to encrypt: ', message.body.value); - //log.log('IdentityModule - encrypt from hyperty to dataobject ', message); - - _this.storageManager.get('dataObjectSessionKeys').then((sessionKeys) => { - sessionKeys = chatkeysToArrayCloner(sessionKeys || {}); - let dataObjectKey = sessionKeys ? sessionKeys[dataObjectURL] : null; - - _this.dataObjectsStorage.getDataObject(dataObjectURL).then((isHypertyReporter) => { - //if no key exists, create a new one if is the reporter of dataObject - if (!dataObjectKey) { - // if the hyperty is the reporter of the dataObject then generates a session key - if (isHypertyReporter.reporter && isHypertyReporter.reporter === message.from) { - - let sessionKey = _this.crypto.generateRandom(); - _this.dataObjectSessionKeys[dataObjectURL] = {sessionKey: sessionKey, isToEncrypt: true}; - let dataObjectSessionKeysClone = chatkeysToStringCloner(_this.dataObjectSessionKeys); - - //TODO: check if this does not need to be stored - _this.storageManager.set('dataObjectSessionKeys', 0, dataObjectSessionKeysClone).catch(err => { - reject('On encryptMessage from method storageManager.set error: ' + err); - }); - dataObjectKey = _this.dataObjectSessionKeys[dataObjectURL]; - } - } - - //check if there is already a session key for the chat room - if (dataObjectKey) { - - // and if is to apply encryption, encrypt the messages - if (dataObjectKey.isToEncrypt) { - let iv = _this.crypto.generateIV(); - let stringifiedIV = stringify(iv); - let stringifiedMessageBody = stringify(message.body.value); - - _this.crypto.encryptAES(dataObjectKey.sessionKey, stringifiedMessageBody, iv).then(encryptedValue => { - delete message.body.identity.assertion; //TODO: Check why assertion is comming on the message! - delete message.body.identity.expires; //TODO: Check why expires is comming on the message! - let filteredMessage = _this._filterMessageToHash(message, stringifiedMessageBody + stringifiedIV); - - _this.crypto.hashHMAC(dataObjectKey.sessionKey, filteredMessage).then(hash => { - // log.log('hash ', hash); - - let newValue = {value: encode(encryptedValue), iv: encode(iv), hash: encode(hash)}; - - message.body.value = stringify(newValue); - resolve(message); - }); - }); - - // if not, just send the message - } else { - resolve(message); - } - - // start the generation of a new session Key - } else { - reject('Data object key could not be defined: Failed to decrypt message '); - } - }).catch(err => { reject('On encryptMessage from method dataObjectsStorage.getDataObject error: ' + err); }); - }).catch(err => { reject('On encryptMessage from method storageManager.get error: ' + err); }); + _this._messageEncryptionHandling.encryptBetweenHypertyDataObject(message).then(result =>{ + resolve(result); + }).catch(err => { reject('On encryptMessage from method _messageEncryptionHandling error: ' + err); }); } }); } + encryptDataObject(dataObject, sender) { let _this = this; @@ -445,8 +353,6 @@ class CryptoManager { // log.log('decryptMessage:message', message); return new Promise(function(resolve, reject) { - let isHandShakeType = message.type === 'handshake'; - _this._isToDecrypt(message).then((isToDecrypt) => { //if is not to apply encryption, then returns resolve @@ -464,37 +370,12 @@ class CryptoManager { //is is hyperty to hyperty communication if (isFromHyperty && isToHyperty) { - // log.log('decrypt hyperty to hyperty'); - let userURL = _this._registry.getHypertyOwner(message.to); - if (userURL) { - - let chatKeys = _this.chatKeys[message.to + '<->' + message.from]; - if (!chatKeys) { - chatKeys = _this._newChatCrypto(message, userURL, 'decrypt'); - _this.chatKeys[message.to + '<->' + message.from] = chatKeys; - } - - if (chatKeys.authenticated && !isHandShakeType) { - let value = decode(message.body.value); - let iv = decodeToUint8Array(value.iv); - let data = decodeToUint8Array(value.value); - let hash = decodeToUint8Array(value.hash); - _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, data, iv).then(decryptedData => { - // log.log('decrypted value ', decryptedData); - message.body.value = decryptedData; - - let filteredMessage = _this._filterMessageToHash(message, decryptedData + iv); - - _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, hash).then(result => { - //log.log('result of hash verification! ', result); - message.body.assertedIdentity = true; - resolve(message); - }); - }); - - } else if (isHandShakeType) { - _this._doHandShakePhase(message, chatKeys).then(function(value) { + _this._messageEncryptionHandling.decryptBetweenHyperties(message).then(result => { + if (!result.isHandShakeNeeded) { + resolve(result.message); + } else { + _this._doHandShakePhase(result.message, result.chatKeys).then(function(value) { //if it was started by doMutualAuthentication then ends the protocol if (value === 'handShakeEnd') { //reject('decrypt handshake protocol phase'); @@ -504,63 +385,18 @@ class CryptoManager { _this.chatKeys[message.to + '<->' + message.from] = value.chatKeys; _this._messageBus.postMessage(value.message); - //reject('decrypt handshake protocol phase '); + //reject('decrypt handshake protocol phase '); TODO: Check why is this commented? } - }); - } else { - reject('wrong message do decrypt'); + }).catch(err => { reject('Error on decrypting message handshake in decryptBetweenHyperties: ', err); }); } - } else { - reject('error on decrypt message'); - } + }).catch(err => { reject('Error on decrypting message in decryptBetweenHyperties: ', err); }); //if from hyperty to a dataObjectURL } else if (isFromHyperty && isToDataObject) { // log.log('dataObject value to decrypt: ', message.body); - - _this.storageManager.get('dataObjectSessionKeys').then((sessionKeys) => { - sessionKeys = chatkeysToArrayCloner(sessionKeys || {}); - let dataObjectKey = sessionKeys ? sessionKeys[dataObjectURL] : null; - - if (dataObjectKey) { - - //check if is to apply encryption - if (dataObjectKey.isToEncrypt) { - let parsedValue = parse(message.body.value); - let iv = decodeToUint8Array(parsedValue.iv); - let encryptedValue = decodeToUint8Array(parsedValue.value); - let hash = decodeToUint8Array(parsedValue.hash); - - _this.crypto.decryptAES(dataObjectKey.sessionKey, encryptedValue, iv).then(decryptedValue => { - let parsedValue = parse(decryptedValue); - - // log.log('decrypted Value,', parsedValue); - message.body.value = parsedValue; - - let filteredMessage = _this._filterMessageToHash(message, stringify(parsedValue) + stringify(iv)); - - _this.crypto.verifyHMAC(dataObjectKey.sessionKey, filteredMessage, hash).then(result => { - log.log('Received message HMAC result', result); - - message.body.assertedIdentity = true; - resolve(message); - }).catch(err => { reject('Message HMAC is invalid: ' + err); }); - }); - - //if not, just return the message - } else { - message.body.assertedIdentity = true; - resolve(message); - } - - } else { - message.body.assertedIdentity = true; - resolve(message); - - //reject('no sessionKey for chat room found'); - } - }); - + _this._messageEncryptionHandling.decryptBetweenHypertyDataObject(message).then(result => { + resolve(result); + }).catch(err => { reject('Error on decrypting message in decryptBetweenHyperties: ', err); }); } else { reject('wrong message to decrypt'); } @@ -675,7 +511,7 @@ class CryptoManager { msg.callback = resolved; msg.dataObjectURL = dataObjectURL; - chatKeys = _this._newChatCrypto(msg, userURL); + chatKeys = _this._messageEncryptionHandling.newChatCrypto(msg, userURL); _this.chatKeys[sender + '<->' + receiver] = chatKeys; } @@ -801,7 +637,7 @@ class CryptoManager { } }; - let filteredMessage = _this._filterMessageToHash(reporterSessionKeyMsg, valueToEncrypt + iv, chatKeys.hypertyFrom.messageInfo); + let filteredMessage = filterMessageToHash(reporterSessionKeyMsg, valueToEncrypt + iv, chatKeys.hypertyFrom.messageInfo); return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage); }).then(hashedMessage => { @@ -828,6 +664,7 @@ class CryptoManager { } } + _doHandShakePhase(message, chatKeys) { // log('_doHandShakePhase:dataObject', message); // log('_doHandShakePhase:chatKeys', chatKeys); @@ -837,420 +674,60 @@ class CryptoManager { return new Promise(function(resolve, reject) { let handshakeType = message.body.handshakePhase; - let iv; - let hash; - let value = {}; - let filteredMessage; - let privateKeyHolder; log.info('handshake phase: ', handshakeType); switch (handshakeType) { - case 'startHandShake': { - chatKeys.keys.fromRandom = _this.crypto.generateRandom(); - let startHandShakeMsg = { - type: 'handshake', - to: message.to, - from: message.from, - body: { - handshakePhase: 'senderHello', - value: encode(chatKeys.keys.fromRandom) + case 'startHandShake': + _this.handShakeProtocol.startHandShake(message, chatKeys).then(result => { + if (result.postToBus) { + _this._messageBus.postMessage(result.message); + } else { + resolve({message: result.message, chatKeys: result.chatKeys}); } - }; - chatKeys.handshakeHistory.senderHello = _this._filterMessageToHash(startHandShakeMsg, undefined, chatKeys.hypertyFrom.messageInfo); - - // check if was the encrypt function or the mutual authentication that request the - // start of the handShakePhase. - - if (chatKeys.initialMessage) { - resolve({message: startHandShakeMsg, chatKeys: chatKeys}); - } else { - _this.chatKeys[message.from + '<->' + message.to] = chatKeys; - _this._messageBus.postMessage(startHandShakeMsg); - } - + }); break; - } - case 'senderHello': { - - log.log('senderHello'); - chatKeys.handshakeHistory.senderHello = _this._filterMessageToHash(message); - chatKeys.keys.fromRandom = decodeToUint8Array(message.body.value); - chatKeys.keys.toRandom = _this.crypto.generateRandom(); - - let senderHelloMsg = { - type: 'handshake', - to: message.from, - from: message.to, - body: { - handshakePhase: 'receiverHello', - value: encode(chatKeys.keys.toRandom) - } - }; - chatKeys.handshakeHistory.receiverHello = _this._filterMessageToHash(senderHelloMsg, undefined, chatKeys.hypertyFrom.messageInfo); - resolve({message: senderHelloMsg, chatKeys: chatKeys}); - + case 'senderHello': + _this.handShakeProtocol.senderHello(message, chatKeys).then(result => { resolve(result); }); break; - } - case 'receiverHello': { - log.log('receiverHello'); + case 'receiverHello': _this.getMyPrivateKey().then(privateKey =>{ - privateKeyHolder = privateKey; - - chatKeys.handshakeHistory.receiverHello = _this._filterMessageToHash(message); - - return _this._idm.validateAssertion(message.body.identity.assertion, undefined, message.body.identity.idp.domain); - }).then((value) => { - - //TODO remove later this verification as soon as all the IdP proxy are updated in the example - let encodedpublicKey = (typeof value.contents === 'string') ? value.contents : value.contents.nonce; - - let receiverPublicKey = parseToUint8Array(encodedpublicKey); - let premasterSecret = _this.crypto.generatePMS(); - let toRandom = message.body.value; - chatKeys.hypertyTo.assertion = message.body.identity.assertion; - chatKeys.hypertyTo.publicKey = receiverPublicKey; - chatKeys.hypertyTo.userID = message.body.identity.userProfile.userURL; - chatKeys.keys.toRandom = decodeToUint8Array(toRandom); - chatKeys.keys.premasterKey = premasterSecret; - - let concatKey = _this.crypto.concatPMSwithRandoms(premasterSecret, chatKeys.keys.toRandom, chatKeys.keys.fromRandom); - - return _this.crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom); - - //generate the master key - }).then((masterKey) => { - chatKeys.keys.masterKey = masterKey; - - return _this.crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom); - - //generate the symmetric and hash keys - }).then((keys) => { - - chatKeys.keys.hypertyToSessionKey = new Uint8Array(keys[0]); - chatKeys.keys.hypertyFromSessionKey = new Uint8Array(keys[1]); - chatKeys.keys.hypertyToHashKey = new Uint8Array(keys[2]); - chatKeys.keys.hypertyFromHashKey = new Uint8Array(keys[3]); - iv = _this.crypto.generateIV(); - value.iv = encode(iv); - - let messageStructure = { - type: 'handshake', - to: message.from, - from: message.to, - body: { - handshakePhase: 'senderCertificate' - } - }; - - // hash the value and the iv - filteredMessage = _this._filterMessageToHash(messageStructure, 'ok' + iv, chatKeys.hypertyFrom.messageInfo); - return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage); - }).then((hash) => { - value.hash = encode(hash); - - //encrypt the data - return _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, 'ok', iv); - }).then((encryptedData) => { - value.symetricEncryption = encode(encryptedData); - - return _this.crypto.encryptRSA(chatKeys.hypertyTo.publicKey, chatKeys.keys.premasterKey); - - }).then((encryptedValue) => { - value.assymetricEncryption = encode(encryptedValue); - - let messageStructure = { - type: 'handshake', - to: message.from, - from: message.to, - body: { - handshakePhase: 'senderCertificate' - } - }; - - let messageToHash = _this._filterMessageToHash(messageStructure, chatKeys.keys.premasterKey, chatKeys.hypertyFrom.messageInfo); - return _this.crypto.signRSA(privateKeyHolder, encode(chatKeys.handshakeHistory) + encode(messageToHash)); - }).then(signature => { - - value.signature = encode(signature); - - let receiverHelloMsg = { - type: 'handshake', - to: message.from, - from: message.to, - body: { - handshakePhase: 'senderCertificate', - value: encode(value) - } - }; - chatKeys.handshakeHistory.senderCertificate = _this._filterMessageToHash(receiverHelloMsg, 'ok' + iv, chatKeys.hypertyFrom.messageInfo); - - resolve({message: receiverHelloMsg, chatKeys: chatKeys}); - - }, error => reject(error)); - + _this.handShakeProtocol.receiverHello(message, chatKeys, privateKey).then(result => { resolve(result); }) + .catch(err => { reject(err); }); + }); break; - } - case 'senderCertificate': { - - log.log('senderCertificate'); - - let receivedValue = decode(message.body.value); + case 'senderCertificate': _this.getMyPrivateKey().then(privateKey =>{ - privateKeyHolder = privateKey; - - return _this._idm.validateAssertion(message.body.identity.assertion, undefined, message.body.identity.idp.domain); - }).then((value) => { - let encryptedPMS = decodeToUint8Array(receivedValue.assymetricEncryption); - - //TODO remove later this verification as soon as all the IdP proxy are updated in the example - let encodedpublicKey = (typeof value.contents === 'string') ? value.contents : value.contents.nonce; - - let senderPublicKey = parseToUint8Array(encodedpublicKey); - chatKeys.hypertyTo.assertion = message.body.identity.assertion; - chatKeys.hypertyTo.publicKey = senderPublicKey; - chatKeys.hypertyTo.userID = message.body.identity.userProfile.userURL; - - return _this.crypto.decryptRSA(privateKeyHolder, encryptedPMS); - - }, (error) => { - // log.log(error); - reject('Error during authentication of identity: ', error.message); - - //obtain the PremasterKey using the private key - }).then(pms => { - - chatKeys.keys.premasterKey = new Uint8Array(pms); - - let signature = decodeToUint8Array(receivedValue.signature); - - let receivedmsgToHash = _this._filterMessageToHash(message, chatKeys.keys.premasterKey); - - return _this.crypto.verifyRSA(chatKeys.hypertyTo.publicKey, encode(chatKeys.handshakeHistory) + encode(receivedmsgToHash), signature); - - // validates the signature received - }).then(signValidationResult => { - - //log.log('SenderCertificate - signature validation result ', signValidationResult); - let concatKey = _this.crypto.concatPMSwithRandoms(chatKeys.keys.premasterKey, chatKeys.keys.toRandom, chatKeys.keys.fromRandom); - - return _this.crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom); - - // generates the master keys from the Premaster key and the randoms - }).then(masterKey => { - chatKeys.keys.masterKey = masterKey; - - return _this.crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom); - - // generates the symmetric keys to be used in the symmetric encryption - }).then(keys => { - chatKeys.keys.hypertyFromSessionKey = new Uint8Array(keys[0]); - chatKeys.keys.hypertyToSessionKey = new Uint8Array(keys[1]); - chatKeys.keys.hypertyFromHashKey = new Uint8Array(keys[2]); - chatKeys.keys.hypertyToHashKey = new Uint8Array(keys[3]); - iv = decodeToUint8Array(receivedValue.iv); - let data = decodeToUint8Array(receivedValue.symetricEncryption); - - return _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, data, iv); - - }).then(decryptedData => { - // log.log('decryptedData', decryptedData); - - chatKeys.handshakeHistory.senderCertificate = _this._filterMessageToHash(message, decryptedData + iv); - - let hashReceived = decodeToUint8Array(receivedValue.hash); - - filteredMessage = _this._filterMessageToHash(message, decryptedData + iv); - - return _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, hashReceived); - - }).then(verifiedHash => { - - // log.log('result of hash verification ', verifiedHash); - let receiverFinishedMessage = { - type: 'handshake', - to: message.from, - from: message.to, - body: { - handshakePhase: 'receiverFinishedMessage' - } - }; - iv = _this.crypto.generateIV(); - value.iv = encode(iv); - - filteredMessage = _this._filterMessageToHash(receiverFinishedMessage, 'ok!' + iv, chatKeys.hypertyFrom.messageInfo); - - //log.log('TIAGO: doHandShakePhase verifiedHash'); - return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage); - }).then(hash => { - - value.hash = encode(hash); - return _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, 'ok!', iv); - - }).then(encryptedValue => { - value.value = encode(encryptedValue); - let receiverFinishedMessage = { - type: 'handshake', - to: message.from, - from: message.to, - body: { - handshakePhase: 'receiverFinishedMessage', - value: encode(value) - } - }; - - chatKeys.handshakeHistory.receiverFinishedMessage = _this._filterMessageToHash(receiverFinishedMessage, 'ok!' + iv, chatKeys.hypertyFrom.messageInfo); - chatKeys.authenticated = true; - resolve({message: receiverFinishedMessage, chatKeys: chatKeys}); - }).catch(err => { - reject('On _doHandShakePhase from senderCertificate error: ' + err); + _this.handShakeProtocol.senderCertificate(message, chatKeys, privateKey).then(result => { resolve(result); }) + .catch(err => { reject(err); }); }); - break; - } - case 'receiverFinishedMessage': { - - chatKeys.authenticated = true; - - value = decode(message.body.value); - - iv = decodeToUint8Array(value.iv); - let data = decodeToUint8Array(value.value); - hash = decodeToUint8Array(value.hash); - - _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, data, iv).then(decryptedData => { - // log.log('decryptedData', decryptedData); - chatKeys.handshakeHistory.receiverFinishedMessage = _this._filterMessageToHash(message, decryptedData + iv); - - let filteredMessage = _this._filterMessageToHash(message, decryptedData + iv); - _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, hash).then(result => { - - // check if there was an initial message that was blocked and send it - if (chatKeys.initialMessage) { - - let initialMessage = { - type: 'create', - to: message.from, - from: message.to, - body: { - value: chatKeys.initialMessage.body.value - } - }; - - resolve({message: initialMessage, chatKeys: chatKeys}); - - //sends the sessionKey to the subscriber hyperty - } else { - _this._sendReporterSessionKey(message, chatKeys).then(value => { - - resolve(value); - }).catch(err => { - reject('On _doHandShakePhase from receiverFinishedMessage error: ' + err); - }); - } - }); - }); + case 'receiverFinishedMessage': + _this.handShakeProtocol.receiverFinishedMessage(message, chatKeys).then(result => { + if (result.sendReporterSessionKey) { + _this._sendReporterSessionKey(result.message, result.chatKeys).then(value => { + resolve(value); + }); + } else { + resolve({message: result.message, chatKeys: result.chatKeys}); + } + }).catch(err => { reject(err); }); break; - } case 'reporterSessionKey': { - - log.log('reporterSessionKey'); - - let valueIVandHash = decode(message.body.value); - hash = decodeToUint8Array(valueIVandHash.hash); - iv = decodeToUint8Array(valueIVandHash.iv); - let encryptedValue = decodeToUint8Array(valueIVandHash.value); - let parsedValue; - let sessionKey; - let dataObjectURL; - let receiverAcknowledgeMsg; - - //log.log('[IdentityModule reporterSessionKey] - decryptAES: ', chatKeys.keys.hypertyToSessionKey, encryptedValue, iv); - - _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, encryptedValue, iv).then(decryptedValue => { - - parsedValue = decode(decryptedValue); - sessionKey = decodeToUint8Array(parsedValue.value); - dataObjectURL = parsedValue.dataObjectURL; - - let messageToHash = _this._filterMessageToHash(message, decryptedValue + iv); - - return _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, messageToHash, hash); - - }).then(hashResult => { - - - // log.log('hash successfully validated ', hashResult); - - _this.dataObjectSessionKeys[dataObjectURL] = {sessionKey: sessionKey, isToEncrypt: true}; - let dataObjectSessionKeysClone = chatkeysToStringCloner(_this.dataObjectSessionKeys); - _this.storageManager.set('dataObjectSessionKeys', 0, dataObjectSessionKeysClone).catch(err => { - reject('On _sendReporterSessionKey from method reporterSessionKey error: ' + err); - }); - - iv = _this.crypto.generateIV(); - value.iv = encode(iv); - - return _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, 'ok!!', iv); - }).then(encryptedValue => { - - receiverAcknowledgeMsg = { - type: 'handshake', - to: message.from, - from: message.to, - body: { - handshakePhase: 'receiverAcknowledge' - } - }; - - value.value = encode(encryptedValue); - let messageToHash = _this._filterMessageToHash(receiverAcknowledgeMsg, 'ok!!' + iv, chatKeys.hypertyFrom.messageInfo); - - return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, messageToHash); - }).then(hashedMessage => { - let finalValue = encode({value: value.value, hash: encode(hashedMessage), iv: value.iv}); - - receiverAcknowledgeMsg.body.value = finalValue; - resolve({message: receiverAcknowledgeMsg, chatKeys: chatKeys}); - }).catch(err => { - reject('On _doHandShakePhase from reporterSessionKey error: ' + err); - }); - + _this.handShakeProtocol.reporterSessionKey(message, chatKeys).then(result => { resolve(result); }) + .catch(err => { reject(err); }); break; } case 'receiverAcknowledge': { - - log.log('receiverAcknowledge'); - - let receivedvalueIVandHash = decode(message.body.value); - let receivedHash = decodeToUint8Array(receivedvalueIVandHash.hash); - iv = decodeToUint8Array(receivedvalueIVandHash.iv); - let receivedEncryptedValue = decodeToUint8Array(receivedvalueIVandHash.value); - - _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, receivedEncryptedValue, iv).then(decryptedValue => { - - let filteredMessage = _this._filterMessageToHash(message, decryptedValue + iv); - return _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, receivedHash); - }).then(hashResult => { - // log.log('hashResult ', hashResult); - - let callback = chatKeys.callback; - - if (callback) { - callback('handShakeEnd'); - } - resolve('handShakeEnd'); - }).catch(err => { - reject('On _doHandShakePhase from receiverAcknowledge error: ' + err); - }); - + _this.handShakeProtocol.receiverAcknowledge(message, chatKeys).then(result => { resolve(result); }) + .catch(err => { reject(err); }); break; } @@ -1260,90 +737,6 @@ class CryptoManager { }); } - /** - * filter the messages to hash, by removing some fields not generated by the runtime core - * @param {Message} message message - * @param {String} decryptedValue (Optional) value from body.value in case it originally comes encrypted - * @param {JSON} identity(Optional) add the hyperty identity associated in case is not added to the initial message - * @return {Message} new message filtered - */ - _filterMessageToHash(message, decryptedValue, identity) { - - return { - type: message.type, - from: message.from, - to: message.to, - body: { - identity: identity || message.body.identity, - value: decryptedValue || message.body.value, - handshakePhase: message.body.handshakePhase - } - }; - } - - /** - * generates the initial structure for the keys between two users - * @param {JSON} message initial message that triggers the mutual authentication - * @param {String} userURL userURL - * @param {boolean} receiver(Optional) indicates if is the sender or the receiver that creates a new chat crypto - * @return {JSON} newChatCrypto new JSON structure for the chat crypto - */ - _newChatCrypto(message, userURL, receiver) { - let _this = this; - - //check whether is the sender or the receiver to create a new chatCrypto - //to mantain consistency on the keys if the receiver create a new chatCrypto, - //then invert the fields - let from = (receiver) ? message.to : message.from; - let to = (receiver) ? message.from : message.to; - - let userInfo = _this._idm.getIdentity(userURL); - - let newChatCrypto = - { - hypertyFrom: - { - hyperty: from, - userID: userInfo.userProfile.userURL, - - //privateKey: "getMyPublicKey", - //publicKey: "getMyPrivateKey", - assertion: userInfo.assertion, - messageInfo: userInfo - }, - hypertyTo: - { - hyperty: to, - userID: undefined, - publicKey: undefined, - assertion: undefined - }, - keys: - { - hypertyToSessionKey: undefined, - hypertyFromSessionKey: undefined, - hypertyToHashKey: undefined, - hypertyFromHashKey: undefined, - toRandom: undefined, - fromRandom: undefined, - premasterKey: undefined, - masterKey: undefined - }, - handshakeHistory: { - senderHello: undefined, - receiverHello: undefined, - senderCertificate: undefined, - receiverFinishedMessage: undefined - }, - initialMessage: (message.body.ignore) ? undefined : message, - callback: message.callback, - authenticated: false, - dataObjectURL: message.dataObjectURL - }; - - return newChatCrypto; - } - /** * Retrieves a public keys given a user refrence. If no key is found, generates a new key asymmetric key and retrieves the public keys. @@ -1420,6 +813,71 @@ class CryptoManager { }); } + + _isToDecrypt(message) { + let _this = this; + + return new Promise((resolve, reject) => { + // For sybscribe message let's start the mutualAuthentication + let isSubscription = message.type === 'subscribe'; + let isFromRemoteSM = _this._isFromRemoteSM(message.from); + + if (isSubscription & isFromRemoteSM) { + log.log('_doMutualAuthenticationPhase1'); + + _this._doMutualAuthenticationPhase1(message).then(() => { + resolve(false); + }, (error) => { + reject(error); + }); + + } else if (message.hasOwnProperty('body') && message.body.hasOwnProperty('value') && typeof message.body.value === 'string') { + log.log('_isToDecrypt:true'); + resolve(true); + } else { + log.log('_isToDecrypt:false'); + resolve(false); + } + + }).catch((error) => { + log.error('[CryptoManager._isToDecrypt]', error); + }); + + } + + /** + * Identifies the messages to be encrypted + * @param {Message} message + * @returns {boolean} returns true if the message requires encryption + */ + + _isToEncrypt(message) { + log.info('[CryptoManager.istoChyperModule]', message); + let isCreate = message.type === 'create'; + let isFromHyperty = message.from.includes('hyperty://'); + let isToHyperty = message.to.includes('hyperty://'); + let isToDataObject = isDataObjectURL(message.to); + + let doMutualAuthentication = message.body.hasOwnProperty('mutual') ? message.body.mutual : true; + + if (!doMutualAuthentication) return false; + + //if is not to apply encryption, then returns resolve + if (!this.isToUseEncryption && !(message.type === 'handshake')) { + log.info('not handshake: encryption disabled'); + return false; + } + + if (message.type === 'update') { + log.info('update:encryption disabled'); + return false; + } + + if (isLegacy(message.to)) return false; + + return ((isCreate && isFromHyperty && isToHyperty) || (isCreate && isFromHyperty && isToDataObject && doMutualAuthentication) || message.type === 'handshake' || (message.type === 'update' && doMutualAuthentication)); + } + } /* @@ -1427,4 +885,5 @@ const nodeJSKeyPairPopulate = { public: [48, 130, 1, 34, 48, 13, 6, 9, 42, 134, private: [48, 130, 4, 191, 2, 1, 0, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0, 4, 130, 4, 169, 48, 130, 4, 165, 2, 1, 0, 2, 130, 1, 1, 0, 228, 43, 101, 12, 121, 7, 157, 71, 81, 58, 219, 32, 10, 108, 193, 179, 212, 116, 255, 59, 217, 32, 161, 201, 53, 171, 226, 199, 137, 202, 171, 60, 82, 53, 125, 62, 177, 126, 165, 24, 141, 30, 15, 226, 59, 107, 34, 7, 13, 149, 112, 125, 10, 230, 191, 156, 164, 177, 10, 185, 13, 66, 3, 217, 166, 244, 90, 119, 111, 27, 145, 104, 71, 189, 166, 226, 255, 133, 83, 151, 231, 101, 151, 89, 22, 19, 65, 154, 10, 53, 208, 218, 252, 219, 37, 50, 212, 86, 145, 107, 132, 90, 233, 202, 227, 108, 114, 141, 29, 73, 187, 31, 13, 234, 0, 232, 24, 191, 35, 149, 179, 138, 214, 159, 245, 162, 148, 221, 118, 17, 105, 89, 151, 146, 209, 55, 236, 61, 143, 233, 228, 10, 115, 8, 81, 197, 45, 123, 187, 223, 176, 254, 165, 69, 143, 29, 100, 114, 17, 130, 226, 223, 33, 11, 240, 81, 61, 172, 191, 157, 246, 202, 87, 131, 221, 88, 48, 127, 159, 119, 160, 152, 117, 61, 253, 174, 65, 214, 203, 218, 63, 50, 78, 160, 181, 221, 211, 128, 70, 178, 191, 170, 0, 13, 122, 173, 12, 203, 252, 4, 184, 225, 252, 7, 62, 96, 116, 15, 216, 158, 55, 85, 48, 16, 9, 206, 119, 74, 112, 243, 136, 84, 184, 223, 254, 101, 91, 61, 10, 91, 85, 192, 147, 144, 57, 29, 66, 238, 199, 244, 193, 194, 150, 232, 200, 107, 2, 3, 1, 0, 1, 2, 130, 1, 0, 103, 244, 137, 118, 116, 82, 14, 203, 102, 107, 253, 88, 12, 199, 222, 60, 243, 136, 86, 157, 74, 224, 190, 53, 113, 57, 157, 250, 49, 130, 96, 31, 252, 136, 152, 70, 143, 17, 215, 96, 103, 51, 18, 35, 141, 212, 210, 205, 9, 216, 83, 70, 245, 71, 138, 119, 112, 229, 164, 176, 9, 37, 81, 161, 193, 154, 68, 249, 115, 106, 201, 6, 12, 225, 144, 126, 141, 210, 141, 242, 128, 159, 221, 163, 222, 21, 233, 230, 167, 206, 59, 24, 250, 233, 81, 122, 102, 26, 6, 233, 72, 133, 47, 77, 155, 238, 86, 6, 139, 24, 131, 163, 179, 112, 48, 247, 142, 6, 207, 204, 173, 223, 140, 199, 150, 95, 123, 152, 202, 155, 131, 238, 62, 96, 133, 4, 217, 51, 121, 30, 38, 178, 189, 216, 44, 35, 241, 93, 7, 62, 90, 111, 216, 66, 209, 243, 128, 234, 141, 84, 135, 181, 13, 38, 220, 114, 245, 240, 178, 95, 220, 206, 11, 186, 234, 213, 66, 121, 83, 68, 89, 75, 46, 183, 145, 183, 147, 160, 215, 118, 198, 125, 181, 146, 30, 251, 58, 87, 47, 209, 237, 97, 24, 47, 179, 6, 110, 242, 99, 150, 226, 148, 198, 174, 146, 101, 213, 87, 178, 10, 223, 105, 18, 56, 53, 22, 212, 158, 170, 176, 51, 86, 145, 125, 124, 44, 9, 85, 19, 144, 246, 170, 78, 124, 30, 32, 12, 166, 174, 139, 77, 63, 173, 82, 10, 153, 2, 129, 129, 0, 248, 18, 143, 246, 137, 136, 145, 219, 178, 39, 27, 94, 64, 90, 47, 163, 114, 60, 63, 187, 131, 143, 244, 16, 42, 128, 231, 117, 92, 98, 219, 155, 62, 107, 252, 17, 245, 45, 160, 225, 103, 142, 72, 36, 193, 150, 235, 214, 175, 62, 212, 56, 45, 9, 0, 60, 114, 107, 134, 228, 204, 131, 131, 214, 94, 201, 148, 159, 99, 139, 181, 13, 119, 38, 30, 107, 166, 165, 203, 43, 34, 20, 207, 171, 32, 58, 167, 62, 196, 153, 103, 204, 213, 247, 48, 111, 227, 59, 95, 97, 194, 187, 53, 10, 247, 108, 58, 86, 28, 29, 113, 8, 110, 171, 220, 245, 11, 82, 233, 223, 91, 68, 166, 117, 174, 187, 62, 77, 2, 129, 129, 0, 235, 118, 2, 105, 239, 212, 30, 104, 157, 41, 109, 11, 248, 152, 22, 236, 97, 40, 153, 131, 228, 5, 86, 187, 113, 126, 144, 76, 141, 79, 110, 250, 146, 152, 49, 58, 156, 201, 176, 92, 189, 209, 30, 112, 108, 175, 204, 204, 247, 164, 46, 129, 239, 98, 127, 49, 145, 218, 63, 193, 124, 174, 18, 98, 201, 99, 154, 162, 138, 78, 159, 253, 3, 248, 3, 209, 36, 239, 193, 155, 193, 5, 19, 236, 37, 78, 118, 135, 250, 199, 7, 141, 248, 120, 36, 136, 93, 98, 174, 60, 18, 215, 93, 174, 107, 141, 116, 145, 167, 221, 210, 169, 247, 67, 254, 222, 161, 134, 63, 221, 90, 87, 42, 99, 227, 81, 173, 151, 2, 129, 129, 0, 133, 23, 168, 103, 83, 232, 146, 160, 181, 23, 40, 38, 204, 13, 214, 203, 49, 41, 195, 227, 189, 181, 8, 243, 119, 106, 75, 67, 250, 250, 10, 234, 98, 118, 26, 250, 35, 121, 132, 124, 10, 76, 26, 198, 165, 154, 108, 19, 117, 88, 23, 17, 192, 143, 184, 177, 181, 141, 157, 4, 185, 248, 193, 77, 204, 243, 7, 170, 240, 4, 111, 113, 183, 0, 27, 136, 20, 19, 149, 74, 33, 241, 218, 108, 236, 80, 171, 148, 16, 116, 97, 109, 83, 74, 88, 145, 94, 239, 102, 192, 19, 114, 207, 5, 128, 51, 111, 164, 237, 86, 154, 99, 52, 197, 62, 57, 182, 6, 152, 245, 61, 137, 58, 105, 159, 2, 84, 109, 2, 129, 129, 0, 226, 67, 111, 132, 95, 91, 101, 177, 63, 189, 44, 53, 193, 184, 92, 230, 223, 98, 133, 74, 209, 86, 52, 7, 65, 195, 206, 100, 81, 178, 144, 65, 167, 151, 42, 79, 89, 149, 18, 173, 188, 21, 244, 251, 49, 230, 41, 150, 153, 46, 35, 38, 231, 99, 174, 56, 115, 32, 215, 253, 85, 147, 108, 197, 147, 34, 236, 216, 222, 177, 57, 90, 136, 114, 207, 48, 46, 31, 90, 220, 18, 58, 143, 239, 111, 214, 27, 95, 6, 36, 53, 229, 62, 108, 45, 39, 1, 30, 47, 178, 56, 164, 206, 56, 42, 208, 46, 193, 61, 31, 147, 45, 147, 23, 187, 22, 50, 255, 111, 229, 132, 199, 152, 75, 142, 136, 209, 151, 2, 129, 129, 0, 165, 56, 232, 76, 55, 57, 240, 159, 92, 207, 220, 143, 130, 30, 57, 234, 251, 172, 171, 180, 54, 159, 229, 96, 246, 73, 112, 146, 75, 157, 242, 201, 161, 218, 37, 176, 35, 170, 50, 90, 148, 102, 191, 199, 239, 174, 78, 72, 67, 85, 199, 45, 149, 145, 132, 161, 212, 33, 157, 75, 216, 79, 39, 233, 18, 210, 255, 26, 72, 229, 239, 44, 12, 147, 158, 176, 192, 95, 126, 32, 175, 23, 226, 131, 139, 197, 175, 193, 62, 8, 151, 252, 68, 154, 94, 89, 189, 125, 90, 30, 36, 175, 73, 230, 194, 13, 233, 247, 123, 60, 241, 47, 171, 51, 189, 112, 111, 213, 141, 89, 70, 249, 236, 63, 236, 110, 115, 208]}; */ + export default new CryptoManager(); diff --git a/src/cryptoManager/HandShakeProtocol.js b/src/cryptoManager/HandShakeProtocol.js new file mode 100755 index 00000000..7712bc76 --- /dev/null +++ b/src/cryptoManager/HandShakeProtocol.js @@ -0,0 +1,443 @@ +import * as logger from 'loglevel'; +let log = logger.getLogger('CryptoManager'); + +import {chatkeysToStringCloner, encode, decode, decodeToUint8Array, + parseToUint8Array, filterMessageToHash} from '../utils/utils.js'; + + +/** +* This class contains the handshake protocol, used to exchange session keys between +* two user, after their identity is validate. +*/ +class HandShakeProtocol { + + constructor(chatKeys, crypto, idm, sessionKeys, storage) { + this.chatKeys = chatKeys; + this.crypto = crypto; + this.idm = idm; + this.dataObjectSessionKeys = sessionKeys; + this.storageManager = storage; + } + + startHandShake(message, chatKeys) { + let _this = this; + return new Promise(function(resolve, reject) { + chatKeys.keys.fromRandom = _this.crypto.generateRandom(); + let startHandShakeMsg = { + type: 'handshake', + to: message.to, + from: message.from, + body: { + handshakePhase: 'senderHello', + value: encode(chatKeys.keys.fromRandom) + } + }; + chatKeys.handshakeHistory.senderHello = filterMessageToHash(startHandShakeMsg, undefined, chatKeys.hypertyFrom.messageInfo); + + // check if was the encrypt or the mutual authentication that request the + // start of the handShakePhase. + + if (chatKeys.initialMessage) { + resolve({postToBus: false, message: startHandShakeMsg, chatKeys: chatKeys}); + } else { + _this.chatKeys[message.from + '<->' + message.to] = chatKeys; + resolve({postToBus: true, message: startHandShakeMsg}); + } + }); + } + + senderHello(message, chatKeys) { + let _this = this; + return new Promise(function(resolve, reject) { + log.log('senderHello'); + chatKeys.handshakeHistory.senderHello = filterMessageToHash(message); + chatKeys.keys.fromRandom = decodeToUint8Array(message.body.value); + chatKeys.keys.toRandom = _this.crypto.generateRandom(); + + let senderHelloMsg = { + type: 'handshake', + to: message.from, + from: message.to, + body: { + handshakePhase: 'receiverHello', + value: encode(chatKeys.keys.toRandom) + } + }; + chatKeys.handshakeHistory.receiverHello = filterMessageToHash(senderHelloMsg, undefined, chatKeys.hypertyFrom.messageInfo); + resolve({message: senderHelloMsg, chatKeys: chatKeys}); + }); + } + + receiverHello(message, chatKeys, privateKey) { + let _this = this; + let value = {}; + let iv; + return new Promise(function(resolve, reject) { + log.log('receiverHello'); + chatKeys.handshakeHistory.receiverHello = filterMessageToHash(message); + + _this.idm.validateAssertion(message.body.identity.assertion, undefined, message.body.identity.idp.domain).then((value) => { + + //TODO remove later this verification as soon as all the IdP proxy are updated in the example + let encodedpublicKey = (typeof value.contents === 'string') ? value.contents : value.contents.nonce; + + let receiverPublicKey = parseToUint8Array(encodedpublicKey); + let premasterSecret = _this.crypto.generatePMS(); + let toRandom = message.body.value; + chatKeys.hypertyTo.assertion = message.body.identity.assertion; + chatKeys.hypertyTo.publicKey = receiverPublicKey; + chatKeys.hypertyTo.userID = value.contents.email; + chatKeys.keys.toRandom = decodeToUint8Array(toRandom); + chatKeys.keys.premasterKey = premasterSecret; + + let concatKey = _this.crypto.concatPMSwithRandoms(premasterSecret, chatKeys.keys.toRandom, chatKeys.keys.fromRandom); + + return _this.crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom); + + //generate the master key + }).then((masterKey) => { + chatKeys.keys.masterKey = masterKey; + + return _this.crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom); + + //generate the symmetric and hash keys + }).then((keys) => { + + chatKeys.keys.hypertyToSessionKey = new Uint8Array(keys[0]); + chatKeys.keys.hypertyFromSessionKey = new Uint8Array(keys[1]); + chatKeys.keys.hypertyToHashKey = new Uint8Array(keys[2]); + chatKeys.keys.hypertyFromHashKey = new Uint8Array(keys[3]); + iv = _this.crypto.generateIV(); + value.iv = encode(iv); + + let messageStructure = { + type: 'handshake', + to: message.from, + from: message.to, + body: { + handshakePhase: 'senderCertificate' + } + }; + + // hash the value and the iv + let filteredMessage = filterMessageToHash(messageStructure, 'ok' + iv, chatKeys.hypertyFrom.messageInfo); + return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage); + }).then((hash) => { + value.hash = encode(hash); + + //encrypt the data + return _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, 'ok', iv); + }).then((encryptedData) => { + value.symetricEncryption = encode(encryptedData); + + return _this.crypto.encryptRSA(chatKeys.hypertyTo.publicKey, chatKeys.keys.premasterKey); + + }).then((encryptedValue) => { + value.assymetricEncryption = encode(encryptedValue); + + let messageStructure = { + type: 'handshake', + to: message.from, + from: message.to, + body: { + handshakePhase: 'senderCertificate' + } + }; + + let messageToHash = filterMessageToHash(messageStructure, chatKeys.keys.premasterKey, chatKeys.hypertyFrom.messageInfo); + return _this.crypto.signRSA(privateKey, encode(chatKeys.handshakeHistory) + encode(messageToHash)); + }).then(signature => { + + value.signature = encode(signature); + + let receiverHelloMsg = { + type: 'handshake', + to: message.from, + from: message.to, + body: { + handshakePhase: 'senderCertificate', + value: encode(value) + } + }; + chatKeys.handshakeHistory.senderCertificate = filterMessageToHash(receiverHelloMsg, 'ok' + iv, chatKeys.hypertyFrom.messageInfo); + + resolve({message: receiverHelloMsg, chatKeys: chatKeys}); + + }, error => reject(error)); + }); + } + + + senderCertificate(message, chatKeys, privateKey) { + let _this = this; + let iv; + let filteredMessage; + let value = {}; + return new Promise(function(resolve, reject) { + log.log('senderCertificate'); + + let receivedValue = decode(message.body.value); + + _this.idm.validateAssertion(message.body.identity.assertion, undefined, message.body.identity.idp.domain).then((value) => { + let encryptedPMS = decodeToUint8Array(receivedValue.assymetricEncryption); + + //TODO remove later this verification as soon as all the IdP proxy are updated in the example + let encodedpublicKey = (typeof value.contents === 'string') ? value.contents : value.contents.nonce; + + let senderPublicKey = parseToUint8Array(encodedpublicKey); + chatKeys.hypertyTo.assertion = message.body.identity.assertion; + chatKeys.hypertyTo.publicKey = senderPublicKey; + chatKeys.hypertyTo.userID = value.contents.email; + + return _this.crypto.decryptRSA(privateKey, encryptedPMS); + + }, (error) => { + // log.log(error); + reject('Error during authentication of identity: ', error.message); + + //obtain the PremasterKey using the private key + }).then(pms => { + + chatKeys.keys.premasterKey = new Uint8Array(pms); + + let signature = decodeToUint8Array(receivedValue.signature); + + let receivedmsgToHash = filterMessageToHash(message, chatKeys.keys.premasterKey); + + return _this.crypto.verifyRSA(chatKeys.hypertyTo.publicKey, encode(chatKeys.handshakeHistory) + encode(receivedmsgToHash), signature); + + // validates the signature received + }).then(signValidationResult => { + + log.log('SenderCertificate - signature validation result ', signValidationResult); + let concatKey = _this.crypto.concatPMSwithRandoms(chatKeys.keys.premasterKey, chatKeys.keys.toRandom, chatKeys.keys.fromRandom); + + return _this.crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom); + + // generates the master keys from the Premaster key and the randoms + }).then(masterKey => { + chatKeys.keys.masterKey = masterKey; + + return _this.crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom); + + // generates the symmetric keys to be used in the symmetric encryption + }).then(keys => { + chatKeys.keys.hypertyFromSessionKey = new Uint8Array(keys[0]); + chatKeys.keys.hypertyToSessionKey = new Uint8Array(keys[1]); + chatKeys.keys.hypertyFromHashKey = new Uint8Array(keys[2]); + chatKeys.keys.hypertyToHashKey = new Uint8Array(keys[3]); + iv = decodeToUint8Array(receivedValue.iv); + let data = decodeToUint8Array(receivedValue.symetricEncryption); + + return _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, data, iv); + + }).then(decryptedData => { + // log.log('decryptedData', decryptedData); + + chatKeys.handshakeHistory.senderCertificate = filterMessageToHash(message, decryptedData + iv); + + let hashReceived = decodeToUint8Array(receivedValue.hash); + + filteredMessage = filterMessageToHash(message, decryptedData + iv); + + return _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, hashReceived); + + }).then(verifiedHash => { + + // log.log('result of hash verification ', verifiedHash); + let receiverFinishedMessage = { + type: 'handshake', + to: message.from, + from: message.to, + body: { + handshakePhase: 'receiverFinishedMessage' + } + }; + iv = _this.crypto.generateIV(); + value.iv = encode(iv); + + filteredMessage = filterMessageToHash(receiverFinishedMessage, 'ok!' + iv, chatKeys.hypertyFrom.messageInfo); + + return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage); + }).then(hash => { + + value.hash = encode(hash); + return _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, 'ok!', iv); + + }).then(encryptedValue => { + value.value = encode(encryptedValue); + let receiverFinishedMessage = { + type: 'handshake', + to: message.from, + from: message.to, + body: { + handshakePhase: 'receiverFinishedMessage', + value: encode(value) + } + }; + + chatKeys.handshakeHistory.receiverFinishedMessage = filterMessageToHash(receiverFinishedMessage, 'ok!' + iv, chatKeys.hypertyFrom.messageInfo); + chatKeys.authenticated = true; + resolve({message: receiverFinishedMessage, chatKeys: chatKeys}); + }).catch(err => { + reject('On _doHandShakePhase from senderCertificate error: ' + err); + }); + }); + } + + receiverFinishedMessage(message, chatKeys) { + + let _this = this; + let iv; + let value = {}; + let hash; + return new Promise(function(resolve, reject) { + + log.log('receiverFinishedMessage'); + + chatKeys.authenticated = true; + + value = decode(message.body.value); + + iv = decodeToUint8Array(value.iv); + let data = decodeToUint8Array(value.value); + hash = decodeToUint8Array(value.hash); + + _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, data, iv).then(decryptedData => { + // log.log('decryptedData', decryptedData); + chatKeys.handshakeHistory.receiverFinishedMessage = filterMessageToHash(message, decryptedData + iv); + + let filteredMessage = filterMessageToHash(message, decryptedData + iv); + _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, hash).then(result => { + + // check if there was an initial message that was blocked and send it + if (chatKeys.initialMessage) { + + let initialMessage = { + type: 'create', + to: message.from, + from: message.to, + body: { + value: chatKeys.initialMessage.body.value + } + }; + + resolve({sendReporterSessionKey: false, message: initialMessage, chatKeys: chatKeys}); + + //sends the sessionKey to the subscriber hyperty + } else { + resolve({sendReporterSessionKey: true, message: message, chatKeys: chatKeys}); + } + }); + }); + }); + } + + reporterSessionKey(message, chatKeys) { + + let _this = this; + let iv; + let value = {}; + let hash; + return new Promise(function(resolve, reject) { + + + log.log('reporterSessionKey'); + + let valueIVandHash = decode(message.body.value); + hash = decodeToUint8Array(valueIVandHash.hash); + iv = decodeToUint8Array(valueIVandHash.iv); + let encryptedValue = decodeToUint8Array(valueIVandHash.value); + let parsedValue; + let sessionKey; + let dataObjectURL; + let receiverAcknowledgeMsg; + + //log.log('[IdentityModule reporterSessionKey] - decryptAES: ', chatKeys.keys.hypertyToSessionKey, encryptedValue, iv); + + _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, encryptedValue, iv).then(decryptedValue => { + + parsedValue = decode(decryptedValue); + sessionKey = decodeToUint8Array(parsedValue.value); + dataObjectURL = parsedValue.dataObjectURL; + + let messageToHash = filterMessageToHash(message, decryptedValue + iv); + + return _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, messageToHash, hash); + + }).then(hashResult => { + + + // log.log('hash successfully validated ', hashResult); + + _this.dataObjectSessionKeys[dataObjectURL] = {sessionKey: sessionKey, isToEncrypt: true}; + let dataObjectSessionKeysClone = chatkeysToStringCloner(_this.dataObjectSessionKeys); + _this.storageManager.set('dataObjectSessionKeys', 0, dataObjectSessionKeysClone).catch(err => { + reject('On _sendReporterSessionKey from method reporterSessionKey error: ' + err); + }); + + iv = _this.crypto.generateIV(); + value.iv = encode(iv); + + return _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, 'ok!!', iv); + }).then(encryptedValue => { + + receiverAcknowledgeMsg = { + type: 'handshake', + to: message.from, + from: message.to, + body: { + handshakePhase: 'receiverAcknowledge' + } + }; + + value.value = encode(encryptedValue); + let messageToHash = filterMessageToHash(receiverAcknowledgeMsg, 'ok!!' + iv, chatKeys.hypertyFrom.messageInfo); + + return _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, messageToHash); + }).then(hashedMessage => { + let finalValue = encode({value: value.value, hash: encode(hashedMessage), iv: value.iv}); + + receiverAcknowledgeMsg.body.value = finalValue; + resolve({message: receiverAcknowledgeMsg, chatKeys: chatKeys}); + }).catch(err => { + reject('On _doHandShakePhase from reporterSessionKey error: ' + err); + }); + }); + } + + + receiverAcknowledge(message, chatKeys) { + + let _this = this; + let iv; + return new Promise(function(resolve, reject) { + + log.log('receiverAcknowledge'); + + let receivedvalueIVandHash = decode(message.body.value); + let receivedHash = decodeToUint8Array(receivedvalueIVandHash.hash); + iv = decodeToUint8Array(receivedvalueIVandHash.iv); + let receivedEncryptedValue = decodeToUint8Array(receivedvalueIVandHash.value); + + _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, receivedEncryptedValue, iv).then(decryptedValue => { + + let filteredMessage = filterMessageToHash(message, decryptedValue + iv); + return _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, receivedHash); + }).then(hashResult => { + // log.log('hashResult ', hashResult); + + let callback = chatKeys.callback; + + if (callback) { + callback('handShakeEnd'); + } + resolve('handShakeEnd'); + }).catch(err => { + reject('On _doHandShakePhase from receiverAcknowledge error: ' + err); + }); + }); + } +} + +export default HandShakeProtocol; diff --git a/src/cryptoManager/MessageEncryptionHandling.js b/src/cryptoManager/MessageEncryptionHandling.js new file mode 100755 index 00000000..6a015f88 --- /dev/null +++ b/src/cryptoManager/MessageEncryptionHandling.js @@ -0,0 +1,295 @@ +import {chatkeysToStringCloner, chatkeysToArrayCloner, parseMessageURL, + parse, stringify, encode, decode, decodeToUint8Array, filterMessageToHash} from '../utils/utils.js'; + +import * as logger from 'loglevel'; +let log = logger.getLogger('CryptoManager'); + +/* +* This class provides some of the encryption and decryption logic of the messages, +* incoming and outgoing messages. +* NOTE: This class sould be threated (for now) as a internal class of CryptoManager, since it +* receives and changes fields of that tsame class, but its on a sepetare file to +* ease code organization. +*/ +class MessageEncryptionHandling { + + constructor(registry, chatKeys, crypto, storageManager, dataObjectsStorage, idm) { + this.registry = registry; + this.chatKeys = chatKeys; + this.crypto = crypto; + this.storageManager = storageManager; + this.dataObjectsStorage = dataObjectsStorage; + this.idm = idm; + } + + encryptBetweenHyperties(message) { + let _this = this; + return new Promise((resolve, reject) => { + + let userURL = _this.registry.getHypertyOwner(message.from); + let isHandShakeType = message.type === 'handshake'; + if (userURL) { + + // check if exists any keys between two users + let chatKeys = _this.chatKeys[message.from + '<->' + message.to]; + if (!chatKeys) { + chatKeys = _this.newChatCrypto(message, userURL); + + //log.log('createChatKey encrypt', message.from + message.to); + _this.chatKeys[message.from + '<->' + message.to] = chatKeys; + message.body.handshakePhase = 'startHandShake'; + } + + if (chatKeys.authenticated && !isHandShakeType) { + + let iv = _this.crypto.generateIV(); + _this.crypto.encryptAES(chatKeys.keys.hypertyFromSessionKey, stringify(message.body.value), iv).then(encryptedValue => { + + let filteredMessage = filterMessageToHash(message, stringify(message.body.value) + + stringify(iv), chatKeys.hypertyFrom.messageInfo); + + _this.crypto.hashHMAC(chatKeys.keys.hypertyFromHashKey, filteredMessage).then(hash => { + //log.log('result of hash ', hash); + let value = {iv: encode(iv), value: encode(encryptedValue), hash: encode(hash)}; + message.body.value = encode(value); + + resolve({ message: message, isHandShakeNeeded: false}); + }); + }); + + // if is a handshake message, just resolve it + } else if (isHandShakeType) { + resolve({ message: message, isHandShakeNeeded: false}); + + // else, starts a new handshake protocol + } else { + resolve({ message: message, isHandShakeNeeded: true, chatKeys: chatKeys}); + } + } else { + reject('In encryptMessage: Hyperty owner URL was not found'); + } + }); + } + + + encryptBetweenHypertyDataObject(message) { + let _this = this; + return new Promise((resolve, reject) => { + let dataObjectURL = parseMessageURL(message.to); + _this.storageManager.get('dataObjectSessionKeys').then((sessionKeys) => { + sessionKeys = chatkeysToArrayCloner(sessionKeys || {}); + let dataObjectKey = sessionKeys ? sessionKeys[dataObjectURL] : null; + + _this.dataObjectsStorage.getDataObject(dataObjectURL).then((isHypertyReporter) => { + //if no key exists, create a new one if is the reporter of dataObject + if (!dataObjectKey) { + // if the hyperty is the reporter of the dataObject then generates a session key + if (isHypertyReporter.reporter && isHypertyReporter.reporter === message.from) { + + let sessionKey = _this.crypto.generateRandom(); + _this.dataObjectSessionKeys[dataObjectURL] = {sessionKey: sessionKey, isToEncrypt: true}; + let dataObjectSessionKeysClone = chatkeysToStringCloner(_this.dataObjectSessionKeys); + + //TODO: check if this does not need to be stored + _this.storageManager.set('dataObjectSessionKeys', 0, dataObjectSessionKeysClone).catch(err => { + reject('On encryptMessage from method storageManager.set error: ' + err); + }); + dataObjectKey = _this.dataObjectSessionKeys[dataObjectURL]; + } + } + + //check if there is already a session key for the chat room + if (dataObjectKey) { + + // and if is to apply encryption, encrypt the messages + if (dataObjectKey.isToEncrypt) { + let iv = _this.crypto.generateIV(); + let stringifiedIV = stringify(iv); + let stringifiedMessageBody = stringify(message.body.value); + + _this.crypto.encryptAES(dataObjectKey.sessionKey, stringifiedMessageBody, iv).then(encryptedValue => { + delete message.body.identity.assertion; //TODO: Check why assertion is comming on the message! + delete message.body.identity.expires; //TODO: Check why expires is comming on the message! + let filteredMessage = filterMessageToHash(message, stringifiedMessageBody + stringifiedIV); + + _this.crypto.hashHMAC(dataObjectKey.sessionKey, filteredMessage).then(hash => { + let newValue = {value: encode(encryptedValue), iv: encode(iv), hash: encode(hash)}; + + message.body.value = stringify(newValue); + resolve(message); + }); + }); + + // if not, just send the message + } else { + resolve(message); + } + + // start the generation of a new session Key + } else { + reject('Data object key could not be defined: Failed to encrypt message '); + } + }).catch(err => { reject('On encryptMessage from method dataObjectsStorage.getDataObject error: ' + err); }); + }).catch(err => { reject('On encryptMessage from method storageManager.get error: ' + err); }); + + }); + } + + + decryptBetweenHyperties(message) { + let _this = this; + return new Promise((resolve, reject) => { + let isHandShakeType = message.type === 'handshake'; + let userURL = _this.registry.getHypertyOwner(message.to); + if (userURL) { + + let chatKeys = _this.chatKeys[message.to + '<->' + message.from]; + if (!chatKeys) { + chatKeys = _this.newChatCrypto(message, userURL, 'decrypt'); + _this.chatKeys[message.to + '<->' + message.from] = chatKeys; + } + + if (chatKeys.authenticated && !isHandShakeType) { + let value = decode(message.body.value); + let iv = decodeToUint8Array(value.iv); + let data = decodeToUint8Array(value.value); + let hash = decodeToUint8Array(value.hash); + _this.crypto.decryptAES(chatKeys.keys.hypertyToSessionKey, data, iv).then(decryptedData => { + // log.log('decrypted value ', decryptedData); + message.body.value = decryptedData; + + let filteredMessage = filterMessageToHash(message, decryptedData + iv); + + _this.crypto.verifyHMAC(chatKeys.keys.hypertyToHashKey, filteredMessage, hash).then(result => { + log.log('Result of hash verification in decryptMessage: ', result); + message.body.assertedIdentity = true; + resolve({message: message, isHandShakeNeeded: false}); + }).chatch(err => { + log.log('decryptMessage HMAC failed:', err); + throw err; + }); + }); + + } else if (isHandShakeType) { + resolve({ message: message, chatKeys: chatKeys, isHandShakeNeeded: true}); + } else { + reject('Wrong message do decrypt: '); + } + } else { + reject('Error on decrypt message:'); + } + }); + } + + + decryptBetweenHypertyDataObject(message) { + let _this = this; + return new Promise((resolve, reject) => { + let dataObjectURL = parseMessageURL(message.to); + _this.storageManager.get('dataObjectSessionKeys').then((sessionKeys) => { + sessionKeys = chatkeysToArrayCloner(sessionKeys || {}); + let dataObjectKey = sessionKeys ? sessionKeys[dataObjectURL] : null; + + if (dataObjectKey) { + + //check if is to apply encryption + if (dataObjectKey.isToEncrypt) { + let parsedValue = parse(message.body.value); + let iv = decodeToUint8Array(parsedValue.iv); + let encryptedValue = decodeToUint8Array(parsedValue.value); + let hash = decodeToUint8Array(parsedValue.hash); + + _this.crypto.decryptAES(dataObjectKey.sessionKey, encryptedValue, iv).then(decryptedValue => { + let parsedValue = parse(decryptedValue); + message.body.value = parsedValue; + let filteredMessage = filterMessageToHash(message, stringify(parsedValue) + stringify(iv)); + + _this.crypto.verifyHMAC(dataObjectKey.sessionKey, filteredMessage, hash).then(result => { + log.log('Received message HMAC result', result); + message.body.assertedIdentity = true; + resolve(message); + }).catch(err => { reject('Message HMAC is invalid: ' + err); }); + }); + + //if not, just return the message + } else { + message.body.assertedIdentity = true; + resolve(message); + } + + } else { + message.body.assertedIdentity = true; + resolve(message); + + //reject('no sessionKey for chat room found'); + } + }); + }); + } + + + /** + * generates the initial structure for the keys between two users + * @param {JSON} message initial message that triggers the mutual authentication + * @param {String} userURL userURL + * @param {boolean} receiver(Optional) indicates if is the sender or the receiver that creates a new chat crypto + * @return {JSON} newChatCrypto new JSON structure for the chat crypto + */ + newChatCrypto(message, userURL, receiver) { + + //check whether is the sender or the receiver to create a new chatCrypto + //to mantain consistency on the keys if the receiver create a new chatCrypto, + //then invert the fields + let userInfo = this.idm.getIdentity(userURL); + + let from = (receiver) ? message.to : message.from; + let to = (receiver) ? message.from : message.to; + + let newChatCrypto = + { + hypertyFrom: + { + hyperty: from, + userID: userInfo.userProfile.userURL, + + //privateKey: "getMyPublicKey", + //publicKey: "getMyPrivateKey", + assertion: userInfo.assertion, + messageInfo: userInfo + }, + hypertyTo: + { + hyperty: to, + userID: undefined, + publicKey: undefined, + assertion: undefined + }, + keys: + { + hypertyToSessionKey: undefined, + hypertyFromSessionKey: undefined, + hypertyToHashKey: undefined, + hypertyFromHashKey: undefined, + toRandom: undefined, + fromRandom: undefined, + premasterKey: undefined, + masterKey: undefined + }, + handshakeHistory: { + senderHello: undefined, + receiverHello: undefined, + senderCertificate: undefined, + receiverFinishedMessage: undefined + }, + initialMessage: (message.body.ignore) ? undefined : message, + callback: message.callback, + authenticated: false, + dataObjectURL: message.dataObjectURL + }; + + return newChatCrypto; + } +} + + +export default MessageEncryptionHandling; diff --git a/src/cryptoManager/utf8.js b/src/cryptoManager/utf8.js index 055a9736..f9421962 100755 --- a/src/cryptoManager/utf8.js +++ b/src/cryptoManager/utf8.js @@ -1,66 +1,58 @@ // Marshals a string to Uint8Array. export function encodeUTF8(s) { - var i = 0; - var bytes = new Uint8Array(s.length * 4); - for (var ci = 0; ci != s.length; ci++) { - try{ - var xxx = s.charCodeAt(ci); - } catch (err){ - console.log(err.message); - return; - + var i = 0; + var bytes = new Uint8Array(s.length * 4); + for (var ci = 0; ci != s.length; ci++) { + var c = s.charCodeAt(ci); + if (c < 128) { + bytes[i++] = c; + continue; + } + if (c < 2048) { + bytes[i++] = c >> 6 | 192; + } else { + if (c > 0xd7ff && c < 0xdc00) { + if (++ci == s.length) throw 'UTF-8 encode: incomplete surrogate pair'; + var c2 = s.charCodeAt(ci); + if (c2 < 0xdc00 || c2 > 0xdfff) throw 'UTF-8 encode: second char code 0x' + c2.toString(16) + ' at index ' + ci + ' in surrogate pair out of range'; + c = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff); + bytes[i++] = c >> 18 | 240; + bytes[i++] = c >> 12 & 63 | 128; + } else { // c <= 0xffff + bytes[i++] = c >> 12 | 224; + } + bytes[i++] = c >> 6 & 63 | 128; } - var c = s.charCodeAt(ci); - if (c < 128) { - bytes[i++] = c; - continue; - } - if (c < 2048) { - bytes[i++] = c >> 6 | 192; - } else { - if (c > 0xd7ff && c < 0xdc00) { - if (++ci == s.length) throw 'UTF-8 encode: incomplete surrogate pair'; - var c2 = s.charCodeAt(ci); - if (c2 < 0xdc00 || c2 > 0xdfff) throw 'UTF-8 encode: second char code 0x' + c2.toString(16) + ' at index ' + ci + ' in surrogate pair out of range'; - c = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff); - bytes[i++] = c >> 18 | 240; - bytes[i++] = c>> 12 & 63 | 128; - } else { // c <= 0xffff - bytes[i++] = c >> 12 | 224; - } - bytes[i++] = c >> 6 & 63 | 128; - } - bytes[i++] = c & 63 | 128; - } - return bytes.subarray(0, i); + bytes[i++] = c & 63 | 128; + } + return bytes.subarray(0, i); } // Unmarshals an Uint8Array to string. export function decodeUTF8(bytes) { - var s = ''; - var i = 0; - while (i < bytes.length) { - var c = bytes[i++]; - if (c > 127) { - if (c > 191 && c < 224) { - if (i >= bytes.length) throw 'UTF-8 decode: incomplete 2-byte sequence'; - c = (c & 31) << 6 | bytes[i] & 63; - } else if (c > 223 && c < 240) { - if (i + 1 >= bytes.length) throw 'UTF-8 decode: incomplete 3-byte sequence'; - c = (c & 15) << 12 | (bytes[i] & 63) << 6 | bytes[++i] & 63; - } else if (c > 239 && c < 248) { - if (i+2 >= bytes.length) throw 'UTF-8 decode: incomplete 4-byte sequence'; - c = (c & 7) << 18 | (bytes[i] & 63) << 12 | (bytes[++i] & 63) << 6 | bytes[++i] & 63; - } else throw 'UTF-8 decode: unknown multibyte start 0x' + c.toString(16) + ' at index ' + (i - 1); - ++i; - } + var s = ''; + var i = 0; + while (i < bytes.length) { + var c = bytes[i++]; + if (c > 127) { + if (c > 191 && c < 224) { + if (i >= bytes.length) throw 'UTF-8 decode: incomplete 2-byte sequence'; + c = (c & 31) << 6 | bytes[i] & 63; + } else if (c > 223 && c < 240) { + if (i + 1 >= bytes.length) throw 'UTF-8 decode: incomplete 3-byte sequence'; + c = (c & 15) << 12 | (bytes[i] & 63) << 6 | bytes[++i] & 63; + } else if (c > 239 && c < 248) { + if (i + 2 >= bytes.length) throw 'UTF-8 decode: incomplete 4-byte sequence'; + c = (c & 7) << 18 | (bytes[i] & 63) << 12 | (bytes[++i] & 63) << 6 | bytes[++i] & 63; + } else { throw 'UTF-8 decode: unknown multibyte start 0x' + c.toString(16) + ' at index ' + (i - 1); } + ++i; + } - if (c <= 0xffff) s += String.fromCharCode(c); - else if (c <= 0x10ffff) { - c -= 0x10000; - s += String.fromCharCode(c >> 10 | 0xd800) - s += String.fromCharCode(c & 0x3FF | 0xdc00) - } else throw 'UTF-8 decode: code point 0x' + c.toString(16) + ' exceeds UTF-16 reach'; - } - return s; + if (c <= 0xffff) { s += String.fromCharCode(c); } else if (c <= 0x10ffff) { + c -= 0x10000; + s += String.fromCharCode(c >> 10 | 0xd800); + s += String.fromCharCode(c & 0x3FF | 0xdc00); + } else { throw 'UTF-8 decode: code point 0x' + c.toString(16) + ' exceeds UTF-16 reach'; } + } + return s; } diff --git a/src/identity/Identities.js b/src/identity/Identities.js index 7854ebde..fffd354e 100755 --- a/src/identity/Identities.js +++ b/src/identity/Identities.js @@ -135,6 +135,7 @@ class Identities { if (_this._isValid(identity)) { let id = identity.identifiers[0]; Object.assign(this._identities[id], identity); + //TODO: WARNING: This does not exist! this._storeIdentity(identity).then(() => { this._identities[id].status = 'created'; resolve(); diff --git a/src/identity/IdentityModule.js b/src/identity/IdentityModule.js index c2685562..4f283da5 100755 --- a/src/identity/IdentityModule.js +++ b/src/identity/IdentityModule.js @@ -296,7 +296,7 @@ class IdentityModule { log.log('[IdentityModule] Identity selected by hyperty.'); return resolve(assertion); }, (err) => { // if it got an error then just select identity from GUI - // log.error('[IdentityModule] Could not select identity from hyperty.'); + log.error('[IdentityModule] Could not select identity from hyperty:', err); _this.selectIdentityFromGUI().then((newAssertion) => { log.log('[IdentityModule] Identity selected by hyperty.'); return resolve(newAssertion); @@ -964,11 +964,11 @@ class IdentityModule { } sendGenerateMessage(contents, origin, usernameHint, idpDomain) { - log.log('[sendGenerateMessage:contents]', contents); - log.log('[sendGenerateMessage:origin]', origin); - log.log('[sendGenerateMessage:usernameHint]', usernameHint); - log.log('[sendGenerateMessage:idpDomain]', idpDomain); - log.log('sendGenerateMessage_hint'); + console.log('[sendGenerateMessage:contents]', contents); + console.log('[sendGenerateMessage:origin]', origin); + console.log('[sendGenerateMessage:usernameHint]', usernameHint); + console.log('[sendGenerateMessage:idpDomain]', idpDomain); + console.log('sendGenerateMessage_hint'); let _this = this; return new Promise((resolve, reject) => { @@ -980,7 +980,9 @@ class IdentityModule { type: 'execute', to: domain, from: _this._idmURL, body: { resource: 'identity', method: 'generateAssertion', params: { contents: contents, origin: origin, usernameHint: usernameHint } } }; try { + _this._messageBus.postMessage(message, (res) => { + let result = res.body.value; resolve(result); }); @@ -1011,11 +1013,12 @@ class IdentityModule { return new Promise(function(resolve, reject) { log.log('[IdentityModule:sendGenerateMessage:sendGenerateMessage]', usernameHint); _this.sendGenerateMessage(contents, origin, usernameHint, idpDomain).then((result) => { + console.log('generateAssertion.sendGenerateMessage result: ', JSON.stringify(result)); if (result.loginUrl) { _this.callIdentityModuleFunc('openPopup', { urlreceived: result.loginUrl }).then((value) => { - log.log('[IdentityModule:callIdentityModuleFunc:openPopup]', usernameHint); + console.log('[generateAssertion.callIdentityModuleFunc:openPopup]', value); resolve(value); }, (err) => { @@ -1024,6 +1027,7 @@ class IdentityModule { } else if (result) { _this.identities.addAssertion(result).then((value) => { + console.log('addAssertion', value); resolve(result); }, (err) => { reject(err); diff --git a/src/runtime/Storage.js b/src/runtime/Storage.js old mode 100644 new mode 100755 diff --git a/src/utils/PromiseQueue.js b/src/utils/PromiseQueue.js old mode 100644 new mode 100755 diff --git a/src/utils/utils.js b/src/utils/utils.js index 18a348e8..f3162325 100755 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -567,7 +567,7 @@ export function parse(value) { } catch (err) { console.error('[Utils.parse:err]' + err); console.trace(); - console.error('That that cause the error:', value); + console.error('The value that cause the error:', value); throw err; } } @@ -585,3 +585,23 @@ export function parseToUint8Array(value) { throw err; } } + +/** + * filter the messages to hash, by removing some fields not generated by the runtime core + * @param {Message} message message + * @param {String} decryptedValue (Optional) value from body.value in case it originally comes encrypted + * @param {JSON} identity(Optional) add the hyperty identity associated in case is not added to the initial message + * @return {Message} new message filtered + */ +export function filterMessageToHash(message, decryptedValue, identity) { + return { + type: message.type, + from: message.from, + to: message.to, + body: { + identity: identity || message.body.identity, + value: decryptedValue || message.body.value, + handshakePhase: message.body.handshakePhase + } + }; +} diff --git a/test/CryptoManager.spec.js b/test/CryptoManager.spec.js new file mode 100755 index 00000000..cd1c7462 --- /dev/null +++ b/test/CryptoManager.spec.js @@ -0,0 +1,1233 @@ +'use strict mode'; +import chaiAsPromised from 'chai-as-promised'; +import assertArrays from 'chai-arrays'; +import MessageBus from '../src/bus/MessageBus'; +import IdentityModule from '../src/identity/IdentityModule'; +import { runtimeFactory } from './resources/runtimeFactory'; +import DataObjectsStorage from '../src/store-objects/DataObjectsStorage'; +import PEP from '../src/policy/PEP'; +import RuntimeCoreCtx from '../src/policy/context/RuntimeCoreCtx'; +import Crypto from '../src/cryptoManager/Crypto'; +import CryptoManager from '../src/cryptoManager/CryptoManager'; +import Registry from '../src/registry/Registry'; + +chai.config.truncateThreshold = 0; +chai.use(chaiAsPromised); +chai.use(assertArrays); + +const IV_SIZE = 16; +const RANDOM_VALUE_SIZE = 32; +const PMS_SIZE = 48; + +const expect = chai.expect; +const assert = chai.assert; + +let crypto = undefined; + +let bus = undefined; +let storageManager = undefined; +let runtimeCapabilities = undefined; +let hyperURL1 = undefined; +let hyperURL2 = undefined; +let runtimeURL = undefined; +let policyEngine = undefined; +let msgNodeResponseFunc = undefined; +let coreDiscovery = undefined; +let objURL = undefined; +let identityModule = undefined; +let userEmail = undefined; +let userURL = undefined; +let loginUrl = undefined; +let cryptoManager = undefined; +let registry = undefined; +let appSandbox = undefined; +let runtimeCatalogue = undefined; +let dataObjectsStorage = undefined; + + +describe('Crypto tests', function() { + + before('Init structures before test', function() { + crypto = new Crypto(runtimeFactory); + console.log(crypto); + }); + + + it('Test generated IVs', function() { + let IV_1 = crypto.generateIV(); + let IV_2 = crypto.generateIV(); + expect(IV_1).to.be.ofSize(IV_SIZE); + expect(IV_2).to.be.ofSize(IV_SIZE); + expect(IV_1).not.to.be.equalTo(IV_2); + }); + + it('Test generated random values', function() { + let rand1 = crypto.generateRandom(); + let rand2 = crypto.generateRandom(); + expect(rand1).to.be.ofSize(RANDOM_VALUE_SIZE); + expect(rand2).to.be.ofSize(RANDOM_VALUE_SIZE); + expect(rand1).not.to.be.equalTo(rand2); + }); + + it('Test generatePMS key', function() { + let PMS_1 = crypto.generatePMS(); + let PMS_2 = crypto.generatePMS(); + expect(PMS_1).to.be.ofSize(PMS_SIZE); + expect(PMS_2).to.be.ofSize(PMS_SIZE); + expect(PMS_1).not.to.be.equalTo(PMS_2); + }); + + it('Test generateMasterSecret key', function(done) { + let oldKey = crypto.generateRandom(); + let seed = crypto.generateRandom(); + + crypto.generateMasterSecret(oldKey, seed).then(key1 => { + crypto + .generateMasterSecret(oldKey, seed) + .then(key2 => { + expect(key1).to.be.ofSize(PMS_SIZE); + expect(key2).to.be.ofSize(PMS_SIZE); + expect(key1).to.be.equalTo(key2); + }) + .then(function() { done(); }); + }); + }); + + it('Test concatPMSwithRandoms key', function() { + let PMSKey = crypto.generatePMS(); + let newChatCrypto = crypto.generateRandom(); + let rand2 = crypto.generateRandom(); + let totalSize = PMSKey.length + newChatCrypto.length + rand2.length; + let concat1 = crypto.concatPMSwithRandoms(PMSKey, newChatCrypto, rand2); + let concat2 = crypto.concatPMSwithRandoms(PMSKey, newChatCrypto, rand2); + expect(concat1).to.be.ofSize(totalSize); + expect(concat2).to.be.ofSize(totalSize); + expect(concat1).to.be.equalTo(concat2); + }); + + it('Test generateKeys', function(done) { + let secret = crypto.generateRandom(); + let seed = crypto.generateRandom(); + crypto.generateKeys(secret, seed).then(key1 => { + crypto + .generateKeys(secret, seed) + .then(key2 => { + expect(key1).to.be.ofSize(4); + expect(key1[0]).to.be.ofSize(RANDOM_VALUE_SIZE); + expect(key1[1]).to.be.ofSize(RANDOM_VALUE_SIZE); + expect(key1[2]).to.be.ofSize(RANDOM_VALUE_SIZE); + expect(key1[3]).to.be.ofSize(RANDOM_VALUE_SIZE); + expect(key2).to.be.ofSize(4); + expect(key2[0]).to.be.ofSize(RANDOM_VALUE_SIZE); + expect(key2[1]).to.be.ofSize(RANDOM_VALUE_SIZE); + expect(key2[2]).to.be.ofSize(RANDOM_VALUE_SIZE); + expect(key2[3]).to.be.ofSize(RANDOM_VALUE_SIZE); + expect(key1).not.to.be.equalTo(key2); + }) + .then(function() { done(); }); + }); + }); + + it('Test genereated keys pair with encrypt and decrypt data', function(done) { + crypto.generateRSAKeyPair().then(keyPair => { + let data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); + crypto.encryptRSA(keyPair.public, data).then(encryptedData => { + crypto + .decryptRSA(keyPair.private, encryptedData) + .then(decryptedData => { + expect(data).to.be.equalTo(decryptedData); + }) + .then(function() { done(); }); + }); + }); + }); + + it('Test AES algorithm', function(done) { + let AESKey = crypto.generateRandom(); + let IV = crypto.generateIV(); + expect(AESKey).to.be.ofSize(RANDOM_VALUE_SIZE); + expect(IV).to.be.ofSize(IV_SIZE); + let data = '0,1,2,3,4,5,6,7,8,9'; + crypto.encryptAES(AESKey, data, IV).then(encryptedData => { + crypto + .decryptAES(AESKey, encryptedData, IV) + .then(decryptedData => { + expect(data).to.equal(decryptedData); + }) + .then(function() { done(); }); + }); + }); + + it('Test genereated keys pair, signRSA and verifyRSA', function(done) { + crypto.generateRSAKeyPair().then(keyPair => { + let data = 'test'; + crypto.signRSA(keyPair.private, data).then(signedData => { + crypto.verifyRSA(keyPair.public, data, signedData) + .then(verificationResult => { + assert.isTrue(verificationResult, 'The signitured is different'); + }) + .then(function() { done(); }); + }).catch(err => { console.log(err); }); + }).catch(err => { console.log(err); }); + }); + + it('Test hashHMAC and verifyHMAC', function(done) { + let key = crypto.generateRandom(); + let data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); + crypto.hashHMAC(key, data).then(HMAC => { + crypto + .verifyHMAC(key, data, HMAC) + .then(verificationResult => { + assert.isTrue(verificationResult, 'HMAC is different'); + }) + .then(function() { done(); }); + }); + }); +}); + + + + +describe('CryptoManager tests', function() { + + before('Init structures once before all tests', function() { + crypto = new Crypto(runtimeFactory); + + hyperURL1 = 'hyperty://h1.domain/h1'; + hyperURL2 = 'hyperty://h2.domain/h2'; + runtimeURL = 'runtime://fake-runtime'; + objURL = 'resource://obj1'; + userEmail = 'testandthink123@gmail.com'; + userURL = 'user://google.com/testandthink123@gmail.com'; + loginUrl = + 'https://accounts.google.com/o/oauth2/auth?scope=openid%20email%20profile&client_id=808329566012-tqr8qoh111942gd2kg007t0s8f277roi.apps.googleusercontent.com&redirect_uri=https://localhost&response_type=code token id_token&state=state&access_type=offline&nonce=NDgsMTMwLDEsMzQsNDgsMTMsNiw5LDQyLDEzNCw3MiwxMzQsMjQ3LDEzLDEsMSwxLDUsMCwzLDEzMCwxLDE1LDAsNDgsMTMwLDEsMTAsMiwxMzAsMSwxLDAsMTQ3LDc3LDE2MiwyMjUsNzYsMTE5LDM4LDI1MSw3MiwyMjcsNTIsMjA4LDE4MSwxODQsMTUzLDU4LDExOCwxNTksODUsOTksNzEsMTE4LDQzLDIzMiwxMTUsMTEsMTgwLDE2LDIwNCwyMTIsODgsMjUwLDIyOCw0NywxNDksMTExLDc4LDEzNCwxMjEsMjA1LDIxNiwxOTgsMTYsMTE5LDEwMywxNTQsMjM5LDE1NSwxMjMsMTk4LDUxLDE3Niw4NywxNTcsMjQ0LDE1MiwxMDUsMTIsMjA1LDg5LDI1MiwyNTIsNDgsMTU4LDE1OCwyOSwxNzYsMTAzLDE1MSwyMDQsNzgsMjEsODAsMTQzLDEyMCwxMDcsMjQ1LDI0NSwzLDkxLDIwNiwyNCwxMjAsNzMsMTgwLDEyOCwxNjAsMTA0LDIxNyw4OSwzOCwyMzEsMjksMjI3LDI1Myw0OCwyOSw4MywxMDksMTU0LDI2LDIxNSwxMzEsMjQxLDIzNyw1MCwxMzEsMjM0LDc4LDcwLDEzOCwyNDMsNSwyNTMsMTgyLDkxLDIyNSwxODIsMTgwLDUyLDE3LDE1LDEwOSwxMSwxMjYsOTUsMjE2LDM3LDIyNCwxNCwwLDIxNSwyMDQsNjEsMTU2LDIwNywxMzEsMTIxLDc2LDkzLDE2OCwxNTEsNDAsMTcsMTI0LDExMCw4MiwyMTksMjA1LDIxNSwyNDksMTcsMjA4LDk2LDExNCwxOTQsNjcsMjMsMTUsMjA2LDIyNiwxMzIsMTg0LDE0MSwxMTgsMTAsMTA1LDkyLDg3LDYwLDE3NiwxNTYsMTMxLDk0LDUyLDEwLDI0OCwyNTUsMjM5LDgsMTgxLDE3Myw2NywxODEsMjUsNzYsMjU1LDUzLDE3NSwxOCwxMzgsMTkwLDEyNCwxODIsMTU1LDE4LDE5OSwxMzIsNzUsMjMyLDUsMTU2LDE1MiwxODcsMTIyLDU4LDIzNiwxNTgsMTY3LDQ3LDE5MywxMzYsODIsMjM0LDIxMSwxNzYsODAsMTg1LDE3MSwxMjMsMCw2LDE5OCwyMTQsMjEsMTAzLDc4LDIyNywzNywxMDIsNjksMTYsNjAsOCwyMDMsNTQsMTc0LDE3MiwyMDksMTY0LDIyMSwyNywxNTUsODUsMTI2LDE1NSwyNDEsODMsMSwxMTgsMTE3LDIsMjM3LDEwMSw3MiwxMDcsMiwzLDEsMCwx'; + msgNodeResponseFunc = msgNodeResponseFuncPopulate; + coreDiscovery = coreDiscoveryPopulate; + storageManager = runtimeFactory.storageManager('idModule:identities'); + runtimeCapabilities = runtimeFactory.runtimeCapabilities(storageManager); + }); + + beforeEach('Init structures before each test', function() { + + appSandbox = runtimeFactory.createAppSandbox(); + runtimeCatalogue = runtimeFactory.createRuntimeCatalogue(); + registry = new Registry(runtimeURL, appSandbox, identityModule, runtimeCatalogue, runtimeCapabilities, storageManager); + dataObjectsStorage = new DataObjectsStorage(storageManager, {}); + + bus = new MessageBus(registry); + bus.pipeline = {}; + bus.pipeline.handlers = handlersPopulate; + bus._onPostMessage = msg => { + msgNodeResponseFunc(bus, msg); + }; + + cryptoManager = new CryptoManager(); + + cryptoManager.init( + runtimeURL, + runtimeCapabilities, + storageManager, + registry, + coreDiscoveryPopulate, + dataObjectsStorage, + identityModule, + runtimeCatalogue + ); + +/* + identityModule = new IdentityModule( + runtimeURL, + runtimeCapabilities, + storageManager, + dataObjectsStorage, + cryptoManager, + runtimeFactory.createRuntimeCatalogue() + ); + + identityModule.messageBus = bus; + identityModule.registry = registry; + identityModule.coreDiscovery = coreDiscovery; + + let runtimeCoreCtx = new RuntimeCoreCtx( + runtimeURL, + identityModule, + registry, + storageManager, + runtimeFactory.runtimeCapabilities() + ); + policyEngine = new PEP(runtimeCoreCtx); + */ + }); + + it('test encryptDataObject/decryptDataObject', function(done) { + let sender = 'comm://localhost/5f8d87fd-c56b-47fc-ad47-28d55f01e23a'; + let sessionKey = crypto.generateRandom(); + let dataObjectSessionKeys = {}; + dataObjectSessionKeys[sender] = { + sessionKey: sessionKey, + isToEncrypt: true + }; + storageManager.set('dataObjectSessionKeys', 0, dataObjectSessionKeys); + + cryptoManager + .encryptDataObject(dataObjectPopulate, sender) + .then(encryDataObject => { + cryptoManager + .decryptDataObject(encryDataObject, sender) + .then(decryDataObject => { + let value = + decryDataObject.value.data.content === + dataObjectPopulate.data.content && + encryDataObject.hasOwnProperty('value') && + encryDataObject.hasOwnProperty('iv'); + assert(value, 'Decrypted data is not the same'); + }) + .then(done); + }); + }); + + it('test _filterMessageToHash', function() { + let message = messageToBeHashedPopulate; + let decryptedValue = 'decryptedValue'; + let identity = hyperURL1; + let receivedHash = cryptoManager._filterMessageToHash( + message, + decryptedValue, + identity + ); + + let valueVerificationResult = + receivedHash.type === messageToBeHashedPopulate.type && + receivedHash.from === messageToBeHashedPopulate.from && + receivedHash.to === messageToBeHashedPopulate.to && + receivedHash.body.identity === + (identity || messageToBeHashedPopulate.body.identity) && + receivedHash.body.value === + (decryptedValue || messageToBeHashedPopulate.body.value) && + receivedHash.body.handshakePhase === + messageToBeHashedPopulate.body.handshakePhase; + assert(valueVerificationResult, 'Received message is not the expected'); + }); + + it('test _newChatCrypto', function(done) { + let message = messageForNewChatCrypto; + let receiver = false; + + crypto.generateRSAKeyPair().then(keyPair => { + identityModule.storeIdentity(returnedAssertionValuePopulate, keyPair).then(result =>{ + let newChatCrypto = cryptoManager.default._newChatCrypto(message, userURL, receiver); + let valueVerificationResult = + newChatCrypto.hypertyFrom.userID === userEmail && + newChatCrypto.hypertyFrom.messageInfo.assertion === returnedAssertionValuePopulate.assertion && + newChatCrypto.callback === messageForNewChatCrypto.callback && + newChatCrypto.dataObjectURL === message.dataObjectURL; + + assert(valueVerificationResult, 'Generated chat crypto messege is not the expected one'); + }).then(function() { done(); }); + }); + }); + + + it('test _sendReporterSessionKey', function(done) { + let message = { + from: hyperURL1, to: hyperURL2 + }; + + let chatKeys = { + dataObjectURL: 'comm://localhost/5f8d87fd-c56b-47fc-ad47-28d55f01e23a', + hypertyFrom: {messageInfo: 'messageInfo'}, + keys: { + hypertyFromSessionKey: crypto.generateRandom(), + hypertyFromHashKey: crypto.generateRandom() + } + }; + + cryptoManager.default._sendReporterSessionKey(message, chatKeys).then(result =>{ + let assertFields = result.hasOwnProperty('message') && + result.message.type === 'handshake' && + result.message.to === hyperURL1 && + result.message.from === hyperURL2 && + result.message.body.hasOwnProperty('handshakePhase') && + result.message.body.hasOwnProperty('value') && + result.hasOwnProperty('chatKeys') && + result.chatKeys.hasOwnProperty('hypertyFrom') && + result.chatKeys.hasOwnProperty('keys') && + result.chatKeys.keys.hasOwnProperty('hypertyFromHashKey'); + + assert(assertFields, 'Result has not the required fields or values'); + }).then(function() { done(); }); + }); + + + //test isFromHyperty to isToHyperty communication -> handshake + update //TODO incomplete cases + it('test encryptMessage - startHandShake and update', function(done) { + let chatKeys = chatKeysPopulate; + let helloMessage = messageForNewChatCrypto; + let keyPair = { + public: chatKeysPopulate.hypertyFrom.publicKey, + private: chatKeysPopulate.hypertyFrom.privateKey + }; + + chatKeys.keys.hypertyFromSessionKey = crypto.generateRandom(); + chatKeys.keys.hypertyFromHashKey = crypto.generateRandom(); + chatKeys.keys.hypertyToSessionKey = chatKeys.keys.hypertyFromSessionKey; + chatKeys.keys.hypertyToHashKey = chatKeys.keys.hypertyFromHashKey; + identityModule.registry.getHypertyOwner = getHypertyOwnerPopulate; + cryptoManager.default.chatKeys[encryptMessagePopulate.from + '<->' + encryptMessagePopulate.to] = chatKeys; + cryptoManager.default.chatKeys[encryptMessagePopulate.to + '<->' + encryptMessagePopulate.from] = chatKeys; + + + identityModule.storeIdentity(returnedAssertionValuePopulate, keyPair).then(result1 =>{ + helloMessage.body.handshakePhase = 'startHandShake'; + + cryptoManager.default._doHandShakePhase(helloMessage, chatKeys).then(result2 => { + + cryptoManager.default.encryptMessage(encryptMessagePopulate).then(resolvedMessage => { + assert.equal(encryptMessagePopulate, resolvedMessage, 'Messages should be the same'); + encryptMessagePopulate.type = 'update'; + + cryptoManager.default.encryptMessage(encryptMessagePopulate).then(updateMessage => { + assert.equal(encryptMessagePopulate, updateMessage, 'Messages should be the same'); + encryptMessagePopulate.type = 'encrypt';//Don't know the correct keyword but this works for now + + cryptoManager.default.encryptMessage(encryptMessagePopulate).then(encryptedMessage => { + + cryptoManager.default.decryptMessage(encryptedMessage).then(decryptedMessage => { + assert.equal(decryptedMessage.body.value, encryptMessagePopulate.body.value, 'Encryption failed'); + }).then(function() { done(); }); + }); + }); + }); + }); + }); + encryptMessagePopulate.type = 'handshake'; + }); + + + it('test _doHandShakePhase - startHandShake', function(done) { + let message = messageForNewChatCrypto; + message.body.handshakePhase = 'startHandShake'; + let chatKeys = chatKeysPopulate; + cryptoManager.default._doHandShakePhase(message, chatKeys).then(result => { + let assertFields = result.message.type === 'handshake' && + result.message.body.handshakePhase === 'senderHello' && + result.hasOwnProperty('chatKeys') && + result.message.type === 'handshake'; + assert(assertFields, 'Result has not the expected values'); + }).then(function() { done(); }); + }); + + + it('test _doHandShakePhase - senderHello', function(done) { + let message = senderHelloMessagePopulate; + let chatKeys = chatKeysPopulate; + cryptoManager.default._doHandShakePhase(message, chatKeys).then(resultMessage => { + let assertFields = resultMessage.message.type === 'handshake' && + resultMessage.message.body.handshakePhase === 'receiverHello' && + resultMessage.hasOwnProperty('chatKeys') && + resultMessage.hasOwnProperty('message'); + assert(assertFields, 'Result has not the expected values'); + }).then(function() { done(); }); + }); + + it('test _doHandShakePhase - receiverHello', function(done) { + let message = receiverHelloMessagePopulate; + + //let cloneOfA = JSON.parse(JSON.stringify(object)); + let chatKeys = chatKeysPopulate; + crypto.generateRSAKeyPair().then(keyPair => { + chatKeys.hypertyFrom.privateKey = keyPair.private; + chatKeys.hypertyFrom.publicKey = keyPair.public; + cryptoManager.default._doHandShakePhase(message, chatKeys).then(resultMessage => { + let assertFields = resultMessage.message.type === 'handshake' && + resultMessage.message.body.handshakePhase === 'senderCertificate' && + resultMessage.hasOwnProperty('chatKeys') && + resultMessage.hasOwnProperty('message'); + assert(assertFields, 'Result has not the expected values'); + }).then(function() { done(); }); + }); + }); + + it('test _doHandShakePhase - senderCertificate', function(done) { + let chatKeys = chatKeysPopulate; + let message = senderCertificateMessagePopulate; + let receivedValue = JSON.parse(atob(message.body.value)); + + receivedValue.iv = crypto.generateIV(); + chatKeys.keys.toRandom = crypto.generateRandom(); + chatKeys.keys.fromRandom = crypto.generateRandom(); + + crypto.generateRSAKeyPair().then(keyPair => { + chatKeys.hypertyFrom.privateKey = keyPair.private; + chatKeys.hypertyFrom.publicKey = keyPair.public; + let pms = crypto.generatePMS(); + chatKeys.keys.premasterKey = new Uint8Array(pms); + + crypto.encryptRSA(chatKeys.hypertyFrom.publicKey, pms).then(encryptedVal =>{ + receivedValue.assymetricEncryption = crypto.encode(encryptedVal); + let messageHash = cryptoManager._filterMessageToHash(message, chatKeys.keys.premasterKey); + let messageToBeSigned = JSON.stringify(chatKeys.handshakeHistory) + JSON.stringify(messageHash); + let concatKey = crypto.concatPMSwithRandoms(chatKeys.keys.premasterKey, chatKeys.keys.toRandom, chatKeys.keys.fromRandom); + + crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(masterKey =>{ + crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(keys =>{ + + crypto.encryptAES(keys[1], 'ok', receivedValue.iv).then(aesEncryption => { + receivedValue.symetricEncryption = crypto.encode(aesEncryption); + + crypto.signRSA(chatKeys.hypertyFrom.privateKey, messageToBeSigned).then(signature =>{ + receivedValue.signature = crypto.encode(signature); + + let filteredMessage = cryptoManager._filterMessageToHash(message, 'ok' + receivedValue.iv); + crypto.hashHMAC(keys[3], filteredMessage).then(HMAC => { + receivedValue.hash = crypto.encode(HMAC); + + receivedValue.iv = crypto.encode(receivedValue.iv); + message.body.value = btoa(JSON.stringify(receivedValue)); + cryptoManager.default._doHandShakePhase(message, chatKeys).then(resultMessage => { + let assertFields = resultMessage.chatKeys.hypertyFrom.userID === userEmail && + resultMessage.message.body.handshakePhase === 'receiverFinishedMessage' && + resultMessage.hasOwnProperty('chatKeys') && + resultMessage.hasOwnProperty('message'); + assert(assertFields, 'Result has not the expected values'); + }).then(function() { done(); }); + }); + }); + }); + }); + }); + }); + }); + }); + + it('test _doHandShakePhase - receiverFinishedMessage', function(done) { + let chatKeys = chatKeysPopulate; + let message = receiverFinishedMessagePopulate; + let receivedValue = JSON.parse(atob(message.body.value)); + + receivedValue.iv = crypto.generateIV(); + chatKeys.keys.toRandom = crypto.generateRandom(); + chatKeys.keys.fromRandom = crypto.generateRandom(); + + let pms = crypto.generatePMS(); + chatKeys.keys.premasterKey = new Uint8Array(pms); + let concatKey = crypto.concatPMSwithRandoms(chatKeys.keys.premasterKey, chatKeys.keys.toRandom, chatKeys.keys.fromRandom); + + crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(masterKey =>{ + crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(keys =>{ + chatKeys.keys.hypertyToSessionKey = keys[1]; + crypto.encryptAES(keys[1], 'ok', receivedValue.iv).then(aesEncryption => { + receivedValue.value = crypto.encode(aesEncryption); + + let filteredMessage = cryptoManager._filterMessageToHash(message, 'ok' + receivedValue.iv); + crypto.hashHMAC(keys[3], filteredMessage).then(HMAC => { + chatKeys.keys.hypertyToHashKey = keys[3]; + receivedValue.hash = crypto.encode(HMAC); + receivedValue.iv = crypto.encode(receivedValue.iv); + message.body.value = btoa(JSON.stringify(receivedValue)); + + cryptoManager.default._doHandShakePhase(message, chatKeys).then(resultMessage => { + let assertFields = resultMessage.chatKeys.hypertyFrom.userID === userEmail && + resultMessage.message.type === 'create' && + resultMessage.message.body.value === chatKeysPopulate.initialMessage.body.value && + resultMessage.hasOwnProperty('chatKeys') && + resultMessage.hasOwnProperty('message'); + assert(assertFields, 'Result has not the expected values'); + }).then(function() { done(); }); + + }); + }); + }); + }); + }); + + it('test _doHandShakePhase - reporterSessionKey', function(done) { + let chatKeys = chatKeysPopulate; + let message = receiverAcknowledgeMessagePopulate; + let receivedValue = JSON.parse(atob(message.body.value)); + + receivedValue.iv = crypto.generateIV(); + chatKeys.keys.toRandom = crypto.generateRandom(); + chatKeys.keys.fromRandom = crypto.generateRandom(); + + receivedValue.iv = crypto.generateIV(); + chatKeys.keys.toRandom = crypto.generateRandom(); + chatKeys.keys.fromRandom = crypto.generateRandom(); + + let pms = crypto.generatePMS(); + chatKeys.keys.premasterKey = new Uint8Array(pms); + let concatKey = crypto.concatPMSwithRandoms(chatKeys.keys.premasterKey, chatKeys.keys.toRandom, chatKeys.keys.fromRandom); + + crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(masterKey =>{ + + crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(keys => { + chatKeys.keys.hypertyToSessionKey = keys[1]; + chatKeys.keys.hypertyFromSessionKey = keys[1]; + chatKeys.keys.hypertyFromHashKey = keys[1]; + + let sessionKey = crypto.encode(keys[1]); + + // let dataObjectURL = crypto.encode(dataObjectURL); + let dataToEncrypt = JSON.stringify({value: sessionKey, dataObjectURL: chatKeys.dataObjectURL}); + + crypto.encryptAES(keys[1], dataToEncrypt, receivedValue.iv).then(aesEncryption => { + receivedValue.value = crypto.encode(aesEncryption); + + let filteredMessage = cryptoManager._filterMessageToHash(message, 'ok' + receivedValue.iv); + + crypto.hashHMAC(keys[3], filteredMessage).then(HMAC => { + chatKeys.keys.hypertyToHashKey = keys[3]; + receivedValue.hash = crypto.encode(HMAC); + receivedValue.iv = crypto.encode(receivedValue.iv); + message.body.value = btoa(JSON.stringify(receivedValue)); + + cryptoManager._doHandShakePhase(message, chatKeys).then(resultMessage => { + assert.equal(resultMessage, 'handShakeEnd', 'Result has not the expected values'); + }).then(function() { done(); }); + + }); + + }); + + }); + }); + + }); + + it('test doMutualAuthentication', function(done) { + let sender = hyperURL1; + let receiver = hyperURL2; + + identityModule.registry.getReporterURLSynchonous = (sender) => { return undefined; }; + identityModule.registry.getHypertyOwner = getHypertyOwnerPopulate; + let chatKeys = chatKeysPopulate; + chatKeys.keys.hypertyFromSessionKey = crypto.generateRandom(); + chatKeys.keys.hypertyFromHashKey = crypto.generateRandom(); + 'comm://localhost/5f8d87fd-c56b-47fc-ad47-28d55f01e23a', + cryptoManager.default.chatKeys[sender + '<->' + receiver] = chatKeys; + + cryptoManager.default._doMutualAuthenticationPhase1(sender, receiver).then(resultMessage => { + assert.equal(resultMessage, 'exchange of chat sessionKey initiated', 'Message is not the expected one'); + }).then(function() { done(); }); + }); + + + //test isFromHyperty to isToHyperty communication -> handshake + update //TODO incomplete cases + it('test encryptMessage - startHandShake and update', function(done) { + let chatKeys = chatKeysPopulate; + let helloMessage = messageForNewChatCrypto; + let keyPair = { + public: chatKeysPopulate.hypertyFrom.publicKey, + private: chatKeysPopulate.hypertyFrom.privateKey + }; + let encryptMessage = encryptMessagePopulate; + + chatKeys.keys.hypertyFromSessionKey = crypto.generateRandom(); + chatKeys.keys.hypertyFromHashKey = crypto.generateRandom(); + chatKeys.keys.hypertyToSessionKey = chatKeys.keys.hypertyFromSessionKey; + chatKeys.keys.hypertyToHashKey = chatKeys.keys.hypertyFromHashKey; + identityModule.registry.getHypertyOwner = getHypertyOwnerPopulate; + cryptoManager.default.chatKeys[encryptMessagePopulate.from + '<->' + encryptMessagePopulate.to] = chatKeys; + cryptoManager.default.chatKeys[encryptMessagePopulate.to + '<->' + encryptMessagePopulate.from] = chatKeys; + + identityModule.storeIdentity(returnedAssertionValuePopulate, keyPair).then(result1 =>{ + helloMessage.body.handshakePhase = 'startHandShake'; + + cryptoManager.default._doHandShakePhase(helloMessage, chatKeys).then(result2 => { + + cryptoManager.default.encryptMessage(encryptMessagePopulate).then(resolvedMessage => { + assert.equal(encryptMessagePopulate, resolvedMessage, 'Messages should be the same'); + encryptMessagePopulate.type = 'update'; + + cryptoManager.default.encryptMessage(encryptMessagePopulate).then(updateMessage => { + assert.equal(encryptMessagePopulate, updateMessage, 'Messages should be the same'); + encryptMessagePopulate.type = 'encrypt';//Don't know the correct keyword but this works for now + + cryptoManager.default.encryptMessage(encryptMessagePopulate).then(encryptedMessage => { + + cryptoManager.default.decryptMessage(encryptedMessage).then(decryptedMessage => { + assert.equal(decryptedMessage.body.value, encryptMessagePopulate.body.value, 'Encryption failed'); + }).then(function() { done(); }); + }); + }); + }); + }); + }); + encryptMessagePopulate.type = 'handshake'; + }); + + + it('test _doHandShakePhase - startHandShake', function(done) { + let message = messageForNewChatCrypto; + message.body.handshakePhase = 'startHandShake'; + let chatKeys = chatKeysPopulate; + cryptoManager.default._doHandShakePhase(message, chatKeys).then(result => { + let assertFields = result.message.type === 'handshake' && + result.message.body.handshakePhase === 'senderHello' && + result.hasOwnProperty('chatKeys') && + result.message.type === 'handshake'; + assert(assertFields, 'Result has not the expected values'); + }).then(function() { done(); }); + }); + + + it('test _doHandShakePhase - senderHello', function(done) { + let message = senderHelloMessagePopulate; + let chatKeys = chatKeysPopulate; + cryptoManager.default._doHandShakePhase(message, chatKeys).then(resultMessage => { + let assertFields = resultMessage.message.type === 'handshake' && + resultMessage.message.body.handshakePhase === 'receiverHello' && + resultMessage.hasOwnProperty('chatKeys') && + resultMessage.hasOwnProperty('message'); + assert(assertFields, 'Result has not the expected values'); + }).then(function() { done(); }); + }); + + it('test _doHandShakePhase - receiverHello', function(done) { + let message = receiverHelloMessagePopulate; + + //let cloneOfA = JSON.parse(JSON.stringify(object)); + let chatKeys = chatKeysPopulate; + crypto.generateRSAKeyPair().then(keyPair => { + chatKeys.hypertyFrom.privateKey = keyPair.private; + chatKeys.hypertyFrom.publicKey = keyPair.public; + cryptoManager.default._doHandShakePhase(message, chatKeys).then(resultMessage => { + let assertFields = resultMessage.message.type === 'handshake' && + resultMessage.message.body.handshakePhase === 'senderCertificate' && + resultMessage.hasOwnProperty('chatKeys') && + resultMessage.hasOwnProperty('message'); + assert(assertFields, 'Result has not the expected values'); + }).then(function() { done(); }); + }); + }); + + it('test _doHandShakePhase - senderCertificate', function(done) { + let chatKeys = chatKeysPopulate; + let message = senderCertificateMessagePopulate; + let receivedValue = JSON.parse(atob(message.body.value)); + + receivedValue.iv = crypto.generateIV(); + chatKeys.keys.toRandom = crypto.generateRandom(); + chatKeys.keys.fromRandom = crypto.generateRandom(); + + crypto.generateRSAKeyPair().then(keyPair => { + chatKeys.hypertyFrom.privateKey = keyPair.private; + chatKeys.hypertyFrom.publicKey = keyPair.public; + let pms = crypto.generatePMS(); + chatKeys.keys.premasterKey = new Uint8Array(pms); + + crypto.encryptRSA(chatKeys.hypertyFrom.publicKey, pms).then(encryptedVal =>{ + receivedValue.assymetricEncryption = crypto.encode(encryptedVal); + let messageHash = cryptoManager._filterMessageToHash(message, chatKeys.keys.premasterKey); + let messageToBeSigned = JSON.stringify(chatKeys.handshakeHistory) + JSON.stringify(messageHash); + let concatKey = crypto.concatPMSwithRandoms(chatKeys.keys.premasterKey, chatKeys.keys.toRandom, chatKeys.keys.fromRandom); + + crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(masterKey =>{ + crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(keys =>{ + + crypto.encryptAES(keys[1], 'ok', receivedValue.iv).then(aesEncryption => { + receivedValue.symetricEncryption = crypto.encode(aesEncryption); + + crypto.signRSA(chatKeys.hypertyFrom.privateKey, messageToBeSigned).then(signature =>{ + receivedValue.signature = crypto.encode(signature); + + let filteredMessage = cryptoManager._filterMessageToHash(message, 'ok' + receivedValue.iv); + crypto.hashHMAC(keys[3], filteredMessage).then(HMAC => { + receivedValue.hash = crypto.encode(HMAC); + + receivedValue.iv = crypto.encode(receivedValue.iv); + message.body.value = btoa(JSON.stringify(receivedValue)); + cryptoManager.default._doHandShakePhase(message, chatKeys).then(resultMessage => { + let assertFields = resultMessage.chatKeys.hypertyFrom.userID === userEmail && + resultMessage.message.body.handshakePhase === 'receiverFinishedMessage' && + resultMessage.hasOwnProperty('chatKeys') && + resultMessage.hasOwnProperty('message'); + assert(assertFields, 'Result has not the expected values'); + }).then(function() { done(); }); + }); + }); + }); + }); + }); + }); + }); + }); + + it('test _doHandShakePhase - receiverFinishedMessage', function(done) { + let chatKeys = chatKeysPopulate; + let message = receiverFinishedMessagePopulate; + let receivedValue = JSON.parse(atob(message.body.value)); + + receivedValue.iv = crypto.generateIV(); + chatKeys.keys.toRandom = crypto.generateRandom(); + chatKeys.keys.fromRandom = crypto.generateRandom(); + + let pms = crypto.generatePMS(); + chatKeys.keys.premasterKey = new Uint8Array(pms); + let concatKey = crypto.concatPMSwithRandoms(chatKeys.keys.premasterKey, chatKeys.keys.toRandom, chatKeys.keys.fromRandom); + + crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(masterKey =>{ + crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(keys =>{ + chatKeys.keys.hypertyToSessionKey = keys[1]; + crypto.encryptAES(keys[1], 'ok', receivedValue.iv).then(aesEncryption => { + receivedValue.value = crypto.encode(aesEncryption); + + let filteredMessage = cryptoManager._filterMessageToHash(message, 'ok' + receivedValue.iv); + crypto.hashHMAC(keys[3], filteredMessage).then(HMAC => { + chatKeys.keys.hypertyToHashKey = keys[3]; + receivedValue.hash = crypto.encode(HMAC); + receivedValue.iv = crypto.encode(receivedValue.iv); + message.body.value = btoa(JSON.stringify(receivedValue)); + + cryptoManager.default._doHandShakePhase(message, chatKeys).then(resultMessage => { + let assertFields = resultMessage.chatKeys.hypertyFrom.userID === userEmail && + resultMessage.message.type === 'create' && + resultMessage.message.body.value === chatKeysPopulate.initialMessage.body.value && + resultMessage.hasOwnProperty('chatKeys') && + resultMessage.hasOwnProperty('message'); + assert(assertFields, 'Result has not the expected values'); + }).then(function() { done(); }); + + }); + }); + }); + }); + }); + + it('test _doHandShakePhase - reporterSessionKey', function(done) { + let chatKeys = chatKeysPopulate; + let message = receiverAcknowledgeMessagePopulate; + let receivedValue = JSON.parse(atob(message.body.value)); + + receivedValue.iv = crypto.generateIV(); + chatKeys.keys.toRandom = crypto.generateRandom(); + chatKeys.keys.fromRandom = crypto.generateRandom(); + + receivedValue.iv = crypto.generateIV(); + chatKeys.keys.toRandom = crypto.generateRandom(); + chatKeys.keys.fromRandom = crypto.generateRandom(); + + let pms = crypto.generatePMS(); + chatKeys.keys.premasterKey = new Uint8Array(pms); + let concatKey = crypto.concatPMSwithRandoms(chatKeys.keys.premasterKey, chatKeys.keys.toRandom, chatKeys.keys.fromRandom); + + crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(masterKey =>{ + + crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(keys => { + chatKeys.keys.hypertyToSessionKey = keys[1]; + chatKeys.keys.hypertyFromSessionKey = keys[1]; + chatKeys.keys.hypertyFromHashKey = keys[1]; + + let sessionKey = crypto.encode(keys[1]); + + // let dataObjectURL = crypto.encode(dataObjectURL); + let dataToEncrypt = JSON.stringify({value: sessionKey, dataObjectURL: chatKeys.dataObjectURL}); + + crypto.encryptAES(keys[1], dataToEncrypt, receivedValue.iv).then(aesEncryption => { + receivedValue.value = crypto.encode(aesEncryption); + + let filteredMessage = cryptoManager._filterMessageToHash(message, 'ok' + receivedValue.iv); + + crypto.hashHMAC(keys[3], filteredMessage).then(HMAC => { + chatKeys.keys.hypertyToHashKey = keys[3]; + receivedValue.hash = crypto.encode(HMAC); + receivedValue.iv = crypto.encode(receivedValue.iv); + message.body.value = btoa(JSON.stringify(receivedValue)); + + cryptoManager._doHandShakePhase(message, chatKeys).then(resultMessage => { + assert.equal(resultMessage, 'handShakeEnd', 'Result has not the expected values'); + }).then(function() { done(); }); + + }); + + }); + + }); + }); + + }); + + it('test doMutualAuthentication', function(done) { + let sender = hyperURL1; + let receiver = hyperURL2; + + identityModule.registry.getReporterURLSynchonous = (sender) => { return undefined; }; + identityModule.registry.getHypertyOwner = getHypertyOwnerPopulate; + let chatKeys = chatKeysPopulate; + chatKeys.keys.hypertyFromSessionKey = crypto.generateRandom(); + chatKeys.keys.hypertyFromHashKey = crypto.generateRandom(); + 'comm://localhost/5f8d87fd-c56b-47fc-ad47-28d55f01e23a', + cryptoManager.default.chatKeys[sender + '<->' + receiver] = chatKeys; + + cryptoManager.default._doMutualAuthenticationPhase1(sender, receiver).then(resultMessage => { + assert.equal(resultMessage, 'exchange of chat sessionKey initiated', 'Message is not the expected one'); + }).then(function() { done(); }); + }); +}); + + +let msgNodeResponseFuncPopulate = (bus, msg) => { + console.log('BUS RESPONSE'); + if (msg.type === 'subscribe') { + log('msgNodeResponse subscribe: ' + msg); + if (msg.id === 2) { + + //reporter subscribe + expect(msg).to.contain.all.keys({ + id: 2, type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.h1.domain/sm', + body: { resources: [objURL + '/children/children1', objURL + '/children/children2'], source: hyperURL1 } + }); + } else { + + //observer subscribe + expect(msg).to.contain.all.keys({ + id: 5, type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', + body: { resources: [objURL + '/changes', objURL + '/children/children1', objURL + '/children/children2'], source: hyperURL2 } + }); + } + } else if (msg.type === 'execute') { + log('msgNodeResponseFunc EXE'); + let resMsg = { + id: msg.id, + type: 'response', + to: msg.from, + from: msg.to, + body: { + auth: false, + code: 200, + value: '' + } + }; + log(resMsg); + + // if(msg.body.method === 'generateAssertion' && msg.body.params.usernameHint != ''){ + if (msg.body.method === 'generateAssertion') { + log('msgNodeResponseFunc generateAssertion'); + + // if(msg.body.params.usernameHint == ''){ + // log('msgNodeResponseFunc loginUrl'); + // resMsg.body.value = {loginUrl: loginUrl}; + // }else{ + log('msgNodeResponseFunc assertionVal'); + resMsg.body.value = sendGenerateMessageResponse; + + // } + } else if (msg.body.method === 'openPopup') { + log('msgNodeResponseFunc openPopup'); + resMsg.body.value = loginUrl; + } else if (msg.body.resource === 'identity') { + if (msg.body.method === 'validateAssertion') { + log('msgNodeResponseFunc validateAssertion'); + resMsg.body.value = validateAssertionValuePopulate; + } else { + log('msgNodeResponseFunc identity'); + resMsg.body.value = sendGenerateMessageResponse; + } + } + bus.postMessage(resMsg); + } else if (msg.type === 'create') { + log('msgNodeResponse generateAssertion: ' + msg); + let resMsg = { + id: msg.id, + type: 'response', + to: msg.from, + from: msg.to, + body: { + code: 200, + type: 'identity', + value: userEmail + } + }; + log(resMsg); + bus.postMessage(resMsg); + } +}; + +let registryPopulate = { + registerDataObject: objectRegistration => { + log('REGISTRY-OBJECT: ', objectRegistration); + return new Promise(resolve => { + resolve('ok'); + }); + }, + + isInterworkingProtoStub: url => { + log('isInterworkingProtoStub: ', url); + return false; + }, + + unregisterDataObject: url => { + log('Unregister Data Object:', url); + return true; + }, + + getPreAuthSubscribers: () => { + return ['hyperty://domain/hyperty-instance']; + }, + getHypertyName: () => { + return 'HypertyChat'; + }, + isDataObjectURL: dataObjectURL => { + let splitURL = dataObjectURL.split('://'); + return splitURL[0] === 'comm'; + }, + registerSubscribedDataObject: () => {}, + registerSubscriber: () => {}, + isLocal: url => { + log('isLocal: ', url); + return false; + }, + runtimeURL: runtimeURL +}; + + +let handlersPopulate = [ + function(ctx) { + policyEngine + .authorise(ctx.msg) + .then(function(changedMgs) { + console.log('Authorized'); + changedMgs.body.identity = { + userProfile: { + userURL: userURL + } + }; + ctx.msg = changedMgs; + ctx.next(); + }) + .catch(function(reason) { + console.log('FAIL!'); + + console.error(reason); + ctx.fail(reason); + }); + } +]; + + +let returnedAssertionValuePopulate = { + assertion: + 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqZGxZMkkxTkdObE56RmtOakU0WWpJNE16QmpZMlZqT1RreE9EZ3hPR1UzTXpneE1EQm1NbUVpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SW1Ka2FHVjJkVU0zU0RaNVpuSkpWakZEVURsdmFIY2lMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVZURk1SRWwzVFVOM2VFMXBkelZPUTNkNFQwUkZjMDFxUlRSTVJFVXlUbmwzZUUxVVozTk9SRkZ6VGxSUmMwMTZZM05OYWsxM1RFUkplVTVUZHpGUFEzZDRUMVJGYzAxVVdUUk1SRTB5VEVSTk1VeEVSVEZPVTNjMVRubDNNazlUZDNsTmFsVnpUVlJKZVV4RVozbE1SRVY2VFhsM01reEVTVEJPVTNkNlRYbDNlazE1ZDNsT1ZGRnpUVlJWZVV4RVJUVk5hWGQ0VFVSamMwMVVZek5NUkVWNlRtbDNNRTVwZDNwTVJHTnpUMVJuYzA1cVFYTk5la0Z6VGtSSmMwMXFRVFZNUkVVeVRsTjNlVTFVVlhOTlZGVXdURVJGTUUxNWQzaE9hbGx6VGtSQmMwNXFTWE5OVkVVelRFUlJla3hFU1RKTVJFbDVUbmwzTVU1RGQzaE5lbGx6VG1wVmMwOVVZM05OYVhjMFRubDNlRTE2WTNOT2VsRnpUVlJyZVV4RVdUUk1SRWwzVGtOM2VFOUVaM05OYWxGNlRFUkZkMDVEZDNoTmFrbHpUMVJqYzAxVVl6Tk1SRVY2VFZOM2VFOUVSWE5OVkdNMVRFUm5lRXhFVlhsTVJFVXhUa04zZVU1cGR6Sk1SRlY2VEVSamVFeEVhekZNUkVWNVRVTjNlVTFxV1hOTlZFRjNURVJKZVUxRGQzbE5SR3R6VFZSck1VeEVSVE5OVTNjeFRubDNlRTlFVFhOTmVsbHpUVlJaTlV4RVJUQk9VM2MxVDBOM2VFMUVXWE5OVkdkelRXcEJNa3hFUlRSTlEzZDRUVVJCYzAxVVdUTk1SRmw0VEVSRmQwNTVkekJOVTNkNlRrTjNlVXhFU1RCT2VYZDVUa1JSYzAxVVZYZE1SRVV5VG5sM2VVMUVVWE5OYWtVeVRFUlZOVXhFU1hsT2VYYzBURVJKTWt4RVZUTk1SRVUwVDFOM2VFNUVSWE5OVkdjMFRFUm5Na3hFU1hsT1UzZDRUVlJuYzAxVVJYaE1SRVV6VG5sM2VFOUVTWE5OVkdONFRFUkZOVXhFV1hkTVJFVTBUbmwzZUUxNlRYTk5hbEZ6VFZSWk1FeEVSVEJQUTNkNFQwUnJjMDlFVlhOTlZHTjZURVJGTlUxVGQzbE5WRWx6VFdwUk0weEVTWGROVTNkNFQwUkZjMDU2UlhOUFJHZHpUVlJGZVV4RVJUSlBRM2Q0VFhwRmMwMVVZekJNUkZrelRFUlpNRXhFUlRGUFUzZDVUVVJaYzAxVVVUTk1SRlV3VEVSVk1FeEVSVEJPZVhjMFRtbDNNVTlEZDNsTmFsVnpUV3ByYzAxNlFYTk5WRWwzVEVSSk1FNXBkM2hPYW1OelRucG5jMDU2UlhOTlZGRjVURVJKZVU5RGR6Uk5VM2Q1VFhwbmMwMVVRWHBNUkZsNVRFUkpNRTE1ZDNsT1JFVnpUV3BKTWt4RVJURk5hWGN5VFhsM2VFNXBkelZQUTNkNFRucE5jMDE2WTNOTlZHc3lURVJWZVV4RVZUUk1SRkUxVEVSRk5FMVRkekJPYVhkNFRrUnJjMDFVUVRSTVJFVXdUMU4zTUU5VGR6Tk1SR2Q2VEVSRmVFOURkM2xOYW10elRXcFZNRXhFU1hoT2VYZDRUbXBqYzAxVVdUTk1SRWw1VEVSSk1FNTVkM2hQVkZWelRWUkZlVXhFUlhoT1UzZDVUbFJCYzAxRGQzaE9WR056VFdwVmVFeEVSVE5QUTNkNVRVUnJjMDU2U1hOTlZGVTFURVJGZVU1NWQzaFBSRVZ6VFZSRmVVeEVUWGRNUkdNeFRFUnJjMDFxVFRKTVJFbDVURVJGZVUxcGR6Sk5RM2N4VDBOM2VFeEVSWGxPVTNkNVRXcEJjMDFxVFRGTVJFbDVUbE4zZVUxcVozTk5hbEY2VEVSSk1FNURkM2xOVkZselRWUkpkMHhFUlhkT2VYZDRUbXBCYzAxcVJYbE1SRVY1VGtOM2VVMXFWWE5PZWtWelRWUnJNMHhFVFRSTVJFVXpUVU4zZUUxcVRYTk5WRmswVEVSTk5VeEVUVEJNUkVVeVQxTjNlRTlFVVhOT1ZHZHpUVlJGZVV4RVozZE1SR014VEVSRk5VMURkM2xOUkdOelRWUmplVXhFU1hoTmVYZDVURVJOYzAxVGQzZE1SRVU5SWl3aWFYTnpJam9pYUhSMGNITTZMeTloWTJOdmRXNTBjeTVuYjI5bmJHVXVZMjl0SWl3aWFXRjBJam94TlRBMU5Ea3hOelF5TENKbGVIQWlPakUxTURVME9UVXpOREo5LktHYWp6N0NjamtPUnIxS055TFgwRHFXaVRRM2s3d2Q0NDRsU0RiSFYtRV9adHY0bzhDdVlTTVJQRU12eGtncG5PaDBGd241OWROd2F5LXdqSkFZZWhCVWpCdllQZHgzejMzZDF0Uk5OcTlBUV9NQXJqZGVqQnkxcFpkR1FaY1diRUpMSUtPYXZuNGs2LS1mb0M4OUdkXzI2aU9tV1A1ZE9BcjRRU0tyVlZyRURlNDNnQXZ0Mms5anVpaGFnX1B5U0ROMjZXbVJDTVY4N2lFY3lzS3JfTTlXVExYS3k2NWU5czloNEpQYmdqMzZvSllrX3Bpbmk0YlJ6MERCd0lOLVI5TlAtZmkyT2VlRFptbXd4YzJXdnd1c05yaFJZamxGMmNkMjZwUFhaeTlMWlZPTU1fRERoTVpsMVVMclJvZnVFT1BMVXEtWFZZV3lmUXRMZnBPRkthdyIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJiZGhldnVDN0g2eWZySVYxQ1A5b2h3Iiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFUxTERJd01Dd3hNaXc1TkN3eE9ERXNNakU0TERFMk55d3hNVGdzTkRRc05UUXNNemNzTWpNd0xESXlOU3cxT0N3eE9URXNNVFk0TERNMkxETTFMREUxTlN3NU55dzJPU3d5TWpVc01USXlMRGd5TERFek15dzJMREkwTlN3ek15d3pNeXd5TlRRc01UVXlMREU1TWl3eE1EY3NNVGMzTERFek5pdzBOaXd6TERjc09UZ3NOakFzTXpBc05ESXNNakE1TERFMk5Td3lNVFVzTVRVMExERTBNeXd4TmpZc05EQXNOaklzTVRFM0xEUXpMREkyTERJeU55dzFOQ3d4TXpZc05qVXNPVGNzTWl3NE55d3hNemNzTnpRc01Ua3lMRFk0TERJd05Dd3hPRGdzTWpRekxERXdOQ3d4TWpJc09UY3NNVGMzTERFek1Td3hPREVzTVRjNUxEZ3hMRFV5TERFMU5Dd3lOaXcyTERVekxEY3hMRGsxTERFeU1Dd3lNallzTVRBd0xESXlNQ3d5TURrc01UazFMREUzTVN3MU55d3hPRE1zTXpZc01UWTVMREUwTlN3NU9Dd3hNRFlzTVRnc01qQTJMREU0TUN3eE1EQXNNVFkzTERZeExERXdOeXcwTVN3ek5Dd3lMREkwTnl3eU5EUXNNVFV3TERFMk55d3lNRFFzTWpFMkxEVTVMREl5Tnl3NExESTJMRFUzTERFNE9Td3hOREVzTVRnNExEZzJMREl5TlN3eE1UZ3NNVEV4TERFM055d3hPRElzTVRjeExERTVMRFl3TERFNE55d3hNek1zTWpRc01UWTBMREUwT0N3eE9Ea3NPRFVzTVRjekxERTVNU3d5TVRJc01qUTNMREl3TVN3eE9ERXNOekVzT0Rnc01URXlMREUyT0N3eE16RXNNVGMwTERZM0xEWTBMREUxT1N3eU1EWXNNVFEzTERVMExEVTBMREUwTnl3NE5pdzFPQ3d5TWpVc01qa3NNekFzTVRJd0xESTBOaXd4Tmpjc056Z3NOekVzTVRReUxESXlPQ3c0TVN3eU16Z3NNVEF6TERZeUxESTBNeXd5TkRFc01qSTJMREUxTWl3Mk15d3hOaXc1T0N3eE56TXNNemNzTVRrMkxEVXlMRFU0TERRNUxERTRNU3cwTml3eE5Ea3NNVEE0TERFME9TdzBPU3czTERnekxERXhPQ3d5TWprc01qVTBMREl4Tnl3eE5qY3NNVFkzTERJeUxESTBOeXd4T1RVc01URXlMREV4TlN3eU5UQXNNQ3d4TlRjc01qVXhMREUzT0N3eU1Ea3NOeklzTVRVNUxERXlOeXd4T0RFc01URXlMRE13TERjMUxEa3NNak0yTERJeUxERXlNaXcyTUN3MU9Dd3hMREV5TlN3eU1qQXNNak0xTERJeU5Td3lNamdzTWpRekxESTBOQ3d5TVRZc01USXdMREV3Tnl3eE5qQXNNakV5TERFeU5Dd3lNalVzTnpFc01UazNMRE00TERFM01Dd3hNak1zTVRZNExETTVMRE0wTERFMk9Td3hPRFFzTlRnc01URXlMRGd3TERjMUxERTVNQ3d5TURjc01UY3lMREl4TXl3eUxETXNNU3d3TERFPSIsImlzcyI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbSIsImlhdCI6IjE1MDU0OTE3NDIiLCJleHAiOiIxNTA1NDk1MzQyIiwiYWxnIjoiUlMyNTYiLCJraWQiOiI3ZWNiNTRjZTcxZDYxOGIyODMwY2NlYzk5MTg4MThlNzM4MTAwZjJhIn19', + identity: 'user://google.com/testandthink123@gmail.com', + idp: { + domain: 'google.com', + protocol: 'OIDC' + }, + info: { + accessToken: + 'ya29.GlvHBPvz5L_9BXW-Bur0qZT7PIcQTEHVqtVexuyy9nk6C…RDnHKbHMj209B26C4sHaa3Q89dbE5SOebteYb8o8mUxsjA5sF', + idToken: + 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjdlY2I1NGNlNzFkNjE4Yj…PXZy9LZVOMM_DDhMZl1ULrRofuEOPLUq-XVYWyfQtLfpOFKaw', + refreshToken: '1/mbg9sQp1fhrnH8IkglzzkGsl9nTgU__BTyp7lcdmBA4', + tokenType: 'Bearer', + infoToken: { + sub: '117959105295761687889', + name: 'test think', + given_name: 'test', + family_name: 'think', + picture: + 'https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg' + }, + keyPair: { + public: new Uint8Array(294), + private: new Uint8Array(1218) + }, + messageInfo: { + userProfile: 'userProfile', + idp: 'google.com', + assertion: 'assertion_repeated', + expires: '1505495342' + } + } +}; + +let sendGenerateMessageResponse = +{assertion: 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNkltSmhOR1JsWkRkbU5XRTVNalF5T1dZeU16TTFOakZoTXpabVpqWXhNMlZrTXpnM05qSmpNMlFpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWpGemREbExibEZsZWxWMVVqSXRObVJEUTFseVFrRWlMQ0p1YjI1alpTSTZJbHMwT0N3eE16QXNNU3d6TkN3ME9Dd3hNeXcyTERrc05ESXNNVE0wTERjeUxERXpOQ3d5TkRjc01UTXNNU3d4TERFc05Td3dMRE1zTVRNd0xERXNNVFVzTUN3ME9Dd3hNekFzTVN3eE1Dd3lMREV6TUN3eExERXNNQ3d4T1RBc01qUTRMREl5TWl3eE1qWXNNVEk0TERFM015d3lNRElzTVRNNExERTVNeXd4T0RJc01UZ3hMRFV5TERFeE1Td3hOVFVzTWpBeUxEWTRMREl3TERReExERXlNU3cyTVN3MU1DdzROeXcxTWl3eE56a3NPVEVzTkRFc01qUTRMREU0Tml3eU16Y3NPREFzTWpBMkxEa3dMREUzTXl3eE9EWXNNVFEwTERFMk9Td3hORFFzTWpFMExESXhNaXd5TVRBc01UZzVMREV5TkN3NU1pd3lORElzTVRBNUxESXdNaXd4TkRBc01qRXNNVE0yTERFMU9Td3lMRFl6TERBc01UVXlMREUyTml3eE9EWXNNVFkwTERFNE55d3hNVFlzTmpBc01UTTBMREkwTWl3eE1Ua3NNakUzTERZd0xERTRNaXd4TmpFc01UZ3dMRE0xTERnNExEYzBMREUxTnl3NU1pd3lNVEFzTWpRMUxEWTVMREV6Tml3eE56TXNOamNzTVRJNUxEZzBMREl3TERFM01pdzBPQ3d4TlRVc01USTVMREUwTERJeU9Td3hORGdzT1RVc01URXpMREV4Tnl3eU1UQXNNemNzTVRJNExERTNNU3d4TnpVc05UQXNNVGd6TERJMU5DdzVPU3czT1N3eE5UZ3NNVEl6TERVMUxERTRNQ3d5T1N3NU15d3hPRGtzT1Rrc09UTXNNVGt3TERZekxERTFNaXcwTUN3eU1EVXNNVGN5TERFM01pd3hPRGNzTUN3eU5USXNNVEk0TERFMk5Dd3lORFFzT0RBc016WXNPVE1zTVRnekxEUTVMREl3TVN3eE1Td3pPU3d4TWl3eE5UZ3NNQ3d5TkN3eE5UY3NNVGd6TERJeU5pd3lORElzTWpBekxERTJPU3d5TkRrc01UQTVMREV6T0N3eE1UQXNOakFzTVRjNUxERTVNQ3d4TWpVc01qUTFMREU1TERFMU9TdzBNaXd4TlRRc01qQTVMREUwTlN3eU5EQXNPVGdzTlRZc09USXNNakkzTERnc01UQTJMREV4TlN3eE1qY3NNalF4TERJMkxETXlMREUwTVN3eE9EZ3NOemtzTXpBc01UTXhMRFlzTVRZd0xESXpNaXczTlN3eU16TXNNalEwTERnd0xEVXhMREVzTlRJc01UTTNMREl3TUN3eU1URXNNemtzTVRVMkxERTBOaXd5TkRZc01qVXpMRFkxTERFeU5pdzVOQ3d4TVRjc01UVXhMREkxTWl3eU1qUXNNak0zTERZNUxERXdNQ3d4TURnc01qTXpMREl4TkN3eU1pd3lNakFzTVRNMkxERTBNU3d6Tnl3NU5pd3hOeXd5TVRJc01qQTJMREkxTERFeE9Dd3lNRGtzT1RZc01UUXlMREV4TERJeU1Dd3hPRFVzTWpFNExEUTJMREV5TlN3ek9DdzBPQ3d4TWpRc05EY3NNak1zTVRJNUxERXdPU3d5TURZc01UQTBMREl4TERJd05Dd3lNVGdzTWpBeUxERXpMREV6T0N3eE56VXNNVEUwTERFM05Td3lORGtzTlRRc05qWXNNVE16TERFMk55dzJOU3d4TkRJc05qZ3NNVFExTERFNE5Dd3hPU3d4Tnl3M015d3lMRE1zTVN3d0xERmRJaXdpWlhod0lqb3hOVEU0TVRBeU1qTXpMQ0pwYzNNaU9pSmhZMk52ZFc1MGN5NW5iMjluYkdVdVkyOXRJaXdpYW5ScElqb2laakE0WWpGa1pXVmpNbVEwWkdabE4yWXlNV1k0WkRjeE5ERmlOalZoTVROaFlUbGpNak0zTUNJc0ltbGhkQ0k2TVRVeE9EQTVPRFl6TTMwLlpSV1JXbkZTMmlkdHlKWnZYX0gyMHZkZ2FBYlllV3lQYzVIc2N0bzhrRVo3Z0VENDJDb1NjbS1WQ0l6SUF3R2J4V0F6ZG1xWFBFSDFNd1JfSWNJY2pZMGdRY0NKZVpkZy0xTFhZME5NWFVhZmNVQWdlcjdIeGJVNzU2b0tyQXZDQWdiRlJUenk3QW1qNDNPVkdYdDR5MXY4alpoWlRpLVU2cWJaOVBaOE1Ka1gwNExPUzMxQVRvZ1RnTURRWHRyV3N1dno3RHhKZ0U2djVBbkozemgyT0xCUHlJcWw0N0R4SGRhSURCcGsxQklMR19hRnJuc09oUTFRbWtqRDA2d0diUFNKVWtBdUVYbDNRYUFTY0QxLW9vTlNjREtxcDI2MkJ4Q2otVlFfMXpEY3NCd0s3UHp3TnBfVVpWVkVtRzYxcUVhMDZLdkJ6anllQzdiNjY0SUl0QSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiIxc3Q5S25RZXpVdVIyLTZkQ0NZckJBIiwibm9uY2UiOiJbNDgsMTMwLDEsMzQsNDgsMTMsNiw5LDQyLDEzNCw3MiwxMzQsMjQ3LDEzLDEsMSwxLDUsMCwzLDEzMCwxLDE1LDAsNDgsMTMwLDEsMTAsMiwxMzAsMSwxLDAsMTkwLDI0OCwyMjIsMTI2LDEyOCwxNzMsMjAyLDEzOCwxOTMsMTgyLDE4MSw1MiwxMTEsMTU1LDIwMiw2OCwyMCw0MSwxMjEsNjEsNTAsODcsNTIsMTc5LDkxLDQxLDI0OCwxODYsMjM3LDgwLDIwNiw5MCwxNzMsMTg2LDE0NCwxNjksMTQ0LDIxNCwyMTIsMjEwLDE4OSwxMjQsOTIsMjQyLDEwOSwyMDIsMTQwLDIxLDEzNiwxNTksMiw2MywwLDE1MiwxNjYsMTg2LDE2NCwxODcsMTE2LDYwLDEzNCwyNDIsMTE5LDIxNyw2MCwxODIsMTYxLDE4MCwzNSw4OCw3NCwxNTcsOTIsMjEwLDI0NSw2OSwxMzYsMTczLDY3LDEyOSw4NCwyMCwxNzIsNDgsMTU1LDEyOSwxNCwyMjksMTQ4LDk1LDExMywxMTcsMjEwLDM3LDEyOCwxNzEsMTc1LDUwLDE4MywyNTQsOTksNzksMTU4LDEyMyw1NSwxODAsMjksOTMsMTg5LDk5LDkzLDE5MCw2MywxNTIsNDAsMjA1LDE3MiwxNzIsMTg3LDAsMjUyLDEyOCwxNjQsMjQ0LDgwLDM2LDkzLDE4Myw0OSwyMDEsMTEsMzksMTIsMTU4LDAsMjQsMTU3LDE4MywyMjYsMjQyLDIwMywxNjksMjQ5LDEwOSwxMzgsMTEwLDYwLDE3OSwxOTAsMTI1LDI0NSwxOSwxNTksNDIsMTU0LDIwOSwxNDUsMjQwLDk4LDU2LDkyLDIyNyw4LDEwNiwxMTUsMTI3LDI0MSwyNiwzMiwxNDEsMTg4LDc5LDMwLDEzMSw2LDE2MCwyMzIsNzUsMjMzLDI0NCw4MCw1MSwxLDUyLDEzNywyMDAsMjExLDM5LDE1NiwxNDYsMjQ2LDI1Myw2NSwxMjYsOTQsMTE3LDE1MSwyNTIsMjI0LDIzNyw2OSwxMDAsMTA4LDIzMywyMTQsMjIsMjIwLDEzNiwxNDEsMzcsOTYsMTcsMjEyLDIwNiwyNSwxMTgsMjA5LDk2LDE0MiwxMSwyMjAsMTg1LDIxOCw0NiwxMjUsMzgsNDgsMTI0LDQ3LDIzLDEyOSwxMDksMjA2LDEwNCwyMSwyMDQsMjE4LDIwMiwxMywxMzgsMTc1LDExNCwxNzUsMjQ5LDU0LDY2LDEzMywxNjcsNjUsMTQyLDY4LDE0NSwxODQsMTksMTcsNzMsMiwzLDEsMCwxXSIsImV4cCI6IjE1MTgxMDIyMzMiLCJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwianRpIjoiZjA4YjFkZWVjMmQ0ZGZlN2YyMWY4ZDcxNDFiNjVhMTNhYTljMjM3MCIsImlhdCI6IjE1MTgwOTg2MzMiLCJhbGciOiJSUzI1NiIsImtpZCI6ImJhNGRlZDdmNWE5MjQyOWYyMzM1NjFhMzZmZjYxM2VkMzg3NjJjM2QifX0=', + idp: { + domain: 'google.com', + protocol: 'OIDC'}, + expires: '1518102233', + userProfile: { + sub: '117959105295761687889', + name: 'test think', + given_name: 'test', + family_name: 'think', + picture: 'https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg', + email: 'testandthink123@gmail.com', + email_verified: true, + locale: 'en', + userURL: 'user://google.com/testandthink123@gmail.com', + preferred_username: 'testandthink123'}}; + +let dataObjectPopulate = { + url: 'hyperty://h1.domain/h1', + data: { type: 'chat', content: 'hello world' }, + reporter: 'hyperty://h1.domain/h1', + created: '2017-09-26T15:05:14.966Z', + runtime: runtimeURL, + schema: 'hyperty-catalogue://catalogue.localhost/.well-known/dataschema/Communication', + parent: 'comm://localhost/5f8d87fd-c56b-47fc-ad47-28d55f01e23a' +}; + +let messageToBeHashedPopulate = { + type: 'execute', + from: hyperURL1, + to: hyperURL2, + body: { + identity: hyperURL1, + value: 'value', + handshakePhase: 'handshake' + } +}; + +let messageForNewChatCrypto = { + from: 'hyperty://h1.domain/h1', + to: 'hyperty://h2.domain/h2', + body: { ignore: true }, + callback: undefined, + dataObjectURL: 'comm://localhost/6c3b1310-28e2-43bf-bc1e-a4405a6733a2' +}; + + +let encryptMessagePopulate = { + type: 'handshake', + to: 'hyperty://localhost/9e1c674c-9374-491f-9812-4c3f31450951', + from: 'hyperty://localhost/7339190f-056a-41e1-88ec-18f02146b5bb', + body: { + handshakePhase: 'senderHello', + value: + 'NDgsNDksNTIsNTAsMzksMTEsMjM5LDIxMSwxODQsMTg1LDE4NSwxNjEsMTQzLDE0NSwyMDEsMTA4LDg2LDIxNSwyNTUsMTUwLDIyMiw1MSwxNDUsMTQzLDEzMCwxNiwxNTYsMTY5LDMyLDIyNywzNSwyNw==', + identity: { + userProfile: undefined, + idp: 'google.com', + assertion: + 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqTm1PVGsxTWpWall6TmhNek5sTTJNeVlqVmtZMlk1WVRJeFpqUmtPREprTXpjeFltVTNOamNpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWxKcFdEZEVlbFI1YWxWUVIxOU5MVlZQVEhveGJFRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVVURk1SRVV4VFhsM2VVMUVaM05OYWxGNVRFUkpNVTVEZDNsTmVsbHpUV3BOTVV4RVVUSk1SRWw1VGxOM2VFMTZaM05OZW10elRXcEpNa3hFUlhoTmFYZDRUWHBSYzAxVVp6Vk1SRVY0VFVOM01FNURkM2xOUkVselRWUm5kMHhFYTNwTVJFVXdUME4zZVUxRVozTk9ha1Z6VFZSQk0weEVSWGROVTNkNVRVUlZjMDlFVVhOT1ZGVnpUVlJqTVV4RVozZE1SRWt4VEVSSmQwNXBkM2xOUkUxelRXcEJlRXhFU1RGTVJFbDZUME4zTWt4RVdYbE1SRVV4VG1sM2VFMXFVWE5PYWtselRXcE5ORXhFUlhoTVJFa3dUMU4zTkU1RGR6Uk1SRVV6VG1sM01rNTVkM2xPVkZGelRWUnJNVXhFU1RCT1UzZDRUWHBSYzA1cGQzbE9SRTF6VFdwSk1VeEVSVEZQUTNkNFRrUlJjMDFVVFRKTVJFVjVUbmwzZUUxVVozTk5hbEY1VEVSbk5FeEVZekpNUkVVd1RtbDNlRTU1ZDNsTmFrRnpUVlJGTkV4RVNUQk9RM2MxVG5sM2VVNUVaM05OVkdONlRFUkZORTFUZHpWUFEzY3lUbWwzTkV4RVdYaE1SR2N4VEVSSk5FeEVSWHBPVTNjeFRFUkZORTlUZHpOUFUzZDRUVlJOYzAxVVl6Uk1SRVV3VDBOM2VFMTZRWE5OYWxWNlRFUkZlVTVEZDNwT1EzY3dUMU4zZVU1RVNYTk5hbFY1VEVSRk1VNXBkM2hPUkdkelRWUlZjMDVxUlhOTmFsRXhURVJKZVUxVGQzbE5SR3R6VFZSSmVreEVSWGRQUTNkNFRtcFZjMDFxU1hOTmFrRXhURVJaTTB4RVJYbE5lWGQ0VDBSVmMwMXFRWGhNUkdjeVRFUkZNMDFEZDNoTlEzZDRUWHBSYzAxVVFURk1SRVUxVG1sM2VFMXFUWE5OYWxWNVRFUkZNazU1ZDNoT2VsVnpUV3BOTWt4RVJUQlBVM2N6VFVOM01rNURkM3BOVTNkNVRWTjNlVTFFUVhOTlZFMTVURVJKZVUxNWQzaE5lbEZ6VFdwQk1VeEVSVFZPUTNkNlRXbDNNVTVEZHpOT2VYZDVUV2wzTWs1NWQzcE9VM2MwVG5sM2VVMVVWWE5QUkZselRWUnJlRXhFU1hkT2VYZDRUbnBSYzAxcVFUVk1SRWt4VEVSbmVFeEVTWGxNUkVGelRYcEpjMDVFVVhOTmFsRXpURVJuTlV4RVp6Qk1SRWw2VGxOM2VFOVVZM05PZW1OelRWUnJNMHhFUlRSTVJFVjZUbWwzZUUxVVZYTk5WR2MwVEVSRmQweEVTWGhQUTNkNFQwUkJjMDFxVVhwTVJFbDRUVU4zZWs1VGQzaE5lbWR6VFdwQk1VeEVSVEpQVTNkNFQwTjNlazU1ZHpKTVJFRnpUMVJKYzAxVVkzZE1SRTAxVEVSRk1VNURkM2xPVkZWelRWUkJNMHhFU1RKTVJFVjVUME4zZVUxcVdYTk5hazEzVEVSRk1rMXBkM2hQVkVselRXcEJlRXhFUlRCTmFYZDRUbnBaYzA1VVFYTk5WRUUxVEVSSk1FOVRkekJOYVhkNFRrUm5jMDFxUVhwTVJFbDRUV2wzZVUxRVdYTk5WR2MwVEVSVk5VeEVSWGxOZVhkNFRrUkJjMDFVYTNoTVJHc3dURVJOTWt4RVJUQk9RM2Q1VGtSUmMwNVVhM05OYWswMVRFUlJjMDFVUlhwTVJFMTZURVJSTlV4RVdUSk1SRTEzVEVSSmQwMTVkelJNUkdNelRFUkZlVTVUZDNsTlJHdHpUVlJGZWt4RVNUQk5VM2Q0VFZSbmMwNTZVWE5OVkZFd1RFUm5lVXhFUlhkT2VYYzFUWGwzZUU1cGQzbE5ha1Z6VGxSQmMwMXFUWHBNUkVVeFRsTjNNMDU1ZDNoUFJFbHpUV3BCTWt4RVNYcE9lWGMwVDBOM2VVeEVSVEJPUTNkNVRYcFpjMDFVWnpKTVJFVXdUa04zZVUxNlRYTk5lbGx6VFZSUk1reEVSWGxNUkVVeVRVTjNkMHhFUlRST2FYZDRUMVJqYzA5RVkzTk5WR014VEVSUk5VeEVSVFZPZVhjeVQwTjNlVTFVWjNOTlZHTXhURVJKYzAxNWQzaE1SRUZ6VFZFOVBTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllXTmpiM1Z1ZEhNdVoyOXZaMnhsTG1OdmJTSXNJbWxoZENJNk1UVXdOemt3TlRnNE5pd2laWGh3SWpveE5UQTNPVEE1TkRnMmZRLktvU2xyeHp1RUthd1ZWcS1TdmNHNTRXZVladWpaS2ltd2JXV21td01UcUZjMVI1My1wMFRlbWVFdS1VT29NU3NydjA1bUxoV20zV3lfb1RKM3JKeWRPX3FQS1ptU3F3aENxeEVNNjRWajNDeHRTa1c0SUg5VmR3emlmYUxtakRIQk9NZ0Y5OUNLcTBCMkhVWVhwNXU3TXJDc1VrTC1LLXhnUVI4c185MzhiUXNSX085eHpILTluZFVVTjBCb09aQ0tCYm50WmZYdjZ5am9VeEZKdG10clVUWnpsUkZYbUtxWWQtVk9TYVZ3MURldlRDbzBjbjNrTXBtZ0E1Sk13aTZ5U2pEdE9TQzkwVjc1dDZJSVhvS2g3T2ZZOG1aelIzeWprejNpckxiNEhNdDlTV21qNVlCZmF4M0FtNDY1bnBLM3RpOWxOZFZaa1lVMmZRUGg0SC1mQSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJSaVg3RHpUeWpVUEdfTS1VT0x6MWxBIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFExTERFMU15d3lNRGdzTWpReUxESTFOQ3d5TXpZc01qTTFMRFEyTERJeU5Td3hNemdzTXprc01qSTJMREV4TWl3eE16UXNNVGc1TERFeE1DdzBOQ3d5TURJc01UZ3dMRGt6TERFME9Dd3lNRGdzTmpFc01UQTNMREV3TVN3eU1EVXNPRFFzTlRVc01UYzFMRGd3TERJMUxESXdOaXd5TURNc01qQXhMREkxTERJek9DdzJMRFl5TERFMU5pd3hNalFzTmpJc01qTTRMREV4TERJME9TdzROQ3c0TERFM05pdzJOeXd5TlRRc01UazFMREkwTlN3eE16UXNOaXd5TkRNc01qSTFMREUxT0N3eE5EUXNNVE0yTERFeU55d3hNVGdzTWpReUxEZzRMRGMyTERFME5pd3hOeXd5TWpBc01URTRMREkwTkN3NU55d3lORGdzTVRjekxERTRNU3c1T0N3Mk5pdzRMRFl4TERnMUxESTRMREV6TlN3MUxERTRPU3czT1N3eE1UTXNNVGM0TERFME9Dd3hNekFzTWpVekxERXlOQ3d6TkN3ME9Td3lORElzTWpVeUxERTFOaXd4TkRnc01UVXNOakVzTWpRMUxESXlNU3d5TURrc01USXpMREV3T0N3eE5qVXNNaklzTWpBMUxEWTNMREV5TXl3eE9EVXNNakF4TERnMkxERTNNQ3d4TUN3eE16UXNNVEExTERFNU5pd3hNak1zTWpVeUxERTJOeXd4TnpVc01qTTJMREUwT1N3M01DdzJOQ3d6TVN3eU1Td3lNREFzTVRNeUxESXlNeXd4TXpRc01qQTFMREU1TkN3ek1pdzFOQ3czTnl3eU1pdzJOeXd6TlN3NE55d3lNVFVzT0RZc01Ua3hMREl3Tnl3eE56UXNNakE1TERJMUxEZ3hMREl5TERBc016SXNORFFzTWpRM0xEZzVMRGcwTERJek5Td3hPVGNzTnpjc01UazNMREU0TERFek5pd3hNVFVzTVRnNExERXdMREl4T0N3eE9EQXNNalF6TERJeE1Dd3pOU3d4TXpnc01qQTFMREUyT1N3eE9Dd3pOeXcyTERBc09USXNNVGN3TERNNUxERTFOQ3d5TlRVc01UQTNMREkyTERFeU9Dd3lNallzTWpNd0xERTJNaXd4T1RJc01qQXhMREUwTWl3eE56WXNOVEFzTVRBNUxESTBPU3cwTWl3eE5EZ3NNakF6TERJeE1pd3lNRFlzTVRnNExEVTVMREV5TXl3eE5EQXNNVGt4TERrMExETTJMREUwTkN3eU5EUXNOVGtzTWpNNUxEUXNNVEV6TERNekxEUTVMRFkyTERNd0xESXdNeXc0TERjM0xERXlOU3d5TURrc01URXpMREkwTVN3eE1UZ3NOelFzTVRRMExEZ3lMREV3Tnl3NU15d3hOaXd5TWpFc05UQXNNak16TERFMU5TdzNOeXd4T0RJc01qQTJMREl6Tnl3NE9Dd3lMREUwTkN3eU16WXNNVGcyTERFME5Dd3lNek1zTXpZc01UUTJMREV5TERFMk1Dd3dMREU0Tml3eE9UY3NPRGNzTVRjMUxEUTVMREU1Tnl3Mk9Dd3lNVGdzTVRjMUxESXNNeXd4TERBc01RPT0iLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOiIxNTA3OTA1ODg2IiwiZXhwIjoiMTUwNzkwOTQ4NiIsImFsZyI6IlJTMjU2Iiwia2lkIjoiM2Y5OTUyNWNjM2EzM2UzYzJiNWRjZjlhMjFmNGQ4MmQzNzFiZTc2NyJ9fQ==', + expires: '1507909486' + }, + auth: false + }, + id: 12 +}; + +let senderHelloMessagePopulate = { + type: 'handshake', + to: 'hyperty://localhost/9e1c674c-9374-491f-9812-4c3f31450951', + from: 'hyperty://localhost/7339190f-056a-41e1-88ec-18f02146b5bb', + body: { + handshakePhase: 'senderHello', + value: + 'NDgsNDksNTIsNTAsMzksMTEsMjM5LDIxMSwxODQsMTg1LDE4NSwxNjEsMTQzLDE0NSwyMDEsMTA4LDg2LDIxNSwyNTUsMTUwLDIyMiw1MSwxNDUsMTQzLDEzMCwxNiwxNTYsMTY5LDMyLDIyNywzNSwyNw==', + identity: { + userProfile: undefined, + idp: 'google.com', + assertion: + 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqTm1PVGsxTWpWall6TmhNek5sTTJNeVlqVmtZMlk1WVRJeFpqUmtPREprTXpjeFltVTNOamNpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWxKcFdEZEVlbFI1YWxWUVIxOU5MVlZQVEhveGJFRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVVURk1SRVV4VFhsM2VVMUVaM05OYWxGNVRFUkpNVTVEZDNsTmVsbHpUV3BOTVV4RVVUSk1SRWw1VGxOM2VFMTZaM05OZW10elRXcEpNa3hFUlhoTmFYZDRUWHBSYzAxVVp6Vk1SRVY0VFVOM01FNURkM2xOUkVselRWUm5kMHhFYTNwTVJFVXdUME4zZVUxRVozTk9ha1Z6VFZSQk0weEVSWGROVTNkNVRVUlZjMDlFVVhOT1ZGVnpUVlJqTVV4RVozZE1SRWt4VEVSSmQwNXBkM2xOUkUxelRXcEJlRXhFU1RGTVJFbDZUME4zTWt4RVdYbE1SRVV4VG1sM2VFMXFVWE5PYWtselRXcE5ORXhFUlhoTVJFa3dUMU4zTkU1RGR6Uk1SRVV6VG1sM01rNTVkM2xPVkZGelRWUnJNVXhFU1RCT1UzZDRUWHBSYzA1cGQzbE9SRTF6VFdwSk1VeEVSVEZQUTNkNFRrUlJjMDFVVFRKTVJFVjVUbmwzZUUxVVozTk5hbEY1VEVSbk5FeEVZekpNUkVVd1RtbDNlRTU1ZDNsTmFrRnpUVlJGTkV4RVNUQk9RM2MxVG5sM2VVNUVaM05OVkdONlRFUkZORTFUZHpWUFEzY3lUbWwzTkV4RVdYaE1SR2N4VEVSSk5FeEVSWHBPVTNjeFRFUkZORTlUZHpOUFUzZDRUVlJOYzAxVVl6Uk1SRVV3VDBOM2VFMTZRWE5OYWxWNlRFUkZlVTVEZDNwT1EzY3dUMU4zZVU1RVNYTk5hbFY1VEVSRk1VNXBkM2hPUkdkelRWUlZjMDVxUlhOTmFsRXhURVJKZVUxVGQzbE5SR3R6VFZSSmVreEVSWGRQUTNkNFRtcFZjMDFxU1hOTmFrRXhURVJaTTB4RVJYbE5lWGQ0VDBSVmMwMXFRWGhNUkdjeVRFUkZNMDFEZDNoTlEzZDRUWHBSYzAxVVFURk1SRVUxVG1sM2VFMXFUWE5OYWxWNVRFUkZNazU1ZDNoT2VsVnpUV3BOTWt4RVJUQlBVM2N6VFVOM01rNURkM3BOVTNkNVRWTjNlVTFFUVhOTlZFMTVURVJKZVUxNWQzaE5lbEZ6VFdwQk1VeEVSVFZPUTNkNlRXbDNNVTVEZHpOT2VYZDVUV2wzTWs1NWQzcE9VM2MwVG5sM2VVMVVWWE5QUkZselRWUnJlRXhFU1hkT2VYZDRUbnBSYzAxcVFUVk1SRWt4VEVSbmVFeEVTWGxNUkVGelRYcEpjMDVFVVhOTmFsRXpURVJuTlV4RVp6Qk1SRWw2VGxOM2VFOVVZM05PZW1OelRWUnJNMHhFUlRSTVJFVjZUbWwzZUUxVVZYTk5WR2MwVEVSRmQweEVTWGhQUTNkNFQwUkJjMDFxVVhwTVJFbDRUVU4zZWs1VGQzaE5lbWR6VFdwQk1VeEVSVEpQVTNkNFQwTjNlazU1ZHpKTVJFRnpUMVJKYzAxVVkzZE1SRTAxVEVSRk1VNURkM2xPVkZWelRWUkJNMHhFU1RKTVJFVjVUME4zZVUxcVdYTk5hazEzVEVSRk1rMXBkM2hQVkVselRXcEJlRXhFUlRCTmFYZDRUbnBaYzA1VVFYTk5WRUUxVEVSSk1FOVRkekJOYVhkNFRrUm5jMDFxUVhwTVJFbDRUV2wzZVUxRVdYTk5WR2MwVEVSVk5VeEVSWGxOZVhkNFRrUkJjMDFVYTNoTVJHc3dURVJOTWt4RVJUQk9RM2Q1VGtSUmMwNVVhM05OYWswMVRFUlJjMDFVUlhwTVJFMTZURVJSTlV4RVdUSk1SRTEzVEVSSmQwMTVkelJNUkdNelRFUkZlVTVUZDNsTlJHdHpUVlJGZWt4RVNUQk5VM2Q0VFZSbmMwNTZVWE5OVkZFd1RFUm5lVXhFUlhkT2VYYzFUWGwzZUU1cGQzbE5ha1Z6VGxSQmMwMXFUWHBNUkVVeFRsTjNNMDU1ZDNoUFJFbHpUV3BCTWt4RVNYcE9lWGMwVDBOM2VVeEVSVEJPUTNkNVRYcFpjMDFVWnpKTVJFVXdUa04zZVUxNlRYTk5lbGx6VFZSUk1reEVSWGxNUkVVeVRVTjNkMHhFUlRST2FYZDRUMVJqYzA5RVkzTk5WR014VEVSUk5VeEVSVFZPZVhjeVQwTjNlVTFVWjNOTlZHTXhURVJKYzAxNWQzaE1SRUZ6VFZFOVBTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllXTmpiM1Z1ZEhNdVoyOXZaMnhsTG1OdmJTSXNJbWxoZENJNk1UVXdOemt3TlRnNE5pd2laWGh3SWpveE5UQTNPVEE1TkRnMmZRLktvU2xyeHp1RUthd1ZWcS1TdmNHNTRXZVladWpaS2ltd2JXV21td01UcUZjMVI1My1wMFRlbWVFdS1VT29NU3NydjA1bUxoV20zV3lfb1RKM3JKeWRPX3FQS1ptU3F3aENxeEVNNjRWajNDeHRTa1c0SUg5VmR3emlmYUxtakRIQk9NZ0Y5OUNLcTBCMkhVWVhwNXU3TXJDc1VrTC1LLXhnUVI4c185MzhiUXNSX085eHpILTluZFVVTjBCb09aQ0tCYm50WmZYdjZ5am9VeEZKdG10clVUWnpsUkZYbUtxWWQtVk9TYVZ3MURldlRDbzBjbjNrTXBtZ0E1Sk13aTZ5U2pEdE9TQzkwVjc1dDZJSVhvS2g3T2ZZOG1aelIzeWprejNpckxiNEhNdDlTV21qNVlCZmF4M0FtNDY1bnBLM3RpOWxOZFZaa1lVMmZRUGg0SC1mQSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJSaVg3RHpUeWpVUEdfTS1VT0x6MWxBIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFExTERFMU15d3lNRGdzTWpReUxESTFOQ3d5TXpZc01qTTFMRFEyTERJeU5Td3hNemdzTXprc01qSTJMREV4TWl3eE16UXNNVGc1TERFeE1DdzBOQ3d5TURJc01UZ3dMRGt6TERFME9Dd3lNRGdzTmpFc01UQTNMREV3TVN3eU1EVXNPRFFzTlRVc01UYzFMRGd3TERJMUxESXdOaXd5TURNc01qQXhMREkxTERJek9DdzJMRFl5TERFMU5pd3hNalFzTmpJc01qTTRMREV4TERJME9TdzROQ3c0TERFM05pdzJOeXd5TlRRc01UazFMREkwTlN3eE16UXNOaXd5TkRNc01qSTFMREUxT0N3eE5EUXNNVE0yTERFeU55d3hNVGdzTWpReUxEZzRMRGMyTERFME5pd3hOeXd5TWpBc01URTRMREkwTkN3NU55d3lORGdzTVRjekxERTRNU3c1T0N3Mk5pdzRMRFl4TERnMUxESTRMREV6TlN3MUxERTRPU3czT1N3eE1UTXNNVGM0TERFME9Dd3hNekFzTWpVekxERXlOQ3d6TkN3ME9Td3lORElzTWpVeUxERTFOaXd4TkRnc01UVXNOakVzTWpRMUxESXlNU3d5TURrc01USXpMREV3T0N3eE5qVXNNaklzTWpBMUxEWTNMREV5TXl3eE9EVXNNakF4TERnMkxERTNNQ3d4TUN3eE16UXNNVEExTERFNU5pd3hNak1zTWpVeUxERTJOeXd4TnpVc01qTTJMREUwT1N3M01DdzJOQ3d6TVN3eU1Td3lNREFzTVRNeUxESXlNeXd4TXpRc01qQTFMREU1TkN3ek1pdzFOQ3czTnl3eU1pdzJOeXd6TlN3NE55d3lNVFVzT0RZc01Ua3hMREl3Tnl3eE56UXNNakE1TERJMUxEZ3hMREl5TERBc016SXNORFFzTWpRM0xEZzVMRGcwTERJek5Td3hPVGNzTnpjc01UazNMREU0TERFek5pd3hNVFVzTVRnNExERXdMREl4T0N3eE9EQXNNalF6TERJeE1Dd3pOU3d4TXpnc01qQTFMREUyT1N3eE9Dd3pOeXcyTERBc09USXNNVGN3TERNNUxERTFOQ3d5TlRVc01UQTNMREkyTERFeU9Dd3lNallzTWpNd0xERTJNaXd4T1RJc01qQXhMREUwTWl3eE56WXNOVEFzTVRBNUxESTBPU3cwTWl3eE5EZ3NNakF6TERJeE1pd3lNRFlzTVRnNExEVTVMREV5TXl3eE5EQXNNVGt4TERrMExETTJMREUwTkN3eU5EUXNOVGtzTWpNNUxEUXNNVEV6TERNekxEUTVMRFkyTERNd0xESXdNeXc0TERjM0xERXlOU3d5TURrc01URXpMREkwTVN3eE1UZ3NOelFzTVRRMExEZ3lMREV3Tnl3NU15d3hOaXd5TWpFc05UQXNNak16TERFMU5TdzNOeXd4T0RJc01qQTJMREl6Tnl3NE9Dd3lMREUwTkN3eU16WXNNVGcyTERFME5Dd3lNek1zTXpZc01UUTJMREV5TERFMk1Dd3dMREU0Tml3eE9UY3NPRGNzTVRjMUxEUTVMREU1Tnl3Mk9Dd3lNVGdzTVRjMUxESXNNeXd4TERBc01RPT0iLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOiIxNTA3OTA1ODg2IiwiZXhwIjoiMTUwNzkwOTQ4NiIsImFsZyI6IlJTMjU2Iiwia2lkIjoiM2Y5OTUyNWNjM2EzM2UzYzJiNWRjZjlhMjFmNGQ4MmQzNzFiZTc2NyJ9fQ==', + expires: '1507909486' + }, + auth: false + }, + id: 12 +}; + +let receiverHelloMessagePopulate = { + type: 'handshake', + to: 'hyperty://localhost/7339190f-056a-41e1-88ec-18f02146b5bb', + from: 'hyperty://localhost/9e1c674c-9374-491f-9812-4c3f31450951', + body: { + handshakePhase: 'receiverHello', + value: + 'NDgsNTAsNTIsNTEsMTUwLDI1MSwzNywxMjMsMzksMjgsNDgsMjksMTE1LDI0NSw5MSwxNDAsNTEsMTM3LDE3MSwyMDUsMTI0LDg3LDE1Myw0MSwyMDIsNzcsOTAsMTg2LDIwNSwxODUsMzMsODA=', + identity: { + userProfile: undefined, + idp: 'google.com', + assertion: + 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqTm1PVGsxTWpWall6TmhNek5sTTJNeVlqVmtZMlk1WVRJeFpqUmtPREprTXpjeFltVTNOamNpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TURNeE5UUTBPVEUzTVRFeU56VXhNall6TkRJaUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhek15TVVCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWtWTGFrcG9URzUyUW5sS2IyZHdiVnB5TVZGQ01FRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVozbE1SRlY2VEVSSk1VNURkekpPZVhkNFRYcFJjMDFVYTNoTVJFVjVUbE4zTUU1cGQzbE9hWGQ0VFhwbmMwMVVUWHBNUkVWNVRFUkZNRTU1ZDNoUFJGbHpUVlJCZWt4RVdYcE1SR3N4VEVSVmMwMVVaM3BNUkVVd1RFUkZlVTVEZHpKUFEzZDRUbnBOYzAxNlFYTk9hbXR6VFZSQmQweEVSVEpOUTNkNFRtcE5jMDFVVlROTVJHc3hURVJGTkUxNWR6Uk9lWGQ0VDBSSmMwMVVXWGxNUkVVMFRXbDNlVTE2VFhOTlZFMHdURVJGZWs1NWQzcE9RM2Q0VFdwWmMwMVVXVEpNUkVVeFRXbDNlRTFxWTNOT1ZFbHpUVlJuTlV4RVNYcFBVM2Q1VFZSVmMwMXFRWGxNUkVsM1QxTjNlRTVFV1hOUFJGRnpUVlJGTUV4RVJYcE9RM2Q1VFVSWmMwNTZZM05OVkZGNFRFUkZkMDFEZHpOTmFYZDRUbnBKYzAxVVkzZE1SRVV6VDBOM2VFMUVRWE5OYWtFeFRFUlZlRXhFU1hoTlUzY3pUa04zZVUxNmEzTlBWR3R6VFZSbmVFeEVRWE5OZW1kelQxUlZjMDFVWXpWTVJFbHpUME4zZUU5RVkzTk5WRUYzVEVSRk0wMXBkM2xPUkdkelRWUm5lRXhFUlRCT1EzY3dUVk4zTTA1RGR6Sk9VM2Q2VDBOM2VVNVVVWE5OZWsxelRWUk5NRXhFUlRGUFUzY3pUa04zTWs5VGQzbE9SRlZ6VGtOM2VFMXFhM05QVkd0elRWUlpNa3hFU1RCUFEzY3dUMU4zZUU5RVRYTk5WRUV6VEVSRmVrMVRkM3BOVTNkNFRXcEJjMDFVWXpSTVJFVjNUV2wzZVUxcVJYTk5ha0V6VEVSSmVrNURkM2hQUkZselRWUlpORXhFUlRGT2FYYzBUVU4zTVU1NWQzcE5RM2Q0VDBSQmMwMXFTWGhNUkVrd1RXbDNlVTE2V1hOTlZFVjZURVJGTTAxcGQzbE9WRWx6VFZSUk1VeEVSWGxNUkZFeVRFUlpNa3hFUlhoT2FYZDVUVlJOYzAxcVJUQk1SRlV5VEVSSmQwMTVkM2xOYWtGelRWUkplVXhFVlRWTVJFazBURVJKTUV4RVozcE1SRkUwVEVSTk0weEVXWE5OVkd0elRWUlJkMHhFUlRST2VYZDRUbXBWYzAxVVNYTk5WR016VEVSSmVrNURkM2hPUkZselRWUmpORXhFUlROTmVYZDVUVlJWYzA5VWEzTk5WRWt4VEVSSk1VMXBkM2hOVkZWelRXcE5OVXhFU1hkT1EzZDVUa1JyYzAxNmEzTk9SRlZ6VFZSWmMwOVVVWE5OVkUxNVRFUm5NMHhFUlRWT1UzYzFUVk4zTUU1RGQzaFBWRlZ6VFZSSk1FeEVaekZNUkVsNFRsTjNlRTE2WjNOTmFsVjNURVJGZUU1VGQzaE5la0Z6VFZSRmMwMXFVVFJNUkVWNlRWTjNlRTVEZDNoTmFsRnpUbXBWYzAxVVl6Rk1SRWt4VFdsM2VVMXFVWE5OVkdzelRFUm5jMDFVVFhoTVJGVTBURVJGZDAxNWR6Qk5lWGQ1VGxSVmMwMVVhM2xNUkVsM1QxTjNlRTlVWjNOTmFrbDVURVJGTlUxcGQzbE5WR056VFdwVmVFeEVSVFJOYVhjeFQwTjNlRTFxVVhOTmVtZHpUVlJWZDB4RWF6Rk1SRUZ6VFZSUmMwNVVRWE5OZWtWelRWUnJkMHhFUlRKTVJFVXpUbE4zZUU1RGQzaE5lbXR6VFZSbmVFeEVSWE5OYWxFeVRFUm5ORXhFUlhkUFEzY3hUbmwzZVU1RVozTlBSRUZ6VFZSak1reEVSVFZPZVhkNFRsUk5jMDFxUlhkTVJFazFURVJGTlU1NWQzcE9VM2Q1VG1sM2VFMUVXWE5PVkVGelRWUnJjMDlFWTNOT2VtZHpUV3BKTWt4RVJYZE9VM2Q0VFdwRmMwOVVTWE5OYWtFeVRFUkZkMDVwZDNsTmFYZDRUMFJOYzA1cVdYTk5WRUV6VEVSWk1reEVaM05OVkdOM1RFUkZlVTU1ZDNsTmFtZHpUbnBaYzAxcVNUUk1SRWswVEVSSmVrMURkM3BOYVhkNVRXcGpjMDFVVVhwTVJFVTFUMU4zZVV4RVRYTk5VM2QzVEVSRlBTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllXTmpiM1Z1ZEhNdVoyOXZaMnhsTG1OdmJTSXNJbWxoZENJNk1UVXdOemt3TlRjNE9Td2laWGh3SWpveE5UQTNPVEE1TXpnNWZRLm40cVdaOUxEMmo2RFJNempyMGZhaGt3YzUzN2tGbEl5bjFOaC1oc0htRGtQdUhFbzAyUnVabm5QX0R6Qzl4aW5abE5GaUo3OE5QNHd4S20zXzFMUzE1Q2VmVnJtY2VsVjd3bGotd21jU1JxR2hiRldZOWJ2eHVJQ0Rfc0VfV1B3djNRRFRZRDdsLVJiOW1MYVhzcF93eXc0Z0k0cFFMczNWd0xpeFJHM0xFY003QzJpQTMwUXFYTkJuQ3pISDBINGhKQ3dUWHQtYThxdlZxemlkU1d0bG1nNWFweDk4cnZOVGVvS1ZPZmNVdUtSVUpqWFVpeHpjbkhXMlcweUJPWXJ6WF93UEt6UzVIYmJJQVBFQmZfZlZqSnI4eEVGcEMzTnphZk1rU1ZETXlIbmt5d3g3U1ItNDRXRVNCekdqM3lCZWRfeW9Idnh3Y29sVU5ZTW1kamxFQSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjEwMzE1NDQ5MTcxMTI3NTEyNjM0MiIsImVtYWlsIjoidGVzdGFuZHRoaW5rMzIxQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJFS2pKaExudkJ5Sm9ncG1acjFRQjBBIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVGd5TERVekxESTFOQ3cyTnl3eE16UXNNVGt4TERFeU5TdzBOaXd5Tml3eE16Z3NNVE16TERFeUxERTBOeXd4T0RZc01UQXpMRFl6TERrMUxEVXNNVGd6TERFMExERXlOQ3cyT0N3eE56TXNNekFzTmprc01UQXdMREUyTUN3eE5qTXNNVFUzTERrMUxERTRNeXc0Tnl3eE9ESXNNVFl5TERFNE1pd3lNek1zTVRNMExERXpOeXd6TkN3eE1qWXNNVFkyTERFMU1pd3hNamNzTlRJc01UZzVMREl6T1N3eU1UVXNNakF5TERJd09Td3hORFlzT0RRc01URTBMREV6TkN3eU1EWXNOemNzTVRReExERXdNQ3czTWl3eE56SXNNVGN3TERFM09Dd3hNREFzTWpBMUxEVXhMREl4TVN3M05Dd3lNemtzT1Rrc01UZ3hMREFzTXpnc09UVXNNVGM1TERJc09Dd3hPRGNzTVRBd0xERTNNaXd5TkRnc01UZ3hMREUwTkN3ME1TdzNOQ3cyTlN3ek9Dd3lOVFFzTXpNc01UTTBMREUxT1N3M05DdzJPU3d5TkRVc05Dd3hNamtzT1Rrc01UWTJMREkwT0N3ME9Td3hPRE1zTVRBM0xERXpNU3d6TVN3eE1qQXNNVGM0TERFd01pd3lNakVzTWpBM0xESXpOQ3d4T0RZc01UWTRMREUxTml3NE1DdzFOeXd6TUN3eE9EQXNNakl4TERJME1pd3lNellzTVRFekxERTNNaXd5TlRJc01UUTFMREV5TERRMkxEWTJMREV4Tml3eU1UTXNNakUwTERVMkxESXdNeXd5TWpBc01USXlMRFU1TERJNExESTBMRGd6TERRNExETTNMRFlzTVRrc01UUXdMREU0Tnl3eE5qVXNNVElzTVRjM0xESXpOQ3d4TkRZc01UYzRMREUzTXl3eU1UVXNPVGtzTVRJMUxESTFNaXd4TVRVc01qTTVMREl3TkN3eU5Ea3NNemtzTkRVc01UWXNPVFFzTVRNeUxEZzNMREU1TlN3NU1TdzBOQ3d4T1RVc01USTBMRGcxTERJeE5Td3hNemdzTWpVd0xERXhOU3d4TXpBc01URXNNalE0TERFek1Td3hOQ3d4TWpRc05qVXNNVGMxTERJMU1pd3lNalFzTVRrM0xEZ3NNVE14TERVNExERXdNeXcwTXl3eU5UVXNNVGt5TERJd09Td3hPVGdzTWpJeUxERTVNaXd5TVRjc01qVXhMREU0TWl3MU9Dd3hNalFzTXpnc01UVXdMRGsxTERBc01UUXNOVEFzTXpFc01Ua3dMREUyTERFM05Td3hOQ3d4TXprc01UZ3hMREVzTWpRMkxEZzRMREV3T0N3MU55d3lORGdzT0RBc01UYzJMREU1Tnl3eE5UTXNNakV3TERJNUxERTVOeXd6TlN3eU5pd3hNRFlzTlRBc01Ua3NPRGNzTnpnc01qSTJMREV3TlN3eE1qRXNPVElzTWpBMkxERXdOaXd5TWl3eE9ETXNOallzTVRBM0xEWTJMRGdzTVRjd0xERXlOeXd5TWpnc056WXNNakk0TERJNExESXpNQ3d6TWl3eU1qY3NNVFF6TERFNU9Td3lMRE1zTVN3d0xERT0iLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOiIxNTA3OTA1Nzg5IiwiZXhwIjoiMTUwNzkwOTM4OSIsImFsZyI6IlJTMjU2Iiwia2lkIjoiM2Y5OTUyNWNjM2EzM2UzYzJiNWRjZjlhMjFmNGQ4MmQzNzFiZTc2NyJ9fQ==', + expires: '1507909389' + }, + auth: false, + via: 'runtime://localhost/protostub/6697977f-9776-c8b8-ec3d-8269f0e65536' + }, + id: 5 +}; + +let senderCertificateMessagePopulate = { + type: 'handshake', + to: 'hyperty://localhost/9e1c674c-9374-491f-9812-4c3f31450951', + from: 'hyperty://localhost/7339190f-056a-41e1-88ec-18f02146b5bb', + body: { + handshakePhase: 'senderCertificate', + value: + 'eyJpdiI6Ik1UZzBMREl6Tml3eU1EY3NNakVzTVRjM0xESXpOeXcwTXl3eE9EQXNNVE14TERZeUxESXdMREUxTERJMU5TdzNOeXd5TlRVc05UYz0iLCJoYXNoIjoiTVRVMExERTBNaXd5TkRNc05EUXNNVElzTVRrNUxETTVMREUwTml3eE1qY3NNVGsxTERJeE1pdzVNaXd6TUN3eE9UY3NNVGM1TERFM01Td3hORFVzTWpFNUxERXlNU3d5TlRNc01qVXlMREUyT0N3MU1pdzRNQ3c0TlN3eE1UQXNORGdzTnpNc05EQXNOekVzTXpBc09ETT0iLCJzeW1ldHJpY0VuY3J5cHRpb24iOiJOalFzTVRVM0xERXpNeXcyTERFMU1Td3hNak1zTVRZNUxERTFPU3czTlN3ek9Dd3hOallzTmpRc01qSXhMREU1TVN3ek9Td3hOems9IiwiYXNzeW1ldHJpY0VuY3J5cHRpb24iOiJPRElzTnpRc01UY3dMREk0TERJME55dzFOQ3d5TXpVc01UVTJMREV3T0N3eE5qQXNNVEF4TERFMk1pd3hNemNzTVRReUxERTJNaXd5TkN3eE5USXNNelFzTXpnc01qVXpMREUxTXl3eE1UWXNOVGNzTWpNMkxERTVPU3cxTkN3eE9Dd3pOaXczTml3eU1EUXNNelFzTWpJd0xERXlNQ3d4TWpJc01UZ3NNalV6TERFNU5pd3lNRFFzTVRVNUxEVTVMREUyTUN3eE1qZ3NNak0zTERneExEa3hMREU0TlN3eE9EZ3NNVGd4TERJeE1Dd3hOVFlzTkRJc01USXdMREkxTERFMk15dzNNeXcyT0N3MU15d3hOeklzTWpFMkxESTBNU3d4TURJc09ERXNPREFzTVRFc01URTFMREUzTXl3Mk1pd3lNamdzTWpJeUxEVXhMREl3TVN3NU5Dd3lOVE1zT0RFc01qa3NPU3d5TWpjc016TXNOelFzTWpNNUxESTFNU3d5TWpJc05qY3NOVFFzTWpBMUxERTBNQ3c0TVN3eE5EWXNORE1zTmpnc01qVXpMREV6TERFeE1Td3hNakFzTWpVc01UazJMRGd4TERNMUxEZzBMREl5Tnl3eU5EZ3NOREFzTVRRc01USTFMREl5TUN3eU1EVXNNVGMzTERFeExEa3dMREUwTnl3MUxESXlNaXd5TWpjc01UQTJMREUzTXl3eE5Ea3NNVEkzTERjeExERXpOU3d4T1Rrc01UUTVMREUzT1N3eE9USXNNakU0TERJeE9Td3hPRGdzTVRVc01qa3NNVGM0TERJd055dzFOQ3d5Tml3eU1qWXNNalE1TERFek5pd3hOVGdzTXpnc01qRTVMRGcyTERFd01TdzROaXd5TkRJc09UZ3NNVGc1TERZeExERTBNeXd5TXpZc01UWXNOaXczTkN3eU16RXNNVFF4TERFME1Dd3hORGNzTWpFM0xESXhNeXd5T1N3eE1pd3lNellzTVRJMUxERXlMRFFzTnpVc05TdzVPU3d4Tnl3eE1pd3hOak1zTVRRMkxERTFNU3d5TVRZc01qQTBMRFkyTERNc01qQXdMREU1Tml3eE16WXNNVEU1TERFeE5Td3lOVFFzTWpFeUxEUTJMREUyTERFNE9TdzBPU3d4TURNc01UYzVMREl5TlN3eU5EWXNNVGcxTERJME55d3hPRFFzTWpFekxESXhOU3czTkN3eE5EUXNNekFzTVRNeExESXlOU3d5TXpFc05qVXNNVFl4TERFNE1Td3lNVElzTVRVMUxEYzBMREU1TERFMU9Td3lNRE1zTVRjM0xERTJPQ3d3TERFeE5DdzVNaXd4T1Rnc01UUTFMREU0TkN3eU1UZ3NOalVzTnpVc09UVXNNVEV4TERFeE9Dd3hORGNzTWpVMUxEY3NNVGt3TERZM0xERTJNU3d4TlRjc01UVTRMREUzTkN3eU1USXNNalV6TERRNExEUTVMREUwTnl3eE9USXNPVFFzTWpFMkxESXdNeXc0T0N3eE1qZ3NOalFzTVRnd0xEZzJMREl6T0N3eE5qSXNPVFVzTVRNeUxEZzFMREUzTVN3ME9TdzJNaXcwT1N3eiIsInNpZ25hdHVyZSI6Ik9ETXNNak16TERjd0xEYzVMRGM0TERFMk1Td3hNRGdzTmpFc01UUXdMREl6T0N3NU5pd3pNQ3d4T1RFc01UQXhMREV3TkN3eE5qZ3NNVEkyTERFNU5Td3lNRGtzTVRVMkxERTVPQ3d4TVRZc01URXNNak13TERZekxERTJNU3d4TnpNc01qSXlMREU1TERFM05Td3lNak1zT0Rjc01qVXlMRFl3TERFNE9Dd3hORGNzTVRVeUxESXlOeXcxTWl3eU5pd3lPQ3d4TlRJc05Td3hOemdzTVRBNUxERXhOQ3d4TWpZc01UZ3pMREU0T0N3NU5Td3lNelVzTXpNc01UVXNPVElzTVRReUxERTRNeXd4TnpVc01qRTJMREVzTVRVMkxERTBPQ3c0T1N3ek5pd3lNemNzTWpFeExERXpNQ3d4Tnl3eU5ESXNNVGMyTERFM0xERTRNaXd5TWpjc01UTXNNVE0wTERJek1Td3hNekFzTVRNNExEVTRMRGtzTWpVd0xEVTNMREkxTkN3eE1qQXNNVFV6TERReUxESTBMREV6TVN3eU9Dd3lMREl4TUN3eU1qSXNOakFzTWpJM0xERTNNaXd5TXpFc056VXNNVEkwTERZNExESXlOaXd4TnpBc01qUTBMREV5TlN3eU5EUXNOek1zT1RVc01qUXhMREV5TVN3eE56Z3NNelVzTWpFMExEVTRMRE0xTERFM0xEYzJMRGM1TERFNE5TdzFNU3d6T1N3eU5ETXNNalV6TERFM09Td3hORGtzTWpNMkxESXhOeXd5TVRnc01USTNMRE13TERZekxERTJNU3d4TURJc01UYzJMREV4T0N3eE5Dd3lNelFzTXpBc01UZ3hMRGdzTXprc056RXNPRGdzTVRFeUxEUXlMRElzTVRNeExEa3lMRGsyTERFNU9Dd3hPRGdzTXpJc05EVXNNak00TERZMExERTJNQ3d4T0Rrc01USTJMREl6TkN3M015d3pPQ3d4TVRRc056a3NNVFU1TERJMExESXdOeXd5TURJc01qSXhMRGsyTERJd09Td3hPREVzT0RZc05UY3NNVE13TERFd05pd3lOVElzTVRBd0xEQXNNVE15TERReExEWXdMREV6TlN3eE5qSXNOemtzTWpRekxESXhOU3cyT1N3NE1Td3hOREVzTWpnc01qQTRMREUzTUN3eU5UUXNNVEkzTERJd01Td3hORE1zTVRVMExERXlOaXd4TkRRc05USXNNVEE1TERFek5Td3hNREVzTmprc01qSXpMRGMzTERFM055dzNPU3d4TlN3eE5EUXNOVFVzTWpNMkxERXpOaXd4TXpBc016RXNNVGt6TERJMU5TdzFOeXd4TkN3eU5EWXNNVEk1TERZMExETTNMREUxTkN3eE1qY3NNeXd4TlRRc01qQXhMREl4Tml3eU1qQXNNVGd3TERjM0xESTBPU3d4T0RVc01Td3pPQ3d4TURVc01qUTJMRGd6TERFMk15d3pNQ3d4TmpVc01UTTBMREV4Tml3eE1Dd3lOQ3d4T0RNc01UY3dMREV6TERVd0xERTBPQ3d5TlRBc056TXNNVGN6TERjNUxESXlNU3d4TVRBc01URXdMRFV6In0=', + identity: { + userProfile: undefined, + idp: 'google.com', + assertion: + 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqTm1PVGsxTWpWall6TmhNek5sTTJNeVlqVmtZMlk1WVRJeFpqUmtPREprTXpjeFltVTNOamNpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWxKcFdEZEVlbFI1YWxWUVIxOU5MVlZQVEhveGJFRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVVURk1SRVV4VFhsM2VVMUVaM05OYWxGNVRFUkpNVTVEZDNsTmVsbHpUV3BOTVV4RVVUSk1SRWw1VGxOM2VFMTZaM05OZW10elRXcEpNa3hFUlhoTmFYZDRUWHBSYzAxVVp6Vk1SRVY0VFVOM01FNURkM2xOUkVselRWUm5kMHhFYTNwTVJFVXdUME4zZVUxRVozTk9ha1Z6VFZSQk0weEVSWGROVTNkNVRVUlZjMDlFVVhOT1ZGVnpUVlJqTVV4RVozZE1SRWt4VEVSSmQwNXBkM2xOUkUxelRXcEJlRXhFU1RGTVJFbDZUME4zTWt4RVdYbE1SRVV4VG1sM2VFMXFVWE5PYWtselRXcE5ORXhFUlhoTVJFa3dUMU4zTkU1RGR6Uk1SRVV6VG1sM01rNTVkM2xPVkZGelRWUnJNVXhFU1RCT1UzZDRUWHBSYzA1cGQzbE9SRTF6VFdwSk1VeEVSVEZQUTNkNFRrUlJjMDFVVFRKTVJFVjVUbmwzZUUxVVozTk5hbEY1VEVSbk5FeEVZekpNUkVVd1RtbDNlRTU1ZDNsTmFrRnpUVlJGTkV4RVNUQk9RM2MxVG5sM2VVNUVaM05OVkdONlRFUkZORTFUZHpWUFEzY3lUbWwzTkV4RVdYaE1SR2N4VEVSSk5FeEVSWHBPVTNjeFRFUkZORTlUZHpOUFUzZDRUVlJOYzAxVVl6Uk1SRVV3VDBOM2VFMTZRWE5OYWxWNlRFUkZlVTVEZDNwT1EzY3dUMU4zZVU1RVNYTk5hbFY1VEVSRk1VNXBkM2hPUkdkelRWUlZjMDVxUlhOTmFsRXhURVJKZVUxVGQzbE5SR3R6VFZSSmVreEVSWGRQUTNkNFRtcFZjMDFxU1hOTmFrRXhURVJaTTB4RVJYbE5lWGQ0VDBSVmMwMXFRWGhNUkdjeVRFUkZNMDFEZDNoTlEzZDRUWHBSYzAxVVFURk1SRVUxVG1sM2VFMXFUWE5OYWxWNVRFUkZNazU1ZDNoT2VsVnpUV3BOTWt4RVJUQlBVM2N6VFVOM01rNURkM3BOVTNkNVRWTjNlVTFFUVhOTlZFMTVURVJKZVUxNWQzaE5lbEZ6VFdwQk1VeEVSVFZPUTNkNlRXbDNNVTVEZHpOT2VYZDVUV2wzTWs1NWQzcE9VM2MwVG5sM2VVMVVWWE5QUkZselRWUnJlRXhFU1hkT2VYZDRUbnBSYzAxcVFUVk1SRWt4VEVSbmVFeEVTWGxNUkVGelRYcEpjMDVFVVhOTmFsRXpURVJuTlV4RVp6Qk1SRWw2VGxOM2VFOVVZM05PZW1OelRWUnJNMHhFUlRSTVJFVjZUbWwzZUUxVVZYTk5WR2MwVEVSRmQweEVTWGhQUTNkNFQwUkJjMDFxVVhwTVJFbDRUVU4zZWs1VGQzaE5lbWR6VFdwQk1VeEVSVEpQVTNkNFQwTjNlazU1ZHpKTVJFRnpUMVJKYzAxVVkzZE1SRTAxVEVSRk1VNURkM2xPVkZWelRWUkJNMHhFU1RKTVJFVjVUME4zZVUxcVdYTk5hazEzVEVSRk1rMXBkM2hQVkVselRXcEJlRXhFUlRCTmFYZDRUbnBaYzA1VVFYTk5WRUUxVEVSSk1FOVRkekJOYVhkNFRrUm5jMDFxUVhwTVJFbDRUV2wzZVUxRVdYTk5WR2MwVEVSVk5VeEVSWGxOZVhkNFRrUkJjMDFVYTNoTVJHc3dURVJOTWt4RVJUQk9RM2Q1VGtSUmMwNVVhM05OYWswMVRFUlJjMDFVUlhwTVJFMTZURVJSTlV4RVdUSk1SRTEzVEVSSmQwMTVkelJNUkdNelRFUkZlVTVUZDNsTlJHdHpUVlJGZWt4RVNUQk5VM2Q0VFZSbmMwNTZVWE5OVkZFd1RFUm5lVXhFUlhkT2VYYzFUWGwzZUU1cGQzbE5ha1Z6VGxSQmMwMXFUWHBNUkVVeFRsTjNNMDU1ZDNoUFJFbHpUV3BCTWt4RVNYcE9lWGMwVDBOM2VVeEVSVEJPUTNkNVRYcFpjMDFVWnpKTVJFVXdUa04zZVUxNlRYTk5lbGx6VFZSUk1reEVSWGxNUkVVeVRVTjNkMHhFUlRST2FYZDRUMVJqYzA5RVkzTk5WR014VEVSUk5VeEVSVFZPZVhjeVQwTjNlVTFVWjNOTlZHTXhURVJKYzAxNWQzaE1SRUZ6VFZFOVBTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllXTmpiM1Z1ZEhNdVoyOXZaMnhsTG1OdmJTSXNJbWxoZENJNk1UVXdOemt3TlRnNE5pd2laWGh3SWpveE5UQTNPVEE1TkRnMmZRLktvU2xyeHp1RUthd1ZWcS1TdmNHNTRXZVladWpaS2ltd2JXV21td01UcUZjMVI1My1wMFRlbWVFdS1VT29NU3NydjA1bUxoV20zV3lfb1RKM3JKeWRPX3FQS1ptU3F3aENxeEVNNjRWajNDeHRTa1c0SUg5VmR3emlmYUxtakRIQk9NZ0Y5OUNLcTBCMkhVWVhwNXU3TXJDc1VrTC1LLXhnUVI4c185MzhiUXNSX085eHpILTluZFVVTjBCb09aQ0tCYm50WmZYdjZ5am9VeEZKdG10clVUWnpsUkZYbUtxWWQtVk9TYVZ3MURldlRDbzBjbjNrTXBtZ0E1Sk13aTZ5U2pEdE9TQzkwVjc1dDZJSVhvS2g3T2ZZOG1aelIzeWprejNpckxiNEhNdDlTV21qNVlCZmF4M0FtNDY1bnBLM3RpOWxOZFZaa1lVMmZRUGg0SC1mQSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJSaVg3RHpUeWpVUEdfTS1VT0x6MWxBIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFExTERFMU15d3lNRGdzTWpReUxESTFOQ3d5TXpZc01qTTFMRFEyTERJeU5Td3hNemdzTXprc01qSTJMREV4TWl3eE16UXNNVGc1TERFeE1DdzBOQ3d5TURJc01UZ3dMRGt6TERFME9Dd3lNRGdzTmpFc01UQTNMREV3TVN3eU1EVXNPRFFzTlRVc01UYzFMRGd3TERJMUxESXdOaXd5TURNc01qQXhMREkxTERJek9DdzJMRFl5TERFMU5pd3hNalFzTmpJc01qTTRMREV4TERJME9TdzROQ3c0TERFM05pdzJOeXd5TlRRc01UazFMREkwTlN3eE16UXNOaXd5TkRNc01qSTFMREUxT0N3eE5EUXNNVE0yTERFeU55d3hNVGdzTWpReUxEZzRMRGMyTERFME5pd3hOeXd5TWpBc01URTRMREkwTkN3NU55d3lORGdzTVRjekxERTRNU3c1T0N3Mk5pdzRMRFl4TERnMUxESTRMREV6TlN3MUxERTRPU3czT1N3eE1UTXNNVGM0TERFME9Dd3hNekFzTWpVekxERXlOQ3d6TkN3ME9Td3lORElzTWpVeUxERTFOaXd4TkRnc01UVXNOakVzTWpRMUxESXlNU3d5TURrc01USXpMREV3T0N3eE5qVXNNaklzTWpBMUxEWTNMREV5TXl3eE9EVXNNakF4TERnMkxERTNNQ3d4TUN3eE16UXNNVEExTERFNU5pd3hNak1zTWpVeUxERTJOeXd4TnpVc01qTTJMREUwT1N3M01DdzJOQ3d6TVN3eU1Td3lNREFzTVRNeUxESXlNeXd4TXpRc01qQTFMREU1TkN3ek1pdzFOQ3czTnl3eU1pdzJOeXd6TlN3NE55d3lNVFVzT0RZc01Ua3hMREl3Tnl3eE56UXNNakE1TERJMUxEZ3hMREl5TERBc016SXNORFFzTWpRM0xEZzVMRGcwTERJek5Td3hPVGNzTnpjc01UazNMREU0TERFek5pd3hNVFVzTVRnNExERXdMREl4T0N3eE9EQXNNalF6TERJeE1Dd3pOU3d4TXpnc01qQTFMREUyT1N3eE9Dd3pOeXcyTERBc09USXNNVGN3TERNNUxERTFOQ3d5TlRVc01UQTNMREkyTERFeU9Dd3lNallzTWpNd0xERTJNaXd4T1RJc01qQXhMREUwTWl3eE56WXNOVEFzTVRBNUxESTBPU3cwTWl3eE5EZ3NNakF6TERJeE1pd3lNRFlzTVRnNExEVTVMREV5TXl3eE5EQXNNVGt4TERrMExETTJMREUwTkN3eU5EUXNOVGtzTWpNNUxEUXNNVEV6TERNekxEUTVMRFkyTERNd0xESXdNeXc0TERjM0xERXlOU3d5TURrc01URXpMREkwTVN3eE1UZ3NOelFzTVRRMExEZ3lMREV3Tnl3NU15d3hOaXd5TWpFc05UQXNNak16TERFMU5TdzNOeXd4T0RJc01qQTJMREl6Tnl3NE9Dd3lMREUwTkN3eU16WXNNVGcyTERFME5Dd3lNek1zTXpZc01UUTJMREV5TERFMk1Dd3dMREU0Tml3eE9UY3NPRGNzTVRjMUxEUTVMREU1Tnl3Mk9Dd3lNVGdzTVRjMUxESXNNeXd4TERBc01RPT0iLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOiIxNTA3OTA1ODg2IiwiZXhwIjoiMTUwNzkwOTQ4NiIsImFsZyI6IlJTMjU2Iiwia2lkIjoiM2Y5OTUyNWNjM2EzM2UzYzJiNWRjZjlhMjFmNGQ4MmQzNzFiZTc2NyJ9fQ==', + expires: '1507909486' + }, + auth: false + }, + id: 14 +}; + + +let validateAssertionValuePopulate = { + identity: 'testandthink321@gmail.com', + contents: 'NDgsMTMwLDEsMzQsNDgsMTMsNiw5LDQyLDEzNCw3MiwxMzQsMjQ3LDEzLDEsMSwxLDUsMCwzLDEzMCwxLDE1LDAsNDgsMTMwLDEsMTAsMiwxMzAsMSwxLDAsMTU4LDE0NCwxNjEsOTcsMTU1LDIxNyw0MCw1MiwxMzgsMTQ3LDI4LDIwNiwxNTgsMjMyLDE0Miw1OSwxMTksNjEsMTE1LDYwLDIzMSwyMDMsNzksNTcsNTQsMTg3LDUyLDEyNCw2MSw3MCwyNywxOTIsNzgsMTYyLDExMywxMTIsMjksNTksMTg3LDQ2LDE3NSwxMDUsMTUsMTQwLDE1NCw2NCwxOTgsMTI5LDE0Myw1OSwyMjksMTA3LDk2LDExNiw3Myw2MywxNjAsMTUxLDE0MiwxMTIsOTUsMTIsMzUsMTE3LDI1MCw3MiwyMjEsMTc1LDU3LDIxNSwxMzksNDcsMTY5LDIzLDE3MywyMzIsMjAwLDE2NSwxNCwyMzcsNTYsMTUyLDIwMyw3LDEzOSwxMzQsMjQ5LDExMCwxNTMsMTYyLDY1LDIzNSw0MywxODIsMjIyLDE2NCwyMDcsNzQsMjQ5LDkwLDUxLDEzNiwyMjUsNTYsMTE5LDk1LDEzOCwxNjUsMjUsMTc3LDI1NCwyMjYsMjExLDg4LDI0MywxNiwxMDksODYsMTYxLDE0NywxNDQsMTM5LDE0NCw2LDcyLDQ0LDE2MywxMjAsNjEsMTk5LDk4LDEwNiwxMzMsMTg3LDEzMiwyMCwyNDQsMjcsMjM2LDIyOSwxOTcsMTE5LDE5NiwzNywxNDcsMTMwLDEzOSwyMzcsMTQ0LDE5MSwyMzMsMTY3LDEzMyw1MSwxNDYsMTEsMjA3LDYyLDE1NywxMzYsMzEsNzksMTYzLDQ4LDE4NCwxNTAsMjIyLDE1NCwyMCw3OCwyMzMsMjE2LDU1LDEzNCwxNzQsOTksMjIxLDgsOTQsMTQxLDE2Niw0NywxMzAsODksMjQ3LDIwMiwyMDMsMTIwLDk3LDEwMywyMTksMTA4LDQwLDUzLDEyNiwxODYsMywyMTksODYsODksMjM0LDE4Miw0Miw0OCwxNTIsMjAyLDYsMTMxLDE4NCwxMDUsNzIsOTMsMTA3LDIxNywxNzAsNzEsMTMwLDE4MywxMzYsMjU0LDEyMiw5OCwxNjQsNzUsMjM2LDE0NiwxMjcsMjcsMjYsMTQzLDExMiwxMTIsMjMyLDI0NCwxOSwxOTUsMjUzLDEwMywxODksNzgsMTI5LDIzMiwxNDcsMTg3LDk2LDQsMjMsMTQsMyw1MCwxMzMsOTMsMjMyLDI0NywyMDgsMjA1LDIsMywxLDAsMQ==' +}; + + +let getHypertyOwnerPopulate = arg => { + return 'user://google.com/testandthink123@gmail.com'; +}; + +let coreDiscoveryPopulate = function(arg1, arg2) { + return Promise.resolve({ dataObject: 'hyperty://h1.domain/h1' }); +}; + + +function log(x, y) { + console.log(x, y); +} + +let chatKeysPopulate = { + hypertyFrom: { + hyperty: 'hyperty://localhost/7339190f-056a-41e1-88ec-18f02146b5bb', + userID: 'testandthink123@gmail.com', + privateKey: undefined, + publicKey: undefined, + assertion: 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqTm1PVGsxTWpWall6TmhNek5sTTJNeVlqVmtZMlk1WVRJeFpqUmtPREprTXpjeFltVTNOamNpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWxKcFdEZEVlbFI1YWxWUVIxOU5MVlZQVEhveGJFRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVVURk1SRVV4VFhsM2VVMUVaM05OYWxGNVRFUkpNVTVEZDNsTmVsbHpUV3BOTVV4RVVUSk1SRWw1VGxOM2VFMTZaM05OZW10elRXcEpNa3hFUlhoTmFYZDRUWHBSYzAxVVp6Vk1SRVY0VFVOM01FNURkM2xOUkVselRWUm5kMHhFYTNwTVJFVXdUME4zZVUxRVozTk9ha1Z6VFZSQk0weEVSWGROVTNkNVRVUlZjMDlFVVhOT1ZGVnpUVlJqTVV4RVozZE1SRWt4VEVSSmQwNXBkM2xOUkUxelRXcEJlRXhFU1RGTVJFbDZUME4zTWt4RVdYbE1SRVV4VG1sM2VFMXFVWE5PYWtselRXcE5ORXhFUlhoTVJFa3dUMU4zTkU1RGR6Uk1SRVV6VG1sM01rNTVkM2xPVkZGelRWUnJNVXhFU1RCT1UzZDRUWHBSYzA1cGQzbE9SRTF6VFdwSk1VeEVSVEZQUTNkNFRrUlJjMDFVVFRKTVJFVjVUbmwzZUUxVVozTk5hbEY1VEVSbk5FeEVZekpNUkVVd1RtbDNlRTU1ZDNsTmFrRnpUVlJGTkV4RVNUQk9RM2MxVG5sM2VVNUVaM05OVkdONlRFUkZORTFUZHpWUFEzY3lUbWwzTkV4RVdYaE1SR2N4VEVSSk5FeEVSWHBPVTNjeFRFUkZORTlUZHpOUFUzZDRUVlJOYzAxVVl6Uk1SRVV3VDBOM2VFMTZRWE5OYWxWNlRFUkZlVTVEZDNwT1EzY3dUMU4zZVU1RVNYTk5hbFY1VEVSRk1VNXBkM2hPUkdkelRWUlZjMDVxUlhOTmFsRXhURVJKZVUxVGQzbE5SR3R6VFZSSmVreEVSWGRQUTNkNFRtcFZjMDFxU1hOTmFrRXhURVJaTTB4RVJYbE5lWGQ0VDBSVmMwMXFRWGhNUkdjeVRFUkZNMDFEZDNoTlEzZDRUWHBSYzAxVVFURk1SRVUxVG1sM2VFMXFUWE5OYWxWNVRFUkZNazU1ZDNoT2VsVnpUV3BOTWt4RVJUQlBVM2N6VFVOM01rNURkM3BOVTNkNVRWTjNlVTFFUVhOTlZFMTVURVJKZVUxNWQzaE5lbEZ6VFdwQk1VeEVSVFZPUTNkNlRXbDNNVTVEZHpOT2VYZDVUV2wzTWs1NWQzcE9VM2MwVG5sM2VVMVVWWE5QUkZselRWUnJlRXhFU1hkT2VYZDRUbnBSYzAxcVFUVk1SRWt4VEVSbmVFeEVTWGxNUkVGelRYcEpjMDVFVVhOTmFsRXpURVJuTlV4RVp6Qk1SRWw2VGxOM2VFOVVZM05PZW1OelRWUnJNMHhFUlRSTVJFVjZUbWwzZUUxVVZYTk5WR2MwVEVSRmQweEVTWGhQUTNkNFQwUkJjMDFxVVhwTVJFbDRUVU4zZWs1VGQzaE5lbWR6VFdwQk1VeEVSVEpQVTNkNFQwTjNlazU1ZHpKTVJFRnpUMVJKYzAxVVkzZE1SRTAxVEVSRk1VNURkM2xPVkZWelRWUkJNMHhFU1RKTVJFVjVUME4zZVUxcVdYTk5hazEzVEVSRk1rMXBkM2hQVkVselRXcEJlRXhFUlRCTmFYZDRUbnBaYzA1VVFYTk5WRUUxVEVSSk1FOVRkekJOYVhkNFRrUm5jMDFxUVhwTVJFbDRUV2wzZVUxRVdYTk5WR2MwVEVSVk5VeEVSWGxOZVhkNFRrUkJjMDFVYTNoTVJHc3dURVJOTWt4RVJUQk9RM2Q1VGtSUmMwNVVhM05OYWswMVRFUlJjMDFVUlhwTVJFMTZURVJSTlV4RVdUSk1SRTEzVEVSSmQwMTVkelJNUkdNelRFUkZlVTVUZDNsTlJHdHpUVlJGZWt4RVNUQk5VM2Q0VFZSbmMwNTZVWE5OVkZFd1RFUm5lVXhFUlhkT2VYYzFUWGwzZUU1cGQzbE5ha1Z6VGxSQmMwMXFUWHBNUkVVeFRsTjNNMDU1ZDNoUFJFbHpUV3BCTWt4RVNYcE9lWGMwVDBOM2VVeEVSVEJPUTNkNVRYcFpjMDFVWnpKTVJFVXdUa04zZVUxNlRYTk5lbGx6VFZSUk1reEVSWGxNUkVVeVRVTjNkMHhFUlRST2FYZDRUMVJqYzA5RVkzTk5WR014VEVSUk5VeEVSVFZPZVhjeVQwTjNlVTFVWjNOTlZHTXhURVJKYzAxNWQzaE1SRUZ6VFZFOVBTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllXTmpiM1Z1ZEhNdVoyOXZaMnhsTG1OdmJTSXNJbWxoZENJNk1UVXdOemt3TlRnNE5pd2laWGh3SWpveE5UQTNPVEE1TkRnMmZRLktvU2xyeHp1RUthd1ZWcS1TdmNHNTRXZVladWpaS2ltd2JXV21td01UcUZjMVI1My1wMFRlbWVFdS1VT29NU3NydjA1bUxoV20zV3lfb1RKM3JKeWRPX3FQS1ptU3F3aENxeEVNNjRWajNDeHRTa1c0SUg5VmR3emlmYUxtakRIQk9NZ0Y5OUNLcTBCMkhVWVhwNXU3TXJDc1VrTC1LLXhnUVI4c185MzhiUXNSX085eHpILTluZFVVTjBCb09aQ0tCYm50WmZYdjZ5am9VeEZKdG10clVUWnpsUkZYbUtxWWQtVk9TYVZ3MURldlRDbzBjbjNrTXBtZ0E1Sk13aTZ5U2pEdE9TQzkwVjc1dDZJSVhvS2g3T2ZZOG1aelIzeWprejNpckxiNEhNdDlTV21qNVlCZmF4M0FtNDY1bnBLM3RpOWxOZFZaa1lVMmZRUGg0SC1mQSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJSaVg3RHpUeWpVUEdfTS1VT0x6MWxBIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFExTERFMU15d3lNRGdzTWpReUxESTFOQ3d5TXpZc01qTTFMRFEyTERJeU5Td3hNemdzTXprc01qSTJMREV4TWl3eE16UXNNVGc1TERFeE1DdzBOQ3d5TURJc01UZ3dMRGt6TERFME9Dd3lNRGdzTmpFc01UQTNMREV3TVN3eU1EVXNPRFFzTlRVc01UYzFMRGd3TERJMUxESXdOaXd5TURNc01qQXhMREkxTERJek9DdzJMRFl5TERFMU5pd3hNalFzTmpJc01qTTRMREV4TERJME9TdzROQ3c0TERFM05pdzJOeXd5TlRRc01UazFMREkwTlN3eE16UXNOaXd5TkRNc01qSTFMREUxT0N3eE5EUXNNVE0yTERFeU55d3hNVGdzTWpReUxEZzRMRGMyTERFME5pd3hOeXd5TWpBc01URTRMREkwTkN3NU55d3lORGdzTVRjekxERTRNU3c1T0N3Mk5pdzRMRFl4TERnMUxESTRMREV6TlN3MUxERTRPU3czT1N3eE1UTXNNVGM0TERFME9Dd3hNekFzTWpVekxERXlOQ3d6TkN3ME9Td3lORElzTWpVeUxERTFOaXd4TkRnc01UVXNOakVzTWpRMUxESXlNU3d5TURrc01USXpMREV3T0N3eE5qVXNNaklzTWpBMUxEWTNMREV5TXl3eE9EVXNNakF4TERnMkxERTNNQ3d4TUN3eE16UXNNVEExTERFNU5pd3hNak1zTWpVeUxERTJOeXd4TnpVc01qTTJMREUwT1N3M01DdzJOQ3d6TVN3eU1Td3lNREFzTVRNeUxESXlNeXd4TXpRc01qQTFMREU1TkN3ek1pdzFOQ3czTnl3eU1pdzJOeXd6TlN3NE55d3lNVFVzT0RZc01Ua3hMREl3Tnl3eE56UXNNakE1TERJMUxEZ3hMREl5TERBc016SXNORFFzTWpRM0xEZzVMRGcwTERJek5Td3hPVGNzTnpjc01UazNMREU0TERFek5pd3hNVFVzTVRnNExERXdMREl4T0N3eE9EQXNNalF6TERJeE1Dd3pOU3d4TXpnc01qQTFMREUyT1N3eE9Dd3pOeXcyTERBc09USXNNVGN3TERNNUxERTFOQ3d5TlRVc01UQTNMREkyTERFeU9Dd3lNallzTWpNd0xERTJNaXd4T1RJc01qQXhMREUwTWl3eE56WXNOVEFzTVRBNUxESTBPU3cwTWl3eE5EZ3NNakF6TERJeE1pd3lNRFlzTVRnNExEVTVMREV5TXl3eE5EQXNNVGt4TERrMExETTJMREUwTkN3eU5EUXNOVGtzTWpNNUxEUXNNVEV6TERNekxEUTVMRFkyTERNd0xESXdNeXc0TERjM0xERXlOU3d5TURrc01URXpMREkwTVN3eE1UZ3NOelFzTVRRMExEZ3lMREV3Tnl3NU15d3hOaXd5TWpFc05UQXNNak16TERFMU5TdzNOeXd4T0RJc01qQTJMREl6Tnl3NE9Dd3lMREUwTkN3eU16WXNNVGcyTERFME5Dd3lNek1zTXpZc01UUTJMREV5TERFMk1Dd3dMREU0Tml3eE9UY3NPRGNzTVRjMUxEUTVMREU1Tnl3Mk9Dd3lNVGdzTVRjMUxESXNNeXd4TERBc01RPT0iLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOiIxNTA3OTA1ODg2IiwiZXhwIjoiMTUwNzkwOTQ4NiIsImFsZyI6IlJTMjU2Iiwia2lkIjoiM2Y5OTUyNWNjM2EzM2UzYzJiNWRjZjlhMjFmNGQ4MmQzNzFiZTc2NyJ9fQ==', + messageInfo: { + userProfile: undefined, + idp: 'google.com', + assertion: 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqTm1PVGsxTWpWall6TmhNek5sTTJNeVlqVmtZMlk1WVRJeFpqUmtPREprTXpjeFltVTNOamNpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWxKcFdEZEVlbFI1YWxWUVIxOU5MVlZQVEhveGJFRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVVURk1SRVV4VFhsM2VVMUVaM05OYWxGNVRFUkpNVTVEZDNsTmVsbHpUV3BOTVV4RVVUSk1SRWw1VGxOM2VFMTZaM05OZW10elRXcEpNa3hFUlhoTmFYZDRUWHBSYzAxVVp6Vk1SRVY0VFVOM01FNURkM2xOUkVselRWUm5kMHhFYTNwTVJFVXdUME4zZVUxRVozTk9ha1Z6VFZSQk0weEVSWGROVTNkNVRVUlZjMDlFVVhOT1ZGVnpUVlJqTVV4RVozZE1SRWt4VEVSSmQwNXBkM2xOUkUxelRXcEJlRXhFU1RGTVJFbDZUME4zTWt4RVdYbE1SRVV4VG1sM2VFMXFVWE5PYWtselRXcE5ORXhFUlhoTVJFa3dUMU4zTkU1RGR6Uk1SRVV6VG1sM01rNTVkM2xPVkZGelRWUnJNVXhFU1RCT1UzZDRUWHBSYzA1cGQzbE9SRTF6VFdwSk1VeEVSVEZQUTNkNFRrUlJjMDFVVFRKTVJFVjVUbmwzZUUxVVozTk5hbEY1VEVSbk5FeEVZekpNUkVVd1RtbDNlRTU1ZDNsTmFrRnpUVlJGTkV4RVNUQk9RM2MxVG5sM2VVNUVaM05OVkdONlRFUkZORTFUZHpWUFEzY3lUbWwzTkV4RVdYaE1SR2N4VEVSSk5FeEVSWHBPVTNjeFRFUkZORTlUZHpOUFUzZDRUVlJOYzAxVVl6Uk1SRVV3VDBOM2VFMTZRWE5OYWxWNlRFUkZlVTVEZDNwT1EzY3dUMU4zZVU1RVNYTk5hbFY1VEVSRk1VNXBkM2hPUkdkelRWUlZjMDVxUlhOTmFsRXhURVJKZVUxVGQzbE5SR3R6VFZSSmVreEVSWGRQUTNkNFRtcFZjMDFxU1hOTmFrRXhURVJaTTB4RVJYbE5lWGQ0VDBSVmMwMXFRWGhNUkdjeVRFUkZNMDFEZDNoTlEzZDRUWHBSYzAxVVFURk1SRVUxVG1sM2VFMXFUWE5OYWxWNVRFUkZNazU1ZDNoT2VsVnpUV3BOTWt4RVJUQlBVM2N6VFVOM01rNURkM3BOVTNkNVRWTjNlVTFFUVhOTlZFMTVURVJKZVUxNWQzaE5lbEZ6VFdwQk1VeEVSVFZPUTNkNlRXbDNNVTVEZHpOT2VYZDVUV2wzTWs1NWQzcE9VM2MwVG5sM2VVMVVWWE5QUkZselRWUnJlRXhFU1hkT2VYZDRUbnBSYzAxcVFUVk1SRWt4VEVSbmVFeEVTWGxNUkVGelRYcEpjMDVFVVhOTmFsRXpURVJuTlV4RVp6Qk1SRWw2VGxOM2VFOVVZM05PZW1OelRWUnJNMHhFUlRSTVJFVjZUbWwzZUUxVVZYTk5WR2MwVEVSRmQweEVTWGhQUTNkNFQwUkJjMDFxVVhwTVJFbDRUVU4zZWs1VGQzaE5lbWR6VFdwQk1VeEVSVEpQVTNkNFQwTjNlazU1ZHpKTVJFRnpUMVJKYzAxVVkzZE1SRTAxVEVSRk1VNURkM2xPVkZWelRWUkJNMHhFU1RKTVJFVjVUME4zZVUxcVdYTk5hazEzVEVSRk1rMXBkM2hQVkVselRXcEJlRXhFUlRCTmFYZDRUbnBaYzA1VVFYTk5WRUUxVEVSSk1FOVRkekJOYVhkNFRrUm5jMDFxUVhwTVJFbDRUV2wzZVUxRVdYTk5WR2MwVEVSVk5VeEVSWGxOZVhkNFRrUkJjMDFVYTNoTVJHc3dURVJOTWt4RVJUQk9RM2Q1VGtSUmMwNVVhM05OYWswMVRFUlJjMDFVUlhwTVJFMTZURVJSTlV4RVdUSk1SRTEzVEVSSmQwMTVkelJNUkdNelRFUkZlVTVUZDNsTlJHdHpUVlJGZWt4RVNUQk5VM2Q0VFZSbmMwNTZVWE5OVkZFd1RFUm5lVXhFUlhkT2VYYzFUWGwzZUU1cGQzbE5ha1Z6VGxSQmMwMXFUWHBNUkVVeFRsTjNNMDU1ZDNoUFJFbHpUV3BCTWt4RVNYcE9lWGMwVDBOM2VVeEVSVEJPUTNkNVRYcFpjMDFVWnpKTVJFVXdUa04zZVUxNlRYTk5lbGx6VFZSUk1reEVSWGxNUkVVeVRVTjNkMHhFUlRST2FYZDRUMVJqYzA5RVkzTk5WR014VEVSUk5VeEVSVFZPZVhjeVQwTjNlVTFVWjNOTlZHTXhURVJKYzAxNWQzaE1SRUZ6VFZFOVBTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllXTmpiM1Z1ZEhNdVoyOXZaMnhsTG1OdmJTSXNJbWxoZENJNk1UVXdOemt3TlRnNE5pd2laWGh3SWpveE5UQTNPVEE1TkRnMmZRLktvU2xyeHp1RUthd1ZWcS1TdmNHNTRXZVladWpaS2ltd2JXV21td01UcUZjMVI1My1wMFRlbWVFdS1VT29NU3NydjA1bUxoV20zV3lfb1RKM3JKeWRPX3FQS1ptU3F3aENxeEVNNjRWajNDeHRTa1c0SUg5VmR3emlmYUxtakRIQk9NZ0Y5OUNLcTBCMkhVWVhwNXU3TXJDc1VrTC1LLXhnUVI4c185MzhiUXNSX085eHpILTluZFVVTjBCb09aQ0tCYm50WmZYdjZ5am9VeEZKdG10clVUWnpsUkZYbUtxWWQtVk9TYVZ3MURldlRDbzBjbjNrTXBtZ0E1Sk13aTZ5U2pEdE9TQzkwVjc1dDZJSVhvS2g3T2ZZOG1aelIzeWprejNpckxiNEhNdDlTV21qNVlCZmF4M0FtNDY1bnBLM3RpOWxOZFZaa1lVMmZRUGg0SC1mQSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJSaVg3RHpUeWpVUEdfTS1VT0x6MWxBIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFExTERFMU15d3lNRGdzTWpReUxESTFOQ3d5TXpZc01qTTFMRFEyTERJeU5Td3hNemdzTXprc01qSTJMREV4TWl3eE16UXNNVGc1TERFeE1DdzBOQ3d5TURJc01UZ3dMRGt6TERFME9Dd3lNRGdzTmpFc01UQTNMREV3TVN3eU1EVXNPRFFzTlRVc01UYzFMRGd3TERJMUxESXdOaXd5TURNc01qQXhMREkxTERJek9DdzJMRFl5TERFMU5pd3hNalFzTmpJc01qTTRMREV4TERJME9TdzROQ3c0TERFM05pdzJOeXd5TlRRc01UazFMREkwTlN3eE16UXNOaXd5TkRNc01qSTFMREUxT0N3eE5EUXNNVE0yTERFeU55d3hNVGdzTWpReUxEZzRMRGMyTERFME5pd3hOeXd5TWpBc01URTRMREkwTkN3NU55d3lORGdzTVRjekxERTRNU3c1T0N3Mk5pdzRMRFl4TERnMUxESTRMREV6TlN3MUxERTRPU3czT1N3eE1UTXNNVGM0TERFME9Dd3hNekFzTWpVekxERXlOQ3d6TkN3ME9Td3lORElzTWpVeUxERTFOaXd4TkRnc01UVXNOakVzTWpRMUxESXlNU3d5TURrc01USXpMREV3T0N3eE5qVXNNaklzTWpBMUxEWTNMREV5TXl3eE9EVXNNakF4TERnMkxERTNNQ3d4TUN3eE16UXNNVEExTERFNU5pd3hNak1zTWpVeUxERTJOeXd4TnpVc01qTTJMREUwT1N3M01DdzJOQ3d6TVN3eU1Td3lNREFzTVRNeUxESXlNeXd4TXpRc01qQTFMREU1TkN3ek1pdzFOQ3czTnl3eU1pdzJOeXd6TlN3NE55d3lNVFVzT0RZc01Ua3hMREl3Tnl3eE56UXNNakE1TERJMUxEZ3hMREl5TERBc016SXNORFFzTWpRM0xEZzVMRGcwTERJek5Td3hPVGNzTnpjc01UazNMREU0TERFek5pd3hNVFVzTVRnNExERXdMREl4T0N3eE9EQXNNalF6TERJeE1Dd3pOU3d4TXpnc01qQTFMREUyT1N3eE9Dd3pOeXcyTERBc09USXNNVGN3TERNNUxERTFOQ3d5TlRVc01UQTNMREkyTERFeU9Dd3lNallzTWpNd0xERTJNaXd4T1RJc01qQXhMREUwTWl3eE56WXNOVEFzTVRBNUxESTBPU3cwTWl3eE5EZ3NNakF6TERJeE1pd3lNRFlzTVRnNExEVTVMREV5TXl3eE5EQXNNVGt4TERrMExETTJMREUwTkN3eU5EUXNOVGtzTWpNNUxEUXNNVEV6TERNekxEUTVMRFkyTERNd0xESXdNeXc0TERjM0xERXlOU3d5TURrc01URXpMREkwTVN3eE1UZ3NOelFzTVRRMExEZ3lMREV3Tnl3NU15d3hOaXd5TWpFc05UQXNNak16TERFMU5TdzNOeXd4T0RJc01qQTJMREl6Tnl3NE9Dd3lMREUwTkN3eU16WXNNVGcyTERFME5Dd3lNek1zTXpZc01UUTJMREV5TERFMk1Dd3dMREU0Tml3eE9UY3NPRGNzTVRjMUxEUTVMREU1Tnl3Mk9Dd3lNVGdzTVRjMUxESXNNeXd4TERBc01RPT0iLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOiIxNTA3OTA1ODg2IiwiZXhwIjoiMTUwNzkwOTQ4NiIsImFsZyI6IlJTMjU2Iiwia2lkIjoiM2Y5OTUyNWNjM2EzM2UzYzJiNWRjZjlhMjFmNGQ4MmQzNzFiZTc2NyJ9fQ==', + expires: '1507909486' + } + }, + hypertyTo: { + hyperty: 'hyperty://localhost/9e1c674c-9374-491f-9812-4c3f31450951', + userID: undefined, + publicKey: undefined, + assertion: undefined + }, + keys: { + hypertyToSessionKey: undefined, + hypertyFromSessionKey: undefined, + hypertyToHashKey: undefined, + hypertyFromHashKey: undefined, + toRandom: undefined, + fromRandom: undefined, + premasterKey: undefined, + masterKey: undefined + }, + handshakeHistory: { + senderHello: undefined, + receiverHello: undefined, + senderCertificate: undefined, + receiverFinishedMessage: undefined + }, + initialMessage: { body: { value: 'Initial Message Value' } }, + callback: undefined, + authenticated: true, + dataObjectURL: 'comm://localhost/6c3b1310-28e2-43bf-bc1e-a4405a6733a2' +}; diff --git a/test/HypertyResourceStorage.spec.js b/test/HypertyResourceStorage.spec.js old mode 100644 new mode 100755 diff --git a/test/IdentityModule.spec.js b/test/IdentityModule.spec.js index afd3247f..0d9bb4d0 100755 --- a/test/IdentityModule.spec.js +++ b/test/IdentityModule.spec.js @@ -8,7 +8,7 @@ import DataObjectsStorage from '../src/store-objects/DataObjectsStorage'; import PEP from '../src/policy/PEP'; import RuntimeCoreCtx from '../src/policy/context/RuntimeCoreCtx'; import Crypto from '../src/cryptoManager/Crypto'; -import * as cryptoManager from '../src/cryptoManager/CryptoManager'; +import CryptoManager from '../src/cryptoManager/CryptoManager'; chai.config.truncateThreshold = 0; chai.use(chaiAsPromised); @@ -17,205 +17,43 @@ chai.use(assertArrays); const expect = chai.expect; const assert = chai.assert; -const IV_SIZE = 16; -const RANDOM_VALUE_SIZE = 32; -const PMS_SIZE = 48; - let crypto = undefined; let bus = undefined; let storageManager = undefined; let runtimeCapabilities = undefined; let hyperURL1 = undefined; -let hyperURL2 = undefined; let runtimeURL = undefined; +let objURL = undefined; let idpDomain = undefined; let idpDomainURL = undefined; -let usernameHint = undefined; let policyEngine = undefined; let msgNodeResponseFunc = undefined; let coreDiscovery = undefined; let idmURL = undefined; -let objURL = undefined; -let handlers = undefined; let identityModule = undefined; let userEmail = undefined; let guiURL = undefined; let userURL = undefined; -let idps = undefined; let cn = undefined; let loginUrl = undefined; -let loginURLResponse = undefined; -let assertion_val = undefined; - -describe('Crypto tests', function() { - - before('Init structures before test', function() { - crypto = new Crypto(runtimeFactory); - console.log(crypto); - }); - - //note: new TextEncoder('utf-8').encode(s); - // new TextDecoder('utf-8').decode(s); - - it.skip('Code and encode test', function() { - let value = new Uint8Array([10, 15, 25, 55, 18, 4, 6]); - let encodedValue = crypto.encode(value); - let decodedValue = crypto.decode(encodedValue); - console.log(value, decodedValue); - expect(value).to.be.equalTo(decodedValue); - }); - - it('Test generated IVs', function() { - let IV_1 = crypto.generateIV(); - let IV_2 = crypto.generateIV(); - expect(IV_1).to.be.ofSize(IV_SIZE); - expect(IV_2).to.be.ofSize(IV_SIZE); - expect(IV_1).not.to.be.equalTo(IV_2); - }); - - it('Test generated random values', function() { - let rand_1 = crypto.generateRandom(); - let rand_2 = crypto.generateRandom(); - expect(rand_1).to.be.ofSize(RANDOM_VALUE_SIZE); - expect(rand_2).to.be.ofSize(RANDOM_VALUE_SIZE); - expect(rand_1).not.to.be.equalTo(rand_2); - }); - - it('Test generatePMS key', function() { - let PMS_1 = crypto.generatePMS(); - let PMS_2 = crypto.generatePMS(); - expect(PMS_1).to.be.ofSize(PMS_SIZE); - expect(PMS_2).to.be.ofSize(PMS_SIZE); - expect(PMS_1).not.to.be.equalTo(PMS_2); - }); - - it('Test generateMasterSecret key', function(done) { - let oldKey = crypto.generateRandom(); - let seed = crypto.generateRandom(); - - crypto.generateMasterSecret(oldKey, seed).then(key1 => { - crypto - .generateMasterSecret(oldKey, seed) - .then(key2 => { - expect(key1).to.be.ofSize(PMS_SIZE); - expect(key2).to.be.ofSize(PMS_SIZE); - expect(key1).to.be.equalTo(key2); - }) - .then( function() { done() }); - }); - }); - - it('Test concatPMSwithRandoms key', function() { - let PMSKey = crypto.generatePMS(); - let rand1 = crypto.generateRandom(); - let rand2 = crypto.generateRandom(); - let totalSize = PMSKey.length + rand1.length + rand2.length; - let concat1 = crypto.concatPMSwithRandoms(PMSKey, rand1, rand2); - let concat2 = crypto.concatPMSwithRandoms(PMSKey, rand1, rand2); - expect(concat1).to.be.ofSize(totalSize); - expect(concat2).to.be.ofSize(totalSize); - expect(concat1).to.be.equalTo(concat2); - }); - - it('Test generateKeys', function(done) { - let secret = crypto.generateRandom(); - let seed = crypto.generateRandom(); - crypto.generateKeys(secret, seed).then(key1 => { - crypto - .generateKeys(secret, seed) - .then(key2 => { - expect(key1).to.be.ofSize(4); - expect(key1[0]).to.be.ofSize(RANDOM_VALUE_SIZE); - expect(key1[1]).to.be.ofSize(RANDOM_VALUE_SIZE); - expect(key1[2]).to.be.ofSize(RANDOM_VALUE_SIZE); - expect(key1[3]).to.be.ofSize(RANDOM_VALUE_SIZE); - expect(key2).to.be.ofSize(4); - expect(key2[0]).to.be.ofSize(RANDOM_VALUE_SIZE); - expect(key2[1]).to.be.ofSize(RANDOM_VALUE_SIZE); - expect(key2[2]).to.be.ofSize(RANDOM_VALUE_SIZE); - expect(key2[3]).to.be.ofSize(RANDOM_VALUE_SIZE); - expect(key1).not.to.be.equalTo(key2); - }) - .then( function() { done() }); - }); - }); - - it('Test genereated keys pair with encrypt and decrypt data', function(done) { - crypto.generateRSAKeyPair().then(keyPair => { - let data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); - crypto.encryptRSA(keyPair.public, data).then(encryptedData => { - crypto - .decryptRSA(keyPair.private, encryptedData) - .then(decryptedData => { - expect(data).to.be.equalTo(decryptedData); - }) - .then( function() { done() }); - }); - }); - }); - - it('Test AES algorithm', function(done) { - let AESKey = crypto.generateRandom(); - let IV = crypto.generateIV(); - expect(AESKey).to.be.ofSize(RANDOM_VALUE_SIZE); - expect(IV).to.be.ofSize(IV_SIZE); - let data = '0,1,2,3,4,5,6,7,8,9'; - crypto.encryptAES(AESKey, data, IV).then(encryptedData => { - crypto - .decryptAES(AESKey, encryptedData, IV) - .then(decryptedData => { - expect(data).to.equal(decryptedData); - }) - .then( function() { done() }); - }); - }); - - //NOTE: encryptRSA and signRSA use different encode types (_utf8Encode vs. Uint8Array) - it.skip('Test genereated keys pair, signRSA and verifyRSA', function(done) { - crypto.generateRSAKeyPair().then(keyPair => { - // log(keyPair.private) - let data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); - crypto.signRSA(keyPair.private, data).then(signedData => { - crypto - .verifyRSA(keyPair.public, data, signedData) - .then(verificationResult => { - assert.isTrue(verificationResult, 'The signitured is different'); - }) - .then( function() { done() }); - }); - }); - }); +let assertionVal = undefined; +let idps = undefined; - it('Test hashHMAC and verifyHMAC', function(done) { - let key = crypto.generateRandom(); - let data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); - crypto.hashHMAC(key, data).then(HMAC => { - crypto - .verifyHMAC(key, data, HMAC) - .then(verificationResult => { - assert.isTrue(verificationResult, 'HMAC is different'); - }) - .then( function() { done() }); - }); - }); -}); -describe.skip('Identity Module tests', function() { +describe('Identity Module tests', function() { before('Init structures once before all tests', function() { crypto = new Crypto(runtimeFactory); hyperURL1 = 'hyperty://h1.domain/h1'; - hyperURL2 = 'hyperty://h2.domain/h2'; runtimeURL = 'runtime://fake-runtime'; idmURL = runtimeURL + '/idm'; - objURL = 'resource://obj1'; idpDomain = 'google.com'; idpDomainURL = 'domain-idp://' + idpDomain; - usernameHint = 'usernameHint'; userEmail = 'testandthink123@gmail.com'; guiURL = runtimeURL + '/identity-gui'; + objURL = 'resource://obj1'; userURL = 'user://google.com/testandthink123@gmail.com'; idps = [ { domain: 'google.com', type: 'idToken' }, @@ -226,12 +64,9 @@ describe.skip('Identity Module tests', function() { cn = 'testandthink123'; loginUrl = 'https://accounts.google.com/o/oauth2/auth?scope=openid%20email%20profile&client_id=808329566012-tqr8qoh111942gd2kg007t0s8f277roi.apps.googleusercontent.com&redirect_uri=https://localhost&response_type=code token id_token&state=state&access_type=offline&nonce=NDgsMTMwLDEsMzQsNDgsMTMsNiw5LDQyLDEzNCw3MiwxMzQsMjQ3LDEzLDEsMSwxLDUsMCwzLDEzMCwxLDE1LDAsNDgsMTMwLDEsMTAsMiwxMzAsMSwxLDAsMTQ3LDc3LDE2MiwyMjUsNzYsMTE5LDM4LDI1MSw3MiwyMjcsNTIsMjA4LDE4MSwxODQsMTUzLDU4LDExOCwxNTksODUsOTksNzEsMTE4LDQzLDIzMiwxMTUsMTEsMTgwLDE2LDIwNCwyMTIsODgsMjUwLDIyOCw0NywxNDksMTExLDc4LDEzNCwxMjEsMjA1LDIxNiwxOTgsMTYsMTE5LDEwMywxNTQsMjM5LDE1NSwxMjMsMTk4LDUxLDE3Niw4NywxNTcsMjQ0LDE1MiwxMDUsMTIsMjA1LDg5LDI1MiwyNTIsNDgsMTU4LDE1OCwyOSwxNzYsMTAzLDE1MSwyMDQsNzgsMjEsODAsMTQzLDEyMCwxMDcsMjQ1LDI0NSwzLDkxLDIwNiwyNCwxMjAsNzMsMTgwLDEyOCwxNjAsMTA0LDIxNyw4OSwzOCwyMzEsMjksMjI3LDI1Myw0OCwyOSw4MywxMDksMTU0LDI2LDIxNSwxMzEsMjQxLDIzNyw1MCwxMzEsMjM0LDc4LDcwLDEzOCwyNDMsNSwyNTMsMTgyLDkxLDIyNSwxODIsMTgwLDUyLDE3LDE1LDEwOSwxMSwxMjYsOTUsMjE2LDM3LDIyNCwxNCwwLDIxNSwyMDQsNjEsMTU2LDIwNywxMzEsMTIxLDc2LDkzLDE2OCwxNTEsNDAsMTcsMTI0LDExMCw4MiwyMTksMjA1LDIxNSwyNDksMTcsMjA4LDk2LDExNCwxOTQsNjcsMjMsMTUsMjA2LDIyNiwxMzIsMTg0LDE0MSwxMTgsMTAsMTA1LDkyLDg3LDYwLDE3NiwxNTYsMTMxLDk0LDUyLDEwLDI0OCwyNTUsMjM5LDgsMTgxLDE3Myw2NywxODEsMjUsNzYsMjU1LDUzLDE3NSwxOCwxMzgsMTkwLDEyNCwxODIsMTU1LDE4LDE5OSwxMzIsNzUsMjMyLDUsMTU2LDE1MiwxODcsMTIyLDU4LDIzNiwxNTgsMTY3LDQ3LDE5MywxMzYsODIsMjM0LDIxMSwxNzYsODAsMTg1LDE3MSwxMjMsMCw2LDE5OCwyMTQsMjEsMTAzLDc4LDIyNywzNywxMDIsNjksMTYsNjAsOCwyMDMsNTQsMTc0LDE3MiwyMDksMTY0LDIyMSwyNywxNTUsODUsMTI2LDE1NSwyNDEsODMsMSwxMTgsMTE3LDIsMjM3LDEwMSw3MiwxMDcsMiwzLDEsMCwx'; - loginURLResponse = - 'https://localhost/#state=state&code=4/8HTc7jG3P6q3YwJQ5qAtwVRHXYvZakRLTINxxFJBBFM&access_token=ya29.GlvOBPazlCr7mGEJgoQnXlqSZIvlFDi6vRnGQP4yd-flNwoWZZqCNuMFcXTpgB7rLoNSPiW6Xz8zK1yRXCozWcHABAHzu8YqLD3HpmQNXaNEvnE13_8MuklNfy8K&token_type=Bearer&expires_in=3600&id_token=eyJhbGciOiJSUzI1NiIsImtpZCI6ImU2YmEyOTY5NTU2NWY3ODQ3OTkwMWNmMzU5ZmQ2ZTliZGJiZDdjY2QifQ.eyJhenAiOiI4MDgzMjk1NjYwMTItdHFyOHFvaDExMTk0MmdkMmtnMDA3dDBzOGYyNzdyb2kuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI4MDgzMjk1NjYwMTItdHFyOHFvaDExMTk0MmdkMmtnMDA3dDBzOGYyNzdyb2kuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMTc5NTkxMDUyOTU3NjE2ODc4ODkiLCJlbWFpbCI6InRlc3RhbmR0aGluazEyM0BnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXRfaGFzaCI6IjVkUnVaOXh5X3NxRm5ucVhMX3lkQ3ciLCJjX2hhc2giOiJJMldjY3U4SGZhenNSNkZpQXdoam9RIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFEzTERjM0xERTJNaXd5TWpVc056WXNNVEU1TERNNExESTFNU3czTWl3eU1qY3NOVElzTWpBNExERTRNU3d4T0RRc01UVXpMRFU0TERFeE9Dd3hOVGtzT0RVc09Ua3NOekVzTVRFNExEUXpMREl6TWl3eE1UVXNNVEVzTVRnd0xERTJMREl3TkN3eU1USXNPRGdzTWpVd0xESXlPQ3cwTnl3eE5Ea3NNVEV4TERjNExERXpOQ3d4TWpFc01qQTFMREl4Tml3eE9UZ3NNVFlzTVRFNUxERXdNeXd4TlRRc01qTTVMREUxTlN3eE1qTXNNVGs0TERVeExERTNOaXc0Tnl3eE5UY3NNalEwTERFMU1pd3hNRFVzTVRJc01qQTFMRGc1TERJMU1pd3lOVElzTkRnc01UVTRMREUxT0N3eU9Td3hOellzTVRBekxERTFNU3d5TURRc056Z3NNakVzT0RBc01UUXpMREV5TUN3eE1EY3NNalExTERJME5Td3pMRGt4TERJd05pd3lOQ3d4TWpBc056TXNNVGd3TERFeU9Dd3hOakFzTVRBMExESXhOeXc0T1N3ek9Dd3lNekVzTWprc01qSTNMREkxTXl3ME9Dd3lPU3c0TXl3eE1Ea3NNVFUwTERJMkxESXhOU3d4TXpFc01qUXhMREl6Tnl3MU1Dd3hNekVzTWpNMExEYzRMRGN3TERFek9Dd3lORE1zTlN3eU5UTXNNVGd5TERreExESXlOU3d4T0RJc01UZ3dMRFV5TERFM0xERTFMREV3T1N3eE1Td3hNallzT1RVc01qRTJMRE0zTERJeU5Dd3hOQ3d3TERJeE5Td3lNRFFzTmpFc01UVTJMREl3Tnl3eE16RXNNVEl4TERjMkxEa3pMREUyT0N3eE5URXNOREFzTVRjc01USTBMREV4TUN3NE1pd3lNVGtzTWpBMUxESXhOU3d5TkRrc01UY3NNakE0TERrMkxERXhOQ3d4T1RRc05qY3NNak1zTVRVc01qQTJMREl5Tml3eE16SXNNVGcwTERFME1Td3hNVGdzTVRBc01UQTFMRGt5TERnM0xEWXdMREUzTml3eE5UWXNNVE14TERrMExEVXlMREV3TERJME9Dd3lOVFVzTWpNNUxEZ3NNVGd4TERFM015dzJOeXd4T0RFc01qVXNOellzTWpVMUxEVXpMREUzTlN3eE9Dd3hNemdzTVRrd0xERXlOQ3d4T0RJc01UVTFMREU0TERFNU9Td3hNeklzTnpVc01qTXlMRFVzTVRVMkxERTFNaXd4T0Rjc01USXlMRFU0TERJek5pd3hOVGdzTVRZM0xEUTNMREU1TXl3eE16WXNPRElzTWpNMExESXhNU3d4TnpZc09EQXNNVGcxTERFM01Td3hNak1zTUN3MkxERTVPQ3d5TVRRc01qRXNNVEF6TERjNExESXlOeXd6Tnl3eE1ESXNOamtzTVRZc05qQXNPQ3d5TURNc05UUXNNVGMwTERFM01pd3lNRGtzTVRZMExESXlNU3d5Tnl3eE5UVXNPRFVzTVRJMkxERTFOU3d5TkRFc09ETXNNU3d4TVRnc01URTNMRElzTWpNM0xERXdNU3czTWl3eE1EY3NNaXd6TERFc01Dd3giLCJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwianRpIjoiY2YwYTMzZjY5OGRhN2M5ZmEwM2UxNmQ5Y2U5OWQ4NGUwNzk5ZWVhZiIsImlhdCI6MTUwNjA4NzI5NywiZXhwIjoxNTA2MDkwODk3fQ.pngFfaQ8u9PRYBJ986PyR5S3Qg9EqDU0Rn2ELikR9dh9bVeJBQgn-JLGMpu6lReNSuPDY-O0UTbgaIlGaz5-_HO4_mxZf8A8b0KbTsq9tBmO55PdjGTwc86BPSeWUcS_Y7J6Y09Oz6NN8nycNZAWANi2PJykLQu64RseIy5HJktrU6LODfDPNbQpi_qZLM0DNDRB8geKKu0k2V4BNB29aEOQTc0atjmVQBjDIkZAxbATx_BmXaG2AvomEUPhd9kIATu7u6ZE-NnrTQPYn6YOAK9rCIdb5A0-JHDkqIUXnJBbPpYr_RZmKQZgF1Jql6yH3QpAPG2-3TTVoyw_TRWJ-g&authuser=0&session_state=576b72758ecad0f00705f024a89f7f6d3a7d17dd..939b&prompt=consent'; - assertion_val = + assertionVal = 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqZGxZMkkxTkdObE56RmtOakU0WWpJNE16QmpZMlZqT1RreE9EZ3hPR1UzTXpneE1EQm1NbUVpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SW1Ka2FHVjJkVU0zU0RaNVpuSkpWakZEVURsdmFIY2lMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVZURk1SRWwzVFVOM2VFMXBkelZPUTNkNFQwUkZjMDFxUlRSTVJFVXlUbmwzZUUxVVozTk9SRkZ6VGxSUmMwMTZZM05OYWsxM1RFUkplVTVUZHpGUFEzZDRUMVJGYzAxVVdUUk1SRTB5VEVSTk1VeEVSVEZPVTNjMVRubDNNazlUZDNsTmFsVnpUVlJKZVV4RVozbE1SRVY2VFhsM01reEVTVEJPVTNkNlRYbDNlazE1ZDNsT1ZGRnpUVlJWZVV4RVJUVk5hWGQ0VFVSamMwMVVZek5NUkVWNlRtbDNNRTVwZDNwTVJHTnpUMVJuYzA1cVFYTk5la0Z6VGtSSmMwMXFRVFZNUkVVeVRsTjNlVTFVVlhOTlZGVXdURVJGTUUxNWQzaE9hbGx6VGtSQmMwNXFTWE5OVkVVelRFUlJla3hFU1RKTVJFbDVUbmwzTVU1RGQzaE5lbGx6VG1wVmMwOVVZM05OYVhjMFRubDNlRTE2WTNOT2VsRnpUVlJyZVV4RVdUUk1SRWwzVGtOM2VFOUVaM05OYWxGNlRFUkZkMDVEZDNoTmFrbHpUMVJqYzAxVVl6Tk1SRVY2VFZOM2VFOUVSWE5OVkdNMVRFUm5lRXhFVlhsTVJFVXhUa04zZVU1cGR6Sk1SRlY2VEVSamVFeEVhekZNUkVWNVRVTjNlVTFxV1hOTlZFRjNURVJKZVUxRGQzbE5SR3R6VFZSck1VeEVSVE5OVTNjeFRubDNlRTlFVFhOTmVsbHpUVlJaTlV4RVJUQk9VM2MxVDBOM2VFMUVXWE5OVkdkelRXcEJNa3hFUlRSTlEzZDRUVVJCYzAxVVdUTk1SRmw0VEVSRmQwNTVkekJOVTNkNlRrTjNlVXhFU1RCT2VYZDVUa1JSYzAxVVZYZE1SRVV5VG5sM2VVMUVVWE5OYWtVeVRFUlZOVXhFU1hsT2VYYzBURVJKTWt4RVZUTk1SRVUwVDFOM2VFNUVSWE5OVkdjMFRFUm5Na3hFU1hsT1UzZDRUVlJuYzAxVVJYaE1SRVV6VG5sM2VFOUVTWE5OVkdONFRFUkZOVXhFV1hkTVJFVTBUbmwzZUUxNlRYTk5hbEZ6VFZSWk1FeEVSVEJQUTNkNFQwUnJjMDlFVlhOTlZHTjZURVJGTlUxVGQzbE5WRWx6VFdwUk0weEVTWGROVTNkNFQwUkZjMDU2UlhOUFJHZHpUVlJGZVV4RVJUSlBRM2Q0VFhwRmMwMVVZekJNUkZrelRFUlpNRXhFUlRGUFUzZDVUVVJaYzAxVVVUTk1SRlV3VEVSVk1FeEVSVEJPZVhjMFRtbDNNVTlEZDNsTmFsVnpUV3ByYzAxNlFYTk5WRWwzVEVSSk1FNXBkM2hPYW1OelRucG5jMDU2UlhOTlZGRjVURVJKZVU5RGR6Uk5VM2Q1VFhwbmMwMVVRWHBNUkZsNVRFUkpNRTE1ZDNsT1JFVnpUV3BKTWt4RVJURk5hWGN5VFhsM2VFNXBkelZQUTNkNFRucE5jMDE2WTNOTlZHc3lURVJWZVV4RVZUUk1SRkUxVEVSRk5FMVRkekJPYVhkNFRrUnJjMDFVUVRSTVJFVXdUMU4zTUU5VGR6Tk1SR2Q2VEVSRmVFOURkM2xOYW10elRXcFZNRXhFU1hoT2VYZDRUbXBqYzAxVVdUTk1SRWw1VEVSSk1FNTVkM2hQVkZWelRWUkZlVXhFUlhoT1UzZDVUbFJCYzAxRGQzaE9WR056VFdwVmVFeEVSVE5QUTNkNVRVUnJjMDU2U1hOTlZGVTFURVJGZVU1NWQzaFBSRVZ6VFZSRmVVeEVUWGRNUkdNeFRFUnJjMDFxVFRKTVJFbDVURVJGZVUxcGR6Sk5RM2N4VDBOM2VFeEVSWGxPVTNkNVRXcEJjMDFxVFRGTVJFbDVUbE4zZVUxcVozTk5hbEY2VEVSSk1FNURkM2xOVkZselRWUkpkMHhFUlhkT2VYZDRUbXBCYzAxcVJYbE1SRVY1VGtOM2VVMXFWWE5PZWtWelRWUnJNMHhFVFRSTVJFVXpUVU4zZUUxcVRYTk5WRmswVEVSTk5VeEVUVEJNUkVVeVQxTjNlRTlFVVhOT1ZHZHpUVlJGZVV4RVozZE1SR014VEVSRk5VMURkM2xOUkdOelRWUmplVXhFU1hoTmVYZDVURVJOYzAxVGQzZE1SRVU5SWl3aWFYTnpJam9pYUhSMGNITTZMeTloWTJOdmRXNTBjeTVuYjI5bmJHVXVZMjl0SWl3aWFXRjBJam94TlRBMU5Ea3hOelF5TENKbGVIQWlPakUxTURVME9UVXpOREo5LktHYWp6N0NjamtPUnIxS055TFgwRHFXaVRRM2s3d2Q0NDRsU0RiSFYtRV9adHY0bzhDdVlTTVJQRU12eGtncG5PaDBGd241OWROd2F5LXdqSkFZZWhCVWpCdllQZHgzejMzZDF0Uk5OcTlBUV9NQXJqZGVqQnkxcFpkR1FaY1diRUpMSUtPYXZuNGs2LS1mb0M4OUdkXzI2aU9tV1A1ZE9BcjRRU0tyVlZyRURlNDNnQXZ0Mms5anVpaGFnX1B5U0ROMjZXbVJDTVY4N2lFY3lzS3JfTTlXVExYS3k2NWU5czloNEpQYmdqMzZvSllrX3Bpbmk0YlJ6MERCd0lOLVI5TlAtZmkyT2VlRFptbXd4YzJXdnd1c05yaFJZamxGMmNkMjZwUFhaeTlMWlZPTU1fRERoTVpsMVVMclJvZnVFT1BMVXEtWFZZV3lmUXRMZnBPRkthdyIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJiZGhldnVDN0g2eWZySVYxQ1A5b2h3Iiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFUxTERJd01Dd3hNaXc1TkN3eE9ERXNNakU0TERFMk55d3hNVGdzTkRRc05UUXNNemNzTWpNd0xESXlOU3cxT0N3eE9URXNNVFk0TERNMkxETTFMREUxTlN3NU55dzJPU3d5TWpVc01USXlMRGd5TERFek15dzJMREkwTlN3ek15d3pNeXd5TlRRc01UVXlMREU1TWl3eE1EY3NNVGMzTERFek5pdzBOaXd6TERjc09UZ3NOakFzTXpBc05ESXNNakE1TERFMk5Td3lNVFVzTVRVMExERTBNeXd4TmpZc05EQXNOaklzTVRFM0xEUXpMREkyTERJeU55dzFOQ3d4TXpZc05qVXNPVGNzTWl3NE55d3hNemNzTnpRc01Ua3lMRFk0TERJd05Dd3hPRGdzTWpRekxERXdOQ3d4TWpJc09UY3NNVGMzTERFek1Td3hPREVzTVRjNUxEZ3hMRFV5TERFMU5Dd3lOaXcyTERVekxEY3hMRGsxTERFeU1Dd3lNallzTVRBd0xESXlNQ3d5TURrc01UazFMREUzTVN3MU55d3hPRE1zTXpZc01UWTVMREUwTlN3NU9Dd3hNRFlzTVRnc01qQTJMREU0TUN3eE1EQXNNVFkzTERZeExERXdOeXcwTVN3ek5Dd3lMREkwTnl3eU5EUXNNVFV3TERFMk55d3lNRFFzTWpFMkxEVTVMREl5Tnl3NExESTJMRFUzTERFNE9Td3hOREVzTVRnNExEZzJMREl5TlN3eE1UZ3NNVEV4TERFM055d3hPRElzTVRjeExERTVMRFl3TERFNE55d3hNek1zTWpRc01UWTBMREUwT0N3eE9Ea3NPRFVzTVRjekxERTVNU3d5TVRJc01qUTNMREl3TVN3eE9ERXNOekVzT0Rnc01URXlMREUyT0N3eE16RXNNVGMwTERZM0xEWTBMREUxT1N3eU1EWXNNVFEzTERVMExEVTBMREUwTnl3NE5pdzFPQ3d5TWpVc01qa3NNekFzTVRJd0xESTBOaXd4Tmpjc056Z3NOekVzTVRReUxESXlPQ3c0TVN3eU16Z3NNVEF6TERZeUxESTBNeXd5TkRFc01qSTJMREUxTWl3Mk15d3hOaXc1T0N3eE56TXNNemNzTVRrMkxEVXlMRFU0TERRNUxERTRNU3cwTml3eE5Ea3NNVEE0TERFME9TdzBPU3czTERnekxERXhPQ3d5TWprc01qVTBMREl4Tnl3eE5qY3NNVFkzTERJeUxESTBOeXd4T1RVc01URXlMREV4TlN3eU5UQXNNQ3d4TlRjc01qVXhMREUzT0N3eU1Ea3NOeklzTVRVNUxERXlOeXd4T0RFc01URXlMRE13TERjMUxEa3NNak0yTERJeUxERXlNaXcyTUN3MU9Dd3hMREV5TlN3eU1qQXNNak0xTERJeU5Td3lNamdzTWpRekxESTBOQ3d5TVRZc01USXdMREV3Tnl3eE5qQXNNakV5TERFeU5Dd3lNalVzTnpFc01UazNMRE00TERFM01Dd3hNak1zTVRZNExETTVMRE0wTERFMk9Td3hPRFFzTlRnc01URXlMRGd3TERjMUxERTVNQ3d5TURjc01UY3lMREl4TXl3eUxETXNNU3d3TERFPSIsImlzcyI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbSIsImlhdCI6IjE1MDU0OTE3NDIiLCJleHAiOiIxNTA1NDk1MzQyIiwiYWxnIjoiUlMyNTYiLCJraWQiOiI3ZWNiNTRjZTcxZDYxOGIyODMwY2NlYzk5MTg4MThlNzM4MTAwZjJhIn19'; - handlers = handlersPopulate; msgNodeResponseFunc = msgNodeResponseFuncPopulate; coreDiscovery = coreDiscoveryPopulate; storageManager = runtimeFactory.storageManager('idModule:identities'); @@ -239,20 +74,23 @@ describe.skip('Identity Module tests', function() { }); beforeEach('Init structures before each test', function() { - bus = new MessageBus(); + bus = new MessageBus(registryPopulate); bus.pipeline = {}; bus.pipeline.handlers = handlersPopulate; bus._onPostMessage = msg => { msgNodeResponseFunc(bus, msg); }; + let cryptoManager = CryptoManager; + let dataObjectsStorage = new DataObjectsStorage(storageManager, {}); identityModule = new IdentityModule( runtimeURL, runtimeCapabilities, storageManager, dataObjectsStorage, - runtimeFactory + cryptoManager, + runtimeFactory.createRuntimeCatalogue() ); identityModule.messageBus = bus; identityModule.registry = registryPopulate; @@ -269,14 +107,16 @@ describe.skip('Identity Module tests', function() { }); it('Check GUI deployment', function() { - identityModule.deployGUI(runtimeFactory); + identityModule.deployGUI(); assert(identityModule.guiDeployed, 'IDM is not deployed'); }); it('Check Identities to Choose', function() { - let idsToChoose = identityModule.getIdentitiesToChoose(); - expect(idsToChoose).to.have.property('identities'); - expect(idsToChoose).to.have.property('idps'); + identityModule.getIdentitiesToChoose().then(result => { + expect(result).to.have.property('defaultIdentity'); + expect(result).to.have.property('identities'); + expect(result).to.have.property('idps'); + }); }); it('Check messageBus', function() { @@ -305,16 +145,7 @@ describe.skip('Identity Module tests', function() { ); }); - it('setCurrentIdentity/getCurrentIdentity', function() { - identityModule.setCurrentIdentity(exampleIdentityBundle); - assert.equal( - exampleIdentityBundle, - identityModule.getCurrentIdentity(), - '(SET/GET)CurrentIdentity content is different' - ); - }); - - it('test sendGenerateMessage', function(done) { + it.skip('test sendGenerateMessage', function(done) { let contents = 'BASE64_CONTENT'; let origin = hyperURL1; @@ -337,18 +168,17 @@ describe.skip('Identity Module tests', function() { .then(resMsg => { assert.equal( resMsg.assertion, - assertion_val, + assertionVal, 'Received message is not OK' ); }) - .then( function() { done() }); + .then(function() { done(); }); }); it('test requestIdentityToGUI', function(done) { let identities = identityModule.getIdentitiesToChoose().identities; let idps = identityModule.getIdentitiesToChoose().idps; - let that = this; bus._onPostMessage = msg => { let result = msg.type === 'create' && @@ -365,10 +195,11 @@ describe.skip('Identity Module tests', function() { .then(resMsg => { assert.equal(resMsg.value, userEmail, 'Expected email was not found'); }) - .then( function() { done() }); + .then(function() { done(); }); }); - it('test getIdentities', function(done) { + //Does not exist any more + it.skip('test getIdentities', function(done) { let returnedAssertionValue = returnedAssertionValuePopulate; crypto.generateRSAKeyPair().then(keyPair => { identityModule @@ -380,11 +211,12 @@ describe.skip('Identity Module tests', function() { 'Identity was not found' ); }) - .then( function() { done() }); + .then(function() { done(); }); }); }); - it('test storeIdentity', function(done) { + //Methods have changed + it.skip('test storeIdentity', function(done) { let returnedAssertionValue = returnedAssertionValuePopulate; crypto.generateRSAKeyPair().then(keyPair => { identityModule @@ -407,55 +239,29 @@ describe.skip('Identity Module tests', function() { ); assert.equal(identityModule.emailsList, userEmail); }) - .then( function() { done() }); + .then(function() { done(); }); }); }); - it('test getIdentity', function(done) { - let returnedAssertionValue = returnedAssertionValuePopulate; - crypto.generateRSAKeyPair().then(keyPair => { - identityModule - .storeIdentity(returnedAssertionValue, keyPair) - .then(result => { - let retrivedID = identityModule.getIdentity(userURL); - assert.equal( - result.assertion, - retrivedID.assertion, - 'Retrived ID is not the same' - ); - }) - .then( function() { done() }); - }); + it('test getIdentity', function() { + identityModule.identities.addAssertion(sendGenerateMessageResponse); + let retrivedID = identityModule.getIdentity(userURL); + assert.equal( + sendGenerateMessageResponse.assertion, + retrivedID.assertion, + 'Retrived ID is not the same' + ); }); - it('test unregisterIdentity', function(done) { - let returnedAssertionValue = returnedAssertionValuePopulate; - crypto.generateRSAKeyPair().then(keyPair => { - identityModule - .storeIdentity(returnedAssertionValue, keyPair) - .then(result => { - assert.equal(identityModule.emailsList, userEmail); - identityModule.unregisterIdentity(userEmail); - assert.isEmpty(identityModule.emailsList, 'Identity was not removed'); - }) - .then( function() { done() }); - }); - }); - it('test deleteIdentity', function(done) { - let returnedAssertionValue = returnedAssertionValuePopulate; - crypto.generateRSAKeyPair().then(keyPair => { - identityModule - .storeIdentity(returnedAssertionValue, keyPair) - .then(result => { - assert.equal(identityModule.emailsList, userEmail); - identityModule.deleteIdentity(userURL); - assert.isEmpty(identityModule.identities, 'Identity was not removed'); - }) - .then( function() { done() }); - }); + it('test deleteIdentity', function() { + identityModule.identities.addAssertion(sendGenerateMessageResponse); + identityModule.deleteIdentity(userURL); + let retrivedID = identityModule.getIdentity(userURL); + assert.isEmpty(retrivedID, 'Identity was not removed'); }); + it('test callIdentityModuleFunc', function(done) { let methodName = 'openPopup'; let parameters = { @@ -478,15 +284,14 @@ describe.skip('Identity Module tests', function() { .then(resCode => { assert.equal(resCode, loginUrl, 'message content is not the exepected'); }) - .then( function() { done() }); + .then(function() { done(); }); }); - it('test generateAssertion', function(done) { - crypto.generateRSAKeyPair().then(keyPair => { - let contents = btoa(keyPair.public); - let origin = 'undefined'; - bus._onPostMessage = msg => { - let result = + it.skip('test generateAssertion', function(done) { + let contents = '[1,2,3,4,5,6,7,8,9]'; + let origin = 'undefined'; + bus._onPostMessage = msg => { + let result = msg.type === 'execute' && msg.to === idpDomainURL && msg.from === idmURL && @@ -495,33 +300,32 @@ describe.skip('Identity Module tests', function() { msg.body.params.contents === contents && msg.body.params.origin === origin && msg.body.params.usernameHint === loginUrl; - assert(result, 'message content is not the expected'); - msgNodeResponseFunc(bus, msg); - }; + assert(result, 'message content is not the expected'); + msgNodeResponseFunc(bus, msg); + }; - identityModule - .generateAssertion(contents, origin, loginUrl, keyPair, idpDomain) - .then(result => { - let hasRequiredFields = + identityModule + .generateAssertion(contents, origin, loginUrl, idpDomain) + .then(result => { + let hasRequiredFields = result.hasOwnProperty('userProfile') && result.hasOwnProperty('idp') && result.hasOwnProperty('assertion'); - let hasRequiredData = + let hasRequiredData = result.userProfile.username === userEmail && result.userProfile.cn === cn && result.userProfile.userURL === userURL; - assert( - hasRequiredFields && hasRequiredData, - 'Received data has not the requiered properties' - ); - }) - .then( function() { done() }); - }); + assert( + hasRequiredFields && hasRequiredData, + 'Received data has not the requiered properties' + ); + }) + .then(function() { done(); }); }); - it('test callGenerateMethods', function(done) { + it.skip('test callGenerateMethods', function(done) { identityModule .callGenerateMethods(idpDomain) .then(result => { @@ -540,12 +344,12 @@ describe.skip('Identity Module tests', function() { 'Received data has not the requiered properties' ); }) - .then( function() { done() }); + .then(function() { done(); }); }); it('test validateAssertion', function(done) { identityModule - .validateAssertion(assertion_val, undefined, idpDomain) + .validateAssertion(assertionVal, undefined, idpDomain) .then(result => { assert.equal( result.contents, @@ -553,14 +357,14 @@ describe.skip('Identity Module tests', function() { 'Received data is not the expected' ); }) - .then( function() { done() }); + .then(function() { done(); }); }); it('test loginSelectedIdentity', function(done) { crypto.generateRSAKeyPair().then(keyPair => { identityModule .loginSelectedIdentity( - assertion_val, + assertionVal, hyperURL1, idpDomain, keyPair, @@ -569,31 +373,11 @@ describe.skip('Identity Module tests', function() { .then(result => { assert.equal(result, 'Login was successfull', 'Login failed'); }) - .then( function() { done() }); - }); - }); - - it('test generateSelectedIdentity', function(done) { - crypto.generateRSAKeyPair().then(keyPair => { - identityModule - .generateSelectedIdentity( - assertion_val, - hyperURL1, - idpDomain, - keyPair, - loginUrl - ) - .then(result => { - assert( - result.hasOwnProperty('assertion'), - 'Result does not have the required fields' - ); - }) - .then( function() { done() }); + .then(function() { done(); }); }); }); - it('test selectIdentityFromGUI', function(done) { + it.skip('test selectIdentityFromGUI', function(done) { identityModule .selectIdentityFromGUI(undefined) .then(result => { @@ -602,7 +386,7 @@ describe.skip('Identity Module tests', function() { 'result does not have the required fields' ); }) - .then( function() { done() }); + .then(function() { done(); }); }); it.skip('test selectIdentityForHyperty', function(done) { @@ -620,35 +404,8 @@ describe.skip('Identity Module tests', function() { .then(done); }); - it('test encryptDataObject/decryptDataObject', function(done) { - let sender = 'comm://localhost/5f8d87fd-c56b-47fc-ad47-28d55f01e23a'; - let sessionKey = crypto.generateRandom(); - let dataObjectSessionKeys = {}; - dataObjectSessionKeys[sender] = { - sessionKey: sessionKey, - isToEncrypt: true - }; - storageManager.set('dataObjectSessionKeys', 0, dataObjectSessionKeys); - - identityModule - .encryptDataObject(dataObjectPopulate, sender) - .then(encryDataObject => { - log('GUA GUA'); - identityModule - .decryptDataObject(encryDataObject, sender) - .then(decryDataObject => { - let value = - decryDataObject.value.data.content === - dataObjectPopulate.data.content && - encryDataObject.hasOwnProperty('value') && - encryDataObject.hasOwnProperty('iv'); - assert(value, 'Decrypted data is not the same'); - }) - .then(done); - }); - }); - it('test getIdentityAssertion', function(done) { + it.skip('test getIdentityAssertion', function(done) { identityModule.runtimeCapabilities.isAvailable = runtimeCapabilitiesPopulate; identityModule .getIdentityAssertion(undefined) @@ -658,10 +415,10 @@ describe.skip('Identity Module tests', function() { 'Result does not contain the expected fields' ); }) - .then( function() { done() }); + .then(function() { done(); }); }); - it('test getIdToken', function(done) { + it.skip('test getIdToken', function(done) { let returnedAssertionValue = returnedAssertionValuePopulate; crypto.generateRSAKeyPair().then(keyPair => { identityModule @@ -676,12 +433,12 @@ describe.skip('Identity Module tests', function() { 'Result does not contain the expected fields' ); }) - .then( function() { done() }); + .then(function() { done(); }); }); }); }); - it('test _getValidToken', function(done) { + it.skip('test _getValidToken', function(done) { let returnedAssertionValue = returnedAssertionValuePopulate; crypto.generateRSAKeyPair().then(keyPair => { identityModule @@ -696,12 +453,12 @@ describe.skip('Identity Module tests', function() { 'Result does not contain the expected fields' ); }) - .then( function() { done() }); + .then(function() { done(); }); }); }); }); - it('test getToken', function(done) { + it.skip('test getToken', function(done) { let returnedAssertionValue = returnedAssertionValuePopulate; crypto.generateRSAKeyPair().then(keyPair => { identityModule @@ -719,7 +476,7 @@ describe.skip('Identity Module tests', function() { 'Result does not contain the expected fields' ); }) - .then( function() { done() }); + .then(function() { done(); }); }); }); }); @@ -737,337 +494,36 @@ describe.skip('Identity Module tests', function() { 'Result is not the expected one' ); }); +}); - it('test _filterMessageToHash', function() { - let message = messageToBeHashedPopulate; - let decryptedValue = 'decryptedValue'; - let identity = hyperURL1; - let receivedHash = identityModule._filterMessageToHash( - message, - decryptedValue, - identity - ); - - let valueVerificationResult = - receivedHash.type === messageToBeHashedPopulate.type && - receivedHash.from === messageToBeHashedPopulate.from && - receivedHash.to === messageToBeHashedPopulate.to && - receivedHash.body.identity === - (identity || messageToBeHashedPopulate.body.identity) && - receivedHash.body.value === - (decryptedValue || messageToBeHashedPopulate.body.value) && - receivedHash.body.handshakePhase === - messageToBeHashedPopulate.body.handshakePhase; - assert(valueVerificationResult, 'Received message is not the expected'); - }); - - it('test _newChatCrypto', function(done) { - let message = messageForNewChatCrypto; - let receiver = false; - - crypto.generateRSAKeyPair().then(keyPair => { - identityModule.storeIdentity(returnedAssertionValuePopulate, keyPair).then(result =>{ - let newChatCrypto = cryptoManager.default._newChatCrypto(message, userURL, receiver); - let valueVerificationResult = - newChatCrypto.hypertyFrom.userID === userEmail && - newChatCrypto.hypertyFrom.messageInfo.assertion === returnedAssertionValuePopulate.assertion && - newChatCrypto.callback === messageForNewChatCrypto.callback && - newChatCrypto.dataObjectURL === message.dataObjectURL; - - assert(valueVerificationResult, 'Generated chat crypto messege is not the expected one'); - }).then( function() { done() }); - }); - }); - - it('test _sendReporterSessionKey', function(done) { - let message = { - from: hyperURL1, to: hyperURL2 - }; - - let chatKeys = { - dataObjectURL: 'comm://localhost/5f8d87fd-c56b-47fc-ad47-28d55f01e23a', - hypertyFrom: {messageInfo: 'messageInfo'}, - keys: { - hypertyFromSessionKey: crypto.generateRandom(), - hypertyFromHashKey: crypto.generateRandom() - } - }; - - cryptoManager.default._sendReporterSessionKey(message, chatKeys).then(result =>{ - let assertFields = result.hasOwnProperty('message') && - result.message.type === 'handshake' && - result.message.to === hyperURL1 && - result.message.from === hyperURL2 && - result.message.body.hasOwnProperty('handshakePhase') && - result.message.body.hasOwnProperty('value') && - result.hasOwnProperty('chatKeys') && - result.chatKeys.hasOwnProperty('hypertyFrom') && - result.chatKeys.hasOwnProperty('keys') && - result.chatKeys.keys.hasOwnProperty('hypertyFromHashKey'); - - - assert(assertFields, 'Result has not the required fields or values'); - }).then( function() { done() }); - }); - - //test isFromHyperty to isToHyperty communication -> handshake + update //TODO incomplete cases - it('test encryptMessage - startHandShake and update', function(done) { - let returnedAssertionValue = returnedAssertionValuePopulate; - let chatKeys = chatKeysPopulate; - let helloMessage = messageForNewChatCrypto; - let keyPair = { - public: chatKeysPopulate.hypertyFrom.publicKey, - private: chatKeysPopulate.hypertyFrom.privateKey - }; - let encryptMessage = encryptMessagePopulate; - - chatKeys.keys.hypertyFromSessionKey = crypto.generateRandom(); - chatKeys.keys.hypertyFromHashKey = crypto.generateRandom(); - chatKeys.keys.hypertyToSessionKey = chatKeys.keys.hypertyFromSessionKey; - chatKeys.keys.hypertyToHashKey = chatKeys.keys.hypertyFromHashKey; - identityModule.registry.getHypertyOwner = getHypertyOwnerPopulate; - cryptoManager.default.chatKeys[encryptMessagePopulate.from + '<->' + encryptMessagePopulate.to] = chatKeys; - cryptoManager.default.chatKeys[encryptMessagePopulate.to + '<->' + encryptMessagePopulate.from] = chatKeys; - - log('WTF'); - log(encryptMessagePopulate.type); - - identityModule.storeIdentity(returnedAssertionValuePopulate, keyPair).then(result1 =>{ - helloMessage.body.handshakePhase = 'startHandShake'; - - cryptoManager.default._doHandShakePhase(helloMessage, chatKeys).then(result2 => { - - cryptoManager.default.encryptMessage(encryptMessagePopulate).then(resolvedMessage => { - assert.equal(encryptMessagePopulate, resolvedMessage, 'Messages should be the same'); - encryptMessagePopulate.type = 'update'; - - cryptoManager.default.encryptMessage(encryptMessagePopulate).then(updateMessage => { - assert.equal(encryptMessagePopulate, updateMessage, 'Messages should be the same'); - encryptMessagePopulate.type = 'encrypt';//Don't know the correct keyword but this works for now - - cryptoManager.default.encryptMessage(encryptMessagePopulate).then(encryptedMessage => { - - cryptoManager.default.decryptMessage(encryptedMessage).then(decryptedMessage => { - assert.equal(decryptedMessage.body.value, encryptMessagePopulate.body.value, 'Encryption failed'); - }).then( function() { done() }); - }); - }); - }); - }); - }); - encryptMessagePopulate.type = 'handshake'; - }); - - - it('test _doHandShakePhase - startHandShake', function(done) { - let message = messageForNewChatCrypto; - message.body.handshakePhase = 'startHandShake'; - let chatKeys = chatKeysPopulate; - cryptoManager.default._doHandShakePhase(message, chatKeys).then(result => { - let assertFields = result.message.type === 'handshake' && - result.message.body.handshakePhase === 'senderHello' && - result.hasOwnProperty('chatKeys') && - result.message.type === 'handshake'; - assert(assertFields, 'Result has not the expected values'); - }).then( function() { done() }); - }); - - - it('test _doHandShakePhase - senderHello', function(done) { - let message = senderHelloMessagePopulate; - let chatKeys = chatKeysPopulate; - cryptoManager.default._doHandShakePhase(message, chatKeys).then(resultMessage => { - let assertFields = resultMessage.message.type === 'handshake' && - resultMessage.message.body.handshakePhase === 'receiverHello' && - resultMessage.hasOwnProperty('chatKeys') && - resultMessage.hasOwnProperty('message'); - assert(assertFields, 'Result has not the expected values'); - }).then( function() { done() }); - }); - - it('test _doHandShakePhase - receiverHello', function(done) { - let message = receiverHelloMessagePopulate; - - //let cloneOfA = JSON.parse(JSON.stringify(object)); - let chatKeys = chatKeysPopulate; - crypto.generateRSAKeyPair().then(keyPair => { - chatKeys.hypertyFrom.privateKey = keyPair.private; - chatKeys.hypertyFrom.publicKey = keyPair.public; - cryptoManager.default._doHandShakePhase(message, chatKeys).then(resultMessage => { - let assertFields = resultMessage.message.type === 'handshake' && - resultMessage.message.body.handshakePhase === 'senderCertificate' && - resultMessage.hasOwnProperty('chatKeys') && - resultMessage.hasOwnProperty('message'); - assert(assertFields, 'Result has not the expected values'); - }).then( function() { done() }); - }); - }); - - it('test _doHandShakePhase - senderCertificate', function(done) { - let chatKeys = chatKeysPopulate; - let message = senderCertificateMessagePopulate; - let receivedValue = JSON.parse(atob(message.body.value)); - - receivedValue.iv = crypto.generateIV(); - chatKeys.keys.toRandom = crypto.generateRandom(); - chatKeys.keys.fromRandom = crypto.generateRandom(); - - crypto.generateRSAKeyPair().then(keyPair => { - chatKeys.hypertyFrom.privateKey = keyPair.private; - chatKeys.hypertyFrom.publicKey = keyPair.public; - let pms = crypto.generatePMS(); - chatKeys.keys.premasterKey = new Uint8Array(pms); - - crypto.encryptRSA(chatKeys.hypertyFrom.publicKey, pms).then(encryptedVal =>{ - receivedValue.assymetricEncryption = crypto.encode(encryptedVal); - let messageHash = identityModule._filterMessageToHash(message, chatKeys.keys.premasterKey); - let messageToBeSigned = JSON.stringify(chatKeys.handshakeHistory) + JSON.stringify(messageHash); - let concatKey = crypto.concatPMSwithRandoms(chatKeys.keys.premasterKey, chatKeys.keys.toRandom, chatKeys.keys.fromRandom); - - crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(masterKey =>{ - crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(keys =>{ - - crypto.encryptAES(keys[1], 'ok', receivedValue.iv).then(aesEncryption => { - receivedValue.symetricEncryption = crypto.encode(aesEncryption); - - crypto.signRSA(chatKeys.hypertyFrom.privateKey, messageToBeSigned).then(signature =>{ - receivedValue.signature = crypto.encode(signature); - - let filteredMessage = identityModule._filterMessageToHash(message, 'ok' + receivedValue.iv); - crypto.hashHMAC(keys[3], filteredMessage).then(HMAC => { - receivedValue.hash = crypto.encode(HMAC); - - receivedValue.iv = crypto.encode(receivedValue.iv); - message.body.value = btoa(JSON.stringify(receivedValue)); - cryptoManager.default._doHandShakePhase(message, chatKeys).then(resultMessage => { - let assertFields = resultMessage.chatKeys.hypertyFrom.userID === userEmail && - resultMessage.message.body.handshakePhase === 'receiverFinishedMessage' && - resultMessage.hasOwnProperty('chatKeys') && - resultMessage.hasOwnProperty('message'); - assert(assertFields, 'Result has not the expected values'); - }).then( function() { done() }); - }); - }); - }); - }); - }); - }); - }); - }); - - it('test _doHandShakePhase - receiverFinishedMessage', function(done) { - let chatKeys = chatKeysPopulate; - let message = receiverFinishedMessagePopulate; - let receivedValue = JSON.parse(atob(message.body.value)); - - receivedValue.iv = crypto.generateIV(); - chatKeys.keys.toRandom = crypto.generateRandom(); - chatKeys.keys.fromRandom = crypto.generateRandom(); - - let pms = crypto.generatePMS(); - chatKeys.keys.premasterKey = new Uint8Array(pms); - let concatKey = crypto.concatPMSwithRandoms(chatKeys.keys.premasterKey, chatKeys.keys.toRandom, chatKeys.keys.fromRandom); - - crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(masterKey =>{ - crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(keys =>{ - chatKeys.keys.hypertyToSessionKey = keys[1]; - crypto.encryptAES(keys[1], 'ok', receivedValue.iv).then(aesEncryption => { - receivedValue.value = crypto.encode(aesEncryption); - - let filteredMessage = identityModule._filterMessageToHash(message, 'ok' + receivedValue.iv); - crypto.hashHMAC(keys[3], filteredMessage).then(HMAC => { - chatKeys.keys.hypertyToHashKey = keys[3]; - receivedValue.hash = crypto.encode(HMAC); - receivedValue.iv = crypto.encode(receivedValue.iv); - message.body.value = btoa(JSON.stringify(receivedValue)); - - cryptoManager.default._doHandShakePhase(message, chatKeys).then(resultMessage => { - let assertFields = resultMessage.chatKeys.hypertyFrom.userID === userEmail && - resultMessage.message.type === 'create' && - resultMessage.message.body.value === chatKeysPopulate.initialMessage.body.value && - resultMessage.hasOwnProperty('chatKeys') && - resultMessage.hasOwnProperty('message'); - assert(assertFields, 'Result has not the expected values'); - }).then( function() { done() }); - - }); - }); - }); - }); - }); - - it.skip('test _doHandShakePhase - reporterSessionKey', function(done) { - let chatKeys = chatKeysPopulate; - let message = receiverAcknowledgeMessagePopulate; - let receivedValue = JSON.parse(atob(message.body.value)); - - receivedValue.iv = crypto.generateIV(); - chatKeys.keys.toRandom = crypto.generateRandom(); - chatKeys.keys.fromRandom = crypto.generateRandom(); - - receivedValue.iv = crypto.generateIV(); - chatKeys.keys.toRandom = crypto.generateRandom(); - chatKeys.keys.fromRandom = crypto.generateRandom(); - - let pms = crypto.generatePMS(); - chatKeys.keys.premasterKey = new Uint8Array(pms); - let concatKey = crypto.concatPMSwithRandoms(chatKeys.keys.premasterKey, chatKeys.keys.toRandom, chatKeys.keys.fromRandom); - - crypto.generateMasterSecret(concatKey, 'messageHistoric' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(masterKey =>{ - - crypto.generateKeys(masterKey, 'key expansion' + chatKeys.keys.toRandom + chatKeys.keys.fromRandom).then(keys => { - chatKeys.keys.hypertyToSessionKey = keys[1]; - chatKeys.keys.hypertyFromSessionKey = keys[1]; - chatKeys.keys.hypertyFromHashKey = keys[1]; - - let sessionKey = crypto.encode(keys[1]); - - // let dataObjectURL = crypto.encode(dataObjectURL); - let dataToEncrypt = JSON.stringify({value: sessionKey, dataObjectURL: chatKeys.dataObjectURL}); - - crypto.encryptAES(keys[1], dataToEncrypt, receivedValue.iv).then(aesEncryption => { - receivedValue.value = crypto.encode(aesEncryption); - - let filteredMessage = identityModule._filterMessageToHash(message, 'ok' + receivedValue.iv); - - crypto.hashHMAC(keys[3], filteredMessage).then(HMAC => { - chatKeys.keys.hypertyToHashKey = keys[3]; - receivedValue.hash = crypto.encode(HMAC); - receivedValue.iv = crypto.encode(receivedValue.iv); - message.body.value = btoa(JSON.stringify(receivedValue)); - - identityModule._doHandShakePhase(message, chatKeys).then(resultMessage => { - assert.equal(resultMessage, 'handShakeEnd', 'Result has not the expected values'); - }).then( function() { done() }); - - }); - - }); +let runtimeCapabilitiesPopulate = arg => { + if (arg === 'node') return Promise.resolve(true); + else return Promise.resolve(false); +}; +let handlersPopulate = [ + function(ctx) { + policyEngine + .authorise(ctx.msg) + .then(function(changedMgs) { + console.log('Authorized'); + changedMgs.body.identity = { + userProfile: { + userURL: userURL + } + }; + ctx.msg = changedMgs; + ctx.next(); + }) + .catch(function(reason) { + console.error(reason); + ctx.fail(reason); }); - }); - - }); - - it('test doMutualAuthentication', function(done) { - let sender = hyperURL1; - let receiver = hyperURL2; - - identityModule.registry.getReporterURLSynchonous = (sender) => { return undefined; }; - identityModule.registry.getHypertyOwner = getHypertyOwnerPopulate; - let chatKeys = chatKeysPopulate; - chatKeys.keys.hypertyFromSessionKey = crypto.generateRandom(); - chatKeys.keys.hypertyFromHashKey = crypto.generateRandom(); - 'comm://localhost/5f8d87fd-c56b-47fc-ad47-28d55f01e23a', - cryptoManager.default.chatKeys[sender + '<->' + receiver] = chatKeys; - - cryptoManager.default._doMutualAuthenticationPhase1(sender, receiver).then(resultMessage => { - assert.equal(resultMessage, 'exchange of chat sessionKey initiated', 'Message is not the expected one'); - }).then(function() { done(); }); - }); -}); + } +]; let msgNodeResponseFuncPopulate = (bus, msg) => { + console.log('BUS RESPONSE'); if (msg.type === 'subscribe') { log('msgNodeResponse subscribe: ' + msg); if (msg.id === 2) { @@ -1108,8 +564,8 @@ let msgNodeResponseFuncPopulate = (bus, msg) => { // log('msgNodeResponseFunc loginUrl'); // resMsg.body.value = {loginUrl: loginUrl}; // }else{ - log('msgNodeResponseFunc assertion_val'); - resMsg.body.value = returnedAssertionValuePopulate; + log('msgNodeResponseFunc assertionVal'); + resMsg.body.value = sendGenerateMessageResponse; // } } else if (msg.body.method === 'openPopup') { @@ -1119,8 +575,8 @@ let msgNodeResponseFuncPopulate = (bus, msg) => { if (msg.body.method === 'validateAssertion') { log('msgNodeResponseFunc validateAssertion'); resMsg.body.value = validateAssertionValuePopulate; - }else { - log('msgNodeResponseFunc identity'); + } else { + log('msgNodeResponseFunc identity'); resMsg.body.value = sendGenerateMessageResponse; } } @@ -1168,7 +624,7 @@ let registryPopulate = { return 'HypertyChat'; }, isDataObjectURL: dataObjectURL => { - let splitURL = dataObjectURL.split.skip('://'); + let splitURL = dataObjectURL.split('://'); return splitURL[0] === 'comm'; }, registerSubscribedDataObject: () => {}, @@ -1180,63 +636,28 @@ let registryPopulate = { runtimeURL: runtimeURL }; -let catalogPopulate = { - getDataSchemaDescriptor: schema => { - log('REQUEST-SCHEMA: ', schema); - return new Promise((resolve, reject) => { - if (schema) { - resolve({ - sourcePackage: { - sourceCode: { - properties: { - scheme: { constant: 'resource' }, - children: { constant: ['children1', 'children2'] } - } - } - } - }); - } else { - reject('No schema provided'); - } - }); - } -}; - -let handlersPopulate = [ - function(ctx) { - policyEngine - .authorise(ctx.msg) - .then(function(changedMgs) { - changedMgs.body.identity = { - userProfile: { - userURL: userURL - } - }; - ctx.msg = changedMgs; - ctx.next(); - }) - .catch(function(reason) { - console.error(reason); - ctx.fail(reason); - }); - } -]; +let sendGenerateMessageResponse = +{assertion: 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNkltSmhOR1JsWkRkbU5XRTVNalF5T1dZeU16TTFOakZoTXpabVpqWXhNMlZrTXpnM05qSmpNMlFpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWpGemREbExibEZsZWxWMVVqSXRObVJEUTFseVFrRWlMQ0p1YjI1alpTSTZJbHMwT0N3eE16QXNNU3d6TkN3ME9Dd3hNeXcyTERrc05ESXNNVE0wTERjeUxERXpOQ3d5TkRjc01UTXNNU3d4TERFc05Td3dMRE1zTVRNd0xERXNNVFVzTUN3ME9Dd3hNekFzTVN3eE1Dd3lMREV6TUN3eExERXNNQ3d4T1RBc01qUTRMREl5TWl3eE1qWXNNVEk0TERFM015d3lNRElzTVRNNExERTVNeXd4T0RJc01UZ3hMRFV5TERFeE1Td3hOVFVzTWpBeUxEWTRMREl3TERReExERXlNU3cyTVN3MU1DdzROeXcxTWl3eE56a3NPVEVzTkRFc01qUTRMREU0Tml3eU16Y3NPREFzTWpBMkxEa3dMREUzTXl3eE9EWXNNVFEwTERFMk9Td3hORFFzTWpFMExESXhNaXd5TVRBc01UZzVMREV5TkN3NU1pd3lORElzTVRBNUxESXdNaXd4TkRBc01qRXNNVE0yTERFMU9Td3lMRFl6TERBc01UVXlMREUyTml3eE9EWXNNVFkwTERFNE55d3hNVFlzTmpBc01UTTBMREkwTWl3eE1Ua3NNakUzTERZd0xERTRNaXd4TmpFc01UZ3dMRE0xTERnNExEYzBMREUxTnl3NU1pd3lNVEFzTWpRMUxEWTVMREV6Tml3eE56TXNOamNzTVRJNUxEZzBMREl3TERFM01pdzBPQ3d4TlRVc01USTVMREUwTERJeU9Td3hORGdzT1RVc01URXpMREV4Tnl3eU1UQXNNemNzTVRJNExERTNNU3d4TnpVc05UQXNNVGd6TERJMU5DdzVPU3czT1N3eE5UZ3NNVEl6TERVMUxERTRNQ3d5T1N3NU15d3hPRGtzT1Rrc09UTXNNVGt3TERZekxERTFNaXcwTUN3eU1EVXNNVGN5TERFM01pd3hPRGNzTUN3eU5USXNNVEk0TERFMk5Dd3lORFFzT0RBc016WXNPVE1zTVRnekxEUTVMREl3TVN3eE1Td3pPU3d4TWl3eE5UZ3NNQ3d5TkN3eE5UY3NNVGd6TERJeU5pd3lORElzTWpBekxERTJPU3d5TkRrc01UQTVMREV6T0N3eE1UQXNOakFzTVRjNUxERTVNQ3d4TWpVc01qUTFMREU1TERFMU9TdzBNaXd4TlRRc01qQTVMREUwTlN3eU5EQXNPVGdzTlRZc09USXNNakkzTERnc01UQTJMREV4TlN3eE1qY3NNalF4TERJMkxETXlMREUwTVN3eE9EZ3NOemtzTXpBc01UTXhMRFlzTVRZd0xESXpNaXczTlN3eU16TXNNalEwTERnd0xEVXhMREVzTlRJc01UTTNMREl3TUN3eU1URXNNemtzTVRVMkxERTBOaXd5TkRZc01qVXpMRFkxTERFeU5pdzVOQ3d4TVRjc01UVXhMREkxTWl3eU1qUXNNak0zTERZNUxERXdNQ3d4TURnc01qTXpMREl4TkN3eU1pd3lNakFzTVRNMkxERTBNU3d6Tnl3NU5pd3hOeXd5TVRJc01qQTJMREkxTERFeE9Dd3lNRGtzT1RZc01UUXlMREV4TERJeU1Dd3hPRFVzTWpFNExEUTJMREV5TlN3ek9DdzBPQ3d4TWpRc05EY3NNak1zTVRJNUxERXdPU3d5TURZc01UQTBMREl4TERJd05Dd3lNVGdzTWpBeUxERXpMREV6T0N3eE56VXNNVEUwTERFM05Td3lORGtzTlRRc05qWXNNVE16TERFMk55dzJOU3d4TkRJc05qZ3NNVFExTERFNE5Dd3hPU3d4Tnl3M015d3lMRE1zTVN3d0xERmRJaXdpWlhod0lqb3hOVEU0TVRBeU1qTXpMQ0pwYzNNaU9pSmhZMk52ZFc1MGN5NW5iMjluYkdVdVkyOXRJaXdpYW5ScElqb2laakE0WWpGa1pXVmpNbVEwWkdabE4yWXlNV1k0WkRjeE5ERmlOalZoTVROaFlUbGpNak0zTUNJc0ltbGhkQ0k2TVRVeE9EQTVPRFl6TTMwLlpSV1JXbkZTMmlkdHlKWnZYX0gyMHZkZ2FBYlllV3lQYzVIc2N0bzhrRVo3Z0VENDJDb1NjbS1WQ0l6SUF3R2J4V0F6ZG1xWFBFSDFNd1JfSWNJY2pZMGdRY0NKZVpkZy0xTFhZME5NWFVhZmNVQWdlcjdIeGJVNzU2b0tyQXZDQWdiRlJUenk3QW1qNDNPVkdYdDR5MXY4alpoWlRpLVU2cWJaOVBaOE1Ka1gwNExPUzMxQVRvZ1RnTURRWHRyV3N1dno3RHhKZ0U2djVBbkozemgyT0xCUHlJcWw0N0R4SGRhSURCcGsxQklMR19hRnJuc09oUTFRbWtqRDA2d0diUFNKVWtBdUVYbDNRYUFTY0QxLW9vTlNjREtxcDI2MkJ4Q2otVlFfMXpEY3NCd0s3UHp3TnBfVVpWVkVtRzYxcUVhMDZLdkJ6anllQzdiNjY0SUl0QSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiIxc3Q5S25RZXpVdVIyLTZkQ0NZckJBIiwibm9uY2UiOiJbNDgsMTMwLDEsMzQsNDgsMTMsNiw5LDQyLDEzNCw3MiwxMzQsMjQ3LDEzLDEsMSwxLDUsMCwzLDEzMCwxLDE1LDAsNDgsMTMwLDEsMTAsMiwxMzAsMSwxLDAsMTkwLDI0OCwyMjIsMTI2LDEyOCwxNzMsMjAyLDEzOCwxOTMsMTgyLDE4MSw1MiwxMTEsMTU1LDIwMiw2OCwyMCw0MSwxMjEsNjEsNTAsODcsNTIsMTc5LDkxLDQxLDI0OCwxODYsMjM3LDgwLDIwNiw5MCwxNzMsMTg2LDE0NCwxNjksMTQ0LDIxNCwyMTIsMjEwLDE4OSwxMjQsOTIsMjQyLDEwOSwyMDIsMTQwLDIxLDEzNiwxNTksMiw2MywwLDE1MiwxNjYsMTg2LDE2NCwxODcsMTE2LDYwLDEzNCwyNDIsMTE5LDIxNyw2MCwxODIsMTYxLDE4MCwzNSw4OCw3NCwxNTcsOTIsMjEwLDI0NSw2OSwxMzYsMTczLDY3LDEyOSw4NCwyMCwxNzIsNDgsMTU1LDEyOSwxNCwyMjksMTQ4LDk1LDExMywxMTcsMjEwLDM3LDEyOCwxNzEsMTc1LDUwLDE4MywyNTQsOTksNzksMTU4LDEyMyw1NSwxODAsMjksOTMsMTg5LDk5LDkzLDE5MCw2MywxNTIsNDAsMjA1LDE3MiwxNzIsMTg3LDAsMjUyLDEyOCwxNjQsMjQ0LDgwLDM2LDkzLDE4Myw0OSwyMDEsMTEsMzksMTIsMTU4LDAsMjQsMTU3LDE4MywyMjYsMjQyLDIwMywxNjksMjQ5LDEwOSwxMzgsMTEwLDYwLDE3OSwxOTAsMTI1LDI0NSwxOSwxNTksNDIsMTU0LDIwOSwxNDUsMjQwLDk4LDU2LDkyLDIyNyw4LDEwNiwxMTUsMTI3LDI0MSwyNiwzMiwxNDEsMTg4LDc5LDMwLDEzMSw2LDE2MCwyMzIsNzUsMjMzLDI0NCw4MCw1MSwxLDUyLDEzNywyMDAsMjExLDM5LDE1NiwxNDYsMjQ2LDI1Myw2NSwxMjYsOTQsMTE3LDE1MSwyNTIsMjI0LDIzNyw2OSwxMDAsMTA4LDIzMywyMTQsMjIsMjIwLDEzNiwxNDEsMzcsOTYsMTcsMjEyLDIwNiwyNSwxMTgsMjA5LDk2LDE0MiwxMSwyMjAsMTg1LDIxOCw0NiwxMjUsMzgsNDgsMTI0LDQ3LDIzLDEyOSwxMDksMjA2LDEwNCwyMSwyMDQsMjE4LDIwMiwxMywxMzgsMTc1LDExNCwxNzUsMjQ5LDU0LDY2LDEzMywxNjcsNjUsMTQyLDY4LDE0NSwxODQsMTksMTcsNzMsMiwzLDEsMCwxXSIsImV4cCI6IjE1MTgxMDIyMzMiLCJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwianRpIjoiZjA4YjFkZWVjMmQ0ZGZlN2YyMWY4ZDcxNDFiNjVhMTNhYTljMjM3MCIsImlhdCI6IjE1MTgwOTg2MzMiLCJhbGciOiJSUzI1NiIsImtpZCI6ImJhNGRlZDdmNWE5MjQyOWYyMzM1NjFhMzZmZjYxM2VkMzg3NjJjM2QifX0=', + idp: { + domain: 'google.com', + protocol: 'OIDC'}, + expires: '1518102233', + userProfile: { + sub: '117959105295761687889', + name: 'test think', + given_name: 'test', + family_name: 'think', + picture: 'https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg', + email: 'testandthink123@gmail.com', + email_verified: true, + locale: 'en', + userURL: 'user://google.com/testandthink123@gmail.com', + preferred_username: 'testandthink123'}}; -let exampleIdentityBundle = { - assertion: 'assertion', - idp: 'nodejs', - identity: 'user://nodejs.com/nodejsUser@nodejs.com', - messageInfo: { - assertion: 'assertion', - idp: 'nodejs', - userProfile: 'userProfile' - }, - userProfile: 'userProfile' -}; let returnedAssertionValuePopulate = { assertion: - 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqZGxZMkkxTkdObE56RmtOakU0WWpJNE16QmpZMlZqT1RreE9EZ3hPR1UzTXpneE1EQm1NbUVpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SW1Ka2FHVjJkVU0zU0RaNVpuSkpWakZEVURsdmFIY2lMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVZURk1SRWwzVFVOM2VFMXBkelZPUTNkNFQwUkZjMDFxUlRSTVJFVXlUbmwzZUUxVVozTk9SRkZ6VGxSUmMwMTZZM05OYWsxM1RFUkplVTVUZHpGUFEzZDRUMVJGYzAxVVdUUk1SRTB5VEVSTk1VeEVSVEZPVTNjMVRubDNNazlUZDNsTmFsVnpUVlJKZVV4RVozbE1SRVY2VFhsM01reEVTVEJPVTNkNlRYbDNlazE1ZDNsT1ZGRnpUVlJWZVV4RVJUVk5hWGQ0VFVSamMwMVVZek5NUkVWNlRtbDNNRTVwZDNwTVJHTnpUMVJuYzA1cVFYTk5la0Z6VGtSSmMwMXFRVFZNUkVVeVRsTjNlVTFVVlhOTlZGVXdURVJGTUUxNWQzaE9hbGx6VGtSQmMwNXFTWE5OVkVVelRFUlJla3hFU1RKTVJFbDVUbmwzTVU1RGQzaE5lbGx6VG1wVmMwOVVZM05OYVhjMFRubDNlRTE2WTNOT2VsRnpUVlJyZVV4RVdUUk1SRWwzVGtOM2VFOUVaM05OYWxGNlRFUkZkMDVEZDNoTmFrbHpUMVJqYzAxVVl6Tk1SRVY2VFZOM2VFOUVSWE5OVkdNMVRFUm5lRXhFVlhsTVJFVXhUa04zZVU1cGR6Sk1SRlY2VEVSamVFeEVhekZNUkVWNVRVTjNlVTFxV1hOTlZFRjNURVJKZVUxRGQzbE5SR3R6VFZSck1VeEVSVE5OVTNjeFRubDNlRTlFVFhOTmVsbHpUVlJaTlV4RVJUQk9VM2MxVDBOM2VFMUVXWE5OVkdkelRXcEJNa3hFUlRSTlEzZDRUVVJCYzAxVVdUTk1SRmw0VEVSRmQwNTVkekJOVTNkNlRrTjNlVXhFU1RCT2VYZDVUa1JSYzAxVVZYZE1SRVV5VG5sM2VVMUVVWE5OYWtVeVRFUlZOVXhFU1hsT2VYYzBURVJKTWt4RVZUTk1SRVUwVDFOM2VFNUVSWE5OVkdjMFRFUm5Na3hFU1hsT1UzZDRUVlJuYzAxVVJYaE1SRVV6VG5sM2VFOUVTWE5OVkdONFRFUkZOVXhFV1hkTVJFVTBUbmwzZUUxNlRYTk5hbEZ6VFZSWk1FeEVSVEJQUTNkNFQwUnJjMDlFVlhOTlZHTjZURVJGTlUxVGQzbE5WRWx6VFdwUk0weEVTWGROVTNkNFQwUkZjMDU2UlhOUFJHZHpUVlJGZVV4RVJUSlBRM2Q0VFhwRmMwMVVZekJNUkZrelRFUlpNRXhFUlRGUFUzZDVUVVJaYzAxVVVUTk1SRlV3VEVSVk1FeEVSVEJPZVhjMFRtbDNNVTlEZDNsTmFsVnpUV3ByYzAxNlFYTk5WRWwzVEVSSk1FNXBkM2hPYW1OelRucG5jMDU2UlhOTlZGRjVURVJKZVU5RGR6Uk5VM2Q1VFhwbmMwMVVRWHBNUkZsNVRFUkpNRTE1ZDNsT1JFVnpUV3BKTWt4RVJURk5hWGN5VFhsM2VFNXBkelZQUTNkNFRucE5jMDE2WTNOTlZHc3lURVJWZVV4RVZUUk1SRkUxVEVSRk5FMVRkekJPYVhkNFRrUnJjMDFVUVRSTVJFVXdUMU4zTUU5VGR6Tk1SR2Q2VEVSRmVFOURkM2xOYW10elRXcFZNRXhFU1hoT2VYZDRUbXBqYzAxVVdUTk1SRWw1VEVSSk1FNTVkM2hQVkZWelRWUkZlVXhFUlhoT1UzZDVUbFJCYzAxRGQzaE9WR056VFdwVmVFeEVSVE5QUTNkNVRVUnJjMDU2U1hOTlZGVTFURVJGZVU1NWQzaFBSRVZ6VFZSRmVVeEVUWGRNUkdNeFRFUnJjMDFxVFRKTVJFbDVURVJGZVUxcGR6Sk5RM2N4VDBOM2VFeEVSWGxPVTNkNVRXcEJjMDFxVFRGTVJFbDVUbE4zZVUxcVozTk5hbEY2VEVSSk1FNURkM2xOVkZselRWUkpkMHhFUlhkT2VYZDRUbXBCYzAxcVJYbE1SRVY1VGtOM2VVMXFWWE5PZWtWelRWUnJNMHhFVFRSTVJFVXpUVU4zZUUxcVRYTk5WRmswVEVSTk5VeEVUVEJNUkVVeVQxTjNlRTlFVVhOT1ZHZHpUVlJGZVV4RVozZE1SR014VEVSRk5VMURkM2xOUkdOelRWUmplVXhFU1hoTmVYZDVURVJOYzAxVGQzZE1SRVU5SWl3aWFYTnpJam9pYUhSMGNITTZMeTloWTJOdmRXNTBjeTVuYjI5bmJHVXVZMjl0SWl3aWFXRjBJam94TlRBMU5Ea3hOelF5TENKbGVIQWlPakUxTURVME9UVXpOREo5LktHYWp6N0NjamtPUnIxS055TFgwRHFXaVRRM2s3d2Q0NDRsU0RiSFYtRV9adHY0bzhDdVlTTVJQRU12eGtncG5PaDBGd241OWROd2F5LXdqSkFZZWhCVWpCdllQZHgzejMzZDF0Uk5OcTlBUV9NQXJqZGVqQnkxcFpkR1FaY1diRUpMSUtPYXZuNGs2LS1mb0M4OUdkXzI2aU9tV1A1ZE9BcjRRU0tyVlZyRURlNDNnQXZ0Mms5anVpaGFnX1B5U0ROMjZXbVJDTVY4N2lFY3lzS3JfTTlXVExYS3k2NWU5czloNEpQYmdqMzZvSllrX3Bpbmk0YlJ6MERCd0lOLVI5TlAtZmkyT2VlRFptbXd4YzJXdnd1c05yaFJZamxGMmNkMjZwUFhaeTlMWlZPTU1fRERoTVpsMVVMclJvZnVFT1BMVXEtWFZZV3lmUXRMZnBPRkthdyIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJiZGhldnVDN0g2eWZySVYxQ1A5b2h3Iiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFUxTERJd01Dd3hNaXc1TkN3eE9ERXNNakU0TERFMk55d3hNVGdzTkRRc05UUXNNemNzTWpNd0xESXlOU3cxT0N3eE9URXNNVFk0TERNMkxETTFMREUxTlN3NU55dzJPU3d5TWpVc01USXlMRGd5TERFek15dzJMREkwTlN3ek15d3pNeXd5TlRRc01UVXlMREU1TWl3eE1EY3NNVGMzTERFek5pdzBOaXd6TERjc09UZ3NOakFzTXpBc05ESXNNakE1TERFMk5Td3lNVFVzTVRVMExERTBNeXd4TmpZc05EQXNOaklzTVRFM0xEUXpMREkyTERJeU55dzFOQ3d4TXpZc05qVXNPVGNzTWl3NE55d3hNemNzTnpRc01Ua3lMRFk0TERJd05Dd3hPRGdzTWpRekxERXdOQ3d4TWpJc09UY3NNVGMzTERFek1Td3hPREVzTVRjNUxEZ3hMRFV5TERFMU5Dd3lOaXcyTERVekxEY3hMRGsxTERFeU1Dd3lNallzTVRBd0xESXlNQ3d5TURrc01UazFMREUzTVN3MU55d3hPRE1zTXpZc01UWTVMREUwTlN3NU9Dd3hNRFlzTVRnc01qQTJMREU0TUN3eE1EQXNNVFkzTERZeExERXdOeXcwTVN3ek5Dd3lMREkwTnl3eU5EUXNNVFV3TERFMk55d3lNRFFzTWpFMkxEVTVMREl5Tnl3NExESTJMRFUzTERFNE9Td3hOREVzTVRnNExEZzJMREl5TlN3eE1UZ3NNVEV4TERFM055d3hPRElzTVRjeExERTVMRFl3TERFNE55d3hNek1zTWpRc01UWTBMREUwT0N3eE9Ea3NPRFVzTVRjekxERTVNU3d5TVRJc01qUTNMREl3TVN3eE9ERXNOekVzT0Rnc01URXlMREUyT0N3eE16RXNNVGMwTERZM0xEWTBMREUxT1N3eU1EWXNNVFEzTERVMExEVTBMREUwTnl3NE5pdzFPQ3d5TWpVc01qa3NNekFzTVRJd0xESTBOaXd4Tmpjc056Z3NOekVzTVRReUxESXlPQ3c0TVN3eU16Z3NNVEF6TERZeUxESTBNeXd5TkRFc01qSTJMREUxTWl3Mk15d3hOaXc1T0N3eE56TXNNemNzTVRrMkxEVXlMRFU0TERRNUxERTRNU3cwTml3eE5Ea3NNVEE0TERFME9TdzBPU3czTERnekxERXhPQ3d5TWprc01qVTBMREl4Tnl3eE5qY3NNVFkzTERJeUxESTBOeXd4T1RVc01URXlMREV4TlN3eU5UQXNNQ3d4TlRjc01qVXhMREUzT0N3eU1Ea3NOeklzTVRVNUxERXlOeXd4T0RFc01URXlMRE13TERjMUxEa3NNak0yTERJeUxERXlNaXcyTUN3MU9Dd3hMREV5TlN3eU1qQXNNak0xTERJeU5Td3lNamdzTWpRekxESTBOQ3d5TVRZc01USXdMREV3Tnl3eE5qQXNNakV5TERFeU5Dd3lNalVzTnpFc01UazNMRE00TERFM01Dd3hNak1zTVRZNExETTVMRE0wTERFMk9Td3hPRFFzTlRnc01URXlMRGd3TERjMUxERTVNQ3d5TURjc01UY3lMREl4TXl3eUxETXNNU3d3TERFPSIsImlzcyI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbSIsImlhdCI6IjE1MDU0OTE3NDIiLCJleHAiOiIxNTA1NDk1MzQyIiwiYWxnIjoiUlMyNTYiLCJraWQiOiI3ZWNiNTRjZTcxZDYxOGIyODMwY2NlYzk5MTg4MThlNzM4MTAwZjJhIn19', + 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqZGxZMkkxTkdObE56RmtOakU0WWpJNE16QmpZMlZqT1RreE9EZ3hPR1UzTXpneE1EQm1NbUVpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SW1Ka2FHVjJkVU0zU0RaNVpuSkpWakZEVURsdmFIY2lMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVZURk1SRWwzVFVOM2VFMXBkelZPUTNkNFQwUkZjMDFxUlRSTVJFVXlUbmwzZUUxVVozTk9SRkZ6VGxSUmMwMTZZM05OYWsxM1RFUkplVTVUZHpGUFEzZDRUMVJGYzAxVVdUUk1SRTB5VEVSTk1VeEVSVEZPVTNjMVRubDNNazlUZDNsTmFsVnpUVlJKZVV4RVozbE1SRVY2VFhsM01reEVTVEJPVTNkNlRYbDNlazE1ZDNsT1ZGRnpUVlJWZVV4RVJUVk5hWGQ0VFVSamMwMVVZek5NUkVWNlRtbDNNRTVwZDNwTVJHTnpUMVJuYzA1cVFYTk5la0Z6VGtSSmMwMXFRVFZNUkVVeVRsTjNlVTFVVlhOTlZGVXdURVJGTUUxNWQzaE9hbGx6VGtSQmMwNXFTWE5OVkVVelRFUlJla3hFU1RKTVJFbDVUbmwzTVU1RGQzaE5lbGx6VG1wVmMwOVVZM05OYVhjMFRubDNlRTE2WTNOT2VsRnpUVlJyZVV4RVdUUk1SRWwzVGtOM2VFOUVaM05OYWxGNlRFUkZkMDVEZDNoTmFrbHpUMVJqYzAxVVl6Tk1SRVY2VFZOM2VFOUVSWE5OVkdNMVRFUm5lRXhFVlhsTVJFVXhUa04zZVU1cGR6Sk1SRlY2VEVSamVFeEVhekZNUkVWNVRVTjNlVTFxV1hOTlZFRjNURVJKZVUxRGQzbE5SR3R6VFZSck1VeEVSVE5OVTNjeFRubDNlRTlFVFhOTmVsbHpUVlJaTlV4RVJUQk9VM2MxVDBOM2VFMUVXWE5OVkdkelRXcEJNa3hFUlRSTlEzZDRUVVJCYzAxVVdUTk1SRmw0VEVSRmQwNTVkekJOVTNkNlRrTjNlVXhFU1RCT2VYZDVUa1JSYzAxVVZYZE1SRVV5VG5sM2VVMUVVWE5OYWtVeVRFUlZOVXhFU1hsT2VYYzBURVJKTWt4RVZUTk1SRVUwVDFOM2VFNUVSWE5OVkdjMFRFUm5Na3hFU1hsT1UzZDRUVlJuYzAxVVJYaE1SRVV6VG5sM2VFOUVTWE5OVkdONFRFUkZOVXhFV1hkTVJFVTBUbmwzZUUxNlRYTk5hbEZ6VFZSWk1FeEVSVEJQUTNkNFQwUnJjMDlFVlhOTlZHTjZURVJGTlUxVGQzbE5WRWx6VFdwUk0weEVTWGROVTNkNFQwUkZjMDU2UlhOUFJHZHpUVlJGZVV4RVJUSlBRM2Q0VFhwRmMwMVVZekJNUkZrelRFUlpNRXhFUlRGUFUzZDVUVVJaYzAxVVVUTk1SRlV3VEVSVk1FeEVSVEJPZVhjMFRtbDNNVTlEZDNsTmFsVnpUV3ByYzAxNlFYTk5WRWwzVEVSSk1FNXBkM2hPYW1OelRucG5jMDU2UlhOTlZGRjVURVJKZVU5RGR6Uk5VM2Q1VFhwbmMwMVVRWHBNUkZsNVRFUkpNRTE1ZDNsT1JFVnpUV3BKTWt4RVJURk5hWGN5VFhsM2VFNXBkelZQUTNkNFRucE5jMDE2WTNOTlZHc3lURVJWZVV4RVZUUk1SRkUxVEVSRk5FMVRkekJPYVhkNFRrUnJjMDFVUVRSTVJFVXdUMU4zTUU5VGR6Tk1SR2Q2VEVSRmVFOURkM2xOYW10elRXcFZNRXhFU1hoT2VYZDRUbXBqYzAxVVdUTk1SRWw1VEVSSk1FNTVkM2hQVkZWelRWUkZlVXhFUlhoT1UzZDVUbFJCYzAxRGQzaE9WR056VFdwVmVFeEVSVE5QUTNkNVRVUnJjMDU2U1hOTlZGVTFURVJGZVU1NWQzaFBSRVZ6VFZSRmVVeEVUWGRNUkdNeFRFUnJjMDFxVFRKTVJFbDVURVJGZVUxcGR6Sk5RM2N4VDBOM2VFeEVSWGxPVTNkNVRXcEJjMDFxVFRGTVJFbDVUbE4zZVUxcVozTk5hbEY2VEVSSk1FNURkM2xOVkZselRWUkpkMHhFUlhkT2VYZDRUbXBCYzAxcVJYbE1SRVY1VGtOM2VVMXFWWE5PZWtWelRWUnJNMHhFVFRSTVJFVXpUVU4zZUUxcVRYTk5WRmswVEVSTk5VeEVUVEJNUkVVeVQxTjNlRTlFVVhOT1ZHZHpUVlJGZVV4RVozZE1SR014VEVSRk5VMURkM2xOUkdOelRWUmplVXhFU1hoTmVYZDVURVJOYzAxVGQzZE1SRVU5SWl3aWFYTnpJam9pYUhSMGNITTZMeTloWTJOdmRXNTBjeTVuYjI5bmJHVXVZMjl0SWl3aWFXRjBJam94TlRBMU5Ea3hOelF5TENKbGVIQWlPakUxTURVME9UVXpOREo5LktHYWp6N0NjamtPUnIxS055TFgwRHFXaVRRM2s3d2Q0NDRsU0RiSFYtRV9adHY0bzhDdVlTTVJQRU12eGtncG5PaDBGd241OWROd2F5LXdqSkFZZWhCVWpCdllQZHgzejMzZDF0Uk5OcTlBUV9NQXJqZGVqQnkxcFpkR1FaY1diRUpMSUtPYXZuNGs2LS1mb0M4OUdkXzI2aU9tV1A1ZE9BcjRRU0tyVlZyRURlNDNnQXZ0Mms5anVpaGFnX1B5U0ROMjZXbVJDTVY4N2lFY3lzS3JfTTlXVExYS3k2NWU5czloNEpQYmdqMzZvSllrX3Bpbmk0YlJ6MERCd0lOLVI5TlAtZmkyT2VlRFptbXd4YzJXdnd1c05yaFJZamxGMmNkMjZwUFhaeTlMWlZPTU1fRERoTVpsMVVMclJvZnVFT1BMVXEtWFZZV3lmUXRMZnBPRkthdyIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJiZGhldnVDN0g2eWZySVYxQ1A5b2h3Iiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFUxTERJd01Dd3hNaXc1TkN3eE9ERXNNakU0TERFMk55d3hNVGdzTkRRc05UUXNNemNzTWpNd0xESXlOU3cxT0N3eE9URXNNVFk0TERNMkxETTFMREUxTlN3NU55dzJPU3d5TWpVc01USXlMRGd5TERFek15dzJMREkwTlN3ek15d3pNeXd5TlRRc01UVXlMREU1TWl3eE1EY3NNVGMzTERFek5pdzBOaXd6TERjc09UZ3NOakFzTXpBc05ESXNNakE1TERFMk5Td3lNVFVzTVRVMExERTBNeXd4TmpZc05EQXNOaklzTVRFM0xEUXpMREkyTERJeU55dzFOQ3d4TXpZc05qVXNPVGNzTWl3NE55d3hNemNzTnpRc01Ua3lMRFk0TERJd05Dd3hPRGdzTWpRekxERXdOQ3d4TWpJc09UY3NNVGMzTERFek1Td3hPREVzTVRjNUxEZ3hMRFV5TERFMU5Dd3lOaXcyTERVekxEY3hMRGsxTERFeU1Dd3lNallzTVRBd0xESXlNQ3d5TURrc01UazFMREUzTVN3MU55d3hPRE1zTXpZc01UWTVMREUwTlN3NU9Dd3hNRFlzTVRnc01qQTJMREU0TUN3eE1EQXNNVFkzTERZeExERXdOeXcwTVN3ek5Dd3lMREkwTnl3eU5EUXNNVFV3TERFMk55d3lNRFFzTWpFMkxEVTVMREl5Tnl3NExESTJMRFUzTERFNE9Td3hOREVzTVRnNExEZzJMREl5TlN3eE1UZ3NNVEV4TERFM055d3hPRElzTVRjeExERTVMRFl3TERFNE55d3hNek1zTWpRc01UWTBMREUwT0N3eE9Ea3NPRFVzTVRjekxERTVNU3d5TVRJc01qUTNMREl3TVN3eE9ERXNOekVzT0Rnc01URXlMREUyT0N3eE16RXNNVGMwTERZM0xEWTBMREUxT1N3eU1EWXNNVFEzTERVMExEVTBMREUwTnl3NE5pdzFPQ3d5TWpVc01qa3NNekFzTVRJd0xESTBOaXd4Tmpjc056Z3NOekVzTVRReUxESXlPQ3c0TVN3eU16Z3NNVEF6TERZeUxESTBNeXd5TkRFc01qSTJMREUxTWl3Mk15d3hOaXc1T0N3eE56TXNNemNzTVRrMkxEVXlMRFU0TERRNUxERTRNU3cwTml3eE5Ea3NNVEE0TERFME9TdzBPU3czTERnekxERXhPQ3d5TWprc01qVTBMREl4Tnl3eE5qY3NNVFkzTERJeUxESTBOeXd4T1RVc01URXlMREV4TlN3eU5UQXNNQ3d4TlRjc01qVXhMREUzT0N3eU1Ea3NOeklzTVRVNUxERXlOeXd4T0RFc01URXlMRE13TERjMUxEa3NNak0yTERJeUxERXlNaXcyTUN3MU9Dd3hMREV5TlN3eU1qQXNNak0xTERJeU5Td3lNamdzTWpRekxESTBOQ3d5TVRZc01USXdMREV3Tnl3eE5qQXNNakV5TERFeU5Dd3lNalVzTnpFc01UazNMRE00TERFM01Dd3hNak1zTVRZNExETTVMRE0wTERFMk9Td3hPRFFzTlRnc01URXlMRGd3TERjMUxERTVNQ3d5TURjc01UY3lMREl4TXl3eUxETXNNU3d3TERFPSIsImlzcyI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbSIsImlhdCI6IjE1MDU0OTE3NDIiLCJleHAiOiIxNTA1NDk1MzQyIiwiYWxnIjoiUlMyNTYiLCJraWQiOiI3ZWNiNTRjZTcxZDYxOGIyODMwY2NlYzk5MTg4MThlNzM4MTAwZjJhIn19', identity: 'user://google.com/testandthink123@gmail.com', idp: { domain: 'google.com', @@ -1244,9 +665,9 @@ let returnedAssertionValuePopulate = { }, info: { accessToken: - 'ya29.GlvHBPvz5L_9BXW-Bur0qZT7PIcQTEHVqtVexuyy9nk6C…RDnHKbHMj209B26C4sHaa3Q89dbE5SOebteYb8o8mUxsjA5sF', + 'ya29.GlvHBPvz5L_9BXW-Bur0qZT7PIcQTEHVqtVexuyy9nk6C…RDnHKbHMj209B26C4sHaa3Q89dbE5SOebteYb8o8mUxsjA5sF', idToken: - 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjdlY2I1NGNlNzFkNjE4Yj…PXZy9LZVOMM_DDhMZl1ULrRofuEOPLUq-XVYWyfQtLfpOFKaw', + 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjdlY2I1NGNlNzFkNjE4Yj…PXZy9LZVOMM_DDhMZl1ULrRofuEOPLUq-XVYWyfQtLfpOFKaw', refreshToken: '1/mbg9sQp1fhrnH8IkglzzkGsl9nTgU__BTyp7lcdmBA4', tokenType: 'Bearer', infoToken: { @@ -1255,7 +676,7 @@ let returnedAssertionValuePopulate = { given_name: 'test', family_name: 'think', picture: - 'https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg' + 'https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg' }, keyPair: { public: new Uint8Array(294), @@ -1270,271 +691,19 @@ let returnedAssertionValuePopulate = { } }; -let sendGenerateMessageResponse = { - assertion: 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqZGxZMkkxTkdObE56RmtOakU0WWpJNE16QmpZMlZqT1RreE9EZ3hPR1UzTXpneE1EQm1NbUVpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SW1Ka2FHVjJkVU0zU0RaNVpuSkpWakZEVURsdmFIY2lMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVZURk1SRWwzVFVOM2VFMXBkelZPUTNkNFQwUkZjMDFxUlRSTVJFVXlUbmwzZUUxVVozTk9SRkZ6VGxSUmMwMTZZM05OYWsxM1RFUkplVTVUZHpGUFEzZDRUMVJGYzAxVVdUUk1SRTB5VEVSTk1VeEVSVEZPVTNjMVRubDNNazlUZDNsTmFsVnpUVlJKZVV4RVozbE1SRVY2VFhsM01reEVTVEJPVTNkNlRYbDNlazE1ZDNsT1ZGRnpUVlJWZVV4RVJUVk5hWGQ0VFVSamMwMVVZek5NUkVWNlRtbDNNRTVwZDNwTVJHTnpUMVJuYzA1cVFYTk5la0Z6VGtSSmMwMXFRVFZNUkVVeVRsTjNlVTFVVlhOTlZGVXdURVJGTUUxNWQzaE9hbGx6VGtSQmMwNXFTWE5OVkVVelRFUlJla3hFU1RKTVJFbDVUbmwzTVU1RGQzaE5lbGx6VG1wVmMwOVVZM05OYVhjMFRubDNlRTE2WTNOT2VsRnpUVlJyZVV4RVdUUk1SRWwzVGtOM2VFOUVaM05OYWxGNlRFUkZkMDVEZDNoTmFrbHpUMVJqYzAxVVl6Tk1SRVY2VFZOM2VFOUVSWE5OVkdNMVRFUm5lRXhFVlhsTVJFVXhUa04zZVU1cGR6Sk1SRlY2VEVSamVFeEVhekZNUkVWNVRVTjNlVTFxV1hOTlZFRjNURVJKZVUxRGQzbE5SR3R6VFZSck1VeEVSVE5OVTNjeFRubDNlRTlFVFhOTmVsbHpUVlJaTlV4RVJUQk9VM2MxVDBOM2VFMUVXWE5OVkdkelRXcEJNa3hFUlRSTlEzZDRUVVJCYzAxVVdUTk1SRmw0VEVSRmQwNTVkekJOVTNkNlRrTjNlVXhFU1RCT2VYZDVUa1JSYzAxVVZYZE1SRVV5VG5sM2VVMUVVWE5OYWtVeVRFUlZOVXhFU1hsT2VYYzBURVJKTWt4RVZUTk1SRVUwVDFOM2VFNUVSWE5OVkdjMFRFUm5Na3hFU1hsT1UzZDRUVlJuYzAxVVJYaE1SRVV6VG5sM2VFOUVTWE5OVkdONFRFUkZOVXhFV1hkTVJFVTBUbmwzZUUxNlRYTk5hbEZ6VFZSWk1FeEVSVEJQUTNkNFQwUnJjMDlFVlhOTlZHTjZURVJGTlUxVGQzbE5WRWx6VFdwUk0weEVTWGROVTNkNFQwUkZjMDU2UlhOUFJHZHpUVlJGZVV4RVJUSlBRM2Q0VFhwRmMwMVVZekJNUkZrelRFUlpNRXhFUlRGUFUzZDVUVVJaYzAxVVVUTk1SRlV3VEVSVk1FeEVSVEJPZVhjMFRtbDNNVTlEZDNsTmFsVnpUV3ByYzAxNlFYTk5WRWwzVEVSSk1FNXBkM2hPYW1OelRucG5jMDU2UlhOTlZGRjVURVJKZVU5RGR6Uk5VM2Q1VFhwbmMwMVVRWHBNUkZsNVRFUkpNRTE1ZDNsT1JFVnpUV3BKTWt4RVJURk5hWGN5VFhsM2VFNXBkelZQUTNkNFRucE5jMDE2WTNOTlZHc3lURVJWZVV4RVZUUk1SRkUxVEVSRk5FMVRkekJPYVhkNFRrUnJjMDFVUVRSTVJFVXdUMU4zTUU5VGR6Tk1SR2Q2VEVSRmVFOURkM2xOYW10elRXcFZNRXhFU1hoT2VYZDRUbXBqYzAxVVdUTk1SRWw1VEVSSk1FNTVkM2hQVkZWelRWUkZlVXhFUlhoT1UzZDVUbFJCYzAxRGQzaE9WR056VFdwVmVFeEVSVE5QUTNkNVRVUnJjMDU2U1hOTlZGVTFURVJGZVU1NWQzaFBSRVZ6VFZSRmVVeEVUWGRNUkdNeFRFUnJjMDFxVFRKTVJFbDVURVJGZVUxcGR6Sk5RM2N4VDBOM2VFeEVSWGxPVTNkNVRXcEJjMDFxVFRGTVJFbDVUbE4zZVUxcVozTk5hbEY2VEVSSk1FNURkM2xOVkZselRWUkpkMHhFUlhkT2VYZDRUbXBCYzAxcVJYbE1SRVY1VGtOM2VVMXFWWE5PZWtWelRWUnJNMHhFVFRSTVJFVXpUVU4zZUUxcVRYTk5WRmswVEVSTk5VeEVUVEJNUkVVeVQxTjNlRTlFVVhOT1ZHZHpUVlJGZVV4RVozZE1SR014VEVSRk5VMURkM2xOUkdOelRWUmplVXhFU1hoTmVYZDVURVJOYzAxVGQzZE1SRVU5SWl3aWFYTnpJam9pYUhSMGNITTZMeTloWTJOdmRXNTBjeTVuYjI5bmJHVXVZMjl0SWl3aWFXRjBJam94TlRBMU5Ea3hOelF5TENKbGVIQWlPakUxTURVME9UVXpOREo5LktHYWp6N0NjamtPUnIxS055TFgwRHFXaVRRM2s3d2Q0NDRsU0RiSFYtRV9adHY0bzhDdVlTTVJQRU12eGtncG5PaDBGd241OWROd2F5LXdqSkFZZWhCVWpCdllQZHgzejMzZDF0Uk5OcTlBUV9NQXJqZGVqQnkxcFpkR1FaY1diRUpMSUtPYXZuNGs2LS1mb0M4OUdkXzI2aU9tV1A1ZE9BcjRRU0tyVlZyRURlNDNnQXZ0Mms5anVpaGFnX1B5U0ROMjZXbVJDTVY4N2lFY3lzS3JfTTlXVExYS3k2NWU5czloNEpQYmdqMzZvSllrX3Bpbmk0YlJ6MERCd0lOLVI5TlAtZmkyT2VlRFptbXd4YzJXdnd1c05yaFJZamxGMmNkMjZwUFhaeTlMWlZPTU1fRERoTVpsMVVMclJvZnVFT1BMVXEtWFZZV3lmUXRMZnBPRkthdyIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJiZGhldnVDN0g2eWZySVYxQ1A5b2h3Iiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFUxTERJd01Dd3hNaXc1TkN3eE9ERXNNakU0TERFMk55d3hNVGdzTkRRc05UUXNNemNzTWpNd0xESXlOU3cxT0N3eE9URXNNVFk0TERNMkxETTFMREUxTlN3NU55dzJPU3d5TWpVc01USXlMRGd5TERFek15dzJMREkwTlN3ek15d3pNeXd5TlRRc01UVXlMREU1TWl3eE1EY3NNVGMzTERFek5pdzBOaXd6TERjc09UZ3NOakFzTXpBc05ESXNNakE1TERFMk5Td3lNVFVzTVRVMExERTBNeXd4TmpZc05EQXNOaklzTVRFM0xEUXpMREkyTERJeU55dzFOQ3d4TXpZc05qVXNPVGNzTWl3NE55d3hNemNzTnpRc01Ua3lMRFk0TERJd05Dd3hPRGdzTWpRekxERXdOQ3d4TWpJc09UY3NNVGMzTERFek1Td3hPREVzTVRjNUxEZ3hMRFV5TERFMU5Dd3lOaXcyTERVekxEY3hMRGsxTERFeU1Dd3lNallzTVRBd0xESXlNQ3d5TURrc01UazFMREUzTVN3MU55d3hPRE1zTXpZc01UWTVMREUwTlN3NU9Dd3hNRFlzTVRnc01qQTJMREU0TUN3eE1EQXNNVFkzTERZeExERXdOeXcwTVN3ek5Dd3lMREkwTnl3eU5EUXNNVFV3TERFMk55d3lNRFFzTWpFMkxEVTVMREl5Tnl3NExESTJMRFUzTERFNE9Td3hOREVzTVRnNExEZzJMREl5TlN3eE1UZ3NNVEV4TERFM055d3hPRElzTVRjeExERTVMRFl3TERFNE55d3hNek1zTWpRc01UWTBMREUwT0N3eE9Ea3NPRFVzTVRjekxERTVNU3d5TVRJc01qUTNMREl3TVN3eE9ERXNOekVzT0Rnc01URXlMREUyT0N3eE16RXNNVGMwTERZM0xEWTBMREUxT1N3eU1EWXNNVFEzTERVMExEVTBMREUwTnl3NE5pdzFPQ3d5TWpVc01qa3NNekFzTVRJd0xESTBOaXd4Tmpjc056Z3NOekVzTVRReUxESXlPQ3c0TVN3eU16Z3NNVEF6TERZeUxESTBNeXd5TkRFc01qSTJMREUxTWl3Mk15d3hOaXc1T0N3eE56TXNNemNzTVRrMkxEVXlMRFU0TERRNUxERTRNU3cwTml3eE5Ea3NNVEE0TERFME9TdzBPU3czTERnekxERXhPQ3d5TWprc01qVTBMREl4Tnl3eE5qY3NNVFkzTERJeUxESTBOeXd4T1RVc01URXlMREV4TlN3eU5UQXNNQ3d4TlRjc01qVXhMREUzT0N3eU1Ea3NOeklzTVRVNUxERXlOeXd4T0RFc01URXlMRE13TERjMUxEa3NNak0yTERJeUxERXlNaXcyTUN3MU9Dd3hMREV5TlN3eU1qQXNNak0xTERJeU5Td3lNamdzTWpRekxESTBOQ3d5TVRZc01USXdMREV3Tnl3eE5qQXNNakV5TERFeU5Dd3lNalVzTnpFc01UazNMRE00TERFM01Dd3hNak1zTVRZNExETTVMRE0wTERFMk9Td3hPRFFzTlRnc01URXlMRGd3TERjMUxERTVNQ3d5TURjc01UY3lMREl4TXl3eUxETXNNU3d3TERFPSIsImlzcyI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbSIsImlhdCI6IjE1MDU0OTE3NDIiLCJleHAiOiIxNTA1NDk1MzQyIiwiYWxnIjoiUlMyNTYiLCJraWQiOiI3ZWNiNTRjZTcxZDYxOGIyODMwY2NlYzk5MTg4MThlNzM4MTAwZjJhIn19', - idp: { domain: 'google.com', protocol: 'OIDC' }, - info: { - accessToken: 'ya29.GlvSBDbUICOGwVGCW4IJz1wS3e5HBDW9sXnuGFgWPKHPHsU6zFIbNL8Z31CoCd93gav7cKQ8axhIASk1DdsA1MCxABFnJDTz1aXLmdyGFtLa9bO9JTNLv2DLawdr', - idToken: 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjNiMGZjMTE5NjJhZDE2ZTQ5ZDU1YTI2ODE2YzVhZDBkM2Y2YjhhODMifQ.eyJhenAiOiI4MDgzMjk1NjYwMTItdHFyOHFvaDExMTk0MmdkMmtnMDA3dDBzOGYyNzdyb2kuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI4MDgzMjk1NjYwMTItdHFyOHFvaDExMTk0MmdkMmtnMDA3dDBzOGYyNzdyb2kuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMTc5NTkxMDUyOTU3NjE2ODc4ODkiLCJlbWFpbCI6InRlc3RhbmR0aGluazEyM0BnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXRfaGFzaCI6ImtnNkpEdTJyMDRpNVZHSlBkSWlnUFEiLCJub25jZSI6Ik5EZ3NNVE13TERFc016UXNORGdzTVRNc05pdzVMRFF5TERFek5DdzNNaXd4TXpRc01qUTNMREV6TERFc01Td3hMRFVzTUN3ekxERXpNQ3d4TERFMUxEQXNORGdzTVRNd0xERXNNVEFzTWl3eE16QXNNU3d4TERBc01UY3lMREU1TkN3eU16Y3NNakV5TERFek5DdzROU3d5TWpFc01qRXlMREV4Tnl3eE16TXNNVGN3TERnMExESXdOaXcyT1N3eE5ERXNNemNzTWpVMExESXhOaXd4Tmprc016RXNOak1zT1RFc01URTFMREV6T1N3MU1pd3lNVFlzTWpJNUxESXlOaXd4TXl3NU9Td3hOamNzTVRnMUxERXlNQ3d5TVRNc01USXlMREl5Tml3eU1UQXNNVEUwTERJME1Td3hOak1zTVRBMkxERXhNQ3d5TXpjc05ETXNNak16TERreExESTFNQ3d5TWpNc01qSTFMREV3Tml3NE1pd3hOVFVzTlN3eU16WXNNVGsyTERFMU1Dd3lNakVzTVRjc01USTRMREl6TERFNE5Dd3hNekVzT1RRc01Ua3dMRFU0TERJME9Td3hOemdzTVRBM0xERTVNaXd6TlN3NE5Td3hPRE1zTWpFeUxESTBPU3d5TkRFc01qUTJMRFV3TERBc016Y3NNVEkyTERFeE1pd3hOaXd5TXpBc01qRXlMREl6TERFek9Td3hPVGdzTnpRc01qRTRMREUxTXl3eE56Z3NNVFF3TERReExERTROaXd5TXpJc05qUXNNakk1TERRc01qSXhMRFkxTERFMExERTRNQ3d6TlN3eE16VXNOamtzTVRNc01qTXhMREk0TERJeE1DdzFNeXd4TVRnc01UWTRMREUyTVN3ek9DdzBNaXd4TkRjc01UUTFMRGcyTERJd055d3lOQ3c1TUN3eU1qWXNNVFVzTWpBNUxEZzVMREU0TXl3eE1EY3NNVFkwTERFMUxESXdNaXd5TkRJc056SXNNVGd4TERJeU5Td3lOVEFzTVRJeUxERTFPQ3c1TUN3eE5qa3NNak0xTERFek5DdzBOQ3d4TWl3MU1Td3lORFVzTVRRd0xEa3lMRGMxTERFeU9TdzNPU3d5TXpBc01qTTNMREUyTVN3eE9UTXNNVFF5TERFMU1pdzVMREl5TVN3ME1pd3hOelFzT1Rjc01qQTVMREV4Tnl3eE9UTXNNVElzT1RNc01UWXhMREl4Tnl3eU5ERXNNVGs0TERFd09Dd3hPRFlzTWprc01Ua3pMREV5TVN3NE15d3hNRGtzTWpJMkxERTVNeXd4TlRBc01UZ3pMRE0wTERFNUxEazFMREV4TWl3M05Dd3lNekFzT1RRc01UQTJMREUxTVN3ME1Dd3lNak1zTWpFNExESXlPQ3d6TERJMU15d3lNVGtzTmpZc09Dd3hPVEVzTkRjc01UTXdMREl3TUN3eU1qWXNNVE0zTERreUxESXdNaXd4TURJc05EY3NNakF3TERFeE15dzJOeXd4TlRZc09ETXNNVGsxTERJd01Td3lNeklzTWpJMUxEazJMREl3TXl3NE1Td3lNVE1zTVRJd0xEZzVMREV4TWl3eE9UTXNNalFzTnpjc01UWXpMREUzTkN3eUxESXdNU3d4TXpBc01UY3dMREl4T0N3Mk5pd3hNak1zTVRFNUxEZ3pMREl4T1N3d0xETXlMRFl4TERVd0xESXpNQ3d4TWpjc01qa3NNakE0TERJeE1Dd3lNamNzTWpFM0xEZzVMREUxTkN3eU16QXNOVGdzTnprc01pd3pMREVzTUN3eCIsImlzcyI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbSIsImlhdCI6MTUwNjQ0NzA0NywiZXhwIjoxNTA2NDUwNjQ3fQ.pY0BZZHSMWyL4UE8sclEb-FglzmOuh8kHykFkGTUfxgdb7bAY7bVtTQWlN05dhMs5QncAjsKExEuoLoH0vqYKOWEsXM_oTnu59NY2JPiEYZOo-v5wsc7on3G_CF0E5BGYhG-fDpbmi3qbin-i-drDyOjWMC3jK1CngMT7G1ElW_x2W8-UfrcfGkIzdW11Iul-79prZ1OzNMoPI06aaAtxyd5-6_O2-jaKlKGGfqIGlV_cFnMuIW6tWONzmSY-XnKtUKMPOctLVGLYJI9l8e2D4e7NmXVZz7lum7KmCzJvrRq0T4dOy5j_CaSmyA26SJcmRbRn940THU7S5BuavBCjQ', - refreshToken: undefined, - tokenType: 'Bearer', - infoToken: { - sub: '117959105295761687889', - name: 'test think', - given_name: 'test', - family_name: 'think', - picture: 'https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg', - email: 'testandthink123@gmail.com', - email_verified: true, - locale: 'en' - }, - tokenIDJSON: { - azp: '808329566012-tqr8qoh111942gd2kg007t0s8f277roi.apps.googleusercontent.com', - aud: '808329566012-tqr8qoh111942gd2kg007t0s8f277roi.apps.googleusercontent.com', - sub: '117959105295761687889', - email: 'testandthink123@gmail.com', - email_verified: 'true', - at_hash: 'kg6JDu2r04i5VGJPdIigPQ', - nonce: 'NDgsMTMwLDEsMzQsNDgsMTMsNiw5LDQyLDEzNCw3MiwxMzQsMjQ3LDEzLDEsMSwxLDUsMCwzLDEzMCwxLDE1LDAsNDgsMTMwLDEsMTAsMiwxMzAsMSwxLDAsMTcyLDE5NCwyMzcsMjEyLDEzNCw4NSwyMjEsMjEyLDExNywxMzMsMTcwLDg0LDIwNiw2OSwxNDEsMzcsMjU0LDIxNiwxNjksMzEsNjMsOTEsMTE1LDEzOSw1MiwyMTYsMjI5LDIyNiwxMyw5OSwxNjcsMTg1LDEyMCwyMTMsMTIyLDIyNiwyMTAsMTE0LDI0MSwxNjMsMTA2LDExMCwyMzcsNDMsMjMzLDkxLDI1MCwyMjMsMjI1LDEwNiw4MiwxNTUsNSwyMzYsMTk2LDE1MCwyMjEsMTcsMTI4LDIzLDE4NCwxMzEsOTQsMTkwLDU4LDI0OSwxNzgsMTA3LDE5MiwzNSw4NSwxODMsMjEyLDI0OSwyNDEsMjQ2LDUwLDAsMzcsMTI2LDExMiwxNiwyMzAsMjEyLDIzLDEzOSwxOTgsNzQsMjE4LDE1MywxNzgsMTQwLDQxLDE4NiwyMzIsNjQsMjI5LDQsMjIxLDY1LDE0LDE4MCwzNSwxMzUsNjksMTMsMjMxLDI4LDIxMCw1MywxMTgsMTY4LDE2MSwzOCw0MiwxNDcsMTQ1LDg2LDIwNywyNCw5MCwyMjYsMTUsMjA5LDg5LDE4MywxMDcsMTY0LDE1LDIwMiwyNDIsNzIsMTgxLDIyNSwyNTAsMTIyLDE1OCw5MCwxNjksMjM1LDEzNCw0NCwxMiw1MSwyNDUsMTQwLDkyLDc1LDEyOSw3OSwyMzAsMjM3LDE2MSwxOTMsMTQyLDE1Miw5LDIyMSw0MiwxNzQsOTcsMjA5LDExNywxOTMsMTIsOTMsMTYxLDIxNywyNDEsMTk4LDEwOCwxODYsMjksMTkzLDEyMSw4MywxMDksMjI2LDE5MywxNTAsMTgzLDM0LDE5LDk1LDExMiw3NCwyMzAsOTQsMTA2LDE1MSw0MCwyMjMsMjE4LDIyOCwzLDI1MywyMTksNjYsOCwxOTEsNDcsMTMwLDIwMCwyMjYsMTM3LDkyLDIwMiwxMDIsNDcsMjAwLDExMyw2NywxNTYsODMsMTk1LDIwMSwyMzIsMjI1LDk2LDIwMyw4MSwyMTMsMTIwLDg5LDExMiwxOTMsMjQsNzcsMTYzLDE3NCwyLDIwMSwxMzAsMTcwLDIxOCw2NiwxMjMsMTE5LDgzLDIxOSwwLDMyLDYxLDUwLDIzMCwxMjcsMjksMjA4LDIxMCwyMjcsMjE3LDg5LDE1NCwyMzAsNTgsNzksMiwzLDEsMCwx', - iss: 'https://accounts.google.com', - iat: '1506447047', - exp: '1506450647', - alg: 'RS256', - kid: '3b0fc11962ad16e49d55a26816c5ad0d3f6b8a83' - }, - expires: '1506450647', - email: 'testandthink123@gmail.com' - } -}; - -let dataObjectPopulate = { - url: 'hyperty://h1.domain/h1', - data: { type: 'chat', content: 'hello world' }, - reporter: 'hyperty://h1.domain/h1', - created: '2017-09-26T15:05:14.966Z', - runtime: runtimeURL, - schema: 'hyperty-catalogue://catalogue.localhost/.well-known/dataschema/Communication', - parent: 'comm://localhost/5f8d87fd-c56b-47fc-ad47-28d55f01e23a' -}; - -let messageToBeHashedPopulate = { - type: 'execute', - from: hyperURL1, - to: hyperURL2, - body: { - identity: hyperURL1, - value: 'value', - handshakePhase: 'handshake' - } -}; - -let messageForNewChatCrypto = { - from: 'hyperty://h1.domain/h1', - to: 'hyperty://h2.domain/h2', - body: { ignore: true }, - callback: undefined, - dataObjectURL: 'comm://localhost/6c3b1310-28e2-43bf-bc1e-a4405a6733a2' -}; - -let chatKeysPopulate = { - hypertyFrom: { - hyperty: 'hyperty://localhost/7339190f-056a-41e1-88ec-18f02146b5bb', - userID: 'testandthink123@gmail.com', - privateKey: undefined, - publicKey: undefined, - assertion: 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqTm1PVGsxTWpWall6TmhNek5sTTJNeVlqVmtZMlk1WVRJeFpqUmtPREprTXpjeFltVTNOamNpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWxKcFdEZEVlbFI1YWxWUVIxOU5MVlZQVEhveGJFRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVVURk1SRVV4VFhsM2VVMUVaM05OYWxGNVRFUkpNVTVEZDNsTmVsbHpUV3BOTVV4RVVUSk1SRWw1VGxOM2VFMTZaM05OZW10elRXcEpNa3hFUlhoTmFYZDRUWHBSYzAxVVp6Vk1SRVY0VFVOM01FNURkM2xOUkVselRWUm5kMHhFYTNwTVJFVXdUME4zZVUxRVozTk9ha1Z6VFZSQk0weEVSWGROVTNkNVRVUlZjMDlFVVhOT1ZGVnpUVlJqTVV4RVozZE1SRWt4VEVSSmQwNXBkM2xOUkUxelRXcEJlRXhFU1RGTVJFbDZUME4zTWt4RVdYbE1SRVV4VG1sM2VFMXFVWE5PYWtselRXcE5ORXhFUlhoTVJFa3dUMU4zTkU1RGR6Uk1SRVV6VG1sM01rNTVkM2xPVkZGelRWUnJNVXhFU1RCT1UzZDRUWHBSYzA1cGQzbE9SRTF6VFdwSk1VeEVSVEZQUTNkNFRrUlJjMDFVVFRKTVJFVjVUbmwzZUUxVVozTk5hbEY1VEVSbk5FeEVZekpNUkVVd1RtbDNlRTU1ZDNsTmFrRnpUVlJGTkV4RVNUQk9RM2MxVG5sM2VVNUVaM05OVkdONlRFUkZORTFUZHpWUFEzY3lUbWwzTkV4RVdYaE1SR2N4VEVSSk5FeEVSWHBPVTNjeFRFUkZORTlUZHpOUFUzZDRUVlJOYzAxVVl6Uk1SRVV3VDBOM2VFMTZRWE5OYWxWNlRFUkZlVTVEZDNwT1EzY3dUMU4zZVU1RVNYTk5hbFY1VEVSRk1VNXBkM2hPUkdkelRWUlZjMDVxUlhOTmFsRXhURVJKZVUxVGQzbE5SR3R6VFZSSmVreEVSWGRQUTNkNFRtcFZjMDFxU1hOTmFrRXhURVJaTTB4RVJYbE5lWGQ0VDBSVmMwMXFRWGhNUkdjeVRFUkZNMDFEZDNoTlEzZDRUWHBSYzAxVVFURk1SRVUxVG1sM2VFMXFUWE5OYWxWNVRFUkZNazU1ZDNoT2VsVnpUV3BOTWt4RVJUQlBVM2N6VFVOM01rNURkM3BOVTNkNVRWTjNlVTFFUVhOTlZFMTVURVJKZVUxNWQzaE5lbEZ6VFdwQk1VeEVSVFZPUTNkNlRXbDNNVTVEZHpOT2VYZDVUV2wzTWs1NWQzcE9VM2MwVG5sM2VVMVVWWE5QUkZselRWUnJlRXhFU1hkT2VYZDRUbnBSYzAxcVFUVk1SRWt4VEVSbmVFeEVTWGxNUkVGelRYcEpjMDVFVVhOTmFsRXpURVJuTlV4RVp6Qk1SRWw2VGxOM2VFOVVZM05PZW1OelRWUnJNMHhFUlRSTVJFVjZUbWwzZUUxVVZYTk5WR2MwVEVSRmQweEVTWGhQUTNkNFQwUkJjMDFxVVhwTVJFbDRUVU4zZWs1VGQzaE5lbWR6VFdwQk1VeEVSVEpQVTNkNFQwTjNlazU1ZHpKTVJFRnpUMVJKYzAxVVkzZE1SRTAxVEVSRk1VNURkM2xPVkZWelRWUkJNMHhFU1RKTVJFVjVUME4zZVUxcVdYTk5hazEzVEVSRk1rMXBkM2hQVkVselRXcEJlRXhFUlRCTmFYZDRUbnBaYzA1VVFYTk5WRUUxVEVSSk1FOVRkekJOYVhkNFRrUm5jMDFxUVhwTVJFbDRUV2wzZVUxRVdYTk5WR2MwVEVSVk5VeEVSWGxOZVhkNFRrUkJjMDFVYTNoTVJHc3dURVJOTWt4RVJUQk9RM2Q1VGtSUmMwNVVhM05OYWswMVRFUlJjMDFVUlhwTVJFMTZURVJSTlV4RVdUSk1SRTEzVEVSSmQwMTVkelJNUkdNelRFUkZlVTVUZDNsTlJHdHpUVlJGZWt4RVNUQk5VM2Q0VFZSbmMwNTZVWE5OVkZFd1RFUm5lVXhFUlhkT2VYYzFUWGwzZUU1cGQzbE5ha1Z6VGxSQmMwMXFUWHBNUkVVeFRsTjNNMDU1ZDNoUFJFbHpUV3BCTWt4RVNYcE9lWGMwVDBOM2VVeEVSVEJPUTNkNVRYcFpjMDFVWnpKTVJFVXdUa04zZVUxNlRYTk5lbGx6VFZSUk1reEVSWGxNUkVVeVRVTjNkMHhFUlRST2FYZDRUMVJqYzA5RVkzTk5WR014VEVSUk5VeEVSVFZPZVhjeVQwTjNlVTFVWjNOTlZHTXhURVJKYzAxNWQzaE1SRUZ6VFZFOVBTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllXTmpiM1Z1ZEhNdVoyOXZaMnhsTG1OdmJTSXNJbWxoZENJNk1UVXdOemt3TlRnNE5pd2laWGh3SWpveE5UQTNPVEE1TkRnMmZRLktvU2xyeHp1RUthd1ZWcS1TdmNHNTRXZVladWpaS2ltd2JXV21td01UcUZjMVI1My1wMFRlbWVFdS1VT29NU3NydjA1bUxoV20zV3lfb1RKM3JKeWRPX3FQS1ptU3F3aENxeEVNNjRWajNDeHRTa1c0SUg5VmR3emlmYUxtakRIQk9NZ0Y5OUNLcTBCMkhVWVhwNXU3TXJDc1VrTC1LLXhnUVI4c185MzhiUXNSX085eHpILTluZFVVTjBCb09aQ0tCYm50WmZYdjZ5am9VeEZKdG10clVUWnpsUkZYbUtxWWQtVk9TYVZ3MURldlRDbzBjbjNrTXBtZ0E1Sk13aTZ5U2pEdE9TQzkwVjc1dDZJSVhvS2g3T2ZZOG1aelIzeWprejNpckxiNEhNdDlTV21qNVlCZmF4M0FtNDY1bnBLM3RpOWxOZFZaa1lVMmZRUGg0SC1mQSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJSaVg3RHpUeWpVUEdfTS1VT0x6MWxBIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFExTERFMU15d3lNRGdzTWpReUxESTFOQ3d5TXpZc01qTTFMRFEyTERJeU5Td3hNemdzTXprc01qSTJMREV4TWl3eE16UXNNVGc1TERFeE1DdzBOQ3d5TURJc01UZ3dMRGt6TERFME9Dd3lNRGdzTmpFc01UQTNMREV3TVN3eU1EVXNPRFFzTlRVc01UYzFMRGd3TERJMUxESXdOaXd5TURNc01qQXhMREkxTERJek9DdzJMRFl5TERFMU5pd3hNalFzTmpJc01qTTRMREV4TERJME9TdzROQ3c0TERFM05pdzJOeXd5TlRRc01UazFMREkwTlN3eE16UXNOaXd5TkRNc01qSTFMREUxT0N3eE5EUXNNVE0yTERFeU55d3hNVGdzTWpReUxEZzRMRGMyTERFME5pd3hOeXd5TWpBc01URTRMREkwTkN3NU55d3lORGdzTVRjekxERTRNU3c1T0N3Mk5pdzRMRFl4TERnMUxESTRMREV6TlN3MUxERTRPU3czT1N3eE1UTXNNVGM0TERFME9Dd3hNekFzTWpVekxERXlOQ3d6TkN3ME9Td3lORElzTWpVeUxERTFOaXd4TkRnc01UVXNOakVzTWpRMUxESXlNU3d5TURrc01USXpMREV3T0N3eE5qVXNNaklzTWpBMUxEWTNMREV5TXl3eE9EVXNNakF4TERnMkxERTNNQ3d4TUN3eE16UXNNVEExTERFNU5pd3hNak1zTWpVeUxERTJOeXd4TnpVc01qTTJMREUwT1N3M01DdzJOQ3d6TVN3eU1Td3lNREFzTVRNeUxESXlNeXd4TXpRc01qQTFMREU1TkN3ek1pdzFOQ3czTnl3eU1pdzJOeXd6TlN3NE55d3lNVFVzT0RZc01Ua3hMREl3Tnl3eE56UXNNakE1TERJMUxEZ3hMREl5TERBc016SXNORFFzTWpRM0xEZzVMRGcwTERJek5Td3hPVGNzTnpjc01UazNMREU0TERFek5pd3hNVFVzTVRnNExERXdMREl4T0N3eE9EQXNNalF6TERJeE1Dd3pOU3d4TXpnc01qQTFMREUyT1N3eE9Dd3pOeXcyTERBc09USXNNVGN3TERNNUxERTFOQ3d5TlRVc01UQTNMREkyTERFeU9Dd3lNallzTWpNd0xERTJNaXd4T1RJc01qQXhMREUwTWl3eE56WXNOVEFzTVRBNUxESTBPU3cwTWl3eE5EZ3NNakF6TERJeE1pd3lNRFlzTVRnNExEVTVMREV5TXl3eE5EQXNNVGt4TERrMExETTJMREUwTkN3eU5EUXNOVGtzTWpNNUxEUXNNVEV6TERNekxEUTVMRFkyTERNd0xESXdNeXc0TERjM0xERXlOU3d5TURrc01URXpMREkwTVN3eE1UZ3NOelFzTVRRMExEZ3lMREV3Tnl3NU15d3hOaXd5TWpFc05UQXNNak16TERFMU5TdzNOeXd4T0RJc01qQTJMREl6Tnl3NE9Dd3lMREUwTkN3eU16WXNNVGcyTERFME5Dd3lNek1zTXpZc01UUTJMREV5TERFMk1Dd3dMREU0Tml3eE9UY3NPRGNzTVRjMUxEUTVMREU1Tnl3Mk9Dd3lNVGdzTVRjMUxESXNNeXd4TERBc01RPT0iLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOiIxNTA3OTA1ODg2IiwiZXhwIjoiMTUwNzkwOTQ4NiIsImFsZyI6IlJTMjU2Iiwia2lkIjoiM2Y5OTUyNWNjM2EzM2UzYzJiNWRjZjlhMjFmNGQ4MmQzNzFiZTc2NyJ9fQ==', - messageInfo: { - userProfile: undefined, - idp: 'google.com', - assertion: 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqTm1PVGsxTWpWall6TmhNek5sTTJNeVlqVmtZMlk1WVRJeFpqUmtPREprTXpjeFltVTNOamNpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWxKcFdEZEVlbFI1YWxWUVIxOU5MVlZQVEhveGJFRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVVURk1SRVV4VFhsM2VVMUVaM05OYWxGNVRFUkpNVTVEZDNsTmVsbHpUV3BOTVV4RVVUSk1SRWw1VGxOM2VFMTZaM05OZW10elRXcEpNa3hFUlhoTmFYZDRUWHBSYzAxVVp6Vk1SRVY0VFVOM01FNURkM2xOUkVselRWUm5kMHhFYTNwTVJFVXdUME4zZVUxRVozTk9ha1Z6VFZSQk0weEVSWGROVTNkNVRVUlZjMDlFVVhOT1ZGVnpUVlJqTVV4RVozZE1SRWt4VEVSSmQwNXBkM2xOUkUxelRXcEJlRXhFU1RGTVJFbDZUME4zTWt4RVdYbE1SRVV4VG1sM2VFMXFVWE5PYWtselRXcE5ORXhFUlhoTVJFa3dUMU4zTkU1RGR6Uk1SRVV6VG1sM01rNTVkM2xPVkZGelRWUnJNVXhFU1RCT1UzZDRUWHBSYzA1cGQzbE9SRTF6VFdwSk1VeEVSVEZQUTNkNFRrUlJjMDFVVFRKTVJFVjVUbmwzZUUxVVozTk5hbEY1VEVSbk5FeEVZekpNUkVVd1RtbDNlRTU1ZDNsTmFrRnpUVlJGTkV4RVNUQk9RM2MxVG5sM2VVNUVaM05OVkdONlRFUkZORTFUZHpWUFEzY3lUbWwzTkV4RVdYaE1SR2N4VEVSSk5FeEVSWHBPVTNjeFRFUkZORTlUZHpOUFUzZDRUVlJOYzAxVVl6Uk1SRVV3VDBOM2VFMTZRWE5OYWxWNlRFUkZlVTVEZDNwT1EzY3dUMU4zZVU1RVNYTk5hbFY1VEVSRk1VNXBkM2hPUkdkelRWUlZjMDVxUlhOTmFsRXhURVJKZVUxVGQzbE5SR3R6VFZSSmVreEVSWGRQUTNkNFRtcFZjMDFxU1hOTmFrRXhURVJaTTB4RVJYbE5lWGQ0VDBSVmMwMXFRWGhNUkdjeVRFUkZNMDFEZDNoTlEzZDRUWHBSYzAxVVFURk1SRVUxVG1sM2VFMXFUWE5OYWxWNVRFUkZNazU1ZDNoT2VsVnpUV3BOTWt4RVJUQlBVM2N6VFVOM01rNURkM3BOVTNkNVRWTjNlVTFFUVhOTlZFMTVURVJKZVUxNWQzaE5lbEZ6VFdwQk1VeEVSVFZPUTNkNlRXbDNNVTVEZHpOT2VYZDVUV2wzTWs1NWQzcE9VM2MwVG5sM2VVMVVWWE5QUkZselRWUnJlRXhFU1hkT2VYZDRUbnBSYzAxcVFUVk1SRWt4VEVSbmVFeEVTWGxNUkVGelRYcEpjMDVFVVhOTmFsRXpURVJuTlV4RVp6Qk1SRWw2VGxOM2VFOVVZM05PZW1OelRWUnJNMHhFUlRSTVJFVjZUbWwzZUUxVVZYTk5WR2MwVEVSRmQweEVTWGhQUTNkNFQwUkJjMDFxVVhwTVJFbDRUVU4zZWs1VGQzaE5lbWR6VFdwQk1VeEVSVEpQVTNkNFQwTjNlazU1ZHpKTVJFRnpUMVJKYzAxVVkzZE1SRTAxVEVSRk1VNURkM2xPVkZWelRWUkJNMHhFU1RKTVJFVjVUME4zZVUxcVdYTk5hazEzVEVSRk1rMXBkM2hQVkVselRXcEJlRXhFUlRCTmFYZDRUbnBaYzA1VVFYTk5WRUUxVEVSSk1FOVRkekJOYVhkNFRrUm5jMDFxUVhwTVJFbDRUV2wzZVUxRVdYTk5WR2MwVEVSVk5VeEVSWGxOZVhkNFRrUkJjMDFVYTNoTVJHc3dURVJOTWt4RVJUQk9RM2Q1VGtSUmMwNVVhM05OYWswMVRFUlJjMDFVUlhwTVJFMTZURVJSTlV4RVdUSk1SRTEzVEVSSmQwMTVkelJNUkdNelRFUkZlVTVUZDNsTlJHdHpUVlJGZWt4RVNUQk5VM2Q0VFZSbmMwNTZVWE5OVkZFd1RFUm5lVXhFUlhkT2VYYzFUWGwzZUU1cGQzbE5ha1Z6VGxSQmMwMXFUWHBNUkVVeFRsTjNNMDU1ZDNoUFJFbHpUV3BCTWt4RVNYcE9lWGMwVDBOM2VVeEVSVEJPUTNkNVRYcFpjMDFVWnpKTVJFVXdUa04zZVUxNlRYTk5lbGx6VFZSUk1reEVSWGxNUkVVeVRVTjNkMHhFUlRST2FYZDRUMVJqYzA5RVkzTk5WR014VEVSUk5VeEVSVFZPZVhjeVQwTjNlVTFVWjNOTlZHTXhURVJKYzAxNWQzaE1SRUZ6VFZFOVBTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllXTmpiM1Z1ZEhNdVoyOXZaMnhsTG1OdmJTSXNJbWxoZENJNk1UVXdOemt3TlRnNE5pd2laWGh3SWpveE5UQTNPVEE1TkRnMmZRLktvU2xyeHp1RUthd1ZWcS1TdmNHNTRXZVladWpaS2ltd2JXV21td01UcUZjMVI1My1wMFRlbWVFdS1VT29NU3NydjA1bUxoV20zV3lfb1RKM3JKeWRPX3FQS1ptU3F3aENxeEVNNjRWajNDeHRTa1c0SUg5VmR3emlmYUxtakRIQk9NZ0Y5OUNLcTBCMkhVWVhwNXU3TXJDc1VrTC1LLXhnUVI4c185MzhiUXNSX085eHpILTluZFVVTjBCb09aQ0tCYm50WmZYdjZ5am9VeEZKdG10clVUWnpsUkZYbUtxWWQtVk9TYVZ3MURldlRDbzBjbjNrTXBtZ0E1Sk13aTZ5U2pEdE9TQzkwVjc1dDZJSVhvS2g3T2ZZOG1aelIzeWprejNpckxiNEhNdDlTV21qNVlCZmF4M0FtNDY1bnBLM3RpOWxOZFZaa1lVMmZRUGg0SC1mQSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJSaVg3RHpUeWpVUEdfTS1VT0x6MWxBIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFExTERFMU15d3lNRGdzTWpReUxESTFOQ3d5TXpZc01qTTFMRFEyTERJeU5Td3hNemdzTXprc01qSTJMREV4TWl3eE16UXNNVGc1TERFeE1DdzBOQ3d5TURJc01UZ3dMRGt6TERFME9Dd3lNRGdzTmpFc01UQTNMREV3TVN3eU1EVXNPRFFzTlRVc01UYzFMRGd3TERJMUxESXdOaXd5TURNc01qQXhMREkxTERJek9DdzJMRFl5TERFMU5pd3hNalFzTmpJc01qTTRMREV4TERJME9TdzROQ3c0TERFM05pdzJOeXd5TlRRc01UazFMREkwTlN3eE16UXNOaXd5TkRNc01qSTFMREUxT0N3eE5EUXNNVE0yTERFeU55d3hNVGdzTWpReUxEZzRMRGMyTERFME5pd3hOeXd5TWpBc01URTRMREkwTkN3NU55d3lORGdzTVRjekxERTRNU3c1T0N3Mk5pdzRMRFl4TERnMUxESTRMREV6TlN3MUxERTRPU3czT1N3eE1UTXNNVGM0TERFME9Dd3hNekFzTWpVekxERXlOQ3d6TkN3ME9Td3lORElzTWpVeUxERTFOaXd4TkRnc01UVXNOakVzTWpRMUxESXlNU3d5TURrc01USXpMREV3T0N3eE5qVXNNaklzTWpBMUxEWTNMREV5TXl3eE9EVXNNakF4TERnMkxERTNNQ3d4TUN3eE16UXNNVEExTERFNU5pd3hNak1zTWpVeUxERTJOeXd4TnpVc01qTTJMREUwT1N3M01DdzJOQ3d6TVN3eU1Td3lNREFzTVRNeUxESXlNeXd4TXpRc01qQTFMREU1TkN3ek1pdzFOQ3czTnl3eU1pdzJOeXd6TlN3NE55d3lNVFVzT0RZc01Ua3hMREl3Tnl3eE56UXNNakE1TERJMUxEZ3hMREl5TERBc016SXNORFFzTWpRM0xEZzVMRGcwTERJek5Td3hPVGNzTnpjc01UazNMREU0TERFek5pd3hNVFVzTVRnNExERXdMREl4T0N3eE9EQXNNalF6TERJeE1Dd3pOU3d4TXpnc01qQTFMREUyT1N3eE9Dd3pOeXcyTERBc09USXNNVGN3TERNNUxERTFOQ3d5TlRVc01UQTNMREkyTERFeU9Dd3lNallzTWpNd0xERTJNaXd4T1RJc01qQXhMREUwTWl3eE56WXNOVEFzTVRBNUxESTBPU3cwTWl3eE5EZ3NNakF6TERJeE1pd3lNRFlzTVRnNExEVTVMREV5TXl3eE5EQXNNVGt4TERrMExETTJMREUwTkN3eU5EUXNOVGtzTWpNNUxEUXNNVEV6TERNekxEUTVMRFkyTERNd0xESXdNeXc0TERjM0xERXlOU3d5TURrc01URXpMREkwTVN3eE1UZ3NOelFzTVRRMExEZ3lMREV3Tnl3NU15d3hOaXd5TWpFc05UQXNNak16TERFMU5TdzNOeXd4T0RJc01qQTJMREl6Tnl3NE9Dd3lMREUwTkN3eU16WXNNVGcyTERFME5Dd3lNek1zTXpZc01UUTJMREV5TERFMk1Dd3dMREU0Tml3eE9UY3NPRGNzTVRjMUxEUTVMREU1Tnl3Mk9Dd3lNVGdzTVRjMUxESXNNeXd4TERBc01RPT0iLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOiIxNTA3OTA1ODg2IiwiZXhwIjoiMTUwNzkwOTQ4NiIsImFsZyI6IlJTMjU2Iiwia2lkIjoiM2Y5OTUyNWNjM2EzM2UzYzJiNWRjZjlhMjFmNGQ4MmQzNzFiZTc2NyJ9fQ==', - expires: '1507909486' - } - }, - hypertyTo: { - hyperty: 'hyperty://localhost/9e1c674c-9374-491f-9812-4c3f31450951', - userID: undefined, - publicKey: undefined, - assertion: undefined - }, - keys: { - hypertyToSessionKey: undefined, - hypertyFromSessionKey: undefined, - hypertyToHashKey: undefined, - hypertyFromHashKey: undefined, - toRandom: undefined, - fromRandom: undefined, - premasterKey: undefined, - masterKey: undefined - }, - handshakeHistory: { - senderHello: undefined, - receiverHello: undefined, - senderCertificate: undefined, - receiverFinishedMessage: undefined - }, - initialMessage: { body: { value: 'Initial Message Value' } }, - callback: undefined, - authenticated: true, - dataObjectURL: 'comm://localhost/6c3b1310-28e2-43bf-bc1e-a4405a6733a2' -}; - -let encryptMessagePopulate = { - type: 'handshake', - to: 'hyperty://localhost/9e1c674c-9374-491f-9812-4c3f31450951', - from: 'hyperty://localhost/7339190f-056a-41e1-88ec-18f02146b5bb', - body: { - handshakePhase: 'senderHello', - value: - 'NDgsNDksNTIsNTAsMzksMTEsMjM5LDIxMSwxODQsMTg1LDE4NSwxNjEsMTQzLDE0NSwyMDEsMTA4LDg2LDIxNSwyNTUsMTUwLDIyMiw1MSwxNDUsMTQzLDEzMCwxNiwxNTYsMTY5LDMyLDIyNywzNSwyNw==', - identity: { - userProfile: undefined, - idp: 'google.com', - assertion: - 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqTm1PVGsxTWpWall6TmhNek5sTTJNeVlqVmtZMlk1WVRJeFpqUmtPREprTXpjeFltVTNOamNpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWxKcFdEZEVlbFI1YWxWUVIxOU5MVlZQVEhveGJFRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVVURk1SRVV4VFhsM2VVMUVaM05OYWxGNVRFUkpNVTVEZDNsTmVsbHpUV3BOTVV4RVVUSk1SRWw1VGxOM2VFMTZaM05OZW10elRXcEpNa3hFUlhoTmFYZDRUWHBSYzAxVVp6Vk1SRVY0VFVOM01FNURkM2xOUkVselRWUm5kMHhFYTNwTVJFVXdUME4zZVUxRVozTk9ha1Z6VFZSQk0weEVSWGROVTNkNVRVUlZjMDlFVVhOT1ZGVnpUVlJqTVV4RVozZE1SRWt4VEVSSmQwNXBkM2xOUkUxelRXcEJlRXhFU1RGTVJFbDZUME4zTWt4RVdYbE1SRVV4VG1sM2VFMXFVWE5PYWtselRXcE5ORXhFUlhoTVJFa3dUMU4zTkU1RGR6Uk1SRVV6VG1sM01rNTVkM2xPVkZGelRWUnJNVXhFU1RCT1UzZDRUWHBSYzA1cGQzbE9SRTF6VFdwSk1VeEVSVEZQUTNkNFRrUlJjMDFVVFRKTVJFVjVUbmwzZUUxVVozTk5hbEY1VEVSbk5FeEVZekpNUkVVd1RtbDNlRTU1ZDNsTmFrRnpUVlJGTkV4RVNUQk9RM2MxVG5sM2VVNUVaM05OVkdONlRFUkZORTFUZHpWUFEzY3lUbWwzTkV4RVdYaE1SR2N4VEVSSk5FeEVSWHBPVTNjeFRFUkZORTlUZHpOUFUzZDRUVlJOYzAxVVl6Uk1SRVV3VDBOM2VFMTZRWE5OYWxWNlRFUkZlVTVEZDNwT1EzY3dUMU4zZVU1RVNYTk5hbFY1VEVSRk1VNXBkM2hPUkdkelRWUlZjMDVxUlhOTmFsRXhURVJKZVUxVGQzbE5SR3R6VFZSSmVreEVSWGRQUTNkNFRtcFZjMDFxU1hOTmFrRXhURVJaTTB4RVJYbE5lWGQ0VDBSVmMwMXFRWGhNUkdjeVRFUkZNMDFEZDNoTlEzZDRUWHBSYzAxVVFURk1SRVUxVG1sM2VFMXFUWE5OYWxWNVRFUkZNazU1ZDNoT2VsVnpUV3BOTWt4RVJUQlBVM2N6VFVOM01rNURkM3BOVTNkNVRWTjNlVTFFUVhOTlZFMTVURVJKZVUxNWQzaE5lbEZ6VFdwQk1VeEVSVFZPUTNkNlRXbDNNVTVEZHpOT2VYZDVUV2wzTWs1NWQzcE9VM2MwVG5sM2VVMVVWWE5QUkZselRWUnJlRXhFU1hkT2VYZDRUbnBSYzAxcVFUVk1SRWt4VEVSbmVFeEVTWGxNUkVGelRYcEpjMDVFVVhOTmFsRXpURVJuTlV4RVp6Qk1SRWw2VGxOM2VFOVVZM05PZW1OelRWUnJNMHhFUlRSTVJFVjZUbWwzZUUxVVZYTk5WR2MwVEVSRmQweEVTWGhQUTNkNFQwUkJjMDFxVVhwTVJFbDRUVU4zZWs1VGQzaE5lbWR6VFdwQk1VeEVSVEpQVTNkNFQwTjNlazU1ZHpKTVJFRnpUMVJKYzAxVVkzZE1SRTAxVEVSRk1VNURkM2xPVkZWelRWUkJNMHhFU1RKTVJFVjVUME4zZVUxcVdYTk5hazEzVEVSRk1rMXBkM2hQVkVselRXcEJlRXhFUlRCTmFYZDRUbnBaYzA1VVFYTk5WRUUxVEVSSk1FOVRkekJOYVhkNFRrUm5jMDFxUVhwTVJFbDRUV2wzZVUxRVdYTk5WR2MwVEVSVk5VeEVSWGxOZVhkNFRrUkJjMDFVYTNoTVJHc3dURVJOTWt4RVJUQk9RM2Q1VGtSUmMwNVVhM05OYWswMVRFUlJjMDFVUlhwTVJFMTZURVJSTlV4RVdUSk1SRTEzVEVSSmQwMTVkelJNUkdNelRFUkZlVTVUZDNsTlJHdHpUVlJGZWt4RVNUQk5VM2Q0VFZSbmMwNTZVWE5OVkZFd1RFUm5lVXhFUlhkT2VYYzFUWGwzZUU1cGQzbE5ha1Z6VGxSQmMwMXFUWHBNUkVVeFRsTjNNMDU1ZDNoUFJFbHpUV3BCTWt4RVNYcE9lWGMwVDBOM2VVeEVSVEJPUTNkNVRYcFpjMDFVWnpKTVJFVXdUa04zZVUxNlRYTk5lbGx6VFZSUk1reEVSWGxNUkVVeVRVTjNkMHhFUlRST2FYZDRUMVJqYzA5RVkzTk5WR014VEVSUk5VeEVSVFZPZVhjeVQwTjNlVTFVWjNOTlZHTXhURVJKYzAxNWQzaE1SRUZ6VFZFOVBTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllXTmpiM1Z1ZEhNdVoyOXZaMnhsTG1OdmJTSXNJbWxoZENJNk1UVXdOemt3TlRnNE5pd2laWGh3SWpveE5UQTNPVEE1TkRnMmZRLktvU2xyeHp1RUthd1ZWcS1TdmNHNTRXZVladWpaS2ltd2JXV21td01UcUZjMVI1My1wMFRlbWVFdS1VT29NU3NydjA1bUxoV20zV3lfb1RKM3JKeWRPX3FQS1ptU3F3aENxeEVNNjRWajNDeHRTa1c0SUg5VmR3emlmYUxtakRIQk9NZ0Y5OUNLcTBCMkhVWVhwNXU3TXJDc1VrTC1LLXhnUVI4c185MzhiUXNSX085eHpILTluZFVVTjBCb09aQ0tCYm50WmZYdjZ5am9VeEZKdG10clVUWnpsUkZYbUtxWWQtVk9TYVZ3MURldlRDbzBjbjNrTXBtZ0E1Sk13aTZ5U2pEdE9TQzkwVjc1dDZJSVhvS2g3T2ZZOG1aelIzeWprejNpckxiNEhNdDlTV21qNVlCZmF4M0FtNDY1bnBLM3RpOWxOZFZaa1lVMmZRUGg0SC1mQSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJSaVg3RHpUeWpVUEdfTS1VT0x6MWxBIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFExTERFMU15d3lNRGdzTWpReUxESTFOQ3d5TXpZc01qTTFMRFEyTERJeU5Td3hNemdzTXprc01qSTJMREV4TWl3eE16UXNNVGc1TERFeE1DdzBOQ3d5TURJc01UZ3dMRGt6TERFME9Dd3lNRGdzTmpFc01UQTNMREV3TVN3eU1EVXNPRFFzTlRVc01UYzFMRGd3TERJMUxESXdOaXd5TURNc01qQXhMREkxTERJek9DdzJMRFl5TERFMU5pd3hNalFzTmpJc01qTTRMREV4TERJME9TdzROQ3c0TERFM05pdzJOeXd5TlRRc01UazFMREkwTlN3eE16UXNOaXd5TkRNc01qSTFMREUxT0N3eE5EUXNNVE0yTERFeU55d3hNVGdzTWpReUxEZzRMRGMyTERFME5pd3hOeXd5TWpBc01URTRMREkwTkN3NU55d3lORGdzTVRjekxERTRNU3c1T0N3Mk5pdzRMRFl4TERnMUxESTRMREV6TlN3MUxERTRPU3czT1N3eE1UTXNNVGM0TERFME9Dd3hNekFzTWpVekxERXlOQ3d6TkN3ME9Td3lORElzTWpVeUxERTFOaXd4TkRnc01UVXNOakVzTWpRMUxESXlNU3d5TURrc01USXpMREV3T0N3eE5qVXNNaklzTWpBMUxEWTNMREV5TXl3eE9EVXNNakF4TERnMkxERTNNQ3d4TUN3eE16UXNNVEExTERFNU5pd3hNak1zTWpVeUxERTJOeXd4TnpVc01qTTJMREUwT1N3M01DdzJOQ3d6TVN3eU1Td3lNREFzTVRNeUxESXlNeXd4TXpRc01qQTFMREU1TkN3ek1pdzFOQ3czTnl3eU1pdzJOeXd6TlN3NE55d3lNVFVzT0RZc01Ua3hMREl3Tnl3eE56UXNNakE1TERJMUxEZ3hMREl5TERBc016SXNORFFzTWpRM0xEZzVMRGcwTERJek5Td3hPVGNzTnpjc01UazNMREU0TERFek5pd3hNVFVzTVRnNExERXdMREl4T0N3eE9EQXNNalF6TERJeE1Dd3pOU3d4TXpnc01qQTFMREUyT1N3eE9Dd3pOeXcyTERBc09USXNNVGN3TERNNUxERTFOQ3d5TlRVc01UQTNMREkyTERFeU9Dd3lNallzTWpNd0xERTJNaXd4T1RJc01qQXhMREUwTWl3eE56WXNOVEFzTVRBNUxESTBPU3cwTWl3eE5EZ3NNakF6TERJeE1pd3lNRFlzTVRnNExEVTVMREV5TXl3eE5EQXNNVGt4TERrMExETTJMREUwTkN3eU5EUXNOVGtzTWpNNUxEUXNNVEV6TERNekxEUTVMRFkyTERNd0xESXdNeXc0TERjM0xERXlOU3d5TURrc01URXpMREkwTVN3eE1UZ3NOelFzTVRRMExEZ3lMREV3Tnl3NU15d3hOaXd5TWpFc05UQXNNak16TERFMU5TdzNOeXd4T0RJc01qQTJMREl6Tnl3NE9Dd3lMREUwTkN3eU16WXNNVGcyTERFME5Dd3lNek1zTXpZc01UUTJMREV5TERFMk1Dd3dMREU0Tml3eE9UY3NPRGNzTVRjMUxEUTVMREU1Tnl3Mk9Dd3lNVGdzTVRjMUxESXNNeXd4TERBc01RPT0iLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOiIxNTA3OTA1ODg2IiwiZXhwIjoiMTUwNzkwOTQ4NiIsImFsZyI6IlJTMjU2Iiwia2lkIjoiM2Y5OTUyNWNjM2EzM2UzYzJiNWRjZjlhMjFmNGQ4MmQzNzFiZTc2NyJ9fQ==', - expires: '1507909486' - }, - auth: false - }, - id: 12 -}; - -let senderHelloMessagePopulate = { - type: 'handshake', - to: 'hyperty://localhost/9e1c674c-9374-491f-9812-4c3f31450951', - from: 'hyperty://localhost/7339190f-056a-41e1-88ec-18f02146b5bb', - body: { - handshakePhase: 'senderHello', - value: - 'NDgsNDksNTIsNTAsMzksMTEsMjM5LDIxMSwxODQsMTg1LDE4NSwxNjEsMTQzLDE0NSwyMDEsMTA4LDg2LDIxNSwyNTUsMTUwLDIyMiw1MSwxNDUsMTQzLDEzMCwxNiwxNTYsMTY5LDMyLDIyNywzNSwyNw==', - identity: { - userProfile: undefined, - idp: 'google.com', - assertion: - 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqTm1PVGsxTWpWall6TmhNek5sTTJNeVlqVmtZMlk1WVRJeFpqUmtPREprTXpjeFltVTNOamNpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWxKcFdEZEVlbFI1YWxWUVIxOU5MVlZQVEhveGJFRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVVURk1SRVV4VFhsM2VVMUVaM05OYWxGNVRFUkpNVTVEZDNsTmVsbHpUV3BOTVV4RVVUSk1SRWw1VGxOM2VFMTZaM05OZW10elRXcEpNa3hFUlhoTmFYZDRUWHBSYzAxVVp6Vk1SRVY0VFVOM01FNURkM2xOUkVselRWUm5kMHhFYTNwTVJFVXdUME4zZVUxRVozTk9ha1Z6VFZSQk0weEVSWGROVTNkNVRVUlZjMDlFVVhOT1ZGVnpUVlJqTVV4RVozZE1SRWt4VEVSSmQwNXBkM2xOUkUxelRXcEJlRXhFU1RGTVJFbDZUME4zTWt4RVdYbE1SRVV4VG1sM2VFMXFVWE5PYWtselRXcE5ORXhFUlhoTVJFa3dUMU4zTkU1RGR6Uk1SRVV6VG1sM01rNTVkM2xPVkZGelRWUnJNVXhFU1RCT1UzZDRUWHBSYzA1cGQzbE9SRTF6VFdwSk1VeEVSVEZQUTNkNFRrUlJjMDFVVFRKTVJFVjVUbmwzZUUxVVozTk5hbEY1VEVSbk5FeEVZekpNUkVVd1RtbDNlRTU1ZDNsTmFrRnpUVlJGTkV4RVNUQk9RM2MxVG5sM2VVNUVaM05OVkdONlRFUkZORTFUZHpWUFEzY3lUbWwzTkV4RVdYaE1SR2N4VEVSSk5FeEVSWHBPVTNjeFRFUkZORTlUZHpOUFUzZDRUVlJOYzAxVVl6Uk1SRVV3VDBOM2VFMTZRWE5OYWxWNlRFUkZlVTVEZDNwT1EzY3dUMU4zZVU1RVNYTk5hbFY1VEVSRk1VNXBkM2hPUkdkelRWUlZjMDVxUlhOTmFsRXhURVJKZVUxVGQzbE5SR3R6VFZSSmVreEVSWGRQUTNkNFRtcFZjMDFxU1hOTmFrRXhURVJaTTB4RVJYbE5lWGQ0VDBSVmMwMXFRWGhNUkdjeVRFUkZNMDFEZDNoTlEzZDRUWHBSYzAxVVFURk1SRVUxVG1sM2VFMXFUWE5OYWxWNVRFUkZNazU1ZDNoT2VsVnpUV3BOTWt4RVJUQlBVM2N6VFVOM01rNURkM3BOVTNkNVRWTjNlVTFFUVhOTlZFMTVURVJKZVUxNWQzaE5lbEZ6VFdwQk1VeEVSVFZPUTNkNlRXbDNNVTVEZHpOT2VYZDVUV2wzTWs1NWQzcE9VM2MwVG5sM2VVMVVWWE5QUkZselRWUnJlRXhFU1hkT2VYZDRUbnBSYzAxcVFUVk1SRWt4VEVSbmVFeEVTWGxNUkVGelRYcEpjMDVFVVhOTmFsRXpURVJuTlV4RVp6Qk1SRWw2VGxOM2VFOVVZM05PZW1OelRWUnJNMHhFUlRSTVJFVjZUbWwzZUUxVVZYTk5WR2MwVEVSRmQweEVTWGhQUTNkNFQwUkJjMDFxVVhwTVJFbDRUVU4zZWs1VGQzaE5lbWR6VFdwQk1VeEVSVEpQVTNkNFQwTjNlazU1ZHpKTVJFRnpUMVJKYzAxVVkzZE1SRTAxVEVSRk1VNURkM2xPVkZWelRWUkJNMHhFU1RKTVJFVjVUME4zZVUxcVdYTk5hazEzVEVSRk1rMXBkM2hQVkVselRXcEJlRXhFUlRCTmFYZDRUbnBaYzA1VVFYTk5WRUUxVEVSSk1FOVRkekJOYVhkNFRrUm5jMDFxUVhwTVJFbDRUV2wzZVUxRVdYTk5WR2MwVEVSVk5VeEVSWGxOZVhkNFRrUkJjMDFVYTNoTVJHc3dURVJOTWt4RVJUQk9RM2Q1VGtSUmMwNVVhM05OYWswMVRFUlJjMDFVUlhwTVJFMTZURVJSTlV4RVdUSk1SRTEzVEVSSmQwMTVkelJNUkdNelRFUkZlVTVUZDNsTlJHdHpUVlJGZWt4RVNUQk5VM2Q0VFZSbmMwNTZVWE5OVkZFd1RFUm5lVXhFUlhkT2VYYzFUWGwzZUU1cGQzbE5ha1Z6VGxSQmMwMXFUWHBNUkVVeFRsTjNNMDU1ZDNoUFJFbHpUV3BCTWt4RVNYcE9lWGMwVDBOM2VVeEVSVEJPUTNkNVRYcFpjMDFVWnpKTVJFVXdUa04zZVUxNlRYTk5lbGx6VFZSUk1reEVSWGxNUkVVeVRVTjNkMHhFUlRST2FYZDRUMVJqYzA5RVkzTk5WR014VEVSUk5VeEVSVFZPZVhjeVQwTjNlVTFVWjNOTlZHTXhURVJKYzAxNWQzaE1SRUZ6VFZFOVBTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllXTmpiM1Z1ZEhNdVoyOXZaMnhsTG1OdmJTSXNJbWxoZENJNk1UVXdOemt3TlRnNE5pd2laWGh3SWpveE5UQTNPVEE1TkRnMmZRLktvU2xyeHp1RUthd1ZWcS1TdmNHNTRXZVladWpaS2ltd2JXV21td01UcUZjMVI1My1wMFRlbWVFdS1VT29NU3NydjA1bUxoV20zV3lfb1RKM3JKeWRPX3FQS1ptU3F3aENxeEVNNjRWajNDeHRTa1c0SUg5VmR3emlmYUxtakRIQk9NZ0Y5OUNLcTBCMkhVWVhwNXU3TXJDc1VrTC1LLXhnUVI4c185MzhiUXNSX085eHpILTluZFVVTjBCb09aQ0tCYm50WmZYdjZ5am9VeEZKdG10clVUWnpsUkZYbUtxWWQtVk9TYVZ3MURldlRDbzBjbjNrTXBtZ0E1Sk13aTZ5U2pEdE9TQzkwVjc1dDZJSVhvS2g3T2ZZOG1aelIzeWprejNpckxiNEhNdDlTV21qNVlCZmF4M0FtNDY1bnBLM3RpOWxOZFZaa1lVMmZRUGg0SC1mQSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJSaVg3RHpUeWpVUEdfTS1VT0x6MWxBIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFExTERFMU15d3lNRGdzTWpReUxESTFOQ3d5TXpZc01qTTFMRFEyTERJeU5Td3hNemdzTXprc01qSTJMREV4TWl3eE16UXNNVGc1TERFeE1DdzBOQ3d5TURJc01UZ3dMRGt6TERFME9Dd3lNRGdzTmpFc01UQTNMREV3TVN3eU1EVXNPRFFzTlRVc01UYzFMRGd3TERJMUxESXdOaXd5TURNc01qQXhMREkxTERJek9DdzJMRFl5TERFMU5pd3hNalFzTmpJc01qTTRMREV4TERJME9TdzROQ3c0TERFM05pdzJOeXd5TlRRc01UazFMREkwTlN3eE16UXNOaXd5TkRNc01qSTFMREUxT0N3eE5EUXNNVE0yTERFeU55d3hNVGdzTWpReUxEZzRMRGMyTERFME5pd3hOeXd5TWpBc01URTRMREkwTkN3NU55d3lORGdzTVRjekxERTRNU3c1T0N3Mk5pdzRMRFl4TERnMUxESTRMREV6TlN3MUxERTRPU3czT1N3eE1UTXNNVGM0TERFME9Dd3hNekFzTWpVekxERXlOQ3d6TkN3ME9Td3lORElzTWpVeUxERTFOaXd4TkRnc01UVXNOakVzTWpRMUxESXlNU3d5TURrc01USXpMREV3T0N3eE5qVXNNaklzTWpBMUxEWTNMREV5TXl3eE9EVXNNakF4TERnMkxERTNNQ3d4TUN3eE16UXNNVEExTERFNU5pd3hNak1zTWpVeUxERTJOeXd4TnpVc01qTTJMREUwT1N3M01DdzJOQ3d6TVN3eU1Td3lNREFzTVRNeUxESXlNeXd4TXpRc01qQTFMREU1TkN3ek1pdzFOQ3czTnl3eU1pdzJOeXd6TlN3NE55d3lNVFVzT0RZc01Ua3hMREl3Tnl3eE56UXNNakE1TERJMUxEZ3hMREl5TERBc016SXNORFFzTWpRM0xEZzVMRGcwTERJek5Td3hPVGNzTnpjc01UazNMREU0TERFek5pd3hNVFVzTVRnNExERXdMREl4T0N3eE9EQXNNalF6TERJeE1Dd3pOU3d4TXpnc01qQTFMREUyT1N3eE9Dd3pOeXcyTERBc09USXNNVGN3TERNNUxERTFOQ3d5TlRVc01UQTNMREkyTERFeU9Dd3lNallzTWpNd0xERTJNaXd4T1RJc01qQXhMREUwTWl3eE56WXNOVEFzTVRBNUxESTBPU3cwTWl3eE5EZ3NNakF6TERJeE1pd3lNRFlzTVRnNExEVTVMREV5TXl3eE5EQXNNVGt4TERrMExETTJMREUwTkN3eU5EUXNOVGtzTWpNNUxEUXNNVEV6TERNekxEUTVMRFkyTERNd0xESXdNeXc0TERjM0xERXlOU3d5TURrc01URXpMREkwTVN3eE1UZ3NOelFzTVRRMExEZ3lMREV3Tnl3NU15d3hOaXd5TWpFc05UQXNNak16TERFMU5TdzNOeXd4T0RJc01qQTJMREl6Tnl3NE9Dd3lMREUwTkN3eU16WXNNVGcyTERFME5Dd3lNek1zTXpZc01UUTJMREV5TERFMk1Dd3dMREU0Tml3eE9UY3NPRGNzTVRjMUxEUTVMREU1Tnl3Mk9Dd3lNVGdzTVRjMUxESXNNeXd4TERBc01RPT0iLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOiIxNTA3OTA1ODg2IiwiZXhwIjoiMTUwNzkwOTQ4NiIsImFsZyI6IlJTMjU2Iiwia2lkIjoiM2Y5OTUyNWNjM2EzM2UzYzJiNWRjZjlhMjFmNGQ4MmQzNzFiZTc2NyJ9fQ==', - expires: '1507909486' - }, - auth: false - }, - id: 12 -}; - -let receiverHelloMessagePopulate = { - type: 'handshake', - to: 'hyperty://localhost/7339190f-056a-41e1-88ec-18f02146b5bb', - from: 'hyperty://localhost/9e1c674c-9374-491f-9812-4c3f31450951', - body: { - handshakePhase: 'receiverHello', - value: - 'NDgsNTAsNTIsNTEsMTUwLDI1MSwzNywxMjMsMzksMjgsNDgsMjksMTE1LDI0NSw5MSwxNDAsNTEsMTM3LDE3MSwyMDUsMTI0LDg3LDE1Myw0MSwyMDIsNzcsOTAsMTg2LDIwNSwxODUsMzMsODA=', - identity: { - userProfile: undefined, - idp: 'google.com', - assertion: - 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqTm1PVGsxTWpWall6TmhNek5sTTJNeVlqVmtZMlk1WVRJeFpqUmtPREprTXpjeFltVTNOamNpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TURNeE5UUTBPVEUzTVRFeU56VXhNall6TkRJaUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhek15TVVCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWtWTGFrcG9URzUyUW5sS2IyZHdiVnB5TVZGQ01FRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVozbE1SRlY2VEVSSk1VNURkekpPZVhkNFRYcFJjMDFVYTNoTVJFVjVUbE4zTUU1cGQzbE9hWGQ0VFhwbmMwMVVUWHBNUkVWNVRFUkZNRTU1ZDNoUFJGbHpUVlJCZWt4RVdYcE1SR3N4VEVSVmMwMVVaM3BNUkVVd1RFUkZlVTVEZHpKUFEzZDRUbnBOYzAxNlFYTk9hbXR6VFZSQmQweEVSVEpOUTNkNFRtcE5jMDFVVlROTVJHc3hURVJGTkUxNWR6Uk9lWGQ0VDBSSmMwMVVXWGxNUkVVMFRXbDNlVTE2VFhOTlZFMHdURVJGZWs1NWQzcE9RM2Q0VFdwWmMwMVVXVEpNUkVVeFRXbDNlRTFxWTNOT1ZFbHpUVlJuTlV4RVNYcFBVM2Q1VFZSVmMwMXFRWGxNUkVsM1QxTjNlRTVFV1hOUFJGRnpUVlJGTUV4RVJYcE9RM2Q1VFVSWmMwNTZZM05OVkZGNFRFUkZkMDFEZHpOTmFYZDRUbnBKYzAxVVkzZE1SRVV6VDBOM2VFMUVRWE5OYWtFeFRFUlZlRXhFU1hoTlUzY3pUa04zZVUxNmEzTlBWR3R6VFZSbmVFeEVRWE5OZW1kelQxUlZjMDFVWXpWTVJFbHpUME4zZUU5RVkzTk5WRUYzVEVSRk0wMXBkM2xPUkdkelRWUm5lRXhFUlRCT1EzY3dUVk4zTTA1RGR6Sk9VM2Q2VDBOM2VVNVVVWE5OZWsxelRWUk5NRXhFUlRGUFUzY3pUa04zTWs5VGQzbE9SRlZ6VGtOM2VFMXFhM05QVkd0elRWUlpNa3hFU1RCUFEzY3dUMU4zZUU5RVRYTk5WRUV6VEVSRmVrMVRkM3BOVTNkNFRXcEJjMDFVWXpSTVJFVjNUV2wzZVUxcVJYTk5ha0V6VEVSSmVrNURkM2hQUkZselRWUlpORXhFUlRGT2FYYzBUVU4zTVU1NWQzcE5RM2Q0VDBSQmMwMXFTWGhNUkVrd1RXbDNlVTE2V1hOTlZFVjZURVJGTTAxcGQzbE9WRWx6VFZSUk1VeEVSWGxNUkZFeVRFUlpNa3hFUlhoT2FYZDVUVlJOYzAxcVJUQk1SRlV5VEVSSmQwMTVkM2xOYWtGelRWUkplVXhFVlRWTVJFazBURVJKTUV4RVozcE1SRkUwVEVSTk0weEVXWE5OVkd0elRWUlJkMHhFUlRST2VYZDRUbXBWYzAxVVNYTk5WR016VEVSSmVrNURkM2hPUkZselRWUmpORXhFUlROTmVYZDVUVlJWYzA5VWEzTk5WRWt4VEVSSk1VMXBkM2hOVkZWelRXcE5OVXhFU1hkT1EzZDVUa1JyYzAxNmEzTk9SRlZ6VFZSWmMwOVVVWE5OVkUxNVRFUm5NMHhFUlRWT1UzYzFUVk4zTUU1RGQzaFBWRlZ6VFZSSk1FeEVaekZNUkVsNFRsTjNlRTE2WjNOTmFsVjNURVJGZUU1VGQzaE5la0Z6VFZSRmMwMXFVVFJNUkVWNlRWTjNlRTVEZDNoTmFsRnpUbXBWYzAxVVl6Rk1SRWt4VFdsM2VVMXFVWE5OVkdzelRFUm5jMDFVVFhoTVJGVTBURVJGZDAxNWR6Qk5lWGQ1VGxSVmMwMVVhM2xNUkVsM1QxTjNlRTlVWjNOTmFrbDVURVJGTlUxcGQzbE5WR056VFdwVmVFeEVSVFJOYVhjeFQwTjNlRTFxVVhOTmVtZHpUVlJWZDB4RWF6Rk1SRUZ6VFZSUmMwNVVRWE5OZWtWelRWUnJkMHhFUlRKTVJFVXpUbE4zZUU1RGQzaE5lbXR6VFZSbmVFeEVSWE5OYWxFeVRFUm5ORXhFUlhkUFEzY3hUbmwzZVU1RVozTlBSRUZ6VFZSak1reEVSVFZPZVhkNFRsUk5jMDFxUlhkTVJFazFURVJGTlU1NWQzcE9VM2Q1VG1sM2VFMUVXWE5PVkVGelRWUnJjMDlFWTNOT2VtZHpUV3BKTWt4RVJYZE9VM2Q0VFdwRmMwOVVTWE5OYWtFeVRFUkZkMDVwZDNsTmFYZDRUMFJOYzA1cVdYTk5WRUV6VEVSWk1reEVaM05OVkdOM1RFUkZlVTU1ZDNsTmFtZHpUbnBaYzAxcVNUUk1SRWswVEVSSmVrMURkM3BOYVhkNVRXcGpjMDFVVVhwTVJFVTFUMU4zZVV4RVRYTk5VM2QzVEVSRlBTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllXTmpiM1Z1ZEhNdVoyOXZaMnhsTG1OdmJTSXNJbWxoZENJNk1UVXdOemt3TlRjNE9Td2laWGh3SWpveE5UQTNPVEE1TXpnNWZRLm40cVdaOUxEMmo2RFJNempyMGZhaGt3YzUzN2tGbEl5bjFOaC1oc0htRGtQdUhFbzAyUnVabm5QX0R6Qzl4aW5abE5GaUo3OE5QNHd4S20zXzFMUzE1Q2VmVnJtY2VsVjd3bGotd21jU1JxR2hiRldZOWJ2eHVJQ0Rfc0VfV1B3djNRRFRZRDdsLVJiOW1MYVhzcF93eXc0Z0k0cFFMczNWd0xpeFJHM0xFY003QzJpQTMwUXFYTkJuQ3pISDBINGhKQ3dUWHQtYThxdlZxemlkU1d0bG1nNWFweDk4cnZOVGVvS1ZPZmNVdUtSVUpqWFVpeHpjbkhXMlcweUJPWXJ6WF93UEt6UzVIYmJJQVBFQmZfZlZqSnI4eEVGcEMzTnphZk1rU1ZETXlIbmt5d3g3U1ItNDRXRVNCekdqM3lCZWRfeW9Idnh3Y29sVU5ZTW1kamxFQSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjEwMzE1NDQ5MTcxMTI3NTEyNjM0MiIsImVtYWlsIjoidGVzdGFuZHRoaW5rMzIxQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJFS2pKaExudkJ5Sm9ncG1acjFRQjBBIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVGd5TERVekxESTFOQ3cyTnl3eE16UXNNVGt4TERFeU5TdzBOaXd5Tml3eE16Z3NNVE16TERFeUxERTBOeXd4T0RZc01UQXpMRFl6TERrMUxEVXNNVGd6TERFMExERXlOQ3cyT0N3eE56TXNNekFzTmprc01UQXdMREUyTUN3eE5qTXNNVFUzTERrMUxERTRNeXc0Tnl3eE9ESXNNVFl5TERFNE1pd3lNek1zTVRNMExERXpOeXd6TkN3eE1qWXNNVFkyTERFMU1pd3hNamNzTlRJc01UZzVMREl6T1N3eU1UVXNNakF5TERJd09Td3hORFlzT0RRc01URTBMREV6TkN3eU1EWXNOemNzTVRReExERXdNQ3czTWl3eE56SXNNVGN3TERFM09Dd3hNREFzTWpBMUxEVXhMREl4TVN3M05Dd3lNemtzT1Rrc01UZ3hMREFzTXpnc09UVXNNVGM1TERJc09Dd3hPRGNzTVRBd0xERTNNaXd5TkRnc01UZ3hMREUwTkN3ME1TdzNOQ3cyTlN3ek9Dd3lOVFFzTXpNc01UTTBMREUxT1N3M05DdzJPU3d5TkRVc05Dd3hNamtzT1Rrc01UWTJMREkwT0N3ME9Td3hPRE1zTVRBM0xERXpNU3d6TVN3eE1qQXNNVGM0TERFd01pd3lNakVzTWpBM0xESXpOQ3d4T0RZc01UWTRMREUxTml3NE1DdzFOeXd6TUN3eE9EQXNNakl4TERJME1pd3lNellzTVRFekxERTNNaXd5TlRJc01UUTFMREV5TERRMkxEWTJMREV4Tml3eU1UTXNNakUwTERVMkxESXdNeXd5TWpBc01USXlMRFU1TERJNExESTBMRGd6TERRNExETTNMRFlzTVRrc01UUXdMREU0Tnl3eE5qVXNNVElzTVRjM0xESXpOQ3d4TkRZc01UYzRMREUzTXl3eU1UVXNPVGtzTVRJMUxESTFNaXd4TVRVc01qTTVMREl3TkN3eU5Ea3NNemtzTkRVc01UWXNPVFFzTVRNeUxEZzNMREU1TlN3NU1TdzBOQ3d4T1RVc01USTBMRGcxTERJeE5Td3hNemdzTWpVd0xERXhOU3d4TXpBc01URXNNalE0TERFek1Td3hOQ3d4TWpRc05qVXNNVGMxTERJMU1pd3lNalFzTVRrM0xEZ3NNVE14TERVNExERXdNeXcwTXl3eU5UVXNNVGt5TERJd09Td3hPVGdzTWpJeUxERTVNaXd5TVRjc01qVXhMREU0TWl3MU9Dd3hNalFzTXpnc01UVXdMRGsxTERBc01UUXNOVEFzTXpFc01Ua3dMREUyTERFM05Td3hOQ3d4TXprc01UZ3hMREVzTWpRMkxEZzRMREV3T0N3MU55d3lORGdzT0RBc01UYzJMREU1Tnl3eE5UTXNNakV3TERJNUxERTVOeXd6TlN3eU5pd3hNRFlzTlRBc01Ua3NPRGNzTnpnc01qSTJMREV3TlN3eE1qRXNPVElzTWpBMkxERXdOaXd5TWl3eE9ETXNOallzTVRBM0xEWTJMRGdzTVRjd0xERXlOeXd5TWpnc056WXNNakk0TERJNExESXpNQ3d6TWl3eU1qY3NNVFF6TERFNU9Td3lMRE1zTVN3d0xERT0iLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOiIxNTA3OTA1Nzg5IiwiZXhwIjoiMTUwNzkwOTM4OSIsImFsZyI6IlJTMjU2Iiwia2lkIjoiM2Y5OTUyNWNjM2EzM2UzYzJiNWRjZjlhMjFmNGQ4MmQzNzFiZTc2NyJ9fQ==', - expires: '1507909389' - }, - auth: false, - via: 'runtime://localhost/protostub/6697977f-9776-c8b8-ec3d-8269f0e65536' - }, - id: 5 -}; - -let senderCertificateMessagePopulate = { - type: 'handshake', - to: 'hyperty://localhost/9e1c674c-9374-491f-9812-4c3f31450951', - from: 'hyperty://localhost/7339190f-056a-41e1-88ec-18f02146b5bb', - body: { - handshakePhase: 'senderCertificate', - value: - 'eyJpdiI6Ik1UZzBMREl6Tml3eU1EY3NNakVzTVRjM0xESXpOeXcwTXl3eE9EQXNNVE14TERZeUxESXdMREUxTERJMU5TdzNOeXd5TlRVc05UYz0iLCJoYXNoIjoiTVRVMExERTBNaXd5TkRNc05EUXNNVElzTVRrNUxETTVMREUwTml3eE1qY3NNVGsxTERJeE1pdzVNaXd6TUN3eE9UY3NNVGM1TERFM01Td3hORFVzTWpFNUxERXlNU3d5TlRNc01qVXlMREUyT0N3MU1pdzRNQ3c0TlN3eE1UQXNORGdzTnpNc05EQXNOekVzTXpBc09ETT0iLCJzeW1ldHJpY0VuY3J5cHRpb24iOiJOalFzTVRVM0xERXpNeXcyTERFMU1Td3hNak1zTVRZNUxERTFPU3czTlN3ek9Dd3hOallzTmpRc01qSXhMREU1TVN3ek9Td3hOems9IiwiYXNzeW1ldHJpY0VuY3J5cHRpb24iOiJPRElzTnpRc01UY3dMREk0TERJME55dzFOQ3d5TXpVc01UVTJMREV3T0N3eE5qQXNNVEF4TERFMk1pd3hNemNzTVRReUxERTJNaXd5TkN3eE5USXNNelFzTXpnc01qVXpMREUxTXl3eE1UWXNOVGNzTWpNMkxERTVPU3cxTkN3eE9Dd3pOaXczTml3eU1EUXNNelFzTWpJd0xERXlNQ3d4TWpJc01UZ3NNalV6TERFNU5pd3lNRFFzTVRVNUxEVTVMREUyTUN3eE1qZ3NNak0zTERneExEa3hMREU0TlN3eE9EZ3NNVGd4TERJeE1Dd3hOVFlzTkRJc01USXdMREkxTERFMk15dzNNeXcyT0N3MU15d3hOeklzTWpFMkxESTBNU3d4TURJc09ERXNPREFzTVRFc01URTFMREUzTXl3Mk1pd3lNamdzTWpJeUxEVXhMREl3TVN3NU5Dd3lOVE1zT0RFc01qa3NPU3d5TWpjc016TXNOelFzTWpNNUxESTFNU3d5TWpJc05qY3NOVFFzTWpBMUxERTBNQ3c0TVN3eE5EWXNORE1zTmpnc01qVXpMREV6TERFeE1Td3hNakFzTWpVc01UazJMRGd4TERNMUxEZzBMREl5Tnl3eU5EZ3NOREFzTVRRc01USTFMREl5TUN3eU1EVXNNVGMzTERFeExEa3dMREUwTnl3MUxESXlNaXd5TWpjc01UQTJMREUzTXl3eE5Ea3NNVEkzTERjeExERXpOU3d4T1Rrc01UUTVMREUzT1N3eE9USXNNakU0TERJeE9Td3hPRGdzTVRVc01qa3NNVGM0TERJd055dzFOQ3d5Tml3eU1qWXNNalE1TERFek5pd3hOVGdzTXpnc01qRTVMRGcyTERFd01TdzROaXd5TkRJc09UZ3NNVGc1TERZeExERTBNeXd5TXpZc01UWXNOaXczTkN3eU16RXNNVFF4TERFME1Dd3hORGNzTWpFM0xESXhNeXd5T1N3eE1pd3lNellzTVRJMUxERXlMRFFzTnpVc05TdzVPU3d4Tnl3eE1pd3hOak1zTVRRMkxERTFNU3d5TVRZc01qQTBMRFkyTERNc01qQXdMREU1Tml3eE16WXNNVEU1TERFeE5Td3lOVFFzTWpFeUxEUTJMREUyTERFNE9TdzBPU3d4TURNc01UYzVMREl5TlN3eU5EWXNNVGcxTERJME55d3hPRFFzTWpFekxESXhOU3czTkN3eE5EUXNNekFzTVRNeExESXlOU3d5TXpFc05qVXNNVFl4TERFNE1Td3lNVElzTVRVMUxEYzBMREU1TERFMU9Td3lNRE1zTVRjM0xERTJPQ3d3TERFeE5DdzVNaXd4T1Rnc01UUTFMREU0TkN3eU1UZ3NOalVzTnpVc09UVXNNVEV4TERFeE9Dd3hORGNzTWpVMUxEY3NNVGt3TERZM0xERTJNU3d4TlRjc01UVTRMREUzTkN3eU1USXNNalV6TERRNExEUTVMREUwTnl3eE9USXNPVFFzTWpFMkxESXdNeXc0T0N3eE1qZ3NOalFzTVRnd0xEZzJMREl6T0N3eE5qSXNPVFVzTVRNeUxEZzFMREUzTVN3ME9TdzJNaXcwT1N3eiIsInNpZ25hdHVyZSI6Ik9ETXNNak16TERjd0xEYzVMRGM0TERFMk1Td3hNRGdzTmpFc01UUXdMREl6T0N3NU5pd3pNQ3d4T1RFc01UQXhMREV3TkN3eE5qZ3NNVEkyTERFNU5Td3lNRGtzTVRVMkxERTVPQ3d4TVRZc01URXNNak13TERZekxERTJNU3d4TnpNc01qSXlMREU1TERFM05Td3lNak1zT0Rjc01qVXlMRFl3TERFNE9Dd3hORGNzTVRVeUxESXlOeXcxTWl3eU5pd3lPQ3d4TlRJc05Td3hOemdzTVRBNUxERXhOQ3d4TWpZc01UZ3pMREU0T0N3NU5Td3lNelVzTXpNc01UVXNPVElzTVRReUxERTRNeXd4TnpVc01qRTJMREVzTVRVMkxERTBPQ3c0T1N3ek5pd3lNemNzTWpFeExERXpNQ3d4Tnl3eU5ESXNNVGMyTERFM0xERTRNaXd5TWpjc01UTXNNVE0wTERJek1Td3hNekFzTVRNNExEVTRMRGtzTWpVd0xEVTNMREkxTkN3eE1qQXNNVFV6TERReUxESTBMREV6TVN3eU9Dd3lMREl4TUN3eU1qSXNOakFzTWpJM0xERTNNaXd5TXpFc056VXNNVEkwTERZNExESXlOaXd4TnpBc01qUTBMREV5TlN3eU5EUXNOek1zT1RVc01qUXhMREV5TVN3eE56Z3NNelVzTWpFMExEVTRMRE0xTERFM0xEYzJMRGM1TERFNE5TdzFNU3d6T1N3eU5ETXNNalV6TERFM09Td3hORGtzTWpNMkxESXhOeXd5TVRnc01USTNMRE13TERZekxERTJNU3d4TURJc01UYzJMREV4T0N3eE5Dd3lNelFzTXpBc01UZ3hMRGdzTXprc056RXNPRGdzTVRFeUxEUXlMRElzTVRNeExEa3lMRGsyTERFNU9Dd3hPRGdzTXpJc05EVXNNak00TERZMExERTJNQ3d4T0Rrc01USTJMREl6TkN3M015d3pPQ3d4TVRRc056a3NNVFU1TERJMExESXdOeXd5TURJc01qSXhMRGsyTERJd09Td3hPREVzT0RZc05UY3NNVE13TERFd05pd3lOVElzTVRBd0xEQXNNVE15TERReExEWXdMREV6TlN3eE5qSXNOemtzTWpRekxESXhOU3cyT1N3NE1Td3hOREVzTWpnc01qQTRMREUzTUN3eU5UUXNNVEkzTERJd01Td3hORE1zTVRVMExERXlOaXd4TkRRc05USXNNVEE1TERFek5Td3hNREVzTmprc01qSXpMRGMzTERFM055dzNPU3d4TlN3eE5EUXNOVFVzTWpNMkxERXpOaXd4TXpBc016RXNNVGt6TERJMU5TdzFOeXd4TkN3eU5EWXNNVEk1TERZMExETTNMREUxTkN3eE1qY3NNeXd4TlRRc01qQXhMREl4Tml3eU1qQXNNVGd3TERjM0xESTBPU3d4T0RVc01Td3pPQ3d4TURVc01qUTJMRGd6TERFMk15d3pNQ3d4TmpVc01UTTBMREV4Tml3eE1Dd3lOQ3d4T0RNc01UY3dMREV6TERVd0xERTBPQ3d5TlRBc056TXNNVGN6TERjNUxESXlNU3d4TVRBc01URXdMRFV6In0=', - identity: { - userProfile: undefined, - idp: 'google.com', - assertion: - 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqTm1PVGsxTWpWall6TmhNek5sTTJNeVlqVmtZMlk1WVRJeFpqUmtPREprTXpjeFltVTNOamNpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWxKcFdEZEVlbFI1YWxWUVIxOU5MVlZQVEhveGJFRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVVURk1SRVV4VFhsM2VVMUVaM05OYWxGNVRFUkpNVTVEZDNsTmVsbHpUV3BOTVV4RVVUSk1SRWw1VGxOM2VFMTZaM05OZW10elRXcEpNa3hFUlhoTmFYZDRUWHBSYzAxVVp6Vk1SRVY0VFVOM01FNURkM2xOUkVselRWUm5kMHhFYTNwTVJFVXdUME4zZVUxRVozTk9ha1Z6VFZSQk0weEVSWGROVTNkNVRVUlZjMDlFVVhOT1ZGVnpUVlJqTVV4RVozZE1SRWt4VEVSSmQwNXBkM2xOUkUxelRXcEJlRXhFU1RGTVJFbDZUME4zTWt4RVdYbE1SRVV4VG1sM2VFMXFVWE5PYWtselRXcE5ORXhFUlhoTVJFa3dUMU4zTkU1RGR6Uk1SRVV6VG1sM01rNTVkM2xPVkZGelRWUnJNVXhFU1RCT1UzZDRUWHBSYzA1cGQzbE9SRTF6VFdwSk1VeEVSVEZQUTNkNFRrUlJjMDFVVFRKTVJFVjVUbmwzZUUxVVozTk5hbEY1VEVSbk5FeEVZekpNUkVVd1RtbDNlRTU1ZDNsTmFrRnpUVlJGTkV4RVNUQk9RM2MxVG5sM2VVNUVaM05OVkdONlRFUkZORTFUZHpWUFEzY3lUbWwzTkV4RVdYaE1SR2N4VEVSSk5FeEVSWHBPVTNjeFRFUkZORTlUZHpOUFUzZDRUVlJOYzAxVVl6Uk1SRVV3VDBOM2VFMTZRWE5OYWxWNlRFUkZlVTVEZDNwT1EzY3dUMU4zZVU1RVNYTk5hbFY1VEVSRk1VNXBkM2hPUkdkelRWUlZjMDVxUlhOTmFsRXhURVJKZVUxVGQzbE5SR3R6VFZSSmVreEVSWGRQUTNkNFRtcFZjMDFxU1hOTmFrRXhURVJaTTB4RVJYbE5lWGQ0VDBSVmMwMXFRWGhNUkdjeVRFUkZNMDFEZDNoTlEzZDRUWHBSYzAxVVFURk1SRVUxVG1sM2VFMXFUWE5OYWxWNVRFUkZNazU1ZDNoT2VsVnpUV3BOTWt4RVJUQlBVM2N6VFVOM01rNURkM3BOVTNkNVRWTjNlVTFFUVhOTlZFMTVURVJKZVUxNWQzaE5lbEZ6VFdwQk1VeEVSVFZPUTNkNlRXbDNNVTVEZHpOT2VYZDVUV2wzTWs1NWQzcE9VM2MwVG5sM2VVMVVWWE5QUkZselRWUnJlRXhFU1hkT2VYZDRUbnBSYzAxcVFUVk1SRWt4VEVSbmVFeEVTWGxNUkVGelRYcEpjMDVFVVhOTmFsRXpURVJuTlV4RVp6Qk1SRWw2VGxOM2VFOVVZM05PZW1OelRWUnJNMHhFUlRSTVJFVjZUbWwzZUUxVVZYTk5WR2MwVEVSRmQweEVTWGhQUTNkNFQwUkJjMDFxVVhwTVJFbDRUVU4zZWs1VGQzaE5lbWR6VFdwQk1VeEVSVEpQVTNkNFQwTjNlazU1ZHpKTVJFRnpUMVJKYzAxVVkzZE1SRTAxVEVSRk1VNURkM2xPVkZWelRWUkJNMHhFU1RKTVJFVjVUME4zZVUxcVdYTk5hazEzVEVSRk1rMXBkM2hQVkVselRXcEJlRXhFUlRCTmFYZDRUbnBaYzA1VVFYTk5WRUUxVEVSSk1FOVRkekJOYVhkNFRrUm5jMDFxUVhwTVJFbDRUV2wzZVUxRVdYTk5WR2MwVEVSVk5VeEVSWGxOZVhkNFRrUkJjMDFVYTNoTVJHc3dURVJOTWt4RVJUQk9RM2Q1VGtSUmMwNVVhM05OYWswMVRFUlJjMDFVUlhwTVJFMTZURVJSTlV4RVdUSk1SRTEzVEVSSmQwMTVkelJNUkdNelRFUkZlVTVUZDNsTlJHdHpUVlJGZWt4RVNUQk5VM2Q0VFZSbmMwNTZVWE5OVkZFd1RFUm5lVXhFUlhkT2VYYzFUWGwzZUU1cGQzbE5ha1Z6VGxSQmMwMXFUWHBNUkVVeFRsTjNNMDU1ZDNoUFJFbHpUV3BCTWt4RVNYcE9lWGMwVDBOM2VVeEVSVEJPUTNkNVRYcFpjMDFVWnpKTVJFVXdUa04zZVUxNlRYTk5lbGx6VFZSUk1reEVSWGxNUkVVeVRVTjNkMHhFUlRST2FYZDRUMVJqYzA5RVkzTk5WR014VEVSUk5VeEVSVFZPZVhjeVQwTjNlVTFVWjNOTlZHTXhURVJKYzAxNWQzaE1SRUZ6VFZFOVBTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllXTmpiM1Z1ZEhNdVoyOXZaMnhsTG1OdmJTSXNJbWxoZENJNk1UVXdOemt3TlRnNE5pd2laWGh3SWpveE5UQTNPVEE1TkRnMmZRLktvU2xyeHp1RUthd1ZWcS1TdmNHNTRXZVladWpaS2ltd2JXV21td01UcUZjMVI1My1wMFRlbWVFdS1VT29NU3NydjA1bUxoV20zV3lfb1RKM3JKeWRPX3FQS1ptU3F3aENxeEVNNjRWajNDeHRTa1c0SUg5VmR3emlmYUxtakRIQk9NZ0Y5OUNLcTBCMkhVWVhwNXU3TXJDc1VrTC1LLXhnUVI4c185MzhiUXNSX085eHpILTluZFVVTjBCb09aQ0tCYm50WmZYdjZ5am9VeEZKdG10clVUWnpsUkZYbUtxWWQtVk9TYVZ3MURldlRDbzBjbjNrTXBtZ0E1Sk13aTZ5U2pEdE9TQzkwVjc1dDZJSVhvS2g3T2ZZOG1aelIzeWprejNpckxiNEhNdDlTV21qNVlCZmF4M0FtNDY1bnBLM3RpOWxOZFZaa1lVMmZRUGg0SC1mQSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJSaVg3RHpUeWpVUEdfTS1VT0x6MWxBIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFExTERFMU15d3lNRGdzTWpReUxESTFOQ3d5TXpZc01qTTFMRFEyTERJeU5Td3hNemdzTXprc01qSTJMREV4TWl3eE16UXNNVGc1TERFeE1DdzBOQ3d5TURJc01UZ3dMRGt6TERFME9Dd3lNRGdzTmpFc01UQTNMREV3TVN3eU1EVXNPRFFzTlRVc01UYzFMRGd3TERJMUxESXdOaXd5TURNc01qQXhMREkxTERJek9DdzJMRFl5TERFMU5pd3hNalFzTmpJc01qTTRMREV4TERJME9TdzROQ3c0TERFM05pdzJOeXd5TlRRc01UazFMREkwTlN3eE16UXNOaXd5TkRNc01qSTFMREUxT0N3eE5EUXNNVE0yTERFeU55d3hNVGdzTWpReUxEZzRMRGMyTERFME5pd3hOeXd5TWpBc01URTRMREkwTkN3NU55d3lORGdzTVRjekxERTRNU3c1T0N3Mk5pdzRMRFl4TERnMUxESTRMREV6TlN3MUxERTRPU3czT1N3eE1UTXNNVGM0TERFME9Dd3hNekFzTWpVekxERXlOQ3d6TkN3ME9Td3lORElzTWpVeUxERTFOaXd4TkRnc01UVXNOakVzTWpRMUxESXlNU3d5TURrc01USXpMREV3T0N3eE5qVXNNaklzTWpBMUxEWTNMREV5TXl3eE9EVXNNakF4TERnMkxERTNNQ3d4TUN3eE16UXNNVEExTERFNU5pd3hNak1zTWpVeUxERTJOeXd4TnpVc01qTTJMREUwT1N3M01DdzJOQ3d6TVN3eU1Td3lNREFzTVRNeUxESXlNeXd4TXpRc01qQTFMREU1TkN3ek1pdzFOQ3czTnl3eU1pdzJOeXd6TlN3NE55d3lNVFVzT0RZc01Ua3hMREl3Tnl3eE56UXNNakE1TERJMUxEZ3hMREl5TERBc016SXNORFFzTWpRM0xEZzVMRGcwTERJek5Td3hPVGNzTnpjc01UazNMREU0TERFek5pd3hNVFVzTVRnNExERXdMREl4T0N3eE9EQXNNalF6TERJeE1Dd3pOU3d4TXpnc01qQTFMREUyT1N3eE9Dd3pOeXcyTERBc09USXNNVGN3TERNNUxERTFOQ3d5TlRVc01UQTNMREkyTERFeU9Dd3lNallzTWpNd0xERTJNaXd4T1RJc01qQXhMREUwTWl3eE56WXNOVEFzTVRBNUxESTBPU3cwTWl3eE5EZ3NNakF6TERJeE1pd3lNRFlzTVRnNExEVTVMREV5TXl3eE5EQXNNVGt4TERrMExETTJMREUwTkN3eU5EUXNOVGtzTWpNNUxEUXNNVEV6TERNekxEUTVMRFkyTERNd0xESXdNeXc0TERjM0xERXlOU3d5TURrc01URXpMREkwTVN3eE1UZ3NOelFzTVRRMExEZ3lMREV3Tnl3NU15d3hOaXd5TWpFc05UQXNNak16TERFMU5TdzNOeXd4T0RJc01qQTJMREl6Tnl3NE9Dd3lMREUwTkN3eU16WXNNVGcyTERFME5Dd3lNek1zTXpZc01UUTJMREV5TERFMk1Dd3dMREU0Tml3eE9UY3NPRGNzTVRjMUxEUTVMREU1Tnl3Mk9Dd3lNVGdzTVRjMUxESXNNeXd4TERBc01RPT0iLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOiIxNTA3OTA1ODg2IiwiZXhwIjoiMTUwNzkwOTQ4NiIsImFsZyI6IlJTMjU2Iiwia2lkIjoiM2Y5OTUyNWNjM2EzM2UzYzJiNWRjZjlhMjFmNGQ4MmQzNzFiZTc2NyJ9fQ==', - expires: '1507909486' - }, - auth: false - }, - id: 14 -}; - -let receiverFinishedMessagePopulate = { - type: 'handshake', - to: 'hyperty://localhost/7339190f-056a-41e1-88ec-18f02146b5bb', - from: 'hyperty://localhost/9e1c674c-9374-491f-9812-4c3f31450951', - body: { - handshakePhase: 'receiverFinishedMessage', - value: - 'eyJpdiI6Ik1qVXNNVFU0TERFMU1pd3hORE1zTkRBc01qRTBMREUxTml3ek55d3hNek1zTVRneExESTBOeXcwTkN3NE1Td3hOekFzTWl3eU16Yz0iLCJoYXNoIjoiTVRreExERTFOQ3cwTERjd0xESTFNU3d4TkRZc01UVXpMREkwTXl3eE5qWXNNVEl3TERJeU15dzFOaXd5TXpFc01UUXNNak0yTERJeE5Td3hOemNzTVRJc016TXNNVE00TERRekxESXhOU3d5TlRJc01qRTFMREU0TkN3eE1pdzVNQ3d5TURjc01UazFMRFlzTnpNc01Uaz0iLCJ2YWx1ZSI6Ik1UWTVMREV6Tnl3eE16RXNNVGcxTERJeE15d3lNQ3d4Tnl3eU1qVXNNVEEyTERJMU5Td3hORGNzTnpRc01qUTRMREl6TlN3M01Td3hOamM9In0=', - identity: { - userProfile: undefined, - idp: 'google.com', - assertion: - 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqTm1PVGsxTWpWall6TmhNek5sTTJNeVlqVmtZMlk1WVRJeFpqUmtPREprTXpjeFltVTNOamNpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TURNeE5UUTBPVEUzTVRFeU56VXhNall6TkRJaUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhek15TVVCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWtWTGFrcG9URzUyUW5sS2IyZHdiVnB5TVZGQ01FRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVozbE1SRlY2VEVSSk1VNURkekpPZVhkNFRYcFJjMDFVYTNoTVJFVjVUbE4zTUU1cGQzbE9hWGQ0VFhwbmMwMVVUWHBNUkVWNVRFUkZNRTU1ZDNoUFJGbHpUVlJCZWt4RVdYcE1SR3N4VEVSVmMwMVVaM3BNUkVVd1RFUkZlVTVEZHpKUFEzZDRUbnBOYzAxNlFYTk9hbXR6VFZSQmQweEVSVEpOUTNkNFRtcE5jMDFVVlROTVJHc3hURVJGTkUxNWR6Uk9lWGQ0VDBSSmMwMVVXWGxNUkVVMFRXbDNlVTE2VFhOTlZFMHdURVJGZWs1NWQzcE9RM2Q0VFdwWmMwMVVXVEpNUkVVeFRXbDNlRTFxWTNOT1ZFbHpUVlJuTlV4RVNYcFBVM2Q1VFZSVmMwMXFRWGxNUkVsM1QxTjNlRTVFV1hOUFJGRnpUVlJGTUV4RVJYcE9RM2Q1VFVSWmMwNTZZM05OVkZGNFRFUkZkMDFEZHpOTmFYZDRUbnBKYzAxVVkzZE1SRVV6VDBOM2VFMUVRWE5OYWtFeFRFUlZlRXhFU1hoTlUzY3pUa04zZVUxNmEzTlBWR3R6VFZSbmVFeEVRWE5OZW1kelQxUlZjMDFVWXpWTVJFbHpUME4zZUU5RVkzTk5WRUYzVEVSRk0wMXBkM2xPUkdkelRWUm5lRXhFUlRCT1EzY3dUVk4zTTA1RGR6Sk9VM2Q2VDBOM2VVNVVVWE5OZWsxelRWUk5NRXhFUlRGUFUzY3pUa04zTWs5VGQzbE9SRlZ6VGtOM2VFMXFhM05QVkd0elRWUlpNa3hFU1RCUFEzY3dUMU4zZUU5RVRYTk5WRUV6VEVSRmVrMVRkM3BOVTNkNFRXcEJjMDFVWXpSTVJFVjNUV2wzZVUxcVJYTk5ha0V6VEVSSmVrNURkM2hQUkZselRWUlpORXhFUlRGT2FYYzBUVU4zTVU1NWQzcE5RM2Q0VDBSQmMwMXFTWGhNUkVrd1RXbDNlVTE2V1hOTlZFVjZURVJGTTAxcGQzbE9WRWx6VFZSUk1VeEVSWGxNUkZFeVRFUlpNa3hFUlhoT2FYZDVUVlJOYzAxcVJUQk1SRlV5VEVSSmQwMTVkM2xOYWtGelRWUkplVXhFVlRWTVJFazBURVJKTUV4RVozcE1SRkUwVEVSTk0weEVXWE5OVkd0elRWUlJkMHhFUlRST2VYZDRUbXBWYzAxVVNYTk5WR016VEVSSmVrNURkM2hPUkZselRWUmpORXhFUlROTmVYZDVUVlJWYzA5VWEzTk5WRWt4VEVSSk1VMXBkM2hOVkZWelRXcE5OVXhFU1hkT1EzZDVUa1JyYzAxNmEzTk9SRlZ6VFZSWmMwOVVVWE5OVkUxNVRFUm5NMHhFUlRWT1UzYzFUVk4zTUU1RGQzaFBWRlZ6VFZSSk1FeEVaekZNUkVsNFRsTjNlRTE2WjNOTmFsVjNURVJGZUU1VGQzaE5la0Z6VFZSRmMwMXFVVFJNUkVWNlRWTjNlRTVEZDNoTmFsRnpUbXBWYzAxVVl6Rk1SRWt4VFdsM2VVMXFVWE5OVkdzelRFUm5jMDFVVFhoTVJGVTBURVJGZDAxNWR6Qk5lWGQ1VGxSVmMwMVVhM2xNUkVsM1QxTjNlRTlVWjNOTmFrbDVURVJGTlUxcGQzbE5WR056VFdwVmVFeEVSVFJOYVhjeFQwTjNlRTFxVVhOTmVtZHpUVlJWZDB4RWF6Rk1SRUZ6VFZSUmMwNVVRWE5OZWtWelRWUnJkMHhFUlRKTVJFVXpUbE4zZUU1RGQzaE5lbXR6VFZSbmVFeEVSWE5OYWxFeVRFUm5ORXhFUlhkUFEzY3hUbmwzZVU1RVozTlBSRUZ6VFZSak1reEVSVFZPZVhkNFRsUk5jMDFxUlhkTVJFazFURVJGTlU1NWQzcE9VM2Q1VG1sM2VFMUVXWE5PVkVGelRWUnJjMDlFWTNOT2VtZHpUV3BKTWt4RVJYZE9VM2Q0VFdwRmMwOVVTWE5OYWtFeVRFUkZkMDVwZDNsTmFYZDRUMFJOYzA1cVdYTk5WRUV6VEVSWk1reEVaM05OVkdOM1RFUkZlVTU1ZDNsTmFtZHpUbnBaYzAxcVNUUk1SRWswVEVSSmVrMURkM3BOYVhkNVRXcGpjMDFVVVhwTVJFVTFUMU4zZVV4RVRYTk5VM2QzVEVSRlBTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllXTmpiM1Z1ZEhNdVoyOXZaMnhsTG1OdmJTSXNJbWxoZENJNk1UVXdOemt3TlRjNE9Td2laWGh3SWpveE5UQTNPVEE1TXpnNWZRLm40cVdaOUxEMmo2RFJNempyMGZhaGt3YzUzN2tGbEl5bjFOaC1oc0htRGtQdUhFbzAyUnVabm5QX0R6Qzl4aW5abE5GaUo3OE5QNHd4S20zXzFMUzE1Q2VmVnJtY2VsVjd3bGotd21jU1JxR2hiRldZOWJ2eHVJQ0Rfc0VfV1B3djNRRFRZRDdsLVJiOW1MYVhzcF93eXc0Z0k0cFFMczNWd0xpeFJHM0xFY003QzJpQTMwUXFYTkJuQ3pISDBINGhKQ3dUWHQtYThxdlZxemlkU1d0bG1nNWFweDk4cnZOVGVvS1ZPZmNVdUtSVUpqWFVpeHpjbkhXMlcweUJPWXJ6WF93UEt6UzVIYmJJQVBFQmZfZlZqSnI4eEVGcEMzTnphZk1rU1ZETXlIbmt5d3g3U1ItNDRXRVNCekdqM3lCZWRfeW9Idnh3Y29sVU5ZTW1kamxFQSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjEwMzE1NDQ5MTcxMTI3NTEyNjM0MiIsImVtYWlsIjoidGVzdGFuZHRoaW5rMzIxQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJFS2pKaExudkJ5Sm9ncG1acjFRQjBBIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVGd5TERVekxESTFOQ3cyTnl3eE16UXNNVGt4TERFeU5TdzBOaXd5Tml3eE16Z3NNVE16TERFeUxERTBOeXd4T0RZc01UQXpMRFl6TERrMUxEVXNNVGd6TERFMExERXlOQ3cyT0N3eE56TXNNekFzTmprc01UQXdMREUyTUN3eE5qTXNNVFUzTERrMUxERTRNeXc0Tnl3eE9ESXNNVFl5TERFNE1pd3lNek1zTVRNMExERXpOeXd6TkN3eE1qWXNNVFkyTERFMU1pd3hNamNzTlRJc01UZzVMREl6T1N3eU1UVXNNakF5TERJd09Td3hORFlzT0RRc01URTBMREV6TkN3eU1EWXNOemNzTVRReExERXdNQ3czTWl3eE56SXNNVGN3TERFM09Dd3hNREFzTWpBMUxEVXhMREl4TVN3M05Dd3lNemtzT1Rrc01UZ3hMREFzTXpnc09UVXNNVGM1TERJc09Dd3hPRGNzTVRBd0xERTNNaXd5TkRnc01UZ3hMREUwTkN3ME1TdzNOQ3cyTlN3ek9Dd3lOVFFzTXpNc01UTTBMREUxT1N3M05DdzJPU3d5TkRVc05Dd3hNamtzT1Rrc01UWTJMREkwT0N3ME9Td3hPRE1zTVRBM0xERXpNU3d6TVN3eE1qQXNNVGM0TERFd01pd3lNakVzTWpBM0xESXpOQ3d4T0RZc01UWTRMREUxTml3NE1DdzFOeXd6TUN3eE9EQXNNakl4TERJME1pd3lNellzTVRFekxERTNNaXd5TlRJc01UUTFMREV5TERRMkxEWTJMREV4Tml3eU1UTXNNakUwTERVMkxESXdNeXd5TWpBc01USXlMRFU1TERJNExESTBMRGd6TERRNExETTNMRFlzTVRrc01UUXdMREU0Tnl3eE5qVXNNVElzTVRjM0xESXpOQ3d4TkRZc01UYzRMREUzTXl3eU1UVXNPVGtzTVRJMUxESTFNaXd4TVRVc01qTTVMREl3TkN3eU5Ea3NNemtzTkRVc01UWXNPVFFzTVRNeUxEZzNMREU1TlN3NU1TdzBOQ3d4T1RVc01USTBMRGcxTERJeE5Td3hNemdzTWpVd0xERXhOU3d4TXpBc01URXNNalE0TERFek1Td3hOQ3d4TWpRc05qVXNNVGMxTERJMU1pd3lNalFzTVRrM0xEZ3NNVE14TERVNExERXdNeXcwTXl3eU5UVXNNVGt5TERJd09Td3hPVGdzTWpJeUxERTVNaXd5TVRjc01qVXhMREU0TWl3MU9Dd3hNalFzTXpnc01UVXdMRGsxTERBc01UUXNOVEFzTXpFc01Ua3dMREUyTERFM05Td3hOQ3d4TXprc01UZ3hMREVzTWpRMkxEZzRMREV3T0N3MU55d3lORGdzT0RBc01UYzJMREU1Tnl3eE5UTXNNakV3TERJNUxERTVOeXd6TlN3eU5pd3hNRFlzTlRBc01Ua3NPRGNzTnpnc01qSTJMREV3TlN3eE1qRXNPVElzTWpBMkxERXdOaXd5TWl3eE9ETXNOallzTVRBM0xEWTJMRGdzTVRjd0xERXlOeXd5TWpnc056WXNNakk0TERJNExESXpNQ3d6TWl3eU1qY3NNVFF6TERFNU9Td3lMRE1zTVN3d0xERT0iLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOiIxNTA3OTA1Nzg5IiwiZXhwIjoiMTUwNzkwOTM4OSIsImFsZyI6IlJTMjU2Iiwia2lkIjoiM2Y5OTUyNWNjM2EzM2UzYzJiNWRjZjlhMjFmNGQ4MmQzNzFiZTc2NyJ9fQ==', - expires: '1507909389' - }, - auth: false, - via: 'runtime://localhost/protostub/6697977f-9776-c8b8-ec3d-8269f0e65536' - }, - id: 7 -}; - -let reporterSessionKeyMessagePopulate = { - type: 'handshake', - to: 'hyperty://localhost/9e1c674c-9374-491f-9812-4c3f31450951', - from: 'hyperty://localhost/7339190f-056a-41e1-88ec-18f02146b5bb', - body: { - handshakePhase: 'reporterSessionKey', - value: - 'eyJ2YWx1ZSI6Ik1qVTBMREl4TkN3eU5ERXNNakExTERFeE1Td3hOelFzT1RFc05pd3lNakVzTWpRMExESTFMRGd5TERFNE5pd3hOallzTVRjeUxEYzVMREkxTlN3eE1UZ3NOVFlzTVRFekxEVTRMREkwT0N3eE56TXNOellzTVRrMExERTFOeXd4TXpnc09EVXNNakkxTERJeU5pd3pOQ3d4TVRJc01qQTVMREkzTERFeU1Td3lNVGtzTWpRc01qTXpMREl6TERZMExETTNMRGt6TERJek1pd3lNekFzTVRZd0xEWXdMRGcyTERFM01Td3hOakVzTVRJNExERTVNQ3czTWl3eU9Td3hOVFFzTVRFNUxERTBPU3d4TVRNc01qSXlMREl6Tnl3NU5pd3lORGtzTnpnc01UY3lMREU0TUN3NUxETTFMRE00TERVeExESTBOaXd4T0RZc09EUXNNakV3TERFek15d3hNRFVzT0N3eUxEVTJMREl6TERJd09Dd3lNVEFzT1RBc01qSXpMRGs0TERZMExERXdNQ3d4Tmprc01qTTRMREUzT0N3eE5qSXNORFFzTVRZNExERXdOeXd4TmpNc09UZ3NNakk1TERFeExERXpMREUzTml3eE16VXNNVGs1TERFd055d3hNVE1zTVRJeExESXNNalV3TERjd0xERTNOQ3d5TVRVc05qWXNNVFkxTERjMUxEWXpMREV3T1N3eU1qQXNNVEV6TERFNU5Td3hPVEFzTXpnc01UazVMREUxTkN3ek55d3hPRFVzTXpNc01URXlMRGt5TERFek9TdzFOU3c0Tml3eE5EY3NNVEEwTERFMU1pd3hOVGdzTWpFMUxEYzRMREl5TkN3d0xERXlNQ3cwTlN3eE1qQXNPU3d4TlRBc01qZ3NPVFFzTWpZc01UUTFMREV4TkN3eE1EY3NNVGdzTWpjc01qQTNMRFF3TERFek1TdzJNU3cwTkN3eE16VXNNVEk1TERJek5Td3hPVE1zTWpBd0xERTROaXd4TmpZc01UZ3pMREV6Tnl3eE5UTXNNakEyTERRNUxESXpOeXd4Tnprc056SXNOallzTWpNd0xESXpOU3d4TmpRc05ESXNNVE15TERFeE9Td3lOVFFzTVRneExETTBMRFl5TERFeE5Td3lNRElzTVRVd0xERXpNU3d5TXpjc01UazRMREUwTXl3NU1Dd3hNVEFzTWpNMUxERXlOU3cwTERJME1Dd3lNemdzTVRZMExERXpNU3d4TXpBc05ESXNNVEEzTERFM015d3lORGdzTVRNeExEUTFMRFl3TERFMU5TdzBNU3d5TURjc01qTXlMREU1TWl3eE1qa3NNVEkwTERFd05pd3lORFFzTVRjNUxESXlNeXd5TXpVc056a3NNak0zTERFNU1Td3hPRGtzTXpVc01qQXdMREUzTml3eE56WXNPVEVzTVRNMExERTJOaXcyTVN3eE56Z3NNVE14TERFNE9Dd3hOVGtzTVRNc01qQXpMREV6TlN3eE1pd3lNVFVzTmpFc01qUTFMREUzTkE9PSIsImhhc2giOiJNVFUwTERFME1pd3lORE1zTkRRc01USXNNVGs1TERNNUxERTBOaXd4TWpjc01UazFMREl4TWl3NU1pd3pNQ3d4T1Rjc01UYzVMREUzTVN3eE5EVXNNakU1TERFeU1Td3lOVE1zTWpVeUxERTJPQ3cxTWl3NE1DdzROU3d4TVRBc05EZ3NOek1zTkRBc056RXNNekFzT0RNPSIsIml2IjoiTVRZc01URTJMREV6TERVMUxESXhNaXd6T0N3eE1qTXNNVFk0TERFeE55d3hNU3d6TlN3eE56QXNOQ3d4TURFc01qVXlMREU1TVE9PSJ9', - identity: { - userProfile: undefined, - idp: 'google.com', - assertion: - '==eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqTm1PVGsxTWpWall6TmhNek5sTTJNeVlqVmtZMlk1WVRJeFpqUmtPREprTXpjeFltVTNOamNpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TVRjNU5Ua3hNRFV5T1RVM05qRTJPRGM0T0RraUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhekV5TTBCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWxKcFdEZEVlbFI1YWxWUVIxOU5MVlZQVEhveGJFRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVVURk1SRVV4VFhsM2VVMUVaM05OYWxGNVRFUkpNVTVEZDNsTmVsbHpUV3BOTVV4RVVUSk1SRWw1VGxOM2VFMTZaM05OZW10elRXcEpNa3hFUlhoTmFYZDRUWHBSYzAxVVp6Vk1SRVY0VFVOM01FNURkM2xOUkVselRWUm5kMHhFYTNwTVJFVXdUME4zZVUxRVozTk9ha1Z6VFZSQk0weEVSWGROVTNkNVRVUlZjMDlFVVhOT1ZGVnpUVlJqTVV4RVozZE1SRWt4VEVSSmQwNXBkM2xOUkUxelRXcEJlRXhFU1RGTVJFbDZUME4zTWt4RVdYbE1SRVV4VG1sM2VFMXFVWE5PYWtselRXcE5ORXhFUlhoTVJFa3dUMU4zTkU1RGR6Uk1SRVV6VG1sM01rNTVkM2xPVkZGelRWUnJNVXhFU1RCT1UzZDRUWHBSYzA1cGQzbE9SRTF6VFdwSk1VeEVSVEZQUTNkNFRrUlJjMDFVVFRKTVJFVjVUbmwzZUUxVVozTk5hbEY1VEVSbk5FeEVZekpNUkVVd1RtbDNlRTU1ZDNsTmFrRnpUVlJGTkV4RVNUQk9RM2MxVG5sM2VVNUVaM05OVkdONlRFUkZORTFUZHpWUFEzY3lUbWwzTkV4RVdYaE1SR2N4VEVSSk5FeEVSWHBPVTNjeFRFUkZORTlUZHpOUFUzZDRUVlJOYzAxVVl6Uk1SRVV3VDBOM2VFMTZRWE5OYWxWNlRFUkZlVTVEZDNwT1EzY3dUMU4zZVU1RVNYTk5hbFY1VEVSRk1VNXBkM2hPUkdkelRWUlZjMDVxUlhOTmFsRXhURVJKZVUxVGQzbE5SR3R6VFZSSmVreEVSWGRQUTNkNFRtcFZjMDFxU1hOTmFrRXhURVJaTTB4RVJYbE5lWGQ0VDBSVmMwMXFRWGhNUkdjeVRFUkZNMDFEZDNoTlEzZDRUWHBSYzAxVVFURk1SRVUxVG1sM2VFMXFUWE5OYWxWNVRFUkZNazU1ZDNoT2VsVnpUV3BOTWt4RVJUQlBVM2N6VFVOM01rNURkM3BOVTNkNVRWTjNlVTFFUVhOTlZFMTVURVJKZVUxNWQzaE5lbEZ6VFdwQk1VeEVSVFZPUTNkNlRXbDNNVTVEZHpOT2VYZDVUV2wzTWs1NWQzcE9VM2MwVG5sM2VVMVVWWE5QUkZselRWUnJlRXhFU1hkT2VYZDRUbnBSYzAxcVFUVk1SRWt4VEVSbmVFeEVTWGxNUkVGelRYcEpjMDVFVVhOTmFsRXpURVJuTlV4RVp6Qk1SRWw2VGxOM2VFOVVZM05PZW1OelRWUnJNMHhFUlRSTVJFVjZUbWwzZUUxVVZYTk5WR2MwVEVSRmQweEVTWGhQUTNkNFQwUkJjMDFxVVhwTVJFbDRUVU4zZWs1VGQzaE5lbWR6VFdwQk1VeEVSVEpQVTNkNFQwTjNlazU1ZHpKTVJFRnpUMVJKYzAxVVkzZE1SRTAxVEVSRk1VNURkM2xPVkZWelRWUkJNMHhFU1RKTVJFVjVUME4zZVUxcVdYTk5hazEzVEVSRk1rMXBkM2hQVkVselRXcEJlRXhFUlRCTmFYZDRUbnBaYzA1VVFYTk5WRUUxVEVSSk1FOVRkekJOYVhkNFRrUm5jMDFxUVhwTVJFbDRUV2wzZVUxRVdYTk5WR2MwVEVSVk5VeEVSWGxOZVhkNFRrUkJjMDFVYTNoTVJHc3dURVJOTWt4RVJUQk9RM2Q1VGtSUmMwNVVhM05OYWswMVRFUlJjMDFVUlhwTVJFMTZURVJSTlV4RVdUSk1SRTEzVEVSSmQwMTVkelJNUkdNelRFUkZlVTVUZDNsTlJHdHpUVlJGZWt4RVNUQk5VM2Q0VFZSbmMwNTZVWE5OVkZFd1RFUm5lVXhFUlhkT2VYYzFUWGwzZUU1cGQzbE5ha1Z6VGxSQmMwMXFUWHBNUkVVeFRsTjNNMDU1ZDNoUFJFbHpUV3BCTWt4RVNYcE9lWGMwVDBOM2VVeEVSVEJPUTNkNVRYcFpjMDFVWnpKTVJFVXdUa04zZVUxNlRYTk5lbGx6VFZSUk1reEVSWGxNUkVVeVRVTjNkMHhFUlRST2FYZDRUMVJqYzA5RVkzTk5WR014VEVSUk5VeEVSVFZPZVhjeVQwTjNlVTFVWjNOTlZHTXhURVJKYzAxNWQzaE1SRUZ6VFZFOVBTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllXTmpiM1Z1ZEhNdVoyOXZaMnhsTG1OdmJTSXNJbWxoZENJNk1UVXdOemt3TlRnNE5pd2laWGh3SWpveE5UQTNPVEE1TkRnMmZRLktvU2xyeHp1RUthd1ZWcS1TdmNHNTRXZVladWpaS2ltd2JXV21td01UcUZjMVI1My1wMFRlbWVFdS1VT29NU3NydjA1bUxoV20zV3lfb1RKM3JKeWRPX3FQS1ptU3F3aENxeEVNNjRWajNDeHRTa1c0SUg5VmR3emlmYUxtakRIQk9NZ0Y5OUNLcTBCMkhVWVhwNXU3TXJDc1VrTC1LLXhnUVI4c185MzhiUXNSX085eHpILTluZFVVTjBCb09aQ0tCYm50WmZYdjZ5am9VeEZKdG10clVUWnpsUkZYbUtxWWQtVk9TYVZ3MURldlRDbzBjbjNrTXBtZ0E1Sk13aTZ5U2pEdE9TQzkwVjc1dDZJSVhvS2g3T2ZZOG1aelIzeWprejNpckxiNEhNdDlTV21qNVlCZmF4M0FtNDY1bnBLM3RpOWxOZFZaa1lVMmZRUGg0SC1mQSIsInRva2VuSURKU09OIjp7ImF6cCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjgwODMyOTU2NjAxMi10cXI4cW9oMTExOTQyZ2Qya2cwMDd0MHM4ZjI3N3JvaS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzk1OTEwNTI5NTc2MTY4Nzg4OSIsImVtYWlsIjoidGVzdGFuZHRoaW5rMTIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF0X2hhc2giOiJSaVg3RHpUeWpVUEdfTS1VT0x6MWxBIiwibm9uY2UiOiJORGdzTVRNd0xERXNNelFzTkRnc01UTXNOaXc1TERReUxERXpOQ3czTWl3eE16UXNNalEzTERFekxERXNNU3d4TERVc01Dd3pMREV6TUN3eExERTFMREFzTkRnc01UTXdMREVzTVRBc01pd3hNekFzTVN3eExEQXNNVFExTERFMU15d3lNRGdzTWpReUxESTFOQ3d5TXpZc01qTTFMRFEyTERJeU5Td3hNemdzTXprc01qSTJMREV4TWl3eE16UXNNVGc1TERFeE1DdzBOQ3d5TURJc01UZ3dMRGt6TERFME9Dd3lNRGdzTmpFc01UQTNMREV3TVN3eU1EVXNPRFFzTlRVc01UYzFMRGd3TERJMUxESXdOaXd5TURNc01qQXhMREkxTERJek9DdzJMRFl5TERFMU5pd3hNalFzTmpJc01qTTRMREV4TERJME9TdzROQ3c0TERFM05pdzJOeXd5TlRRc01UazFMREkwTlN3eE16UXNOaXd5TkRNc01qSTFMREUxT0N3eE5EUXNNVE0yTERFeU55d3hNVGdzTWpReUxEZzRMRGMyTERFME5pd3hOeXd5TWpBc01URTRMREkwTkN3NU55d3lORGdzTVRjekxERTRNU3c1T0N3Mk5pdzRMRFl4TERnMUxESTRMREV6TlN3MUxERTRPU3czT1N3eE1UTXNNVGM0TERFME9Dd3hNekFzTWpVekxERXlOQ3d6TkN3ME9Td3lORElzTWpVeUxERTFOaXd4TkRnc01UVXNOakVzTWpRMUxESXlNU3d5TURrc01USXpMREV3T0N3eE5qVXNNaklzTWpBMUxEWTNMREV5TXl3eE9EVXNNakF4TERnMkxERTNNQ3d4TUN3eE16UXNNVEExTERFNU5pd3hNak1zTWpVeUxERTJOeXd4TnpVc01qTTJMREUwT1N3M01DdzJOQ3d6TVN3eU1Td3lNREFzTVRNeUxESXlNeXd4TXpRc01qQTFMREU1TkN3ek1pdzFOQ3czTnl3eU1pdzJOeXd6TlN3NE55d3lNVFVzT0RZc01Ua3hMREl3Tnl3eE56UXNNakE1TERJMUxEZ3hMREl5TERBc016SXNORFFzTWpRM0xEZzVMRGcwTERJek5Td3hPVGNzTnpjc01UazNMREU0TERFek5pd3hNVFVzTVRnNExERXdMREl4T0N3eE9EQXNNalF6TERJeE1Dd3pOU3d4TXpnc01qQTFMREUyT1N3eE9Dd3pOeXcyTERBc09USXNNVGN3TERNNUxERTFOQ3d5TlRVc01UQTNMREkyTERFeU9Dd3lNallzTWpNd0xERTJNaXd4T1RJc01qQXhMREUwTWl3eE56WXNOVEFzTVRBNUxESTBPU3cwTWl3eE5EZ3NNakF6TERJeE1pd3lNRFlzTVRnNExEVTVMREV5TXl3eE5EQXNNVGt4TERrMExETTJMREUwTkN3eU5EUXNOVGtzTWpNNUxEUXNNVEV6TERNekxEUTVMRFkyTERNd0xESXdNeXc0TERjM0xERXlOU3d5TURrc01URXpMREkwTVN3eE1UZ3NOelFzTVRRMExEZ3lMREV3Tnl3NU15d3hOaXd5TWpFc05UQXNNak16TERFMU5TdzNOeXd4T0RJc01qQTJMREl6Tnl3NE9Dd3lMREUwTkN3eU16WXNNVGcyTERFME5Dd3lNek1zTXpZc01UUTJMREV5TERFMk1Dd3dMREU0Tml3eE9UY3NPRGNzTVRjMUxEUTVMREU1Tnl3Mk9Dd3lNVGdzTVRjMUxESXNNeXd4TERBc01RPT0iLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOiIxNTA3OTA1ODg2IiwiZXhwIjoiMTUwNzkwOTQ4NiIsImFsZyI6IlJTMjU2Iiwia2lkIjoiM2Y5OTUyNWNjM2EzM2UzYzJiNWRjZjlhMjFmNGQ4MmQzNzFiZTc2NyJ9fQ', - expires: '1507909486' - }, - auth: false - }, - id: 15 -}; - -let receiverAcknowledgeMessagePopulate = { - type: 'handshake', - to: 'hyperty://localhost/13d01515-1663-41f0-a115-88e7ca03bb83', - from: 'hyperty://localhost/9e1c674c-9374-491f-9812-4c3f31450951', - body: { - handshakePhase: 'receiverAcknowledge', - value: - 'eyJ2YWx1ZSI6Ik1qTTRMREV6TVN3eE9UY3NNeXd5TWpRc05Dd3lNalVzTWpJeUxERTNOU3d5TVRVc05qWXNNVE15TERJME55d3lNek1zTnl3eE9ETT0iLCJoYXNoIjoiTWpjc01USXlMREkyTERFeE1Td3lPQ3cwTWl3M015dzJPQ3d4TXpBc01qRTRMREUwTml3eU1qRXNNVGt5TERFd05Dd3lNVE1zTVRrMUxERTVOU3d6TVN3eU9Td3lORElzTVRRM0xESTFMREU1TkN3eU5Td3lNakFzTVRReUxEWTRMREUzT0N3ek9Td3lOeXd4Tmpnc01USXkiLCJpdiI6Ik1qVTFMRGN5TERJME9Td3lNallzTVRrNUxESXlOU3c1T1N3eU5Ea3NNalV4TERJMkxESTFOQ3cwTnl3eU1EQXNPRGtzTVRZMkxERTNOdz09In0=', - identity: { - userProfile: undefined, - idp: 'google.com', - assertion: - 'eyJ0b2tlbklEIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNkltTTJZVEZrWmpsaFltWXlOR1ppWVRjNVlqSTBZamhtTURFelptUmxOV016T0RZNE1EbGpZbVlpZlEuZXlKaGVuQWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKaGRXUWlPaUk0TURnek1qazFOall3TVRJdGRIRnlPSEZ2YURFeE1UazBNbWRrTW10bk1EQTNkREJ6T0dZeU56ZHliMmt1WVhCd2N5NW5iMjluYkdWMWMyVnlZMjl1ZEdWdWRDNWpiMjBpTENKemRXSWlPaUl4TURNeE5UUTBPVEUzTVRFeU56VXhNall6TkRJaUxDSmxiV0ZwYkNJNkluUmxjM1JoYm1SMGFHbHVhek15TVVCbmJXRnBiQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpWVhSZmFHRnphQ0k2SWpaYWFHb3lkR2xHZUdsck5HeGlZa1JWU0VWb00xRWlMQ0p1YjI1alpTSTZJazVFWjNOTlZFMTNURVJGYzAxNlVYTk9SR2R6VFZSTmMwNXBkelZNUkZGNVRFUkZlazVEZHpOTmFYZDRUWHBSYzAxcVVUTk1SRVY2VEVSRmMwMVRkM2hNUkZWelRVTjNla3hFUlhwTlEzZDRURVJGTVV4RVFYTk9SR2R6VFZSTmQweEVSWE5OVkVGelRXbDNlRTE2UVhOTlUzZDRURVJCYzAxVVZUUk1SRVV3VGtOM2VFNXFSWE5QVkdOelRWUlZNVXhFU1hoT2VYY3dUVU4zTVUxcGQzaE5lbWR6VFZSUk0weEVTVFJNUkVsM1RtbDNlRTVVWjNOTmFrMTVURVJGTUUxcGR6RlBVM2Q0VFZScmMwNXFSWE5OVkVVeFRFUlpkMHhFU1hwTlUzZDVUVVJOYzA1NmEzTk9WR056VGxSUmMwMVVaek5NUkZWNVRFUkZlVTVEZHpKTlUzY3pUVU4zZVU1NWQzaFBWRWx6VG5wbmMwMVVXWGxNUkVWNFRYbDNlRTFVU1hOTmFtdHpUbFJyYzAxVVp6Tk1SRkV5VEVSRk0wNVRkM2hOUkZWelRWUlZjMDFVVVhkTVJFVXhUa04zTWs1RGQzaFBWR2R6VFZSSk5VeEVSVEJOZVhjeFQxTjNlVTFxYTNOTlZFRXpURVJyTWt4RVJYaE9hWGN6VFhsM01rMTVkM2hPYWtGelRWUlZlRXhFUlRCTmFYZDRUVlJKYzA5VVZYTk5WRWx6VFhwVmMwMVVSVE5NUkVreFRVTjNNMDFwZDNsTmFrVnpUVlJqTVV4RVZUTk1SRWw0VGxOM2VFMTZhM05PUkdOelRWUlpOVXhFU1hwTVJFVXpUWGwzZVUxNlNYTk5ha0YzVEVSRk1rNVRkM2hPUTNkNVRYcGpjMDVVV1hOTlZGVjVURVJKZDAxNWR6Tk1SRVY2VDFOM2VFMTZVWE5OYWxFMVRFUkZlRTFEZDNoT1ZFMXpUVlJaZVV4RVdURk1SRWw2VGxOM01FMTVkM2hQUkVselRXcEplVXhFUlRKT1EzZDVUVVJqYzA1NlVYTk5hbEUxVEVScmQweEVWWGhNUkVWNlRtbDNlVTFxVlhOT1ZGbHpUVlJGTlV4RWF6Rk1SRVY2VDBOM2VFNXFWWE5OYWxWelRWUmpNMHhFU1RGT1EzZDVUV3BaYzAxcVJYaE1SR2MwVEVSSk1FMTVkM2hPYVhkNFRVUnJjMDlFV1hOTlZGbDRURVJGTUU1NWQzaE9SRkZ6VFZSTk5VeEVSVEJPUTNjeVRFUmplVXhFVVRCTVJFVXlUWGwzZUUxcVFYTk9ha1Z6VFZSck5VeEVhelJNUkVWM1RtbDNlRTE2VFhOTlZHY3pURVJGZWsxcGQzbE5RM2Q1VGtSUmMwMXFZM05OYWsweVRFUkplVTlUZDNoUFZHTnpUVlJGTlV4RVJUVk9hWGQ2VG5sM2VFNUVZM05OVkUxM1RFUkZlazlUZDNsTmVtTnpUVlJSTUV4RVJUVk5VM2Q1VFhwTmMwMVVXVE5NUkVWNlRYbDNNVTFUZDNoT1JGbHpUVlJGYzAxcVFUTk1SRmw1VEVSRk1VNTVkM2hOZWxselRYcEZjMDU2YTNOTlZGbDZURVJSTkV4RVJUUk9RM2Q0VGxSQmMwMXFTWGxNUkVVeFRrTjNlVTFEZHpOUFEzZDVUWHBOYzAxcVJUSk1SRlV4VEVSRmVrNURkM2hPZWxGelQxUnJjMDFxU1hoTVJHZHpUMVJSYzAxVVVYaE1SRVV5VG1sM01FNTVkM2hOZWtGelQwUnJjMDFxVVROTVJFbDNUV2wzZVUxRVRYTk5WRWwzVEVSck0weEVSWGROZVhkNVRWUnJjMDFVUVRSTVJGRjNURVJWZWt4RVJYbE9hWGQ0VDBSWmMwMTVkM2xOVkd0elQwUlpjMDlFYTNOTmFrMHdURVJGTkUxcGR6Qk5hWGN3VDBOM2VFNVVTWE5OYWtGNVRFUlpjMDFVVFhoTVJFVTBUa04zZUUxRVZYTk9la2x6VDFSTmMwMVVRVE5NUkVsNFRubDNlRTU2UVhOT2VrVnpUVlJOZDB4RVJUUk5lWGQ0VFhwWmMwMXFWVEJNUkVWNVRXbDNOVTlEZDNoT2FsRnpUbnBWYzAxcVRUSk1SRVV3VG1sM2VFMXFZM05OYW1OelRXcFpjMDFVVVhwTVJFVjRUV2wzZUUxVVNYTk5hazE1VEVSSk1FNURkM2hQVTNkNFQxUlZjMDFxVlhwTVJFVjNUWGwzZUU5RWEzTk9lbWR6VFZSSk5VeEVTWHBOYVhkNFRrUmpjMDFVWnpOTVJHc3lURVJSYzAxcVRYTk5WRkZ6VFhsM01VMURkM2hOZWsxelQxUk5jMDFxVFhsTVJFa3dUbmwzZVUxRVozTk5ha0V4VEVSSmMwMTVkM2hNUkVGelRWRTlQU0lzSW1semN5STZJbWgwZEhCek9pOHZZV05qYjNWdWRITXVaMjl2WjJ4bExtTnZiU0lzSW1saGRDSTZNVFV3T0RBd01USTFNeXdpWlhod0lqb3hOVEE0TURBME9EVXpmUS5GNXpicmRpWVI5b2c3V0pPenB1UEZ4M0p0SG5tdl95eTN6VjRxNTR3eEpkTTkwck4tTFZFbG0wcF9HemVHYXJLZ09KTkdHWE5qYjZpMUF6V05aUUZuQnc4ZktEZjR4MkxWM0lqUUM4WjJzZnNlZ0VUbmEzWTZXU2llbUtmN1QwaUJQZXBqbTNWUTZwSHVFRXI0QTA3OURXT25DQ3pZR3VTT0ZSTjJxamRfNEpvNnUweU9jQkNtS3RpQ1dtZHZUWnFPS3dnM3ZGUWZ1MjVaZDBER3hVWlJQdm1Gd2o1bE85UGRpcURXVDhlZlM0Y29pTGtuZmEyak01emFMUGtOV0ExeW5WSnE3REFfQVNvQmdIdThPVDN5SllFME5WNEFZclBYWlFudWtFUHR5SzlyZXR2RmQ0cDFnelBiT2s0T2w0WWI0UGtiUUNmM2RhS2doTDlkSXpxeEEiLCJ0b2tlbklESlNPTiI6eyJhenAiOiI4MDgzMjk1NjYwMTItdHFyOHFvaDExMTk0MmdkMmtnMDA3dDBzOGYyNzdyb2kuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI4MDgzMjk1NjYwMTItdHFyOHFvaDExMTk0MmdkMmtnMDA3dDBzOGYyNzdyb2kuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMDMxNTQ0OTE3MTEyNzUxMjYzNDIiLCJlbWFpbCI6InRlc3RhbmR0aGluazMyMUBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6InRydWUiLCJhdF9oYXNoIjoiNlpoajJ0aUZ4aWs0bGJiRFVIRWgzUSIsIm5vbmNlIjoiTkRnc01UTXdMREVzTXpRc05EZ3NNVE1zTml3NUxEUXlMREV6TkN3M01pd3hNelFzTWpRM0xERXpMREVzTVN3eExEVXNNQ3d6TERFek1Dd3hMREUxTERBc05EZ3NNVE13TERFc01UQXNNaXd4TXpBc01Td3hMREFzTVRVNExERTBOQ3d4TmpFc09UY3NNVFUxTERJeE55dzBNQ3cxTWl3eE16Z3NNVFEzTERJNExESXdOaXd4TlRnc01qTXlMREUwTWl3MU9Td3hNVGtzTmpFc01URTFMRFl3TERJek1Td3lNRE1zTnprc05UY3NOVFFzTVRnM0xEVXlMREV5TkN3Mk1TdzNNQ3d5Tnl3eE9USXNOemdzTVRZeUxERXhNeXd4TVRJc01qa3NOVGtzTVRnM0xEUTJMREUzTlN3eE1EVXNNVFVzTVRRd0xERTFOQ3cyTkN3eE9UZ3NNVEk1TERFME15dzFPU3d5TWprc01UQTNMRGsyTERFeE5pdzNNeXcyTXl3eE5qQXNNVFV4TERFME1pd3hNVElzT1RVc01USXNNelVzTVRFM0xESTFNQ3czTWl3eU1qRXNNVGMxTERVM0xESXhOU3d4TXprc05EY3NNVFk1TERJekxERTNNeXd5TXpJc01qQXdMREUyTlN3eE5Dd3lNemNzTlRZc01UVXlMREl3TXl3M0xERXpPU3d4TXpRc01qUTVMREV4TUN3eE5UTXNNVFl5TERZMUxESXpOU3cwTXl3eE9ESXNNakl5TERFMk5Dd3lNRGNzTnpRc01qUTVMRGt3TERVeExERXpOaXd5TWpVc05UWXNNVEU1TERrMUxERXpPQ3d4TmpVc01qVXNNVGMzTERJMU5Dd3lNallzTWpFeExEZzRMREkwTXl3eE5pd3hNRGtzT0RZc01UWXhMREUwTnl3eE5EUXNNVE01TERFME5DdzJMRGN5TERRMExERTJNeXd4TWpBc05qRXNNVGs1TERrNExERXdOaXd4TXpNc01UZzNMREV6TWl3eU1Dd3lORFFzTWpjc01qTTJMREl5T1N3eE9UY3NNVEU1TERFNU5pd3pOeXd4TkRjc01UTXdMREV6T1N3eU16Y3NNVFEwTERFNU1Td3lNek1zTVRZM0xERXpNeXcxTVN3eE5EWXNNVEVzTWpBM0xEWXlMREUxTnl3eE16WXNNekVzTnprc01UWXpMRFE0TERFNE5Dd3hOVEFzTWpJeUxERTFOQ3d5TUN3M09Dd3lNek1zTWpFMkxEVTFMREV6TkN3eE56UXNPVGtzTWpJeExEZ3NPVFFzTVRReExERTJOaXcwTnl3eE16QXNPRGtzTWpRM0xESXdNaXd5TURNc01USXdMRGszTERFd015d3lNVGtzTVRBNExEUXdMRFV6TERFeU5pd3hPRFlzTXl3eU1Ua3NPRFlzT0Rrc01qTTBMREU0TWl3ME1pdzBPQ3d4TlRJc01qQXlMRFlzTVRNeExERTROQ3d4TURVc056SXNPVE1zTVRBM0xESXhOeXd4TnpBc056RXNNVE13TERFNE15d3hNellzTWpVMExERXlNaXc1T0N3eE5qUXNOelVzTWpNMkxERTBOaXd4TWpjc01qY3NNallzTVRRekxERXhNaXd4TVRJc01qTXlMREkwTkN3eE9Td3hPVFVzTWpVekxERXdNeXd4T0Rrc056Z3NNVEk1TERJek1pd3hORGNzTVRnM0xEazJMRFFzTWpNc01UUXNNeXcxTUN3eE16TXNPVE1zTWpNeUxESTBOeXd5TURnc01qQTFMRElzTXl3eExEQXNNUT09IiwiaXNzIjoiaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tIiwiaWF0IjoiMTUwODAwMTI1MyIsImV4cCI6IjE1MDgwMDQ4NTMiLCJhbGciOiJSUzI1NiIsImtpZCI6ImM2YTFkZjlhYmYyNGZiYTc5YjI0YjhmMDEzZmRlNWMzODY4MDljYmYifX0=', - expires: '1508004853' - }, - auth: false, - via: 'runtime://localhost/protostub/ec69047b-c073-cbbc-e100-57fb897d4f8b' - }, - id: 15 -}; - let validateAssertionValuePopulate = { identity: 'testandthink321@gmail.com', contents: 'NDgsMTMwLDEsMzQsNDgsMTMsNiw5LDQyLDEzNCw3MiwxMzQsMjQ3LDEzLDEsMSwxLDUsMCwzLDEzMCwxLDE1LDAsNDgsMTMwLDEsMTAsMiwxMzAsMSwxLDAsMTU4LDE0NCwxNjEsOTcsMTU1LDIxNyw0MCw1MiwxMzgsMTQ3LDI4LDIwNiwxNTgsMjMyLDE0Miw1OSwxMTksNjEsMTE1LDYwLDIzMSwyMDMsNzksNTcsNTQsMTg3LDUyLDEyNCw2MSw3MCwyNywxOTIsNzgsMTYyLDExMywxMTIsMjksNTksMTg3LDQ2LDE3NSwxMDUsMTUsMTQwLDE1NCw2NCwxOTgsMTI5LDE0Myw1OSwyMjksMTA3LDk2LDExNiw3Myw2MywxNjAsMTUxLDE0MiwxMTIsOTUsMTIsMzUsMTE3LDI1MCw3MiwyMjEsMTc1LDU3LDIxNSwxMzksNDcsMTY5LDIzLDE3MywyMzIsMjAwLDE2NSwxNCwyMzcsNTYsMTUyLDIwMyw3LDEzOSwxMzQsMjQ5LDExMCwxNTMsMTYyLDY1LDIzNSw0MywxODIsMjIyLDE2NCwyMDcsNzQsMjQ5LDkwLDUxLDEzNiwyMjUsNTYsMTE5LDk1LDEzOCwxNjUsMjUsMTc3LDI1NCwyMjYsMjExLDg4LDI0MywxNiwxMDksODYsMTYxLDE0NywxNDQsMTM5LDE0NCw2LDcyLDQ0LDE2MywxMjAsNjEsMTk5LDk4LDEwNiwxMzMsMTg3LDEzMiwyMCwyNDQsMjcsMjM2LDIyOSwxOTcsMTE5LDE5NiwzNywxNDcsMTMwLDEzOSwyMzcsMTQ0LDE5MSwyMzMsMTY3LDEzMyw1MSwxNDYsMTEsMjA3LDYyLDE1NywxMzYsMzEsNzksMTYzLDQ4LDE4NCwxNTAsMjIyLDE1NCwyMCw3OCwyMzMsMjE2LDU1LDEzNCwxNzQsOTksMjIxLDgsOTQsMTQxLDE2Niw0NywxMzAsODksMjQ3LDIwMiwyMDMsMTIwLDk3LDEwMywyMTksMTA4LDQwLDUzLDEyNiwxODYsMywyMTksODYsODksMjM0LDE4Miw0Miw0OCwxNTIsMjAyLDYsMTMxLDE4NCwxMDUsNzIsOTMsMTA3LDIxNywxNzAsNzEsMTMwLDE4MywxMzYsMjU0LDEyMiw5OCwxNjQsNzUsMjM2LDE0NiwxMjcsMjcsMjYsMTQzLDExMiwxMTIsMjMyLDI0NCwxOSwxOTUsMjUzLDEwMywxODksNzgsMTI5LDIzMiwxNDcsMTg3LDk2LDQsMjMsMTQsMyw1MCwxMzMsOTMsMjMyLDI0NywyMDgsMjA1LDIsMywxLDAsMQ==' }; -let runtimeCapabilitiesPopulate = arg => { - if (arg === 'node') return Promise.resolve(true); - else return Promise.resolve(false); +let coreDiscoveryPopulate = function(arg1, arg2) { + return Promise.resolve({ dataObject: 'hyperty://h1.domain/h1' }); }; +function log(arg1, arg2) { + console.log(arg1, arg2) +} + let getHypertyOwnerPopulate = arg => { return 'user://google.com/testandthink123@gmail.com'; }; - -let coreDiscoveryPopulate = function(arg1, arg2) { - return Promise.resolve({ dataObject: 'hyperty://h1.domain/h1' }); -}; diff --git a/test/resources/generateData.js b/test/resources/generateData.js old mode 100644 new mode 100755 diff --git a/test/units.html b/test/units.html index d36400d9..5d197c2d 100755 --- a/test/units.html +++ b/test/units.html @@ -13,15 +13,15 @@

reThink Project performance tests

Browser: Chrome 63.0.3239 (Linux 0.0.0) - Timestamp: 2018-5-22 12:36:06 + Timestamp: 2018-6-5 10:15:52 - 157 tests / + 30 tests / 0 errors / - 0 failures / - 43 skipped / - runtime: 0.915s + 1 failures / + 0 skipped / + runtime: 0.618s @@ -29,168 +29,28 @@

reThink Project performance tests

Spec Suite / Results - - Passed in 0.005s - should create a new hyperty address - AddressAllocation - - - Passed in 0.001s - should create a new data Object address - AddressAllocation - - - Passed in 0.002s - should reuse an hyperty url address based on reuse option - AddressAllocation - - - Passed in 0.001s - should reuse an hyperty url address based on an given url - AddressAllocation - - - Passed in 0.001s - should create a new CoreDiscovery without error - CoreDiscovery » construction - - - Passed in 0.003s - should conclude the advanced search without error - CoreDiscovery » discoverHyperties() - - - Passed in 0.002s - should conclude the advanced search without error - CoreDiscovery » discoverDataObjects() - - - Passed in 0.001s - should conclude the advanced search without error - CoreDiscovery » discoverHypertyPerURL() - - - Passed in 0.001s - should conclude the advanced search without error - CoreDiscovery » discoverDataObjectPerURL() - - - Passed in 0.001s - should conclude the advanced search without error - CoreDiscovery » discoverDataObjectsPerName() - - - Passed in 0s - should conclude the advanced search without error - CoreDiscovery » discoverDataObjectsPerReporter() - - - Passed in 0.007s - should set dataObject information to be saved on storage - dataObjectsStorage - - - Passed in 0.006s - should set a bundle of information to be saved on storage like reporter - dataObjectsStorage - - - Passed in 0.003s - should set a bundle of information to be saved on storage like observers - dataObjectsStorage - - - Passed in 0.001s - should update a resource with new Hyperty Subscribers - dataObjectsStorage - - - Passed in 0.001s - should update a resource with new Subscriber Users - dataObjectsStorage - - - Passed in 0.04s - should get specific dataObject by hypertyURL - dataObjectsStorage - - - Passed in 0.005s - should get specific dataObject by identity - dataObjectsStorage - - - Passed in 0.002s - should get specific dataObject by schema - dataObjectsStorage - - - Passed in 0.002s - should get specific dataObject by some data - dataObjectsStorage - - - Passed in 0s - should delete a specific value from specific resource - dataObjectsStorage - - - Passed in 0.002s - should not delete a resource - dataObjectsStorage - - - Passed in 0.002s - should delete a resource - dataObjectsStorage - - - Passed in 0.004s - constructor should receive 3 arguments - Should get configuration and parse to Descriptors - - - Passed in 0s - should get hyperty - Should get configuration and parse to Descriptors - - - Passed in 0.001s - should get protocolstub - Should get configuration and parse to Descriptors - - - Passed in 0.001s - should get protocolstub - Should get configuration and parse to Descriptors - - - Skipped - Code and encode test - Crypto tests - Passed in 0.002s Test generated IVs Crypto tests - Passed in 0s + Passed in 0.001s Test generated random values Crypto tests - Passed in 0.001s + Passed in 0s Test generatePMS key Crypto tests - Passed in 0.003s + Passed in 0.009s Test generateMasterSecret key Crypto tests - Passed in 0s + Passed in 0.001s Test concatPMSwithRandoms key Crypto tests @@ -200,2905 +60,40 @@

reThink Project performance tests

Crypto tests - Passed in 0.045s + Passed in 0.283s Test genereated keys pair with encrypt and decrypt data Crypto tests - Passed in 0.003s + Passed in 0.002s Test AES algorithm Crypto tests - - Skipped + + Passed in 0.31s Test genereated keys pair, signRSA and verifyRSA Crypto tests - Passed in 0.002s + Passed in 0.001s Test hashHMAC and verifyHMAC Crypto tests - - Skipped - Check GUI deployment - Identity Module tests - - - Skipped - Check Identities to Choose - Identity Module tests - - - Skipped - Check messageBus - Identity Module tests - - - Skipped - Check coreDiscovery - Identity Module tests - - - Skipped - Check registry - Identity Module tests - - - Skipped - setCurrentIdentity/getCurrentIdentity - Identity Module tests - - - Skipped - test sendGenerateMessage - Identity Module tests - - - Skipped - test requestIdentityToGUI - Identity Module tests - - - Skipped - test getIdentities - Identity Module tests - - - Skipped - test storeIdentity - Identity Module tests - - - Skipped - test getIdentity - Identity Module tests - - - Skipped - test unregisterIdentity - Identity Module tests - - - Skipped - test deleteIdentity - Identity Module tests - - - Skipped - test callIdentityModuleFunc - Identity Module tests - - - Skipped - test generateAssertion - Identity Module tests - - - Skipped - test callGenerateMethods - Identity Module tests - - - Skipped - test validateAssertion - Identity Module tests - - - Skipped - test loginSelectedIdentity - Identity Module tests - - - Skipped - test generateSelectedIdentity - Identity Module tests - - - Skipped - test selectIdentityFromGUI - Identity Module tests - - - Skipped - test selectIdentityForHyperty - Identity Module tests - - - Skipped - test encryptDataObject/decryptDataObject - Identity Module tests - - - Skipped - test getIdentityAssertion - Identity Module tests - - - Skipped - test getIdToken - Identity Module tests - - - Skipped - test _getValidToken - Identity Module tests - - - Skipped - test getToken - Identity Module tests - - - Skipped - test _resolveDomain - Identity Module tests - - - Skipped - test _filterMessageToHash - Identity Module tests - - - Skipped - test _newChatCrypto - Identity Module tests - - - Skipped - test _sendReporterSessionKey - Identity Module tests - - - Skipped - test encryptMessage - startHandShake and update - Identity Module tests - - - Skipped - test _doHandShakePhase - startHandShake - Identity Module tests - - - Skipped - test _doHandShakePhase - senderHello - Identity Module tests - - - Skipped - test _doHandShakePhase - receiverHello - Identity Module tests - - - Skipped - test _doHandShakePhase - senderCertificate - Identity Module tests - - - Skipped - test _doHandShakePhase - receiverFinishedMessage - Identity Module tests - - - Skipped - test _doHandShakePhase - reporterSessionKey - Identity Module tests - - - Skipped - test doMutualAuthentication - Identity Module tests - - - Passed in 0.005s - sending message - MessageBus - - - Passed in 0.002s - pipeline msg change - MessageBus - - - Passed in 0.001s - sending using external system - MessageBus - - - Passed in 0.01s - publish unique messages - MessageBus - - - Passed in 0.002s - sending without callback and without pipeline processing - MessageBus - - - Passed in 0.003s - simple sending message - MiniBus - - - Passed in 0.006s - send with external response - MiniBus - - - Passed in 0.01s - send and publish - MiniBus - - - Passed in 0.001s - should set the value for a given key-version tuple - PersistenceManager » set - - - Passed in 0.001s - should get the value for a given key - PersistenceManager » get - - - Passed in 0s - should get the value version for a given key - PersistenceManager » getVersion - - - Passed in 0.001s - should remove a value from PersistenceManager for a given key - PersistenceManager » delete - - - Passed in 0.003s - fail detected - Pipeline - - - Passed in 0.001s - deliver detected - Pipeline - - - Passed in 0s - sequence processor - Pipeline - - - Passed in 0.001s - depends of the MessageBus - Registry » constructor() - - - Passed in 0.001s - return AppSandbox() - Registry » getAppSandbox() - - - Passed in 0.003s - should register a stub - Registry » registerStub(sandBox, domainURL) - - - Passed in 0s - should register a P2P Handler Stub - Registry » registerStub(sandBox, domainURL) - - - Passed in 0.002s - should register a P2P Requester Stub - Registry » registerStub(sandBox, domainURL) - - - Passed in 0s - should discover P2PHandlerStub - Registry » registerStub(sandBox, domainURL) - - - Passed in 0.001s - should discover a ProtocolStub - Registry » discoverProtostub(url) - - - Passed in 0s - should register PEP - Registry » registerPEP(postMessage, hyperty) - - - Passed in 0s - should unregister PEP - Registry » unregisterPEP(HypertyRuntimeURL) - - - Passed in 0.011s - should register an Hyperty - Registry » registerHyperty(sandbox, descriptorURL, descriptor) - - - Passed in 0.001s - should register a anotherdomain protoStub URL - Registry » getSandbox(url, constraints) - - - Passed in 0.001s - should get a sandbox from another domain - Registry » getSandbox(url, constraints) - - - Passed in 0.001s - should get a sandbox from a domain - Registry » getSandbox(url, constraints) - - - Passed in 0s - should get a sandbox from a specific hypertyIstance - Registry » getSandbox(url, constraints) - - - Passed in 0s - should get a sandbox from a specific protostubURL - Registry » getSandbox(url, constraints) - - - Passed in 0.002s - should return a protostub url - Registry » resolve(url) - - - Passed in 0.001s - should unregister a ProtocolStub - Registry » unregisterStub(url) - - - Passed in 0.001s - should return the user associated to the hyperty URL - Registry » getHypertyOwner(hypertyURL) - - - Passed in 0s - should return the hyperty Name from a given hypertyURL - Registry » getHypertyName(hypertyURL) - - - Passed in 0.005s - should register a new Data Object in the runtime registry - Registry » registerDataObject(identifier, dataObjectschema, dataObjectUrl, dataObjectReporter, authorise) - - - Passed in 0.003s - should return a previously registered Hyperty URL - Registry » checkRegisteredURLs(info) - - - Passed in 0.002s - should return a undefined value if the Hyperty is not previously registered - Registry » checkRegisteredURLs(info) - - - Passed in 0.005s - should return a previously registered Data Object URL - Registry » checkRegisteredURLs(info) - - - Passed in 0.001s - should return a undefined value if the dataObjectURL is not previously registered - Registry » checkRegisteredURLs(info) - - - Passed in 0.002s - should return an hyperty url based on given address - Registry » checkRegisteredURLs(info) - - - Passed in 0.001s - should return the reporterURL associated with the dataobject URL - Registry » getReporterURL(dataObjectURL) - - - Passed in 0.001s - should not found the reporter the reporterURL associated with the dataobject URL - Registry » getReporterURL(dataObjectURL) - - - Passed in 0s - should return the list of pre authorised users - Registry » getPreAuthSubscribers(dataObjectURL) - - - Passed in 0.001s - should return the list of pre authorised users - Registry » getDataObjectSubscribers(dataObjectURL) - - - Passed in 0s - should unregister an Hyperty - Registry » unregisterHyperty(url) - - - Passed in 0.002s - should return a protostub - Registry » isLegacy(url) - - - Passed in 0.285s - expects the runtime was ready - RuntimeUA » constructor() - - - Passed in 0.001s - depends of the Registry - RuntimeUA » constructor() - - - Passed in 0.001s - depends of the Identity Module - RuntimeUA » constructor() - - - Passed in 0s - depends of the Policy Engine - RuntimeUA » constructor() - - - Passed in 0s - depends of the MessageBus - RuntimeUA » constructor() - - - Passed in 0.001s - should throw when given no arguments - RuntimeUA » constructor() - - - Passed in 0.005s - should throw when given no arguments - RuntimeUA » loadHyperty(hypertyDescriptorURL) - - - Passed in 0.001s - should be a Promise - RuntimeUA » loadHyperty(hypertyDescriptorURL) - - - Passed in 0.002s - should be deployed - RuntimeUA » loadHyperty(hypertyDescriptorURL) - - - Passed in 0.002s - should load an hyperty based on given true value for the reuse - RuntimeUA » loadHyperty(hypertyDescriptorURL) - - - Passed in 0.002s - should load an hyperty based on given reuse URL address - RuntimeUA » loadHyperty(hypertyDescriptorURL) - - - Passed in 0.008s - should throw when given no arguments - RuntimeUA » loadStub(sp-domain) - - - Passed in 0.006s - should be a Promise - RuntimeUA » loadStub(sp-domain) - - - Passed in 0.004s - should be deployed - RuntimeUA » loadStub(sp-domain) - - - Passed in 0.006s - should throw when given no arguments - RuntimeUA » loadIdpProxy(google.com) - - - Passed in 0.004s - should be a Promise - RuntimeUA » loadIdpProxy(google.com) - - - Passed in 0.003s - should be deployed - RuntimeUA » loadIdpProxy(google.com) - - - Passed in 0.005s - deploy and undeploy - Sandbox - - - Passed in 0.003s - deploy url duplication rejected - Sandbox - - - Passed in 0.026s - reporter read - SyncherManager - - - Passed in 0.053s - reporter observer integration - SyncherManager - - - Passed in 0.035s - should resume observers - SyncherManager - - - Passed in 0.015s - should resume reporters - SyncherManager - - - Skipped - verify produced sync messages - SyncherManager - - - Skipped - verify consumed sync messages - SyncherManager - - - Passed in 0.009s - reporter addChild - SyncherManager - - - Passed in 0.029s - observer addChild - SyncherManager - - - Passed in 0.031s - children deltas generate and process - SyncherManager - - - Skipped - create and delete - SyncherManager - - - Passed in 0.03s - subscribe and unsubscribe - SyncherManager - - - Passed in 0.041s - should save the url on storageManager - SyncherManager » should use the storageManager - - - Passed in 0.05s - should resume the url stored on storageManager - SyncherManager » should use the storageManager - - - Passed in 0.002s - should encode a string - encode decode function - - - Passed in 0.004s - should divide an url in 3 parts (type, domain, identity) - Utils Module - - - Passed in 0.001s - should return the dataObjectURL identifier - Utils Module + + Failed + "before each" hook: Init structures before each test for "test encryptDataObject/decryptDataObject" + + CryptoManager tests +
TypeError: __WEBPACK_IMPORTED_MODULE_9__src_cryptoManager_CryptoManager__.a is not a constructor + at Context.<anonymous> (webpack:///test/CryptoManager.spec.js:224:0 <- test/CryptoManager.spec.js:3120:21) + + - System output:
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'App Sandbox Browser' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Browser Request' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: Object{getRuntimeCapabilities: () => { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name capabilities with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name runtimeCatalogue with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'App Sandbox Browser' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'App:', AppSandboxBrowser{_msgId: 0, _subscriptions: Object{}, _responseTimeOut: 15000, _responseCallbacks: Object{}, type: 'app'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Work:', Sandbox{_msgId: 0, _subscriptions: Object{}, _responseTimeOut: 15000, _responseCallbacks: Object{}, capabilities: Object{browser: true}, type: 'normal'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Browser Request' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: Object{getRuntimeCapabilities: () => { ... }} + System output:
Chrome 63.0.3239 (Linux 0.0.0) LOG: Crypto{_crypto: Crypto{}}
Chrome 63.0.3239 (Linux 0.0.0) LOG: Object{getRuntimeCapabilities: () => { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: StorageManager{db: Dexie{_dbSchema: Object{rethink:activePolicy: ..., rethink:groups: ..., rethink:userPolicies: ..., rethink:spPolicies: ...}, version: function (versionNumber) { ... }, _allTables: Object{rethink:activePolicy: ..., rethink:groups: ..., rethink:userPolicies: ..., rethink:spPolicies: ...}, _tableFactory: function createTable(mode, tableSchema) { ... }, _createTransaction: function (mode, storeNames, dbschema, parentTransaction) { ... }, _whenReady: function (fn) { ... }, verno: 1, open: function () { ... }, close: function () { ... }, delete: function () { ... }, backendDB: function () { ... }, isOpen: function () { ... }, hasFailed: function () { ... }, dynamicallyOpened: function () { ... }, name: 'policy', on: function (eventName, subscriber) { ... }, transaction: function (mode, tableInstances, scopeFunc) { ... }, table: function (tableName) { ... }, Collection: function Collection(whereClause, keyRangeGenerator) { ... }, Table: function Table(name, tableSchema, collClass) { ... }, Transaction: function Transaction(mode, storeNames, dbschema, parent) { ... }, Version: function Version(versionNumber) { ... }, WhereClause: function WhereClause(table, index, orCollection) { ... }, WriteableCollection: function WriteableCollection() { ... }, WriteableTable: function WriteableTable(name, tableSchema, collClass) { ... }, rethink:activePolicy: WriteableTable{name: ..., schema: ..., hook: ..., _collClass: ...}, rethink:groups: WriteableTable{name: ..., schema: ..., hook: ..., _collClass: ...}, rethink:userPolicies: WriteableTable{name: ..., schema: ..., hook: ..., _collClass: ...}, rethink:spPolicies: WriteableTable{name: ..., schema: ..., hook: ..., _collClass: ...}}, storageName: 'policy'} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'rethink:activePolicy', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name capabilities with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name runtimeCatalogue with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name runtimeCatalogue with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name capabilities with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name capabilities with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name runtimeCatalogue with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST - _reuseAllocatedAddress', 'sp.domain', 1, Object{name: 'test', schema: 'hyperty-catalogue://sp.domain/.well-known/dataschema/hello', reporter: [], resources: []}, 'hyperty', true -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'CHECK REGISTER: ', Object{name: 'test', schema: 'hyperty-catalogue://sp.domain/.well-known/dataschema/hello', reporter: [], resources: []} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST - registeredurls', 'hyperty://sp.domain/158156a8-c64f-23ab-001f-406ff0c91a93' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name subscriptions with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name subscriptions with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name subscriptions with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name syncherManager with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name syncherManager with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name syncherManager with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'CoreDiscovery - GraphConnector:', class GraphConnector { ... } -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Browser Request' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: Object{type: 'read', from: 'hyperty-runtime://ua.pt/123/discovery/', to: 'domain://registry.ua.pt', body: Object{resource: '/hyperty/idp-identifier/openidtest20@gmail.com', criteria: Object{dataSchemes: ..., resources: ...}}, id: 1} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name runtime with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name runtime with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name runtime with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name registry with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name registry with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name registry with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name cryptoManager with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name cryptoManager with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name cryptoManager with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: Object{type: 'read', from: 'hyperty-runtime://ua.pt/123/discovery/', to: 'domain://registry.ua.pt', body: Object{resource: '/hyperty/idp-identifier/openidtest20@gmail.com'}, id: 2} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: Object{type: 'read', from: 'hyperty-runtime://ua.pt/123/discovery/', to: 'domain://registry.ua.pt', body: Object{resource: '/comm', criteria: Object{reporter: ..., dataSchemes: ..., resources: ...}}, id: 3} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name identity with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name identity with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name identity with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name hypertyResources with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name hypertyResources with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name hypertyResources with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: Object{type: 'read', from: 'hyperty-runtime://ua.pt/123/discovery/', to: 'domain://registry.ua.pt', body: Object{resource: 'hyperty://ist.pt/1'}, id: 4} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: Object{type: 'read', from: 'hyperty-runtime://ua.pt/123/discovery/', to: 'domain://registry.ua.pt', body: Object{resource: 'comm://ist.pt/1'}, id: 5} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name policy with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name policy with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name policy with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: Object{type: 'read', from: 'hyperty-runtime://ua.pt/123/discovery/', to: 'domain://registry.ua.pt', body: Object{resource: 'myChat', criteria: Object{dataSchemes: ..., resources: ...}}, id: 6} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'rethink:groups', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'rethink:spPolicies', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: Object{type: 'read', from: 'hyperty-runtime://ua.pt/123/discovery/', to: 'domain://registry.ua.pt', body: Object{resource: '/comm', criteria: Object{reporter: ..., dataSchemes: ..., resources: ...}}, id: 7} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'rethink:userPolicies', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-3: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-3: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-3: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-3: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DONE', 3 -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-3: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}, observers: Object{:///id-A: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-3: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}, observers: Object{:///id-A: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-B: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-3: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}, observers: Object{:///id-A: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-B: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-C: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-3: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}, observers: Object{:///id-A: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-B: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-C: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-D: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ..., hypertySubscribers: ...}, :///id-3: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}, observers: Object{:///id-A: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-B: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-C: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-D: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ..., hypertySubscribers: ...}, :///id-3: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}, observers: Object{:///id-A: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-B: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-C: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-D: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name syncherManager:ObjectURLs with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'hyperty:///id-2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'hyperty:///id-3' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'hyperty:///id-3' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'hyperty:///id-3' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., isReporter: ..., schema: ..., url: ..., name: ..., version: ..., reporter: ...}, :///id-0: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}, :///id-2: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ..., hypertySubscribers: ...}, :///id-3: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ..., store: ...}}, observers: Object{:///id-A: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-B: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-C: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}, :///id-D: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., status: ..., version: ..., isReporter: ..., url: ..., schema: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Browser Request' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Storage may be cleared by the UA under storage pressure.' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'Found database name runtimeCatalogue with version no: 1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'LOG HERE', Object{constraints: Object{onlyAccessToken: true, onlyIdAssertionValidation: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: Crypto{_crypto: Crypto{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[MessageBus Test] pipeline msg change: ', Object{type: 'ping', from: 'hyperty://123', to: 'hyperty://456', id: 1, token: '12345678'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: Object{from: 'x', to: 'obj1', id: 1} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: Object{from: 'x', to: 'obj2', id: 2} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: Object{from: 'x', to: 'obj2', id: 3} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[MessageBus.test sending without callback and without pipeline processing] reply:', Object{type: 'response', id: 1, from: 'runtime://local/123/identity-gui', to: 'runtime://local/123/idm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Registry - registerStub - Normal Stub] descriptor', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Depoyed->', Object{url: 'runtime://ua.pt/protostub/329360a1-3110-2a35-c242-82343c6f081a', status: 'deploying'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'MSG BUS LISTENER for MN Subscription Manager: ', Object{type: 'subscribe', from: 'runtime://ua.pt/registry/', to: 'domain://msg-node.ua.pt/sm', body: Object{subscribe: [...], source: 'runtime://ua.pt/registry/'}, id: 1} -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'ua.pt' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'registry:HypertyURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'registry:HypertyURLs', Object{commvalueundefined: ['hyperty://ua.pt/1']} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'MSG BUS LISTENER for Domain Registry: ', Object{type: 'create', from: 'runtime://ua.pt/registry/', to: 'domain://registry.ua.pt', body: Object{value: Object{user: ..., descriptor: ..., url: ..., expires: ..., resources: ..., dataSchemes: ..., runtime: ..., status: ..., p2pHandler: ..., p2pRequester: ...}, policy: 'policy'}, id: 2} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Registry - registerStub - Normal Stub] descriptor', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Get Sandbox:', Sandbox{_msgId: 0, _subscriptions: Object{}, _responseTimeOut: 15000, _responseCallbacks: Object{}, capabilities: Object{browser: true}, type: 'normal'}, Registry{registryURL: 'runtime://ua.pt/registry/', appSandbox: AppSandboxBrowser{_msgId: 0, _subscriptions: Object{}, _responseTimeOut: 15000, _responseCallbacks: Object{}, type: 'app'}, runtimeURL: 'runtime://ua.pt', p2pHandlerURL: 'runtime://ua.pt/p2phandler/81059c0d-5aec-2413-7560-f4124ece3996', runtimeCatalogue: Object{getDataSchemaDescriptor: () => { ... }}, remoteRegistry: '', idModule: Object{getIdentityAssertion: () => { ... }}, storageManager: StorageManager{db: Dexie{_dbSchema: ..., version: ..., _allTables: ..., _tableFactory: ..., _createTransaction: ..., _whenReady: ..., verno: ..., open: ..., close: ..., delete: ..., backendDB: ..., isOpen: ..., hasFailed: ..., dynamicallyOpened: ..., name: ..., on: ..., transaction: ..., table: ..., Collection: ..., Table: ..., Transaction: ..., Version: ..., WhereClause: ..., WriteableCollection: ..., WriteableTable: ..., registry:DataObjectURLs: ..., registry:HypertyURLs: ...}, storageName: 'registry'}, runtimeCapabilities: 'runtimeCapabilities', identifier: '80eb6f45-e879-1eb4-8305-808c4911004d', registrationRetries: 5, expiresTime: 3600, hypertiesListToRemove: Object{}, hypertiesList: [HypertyInstance{_id: ..., _url: ..., _descriptorURL: ..., _startingTime: ..., _lastModified: ..., _status: ..., _stubs: ..., _stubsConfiguration: ..., _p2pRequester: ..., _descriptor: ..., _hypertyURL: ..., _user: ..., _guid: ..., _runtime: ..., _context: ..., _p2pHandler: ..., _dataSchemes: ..., _resources: ...}], remoteHypertyList: [], remoteDataObjectList: [], idpLegacyProxyList: Object{}, watchingYou: WatchingYou{_watching: Object{p2pRequesterStub: ..., p2pConnectionList: ..., protostubsList: ..., idpProxyList: ...}, _observers: []}, p2pHandlerStub: Object{runtime://ua.pt: Object{url: ..., status: ...}}, p2pRequesterStub: Object{ua.pt: Object{url: ..., status: ...}}, p2pConnectionList: Object{}, p2pHandlerAssociation: Object{runtime://ua.pt: [...]}, protostubsList: Object{ua.pt: Object{url: ..., status: ...}, anotherDomain.pt: Object{url: ..., status: ...}}, idpProxyList: Object{}, dataObjectList: Object{}, subscribedDataObjectList: Object{}, sandboxesList: Object{sandbox: Object{runtime://ua.pt/protostub/329360a1-3110-2a35-c242-82343c6f081a: ..., runtime://ua.pt/p2phandler/81059c0d-5aec-2413-7560-f4124ece3996: ..., runtime://ua.pt/p2prequester/e24f048f-966a-c027-24d9-1c7e10ac40d9: ..., hyperty://ua.pt/1: ..., runtime://anotherDomain.pt/protostub/ab9066cf-e725-b7ea-dd2a-53c44acce184: ...}, appSandbox: Object{runtime://ua.pt: ...}}, pepList: Object{hyperty-catalogue://ua.pt/HelloHyperty: Object{}}, registries: Object{}, _domain: 'ua.pt', _p2pConnectionResolve: P2PConnectionResolve{_registry: Registry{registryURL: ..., appSandbox: ..., runtimeURL: ..., p2pHandlerURL: ..., runtimeCatalogue: ..., remoteRegistry: ..., idModule: ..., storageManager: ..., runtimeCapabilities: ..., identifier: ..., registrationRetries: ..., expiresTime: ..., hypertiesListToRemove: ..., hypertiesList: ..., remoteHypertyList: ..., remoteDataObjectList: ..., idpLegacyProxyList: ..., watchingYou: ..., p2pHandlerStub: ..., p2pRequesterStub: ..., p2pConnectionList: ..., p2pHandlerAssociation: ..., protostubsList: ..., idpProxyList: ..., dataObjectList: ..., subscribedDataObjectList: ..., sandboxesList: ..., pepList: ..., registries: ..., _domain: ..., _p2pConnectionResolve: ..., _runtimeURL: ..., _loader: ..., _messageBus: ..., addressAllocation: ..., registryDomain: ...}, _remoteP2PEntities: Object{}}, _runtimeURL: 'runtime://ua.pt', _loader: Loader{log: Logger{name: ..., levels: ..., methodFactory: ..., getLevel: ..., setLevel: ..., setDefaultLevel: ..., enableAll: ..., disableAll: ..., trace: ..., debug: ..., info: ..., warn: ..., error: ..., log: ...}, runtimeConfiguration: Object{}, descriptors: Descriptors{log: ..., runtimeConfiguration: ..., runtimeURL: ..., catalogue: ..., constraints: ...}, _runtimeURL: 'runtime://ua.pt', runtimeCatalogue: Object{getDataSchemaDescriptor: ...}, _registry: Registry{registryURL: ..., appSandbox: ..., runtimeURL: ..., p2pHandlerURL: ..., runtimeCatalogue: ..., remoteRegistry: ..., idModule: ..., storageManager: ..., runtimeCapabilities: ..., identifier: ..., registrationRetries: ..., expiresTime: ..., hypertiesListToRemove: ..., hypertiesList: ..., remoteHypertyList: ..., remoteDataObjectList: ..., idpLegacyProxyList: ..., watchingYou: ..., p2pHandlerStub: ..., p2pRequesterStub: ..., p2pConnectionList: ..., p2pHandlerAssociation: ..., protostubsList: ..., idpProxyList: ..., dataObjectList: ..., subscribedDataObjectList: ..., sandboxesList: ..., pepList: ..., registries: ..., _domain: ..., _p2pConnectionResolve: ..., _runtimeURL: ..., _loader: ..., _messageBus: ..., addressAllocation: ..., registryDomain: ...}, _addressAllocation: AddressAllocation{_url: ..., _bus: ..., _registry: ...}, _runtimeFactory: Object{databases: ..., storeManager: ...}, _messagesBus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ...}}, _messageBus: MessageBus{_msgId: 2, _subscriptions: Object{runtime://ua.pt/registry/: ..., domain://registry.ua.pt: ..., domain://msg-node.ua.pt/sm: ..., runtime://ua.pt/protostub/329360a1-3110-2a35-c242-82343c6f081a/status: ..., runtime://ua.pt/p2phandler/81059c0d-5aec-2413-7560-f4124ece3996/status: ..., runtime://ua.pt/p2prequester/e24f048f-966a-c027-24d9-1c7e10ac40d9/status: ..., runtime://anotherDomain.pt/protostub/ab9066cf-e725-b7ea-dd2a-53c44acce184/status: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{}, _registry: Registry{registryURL: ..., appSandbox: ..., runtimeURL: ..., p2pHandlerURL: ..., runtimeCatalogue: ..., remoteRegistry: ..., idModule: ..., storageManager: ..., runtimeCapabilities: ..., identifier: ..., registrationRetries: ..., expiresTime: ..., hypertiesListToRemove: ..., hypertiesList: ..., remoteHypertyList: ..., remoteDataObjectList: ..., idpLegacyProxyList: ..., watchingYou: ..., p2pHandlerStub: ..., p2pRequesterStub: ..., p2pConnectionList: ..., p2pHandlerAssociation: ..., protostubsList: ..., idpProxyList: ..., dataObjectList: ..., subscribedDataObjectList: ..., sandboxesList: ..., pepList: ..., registries: ..., _domain: ..., _p2pConnectionResolve: ..., _runtimeURL: ..., _loader: ..., _messageBus: ..., addressAllocation: ..., registryDomain: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}}, addressAllocation: AddressAllocation{_url: 'runtime://ua.pt/address-allocation', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ...}, _registry: undefined}, registryDomain: 'ua.pt'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'response:', 'runtime://ua.pt/protostub/329360a1-3110-2a35-c242-82343c6f081a' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'registry:DataObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'registry:DataObjectURLs', Object{hello-chathyperty-catalogue://catalogue.localhost/.well-known/dataschema/Communicationfakehyperty://localhost/d692091f-192c-420c-a763-a180f13e626a: 'comm://localhost/9303b707-f301-4929-ad7d-65a89a356871'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'MSG BUS LISTENER for Domain Registry: ', Object{type: 'create', from: 'runtime://ua.pt/registry/', to: 'domain://registry.ua.pt', body: Object{value: Object{name: ..., schema: ..., url: ..., reporter: ..., resources: ..., startingTime: ..., expires: ..., dataSchemes: ..., p2pHandler: ..., p2pRequester: ..., status: ...}, policy: 'policy'}, id: 3} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'registry:HypertyURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'registry:HypertyURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'registry:DataObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'checkRegisteredURLs should return a previously registered Data Object URL', ['comm://localhost/9303b707-f301-4929-ad7d-65a89a356871'] -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'registry:DataObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'registry:HypertyURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'https://catalogue.ua.pt/.well-known/idp-proxy/slack.com', 'catalogue.ua.pt', false -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'ProtoSTUB->', true -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'capabilities', Object{browser: true} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'runtime:URL', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', undefined, undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'p2pHandler:URL', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'runtime:URL', Object{runtimeURL: 'runtime://localhost/a7529762-af20-9c76-74a4-bba5f7ddb5d1'} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'p2pHandler:URL', Object{p2pHandlerURL: 'runtime://localhost/a7529762-af20-9c76-74a4-bba5f7ddb5d1/p2phandler/2ebe121b-2bf2-6c07-e861-aca03fe687ac'}
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'App Sandbox Browser' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: StorageManager{db: Dexie{_dbSchema: Object{rethink:activePolicy: ..., rethink:groups: ..., rethink:userPolicies: ..., rethink:spPolicies: ...}, version: function (versionNumber) { ... }, _allTables: Object{rethink:activePolicy: ..., rethink:groups: ..., rethink:userPolicies: ..., rethink:spPolicies: ...}, _tableFactory: function createTable(mode, tableSchema) { ... }, _createTransaction: function (mode, storeNames, dbschema, parentTransaction) { ... }, _whenReady: function (fn) { ... }, verno: 1, open: function () { ... }, close: function () { ... }, delete: function () { ... }, backendDB: function () { ... }, isOpen: function () { ... }, hasFailed: function () { ... }, dynamicallyOpened: function () { ... }, name: 'policy', on: function (eventName, subscriber) { ... }, transaction: function (mode, tableInstances, scopeFunc) { ... }, table: function (tableName) { ... }, Collection: function Collection(whereClause, keyRangeGenerator) { ... }, Table: function Table(name, tableSchema, collClass) { ... }, Transaction: function Transaction(mode, storeNames, dbschema, parent) { ... }, Version: function Version(versionNumber) { ... }, WhereClause: function WhereClause(table, index, orCollection) { ... }, WriteableCollection: function WriteableCollection() { ... }, WriteableTable: function WriteableTable(name, tableSchema, collClass) { ... }, rethink:activePolicy: WriteableTable{name: ..., schema: ..., hook: ..., _collClass: ...}, rethink:groups: WriteableTable{name: ..., schema: ..., hook: ..., _collClass: ...}, rethink:userPolicies: WriteableTable{name: ..., schema: ..., hook: ..., _collClass: ...}, rethink:spPolicies: WriteableTable{name: ..., schema: ..., hook: ..., _collClass: ...}}, storageName: 'policy'} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'rethink:activePolicy', undefined
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Browser Request' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[NOTSAVING] storeDataObjects', DataObjectsStorage{_storageManager: StorageManager{db: Dexie{_dbSchema: ..., version: ..., _allTables: ..., _tableFactory: ..., _createTransaction: ..., _whenReady: ..., verno: ..., open: ..., close: ..., delete: ..., backendDB: ..., isOpen: ..., hasFailed: ..., dynamicallyOpened: ..., name: ..., on: ..., transaction: ..., table: ..., Collection: ..., Table: ..., Transaction: ..., Version: ..., WhereClause: ..., WriteableCollection: ..., WriteableTable: ..., syncherManager:ObjectURLs: ...}, storageName: 'syncherManager'}, _storeDataObject: Object{}, _cache: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'subscriptions', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', null, null -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'dataObjectSessionKeys', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'rethink:groups', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Identities.Load Identities] identities: ', Object{} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'userAsymmetricKey', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'rethink:spPolicies', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'rethink:userPolicies', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'userAsymmetricKey', Object{public: Uint8Array{0: 48, 1: 130, 2: 1, 3: 34, 4: 48, 5: 13, 6: 6, 7: 9, 8: 42, 9: 134, 10: 72, 11: 134, 12: 247, 13: 13, 14: 1, 15: 1, 16: 1, 17: 5, 18: 0, 19: 3, 20: 130, 21: 1, 22: 15, 23: 0, 24: 48, 25: 130, 26: 1, 27: 10, 28: 2, 29: 130, 30: 1, 31: 1, 32: 0, 33: 166, 34: 167, 35: 222, 36: 69, 37: 120, 38: 19, 39: 10, 40: 13, 41: 237, 42: 166, 43: 113, 44: 230, 45: 205, 46: 66, 47: 53, 48: 242, 49: 49, 50: 18, 51: 204, 52: 30, 53: 185, 54: 187, 55: 241, 56: 191, 57: 61, 58: 134, 59: 120, 60: 2, 61: 182, 62: 173, 63: 94, 64: 182, 65: 0, 66: 220, 67: 20, 68: 159, 69: 18, 70: 104, 71: 91, 72: 225, 73: 33, 74: 243, 75: 182, 76: 240, 77: 177, 78: 156, 79: 2, 80: 243, 81: 99, 82: 43, 83: 132, 84: 117, 85: 209, 86: 140, 87: 119, 88: 186, 89: 149, 90: 76, 91: 124, 92: 160, 93: 0, 94: 215, 95: 27, 96: 6, 97: 88, 98: 54, 99: 43, 100: 9, 101: 166, 102: 174, 103: 40, 104: 232, 105: 159, 106: 15, 107: 176, 108: 59, 109: 158, 110: 198, 111: 19, 112: 199, 113: 64, 114: 88, 115: 212, 116: 84, 117: 105, 118: 12, 119: 241, 120: 14, 121: 73, 122: 207, 123: 10, 124: 22, 125: 10, 126: 167, 127: 214, 128: 67, 129: 145, 130: 102, 131: 73, 132: 223, 133: 195, 134: 47, 135: 218, 136: 96, 137: 137, 138: 126, 139: 6, 140: 200, 141: 195, 142: 188, 143: 3, 144: 245, 145: 158, 146: 255, 147: 235, 148: 196, 149: 222, 150: 117, 151: 167, 152: 22, 153: 206, 154: 4, 155: 43, 156: 150, 157: 138, 158: 173, 159: 44, 160: 232, 161: 80, 162: 153, 163: 67, 164: 180, 165: 96, 166: 181, 167: 45, 168: 192, 169: 201, 170: 23, 171: 194, 172: 237, 173: 249, 174: 132, 175: 135, 176: 169, 177: 48, 178: 7, 179: 144, 180: 250, 181: 51, 182: 57, 183: 136, 184: 68, 185: 13, 186: 116, 187: 160, 188: 83, 189: 165, 190: 83, 191: 13, 192: 75, 193: 111, 194: 61, 195: 170, 196: 128, 197: 163, 198: 219, 199: 70, 200: 62, 201: 155, 202: 195, 203: 71, 204: 87, 205: 159, 206: 59, 207: 217, 208: 240, 209: 144, 210: 100, 211: 166, 212: 164, 213: 126, 214: 146, 215: 16, 216: 195, 217: 143, 218: 224, 219: 155, 220: 55, 221: 18, 222: 221, 223: 8, 224: 224, 225: 117, 226: 77, 227: 41, 228: 255, 229: 24, 230: 143, 231: 76, 232: 203, 233: 156, 234: 72, 235: 214, 236: 80, 237: 29, 238: 134, 239: 4, 240: 52, 241: 201, 242: 194, 243: 215, 244: 141, 245: 200, 246: 122, 247: 220, 248: 78, 249: 249, 250: 2, 251: 21, 252: 143, 253: 58, 254: 48, 255: 68, 256: 203, 257: 158, 258: 202, 259: 14, 260: 53, 261: 202, 262: 233, 263: 191, 264: 197, 265: 147, 266: 60, 267: 124, 268: 233, 269: 108, 270: 43, 271: 168, 272: 193, 273: 83, 274: 207, 275: 111, 276: 40, 277: 198, 278: 17, 279: 157, 280: 139, 281: 165, 282: 57, 283: 62, 284: 142, 285: 73, 286: 31, 287: 19, 288: 189, 289: 2, 290: 3, 291: 1, 292: 0, 293: 1}, private: Uint8Array{0: 48, 1: 130, 2: 4, 3: 188, 4: 2, 5: 1, 6: 0, 7: 48, 8: 13, 9: 6, 10: 9, 11: 42, 12: 134, 13: 72, 14: 134, 15: 247, 16: 13, 17: 1, 18: 1, 19: 1, 20: 5, 21: 0, 22: 4, 23: 130, 24: 4, 25: 166, 26: 48, 27: 130, 28: 4, 29: 162, 30: 2, 31: 1, 32: 0, 33: 2, 34: 130, 35: 1, 36: 1, 37: 0, 38: 166, 39: 167, 40: 222, 41: 69, 42: 120, 43: 19, 44: 10, 45: 13, 46: 237, 47: 166, 48: 113, 49: 230, 50: 205, 51: 66, 52: 53, 53: 242, 54: 49, 55: 18, 56: 204, 57: 30, 58: 185, 59: 187, 60: 241, 61: 191, 62: 61, 63: 134, 64: 120, 65: 2, 66: 182, 67: 173, 68: 94, 69: 182, 70: 0, 71: 220, 72: 20, 73: 159, 74: 18, 75: 104, 76: 91, 77: 225, 78: 33, 79: 243, 80: 182, 81: 240, 82: 177, 83: 156, 84: 2, 85: 243, 86: 99, 87: 43, 88: 132, 89: 117, 90: 209, 91: 140, 92: 119, 93: 186, 94: 149, 95: 76, 96: 124, 97: 160, 98: 0, 99: 215, 100: 27, 101: 6, 102: 88, 103: 54, 104: 43, 105: 9, 106: 166, 107: 174, 108: 40, 109: 232, 110: 159, 111: 15, 112: 176, 113: 59, 114: 158, 115: 198, 116: 19, 117: 199, 118: 64, 119: 88, 120: 212, 121: 84, 122: 105, 123: 12, 124: 241, 125: 14, 126: 73, 127: 207, 128: 10, 129: 22, 130: 10, 131: 167, 132: 214, 133: 67, 134: 145, 135: 102, 136: 73, 137: 223, 138: 195, 139: 47, 140: 218, 141: 96, 142: 137, 143: 126, 144: 6, 145: 200, 146: 195, 147: 188, 148: 3, 149: 245, 150: 158, 151: 255, 152: 235, 153: 196, 154: 222, 155: 117, 156: 167, 157: 22, 158: 206, 159: 4, 160: 43, 161: 150, 162: 138, 163: 173, 164: 44, 165: 232, 166: 80, 167: 153, 168: 67, 169: 180, 170: 96, 171: 181, 172: 45, 173: 192, 174: 201, 175: 23, 176: 194, 177: 237, 178: 249, 179: 132, 180: 135, 181: 169, 182: 48, 183: 7, 184: 144, 185: 250, 186: 51, 187: 57, 188: 136, 189: 68, 190: 13, 191: 116, 192: 160, 193: 83, 194: 165, 195: 83, 196: 13, 197: 75, 198: 111, 199: 61, 200: 170, 201: 128, 202: 163, 203: 219, 204: 70, 205: 62, 206: 155, 207: 195, 208: 71, 209: 87, 210: 159, 211: 59, 212: 217, 213: 240, 214: 144, 215: 100, 216: 166, 217: 164, 218: 126, 219: 146, 220: 16, 221: 195, 222: 143, 223: 224, 224: 155, 225: 55, 226: 18, 227: 221, 228: 8, 229: 224, 230: 117, 231: 77, 232: 41, 233: 255, 234: 24, 235: 143, 236: 76, 237: 203, 238: 156, 239: 72, 240: 214, 241: 80, 242: 29, 243: 134, 244: 4, 245: 52, 246: 201, 247: 194, 248: 215, 249: 141, 250: 200, 251: 122, 252: 220, 253: 78, 254: 249, 255: 2, 256: 21, 257: 143, 258: 58, 259: 48, 260: 68, 261: 203, 262: 158, 263: 202, 264: 14, 265: 53, 266: 202, 267: 233, 268: 191, 269: 197, 270: 147, 271: 60, 272: 124, 273: 233, 274: 108, 275: 43, 276: 168, 277: 193, 278: 83, 279: 207, 280: 111, 281: 40, 282: 198, 283: 17, 284: 157, 285: 139, 286: 165, 287: 57, 288: 62, 289: 142, 290: 73, 291: 31, 292: 19, 293: 189, 294: 2, 295: 3, 296: 1, 297: 0, 298: 1, 299: 2, 300: 130, 301: 1, 302: 0, 303: 42, 304: 203, 305: 126, 306: 147, 307: 62, 308: 51, 309: 61, 310: 104, 311: 184, 312: 54, 313: 254, 314: 150, 315: 178, 316: 236, 317: 166, 318: 167, 319: 171, 320: 156, 321: 85, 322: 24, 323: 42, 324: 191, 325: 173, 326: 99, 327: 91, 328: 108, 329: 53, 330: 83, 331: 21, 332: 15, 333: 205, 334: 251, 335: 84, 336: 155, 337: 47, 338: 28, 339: 110, 340: 0, 341: 168, 342: 95, 343: 86, 344: 117, 345: 155, 346: 235, 347: 144, 348: 224, 349: 44, 350: 13, 351: 205, 352: 208, 353: 117, 354: 242, 355: 63, 356: 62, 357: 31, 358: 220, 359: 164, 360: 204, 361: 0, 362: 80, 363: 162, 364: 6, 365: 154, 366: 164, 367: 245, 368: 111, 369: 235, 370: 123, 371: 77, 372: 246, 373: 249, 374: 0, 375: 75, 376: 32, 377: 31, 378: 52, 379: 32, 380: 32, 381: 99, 382: 33, 383: 206, 384: 79, 385: 65, 386: 46, 387: 239, 388: 206, 389: 231, 390: 243, 391: 176, 392: 86, 393: 95, 394: 19, 395: 171, 396: 230, 397: 207, 398: 105, 399: 136, 400: 99, 401: 200, 402: 226, 403: 145, 404: 223, 405: 174, 406: 231, 407: 13, 408: 71, 409: 116, 410: 124, 411: 135, 412: 110, 413: 183, 414: 97, 415: 146, 416: 83, 417: 203, 418: 122, 419: 65, 420: 89, 421: 218, 422: 239, 423: 75, 424: 53, 425: 220, 426: 239, 427: 138, 428: 106, 429: 207, 430: 213, 431: 234, 432: 3, 433: 34, 434: 254, 435: 193, 436: 230, 437: 188, 438: 84, 439: 2, 440: 233, 441: 38, 442: 208, 443: 25, 444: 161, 445: 205, 446: 6, 447: 95, 448: 106, 449: 153, 450: 234, 451: 160, 452: 146, 453: 14, 454: 125, 455: 15, 456: 212, 457: 21, 458: 104, 459: 105, 460: 86, 461: 198, 462: 95, 463: 39, 464: 141, 465: 229, 466: 177, 467: 194, 468: 151, 469: 54, 470: 142, 471: 96, 472: 245, 473: 186, 474: 71, 475: 208, 476: 99, 477: 198, 478: 35, 479: 72, 480: 39, 481: 84, 482: 19, 483: 134, 484: 133, 485: 191, 486: 8, 487: 164, 488: 240, 489: 185, 490: 169, 491: 231, 492: 99, 493: 10, 494: 187, 495: 168, 496: 54, 497: 140, 498: 253, 499: 208, 500: 60, 501: 232, 502: 136, 503: 173, 504: 80, 505: 76, 506: 223, 507: 183, 508: 167, 509: 178, 510: 7, 511: 16, 512: 88, 513: 48, 514: 101, 515: 149, 516: 182, 517: 60, 518: 16, 519: 82, 520: 241, 521: 221, 522: 5, 523: 119, 524: 197, 525: 23, 526: 72, 527: 134, 528: 111, 529: 51, 530: 11, 531: 78, 532: 223, 533: 149, 534: 15, 535: 147, 536: 231, 537: 90, 538: 67, 539: 15, 540: 252, 541: 254, 542: 160, 543: 144, 544: 18, 545: 16, 546: 7, 547: 100, 548: 201, 549: 83, 550: 239, 551: 115, 552: 226, 553: 55, 554: 16, 555: 38, 556: 184, 557: 33, 558: 77, 559: 2, 560: 129, 561: 129, 562: 0, 563: 212, 564: 239, 565: 95, 566: 172, 567: 38, 568: 225, 569: 103, 570: 223, 571: 255, 572: 1, 573: 152, 574: 63, 575: 154, 576: 175, 577: 172, 578: 191, 579: 45, 580: 200, 581: 87, 582: 50, 583: 225, 584: 78, 585: 253, 586: 243, 587: 4, 588: 163, 589: 245, 590: 31, 591: 74, 592: 40, 593: 211, 594: 32, 595: 92, 596: 33, 597: 33, 598: 170, 599: 246, 600: 77, 601: 73, 602: 7, 603: 152, 604: 186, 605: 201, 606: 38, 607: 101, 608: 174, 609: 31, 610: 197, 611: 247, 612: 33, 613: 79, 614: 121, 615: 65, 616: 127, 617: 171, 618: 152, 619: 162, 620: 222, 621: 135, 622: 93, 623: 16, 624: 62, 625: 100, 626: 73, 627: 134, 628: 254, 629: 218, 630: 67, 631: 176, 632: 199, 633: 225, 634: 44, 635: 251, 636: 50, 637: 137, 638: 126, 639: 192, 640: 74, 641: 170, 642: 146, 643: 184, 644: 59, 645: 222, 646: 211, 647: 250, 648: 4, 649: 154, 650: 208, 651: 31, 652: 180, 653: 200, 654: 250, 655: 57, 656: 236, 657: 104, 658: 177, 659: 204, 660: 224, 661: 90, 662: 251, 663: 136, 664: 4, 665: 220, 666: 69, 667: 125, 668: 84, 669: 97, 670: 82, 671: 211, 672: 133, 673: 6, 674: 227, 675: 16, 676: 156, 677: 96, 678: 146, 679: 80, 680: 245, 681: 30, 682: 253, 683: 214, 684: 233, 685: 101, 686: 204, 687: 196, 688: 79, 689: 63, 690: 179, 691: 2, 692: 129, 693: 129, 694: 0, 695: 200, 696: 92, 697: 102, 698: 203, 699: 112, 700: 226, 701: 247, 702: 82, 703: 5, 704: 206, 705: 71, 706: 160, 707: 28, 708: 52, 709: 131, 710: 43, 711: 105, 712: 183, 713: 225, 714: 132, 715: 27, 716: 79, 717: 124, 718: 50, 719: 186, 720: 70, 721: 49, 722: 27, 723: 86, 724: 36, 725: 103, 726: 206, 727: 10, 728: 73, 729: 173, 730: 241, 731: 10, 732: 42, 733: 42, 734: 180, 735: 89, 736: 122, 737: 253, 738: 32, 739: 119, 740: 101, 741: 96, 742: 157, 743: 12, 744: 80, 745: 235, 746: 210, 747: 57, 748: 153, 749: 115, 750: 223, 751: 32, 752: 40, 753: 239, 754: 65, 755: 239, 756: 205, 757: 176, 758: 250, 759: 1, 760: 163, 761: 17, 762: 150, 763: 14, 764: 140, 765: 243, 766: 22, 767: 93, 768: 42, 769: 166, 770: 145, 771: 64, 772: 226, 773: 202, 774: 169, 775: 34, 776: 229, 777: 50, 778: 152, 779: 86, 780: 187, 781: 121, 782: 29, 783: 223, 784: 141, 785: 25, 786: 29, 787: 135, 788: 203, 789: 70, 790: 84, 791: 185, 792: 120, 793: 190, 794: 180, 795: 109, 796: 199, 797: 38, 798: 137, 799: 85, 800: 188, 801: 145, 802: 167, 803: 254, 804: 173, 805: 3, 806: 12, 807: 84, 808: 27, 809: 1, 810: 108, 811: 43, 812: 222, 813: 220, 814: 55, 815: 111, 816: 147, 817: 223, 818: 245, 819: 245, 820: 18, 821: 38, 822: 207, 823: 2, 824: 129, 825: 128, 826: 87, 827: 151, 828: 140, 829: 132, 830: 149, 831: 141, 832: 221, 833: 156, 834: 16, 835: 27, 836: 72, 837: 212, 838: 201, 839: 62, 840: 0, 841: 210, 842: 183, 843: 243, 844: 148, 845: 163, 846: 50, 847: 121, 848: 187, 849: 15, 850: 79, 851: 214, 852: 94, 853: 76, 854: 27, 855: 198, 856: 133, 857: 106, 858: 231, 859: 91, 860: 29, 861: 173, 862: 101, 863: 26, 864: 79, 865: 179, 866: 87, 867: 73, 868: 102, 869: 219, 870: 107, 871: 178, 872: 96, 873: 17, 874: 160, 875: 98, 876: 76, 877: 125, 878: 245, 879: 202, 880: 157, 881: 252, 882: 240, 883: 234, 884: 151, 885: 70, 886: 90, 887: 27, 888: 64, 889: 71, 890: 218, 891: 199, 892: 85, 893: 99, 894: 201, 895: 1, 896: 192, 897: 8, 898: 47, 899: 225, 900: 15, 901: 28, 902: 91, 903: 223, 904: 155, 905: 33, 906: 53, 907: 182, 908: 51, 909: 40, 910: 129, 911: 205, 912: 137, 913: 29, 914: 154, 915: 29, 916: 85, 917: 27, 918: 81, 919: 222, 920: 133, 921: 6, 922: 182, 923: 223, 924: 135, 925: 173, 926: 182, 927: 187, 928: 65, 929: 29, 930: 56, 931: 188, 932: 16, 933: 56, 934: 241, 935: 23, 936: 228, 937: 200, 938: 93, 939: 25, 940: 230, 941: 195, 942: 233, 943: 151, 944: 155, 945: 195, 946: 17, 947: 183, 948: 251, 949: 15, 950: 107, 951: 165, 952: 169, 953: 239, 954: 2, 955: 129, 956: 128, 957: 73, 958: 137, 959: 208, 960: 152, 961: 222, 962: 232, 963: 15, 964: 10, 965: 101, 966: 227, 967: 30, 968: 90, 969: 223, 970: 191, 971: 78, 972: 93, 973: 130, 974: 193, 975: 224, 976: 221, 977: 210, 978: 0, 979: 76, 980: 127, 981: 121, 982: 235, 983: 5, 984: 95, 985: 25, 986: 48, 987: 231, 988: 128, 989: 178, 990: 57, 991: 244, 992: 195, 993: 193, 994: 141, 995: 84, 996: 123, 997: 57, 998: 84, 999: 112, 1000: 207, 1001: 151, 1002: 194, 1003: 247, 1004: 192, 1005: 236, 1006: 162, 1007: 78, 1008: 203, 1009: 172, 1010: 36, 1011: 108, 1012: 104, 1013: 250, 1014: 174, 1015: 203, 1016: 146, 1017: 17, 1018: 232, 1019: 23, 1020: 10, 1021: 203, 1022: 203, 1023: 4, 1024: 75, 1025: 101, 1026: 47, 1027: 202, 1028: 144, 1029: 236, 1030: 197, 1031: 24, 1032: 185, 1033: 187, 1034: 109, 1035: 2, 1036: 33, 1037: 46, 1038: 19, 1039: 157, 1040: 140, 1041: 88, 1042: 89, 1043: 26, 1044: 205, 1045: 34, 1046: 29, 1047: 241, 1048: 151, 1049: 235, 1050: 29, 1051: 106, 1052: 196, 1053: 242, 1054: 6, 1055: 37, 1056: 72, 1057: 167, 1058: 250, 1059: 46, 1060: 100, 1061: 189, 1062: 185, 1063: 38, 1064: 100, 1065: 216, 1066: 142, 1067: 187, 1068: 205, 1069: 172, 1070: 152, 1071: 244, 1072: 222, 1073: 181, 1074: 3, 1075: 105, 1076: 36, 1077: 87, 1078: 169, 1079: 152, 1080: 203, 1081: 247, 1082: 149, 1083: 31, 1084: 245, 1085: 2, 1086: 129, 1087: 128, 1088: 127, 1089: 254, 1090: 81, 1091: 151, 1092: 5, 1093: 209, 1094: 94, 1095: 179, 1096: 64, 1097: 153, 1098: 240, 1099: 206, 1100: 57, 1101: 90, 1102: 11, 1103: 199, 1104: 44, 1105: 158, 1106: 103, 1107: 119, 1108: 177, 1109: 245, 1110: 52, 1111: 11, 1112: 123, 1113: 46, 1114: 82, 1115: 228, 1116: 39, 1117: 93, 1118: 233, 1119: 67, 1120: 135, 1121: 135, 1122: 202, 1123: 64, 1124: 146, 1125: 55, 1126: 15, 1127: 167, 1128: 47, 1129: 156, 1130: 17, 1131: 55, 1132: 46, 1133: 183, 1134: 144, 1135: 210, 1136: 198, 1137: 69, 1138: 188, 1139: 177, 1140: 124, 1141: 221, 1142: 43, 1143: 116, 1144: 147, 1145: 162, 1146: 51, 1147: 120, 1148: 65, 1149: 82, 1150: 200, 1151: 38, 1152: 92, 1153: 111, 1154: 13, 1155: 144, 1156: 17, 1157: 110, 1158: 65, 1159: 71, 1160: 85, 1161: 207, 1162: 148, 1163: 26, 1164: 65, 1165: 131, 1166: 252, 1167: 42, 1168: 233, 1169: 159, 1170: 28, 1171: 194, 1172: 197, 1173: 225, 1174: 44, 1175: 215, 1176: 137, 1177: 106, 1178: 122, 1179: 140, 1180: 1, 1181: 16, 1182: 212, 1183: 83, 1184: 127, 1185: 57, 1186: 98, 1187: 55, 1188: 210, 1189: 79, 1190: 38, 1191: 68, 1192: 211, 1193: 241, 1194: 245, 1195: 235, 1196: 157, 1197: 0, 1198: 140, 1199: 186, 1200: 188, 1201: 10, 1202: 43, 1203: 113, 1204: 68, 1205: 252, 1206: 101, 1207: 181, 1208: 128, 1209: 51, 1210: 201, 1211: 146, 1212: 204, 1213: 187, 1214: 42, 1215: 22}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'accessTokens', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'hyperty-catalogue://catalogue.sp.domain/.well-known/hyperty/HelloHyperty', 'catalogue.sp.domain', false -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'hyperty-catalogue://catalogue.sp.domain/.well-known/hyperty/HelloHyperty', 'catalogue.sp.domain', false -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'hyperty-catalogue://catalogue.sp.domain/.well-known/hyperty/HelloHyperty', 'catalogue.sp.domain', false -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'hyperty-catalogue://catalogue.sp.domain/.well-known/hyperty/HelloHyperty', 'catalogue.sp.domain', false -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST - _reuseAllocatedAddress', 'localhost', 1, Object{sourcePackage: Object{sourceCode: '', sourceCodeClassname: 'HelloHyperty', encoding: 'UTF-8', signature: ''}, cguid: 10003, version: 0.1, description: 'Description of GroupChat', objectName: 'HelloHyperty', configuration: Object{}, hypertyType: ['chat'], sourcePackageURL: '/sourcePackage', language: 'javascript', signature: '', messageSchemas: '', dataObjects: ['https://catalogue.sp.domain/.well-known/dataschema/Communication'], accessControlPolicy: 'somePolicy'}, 'hyperty', true -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'checkRegisteredURLs:', 'boolean', true -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST - registeredurls', 'hyperty://sp.domain/9c8c1949-e08e-4554-b201-bab201bdb21d' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'hyperty-catalogue://catalogue.sp.domain/.well-known/hyperty/HelloHyperty', 'catalogue.sp.domain', false -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'wtf', Promise{} -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'sp.domain' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'sp.domain' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'sp.domain' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'sp.domain', 'sp.domain', true -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[SandboxBrowser] New with capabilities: ', Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Registry - registerStub - Normal Stub] descriptor', Object{cguid: '1', type: '0', version: '0.1', description: 'description of VertxProtoStub', objectName: 'VertxProtoStub', sourcePackageURL: '/sourcePackage', sourcePackage: Object{sourceCode: '(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define("activate", [], factory); - else if(typeof exports === 'object') - exports["activate"] = factory(); - else - root["activate"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -exports.default = activate; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** -* Copyright 2016 PT Inovação e Sistemas SA -* Copyright 2016 INESC-ID -* Copyright 2016 QUOBIS NETWORKS SL -* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V -* Copyright 2016 ORANGE SA -* Copyright 2016 Deutsche Telekom AG -* Copyright 2016 Apizee -* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -**/ - -var VertxProtoStub = function () { - /* private - _continuousOpen: boolean - _runtimeProtoStubURL: string - _bus: MiniBus - _msgCallback: (Message) => void - _config: { url, runtimeURL } - _sock: (WebSocket | SockJS) - _reOpen: boolean - */ - - /** - * Vertx ProtoStub creation - * @param {string} runtimeProtoStubURL - URL used internally for message delivery point. Not used for MessageNode deliver. - * @param {MiniBus} bus - MiniBus used to send/receive messages. Normally connected to the MessageBus. - * @param {Object} config - Mandatory fields are: "url" of the MessageNode address and "runtimeURL". - * @return {VertxProtoStub} - */ - function VertxProtoStub(runtimeProtoStubURL, bus, config) { - _classCallCheck(this, VertxProtoStub); - - if (!runtimeProtoStubURL) throw new Error('The runtimeProtoStubURL is a needed parameter'); - if (!bus) throw new Error('The bus is a needed parameter'); - if (!config) throw new Error('The config is a needed parameter'); - - if (!config.url) throw new Error('The config.url is a needed parameter'); - if (!config.runtimeURL) throw new Error('The config.runtimeURL is a needed parameter'); - - var _this = this; - - this._id = 0; - this._continuousOpen = true; - - this._runtimeProtoStubURL = runtimeProtoStubURL; - this._bus = bus; - this._config = config; - - this._runtimeSessionURL = config.runtimeURL; - this._reOpen = false; - console.log('ProtostubLoaded'); - - _this._sendStatus('created'); - _this._sendStatus('in-progress'); - _this._sendStatus('live'); - } - - /** - * Get the configuration for this ProtoStub - * @return {Object} - Mandatory fields are: "url" of the MessageNode address and "runtimeURL". - */ - - - _createClass(VertxProtoStub, [{ - key: 'connect', - - - /** - * Try to open the connection to the MessageNode. Connection is auto managed, there is no need to call this explicitly. - * However, if "disconnect()" is called, it's necessary to call this to enable connections again. - * A status message is sent to "runtimeProtoStubURL/status", containing the value "connected" if successful, or "disconnected" if some error occurs. - */ - value: function connect() { - var _this = this; - - _this._continuousOpen = true; - _this._open(function () {}); - } - - /** - * It will disconnect and order to stay disconnected. Reconnection tries, will not be attempted, unless "connect()" is called. - * A status message is sent to "runtimeProtoStubURL/status" with value "disconnected". - */ - - }, { - key: 'disconnect', - value: function disconnect() { - var _this = this; - - _this._continuousOpen = false; - } - - //todo: add documentation - - }, { - key: '_sendOpen', - value: function _sendOpen(callback) { - var _this = this; - - _this._sendStatus('in-progress'); - _this._sendStatus('live'); - callback(); - } - }, { - key: '_sendClose', - value: function _sendClose() { - var _this = this; - - _this._id++; - var msg = { - id: _this._id, type: 'close', from: _this._runtimeSessionURL, to: 'mn:/session' - }; - - //invalidate runtimeSession - _this._reOpen = false; - _this._runtimeSessionURL = _this._config._runtimeURL; - } - }, { - key: '_sendStatus', - value: function _sendStatus(value, reason) { - var _this = this; - - console.log('[VertxProtostub status changed] to ', value); - - _this._state = value; - - var msg = { - type: 'update', - from: _this._runtimeProtoStubURL, - to: _this._runtimeProtoStubURL + '/status', - body: { - value: value - } - }; - - if (reason) { - msg.body.desc = reason; - } - - _this._bus.postMessage(msg); - } - }, { - key: '_filter', - value: function _filter(msg) { - if (msg.body && msg.body.via === this._runtimeProtoStubURL) { - return false; - } else { - return true; - } - } - }, { - key: '_deliver', - value: function _deliver(msg) { - if (!msg.body) msg.body = {}; - - msg.body.via = this._runtimeProtoStubURL; - console.log('[VertxProtoStub: MN -> ProtoStub]', msg); - this._bus.postMessage(msg); - } - - // add documentation - - }, { - key: '_open', - value: function _open(callback) { - var _this = this; - - if (!this._continuousOpen) { - //TODO: send status (sent message error - disconnected) - return; - } - - this._sendOpen(callback); - } - }, { - key: 'config', - get: function get() { - return this._config; - } - }, { - key: 'runtimeSession', - get: function get() { - return this._runtimeSessionURL; - } - }]); - - return VertxProtoStub; -}(); - -function activate(url, bus, config) { - return { - name: 'VertxProtoStub', - instance: new VertxProtoStub(url, bus, config) - }; -} - -/** -* Callback used to send messages -* @callback PostMessage -* @param {Message} msg - Message to send -*/ - -module.exports = exports['default']; - -/***/ }) -/******/ ]); -});', sourceCodeClassname: 'VertxProtoStub', encoding: 'Base64', signature: ''}, language: 'Javascript ECMA5', signature: '', messageSchemas: '', configuration: Object{url: 'wss://127.0.0.1:9090/ws'}, constraints: '', hypertyCapabilities: '', protocolCapabilities: '', policies: '', dataObjects: []} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> internal (in)', 'from: ', 'hyperty-runtime://sandbox/external', 'to: ', 'hyperty-runtime://sandbox/internal' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxRegistry._create ', 'runtime://sp.domain/protostub/eb3e7ec5-161b-e6cc-d7c9-bd237fddca94', Object{url: 'wss://127.0.0.1:9090/ws', runtimeURL: 'runtime://localhost/a7529762-af20-9c76-74a4-bba5f7ddb5d1'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'ProtostubLoaded' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[VertxProtostub status changed] to ', 'created' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'runtime://sp.domain/protostub/eb3e7ec5-161b-e6cc-d7c9-bd237fddca94', 'to: ', 'runtime://sp.domain/protostub/eb3e7ec5-161b-e6cc-d7c9-bd237fddca94/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[VertxProtostub status changed] to ', 'in-progress' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'runtime://sp.domain/protostub/eb3e7ec5-161b-e6cc-d7c9-bd237fddca94', 'to: ', 'runtime://sp.domain/protostub/eb3e7ec5-161b-e6cc-d7c9-bd237fddca94/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[VertxProtostub status changed] to ', 'live' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'runtime://sp.domain/protostub/eb3e7ec5-161b-e6cc-d7c9-bd237fddca94', 'to: ', 'runtime://sp.domain/protostub/eb3e7ec5-161b-e6cc-d7c9-bd237fddca94/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'hyperty-runtime://sandbox/internal', 'to: ', 'hyperty-runtime://sandbox/external' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'sp.domain' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'sp.domain' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'sp.domain' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'sp.domain', 'sp.domain', true -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[SandboxBrowser] New with capabilities: ', Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Registry - registerStub - Normal Stub] descriptor', Object{cguid: '1', type: '0', version: '0.1', description: 'description of VertxProtoStub', objectName: 'VertxProtoStub', sourcePackageURL: '/sourcePackage', sourcePackage: Object{sourceCode: '(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define("activate", [], factory); - else if(typeof exports === 'object') - exports["activate"] = factory(); - else - root["activate"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -exports.default = activate; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** -* Copyright 2016 PT Inovação e Sistemas SA -* Copyright 2016 INESC-ID -* Copyright 2016 QUOBIS NETWORKS SL -* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V -* Copyright 2016 ORANGE SA -* Copyright 2016 Deutsche Telekom AG -* Copyright 2016 Apizee -* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -**/ - -var VertxProtoStub = function () { - /* private - _continuousOpen: boolean - _runtimeProtoStubURL: string - _bus: MiniBus - _msgCallback: (Message) => void - _config: { url, runtimeURL } - _sock: (WebSocket | SockJS) - _reOpen: boolean - */ - - /** - * Vertx ProtoStub creation - * @param {string} runtimeProtoStubURL - URL used internally for message delivery point. Not used for MessageNode deliver. - * @param {MiniBus} bus - MiniBus used to send/receive messages. Normally connected to the MessageBus. - * @param {Object} config - Mandatory fields are: "url" of the MessageNode address and "runtimeURL". - * @return {VertxProtoStub} - */ - function VertxProtoStub(runtimeProtoStubURL, bus, config) { - _classCallCheck(this, VertxProtoStub); - - if (!runtimeProtoStubURL) throw new Error('The runtimeProtoStubURL is a needed parameter'); - if (!bus) throw new Error('The bus is a needed parameter'); - if (!config) throw new Error('The config is a needed parameter'); - - if (!config.url) throw new Error('The config.url is a needed parameter'); - if (!config.runtimeURL) throw new Error('The config.runtimeURL is a needed parameter'); - - var _this = this; - - this._id = 0; - this._continuousOpen = true; - - this._runtimeProtoStubURL = runtimeProtoStubURL; - this._bus = bus; - this._config = config; - - this._runtimeSessionURL = config.runtimeURL; - this._reOpen = false; - console.log('ProtostubLoaded'); - - _this._sendStatus('created'); - _this._sendStatus('in-progress'); - _this._sendStatus('live'); - } - - /** - * Get the configuration for this ProtoStub - * @return {Object} - Mandatory fields are: "url" of the MessageNode address and "runtimeURL". - */ - - - _createClass(VertxProtoStub, [{ - key: 'connect', - - - /** - * Try to open the connection to the MessageNode. Connection is auto managed, there is no need to call this explicitly. - * However, if "disconnect()" is called, it's necessary to call this to enable connections again. - * A status message is sent to "runtimeProtoStubURL/status", containing the value "connected" if successful, or "disconnected" if some error occurs. - */ - value: function connect() { - var _this = this; - - _this._continuousOpen = true; - _this._open(function () {}); - } - - /** - * It will disconnect and order to stay disconnected. Reconnection tries, will not be attempted, unless "connect()" is called. - * A status message is sent to "runtimeProtoStubURL/status" with value "disconnected". - */ - - }, { - key: 'disconnect', - value: function disconnect() { - var _this = this; - - _this._continuousOpen = false; - } - - //todo: add documentation - - }, { - key: '_sendOpen', - value: function _sendOpen(callback) { - var _this = this; - - _this._sendStatus('in-progress'); - _this._sendStatus('live'); - callback(); - } - }, { - key: '_sendClose', - value: function _sendClose() { - var _this = this; - - _this._id++; - var msg = { - id: _this._id, type: 'close', from: _this._runtimeSessionURL, to: 'mn:/session' - }; - - //invalidate runtimeSession - _this._reOpen = false; - _this._runtimeSessionURL = _this._config._runtimeURL; - } - }, { - key: '_sendStatus', - value: function _sendStatus(value, reason) { - var _this = this; - - console.log('[VertxProtostub status changed] to ', value); - - _this._state = value; - - var msg = { - type: 'update', - from: _this._runtimeProtoStubURL, - to: _this._runtimeProtoStubURL + '/status', - body: { - value: value - } - }; - - if (reason) { - msg.body.desc = reason; - } - - _this._bus.postMessage(msg); - } - }, { - key: '_filter', - value: function _filter(msg) { - if (msg.body && msg.body.via === this._runtimeProtoStubURL) { - return false; - } else { - return true; - } - } - }, { - key: '_deliver', - value: function _deliver(msg) { - if (!msg.body) msg.body = {}; - - msg.body.via = this._runtimeProtoStubURL; - console.log('[VertxProtoStub: MN -> ProtoStub]', msg); - this._bus.postMessage(msg); - } - - // add documentation - - }, { - key: '_open', - value: function _open(callback) { - var _this = this; - - if (!this._continuousOpen) { - //TODO: send status (sent message error - disconnected) - return; - } - - this._sendOpen(callback); - } - }, { - key: 'config', - get: function get() { - return this._config; - } - }, { - key: 'runtimeSession', - get: function get() { - return this._runtimeSessionURL; - } - }]); - - return VertxProtoStub; -}(); - -function activate(url, bus, config) { - return { - name: 'VertxProtoStub', - instance: new VertxProtoStub(url, bus, config) - }; -} - -/** -* Callback used to send messages -* @callback PostMessage -* @param {Message} msg - Message to send -*/ - -module.exports = exports['default']; - -/***/ }) -/******/ ]); -});', sourceCodeClassname: 'VertxProtoStub', encoding: 'Base64', signature: ''}, language: 'Javascript ECMA5', signature: '', messageSchemas: '', configuration: Object{url: 'wss://127.0.0.1:9090/ws', runtimeURL: 'runtime://localhost/a7529762-af20-9c76-74a4-bba5f7ddb5d1'}, constraints: '', hypertyCapabilities: '', protocolCapabilities: '', policies: '', dataObjects: []} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> internal (in)', 'from: ', 'hyperty-runtime://sandbox/external', 'to: ', 'hyperty-runtime://sandbox/internal' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxRegistry._create ', 'runtime://sp.domain/protostub/3a4338ea-c42c-41cf-f49c-54f832253d79', Object{url: 'wss://127.0.0.1:9090/ws', runtimeURL: 'runtime://localhost/a7529762-af20-9c76-74a4-bba5f7ddb5d1'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'ProtostubLoaded' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[VertxProtostub status changed] to ', 'created' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'runtime://sp.domain/protostub/3a4338ea-c42c-41cf-f49c-54f832253d79', 'to: ', 'runtime://sp.domain/protostub/3a4338ea-c42c-41cf-f49c-54f832253d79/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[VertxProtostub status changed] to ', 'in-progress' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'runtime://sp.domain/protostub/3a4338ea-c42c-41cf-f49c-54f832253d79', 'to: ', 'runtime://sp.domain/protostub/3a4338ea-c42c-41cf-f49c-54f832253d79/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[VertxProtostub status changed] to ', 'live' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'runtime://sp.domain/protostub/3a4338ea-c42c-41cf-f49c-54f832253d79', 'to: ', 'runtime://sp.domain/protostub/3a4338ea-c42c-41cf-f49c-54f832253d79/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'hyperty-runtime://sandbox/internal', 'to: ', 'hyperty-runtime://sandbox/external' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'sp.domain' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'sp.domain' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'sp.domain' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'sp.domain', 'sp.domain', true -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[SandboxBrowser] New with capabilities: ', Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Registry - registerStub - Normal Stub] descriptor', Object{cguid: '1', type: '0', version: '0.1', description: 'description of VertxProtoStub', objectName: 'VertxProtoStub', sourcePackageURL: '/sourcePackage', sourcePackage: Object{sourceCode: '(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define("activate", [], factory); - else if(typeof exports === 'object') - exports["activate"] = factory(); - else - root["activate"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -exports.default = activate; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** -* Copyright 2016 PT Inovação e Sistemas SA -* Copyright 2016 INESC-ID -* Copyright 2016 QUOBIS NETWORKS SL -* Copyright 2016 FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V -* Copyright 2016 ORANGE SA -* Copyright 2016 Deutsche Telekom AG -* Copyright 2016 Apizee -* Copyright 2016 TECHNISCHE UNIVERSITAT BERLIN -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -**/ - -var VertxProtoStub = function () { - /* private - _continuousOpen: boolean - _runtimeProtoStubURL: string - _bus: MiniBus - _msgCallback: (Message) => void - _config: { url, runtimeURL } - _sock: (WebSocket | SockJS) - _reOpen: boolean - */ - - /** - * Vertx ProtoStub creation - * @param {string} runtimeProtoStubURL - URL used internally for message delivery point. Not used for MessageNode deliver. - * @param {MiniBus} bus - MiniBus used to send/receive messages. Normally connected to the MessageBus. - * @param {Object} config - Mandatory fields are: "url" of the MessageNode address and "runtimeURL". - * @return {VertxProtoStub} - */ - function VertxProtoStub(runtimeProtoStubURL, bus, config) { - _classCallCheck(this, VertxProtoStub); - - if (!runtimeProtoStubURL) throw new Error('The runtimeProtoStubURL is a needed parameter'); - if (!bus) throw new Error('The bus is a needed parameter'); - if (!config) throw new Error('The config is a needed parameter'); - - if (!config.url) throw new Error('The config.url is a needed parameter'); - if (!config.runtimeURL) throw new Error('The config.runtimeURL is a needed parameter'); - - var _this = this; - - this._id = 0; - this._continuousOpen = true; - - this._runtimeProtoStubURL = runtimeProtoStubURL; - this._bus = bus; - this._config = config; - - this._runtimeSessionURL = config.runtimeURL; - this._reOpen = false; - console.log('ProtostubLoaded'); - - _this._sendStatus('created'); - _this._sendStatus('in-progress'); - _this._sendStatus('live'); - } - - /** - * Get the configuration for this ProtoStub - * @return {Object} - Mandatory fields are: "url" of the MessageNode address and "runtimeURL". - */ - - - _createClass(VertxProtoStub, [{ - key: 'connect', - - - /** - * Try to open the connection to the MessageNode. Connection is auto managed, there is no need to call this explicitly. - * However, if "disconnect()" is called, it's necessary to call this to enable connections again. - * A status message is sent to "runtimeProtoStubURL/status", containing the value "connected" if successful, or "disconnected" if some error occurs. - */ - value: function connect() { - var _this = this; - - _this._continuousOpen = true; - _this._open(function () {}); - } - - /** - * It will disconnect and order to stay disconnected. Reconnection tries, will not be attempted, unless "connect()" is called. - * A status message is sent to "runtimeProtoStubURL/status" with value "disconnected". - */ - - }, { - key: 'disconnect', - value: function disconnect() { - var _this = this; - - _this._continuousOpen = false; - } - - //todo: add documentation - - }, { - key: '_sendOpen', - value: function _sendOpen(callback) { - var _this = this; - - _this._sendStatus('in-progress'); - _this._sendStatus('live'); - callback(); - } - }, { - key: '_sendClose', - value: function _sendClose() { - var _this = this; - - _this._id++; - var msg = { - id: _this._id, type: 'close', from: _this._runtimeSessionURL, to: 'mn:/session' - }; - - //invalidate runtimeSession - _this._reOpen = false; - _this._runtimeSessionURL = _this._config._runtimeURL; - } - }, { - key: '_sendStatus', - value: function _sendStatus(value, reason) { - var _this = this; - - console.log('[VertxProtostub status changed] to ', value); - - _this._state = value; - - var msg = { - type: 'update', - from: _this._runtimeProtoStubURL, - to: _this._runtimeProtoStubURL + '/status', - body: { - value: value - } - }; - - if (reason) { - msg.body.desc = reason; - } - - _this._bus.postMessage(msg); - } - }, { - key: '_filter', - value: function _filter(msg) { - if (msg.body && msg.body.via === this._runtimeProtoStubURL) { - return false; - } else { - return true; - } - } - }, { - key: '_deliver', - value: function _deliver(msg) { - if (!msg.body) msg.body = {}; - - msg.body.via = this._runtimeProtoStubURL; - console.log('[VertxProtoStub: MN -> ProtoStub]', msg); - this._bus.postMessage(msg); - } - - // add documentation - - }, { - key: '_open', - value: function _open(callback) { - var _this = this; - - if (!this._continuousOpen) { - //TODO: send status (sent message error - disconnected) - return; - } - - this._sendOpen(callback); - } - }, { - key: 'config', - get: function get() { - return this._config; - } - }, { - key: 'runtimeSession', - get: function get() { - return this._runtimeSessionURL; - } - }]); - - return VertxProtoStub; -}(); - -function activate(url, bus, config) { - return { - name: 'VertxProtoStub', - instance: new VertxProtoStub(url, bus, config) - }; -} - -/** -* Callback used to send messages -* @callback PostMessage -* @param {Message} msg - Message to send -*/ - -module.exports = exports['default']; - -/***/ }) -/******/ ]); -});', sourceCodeClassname: 'VertxProtoStub', encoding: 'Base64', signature: ''}, language: 'Javascript ECMA5', signature: '', messageSchemas: '', configuration: Object{url: 'wss://127.0.0.1:9090/ws', runtimeURL: 'runtime://localhost/a7529762-af20-9c76-74a4-bba5f7ddb5d1'}, constraints: '', hypertyCapabilities: '', protocolCapabilities: '', policies: '', dataObjects: []} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> internal (in)', 'from: ', 'hyperty-runtime://sandbox/external', 'to: ', 'hyperty-runtime://sandbox/internal' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxRegistry._create ', 'runtime://sp.domain/protostub/ba079978-363f-5a9c-b4d5-c1fc7c40121a', Object{url: 'wss://127.0.0.1:9090/ws', runtimeURL: 'runtime://localhost/a7529762-af20-9c76-74a4-bba5f7ddb5d1'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'ProtostubLoaded' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[VertxProtostub status changed] to ', 'created' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'runtime://sp.domain/protostub/ba079978-363f-5a9c-b4d5-c1fc7c40121a', 'to: ', 'runtime://sp.domain/protostub/ba079978-363f-5a9c-b4d5-c1fc7c40121a/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[VertxProtostub status changed] to ', 'in-progress' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'runtime://sp.domain/protostub/ba079978-363f-5a9c-b4d5-c1fc7c40121a', 'to: ', 'runtime://sp.domain/protostub/ba079978-363f-5a9c-b4d5-c1fc7c40121a/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[VertxProtostub status changed] to ', 'live' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'runtime://sp.domain/protostub/ba079978-363f-5a9c-b4d5-c1fc7c40121a', 'to: ', 'runtime://sp.domain/protostub/ba079978-363f-5a9c-b4d5-c1fc7c40121a/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'hyperty-runtime://sandbox/internal', 'to: ', 'hyperty-runtime://sandbox/external' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'google.com' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'google.com' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'https://localhost/.well-known/idp-proxy/google.com', 'localhost', false -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[SandboxBrowser] New with capabilities: ', Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> internal (in)', 'from: ', 'hyperty-runtime://sandbox/external', 'to: ', 'hyperty-runtime://sandbox/internal' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxRegistry._create ', 'domain-idp://google.com/stub/df0cb52f-e9d1-e80c-64c6-492dd8f6ad9d', Object{url: 'wss://127.0.0.1:9090/ws', runtimeURL: 'runtime://localhost/a7529762-af20-9c76-74a4-bba5f7ddb5d1'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Google IdpProxy] starting', 'domain-idp://google.com/stub/df0cb52f-e9d1-e80c-64c6-492dd8f6ad9d' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[GoogleIdpProxy.sendStatus] ', 'created' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'domain-idp://google.com/stub/df0cb52f-e9d1-e80c-64c6-492dd8f6ad9d', 'to: ', 'domain-idp://google.com/stub/df0cb52f-e9d1-e80c-64c6-492dd8f6ad9d/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[GoogleIdpProxy.sendStatus] ', 'in-progress' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'domain-idp://google.com/stub/df0cb52f-e9d1-e80c-64c6-492dd8f6ad9d', 'to: ', 'domain-idp://google.com/stub/df0cb52f-e9d1-e80c-64c6-492dd8f6ad9d/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[GoogleIdpProxy.sendStatus] ', 'live' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'domain-idp://google.com/stub/df0cb52f-e9d1-e80c-64c6-492dd8f6ad9d', 'to: ', 'domain-idp://google.com/stub/df0cb52f-e9d1-e80c-64c6-492dd8f6ad9d/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'hyperty-runtime://sandbox/internal', 'to: ', 'hyperty-runtime://sandbox/external' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'google.com' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'google.com' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'https://localhost/.well-known/idp-proxy/google.com', 'localhost', false -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[SandboxBrowser] New with capabilities: ', Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> internal (in)', 'from: ', 'hyperty-runtime://sandbox/external', 'to: ', 'hyperty-runtime://sandbox/internal' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxRegistry._create ', 'domain-idp://google.com/stub/89f49a01-8275-d263-ba6c-2be042cee729', Object{url: 'wss://127.0.0.1:9090/ws', runtimeURL: 'runtime://localhost/a7529762-af20-9c76-74a4-bba5f7ddb5d1'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Google IdpProxy] starting', 'domain-idp://google.com/stub/89f49a01-8275-d263-ba6c-2be042cee729' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[GoogleIdpProxy.sendStatus] ', 'created' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'domain-idp://google.com/stub/89f49a01-8275-d263-ba6c-2be042cee729', 'to: ', 'domain-idp://google.com/stub/89f49a01-8275-d263-ba6c-2be042cee729/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[GoogleIdpProxy.sendStatus] ', 'in-progress' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'domain-idp://google.com/stub/89f49a01-8275-d263-ba6c-2be042cee729', 'to: ', 'domain-idp://google.com/stub/89f49a01-8275-d263-ba6c-2be042cee729/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[GoogleIdpProxy.sendStatus] ', 'live' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'domain-idp://google.com/stub/89f49a01-8275-d263-ba6c-2be042cee729', 'to: ', 'domain-idp://google.com/stub/89f49a01-8275-d263-ba6c-2be042cee729/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'hyperty-runtime://sandbox/internal', 'to: ', 'hyperty-runtime://sandbox/external' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'google.com' -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'google.com' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'https://localhost/.well-known/idp-proxy/google.com', 'localhost', false -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[SandboxBrowser] New with capabilities: ', Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> internal (in)', 'from: ', 'hyperty-runtime://sandbox/external', 'to: ', 'hyperty-runtime://sandbox/internal' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxRegistry._create ', 'domain-idp://google.com/stub/2b004a0d-3355-2dea-483a-e21804b5f99f', Object{url: 'wss://127.0.0.1:9090/ws', runtimeURL: 'runtime://localhost/a7529762-af20-9c76-74a4-bba5f7ddb5d1'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Google IdpProxy] starting', 'domain-idp://google.com/stub/2b004a0d-3355-2dea-483a-e21804b5f99f' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[GoogleIdpProxy.sendStatus] ', 'created' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'domain-idp://google.com/stub/2b004a0d-3355-2dea-483a-e21804b5f99f', 'to: ', 'domain-idp://google.com/stub/2b004a0d-3355-2dea-483a-e21804b5f99f/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[GoogleIdpProxy.sendStatus] ', 'in-progress' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'domain-idp://google.com/stub/2b004a0d-3355-2dea-483a-e21804b5f99f', 'to: ', 'domain-idp://google.com/stub/2b004a0d-3355-2dea-483a-e21804b5f99f/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[GoogleIdpProxy.sendStatus] ', 'live' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'domain-idp://google.com/stub/2b004a0d-3355-2dea-483a-e21804b5f99f', 'to: ', 'domain-idp://google.com/stub/2b004a0d-3355-2dea-483a-e21804b5f99f/status' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SandboxBrowser._onPostMessage -> external (out)', 'from: ', 'hyperty-runtime://sandbox/internal', 'to: ', 'hyperty-runtime://sandbox/external' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: Object{type: 'create', from: 'hyperty-runtime://sandbox/external', to: 'hyperty-runtime://sandbox/internal', body: Object{url: 'hyperty://fake-url', sourceCode: '', config: Object{init: ...}}, id: 1} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: Object{type: 'delete', from: 'hyperty-runtime://sandbox/external', to: 'hyperty-runtime://sandbox/internal', body: Object{url: 'hyperty://fake-url'}, id: 2} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[NOTSAVING] storeDataObjects', DataObjectsStorage{_storageManager: StorageManager{db: Dexie{_dbSchema: ..., version: ..., _allTables: ..., _tableFactory: ..., _createTransaction: ..., _whenReady: ..., verno: ..., open: ..., close: ..., delete: ..., backendDB: ..., isOpen: ..., hasFailed: ..., dynamicallyOpened: ..., name: ..., on: ..., transaction: ..., table: ..., Collection: ..., Table: ..., Transaction: ..., Version: ..., WhereClause: ..., WriteableCollection: ..., WriteableTable: ..., syncherManager:ObjectURLs: ...}, storageName: 'syncherManager'}, _storeDataObject: Object{}, _cache: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create Reporter - createInput: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', authorise: [], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher._create]: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', authorise: [], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.128Z', runtime: 'hyperty-runtime://fake-runtime'}, Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isInterworkingProtoStub: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Scheme: ', 'resources' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Running object validation...' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Object validation succeeded' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REGISTRY-OBJECT: ', Object{schema: 'schema://fake-schema-url', authorise: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.128Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', childrens: ['children1', 'children2']} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 2} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 2, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 3} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 3, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create-response: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-create-reply', function onRead(callback) { ... } -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'read', from: 'hyperty://h2.domain/h2', to: 'resource://obj1'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-FORWARD: ( resource://obj1 to hyperty://h1.domain/h1 )' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'read', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', id: 4}, Syncher{_owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: 4, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h2.domain/h24: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://obj1: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onReadHandler: ...}}, _observers: Object{}, _provisionals: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] listener resource://obj1 Received: ', Object{type: 'read', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', id: 4} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'READ-EVENT: ', Object{type: 'read', url: 'hyperty://h2.domain/h2', accept: function accept() { ... }, reject: function reject(reason) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-read', Object{type: 'read', url: 'hyperty://h2.domain/h2', accept: function accept() { ... }, reject: function reject(reason) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 4, type: 'response', from: 'resource://obj1', to: 'hyperty://h2.domain/h2', body: Object{code: 200, value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., childrenObjects: ..., version: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://obj1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.read] reply: ', Object{id: 4, type: 'response', from: 'resource://obj1', to: 'hyperty://h2.domain/h2', body: Object{code: 200, value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., childrenObjects: ..., version: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-read-reply', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.128Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: ['children1', 'children2'], lastModified: '2018-05-22T11:36:07.128Z', data: Object{communication: Object{name: ...}, x: 10, y: 10}, childrenObjects: Object{}, version: 0} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[NOTSAVING] storeDataObjects', DataObjectsStorage{_storageManager: StorageManager{db: Dexie{_dbSchema: ..., version: ..., _allTables: ..., _tableFactory: ..., _createTransaction: ..., _whenReady: ..., verno: ..., open: ..., close: ..., delete: ..., backendDB: ..., isOpen: ..., hasFailed: ..., dynamicallyOpened: ..., name: ..., on: ..., transaction: ..., table: ..., Collection: ..., Table: ..., Transaction: ..., Version: ..., WhereClause: ..., WriteableCollection: ..., WriteableTable: ..., syncherManager:ObjectURLs: ...}, storageName: 'syncherManager'}, _storeDataObject: Object{reporters: Object{resource://obj1: ...}}, _cache: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create Reporter - createInput: ', Object{p2p: false, store: true, schema: 'schema://fake-schema-url', authorise: [], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher._create]: ', Object{p2p: false, store: true, schema: 'schema://fake-schema-url', authorise: [], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.157Z', runtime: 'hyperty-runtime://fake-runtime'}, Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url', store: true}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url', store: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isInterworkingProtoStub: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Scheme: ', 'resources' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Running object validation...' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Object validation succeeded' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REGISTRY-OBJECT: ', Object{schema: 'schema://fake-schema-url', authorise: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.157Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', childrens: ['children1', 'children2']} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[reporter observer integration - onPostMessage]: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 2} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 2, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[reporter observer integration - onPostMessage]: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 3} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 3, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create-response: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-create-reply', DataObjectReporter{_syncher: Syncher{_owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://obj1: ...}, _observers: Object{}, _provisionals: Object{}}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.157Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ...}}, _childrens: ['children1', 'children2'], _mutual: true, _version: 0, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: false, _owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: 3, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _metadata: Object{p2p: false, store: true, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.157Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.157Z'}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _subscriptions: Object{}, _objectListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'resource://obj1', _callback: function (msg) { ... }}, invitations: [], _childrenSizeThreshold: 50000} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] InviteObservers ', ['hyperty://h2.domain/h2'], Object{p2p: false, store: true, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.157Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: ['children1', 'children2'], lastModified: '2018-05-22T11:36:07.157Z'} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, resource: 'resource://obj1', schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, authorise: [...], mutual: undefined}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'resource://obj1/subscription', to: 'hyperty://h2.domain/h2', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/h1', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'create', from: 'resource://obj1/subscription', to: 'hyperty://h2.domain/h2', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/h1', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}, id: 5}, Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 5, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] NOTIFICATION-EVENT: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', url: 'resource://obj1', domain: 'obj1', schema: 'schema://fake-schema-url', value: Object{p2p: false, store: true, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.157Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.157Z'}, identity: undefined, ack: function ack(type) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-create-notify: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', url: 'resource://obj1', domain: 'obj1', schema: 'schema://fake-schema-url', value: Object{p2p: false, store: true, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.157Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.157Z'}, identity: undefined, ack: function ack(type) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 5, type: 'response', from: 'hyperty://h2.domain/h2', to: 'resource://obj1/subscription', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', id: 4, type: 'response', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] Invitation reply ', Object{from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', id: 4, type: 'response', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - subscribe] - subscribe criteria: ', Object{p2p: false, store: true, schema: 'schema://fake-schema-url', resource: 'resource://obj1', mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher_subscribe] - subscribe message: ', Object{p2p: false, store: true, schema: 'schema://fake-schema-url', resource: 'resource://obj1', mutual: true, resume: false}, Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: true, schema: 'schema://fake-schema-url', resource: 'resource://obj1', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: true, schema: 'schema://fake-schema-url', resource: 'resource://obj1', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h2.domain/h2'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[reporter observer integration - onPostMessage]: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h2.domain/h2'}, id: 7} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 7, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - node-subscribe-response(observer): ', Object{id: 7, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://obj1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://obj1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new DataProvisional: ', ['children1', 'children2'], 'resource://obj1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - [SyncherManager._newSubscription]', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://obj1/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h2.domain/h2', mutual: true}}, Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: true, schema: 'schema://fake-schema-url', resource: 'resource://obj1', resume: false, mutual: true}, id: 6} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://obj1/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h2.domain/h2', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.subscriber: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://obj1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.type: ', 'forward' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}, id: 9}, Syncher{_owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: 9, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h2.domain/h26: ..., hyperty-runtime://fake-runtime/sm8: ..., resource://obj19: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://obj1: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onReadHandler: ..., _onSubscriptionHandler: ...}}, _observers: Object{}, _provisionals: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectReporter-RCV: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}, id: 9} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectReporter._onSubscribe]', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}, id: 9}, 'h2.domain', Object{type: 'hyperty', domain: 'h2.domain', identity: '/h2'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SUBSCRIPTION-EVENT: ', Object{type: 'subscribe', url: 'hyperty://h2.domain/h2', domain: 'h2.domain', identity: undefined, nutual: true, accept: function accept() { ... }, reject: function reject(reason) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-resources: ', Object{type: 'subscribe', url: 'hyperty://h2.domain/h2', domain: 'h2.domain', identity: undefined, nutual: true, accept: function accept() { ... }, reject: function reject(reason) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 9, type: 'response', from: 'hyperty://h1.domain/h1', to: 'resource://obj1', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 8, type: 'response', from: 'resource://obj1/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://obj1/subscription' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - reporter-subscribe-response-new: ', Object{id: 8, type: 'response', from: 'resource://obj1/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - 200 code[SyncherManager._newSubscription] - observers: ', Object{}, 'resource://obj1', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1', resource: 'resource://obj1', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1', resource: 'resource://obj1', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1', resource: 'resource://obj1', mutual: true}}, Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer already exist: ', DataObjectObserver{_syncher: Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://obj1: ...}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.157Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ...}}, _childrens: ['children1', 'children2'], _mutual: true, _version: 0, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: false, _owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 9, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _metadata: Object{p2p: false, store: true, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.157Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.157Z', version: 0, identity: undefined}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'resource://obj1/changes', _callback: function (msg) { ... }}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-subscribe-reply', DataObjectObserver{_syncher: Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://obj1: ...}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.157Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ...}}, _childrens: ['children1', 'children2'], _mutual: true, _version: 0, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: false, _owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 9, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _metadata: Object{p2p: false, store: true, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.157Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.157Z', version: 0, identity: undefined}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'resource://obj1/changes', _callback: function (msg) { ... }}}, Object{communication: Object{name: 'chat-x'}, x: 10, y: 10} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] resource://obj1 publish change: ', Object{cType: 'add', oType: 'object', field: 'test', data: ['a', 'b', 'c']} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObject - _onChange] - ', Object{cType: 'add', oType: 'object', field: 'test', data: ['a', 'b', 'c']}, undefined, Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/changes', body: Object{version: 1, source: 'hyperty://h1.domain/h1', attribute: 'test', lastModified: '2018-05-22T11:36:07.201Z'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/changes', body: Object{version: 1, source: 'hyperty://h1.domain/h1', attribute: 'test', lastModified: '2018-05-22T11:36:07.201Z', value: [..., ..., ...], mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-PUBLISH: ( resource://obj1/changes )' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[reporter observer integration - onPostMessage]: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/changes', body: Object{version: 1, source: 'hyperty://h1.domain/h1', attribute: 'test', lastModified: '2018-05-22T11:36:07.201Z', value: [..., ..., ...], mutual: true}, id: 10} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-FORWARD: ( resource://obj1/changes to hyperty://h2.domain/h2 )' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/changes', body: Object{version: 1, source: 'hyperty://h1.domain/h1', attribute: 'test', lastModified: '2018-05-22T11:36:07.201Z', value: [..., ..., ...], mutual: true}, id: 10}, Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 10, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://obj1: DataObjectObserver{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _filters: ..., _changeListener: ...}}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectObserver-resource://obj1-RCV: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/changes', body: Object{version: 1, source: 'hyperty://h1.domain/h1', attribute: 'test', lastModified: '2018-05-22T11:36:07.201Z', value: [..., ..., ...], mutual: true}, id: 10} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-change: ', '{"cType":"add","oType":"object","field":"test","data":["a","b","c"]}' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[NOTSAVING] storeDataObjects', DataObjectsStorage{_storageManager: StorageManager{db: Dexie{_dbSchema: ..., version: ..., _allTables: ..., _tableFactory: ..., _createTransaction: ..., _whenReady: ..., verno: ..., open: ..., close: ..., delete: ..., backendDB: ..., isOpen: ..., hasFailed: ..., dynamicallyOpened: ..., name: ..., on: ..., transaction: ..., table: ..., Collection: ..., Table: ..., Transaction: ..., Version: ..., WhereClause: ..., WriteableCollection: ..., WriteableTable: ..., syncherManager:ObjectURLs: ...}, storageName: 'syncherManager'}, _storeDataObject: Object{reporters: Object{resource://obj1: ...}, observers: Object{resource://obj1: ...}}, _cache: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe message: ', Object{resume: true}, Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: true}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create Reporter - createInput: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', authorise: [], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher._create]: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', authorise: [], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.212Z', runtime: 'hyperty-runtime://fake-runtime'}, Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isInterworkingProtoStub: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Scheme: ', 'resources' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Running object validation...' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Object validation succeeded' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REGISTRY-OBJECT: ', Object{schema: 'schema://fake-schema-url', authorise: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.212Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', childrens: ['children1', 'children2']} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 3} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 3, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 4} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 4, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 2, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create-response: ', Object{id: 2, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-create-resume-reply', DataObjectReporter{_syncher: Syncher{_owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://obj1: ...}, _observers: Object{}, _provisionals: Object{}}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.212Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ...}}, _childrens: ['children1', 'children2'], _mutual: true, _version: 0, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: false, _owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: 4, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h2.domain/h21: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _metadata: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.212Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.212Z'}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _subscriptions: Object{}, _objectListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'resource://obj1', _callback: function (msg) { ... }}, invitations: [], _childrenSizeThreshold: 50000} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] InviteObservers ', ['hyperty://h2.domain/h2'], Object{p2p: false, store: false, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.212Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: ['children1', 'children2'], lastModified: '2018-05-22T11:36:07.212Z'} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, resource: 'resource://obj1', schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, authorise: [...], mutual: undefined}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'resource://obj1/subscription', to: 'hyperty://h2.domain/h2', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/h1', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'create', from: 'resource://obj1/subscription', to: 'hyperty://h2.domain/h2', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/h1', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}, id: 6}, Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 6, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h2.domain/h21: ..., hyperty://h1.domain/h15: ..., resource://obj1/subscription6: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{}, _provisionals: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://obj1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-resumed-response: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://obj1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - resume new DataProvisional: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://obj1'}}, 'resource://obj1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, value: [...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-resumed-response: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, value: [...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - Resume Object Observer: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, value: [...]}}, Object{subscriptions: ['hyperty://h2.domain/h2'], subscriberUsers: ['user@domain.com'], childrenObjects: Object{}, data: Object{communication: Object{name: ...}, x: 10, y: 10, test: [..., ..., ...]}, p2p: false, store: true, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.157Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: ['children1', 'children2'], lastModified: '2018-05-22T11:36:07.201Z', version: 1, isReporter: false, isToSaveData: true}, Object{resource://obj1: DataProvisional{_owner: 'hyperty://h2.domain/h2', _url: 'resource://obj1', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _children: [..., ...], _changes: [], _listener: MsgListener{_subscriptions: ..., _url: ..., _callback: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher._resumeSubscribe] - create new dataObject: ', Object{subscriptions: ['hyperty://h2.domain/h2'], subscriberUsers: ['user@domain.com'], childrenObjects: Object{}, data: Object{communication: Object{name: ...}, x: 10, y: 10, test: [..., ..., ...]}, p2p: false, store: true, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: true, mutual: true, created: '2018-05-22T11:36:07.157Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: ['children1', 'children2'], lastModified: '2018-05-22T11:36:07.201Z', version: 1, isReporter: false, isToSaveData: true, syncher: Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{}, _provisionals: Object{resource://obj1: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher._resumeSubscribe] - new dataObject', DataObjectObserver{_syncher: Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{}, _provisionals: Object{resource://obj1: ...}}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.157Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ..., test: ...}}, _childrens: ['children1', 'children2'], _mutual: true, _version: 1, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: true, _owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 6, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h15: ..., resource://obj1/subscription6: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _metadata: Object{subscriptions: [...], subscriberUsers: [...], childrenObjects: Object{}, p2p: false, store: true, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: true, mutual: true, created: '2018-05-22T11:36:07.157Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.157Z', version: 1, isReporter: false, isToSaveData: true}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'resource://obj1/changes', _callback: function (msg) { ... }}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-subscribe-resume-reply', Object{resource://obj1: DataObjectObserver{_syncher: Syncher{_owner: ..., _bus: ..., _subURL: ..., _runtimeUrl: ..., _p2pHandler: ..., _p2pRequester: ..., _reporters: ..., _observers: ..., _provisionals: ...}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.157Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: ..., _filters: ..., _data: ...}, _childrens: [..., ...], _mutual: true, _version: 1, _childId: 0, _childrenListeners: [..., ...], _resumed: true, _owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _metadata: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: ..., _url: ..., _callback: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-subscribe-resume-reply DataObjectObserver: ', DataObjectObserver{_syncher: Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://obj1: ...}, _provisionals: Object{resource://obj1: ...}}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.157Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ..., test: ...}}, _childrens: ['children1', 'children2'], _mutual: true, _version: 1, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: true, _owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 6, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h15: ..., resource://obj1/subscription6: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _metadata: Object{subscriptions: [...], subscriberUsers: [...], childrenObjects: Object{}, p2p: false, store: true, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: true, mutual: true, created: '2018-05-22T11:36:07.157Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.157Z', version: 1, isReporter: false, isToSaveData: true}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'resource://obj1/changes', _callback: function (msg) { ... }}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] resource://obj1 publish change: ', Object{cType: 'add', oType: 'object', field: 'test', data: ['a', 'b', 'c']} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObject - _onChange] - ', Object{cType: 'add', oType: 'object', field: 'test', data: ['a', 'b', 'c']}, undefined, Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/changes', body: Object{version: 1, source: 'hyperty://h1.domain/h1', attribute: 'test', lastModified: '2018-05-22T11:36:07.246Z'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/changes', body: Object{version: 1, source: 'hyperty://h1.domain/h1', attribute: 'test', lastModified: '2018-05-22T11:36:07.246Z', value: [..., ..., ...], mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-FORWARD: ( resource://obj1/changes to hyperty://h2.domain/h2 )' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/changes', body: Object{version: 1, source: 'hyperty://h1.domain/h1', attribute: 'test', lastModified: '2018-05-22T11:36:07.246Z', value: [..., ..., ...], mutual: true}, id: 7}, Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 7, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h15: ..., resource://obj1/subscription6: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://obj1: DataObjectObserver{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _filters: ..., _changeListener: ...}}, _provisionals: Object{resource://obj1: DataProvisional{_owner: ..., _url: ..., _bus: ..., _children: ..., _changes: ..., _listener: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectObserver-resource://obj1-RCV: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/changes', body: Object{version: 1, source: 'hyperty://h1.domain/h1', attribute: 'test', lastModified: '2018-05-22T11:36:07.246Z', value: [..., ..., ...], mutual: true}, id: 7} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'UNSYNCHRONIZED VERSION: (data => 1, msg => 1)' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[NOTSAVING] storeDataObjects', DataObjectsStorage{_storageManager: StorageManager{db: Dexie{_dbSchema: ..., version: ..., _allTables: ..., _tableFactory: ..., _createTransaction: ..., _whenReady: ..., verno: ..., open: ..., close: ..., delete: ..., backendDB: ..., isOpen: ..., hasFailed: ..., dynamicallyOpened: ..., name: ..., on: ..., transaction: ..., table: ..., Collection: ..., Table: ..., Transaction: ..., Version: ..., WhereClause: ..., WriteableCollection: ..., WriteableTable: ..., syncherManager:ObjectURLs: ...}, storageName: 'syncherManager'}, _storeDataObject: Object{reporters: Object{resource://obj1: ...}, observers: Object{resource://obj1: ...}}, _cache: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - resume Reporter - criteria: ', Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create]: ', Object{resume: true}, Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher._resumeCreate] - resume message: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: true, value: Object{resume: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: true, value: Object{resume: ..., reporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Scheme: ', 'resources' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Running object validation...' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Object validation succeeded' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [...], source: 'hyperty://h1.domain/h1'}, id: 2} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 2, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REGISTRY-OBJECT: ', Object{resume: true, reporter: 'hyperty://h1.domain/h1', url: 'resource://obj1', expires: undefined} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 3} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 3, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, value: [...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher._resumeCreate] - create-resumed-response: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, value: [...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher._resumeCreate] - create-resumed-dataObjectReporter', Object{subscriptions: ['hyperty://h2.domain/h2'], subscriberUsers: ['user@domain.com'], childrenObjects: Object{}, data: Object{communication: Object{name: ...}, x: 10, y: 10, test: [..., ..., ...]}, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: true, mutual: false, created: '2018-05-22T11:36:07.212Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', childrens: ['children1', 'children2'], isReporter: true, isToSaveData: true, version: 1, lastModified: '2018-05-22T11:36:07.201Z', status: 'live', syncher: Syncher{_owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{}, _provisionals: Object{}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-subscribe-resume-reply', Object{resource://obj1: DataObjectReporter{_syncher: Syncher{_owner: ..., _bus: ..., _subURL: ..., _runtimeUrl: ..., _p2pHandler: ..., _p2pRequester: ..., _reporters: ..., _observers: ..., _provisionals: ...}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.212Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: ..., _filters: ..., _data: ...}, _childrens: [..., ...], _mutual: false, _version: 1, _childId: 0, _childrenListeners: [..., ...], _resumed: true, _owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _metadata: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ..., status: ...}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _subscriptions: Object{}, _objectListener: MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, invitations: [], _childrenSizeThreshold: 50000}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-create-resume-reply DataObjectReporter: ', DataObjectReporter{_syncher: Syncher{_owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://obj1: ...}, _observers: Object{}, _provisionals: Object{}}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.212Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ..., test: ...}}, _childrens: ['children1', 'children2'], _mutual: false, _version: 1, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: true, _owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: 3, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _metadata: Object{subscriptions: [...], subscriberUsers: [...], childrenObjects: Object{}, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: true, mutual: false, created: '2018-05-22T11:36:07.212Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', childrens: [..., ...], isReporter: true, isToSaveData: true, version: 1, lastModified: '2018-05-22T11:36:07.212Z', status: 'live'}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _subscriptions: Object{}, _objectListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'resource://obj1', _callback: function (msg) { ... }}, invitations: [], _childrenSizeThreshold: 50000} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] resource://obj1 publish change: ', Object{cType: 'add', oType: 'object', field: 'newTest', data: ['a', 'b', 'c']} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObject - _onChange] - ', Object{cType: 'add', oType: 'object', field: 'newTest', data: ['a', 'b', 'c']}, undefined, Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/changes', body: Object{version: 2, source: 'hyperty://h1.domain/h1', attribute: 'newTest', lastModified: '2018-05-22T11:36:07.262Z'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/changes', body: Object{version: 2, source: 'hyperty://h1.domain/h1', attribute: 'newTest', lastModified: '2018-05-22T11:36:07.262Z', value: [..., ..., ...], mutual: false}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-PUBLISH: ( resource://obj1/changes )' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '_onPostMessage: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/changes', body: Object{version: 2, source: 'hyperty://h1.domain/h1', attribute: 'newTest', lastModified: '2018-05-22T11:36:07.262Z', value: [..., ..., ...], mutual: false}, id: 4} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[NOTSAVING] storeDataObjects', DataObjectsStorage{_storageManager: StorageManager{db: Dexie{_dbSchema: ..., version: ..., _allTables: ..., _tableFactory: ..., _createTransaction: ..., _whenReady: ..., verno: ..., open: ..., close: ..., delete: ..., backendDB: ..., isOpen: ..., hasFailed: ..., dynamicallyOpened: ..., name: ..., on: ..., transaction: ..., table: ..., Collection: ..., Table: ..., Transaction: ..., Version: ..., WhereClause: ..., WriteableCollection: ..., WriteableTable: ..., syncherManager:ObjectURLs: ...}, storageName: 'syncherManager'}, _storeDataObject: Object{reporters: Object{resource://obj1: ...}, observers: Object{resource://obj1: ...}}, _cache: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create Reporter - createInput: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', authorise: [], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher._create]: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', authorise: [], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.266Z', runtime: 'hyperty-runtime://fake-runtime'}, Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isInterworkingProtoStub: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Scheme: ', 'resources' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Running object validation...' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Object validation succeeded' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REGISTRY-OBJECT: ', Object{schema: 'schema://fake-schema-url', authorise: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.266Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', childrens: ['children1', 'children2']} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '5-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 2} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 2, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '5-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 3} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 3, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create-response: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-create-reply' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectChild - Constructor] - ', SyncObject{_observers: [], _filters: Object{}, _data: Object{message: 'my message'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'resource://obj1/children/children1', body: Object{resource: 'hyperty://h1.domain/h1#1', value: Object{url: ..., reporter: ..., created: ..., runtime: ..., schema: ..., parent: ..., data: ..., children: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-FORWARD: ( resource://obj1/children/children1 to hyperty://h1.domain/h1 )' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObject.addChild] added ', DataObjectChild{_parent: 'resource://obj1', _url: 'hyperty://h1.domain/h1#1', _created: '2018-05-22T11:36:07.272Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _parentObject: DataObjectReporter{_syncher: Syncher{_owner: ..., _bus: ..., _subURL: ..., _runtimeUrl: ..., _p2pHandler: ..., _p2pRequester: ..., _reporters: ..., _observers: ..., _provisionals: ...}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.266Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: ..., _filters: ..., _data: ...}, _childrens: [..., ...], _mutual: true, _version: 0, _childId: 1, _childrenListeners: [..., ...], _resumed: false, _owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _metadata: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _subscriptions: Object{}, _objectListener: MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, invitations: [], _childrenSizeThreshold: 50000}, _childId: 'hyperty://h1.domain/h1#1', _syncObj: SyncObject{_observers: [], _filters: Object{}, _data: Object{message: ...}}, _bus: MessageBus{_msgId: 4, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _owner: 'hyperty://h1.domain/h1', _listener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'hyperty://h1.domain/h1', _callback: function (msg) { ... }}, _metadata: Object{url: 'hyperty://h1.domain/h1#1', reporter: 'hyperty://h1.domain/h1', created: '2018-05-22T11:36:07.272Z', runtime: 'hyperty-runtime://fake-runtime', p2pHandler: undefined, p2pRequester: undefined, schema: 'schema://fake-schema-url', parent: 'resource://obj1', data: Object{message: ...}, children: 'children1'}, _sharingStatus: Promise{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-addChild-reply', DataObjectChild{_parent: 'resource://obj1', _url: 'hyperty://h1.domain/h1#1', _created: '2018-05-22T11:36:07.272Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _parentObject: DataObjectReporter{_syncher: Syncher{_owner: ..., _bus: ..., _subURL: ..., _runtimeUrl: ..., _p2pHandler: ..., _p2pRequester: ..., _reporters: ..., _observers: ..., _provisionals: ...}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.266Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: ..., _filters: ..., _data: ...}, _childrens: [..., ...], _mutual: true, _version: 0, _childId: 1, _childrenListeners: [..., ...], _resumed: false, _owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _metadata: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{children1: ...}, _sharedChilds: [], _subscriptions: Object{}, _objectListener: MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, invitations: [], _childrenSizeThreshold: 50000}, _childId: 'hyperty://h1.domain/h1#1', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{message: ...}}, _bus: MessageBus{_msgId: 4, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _owner: 'hyperty://h1.domain/h1', _listener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'hyperty://h1.domain/h1', _callback: function (msg) { ... }}, _metadata: Object{url: 'hyperty://h1.domain/h1#1', reporter: 'hyperty://h1.domain/h1', created: '2018-05-22T11:36:07.272Z', runtime: 'hyperty-runtime://fake-runtime', p2pHandler: undefined, p2pRequester: undefined, schema: 'schema://fake-schema-url', parent: 'resource://obj1', data: Object{message: ...}, children: 'children1'}, _sharingStatus: Promise{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[NOTSAVING] storeDataObjects', DataObjectsStorage{_storageManager: StorageManager{db: Dexie{_dbSchema: ..., version: ..., _allTables: ..., _tableFactory: ..., _createTransaction: ..., _whenReady: ..., verno: ..., open: ..., close: ..., delete: ..., backendDB: ..., isOpen: ..., hasFailed: ..., dynamicallyOpened: ..., name: ..., on: ..., transaction: ..., table: ..., Collection: ..., Table: ..., Transaction: ..., Version: ..., WhereClause: ..., WriteableCollection: ..., WriteableTable: ..., syncherManager:ObjectURLs: ...}, storageName: 'syncherManager'}, _storeDataObject: Object{reporters: Object{resource://obj1: ...}, observers: Object{resource://obj1: ...}}, _cache: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create Reporter - createInput: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', authorise: ['hyperty://h2.domain/h2'], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher._create]: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', authorise: ['hyperty://h2.domain/h2'], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.277Z', runtime: 'hyperty-runtime://fake-runtime'}, Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isInterworkingProtoStub: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Scheme: ', 'resources' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Running object validation...' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Object validation succeeded' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REGISTRY-OBJECT: ', Object{schema: 'schema://fake-schema-url', authorise: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.277Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', childrens: ['children1', 'children2']} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '6-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 2} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 2, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '6-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 3} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 3, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create-response: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] InviteObservers ', ['hyperty://h2.domain/h2'], Object{p2p: false, store: false, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.277Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: ['children1', 'children2'], lastModified: '2018-05-22T11:36:07.277Z'} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, resource: 'resource://obj1', schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, authorise: [...], mutual: undefined}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'resource://obj1/subscription', to: 'hyperty://h2.domain/h2', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/h1', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'create', from: 'resource://obj1/subscription', to: 'hyperty://h2.domain/h2', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/h1', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}, id: 5}, Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 5, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] NOTIFICATION-EVENT: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', url: 'resource://obj1', domain: 'obj1', schema: 'schema://fake-schema-url', value: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.277Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.277Z'}, identity: undefined, ack: function ack(type) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-create-notify: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', url: 'resource://obj1', domain: 'obj1', schema: 'schema://fake-schema-url', value: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.277Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.277Z'}, identity: undefined, ack: function ack(type) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 5, type: 'response', from: 'hyperty://h2.domain/h2', to: 'resource://obj1/subscription', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', id: 4, type: 'response', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] Invitation reply ', Object{from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', id: 4, type: 'response', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - subscribe] - subscribe criteria: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher_subscribe] - subscribe message: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', mutual: true, resume: false}, Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-create-reply' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h2.domain/h2'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '6-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h2.domain/h2'}, id: 7} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 7, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - node-subscribe-response(observer): ', Object{id: 7, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://obj1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://obj1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new DataProvisional: ', ['children1', 'children2'], 'resource://obj1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - [SyncherManager._newSubscription]', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://obj1/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h2.domain/h2', mutual: true}}, Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', resume: false, mutual: true}, id: 6} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://obj1/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h2.domain/h2', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.subscriber: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://obj1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.type: ', 'forward' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}, id: 9}, Syncher{_owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: 9, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h2.domain/h26: ..., hyperty-runtime://fake-runtime/sm8: ..., resource://obj19: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://obj1: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onSubscriptionHandler: ...}}, _observers: Object{}, _provisionals: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectReporter-RCV: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}, id: 9} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectReporter._onSubscribe]', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}, id: 9}, 'h2.domain', Object{type: 'hyperty', domain: 'h2.domain', identity: '/h2'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SUBSCRIPTION-EVENT: ', Object{type: 'subscribe', url: 'hyperty://h2.domain/h2', domain: 'h2.domain', identity: undefined, nutual: true, accept: function accept() { ... }, reject: function reject(reason) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-resources: ', Object{type: 'subscribe', url: 'hyperty://h2.domain/h2', domain: 'h2.domain', identity: undefined, nutual: true, accept: function accept() { ... }, reject: function reject(reason) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 9, type: 'response', from: 'hyperty://h1.domain/h1', to: 'resource://obj1', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 8, type: 'response', from: 'resource://obj1/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://obj1/subscription' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - reporter-subscribe-response-new: ', Object{id: 8, type: 'response', from: 'resource://obj1/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - 200 code[SyncherManager._newSubscription] - observers: ', Object{}, 'resource://obj1', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1', resource: 'resource://obj1', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1', resource: 'resource://obj1', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1', resource: 'resource://obj1', mutual: true}}, Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer already exist: ', DataObjectObserver{_syncher: Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://obj1: ...}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.277Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ...}}, _childrens: ['children1', 'children2'], _mutual: true, _version: 0, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: false, _owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 9, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _metadata: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.277Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.277Z', version: 0, identity: undefined}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'resource://obj1/changes', _callback: function (msg) { ... }}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-subscribe-reply' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectChild - Constructor] - ', SyncObject{_observers: [], _filters: Object{}, _data: Object{message: 'Hello World!'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h2.domain/h2', to: 'resource://obj1/children/children1', body: Object{resource: 'hyperty://h2.domain/h2#1', value: Object{url: ..., reporter: ..., created: ..., runtime: ..., schema: ..., parent: ..., data: ..., children: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-FORWARD: ( resource://obj1/children/children1 to hyperty://h1.domain/h1 )' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'create', from: 'hyperty://h2.domain/h2', to: 'resource://obj1/children/children1', body: Object{resource: 'hyperty://h2.domain/h2#1', value: Object{url: ..., reporter: ..., created: ..., runtime: ..., schema: ..., parent: ..., data: ..., children: ...}}, id: 10}, Syncher{_owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: 10, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h2.domain/h210: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://obj1: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onSubscriptionHandler: ..., _onAddChildrenHandler: ...}}, _observers: Object{}, _provisionals: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'hyperty:/' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObject-Children-RCV: ', Object{type: 'create', from: 'hyperty://h2.domain/h2', to: 'resource://obj1/children/children1', body: Object{resource: 'hyperty://h2.domain/h2#1', value: Object{url: ..., reporter: ..., created: ..., runtime: ..., schema: ..., parent: ..., data: ..., children: ...}}, id: 10} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObject._onChildCreate] receivedBy hyperty://h1.domain/h1 : ', Object{type: 'create', from: 'hyperty://h2.domain/h2', to: 'resource://obj1/children/children1', body: Object{resource: 'hyperty://h2.domain/h2#1', value: Object{url: ..., reporter: ..., created: ..., runtime: ..., schema: ..., parent: ..., data: ..., children: ...}}, id: 10} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{from: 'resource://obj1/children/children1', to: 'hyperty://h2.domain/h2', type: 'response', id: 10, body: Object{code: 100}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://obj1/children/children1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectChild.share] Parent reporter reply ', Object{from: 'resource://obj1/children/children1', to: 'hyperty://h2.domain/h2', type: 'response', id: 10, body: Object{code: 100}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectChild - Constructor] - ', SyncObject{_observers: [], _filters: Object{}, _data: Object{message: 'Hello World!'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-remote-addChild', Object{type: 'create', from: 'hyperty://h2.domain/h2', url: 'resource://obj1/children/children1', value: Object{message: 'Hello World!'}, childId: undefined, identity: undefined, child: DataObjectChild{_parent: 'resource://obj1', _url: 'hyperty://h2.domain/h2#1', _created: '2018-05-22T11:36:07.304Z', _reporter: 'hyperty://h2.domain/h2', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _parentObject: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onSubscriptionHandler: ..., _onAddChildrenHandler: ...}, _childId: 'hyperty://h2.domain/h2#1', _syncObj: SyncObject{_observers: ..., _filters: ..., _data: ...}, _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _owner: 'hyperty://h1.domain/h1', _metadata: Object{url: ..., reporter: ..., created: ..., runtime: ..., schema: ..., parent: ..., data: ..., children: ...}, _sharingStatus: false, _identity: undefined}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-PUBLISH: ( resource://obj1/children/children1 )' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '6-_onPostMessage: ', Object{type: 'create', from: 'hyperty://h2.domain/h2', to: 'resource://obj1/children/children1', body: Object{resource: 'hyperty://h2.domain/h2#1', value: Object{url: ..., reporter: ..., created: ..., runtime: ..., schema: ..., parent: ..., data: ..., children: ...}}, id: 10} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-FORWARD: ( resource://obj1/children/children1 to hyperty://h2.domain/h2 )' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObject.addChild] added ', DataObjectChild{_parent: 'resource://obj1', _url: 'hyperty://h2.domain/h2#1', _created: '2018-05-22T11:36:07.304Z', _reporter: 'hyperty://h2.domain/h2', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _parentObject: DataObjectObserver{_syncher: Syncher{_owner: ..., _bus: ..., _subURL: ..., _runtimeUrl: ..., _p2pHandler: ..., _p2pRequester: ..., _reporters: ..., _observers: ..., _provisionals: ..., _onNotificationHandler: ...}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.277Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: ..., _filters: ..., _data: ...}, _childrens: [..., ...], _mutual: true, _version: 0, _childId: 1, _childrenListeners: [..., ...], _resumed: false, _owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _metadata: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., identity: ...}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: ..., _url: ..., _callback: ...}}, _childId: 'hyperty://h2.domain/h2#1', _syncObj: SyncObject{_observers: [], _filters: Object{}, _data: Object{message: ...}}, _bus: MessageBus{_msgId: 10, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _owner: 'hyperty://h2.domain/h2', _listener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'hyperty://h2.domain/h2', _callback: function (msg) { ... }}, _metadata: Object{url: 'hyperty://h2.domain/h2#1', reporter: 'hyperty://h2.domain/h2', created: '2018-05-22T11:36:07.304Z', runtime: 'hyperty-runtime://fake-runtime', p2pHandler: undefined, p2pRequester: undefined, schema: 'schema://fake-schema-url', parent: 'resource://obj1', data: Object{message: ...}, children: 'children1'}, _sharingStatus: Promise{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'on-local-addChild', DataObjectChild{_parent: 'resource://obj1', _url: 'hyperty://h2.domain/h2#1', _created: '2018-05-22T11:36:07.304Z', _reporter: 'hyperty://h2.domain/h2', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _parentObject: DataObjectObserver{_syncher: Syncher{_owner: ..., _bus: ..., _subURL: ..., _runtimeUrl: ..., _p2pHandler: ..., _p2pRequester: ..., _reporters: ..., _observers: ..., _provisionals: ..., _onNotificationHandler: ...}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.277Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: ..., _filters: ..., _data: ...}, _childrens: [..., ...], _mutual: true, _version: 0, _childId: 1, _childrenListeners: [..., ...], _resumed: false, _owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _metadata: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., identity: ...}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{children1: ...}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: ..., _url: ..., _callback: ...}}, _childId: 'hyperty://h2.domain/h2#1', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{message: ...}}, _bus: MessageBus{_msgId: 10, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _owner: 'hyperty://h2.domain/h2', _listener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'hyperty://h2.domain/h2', _callback: function (msg) { ... }}, _metadata: Object{url: 'hyperty://h2.domain/h2#1', reporter: 'hyperty://h2.domain/h2', created: '2018-05-22T11:36:07.304Z', runtime: 'hyperty-runtime://fake-runtime', p2pHandler: undefined, p2pRequester: undefined, schema: 'schema://fake-schema-url', parent: 'resource://obj1', data: Object{message: ...}, children: 'children1'}, _sharingStatus: Promise{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[NOTSAVING] storeDataObjects', DataObjectsStorage{_storageManager: StorageManager{db: Dexie{_dbSchema: ..., version: ..., _allTables: ..., _tableFactory: ..., _createTransaction: ..., _whenReady: ..., verno: ..., open: ..., close: ..., delete: ..., backendDB: ..., isOpen: ..., hasFailed: ..., dynamicallyOpened: ..., name: ..., on: ..., transaction: ..., table: ..., Collection: ..., Table: ..., Transaction: ..., Version: ..., WhereClause: ..., WriteableCollection: ..., WriteableTable: ..., syncherManager:ObjectURLs: ...}, storageName: 'syncherManager'}, _storeDataObject: Object{reporters: Object{resource://obj1: ...}, observers: Object{resource://obj1: ...}}, _cache: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create Reporter - createInput: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', authorise: ['hyperty://h2.domain/h2'], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher._create]: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', authorise: ['hyperty://h2.domain/h2'], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.310Z', runtime: 'hyperty-runtime://fake-runtime'}, Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isInterworkingProtoStub: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Scheme: ', 'resources' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Running object validation...' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Object validation succeeded' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REGISTRY-OBJECT: ', Object{schema: 'schema://fake-schema-url', authorise: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.310Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', childrens: ['children1', 'children2']} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '7-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 2} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 2, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '7-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 3} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 3, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create-response: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] InviteObservers ', ['hyperty://h2.domain/h2'], Object{p2p: false, store: false, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.310Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: ['children1', 'children2'], lastModified: '2018-05-22T11:36:07.310Z'} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, resource: 'resource://obj1', schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, authorise: [...], mutual: undefined}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'resource://obj1/subscription', to: 'hyperty://h2.domain/h2', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/h1', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'create', from: 'resource://obj1/subscription', to: 'hyperty://h2.domain/h2', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/h1', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}, id: 5}, Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 5, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] NOTIFICATION-EVENT: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', url: 'resource://obj1', domain: 'obj1', schema: 'schema://fake-schema-url', value: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.310Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.310Z'}, identity: undefined, ack: function ack(type) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 5, type: 'response', from: 'hyperty://h2.domain/h2', to: 'resource://obj1/subscription', body: Object{code: 100}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', id: 4, type: 'response', body: Object{code: 100}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] Invitation reply ', Object{from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', id: 4, type: 'response', body: Object{code: 100}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - subscribe] - subscribe criteria: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher_subscribe] - subscribe message: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', mutual: true, resume: false}, Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h2.domain/h2'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '7-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h2.domain/h2'}, id: 7} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 7, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - node-subscribe-response(observer): ', Object{id: 7, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://obj1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://obj1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new DataProvisional: ', ['children1', 'children2'], 'resource://obj1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - [SyncherManager._newSubscription]', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://obj1/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h2.domain/h2', mutual: true}}, Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', resume: false, mutual: true}, id: 6} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://obj1/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h2.domain/h2', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.subscriber: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://obj1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.type: ', 'forward' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}, id: 9}, Syncher{_owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: 9, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ..., hyperty://h2.domain/h26: ..., hyperty-runtime://fake-runtime/sm8: ..., resource://obj19: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://obj1: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onSubscriptionHandler: ...}}, _observers: Object{}, _provisionals: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectReporter-RCV: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}, id: 9} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectReporter._onSubscribe]', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}, id: 9}, 'h2.domain', Object{type: 'hyperty', domain: 'h2.domain', identity: '/h2'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SUBSCRIPTION-EVENT: ', Object{type: 'subscribe', url: 'hyperty://h2.domain/h2', domain: 'h2.domain', identity: undefined, nutual: true, accept: function accept() { ... }, reject: function reject(reason) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 9, type: 'response', from: 'hyperty://h1.domain/h1', to: 'resource://obj1', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 8, type: 'response', from: 'resource://obj1/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://obj1/subscription' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - reporter-subscribe-response-new: ', Object{id: 8, type: 'response', from: 'resource://obj1/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - 200 code[SyncherManager._newSubscription] - observers: ', Object{}, 'resource://obj1', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1', resource: 'resource://obj1', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1', resource: 'resource://obj1', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1', resource: 'resource://obj1', mutual: true}}, Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer already exist: ', DataObjectObserver{_syncher: Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://obj1: ...}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.310Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ...}}, _childrens: ['children1', 'children2'], _mutual: true, _version: 0, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: false, _owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 9, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _metadata: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.310Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.310Z', version: 0, identity: undefined}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'resource://obj1/changes', _callback: function (msg) { ... }}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectChild - Constructor] - ', SyncObject{_observers: [], _filters: Object{}, _data: Object{message: 'Hello Micael!'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h2.domain/h2', to: 'resource://obj1/children/children1', body: Object{resource: 'hyperty://h2.domain/h2#1', value: Object{url: ..., reporter: ..., created: ..., runtime: ..., schema: ..., parent: ..., data: ..., children: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-FORWARD: ( resource://obj1/children/children1 to hyperty://h1.domain/h1 )' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'create', from: 'hyperty://h2.domain/h2', to: 'resource://obj1/children/children1', body: Object{resource: 'hyperty://h2.domain/h2#1', value: Object{url: ..., reporter: ..., created: ..., runtime: ..., schema: ..., parent: ..., data: ..., children: ...}}, id: 10}, Syncher{_owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: 10, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ..., hyperty://h2.domain/h210: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://obj1: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onSubscriptionHandler: ..., _onAddChildrenHandler: ...}}, _observers: Object{}, _provisionals: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) WARN: '[DivideURL] DivideURL don't support url without scheme. Please review your url address', 'hyperty:/' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObject-Children-RCV: ', Object{type: 'create', from: 'hyperty://h2.domain/h2', to: 'resource://obj1/children/children1', body: Object{resource: 'hyperty://h2.domain/h2#1', value: Object{url: ..., reporter: ..., created: ..., runtime: ..., schema: ..., parent: ..., data: ..., children: ...}}, id: 10} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObject._onChildCreate] receivedBy hyperty://h1.domain/h1 : ', Object{type: 'create', from: 'hyperty://h2.domain/h2', to: 'resource://obj1/children/children1', body: Object{resource: 'hyperty://h2.domain/h2#1', value: Object{url: ..., reporter: ..., created: ..., runtime: ..., schema: ..., parent: ..., data: ..., children: ...}}, id: 10} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{from: 'resource://obj1/children/children1', to: 'hyperty://h2.domain/h2', type: 'response', id: 10, body: Object{code: 100}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://obj1/children/children1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectChild.share] Parent reporter reply ', Object{from: 'resource://obj1/children/children1', to: 'hyperty://h2.domain/h2', type: 'response', id: 10, body: Object{code: 100}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectChild - Constructor] - ', SyncObject{_observers: [], _filters: Object{}, _data: Object{message: 'Hello Micael!'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Children 1: ', DataObjectReporter{_syncher: Syncher{_owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://obj1: ...}, _observers: Object{}, _provisionals: Object{}}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.310Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ...}}, _childrens: ['children1', 'children2'], _mutual: true, _version: 0, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: false, _owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: 10, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _metadata: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.310Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.310Z'}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{children1: Object{hyperty://h2.domain/h2#1: ...}}, _sharedChilds: [], _subscriptions: Object{hyperty://h2.domain/h2: Object{url: ..., status: ...}}, _objectListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'resource://obj1', _callback: function (msg) { ... }}, invitations: [Promise{}], _childrenSizeThreshold: 50000, _onSubscriptionHandler: (subscribeEvent) => { ... }, _onAddChildrenHandler: (event) => { ... }}, DataObjectChild{_parent: 'resource://obj1', _url: 'hyperty://h2.domain/h2#1', _created: '2018-05-22T11:36:07.335Z', _reporter: 'hyperty://h2.domain/h2', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _parentObject: DataObjectReporter{_syncher: Syncher{_owner: ..., _bus: ..., _subURL: ..., _runtimeUrl: ..., _p2pHandler: ..., _p2pRequester: ..., _reporters: ..., _observers: ..., _provisionals: ...}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.310Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: ..., _filters: ..., _data: ...}, _childrens: [..., ...], _mutual: true, _version: 0, _childId: 0, _childrenListeners: [..., ...], _resumed: false, _owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _metadata: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{children1: ...}, _sharedChilds: [], _subscriptions: Object{hyperty://h2.domain/h2: ...}, _objectListener: MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, invitations: [...], _childrenSizeThreshold: 50000, _onSubscriptionHandler: (subscribeEvent) => { ... }, _onAddChildrenHandler: (event) => { ... }}, _childId: 'hyperty://h2.domain/h2#1', _syncObj: SyncObject{_observers: [], _filters: Object{}, _data: Object{message: ...}}, _bus: MessageBus{_msgId: 10, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _owner: 'hyperty://h1.domain/h1', _metadata: Object{url: 'hyperty://h2.domain/h2#1', reporter: 'hyperty://h2.domain/h2', created: '2018-05-22T11:36:07.335Z', runtime: 'hyperty-runtime://fake-runtime', schema: 'schema://fake-schema-url', parent: 'resource://obj1', data: Object{message: ...}, children: 'children1'}, _sharingStatus: false, _identity: undefined}, Object{type: 'create', from: 'hyperty://h2.domain/h2', url: 'resource://obj1/children/children1', value: Object{message: 'Hello Micael!'}, childId: undefined, identity: undefined, child: DataObjectChild{_parent: 'resource://obj1', _url: 'hyperty://h2.domain/h2#1', _created: '2018-05-22T11:36:07.335Z', _reporter: 'hyperty://h2.domain/h2', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _parentObject: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onSubscriptionHandler: ..., _onAddChildrenHandler: ...}, _childId: 'hyperty://h2.domain/h2#1', _syncObj: SyncObject{_observers: ..., _filters: ..., _data: ...}, _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _owner: 'hyperty://h1.domain/h1', _metadata: Object{url: ..., reporter: ..., created: ..., runtime: ..., schema: ..., parent: ..., data: ..., children: ...}, _sharingStatus: false, _identity: undefined}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-PUBLISH: ( resource://obj1/children/children1 )' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '7-_onPostMessage: ', Object{type: 'create', from: 'hyperty://h2.domain/h2', to: 'resource://obj1/children/children1', body: Object{resource: 'hyperty://h2.domain/h2#1', value: Object{url: ..., reporter: ..., created: ..., runtime: ..., schema: ..., parent: ..., data: ..., children: ...}}, id: 10} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-FORWARD: ( resource://obj1/children/children1 to hyperty://h2.domain/h2 )' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObject.addChild] added ', DataObjectChild{_parent: 'resource://obj1', _url: 'hyperty://h2.domain/h2#1', _created: '2018-05-22T11:36:07.335Z', _reporter: 'hyperty://h2.domain/h2', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _parentObject: DataObjectObserver{_syncher: Syncher{_owner: ..., _bus: ..., _subURL: ..., _runtimeUrl: ..., _p2pHandler: ..., _p2pRequester: ..., _reporters: ..., _observers: ..., _provisionals: ..., _onNotificationHandler: ...}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.310Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: ..., _filters: ..., _data: ...}, _childrens: [..., ...], _mutual: true, _version: 0, _childId: 1, _childrenListeners: [..., ...], _resumed: false, _owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _metadata: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., identity: ...}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: ..., _url: ..., _callback: ...}}, _childId: 'hyperty://h2.domain/h2#1', _syncObj: SyncObject{_observers: [], _filters: Object{}, _data: Object{message: ...}}, _bus: MessageBus{_msgId: 10, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _owner: 'hyperty://h2.domain/h2', _listener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'hyperty://h2.domain/h2', _callback: function (msg) { ... }}, _metadata: Object{url: 'hyperty://h2.domain/h2#1', reporter: 'hyperty://h2.domain/h2', created: '2018-05-22T11:36:07.335Z', runtime: 'hyperty-runtime://fake-runtime', p2pHandler: undefined, p2pRequester: undefined, schema: 'schema://fake-schema-url', parent: 'resource://obj1', data: Object{message: ...}, children: 'children1'}, _sharingStatus: Promise{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectChild - observer] - ', Object{cType: 'update', oType: 'object', field: 'message', data: 'Hello Luis!'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObject - _onChange] - ', Object{cType: 'update', oType: 'object', field: 'message', data: 'Hello Luis!'}, Object{path: 'resource://obj1/children/children1', childId: 'hyperty://h2.domain/h2#1'}, Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/changes', body: Object{version: 1, source: 'hyperty://h2.domain/h2', attribute: 'message', lastModified: '2018-05-22T11:36:07.338Z'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/children/children1', body: Object{version: 1, source: 'hyperty://h2.domain/h2', attribute: 'message', lastModified: '2018-05-22T11:36:07.338Z', value: 'Hello Luis!', resource: 'hyperty://h2.domain/h2#1', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-FORWARD: ( resource://obj1/children/children1 to hyperty://h1.domain/h1 )' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/children/children1', body: Object{version: 1, source: 'hyperty://h2.domain/h2', attribute: 'message', lastModified: '2018-05-22T11:36:07.338Z', value: 'Hello Luis!', resource: 'hyperty://h2.domain/h2#1', mutual: true}, id: 11}, Syncher{_owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: 11, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://obj1: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onSubscriptionHandler: ..., _onAddChildrenHandler: ...}}, _observers: Object{}, _provisionals: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObject-Children-RCV: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/children/children1', body: Object{version: 1, source: 'hyperty://h2.domain/h2', attribute: 'message', lastModified: '2018-05-22T11:36:07.338Z', value: 'Hello Luis!', resource: 'hyperty://h2.domain/h2#1', mutual: true}, id: 11} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Change children: ', 'hyperty://h1.domain/h1', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/children/children1', body: Object{version: 1, source: 'hyperty://h2.domain/h2', attribute: 'message', lastModified: '2018-05-22T11:36:07.338Z', value: 'Hello Luis!', resource: 'hyperty://h2.domain/h2#1', mutual: true}, id: 11}, 'children1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectChild - observer] - ', Object{cType: 'update', oType: 'object', field: 'message', data: 'Hello Luis!'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'onChange: ', Object{cType: 'update', oType: 'object', field: 'message', data: 'Hello Luis!'} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-PUBLISH: ( resource://obj1/children/children1 )' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '7-_onPostMessage: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/children/children1', body: Object{version: 1, source: 'hyperty://h2.domain/h2', attribute: 'message', lastModified: '2018-05-22T11:36:07.338Z', value: 'Hello Luis!', resource: 'hyperty://h2.domain/h2#1', mutual: true}, id: 11} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-FORWARD: ( resource://obj1/children/children1 to hyperty://h2.domain/h2 )' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/children/children1', body: Object{version: 1, source: 'hyperty://h2.domain/h2', attribute: 'message', lastModified: '2018-05-22T11:36:07.338Z', value: 'Hello Luis!', resource: 'hyperty://h2.domain/h2#1', mutual: true}, id: 11}, Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 11, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://obj1: DataObjectObserver{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _filters: ..., _changeListener: ...}}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObject-Children-RCV: ', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/children/children1', body: Object{version: 1, source: 'hyperty://h2.domain/h2', attribute: 'message', lastModified: '2018-05-22T11:36:07.338Z', value: 'Hello Luis!', resource: 'hyperty://h2.domain/h2#1', mutual: true}, id: 11} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Change children: ', 'hyperty://h2.domain/h2', Object{type: 'update', from: 'resource://obj1', to: 'resource://obj1/children/children1', body: Object{version: 1, source: 'hyperty://h2.domain/h2', attribute: 'message', lastModified: '2018-05-22T11:36:07.338Z', value: 'Hello Luis!', resource: 'hyperty://h2.domain/h2#1', mutual: true}, id: 11}, 'children1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'UNSYNCHRONIZED VERSION: (data => 1, msg => 1)' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[NOTSAVING] storeDataObjects', DataObjectsStorage{_storageManager: StorageManager{db: Dexie{_dbSchema: ..., version: ..., _allTables: ..., _tableFactory: ..., _createTransaction: ..., _whenReady: ..., verno: ..., open: ..., close: ..., delete: ..., backendDB: ..., isOpen: ..., hasFailed: ..., dynamicallyOpened: ..., name: ..., on: ..., transaction: ..., table: ..., Collection: ..., Table: ..., Transaction: ..., Version: ..., WhereClause: ..., WriteableCollection: ..., WriteableTable: ..., syncherManager:ObjectURLs: ...}, storageName: 'syncherManager'}, _storeDataObject: Object{reporters: Object{resource://obj1: ...}, observers: Object{resource://obj1: ...}}, _cache: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create Reporter - createInput: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', authorise: ['hyperty://h2.domain/h2'], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher._create]: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', authorise: ['hyperty://h2.domain/h2'], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.345Z', runtime: 'hyperty-runtime://fake-runtime'}, Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isInterworkingProtoStub: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Scheme: ', 'resources' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Running object validation...' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Object validation succeeded' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REGISTRY-OBJECT: ', Object{schema: 'schema://fake-schema-url', authorise: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.345Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', childrens: ['children1', 'children2']} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '8-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 2} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 2, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '8-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/h1'}, id: 3} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 3, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create-response: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/h1', body: Object{code: 200, resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] InviteObservers ', ['hyperty://h2.domain/h2'], Object{p2p: false, store: false, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.345Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: ['children1', 'children2'], lastModified: '2018-05-22T11:36:07.345Z'} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, resource: 'resource://obj1', schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, authorise: [...], mutual: undefined}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'resource://obj1/subscription', to: 'hyperty://h2.domain/h2', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/h1', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'create', from: 'resource://obj1/subscription', to: 'hyperty://h2.domain/h2', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/h1', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}, id: 5}, Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 5, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] NOTIFICATION-EVENT: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', url: 'resource://obj1', domain: 'obj1', schema: 'schema://fake-schema-url', value: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.345Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.345Z'}, identity: undefined, ack: function ack(type) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'onNotification: ', Object{type: 'create', from: 'hyperty://h1.domain/h1', url: 'resource://obj1', domain: 'obj1', schema: 'schema://fake-schema-url', value: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.345Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.345Z'}, identity: undefined, ack: function ack(type) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - subscribe] - subscribe criteria: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher_subscribe] - subscribe message: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', mutual: true, resume: false}, Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'create: ', 'resource://obj1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h2.domain/h2'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '8-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.obj1/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h2.domain/h2'}, id: 7} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 7, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.obj1/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - node-subscribe-response(observer): ', Object{id: 7, type: 'response', from: 'domain://msg-node.obj1/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://obj1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://obj1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new DataProvisional: ', ['children1', 'children2'], 'resource://obj1' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - [SyncherManager._newSubscription]', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://obj1/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h2.domain/h2', mutual: true}}, Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://obj1', resume: false, mutual: true}, id: 6} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://obj1/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h2.domain/h2', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.subscriber: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://obj1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.type: ', 'forward' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}, id: 9}, Syncher{_owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: 9, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ..., hyperty://h2.domain/h26: ..., hyperty-runtime://fake-runtime/sm8: ..., resource://obj19: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://obj1: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onSubscriptionHandler: ...}}, _observers: Object{}, _provisionals: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectReporter-RCV: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}, id: 9} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectReporter._onSubscribe]', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'subscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined, mutual: true}, id: 9}, 'h2.domain', Object{type: 'hyperty', domain: 'h2.domain', identity: '/h2'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SUBSCRIPTION-EVENT: ', Object{type: 'subscribe', url: 'hyperty://h2.domain/h2', domain: 'h2.domain', identity: undefined, nutual: true, accept: function accept() { ... }, reject: function reject(reason) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'onSubscription: ', Object{type: 'subscribe', url: 'hyperty://h2.domain/h2', domain: 'h2.domain', identity: undefined, nutual: true, accept: function accept() { ... }, reject: function reject(reason) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 9, type: 'response', from: 'hyperty://h1.domain/h1', to: 'resource://obj1', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/h1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 8, type: 'response', from: 'resource://obj1/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://obj1/subscription' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - reporter-subscribe-response-new: ', Object{id: 8, type: 'response', from: 'resource://obj1/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - 200 code[SyncherManager._newSubscription] - observers: ', Object{}, 'resource://obj1', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1', resource: 'resource://obj1', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1', resource: 'resource://obj1', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/h1', resource: 'resource://obj1', mutual: true}}, Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer already exist: ', DataObjectObserver{_syncher: Syncher{_owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://obj1: ...}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }}, _url: 'resource://obj1', _created: '2018-05-22T11:36:07.345Z', _reporter: 'hyperty://h1.domain/h1', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ...}}, _childrens: ['children1', 'children2'], _mutual: true, _version: 0, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: false, _owner: 'hyperty://h2.domain/h2', _bus: MessageBus{_msgId: 9, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _metadata: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/h1', resume: false, mutual: true, created: '2018-05-22T11:36:07.345Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://obj1', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.345Z', version: 0, identity: undefined}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _url: 'resource://obj1/changes', _callback: function (msg) { ... }}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'resources: ', 'resource://obj1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'unsubscribe', from: 'hyperty://h2.domain/h2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resource: 'resource://obj1'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'unsubscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://obj1/subscription', body: Object{source: 'hyperty://h2.domain/h2', identity: undefined}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'unsubscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://obj1' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.type: ', 'forward' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h2.domain/h2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'unsubscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined}, id: 12}, Syncher{_owner: 'hyperty://h1.domain/h1', _bus: MessageBus{_msgId: 12, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h2.domain/h2: ..., hyperty://h1.domain/h1: ..., resource://obj1/subscription: ..., resource://obj1/changes: ..., resource://obj1: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/h14: ..., resource://obj1/subscription5: ..., hyperty://h2.domain/h210: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://obj1/changes: ..., resource://obj1/children/children1: ..., resource://obj1/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }, counter: NaN}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://obj1: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onSubscriptionHandler: ...}}, _observers: Object{}, _provisionals: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectReporter-RCV: ', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'unsubscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined}, id: 12} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectReporter._onUnSubscribe]', Object{type: 'forward', from: 'resource://obj1', to: 'hyperty://h1.domain/h1', body: Object{type: 'unsubscribe', from: 'hyperty://h2.domain/h2', to: 'resource://obj1', identity: undefined}, id: 12}, 'h2.domain', Object{type: 'hyperty', domain: 'h2.domain', identity: '/h2'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'UN-SUBSCRIPTION-EVENT: ', Object{type: 'unsubscribe', url: 'hyperty://h2.domain/h2', domain: 'h2.domain', identity: undefined} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'unsubscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.h2.domain/sm', body: Object{resource: 'resource://obj1', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '8-_onPostMessage: ', Object{type: 'unsubscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.h2.domain/sm', body: Object{resource: 'resource://obj1', childrenResources: [..., ...]}, id: 13} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 10, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectObserver-UNSUBSCRIBE: ', Object{id: 10, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h2.domain/h2', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[NOTSAVING] storeDataObjects', DataObjectsStorage{_storageManager: StorageManager{db: Dexie{_dbSchema: ..., version: ..., _allTables: ..., _tableFactory: ..., _createTransaction: ..., _whenReady: ..., verno: ..., open: ..., close: ..., delete: ..., backendDB: ..., isOpen: ..., hasFailed: ..., dynamicallyOpened: ..., name: ..., on: ..., transaction: ..., table: ..., Collection: ..., Table: ..., Transaction: ..., Version: ..., WhereClause: ..., WriteableCollection: ..., WriteableTable: ..., syncherManager:ObjectURLs: ...}, storageName: 'syncherManager'}, _storeDataObject: Object{reporters: Object{resource://obj1: ...}, observers: Object{resource://obj1: ...}}, _cache: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create Reporter - createInput: ', Object{p2p: false, store: true, schema: 'schema://fake-schema-url', authorise: ['hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd'], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher._create]: ', Object{p2p: false, store: true, schema: 'schema://fake-schema-url', authorise: ['hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd'], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true, created: '2018-05-22T11:36:07.378Z', runtime: 'hyperty-runtime://fake-runtime'}, Object{type: 'create', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url', store: true}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url', store: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isInterworkingProtoStub: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Scheme: ', 'resources' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Running object validation...' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Object validation succeeded' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REGISTRY-OBJECT: ', Object{schema: 'schema://fake-schema-url', authorise: undefined, name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true, created: '2018-05-22T11:36:07.378Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', childrens: ['children1', 'children2']} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '8-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}, id: 2} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 2, type: 'response', from: 'domain://msg-node.domain/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.domain/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '8-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}, id: 3} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 3, type: 'response', from: 'domain://msg-node.domain/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.domain/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{code: 200, resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create-response: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{code: 200, resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] InviteObservers ', ['hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd'], Object{p2p: false, store: true, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true, created: '2018-05-22T11:36:07.378Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', status: 'live', childrens: ['children1', 'children2'], lastModified: '2018-05-22T11:36:07.378Z'} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, authorise: [...], mutual: undefined}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'create', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}, id: 5}, Syncher{_owner: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', _bus: MessageBus{_msgId: 5, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: function (msg) { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] NOTIFICATION-EVENT: ', Object{type: 'create', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', domain: 'domain', schema: 'schema://fake-schema-url', value: Object{p2p: false, store: true, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true, created: '2018-05-22T11:36:07.378Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.378Z'}, identity: undefined, ack: function ack(type) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - subscribe] - subscribe criteria: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher_subscribe] - subscribe message: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true, resume: false}, Object{type: 'subscribe', from: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, authorise: [...], mutual: undefined}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'create', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}, id: 8}, Syncher{_owner: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', _bus: MessageBus{_msgId: 8, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea26: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db7: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription8: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: function (msg) { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] NOTIFICATION-EVENT: ', Object{type: 'create', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', domain: 'domain', schema: 'schema://fake-schema-url', value: Object{p2p: false, store: true, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true, created: '2018-05-22T11:36:07.378Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.378Z'}, identity: undefined, ack: function ack(type) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - subscribe] - subscribe criteria: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher_subscribe] - subscribe message: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true, resume: false}, Object{type: 'subscribe', from: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '8-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2'}, id: 10} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 10, type: 'response', from: 'domain://msg-node.domain/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.domain/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - node-subscribe-response(observer): ', Object{id: 10, type: 'response', from: 'domain://msg-node.domain/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new DataProvisional: ', ['children1', 'children2'], 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - [SyncherManager._newSubscription]', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', mutual: true}}, Object{type: 'subscribe', from: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', resume: false, mutual: true}, id: 6} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.subscriber: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.type: ', 'forward' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}, id: 12}, Syncher{_owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', _bus: MessageBus{_msgId: 12, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea26: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db7: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription8: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd9: ..., hyperty-runtime://fake-runtime/sm11: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b412: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: function (msg) { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onSubscriptionHandler: ...}}, _observers: Object{}, _provisionals: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectReporter-RCV: ', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}, id: 12} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectReporter._onSubscribe]', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}, id: 12}, 'h1.domain', Object{type: 'hyperty', domain: 'h1.domain', identity: '/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SUBSCRIPTION-EVENT: ', Object{type: 'subscribe', url: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', domain: 'h1.domain', identity: undefined, nutual: true, accept: function accept() { ... }, reject: function reject(reason) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 12, type: 'response', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 11, type: 'response', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - reporter-subscribe-response-new: ', Object{id: 11, type: 'response', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - 200 code[SyncherManager._newSubscription] - observers: ', Object{}, 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true}}, Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer already exist: ', DataObjectObserver{_syncher: Syncher{_owner: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ...}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }}, _url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', _created: '2018-05-22T11:36:07.378Z', _reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ...}}, _childrens: ['children1', 'children2'], _mutual: true, _version: 0, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: false, _owner: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', _bus: MessageBus{_msgId: 12, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db7: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription8: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd9: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: function (msg) { ... }}, _metadata: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true, created: '2018-05-22T11:36:07.378Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.378Z', version: 0, identity: undefined}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', _callback: function (msg) { ... }}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'sync2 resources:', 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '8-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd'}, id: 13} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 13, type: 'response', from: 'domain://msg-node.domain/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.domain/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - node-subscribe-response(observer): ', Object{id: 13, type: 'response', from: 'domain://msg-node.domain/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 9, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 9, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new DataProvisional: ', ['children1', 'children2'], 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - [SyncherManager._newSubscription]', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', mutual: true}}, Object{type: 'subscribe', from: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', resume: false, mutual: true}, id: 9} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.subscriber: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.type: ', 'forward' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}, id: 15}, Syncher{_owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', _bus: MessageBus{_msgId: 15, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db7: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription8: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd9: ..., hyperty-runtime://fake-runtime/sm14: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b415: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: function (msg) { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onSubscriptionHandler: ...}}, _observers: Object{}, _provisionals: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectReporter-RCV: ', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}, id: 15} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectReporter._onSubscribe]', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}, id: 15}, 'h1.domain', Object{type: 'hyperty', domain: 'h1.domain', identity: '/71697610-9136-2580-ebfe-4c0656c2a8dd'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SUBSCRIPTION-EVENT: ', Object{type: 'subscribe', url: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', domain: 'h1.domain', identity: undefined, nutual: true, accept: function accept() { ... }, reject: function reject(reason) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 15, type: 'response', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 14, type: 'response', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - reporter-subscribe-response-new: ', Object{id: 14, type: 'response', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - 200 code[SyncherManager._newSubscription] - observers: ', Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ObserverObject{_parent: SyncherManager{_bus: ..., _registry: ..., _catalog: ..., _storageManager: ..., _identityModule: ..., runtimeURL: ..., _url: ..., _objectURL: ..., _reporters: ..., _observers: ..., _dataObjectsStorage: ..., _domain: ..., _allocator: ...}, _url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', _childrens: [..., ...], _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subscriptions: Object{hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ...}, _storageSubscriptions: Object{}, _childrenListeners: [], _isToSaveData: true, _changeListener: MsgListener{_subscriptions: ..., _url: ..., _callback: ...}}}, 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', ObserverObject{_parent: SyncherManager{_bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _catalog: Object{getDataSchemaDescriptor: ...}, _storageManager: StorageManager{db: ..., storageName: ...}, _identityModule: Object{decryptMessage: ..., encryptMessage: ..., getToken: ...}, runtimeURL: 'hyperty-runtime://fake-runtime', _url: 'hyperty-runtime://fake-runtime/sm', _objectURL: 'hyperty-runtime://fake-runtime/object-allocation', _reporters: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ...}, _observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ...}, _dataObjectsStorage: DataObjectsStorage{_storageManager: ..., _storeDataObject: ..., _cache: ...}, _domain: 'fake-runtime', _allocator: Object{create: ...}}, _url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', _childrens: ['children1', 'children2'], _bus: MessageBus{_msgId: 15, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db7: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription8: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd9: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: function (msg) { ... }}, _subscriptions: Object{hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: Subscription{_deleteListener: ..., _changeListener: ..., _childrenListeners: ...}}, _storageSubscriptions: Object{}, _childrenListeners: [], _isToSaveData: true, _changeListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', _callback: (msg) => { ... }}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 9, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 9, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer: ', Object{id: 9, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true}}, Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer already exist: ', DataObjectObserver{_syncher: Syncher{_owner: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ...}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }}, _url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', _created: '2018-05-22T11:36:07.378Z', _reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ...}}, _childrens: ['children1', 'children2'], _mutual: true, _version: 0, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: false, _owner: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', _bus: MessageBus{_msgId: 15, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db7: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription8: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: function (msg) { ... }}, _metadata: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true, created: '2018-05-22T11:36:07.378Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.378Z', version: 0, identity: undefined}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', _callback: function (msg) { ... }}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'sync3 resources: ', 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[NOTSAVING] storeDataObjects', DataObjectsStorage{_storageManager: StorageManager{db: Dexie{_dbSchema: ..., version: ..., _allTables: ..., _tableFactory: ..., _createTransaction: ..., _whenReady: ..., verno: ..., open: ..., close: ..., delete: ..., backendDB: ..., isOpen: ..., hasFailed: ..., dynamicallyOpened: ..., name: ..., on: ..., transaction: ..., table: ..., Collection: ..., Table: ..., Transaction: ..., Version: ..., WhereClause: ..., WriteableCollection: ..., WriteableTable: ..., syncherManager:ObjectURLs: ...}, storageName: 'syncherManager'}, _storeDataObject: Object{reporters: Object{resource://obj1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ...}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ...}}, _cache: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create Reporter - createInput: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', authorise: ['hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd'], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher._create]: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', authorise: ['hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd'], p2pHandler: undefined, p2pRequester: undefined, data: Object{communication: Object{name: ...}, x: 10, y: 10}, name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true, created: '2018-05-22T11:36:07.421Z', runtime: 'hyperty-runtime://fake-runtime'}, Object{type: 'create', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, value: Object{schema: ..., authorise: ..., data: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isInterworkingProtoStub: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Scheme: ', 'resources' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Running object validation...' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Object validation succeeded' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REGISTRY-OBJECT: ', Object{schema: 'schema://fake-schema-url', authorise: undefined, name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true, created: '2018-05-22T11:36:07.421Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', childrens: ['children1', 'children2']} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '10-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}, id: 2} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 2, type: 'response', from: 'domain://msg-node.domain/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.domain/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '10-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{resources: [..., ...], source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}, id: 3} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 3, type: 'response', from: 'domain://msg-node.domain/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.domain/sm' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{code: 200, resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - create] - create-response: ', Object{id: 1, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{code: 200, resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', childrenResources: [..., ...]}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] InviteObservers ', ['hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd'], Object{p2p: false, store: false, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true, created: '2018-05-22T11:36:07.421Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', status: 'live', childrens: ['children1', 'children2'], lastModified: '2018-05-22T11:36:07.421Z'} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, authorise: [...], mutual: undefined}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'create', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}, id: 5}, Syncher{_owner: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', _bus: MessageBus{_msgId: 5, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] NOTIFICATION-EVENT: ', Object{type: 'create', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', domain: 'domain', schema: 'schema://fake-schema-url', value: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true, created: '2018-05-22T11:36:07.421Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.421Z'}, identity: undefined, ack: function ack(type) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - subscribe] - subscribe criteria: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher_subscribe] - subscribe message: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true, resume: false}, Object{type: 'subscribe', from: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', to: 'hyperty-runtime://fake-runtime/sm', body: Object{resume: false, resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, authorise: [...], mutual: undefined}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'create', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'create', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', body: Object{p2p: false, identity: undefined, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', value: Object{p2p: ..., store: ..., schema: ..., p2pHandler: ..., p2pRequester: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ...}, schema: 'schema://fake-schema-url'}, id: 8}, Syncher{_owner: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', _bus: MessageBus{_msgId: 8, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea26: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db7: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription8: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] NOTIFICATION-EVENT: ', Object{type: 'create', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', domain: 'domain', schema: 'schema://fake-schema-url', value: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', p2pHandler: undefined, p2pRequester: undefined, name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true, created: '2018-05-22T11:36:07.421Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.421Z'}, identity: undefined, ack: function ack(type) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher - subscribe] - subscribe criteria: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher_subscribe] - subscribe message: ', Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true, resume: false}, Object{type: 'subscribe', from: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', resume: false, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.from ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - get ', 'syncherManager:ObjectURLs', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '10-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2'}, id: 10} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 10, type: 'response', from: 'domain://msg-node.domain/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.domain/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - node-subscribe-response(observer): ', Object{id: 10, type: 'response', from: 'domain://msg-node.domain/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new DataProvisional: ', ['children1', 'children2'], 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - [SyncherManager._newSubscription]', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', mutual: true}}, Object{type: 'subscribe', from: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', resume: false, mutual: true}, id: 6} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.subscriber: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.type: ', 'forward' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}, id: 12}, Syncher{_owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', _bus: MessageBus{_msgId: 12, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea26: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db7: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription8: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd9: ..., hyperty-runtime://fake-runtime/sm11: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b412: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onSubscriptionHandler: ...}}, _observers: Object{}, _provisionals: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectReporter-RCV: ', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}, id: 12} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectReporter._onSubscribe]', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}, id: 12}, 'h1.domain', Object{type: 'hyperty', domain: 'h1.domain', identity: '/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SUBSCRIPTION-EVENT: ', Object{type: 'subscribe', url: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', domain: 'h1.domain', identity: undefined, nutual: true, accept: function accept() { ... }, reject: function reject(reason) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 12, type: 'response', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 11, type: 'response', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - reporter-subscribe-response-new: ', Object{id: 11, type: 'response', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - 200 code[SyncherManager._newSubscription] - observers: ', Object{}, 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', undefined -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer: ', Object{id: 6, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true}}, Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer already exist: ', DataObjectObserver{_syncher: Syncher{_owner: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ...}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }}, _url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', _created: '2018-05-22T11:36:07.421Z', _reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ...}}, _childrens: ['children1', 'children2'], _mutual: true, _version: 0, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: false, _owner: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', _bus: MessageBus{_msgId: 12, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db7: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription8: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd9: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _metadata: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true, created: '2018-05-22T11:36:07.421Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.421Z', version: 0, identity: undefined}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', _callback: function (msg) { ... }}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] resource://domain/44d81973-119c-6365-af53-1c5765eae3b4 publish change: ', Object{cType: 'update', oType: 'object', field: 'x', data: 20} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObject - _onChange] - ', Object{cType: 'update', oType: 'object', field: 'x', data: 20}, undefined, Object{type: 'update', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', body: Object{version: 1, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', attribute: 'x', lastModified: '2018-05-22T11:36:07.459Z'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'update', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', body: Object{version: 1, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', attribute: 'x', lastModified: '2018-05-22T11:36:07.459Z', value: 20, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-PUBLISH: ( resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes )' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '10-_onPostMessage: ', Object{type: 'update', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', body: Object{version: 1, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', attribute: 'x', lastModified: '2018-05-22T11:36:07.459Z', value: 20, mutual: true}, id: 13} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-FORWARD: ( resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes to hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2 )' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'update', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', body: Object{version: 1, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', attribute: 'x', lastModified: '2018-05-22T11:36:07.459Z', value: 20, mutual: true}, id: 13}, Syncher{_owner: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', _bus: MessageBus{_msgId: 13, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db7: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription8: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd9: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: DataObjectObserver{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _filters: ..., _changeListener: ...}}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectObserver-resource://domain/44d81973-119c-6365-af53-1c5765eae3b4-RCV: ', Object{type: 'update', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', body: Object{version: 1, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', attribute: 'x', lastModified: '2018-05-22T11:36:07.459Z', value: 20, mutual: true}, id: 13} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'sync2 resources:', 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REQUEST-SCHEMA: ', 'schema://fake-schema-url' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '10-_onPostMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'domain://msg-node.domain/sm', body: Object{identity: undefined, resources: [..., ..., ...], source: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd'}, id: 14} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 14, type: 'response', from: 'domain://msg-node.domain/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'domain://msg-node.domain/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - node-subscribe-response(observer): ', Object{id: 14, type: 'response', from: 'domain://msg-node.domain/sm', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 9, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 9, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', body: Object{code: 100, childrenResources: [..., ...], schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new DataProvisional: ', ['children1', 'children2'], 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - [SyncherManager._newSubscription]', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', mutual: true}}, Object{type: 'subscribe', from: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', to: 'hyperty-runtime://fake-runtime/sm', body: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', resume: false, mutual: true}, id: 9} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'subscribe', from: 'hyperty-runtime://fake-runtime/sm', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', body: Object{identity: undefined, subscriber: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.subscriber: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.type: ', 'forward' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}, id: 16}, Syncher{_owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', _bus: MessageBus{_msgId: 16, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db7: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription8: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd9: ..., hyperty-runtime://fake-runtime/sm15: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b416: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: DataObjectReporter{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _subscriptions: ..., _objectListener: ..., invitations: ..., _childrenSizeThreshold: ..., _onSubscriptionHandler: ...}}, _observers: Object{}, _provisionals: Object{}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectReporter-RCV: ', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}, id: 16} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObjectReporter._onSubscribe]', Object{type: 'forward', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', body: Object{type: 'subscribe', from: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', identity: undefined, mutual: true}, id: 16}, 'h1.domain', Object{type: 'hyperty', domain: 'h1.domain', identity: '/71697610-9136-2580-ebfe-4c0656c2a8dd'} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'SUBSCRIPTION-EVENT: ', Object{type: 'subscribe', url: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', domain: 'h1.domain', identity: undefined, nutual: true, accept: function accept() { ... }, reject: function reject(reason) { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 16, type: 'response', from: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 15, type: 'response', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - reporter-subscribe-response-new: ', Object{id: 15, type: 'response', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription', to: 'hyperty-runtime://fake-runtime/sm', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db'}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'REUSETEST SyncherManager - 200 code[SyncherManager._newSubscription] - observers: ', Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ObserverObject{_parent: SyncherManager{_bus: ..., _registry: ..., _catalog: ..., _storageManager: ..., _identityModule: ..., runtimeURL: ..., _url: ..., _objectURL: ..., _reporters: ..., _observers: ..., _dataObjectsStorage: ..., _domain: ..., _allocator: ...}, _url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', _childrens: [..., ...], _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subscriptions: Object{hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ...}, _storageSubscriptions: Object{}, _childrenListeners: [], _isToSaveData: false, _changeListener: MsgListener{_subscriptions: ..., _url: ..., _callback: ...}}}, 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', ObserverObject{_parent: SyncherManager{_bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _catalog: Object{getDataSchemaDescriptor: ...}, _storageManager: StorageManager{db: ..., storageName: ...}, _identityModule: Object{decryptMessage: ..., encryptMessage: ..., getToken: ...}, runtimeURL: 'hyperty-runtime://fake-runtime', _url: 'hyperty-runtime://fake-runtime/sm', _objectURL: 'hyperty-runtime://fake-runtime/object-allocation', _reporters: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ...}, _observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ...}, _dataObjectsStorage: DataObjectsStorage{_storageManager: ..., _storeDataObject: ..., _cache: ...}, _domain: 'fake-runtime', _allocator: Object{create: ...}}, _url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', _childrens: ['children1', 'children2'], _bus: MessageBus{_msgId: 16, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db7: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription8: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd9: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subscriptions: Object{hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: Subscription{_deleteListener: ..., _changeListener: ..., _childrenListeners: ...}}, _storageSubscriptions: Object{}, _childrenListeners: [], _isToSaveData: false, _changeListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', _callback: (msg) => { ... }}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Hyperty', 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[StorageManager] - set ', 'syncherManager:ObjectURLs', Object{reporters: Object{resource://obj1: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ..., version: ..., lastModified: ...}, resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., childrens: ..., isReporter: ..., isToSaveData: ...}}, observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: Object{subscriptions: ..., subscriberUsers: ..., childrenObjects: ..., data: ..., p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., version: ..., isReporter: ..., isToSaveData: ...}}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{id: 9, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty-runtime://fake-runtime/sm' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - subscribe-response: ', Object{id: 9, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer: ', Object{id: 9, type: 'response', from: 'hyperty-runtime://fake-runtime/sm', to: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', body: Object{code: 200, schema: 'schema://fake-schema-url', value: Object{p2p: ..., store: ..., schema: ..., name: ..., reporter: ..., resume: ..., mutual: ..., created: ..., runtime: ..., url: ..., status: ..., childrens: ..., lastModified: ..., data: ..., version: ...}, owner: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resource: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', mutual: true}}, Object{} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Data Object - AllocateListeners] - ', ['children1', 'children2'] -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[syncher] - new Data Object Observer already exist: ', DataObjectObserver{_syncher: Syncher{_owner: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', _bus: MessageBus{_msgId: ..., _subscriptions: ..., _responseTimeOut: ..., _responseCallbacks: ..., _registry: ..., _forwards: ..., _pipelineIn: ..., _pipelineOut: ..., _onPostMessage: ...}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ...}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }}, _url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', _created: '2018-05-22T11:36:07.421Z', _reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', _runtime: 'hyperty-runtime://fake-runtime', _schema: 'schema://fake-schema-url', _name: 'no name', _status: 'live', _syncObj: SyncObject{_observers: [...], _filters: Object{}, _data: Object{communication: ..., x: ..., y: ...}}, _childrens: ['children1', 'children2'], _mutual: true, _version: 1, _childId: 0, _childrenListeners: [MsgListener{_subscriptions: ..., _url: ..., _callback: ...}, MsgListener{_subscriptions: ..., _url: ..., _callback: ...}], _resumed: false, _owner: 'hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd', _bus: MessageBus{_msgId: 16, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db7: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription8: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _metadata: Object{p2p: false, store: false, schema: 'schema://fake-schema-url', name: 'no name', reporter: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', resume: false, mutual: true, created: '2018-05-22T11:36:07.421Z', runtime: 'hyperty-runtime://fake-runtime', url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', status: 'live', childrens: [..., ...], lastModified: '2018-05-22T11:36:07.421Z', version: 1, identity: undefined}, _hypertyResourceFactory: HypertyResourceFactory{}, _childrenObjects: Object{}, _sharedChilds: [], _filters: Object{}, _changeListener: MsgListener{_subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _url: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', _callback: function (msg) { ... }}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[Syncher.DataObjectReporter] resource://domain/44d81973-119c-6365-af53-1c5765eae3b4 publish change: ', Object{cType: 'update', oType: 'object', field: 'x', data: 20} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '[DataObject - _onChange] - ', Object{cType: 'update', oType: 'object', field: 'x', data: 20}, undefined, Object{type: 'update', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', body: Object{version: 2, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', attribute: 'x', lastModified: '2018-05-22T11:36:07.469Z'}} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'onPOSTMessage: ', Object{type: 'update', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', body: Object{version: 2, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', attribute: 'x', lastModified: '2018-05-22T11:36:07.469Z', value: 20, mutual: true}} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - message.body.source: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[MessageBus - isIncomingMessage] - check if isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'isLocal: ', 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-PUBLISH: ( resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes )' -
Chrome 63.0.3239 (Linux 0.0.0) LOG: '10-_onPostMessage: ', Object{type: 'update', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', body: Object{version: 2, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', attribute: 'x', lastModified: '2018-05-22T11:36:07.469Z', value: 20, mutual: true}, id: 17} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: 'MB-FORWARD: ( resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes to hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2 )' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[Syncher] Syncher-RCV: ', Object{type: 'update', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', body: Object{version: 2, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', attribute: 'x', lastModified: '2018-05-22T11:36:07.469Z', value: 20, mutual: true}, id: 17}, Syncher{_owner: 'hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2', _bus: MessageBus{_msgId: 17, _subscriptions: Object{hyperty-runtime://fake-runtime/sm: ..., hyperty://h1.domain/71697610-9136-2580-ebfe-4c0656c2a8dd: ..., hyperty://h1.domain/d5e5ca62-f428-bef9-ccb0-93dc739d4ea2: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _responseTimeOut: 15000, _responseCallbacks: Object{hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db4: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription5: ..., hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db7: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/subscription8: ...}, _registry: Object{registerDataObject: ..., isInterworkingProtoStub: ..., unregisterDataObject: ..., getHypertyOwner: ..., getPreAuthSubscribers: ..., getHypertyName: ..., isDataObjectURL: ..., registerSubscribedDataObject: ..., registerSubscriber: ..., isLocal: ..., runtimeURL: ...}, _forwards: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children1: ..., resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/children/children2: ...}, _pipelineIn: Pipeline{handlers: ..., onFail: ...}, _pipelineOut: Pipeline{handlers: ..., onFail: ...}, _onPostMessage: (msg) => { ... }}, _subURL: 'hyperty-runtime://fake-runtime/sm', _runtimeUrl: 'hyperty-runtime://fake-runtime', _p2pHandler: undefined, _p2pRequester: undefined, _reporters: Object{}, _observers: Object{resource://domain/44d81973-119c-6365-af53-1c5765eae3b4: DataObjectObserver{_syncher: ..., _url: ..., _created: ..., _reporter: ..., _runtime: ..., _schema: ..., _name: ..., _status: ..., _syncObj: ..., _childrens: ..., _mutual: ..., _version: ..., _childId: ..., _childrenListeners: ..., _resumed: ..., _owner: ..., _bus: ..., _metadata: ..., _hypertyResourceFactory: ..., _childrenObjects: ..., _sharedChilds: ..., _filters: ..., _changeListener: ...}}, _provisionals: Object{}, _onNotificationHandler: (notifyEvent) => { ... }} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectObserver-resource://domain/44d81973-119c-6365-af53-1c5765eae3b4-RCV: ', Object{type: 'update', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', body: Object{version: 2, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', attribute: 'x', lastModified: '2018-05-22T11:36:07.469Z', value: 20, mutual: true}, id: 17} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'Sync 2: ', Object{cType: 'update', oType: 'object', field: 'x', data: 20} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'DataObjectObserver-resource://domain/44d81973-119c-6365-af53-1c5765eae3b4-RCV: ', Object{type: 'update', from: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4', to: 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4/changes', body: Object{version: 2, source: 'hyperty://h1.domain/c3503f2c-ebd6-cf86-5a44-2a3c861324db', attribute: 'x', lastModified: '2018-05-22T11:36:07.469Z', value: 20, mutual: true}, id: 17} -
Chrome 63.0.3239 (Linux 0.0.0) LOG: 'sync3 resources: ', 'resource://domain/44d81973-119c-6365-af53-1c5765eae3b4' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[utils - splitObjectURL]: ', 'comm://localhost/f3b43208-63fa-468f-8fe0-ac3d20ca9dc0/children/chatmessages' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[utils - splitObjectURL]: ', Object{url: 'comm://localhost/f3b43208-63fa-468f-8fe0-ac3d20ca9dc0', resource: 'chatmessages'} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[utils - splitObjectURL]: ', 'comm://localhost/f3b43208-63fa-468f-8fe0-ac3d20ca9dc0/children' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[utils - splitObjectURL]: ', Object{url: 'comm://localhost/f3b43208-63fa-468f-8fe0-ac3d20ca9dc0', resource: undefined} -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[utils - splitObjectURL]: ', 'comm://localhost/f3b43208-63fa-468f-8fe0-ac3d20ca9dc0' -
Chrome 63.0.3239 (Linux 0.0.0) INFO: '[utils - splitObjectURL]: ', Object{url: 'comm://localhost/f3b43208-63fa-468f-8fe0-ac3d20ca9dc0', resource: undefined}