{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///post-robot.min.js","webpack:///webpack/bootstrap 9efb2241936d8016d81f","webpack:///./~/cross-domain-utils/src/index.js","webpack:///./src/global.js","webpack:///./src/lib/util.js","webpack:///./src/interface.js","webpack:///./src/lib/log.js","webpack:///./src/conf/constants.js","webpack:///./src/drivers/listeners.js","webpack:///./src/drivers/send/index.js","webpack:///./src/public/index.js","webpack:///./~/cross-domain-safe-weakmap/src/native.js","webpack:///./~/cross-domain-safe-weakmap/src/util.js","webpack:///./~/cross-domain-safe-weakmap/src/weakmap.js","webpack:///./~/cross-domain-utils/src/util.js","webpack:///./~/zalgo-promise/src/exceptions.js","webpack:///./~/zalgo-promise/src/promise.js","webpack:///./~/zalgo-promise/src/utils.js","webpack:///./src/clean.js","webpack:///./src/conf/config.js","webpack:///./src/drivers/receive/index.js","webpack:///./src/drivers/receive/types.js","webpack:///./src/drivers/send/strategies.js","webpack:///./src/index.js","webpack:///./src/lib/ready.js","webpack:///./src/lib/serialize.js","webpack:///./src/public/client.js","webpack:///./src/public/config.js","webpack:///./src/public/server.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","__WEBPACK_IMPORTED_MODULE_0__config__","__WEBPACK_IMPORTED_MODULE_1__constants__","getActualDomain","win","location","Error","protocol","CONSTANTS","FILE_PROTOCOL","host","getDomain","window","domain","mockDomain","indexOf","MOCK_PROTOCOL","isBlankDomain","href","err","isActuallySameDomain","desc","getOwnPropertyDescriptor","isSameDomain","getParent","parent","getOpener","opener","getParents","result","push","isAncestorParent","child","childParent","getFrames","frames","len","length","frame","getAllChildFrames","_iterator","_isArray","Array","isArray","_i2","Symbol","iterator","_ref","next","done","_iterator2","_isArray2","_i3","_ref2","childFrame","getTop","top","_iterator3","_isArray3","_i4","_ref3","isFrameWindowClosed","contentWindow","parentNode","doc","ownerDocument","body","contains","safeIndexOf","collection","item","isWindowClosed","allowMock","arguments","undefined","closed","message","IE_WIN_ACCESS_ERROR","mockclosed","__WEBPACK_IMPORTED_MODULE_0__util__","iframeIndex","iframeWindows","iframeFrames","getAncestor","isAncestor","actualParent","_iterator7","_isArray7","_i9","_ref7","isPopup","Boolean","isIframe","matchDomain","pattern","origin","WILDCARD","toString","match","JSON","stringify","some","subpattern","isWindow","obj","Window","self","__cross_domain_utils_window_check__","__WEBPACK_IMPORTED_MODULE_0__promise__","global","__WEBPACK_IMPORTED_MODULE_0__conf__","WINDOW_PROPS","POSTROBOT","registerSelf","__WEBPACK_IMPORTED_MODULE_1__log__","__WEBPACK_IMPORTED_MODULE_2__serialize__","__WEBPACK_IMPORTED_MODULE_3__ready__","__WEBPACK_IMPORTED_MODULE_0__receive__","__WEBPACK_IMPORTED_MODULE_1__send__","__WEBPACK_IMPORTED_MODULE_2__listeners__","__WEBPACK_IMPORTED_MODULE_0__interface__","stringifyError","level","stack","newErr","noop","addEventListener","event","handler","attachEvent","cancel","removeEventListener","detachEvent","uniqueID","chars","replace","charAt","Math","floor","random","eachArray","callback","eachObject","key","each","_typeof","replaceObject","depth","newobj","childItem","safeInterval","method","time","runInterval","timeout","setTimeout","clearTimeout","isRegex","getWindowType","__WEBPACK_IMPORTED_MODULE_1_cross_domain_utils_src__","__WEBPACK_IMPORTED_MODULE_2__conf__","WINDOW_TYPES","POPUP","IFRAME","FULLPAGE","jsonStringify","replacer","indent","objectToJSON","arrayToJSON","toJSON","jsonParse","parse","once","constructor","called","apply","init","__WEBPACK_IMPORTED_MODULE_2__global__","initialized","__WEBPACK_IMPORTED_MODULE_1__drivers__","__WEBPACK_IMPORTED_MODULE_0__lib__","on","__WEBPACK_IMPORTED_MODULE_3__public__","send","bridge","__WEBPACK_IMPORTED_MODULE_4__clean__","__WEBPACK_IMPORTED_MODULE_5_zalgo_promise_src__","log","__WEBPACK_IMPORTED_MODULE_1__conf__","LOG_LEVELS","Function","bind","console","forEach","clearLogs","clear","LOG_TO_PAGE","container","document","getElementById","removeChild","writeToPage","args","createElement","id","style","cssText","appendChild","el","date","Date","split","payload","slice","map","json","e","join","msg","innerHTML","color","warn","error","info","debug","childNodes","insertBefore","logLevel","LOG_LEVEL","unshift","pathname","toLowerCase","_len","_key","_len2","_key2","_len3","_key3","_len4","_key4","__WEBPACK_IMPORTED_MODULE_0__weakmap__","POST_MESSAGE_NAMES_LIST","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","ERROR","POST_MESSAGE_NAMES","METHOD","READY","OPEN_TUNNEL","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","POST_MESSAGE","BRIDGE","GLOBAL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","keys","addResponseListener","hash","listener","__WEBPACK_IMPORTED_MODULE_3__global__","responseListeners","getResponseListener","deleteResponseListener","markResponseListenerErrored","erroredResponseListeners","isResponseListenerErrored","getRequestListener","__WEBPACK_IMPORTED_MODULE_5__conf__","nameListeners","requestListeners","_arr","WINDOW_WILDCARD","_i","winQualifier","winListeners","__DOMAIN_REGEX__","_ref4","regex","__WEBPACK_IMPORTED_MODULE_2_cross_domain_utils_src__","addRequestListener","_ref5","listenersCollection","_ref6","_iterator4","_isArray4","_i5","_ref8","_iterator5","_isArray5","_i6","_ref9","existingListener","__WEBPACK_IMPORTED_MODULE_1_cross_domain_safe_weakmap_src__","set","strDomain","regexListeners","regexListener","__WEBPACK_IMPORTED_MODULE_4__lib__","splice","_defineProperty","writable","buildMessage","options","__WEBPACK_IMPORTED_MODULE_3__lib__","type","sourceDomain","__WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__","_extends","windowType","sendMessage","__WEBPACK_IMPORTED_MODULE_1_zalgo_promise_src__","ZalgoPromise","data","ack","ALLOW_SAME_ORIGIN","messages","serializedMessage","__WEBPACK_IMPORTED_MODULE_4__strategies__","strategyName","ALLOWED_POST_MESSAGE_METHODS","then","results","success","status","assign","target","source","__WEBPACK_IMPORTED_MODULE_1__client__","__WEBPACK_IMPORTED_MODULE_2__server__","__WEBPACK_IMPORTED_MODULE_3__config__","hasNativeWeakMap","WeakMap","freeze","testWeakMap","testKey","_classCallCheck","instance","Constructor","TypeError","CrossDomainSafeWeakMap","__WEBPACK_IMPORTED_MODULE_1__native__","__WEBPACK_IMPORTED_MODULE_2__util__","_createClass","defineProperties","props","descriptor","protoProps","staticProps","counter","now","weakmap","values","isSafeToReadWrite","entry","_cleanupClosedWindows","index","has","dispatchPossiblyUnhandledError","dispatchedErrors","j","possiblyUnhandledPromiseHandlers","onPossiblyUnhandledException","__WEBPACK_IMPORTED_MODULE_0__utils__","__WEBPACK_IMPORTED_MODULE_1__exceptions__","__zalgopromise__","flushPromises","activeCount","_this","resolved","rejected","errorHandled","handlers","isAsync","res","resolve","reject","dispatch","_this2","_this3","dispatching","_handlers$i","onSuccess","onError","promise","flushQueue","_this4","Promise","promises","count","prom","all","items","context","delay","promisesToFlush","isPromise","cleanUpWindow","requestPromises","__WEBPACK_IMPORTED_MODULE_0__global__","popupWindowsByWin","remoteWindows","methods","readyPromises","CONFIG","_ALLOWED_POST_MESSAGE","__WEBPACK_IMPORTED_MODULE_0__constants__","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","navigator","userAgent","RES_TIMEOUT","Infinity","parseMessage","parsedMessage","__WEBPACK_IMPORTED_MODULE_2__lib__","__WEBPACK_IMPORTED_MODULE_4__types__","receiveMessage","receivedMessages","messageListener","messageEvent","sourceElement","originalEvent","listenForMessages","RECEIVE_MESSAGE_TYPES","_RECEIVE_MESSAGE_TYPE","__WEBPACK_IMPORTED_MODULE_0_zalgo_promise_src__","__WEBPACK_IMPORTED_MODULE_4__send__","__WEBPACK_IMPORTED_MODULE_5__listeners__","respond","fireAndForget","originalSource","code","handleError","response","SEND_MESSAGE_STRATEGIES","domains","dom","postMessage","initOnReady","__WEBPACK_IMPORTED_MODULE_5__global__","__WEBPACK_IMPORTED_MODULE_3__conf__","__WEBPACK_IMPORTED_MODULE_2_zalgo_promise_src__","__WEBPACK_IMPORTED_MODULE_4__log__","__WEBPACK_IMPORTED_MODULE_6__util__","onWindowReady","__WEBPACK_IMPORTED_MODULE_0_cross_domain_safe_weakmap_src__","isSerialized","__type__","serializeMethod","destination","__WEBPACK_IMPORTED_MODULE_4__util__","__WEBPACK_IMPORTED_MODULE_6__global__","__id__","__name__","serializeError","__message__","__code__","serializePromise","__then__","serializeZalgoPromise","serializeRegex","__source__","serializeMethods","deserializeMethod","wrapper","__WEBPACK_IMPORTED_MODULE_5__log__","__xdomain__","deserializeError","deserializeZalgoPromise","deserializePromise","deserializeRegex","RegExp","deserializeMethods","listenForMethods","meth","request","targetWindow","tagName","HTMLIFrameElement","__WEBPACK_IMPORTED_MODULE_5__lib__","hasResult","requestPromise","responseListener","__WEBPACK_IMPORTED_MODULE_4__drivers__","ackTimeout","resTimeout","cycleTime","cycle","min","sendToParent","client","_send","disable","listen","listenerOptions","errorHandler","__WEBPACK_IMPORTED_MODULE_4__conf__","requestListener","__WEBPACK_IMPORTED_MODULE_3__drivers__","errorOnClose","interval","onceListener","_on"],"mappings":"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","file":"post-robot.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"postRobot\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"postRobot\"] = factory();\n\telse\n\t\troot[\"postRobot\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"postRobot\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"postRobot\"] = factory();\n\telse\n\t\troot[\"postRobot\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 27);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__config__ = __webpack_require__(23);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_0__config__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(11);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return __WEBPACK_IMPORTED_MODULE_1__constants__[\"a\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\"]; });\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export isFileProtocol */\n/* harmony export (immutable) */ __webpack_exports__[\"i\"] = getActualDomain;\n/* harmony export (immutable) */ __webpack_exports__[\"g\"] = getDomain;\n/* unused harmony export isBlankDomain */\n/* harmony export (immutable) */ __webpack_exports__[\"h\"] = isActuallySameDomain;\n/* unused harmony export isSameDomain */\n/* unused harmony export getParent */\n/* unused harmony export getOpener */\n/* unused harmony export getParents */\n/* unused harmony export isAncestorParent */\n/* unused harmony export getFrames */\n/* unused harmony export getAllChildFrames */\n/* unused harmony export getTop */\n/* unused harmony export getAllFramesInWindow */\n/* unused harmony export isTop */\n/* unused harmony export isFrameWindowClosed */\n/* harmony export (immutable) */ __webpack_exports__[\"e\"] = isWindowClosed;\n/* unused harmony export linkFrameWindow */\n/* unused harmony export getUserAgent */\n/* unused harmony export getFrameByName */\n/* unused harmony export findChildFrameByName */\n/* unused harmony export findFrameByName */\n/* unused harmony export isParent */\n/* unused harmony export isOpener */\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getAncestor;\n/* unused harmony export getAncestors */\n/* harmony export (immutable) */ __webpack_exports__[\"j\"] = isAncestor;\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = isPopup;\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = isIframe;\n/* unused harmony export isFullpage */\n/* unused harmony export getDistanceFromTop */\n/* unused harmony export getNthParent */\n/* unused harmony export getNthParentFromTop */\n/* unused harmony export isSameTopWindow */\n/* harmony export (immutable) */ __webpack_exports__[\"f\"] = matchDomain;\n/* unused harmony export getDomainFromUrl */\n/* unused harmony export onCloseWindow */\n/* harmony export (immutable) */ __webpack_exports__[\"d\"] = isWindow;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util__ = __webpack_require__(18);\n\n\nvar CONSTANTS = {\n MOCK_PROTOCOL: 'mock:',\n FILE_PROTOCOL: 'file:',\n WILDCARD: '*'\n};\n\nvar IE_WIN_ACCESS_ERROR = 'Call was rejected by callee.\\r\\n';\n\nfunction isFileProtocol() {\n var win = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;\n\n return win.location.protocol === CONSTANTS.FILE_PROTOCOL;\n}\n\nfunction getActualDomain(win) {\n\n var location = win.location;\n\n if (!location) {\n throw new Error('Can not read window location');\n }\n\n var protocol = location.protocol;\n\n if (!protocol) {\n throw new Error('Can not read window protocol');\n }\n\n if (protocol === CONSTANTS.FILE_PROTOCOL) {\n return CONSTANTS.FILE_PROTOCOL + '//';\n }\n\n var host = location.host;\n\n if (!host) {\n throw new Error('Can not read window host');\n }\n\n return protocol + '//' + host;\n}\n\nfunction getDomain(win) {\n\n win = win || window;\n\n var domain = getActualDomain(win);\n\n if (domain && win.mockDomain && win.mockDomain.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n return win.mockDomain;\n }\n\n return domain;\n}\n\nfunction isBlankDomain(win) {\n try {\n if (!win.location.href) {\n return true;\n }\n\n if (win.location.href === 'about:blank') {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nfunction isActuallySameDomain(win) {\n\n try {\n var desc = Object.getOwnPropertyDescriptor(win, 'location');\n\n if (desc && desc.enumerable === false) {\n return false;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isBlankDomain(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getActualDomain(win) === getActualDomain(window)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nfunction isSameDomain(win) {\n\n if (!isActuallySameDomain(win)) {\n return false;\n }\n\n try {\n\n if (isBlankDomain(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getDomain(window) === getDomain(win)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nfunction getParent(win) {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.parent && win.parent !== win) {\n return win.parent;\n }\n } catch (err) {\n return;\n }\n}\n\nfunction getOpener(win) {\n\n if (!win) {\n return;\n }\n\n // Make sure we're not actually an iframe which has had window.open() called on us\n if (getParent(win)) {\n return;\n }\n\n try {\n return win.opener;\n } catch (err) {\n return;\n }\n}\n\nfunction getParents(win) {\n\n var result = [];\n\n try {\n\n while (win.parent !== win) {\n result.push(win.parent);\n win = win.parent;\n }\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\nfunction isAncestorParent(parent, child) {\n\n if (!parent || !child) {\n return false;\n }\n\n var childParent = getParent(child);\n\n if (childParent) {\n return childParent === parent;\n }\n\n if (getParents(child).indexOf(parent) !== -1) {\n return true;\n }\n\n return false;\n}\n\nfunction getFrames(win) {\n\n var result = [];\n\n var frames = void 0;\n\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n\n var len = void 0;\n\n try {\n len = frames.length;\n } catch (err) {\n // pass\n }\n\n if (len === 0) {\n return result;\n }\n\n if (len) {\n for (var i = 0; i < len; i++) {\n\n var frame = void 0;\n\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n\n result.push(frame);\n }\n\n return result;\n }\n\n for (var _i = 0; _i < 100; _i++) {\n var _frame = void 0;\n\n try {\n _frame = frames[_i];\n } catch (err) {\n return result;\n }\n\n if (!_frame) {\n return result;\n }\n\n result.push(_frame);\n }\n\n return result;\n}\n\nfunction getAllChildFrames(win) {\n\n var result = [];\n\n for (var _iterator = getFrames(win), _isArray = Array.isArray(_iterator), _i2 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i2 >= _iterator.length) break;\n _ref = _iterator[_i2++];\n } else {\n _i2 = _iterator.next();\n if (_i2.done) break;\n _ref = _i2.value;\n }\n\n var frame = _ref;\n\n result.push(frame);\n\n for (var _iterator2 = getAllChildFrames(frame), _isArray2 = Array.isArray(_iterator2), _i3 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i3 >= _iterator2.length) break;\n _ref2 = _iterator2[_i3++];\n } else {\n _i3 = _iterator2.next();\n if (_i3.done) break;\n _ref2 = _i3.value;\n }\n\n var childFrame = _ref2;\n\n result.push(childFrame);\n }\n }\n\n return result;\n}\n\nfunction getTop(win) {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.top) {\n return win.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(win) === win) {\n return win;\n }\n\n try {\n if (isAncestorParent(window, win) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isAncestorParent(win, window) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n for (var _iterator3 = getAllChildFrames(win), _isArray3 = Array.isArray(_iterator3), _i4 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i4 >= _iterator3.length) break;\n _ref3 = _iterator3[_i4++];\n } else {\n _i4 = _iterator3.next();\n if (_i4.done) break;\n _ref3 = _i4.value;\n }\n\n var frame = _ref3;\n\n try {\n if (frame.top) {\n return frame.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(frame) === frame) {\n return frame;\n }\n }\n}\n\nfunction getAllFramesInWindow(win) {\n var top = getTop(win);\n // $FlowFixMe\n return getAllChildFrames(top).concat(top);\n}\n\nfunction isTop(win) {\n return win === getTop(win);\n}\n\nfunction isFrameWindowClosed(frame) {\n\n if (!frame.contentWindow) {\n return true;\n }\n\n if (!frame.parentNode) {\n return true;\n }\n\n var doc = frame.ownerDocument;\n\n if (doc && doc.body && !doc.body.contains(frame)) {\n return true;\n }\n\n return false;\n}\n\nfunction safeIndexOf(collection, item) {\n for (var i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nvar iframeWindows = [];\nvar iframeFrames = [];\n\nfunction isWindowClosed(win) {\n var allowMock = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\n try {\n if (win === window) {\n return false;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (!win) {\n return true;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (win.closed) {\n return true;\n }\n } catch (err) {\n\n // I love you so much IE\n\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return false;\n }\n\n return true;\n }\n\n if (allowMock && isSameDomain(win)) {\n try {\n if (win.mockclosed) {\n return true;\n }\n } catch (err) {\n // pass\n }\n }\n\n // Mobile safari\n\n try {\n if (!win.parent || !win.top) {\n return true;\n }\n } catch (err) {}\n // pass\n\n\n // Yes, this actually happens in IE. win === win errors out when the window\n // is from an iframe, and the iframe was removed from the page.\n\n try {\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util__[\"a\" /* noop */])(win === win); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n // IE orphaned frame\n\n var iframeIndex = safeIndexOf(iframeWindows, win);\n\n if (iframeIndex !== -1) {\n var frame = iframeFrames[iframeIndex];\n\n if (frame && isFrameWindowClosed(frame)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction cleanIframes() {\n\n for (var i = 0; i < iframeFrames.length; i++) {\n if (isFrameWindowClosed(iframeFrames[i])) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n\n for (var _i5 = 0; _i5 < iframeWindows.length; _i5++) {\n if (isWindowClosed(iframeWindows[_i5])) {\n iframeFrames.splice(_i5, 1);\n iframeWindows.splice(_i5, 1);\n }\n }\n}\n\nfunction linkFrameWindow(frame) {\n\n cleanIframes();\n\n if (frame && frame.contentWindow) {\n try {\n iframeWindows.push(frame.contentWindow);\n iframeFrames.push(frame);\n } catch (err) {\n // pass\n }\n }\n}\n\nfunction getUserAgent(win) {\n win = win || window;\n return win.navigator.mockUserAgent || win.navigator.userAgent;\n}\n\nfunction getFrameByName(win, name) {\n\n var winFrames = getFrames(win);\n\n for (var _iterator4 = winFrames, _isArray4 = Array.isArray(_iterator4), _i6 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n var _ref4;\n\n if (_isArray4) {\n if (_i6 >= _iterator4.length) break;\n _ref4 = _iterator4[_i6++];\n } else {\n _i6 = _iterator4.next();\n if (_i6.done) break;\n _ref4 = _i6.value;\n }\n\n var childFrame = _ref4;\n\n try {\n if (isSameDomain(childFrame) && childFrame.name === name && winFrames.indexOf(childFrame) !== -1) {\n return childFrame;\n }\n } catch (err) {\n // pass\n }\n }\n\n try {\n // $FlowFixMe\n if (winFrames.indexOf(win.frames[name]) !== -1) {\n // $FlowFixMe\n return win.frames[name];\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (winFrames.indexOf(win[name]) !== -1) {\n return win[name];\n }\n } catch (err) {\n // pass\n }\n}\n\nfunction findChildFrameByName(win, name) {\n\n var frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n for (var _iterator5 = getFrames(win), _isArray5 = Array.isArray(_iterator5), _i7 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {\n var _ref5;\n\n if (_isArray5) {\n if (_i7 >= _iterator5.length) break;\n _ref5 = _iterator5[_i7++];\n } else {\n _i7 = _iterator5.next();\n if (_i7.done) break;\n _ref5 = _i7.value;\n }\n\n var childFrame = _ref5;\n\n var namedFrame = findChildFrameByName(childFrame, name);\n\n if (namedFrame) {\n return namedFrame;\n }\n }\n}\n\nfunction findFrameByName(win, name) {\n\n var frame = void 0;\n\n frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n var top = getTop(win) || win;\n\n return findChildFrameByName(top, name);\n}\n\nfunction isParent(win, frame) {\n\n var frameParent = getParent(frame);\n\n if (frameParent) {\n return frameParent === win;\n }\n\n for (var _iterator6 = getFrames(win), _isArray6 = Array.isArray(_iterator6), _i8 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {\n var _ref6;\n\n if (_isArray6) {\n if (_i8 >= _iterator6.length) break;\n _ref6 = _iterator6[_i8++];\n } else {\n _i8 = _iterator6.next();\n if (_i8.done) break;\n _ref6 = _i8.value;\n }\n\n var childFrame = _ref6;\n\n if (childFrame === frame) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isOpener(parent, child) {\n\n return parent === getOpener(child);\n}\n\nfunction getAncestor(win) {\n win = win || window;\n\n var opener = getOpener(win);\n\n if (opener) {\n return opener;\n }\n\n var parent = getParent(win);\n\n if (parent) {\n return parent;\n }\n}\n\nfunction getAncestors(win) {\n\n var results = [];\n\n var ancestor = win;\n\n while (ancestor) {\n ancestor = getAncestor(ancestor);\n if (ancestor) {\n results.push(ancestor);\n }\n }\n\n return results;\n}\n\nfunction isAncestor(parent, child) {\n\n var actualParent = getAncestor(child);\n\n if (actualParent) {\n if (actualParent === parent) {\n return true;\n }\n\n return false;\n }\n\n if (child === parent) {\n return false;\n }\n\n if (getTop(child) === child) {\n return false;\n }\n\n for (var _iterator7 = getFrames(parent), _isArray7 = Array.isArray(_iterator7), _i9 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {\n var _ref7;\n\n if (_isArray7) {\n if (_i9 >= _iterator7.length) break;\n _ref7 = _iterator7[_i9++];\n } else {\n _i9 = _iterator7.next();\n if (_i9.done) break;\n _ref7 = _i9.value;\n }\n\n var frame = _ref7;\n\n if (frame === child) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isPopup() {\n return Boolean(getOpener(window));\n}\n\nfunction isIframe() {\n return Boolean(getParent(window));\n}\n\nfunction isFullpage() {\n return Boolean(!isIframe() && !isPopup());\n}\n\nfunction anyMatch(collection1, collection2) {\n\n for (var _iterator8 = collection1, _isArray8 = Array.isArray(_iterator8), _i10 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {\n var _ref8;\n\n if (_isArray8) {\n if (_i10 >= _iterator8.length) break;\n _ref8 = _iterator8[_i10++];\n } else {\n _i10 = _iterator8.next();\n if (_i10.done) break;\n _ref8 = _i10.value;\n }\n\n var item1 = _ref8;\n\n for (var _iterator9 = collection2, _isArray9 = Array.isArray(_iterator9), _i11 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {\n var _ref9;\n\n if (_isArray9) {\n if (_i11 >= _iterator9.length) break;\n _ref9 = _iterator9[_i11++];\n } else {\n _i11 = _iterator9.next();\n if (_i11.done) break;\n _ref9 = _i11.value;\n }\n\n var item2 = _ref9;\n\n if (item1 === item2) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction getDistanceFromTop() {\n var win = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;\n\n var distance = 0;\n var parent = win;\n\n while (parent) {\n parent = getParent(parent);\n if (parent) {\n distance += 1;\n }\n }\n\n return distance;\n}\n\nfunction getNthParent(win) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var parent = win;\n\n for (var i = 0; i < n; i++) {\n if (!parent) {\n return;\n }\n\n parent = getParent(parent);\n }\n\n return parent;\n}\n\nfunction getNthParentFromTop(win) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n return getNthParent(win, getDistanceFromTop(win) - n);\n}\n\nfunction isSameTopWindow(win1, win2) {\n\n var top1 = getTop(win1) || win1;\n var top2 = getTop(win2) || win2;\n\n try {\n if (top1 && top2) {\n if (top1 === top2) {\n return true;\n }\n\n return false;\n }\n } catch (err) {\n // pass\n }\n\n var allFrames1 = getAllFramesInWindow(win1);\n var allFrames2 = getAllFramesInWindow(win2);\n\n if (anyMatch(allFrames1, allFrames2)) {\n return true;\n }\n\n var opener1 = getOpener(top1);\n var opener2 = getOpener(top2);\n\n if (opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2)) {\n return false;\n }\n\n if (opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1)) {\n return false;\n }\n\n return false;\n}\n\nfunction matchDomain(pattern, origin) {\n\n if (typeof pattern === 'string') {\n\n if (typeof origin === 'string') {\n return pattern === CONSTANTS.WILDCARD || origin === pattern;\n }\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util__[\"b\" /* isRegex */])(origin)) {\n return false;\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n }\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util__[\"b\" /* isRegex */])(pattern)) {\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util__[\"b\" /* isRegex */])(origin)) {\n return pattern.toString() === origin.toString();\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n\n // $FlowFixMe\n return Boolean(origin.match(pattern));\n }\n\n if (Array.isArray(pattern)) {\n\n if (Array.isArray(origin)) {\n return JSON.stringify(pattern) === JSON.stringify(origin);\n }\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util__[\"b\" /* isRegex */])(origin)) {\n return false;\n }\n\n return pattern.some(function (subpattern) {\n return matchDomain(subpattern, origin);\n });\n }\n\n return false;\n}\n\nfunction getDomainFromUrl(url) {\n\n var domain = void 0;\n\n if (url.match(/^(https?|mock|file):\\/\\//)) {\n domain = url;\n } else {\n return getDomain();\n }\n\n domain = domain.split('/').slice(0, 3).join('/');\n\n return domain;\n}\n\nfunction onCloseWindow(win, callback) {\n var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;\n var maxtime = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Infinity;\n\n\n var timeout = void 0;\n\n var check = function check() {\n\n if (isWindowClosed(win)) {\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n return callback();\n }\n\n if (maxtime <= 0) {\n clearTimeout(timeout);\n } else {\n maxtime -= delay;\n timeout = setTimeout(check, delay);\n }\n };\n\n check();\n\n return {\n cancel: function cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n };\n}\n\nfunction isWindow(obj) {\n\n try {\n if (obj === window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (Object.prototype.toString.call(obj) === '[object Window]') {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (window.Window && obj instanceof window.Window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.self === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.parent === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.top === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util__[\"a\" /* noop */])(obj === obj); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n try {\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util__[\"a\" /* noop */])(obj && obj.__cross_domain_utils_window_check__);\n } catch (err) {\n return true;\n }\n\n return false;\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__promise__ = __webpack_require__(20);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return __WEBPACK_IMPORTED_MODULE_0__promise__[\"a\"]; });\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return global; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__conf__ = __webpack_require__(0);\n\n\nvar global = window[__WEBPACK_IMPORTED_MODULE_0__conf__[\"a\" /* CONSTANTS */].WINDOW_PROPS.POSTROBOT] = window[__WEBPACK_IMPORTED_MODULE_0__conf__[\"a\" /* CONSTANTS */].WINDOW_PROPS.POSTROBOT] || {};\n\n// Backwards compatibility\n\nglobal.registerSelf = function () {\n // pass\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util__ = __webpack_require__(7);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return __WEBPACK_IMPORTED_MODULE_0__util__[\"g\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return __WEBPACK_IMPORTED_MODULE_0__util__[\"e\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return __WEBPACK_IMPORTED_MODULE_0__util__[\"c\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return __WEBPACK_IMPORTED_MODULE_0__util__[\"b\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return __WEBPACK_IMPORTED_MODULE_0__util__[\"a\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return __WEBPACK_IMPORTED_MODULE_0__util__[\"h\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return __WEBPACK_IMPORTED_MODULE_0__util__[\"i\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return __WEBPACK_IMPORTED_MODULE_0__util__[\"j\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return __WEBPACK_IMPORTED_MODULE_0__util__[\"d\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"o\", function() { return __WEBPACK_IMPORTED_MODULE_0__util__[\"k\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__log__ = __webpack_require__(9);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return __WEBPACK_IMPORTED_MODULE_1__log__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__serialize__ = __webpack_require__(29);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_2__serialize__[\"a\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return __WEBPACK_IMPORTED_MODULE_2__serialize__[\"b\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return __WEBPACK_IMPORTED_MODULE_2__serialize__[\"c\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ready__ = __webpack_require__(28);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return __WEBPACK_IMPORTED_MODULE_3__ready__[\"a\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"p\", function() { return __WEBPACK_IMPORTED_MODULE_3__ready__[\"b\"]; });\n\n\n\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__receive__ = __webpack_require__(24);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return __WEBPACK_IMPORTED_MODULE_0__receive__[\"a\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_0__receive__[\"b\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__send__ = __webpack_require__(13);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return __WEBPACK_IMPORTED_MODULE_1__send__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__listeners__ = __webpack_require__(12);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return __WEBPACK_IMPORTED_MODULE_2__listeners__[\"e\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return __WEBPACK_IMPORTED_MODULE_2__listeners__[\"f\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return __WEBPACK_IMPORTED_MODULE_2__listeners__[\"g\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return __WEBPACK_IMPORTED_MODULE_2__listeners__[\"d\"]; });\n\n\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interface__ = __webpack_require__(10);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"WeakMap\"]; });\n\n\n/* unused harmony default export */ var _unused_webpack_default_export = (__WEBPACK_IMPORTED_MODULE_0__interface__);\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = stringifyError;\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return once; });\n/* harmony export (immutable) */ __webpack_exports__[\"j\"] = noop;\n/* harmony export (immutable) */ __webpack_exports__[\"i\"] = addEventListener;\n/* harmony export (immutable) */ __webpack_exports__[\"e\"] = uniqueID;\n/* unused harmony export eachArray */\n/* unused harmony export eachObject */\n/* unused harmony export each */\n/* harmony export (immutable) */ __webpack_exports__[\"f\"] = replaceObject;\n/* harmony export (immutable) */ __webpack_exports__[\"k\"] = safeInterval;\n/* harmony export (immutable) */ __webpack_exports__[\"g\"] = isRegex;\n/* unused harmony export weakMapMemoize */\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = getWindowType;\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = jsonStringify;\n/* harmony export (immutable) */ __webpack_exports__[\"h\"] = jsonParse;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_cross_domain_safe_weakmap_src__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_cross_domain_utils_src__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__conf__ = __webpack_require__(0);\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\n\n\nfunction stringifyError(err) {\n var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return '';\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n var stack = err && err.stack;\n var message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return message + '\\n' + stack;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n } catch (newErr) {\n return 'Error while stringifying error: ' + stringifyError(newErr, level + 1);\n }\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nvar once = function once(method) {\n if (!method) {\n return method;\n }\n var called = false;\n return function onceWrapper() {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n};\n\nfunction noop() {\n // pass\n}\n\nfunction addEventListener(obj, event, handler) {\n if (obj.addEventListener) {\n obj.addEventListener(event, handler);\n } else {\n obj.attachEvent('on' + event, handler);\n }\n\n return {\n cancel: function cancel() {\n if (obj.removeEventListener) {\n obj.removeEventListener(event, handler);\n } else {\n obj.detachEvent('on' + event, handler);\n }\n }\n };\n}\n\nfunction uniqueID() {\n\n var chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, function () {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\nfunction eachArray(item, callback) {\n for (var i = 0; i < item.length; i++) {\n callback(item[i], i);\n }\n}\n\nfunction eachObject(item, callback) {\n for (var _key in item) {\n if (item.hasOwnProperty(_key)) {\n callback(item[_key], _key);\n }\n }\n}\n\nfunction each(item, callback) {\n if (Array.isArray(item)) {\n eachArray(item, callback);\n } else if ((typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object' && item !== null) {\n eachObject(item, callback);\n }\n}\n\nfunction replaceObject(item, callback) {\n var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n\n if (depth >= 100) {\n throw new Error('Self-referential object passed, or object contained too many layers');\n }\n\n var newobj = void 0;\n\n if ((typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object' && item !== null && !Array.isArray(item)) {\n newobj = {};\n } else if (Array.isArray(item)) {\n newobj = [];\n } else {\n throw new Error('Invalid type: ' + (typeof item === 'undefined' ? 'undefined' : _typeof(item)));\n }\n\n each(item, function (childItem, key) {\n\n var result = callback(childItem, key);\n\n if (typeof result !== 'undefined') {\n // $FlowFixMe\n newobj[key] = result;\n } else if ((typeof childItem === 'undefined' ? 'undefined' : _typeof(childItem)) === 'object' && childItem !== null) {\n // $FlowFixMe\n newobj[key] = replaceObject(childItem, callback, depth + 1);\n } else {\n // $FlowFixMe\n newobj[key] = childItem;\n }\n });\n\n // $FlowFixMe\n return newobj;\n}\n\nfunction safeInterval(method, time) {\n var timeout = void 0;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel: function cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nfunction isRegex(item) {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nvar weakMapMemoize = function weakMapMemoize(method) {\n\n var weakmap = new __WEBPACK_IMPORTED_MODULE_0_cross_domain_safe_weakmap_src__[\"a\" /* WeakMap */]();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function (arg) {\n var result = weakmap.get(arg);\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n result = method.call(this, arg);\n\n if (typeof result !== 'undefined') {\n weakmap.set(arg, result);\n }\n\n return result;\n };\n};\n\nfunction getWindowType() {\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_cross_domain_utils_src__[\"b\" /* isPopup */])()) {\n return __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].WINDOW_TYPES.POPUP;\n }\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_cross_domain_utils_src__[\"c\" /* isIframe */])()) {\n return __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].WINDOW_TYPES.IFRAME;\n }\n return __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].WINDOW_TYPES.FULLPAGE;\n}\n\nfunction jsonStringify(obj, replacer, indent) {\n\n var objectToJSON = void 0;\n var arrayToJSON = void 0;\n\n try {\n if (JSON.stringify({}) !== '{}') {\n // $FlowFixMe\n objectToJSON = Object.prototype.toJSON;\n // $FlowFixMe\n delete Object.prototype.toJSON;\n }\n\n if (JSON.stringify({}) !== '{}') {\n throw new Error('Can not correctly serialize JSON objects');\n }\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n arrayToJSON = Array.prototype.toJSON;\n // $FlowFixMe\n delete Array.prototype.toJSON;\n }\n\n if (JSON.stringify([]) !== '[]') {\n throw new Error('Can not correctly serialize JSON objects');\n }\n } catch (err) {\n throw new Error('Can not repair JSON.stringify: ' + err.message);\n }\n\n var result = JSON.stringify.call(this, obj, replacer, indent);\n\n try {\n if (objectToJSON) {\n // $FlowFixMe\n Object.prototype.toJSON = objectToJSON; // eslint-disable-line\n }\n\n if (arrayToJSON) {\n // $FlowFixMe\n Array.prototype.toJSON = arrayToJSON; // eslint-disable-line\n }\n } catch (err) {\n throw new Error('Can not repair JSON.stringify: ' + err.message);\n }\n\n return result;\n}\n\nfunction jsonParse(item) {\n return JSON.parse(item);\n}\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bridge\", function() { return bridge; });\n/* harmony export (immutable) */ __webpack_exports__[\"init\"] = init;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lib__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__drivers__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__global__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__public__ = __webpack_require__(14);\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"parent\", function() { return __WEBPACK_IMPORTED_MODULE_3__public__[\"a\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"send\", function() { return __WEBPACK_IMPORTED_MODULE_3__public__[\"b\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"request\", function() { return __WEBPACK_IMPORTED_MODULE_3__public__[\"c\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"sendToParent\", function() { return __WEBPACK_IMPORTED_MODULE_3__public__[\"d\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"client\", function() { return __WEBPACK_IMPORTED_MODULE_3__public__[\"e\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"on\", function() { return __WEBPACK_IMPORTED_MODULE_3__public__[\"f\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"listen\", function() { return __WEBPACK_IMPORTED_MODULE_3__public__[\"g\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"once\", function() { return __WEBPACK_IMPORTED_MODULE_3__public__[\"h\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"listener\", function() { return __WEBPACK_IMPORTED_MODULE_3__public__[\"i\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"CONFIG\", function() { return __WEBPACK_IMPORTED_MODULE_3__public__[\"j\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"CONSTANTS\", function() { return __WEBPACK_IMPORTED_MODULE_3__public__[\"k\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"disable\", function() { return __WEBPACK_IMPORTED_MODULE_3__public__[\"l\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__clean__ = __webpack_require__(22);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"cleanUpWindow\", function() { return __WEBPACK_IMPORTED_MODULE_4__clean__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_zalgo_promise_src__ = __webpack_require__(2);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"Promise\", function() { return __WEBPACK_IMPORTED_MODULE_5_zalgo_promise_src__[\"a\"]; });\n\n\n\n\n\n///////////////////////////\n//////////////////////////////////////////////////\n/////////\n\n\n\n\nvar bridge = false ? popupBridge : null;\n\nfunction init() {\n if (!__WEBPACK_IMPORTED_MODULE_2__global__[\"a\" /* global */].initialized) {\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__drivers__[\"a\" /* listenForMessages */])();\n\n if (false) {\n require('./bridge').openTunnelToOpener();\n }\n\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__lib__[\"a\" /* initOnReady */])();\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__lib__[\"b\" /* listenForMethods */])({ on: __WEBPACK_IMPORTED_MODULE_3__public__[\"f\" /* on */], send: __WEBPACK_IMPORTED_MODULE_3__public__[\"b\" /* send */] });\n }\n\n __WEBPACK_IMPORTED_MODULE_2__global__[\"a\" /* global */].initialized = true;\n}\n\ninit();\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return log; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__conf__ = __webpack_require__(0);\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\n\nvar LOG_LEVELS = ['debug', 'info', 'warn', 'error'];\n\nif (Function.prototype.bind && window.console && _typeof(console.log) === 'object') {\n ['log', 'info', 'warn', 'error'].forEach(function (method) {\n // $FlowFixMe\n console[method] = this.bind(console[method], console);\n }, Function.prototype.call);\n}\n\nvar log = {\n clearLogs: function clearLogs() {\n\n if (window.console && window.console.clear) {\n window.console.clear();\n }\n\n if (__WEBPACK_IMPORTED_MODULE_1__conf__[\"b\" /* CONFIG */].LOG_TO_PAGE) {\n var container = document.getElementById('postRobotLogs');\n\n if (container && container.parentNode) {\n container.parentNode.removeChild(container);\n }\n }\n },\n writeToPage: function writeToPage(level, args) {\n setTimeout(function () {\n var container = document.getElementById('postRobotLogs');\n\n if (!container) {\n container = document.createElement('div');\n container.id = 'postRobotLogs';\n container.style.cssText = 'width: 800px; font-family: monospace; white-space: pre-wrap;';\n if (document.body) {\n document.body.appendChild(container);\n }\n }\n\n var el = document.createElement('div');\n\n var date = new Date().toString().split(' ')[4];\n\n var payload = Array.prototype.slice.call(args).map(function (item) {\n if (typeof item === 'string') {\n return item;\n }\n if (!item) {\n return Object.prototype.toString.call(item);\n }\n var json = void 0;\n try {\n json = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util__[\"b\" /* jsonStringify */])(item, null, 2);\n } catch (e) {\n json = '[object]';\n }\n\n return '\\n\\n' + json + '\\n\\n';\n }).join(' ');\n\n var msg = date + ' ' + level + ' ' + payload;\n el.innerHTML = msg;\n\n var color = {\n log: '#ddd',\n warn: 'orange',\n error: 'red',\n info: 'blue',\n debug: '#aaa'\n }[level];\n\n el.style.cssText = 'margin-top: 10px; color: ' + color + ';';\n\n if (!container.childNodes.length) {\n container.appendChild(el);\n } else {\n container.insertBefore(el, container.childNodes[0]);\n }\n });\n },\n logLevel: function logLevel(level, args) {\n setTimeout(function () {\n try {\n var logLevel = window.LOG_LEVEL || __WEBPACK_IMPORTED_MODULE_1__conf__[\"b\" /* CONFIG */].LOG_LEVEL;\n\n if (LOG_LEVELS.indexOf(level) < LOG_LEVELS.indexOf(logLevel)) {\n return;\n }\n\n args = Array.prototype.slice.call(args);\n\n args.unshift('' + window.location.host + window.location.pathname);\n args.unshift('::');\n args.unshift('' + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util__[\"c\" /* getWindowType */])().toLowerCase());\n args.unshift('[post-robot]');\n\n if (__WEBPACK_IMPORTED_MODULE_1__conf__[\"b\" /* CONFIG */].LOG_TO_PAGE) {\n log.writeToPage(level, args);\n }\n\n if (!window.console) {\n return;\n }\n\n if (!window.console[level]) {\n level = 'log';\n }\n\n if (!window.console[level]) {\n return;\n }\n\n window.console[level].apply(window.console, args);\n } catch (err) {\n // pass\n }\n }, 1);\n },\n debug: function debug() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n log.logLevel('debug', args);\n },\n info: function info() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n log.logLevel('info', args);\n },\n warn: function warn() {\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n log.logLevel('warn', args);\n },\n error: function error() {\n for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n log.logLevel('error', args);\n }\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__weakmap__ = __webpack_require__(17);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"WeakMap\", function() { return __WEBPACK_IMPORTED_MODULE_0__weakmap__[\"a\"]; });\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return CONSTANTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return POST_MESSAGE_NAMES_LIST; });\nvar CONSTANTS = {\n\n POST_MESSAGE_TYPE: {\n REQUEST: 'postrobot_message_request',\n RESPONSE: 'postrobot_message_response',\n ACK: 'postrobot_message_ack'\n },\n\n POST_MESSAGE_ACK: {\n SUCCESS: 'success',\n ERROR: 'error'\n },\n\n POST_MESSAGE_NAMES: {\n METHOD: 'postrobot_method',\n READY: 'postrobot_ready',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n },\n\n WINDOW_TYPES: {\n FULLPAGE: 'fullpage',\n POPUP: 'popup',\n IFRAME: 'iframe'\n },\n\n WINDOW_PROPS: {\n POSTROBOT: '__postRobot__'\n },\n\n SERIALIZATION_TYPES: {\n METHOD: 'postrobot_method',\n ERROR: 'postrobot_error',\n PROMISE: 'postrobot_promise',\n ZALGO_PROMISE: 'postrobot_zalgo_promise',\n REGEX: 'regex'\n },\n\n SEND_STRATEGIES: {\n POST_MESSAGE: 'postrobot_post_message',\n BRIDGE: 'postrobot_bridge',\n GLOBAL: 'postrobot_global'\n },\n\n MOCK_PROTOCOL: 'mock:',\n FILE_PROTOCOL: 'file:',\n\n BRIDGE_NAME_PREFIX: '__postrobot_bridge__',\n POSTROBOT_PROXY: '__postrobot_proxy__',\n\n WILDCARD: '*'\n};\n\nvar POST_MESSAGE_NAMES_LIST = Object.keys(CONSTANTS.POST_MESSAGE_NAMES).map(function (key) {\n return CONSTANTS.POST_MESSAGE_NAMES[key];\n});\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export resetListeners */\n/* harmony export (immutable) */ __webpack_exports__[\"f\"] = addResponseListener;\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = getResponseListener;\n/* harmony export (immutable) */ __webpack_exports__[\"d\"] = deleteResponseListener;\n/* harmony export (immutable) */ __webpack_exports__[\"g\"] = markResponseListenerErrored;\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isResponseListenerErrored;\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = getRequestListener;\n/* harmony export (immutable) */ __webpack_exports__[\"e\"] = addRequestListener;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_zalgo_promise_src__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_cross_domain_safe_weakmap_src__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_cross_domain_utils_src__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__global__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lib__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__conf__ = __webpack_require__(0);\n\n\n\n\n\n\n\n\nfunction resetListeners() {\n __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].responseListeners = {};\n __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].requestListeners = {};\n}\n\n__WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].responseListeners = __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].responseListeners || {};\n__WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].requestListeners = __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].requestListeners || {};\n__WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].WINDOW_WILDCARD = __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].WINDOW_WILDCARD || new function WindowWildcard() {/* pass */}();\n\n__WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].erroredResponseListeners = __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].erroredResponseListeners || {};\n\nvar __DOMAIN_REGEX__ = '__domain_regex__';\n\nfunction addResponseListener(hash, listener) {\n __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].responseListeners[hash] = listener;\n}\n\nfunction getResponseListener(hash) {\n return __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].responseListeners[hash];\n}\n\nfunction deleteResponseListener(hash) {\n delete __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].responseListeners[hash];\n}\n\nfunction markResponseListenerErrored(hash) {\n __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].erroredResponseListeners[hash] = true;\n}\n\nfunction isResponseListenerErrored(hash) {\n return Boolean(__WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].erroredResponseListeners[hash]);\n}\n\nfunction getRequestListener(_ref) {\n var name = _ref.name,\n win = _ref.win,\n domain = _ref.domain;\n\n\n if (win === __WEBPACK_IMPORTED_MODULE_5__conf__[\"a\" /* CONSTANTS */].WILDCARD) {\n win = null;\n }\n\n if (domain === __WEBPACK_IMPORTED_MODULE_5__conf__[\"a\" /* CONSTANTS */].WILDCARD) {\n domain = null;\n }\n\n if (!name) {\n throw new Error('Name required to get request listener');\n }\n\n var nameListeners = __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].requestListeners[name];\n\n if (!nameListeners) {\n return;\n }\n\n var _arr = [win, __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].WINDOW_WILDCARD];\n for (var _i = 0; _i < _arr.length; _i++) {\n var winQualifier = _arr[_i];\n\n var winListeners = winQualifier && nameListeners.get(winQualifier);\n\n if (!winListeners) {\n continue;\n }\n\n if (domain && typeof domain === 'string') {\n if (winListeners[domain]) {\n return winListeners[domain];\n }\n\n if (winListeners[__DOMAIN_REGEX__]) {\n for (var _iterator = winListeners[__DOMAIN_REGEX__], _isArray = Array.isArray(_iterator), _i2 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray) {\n if (_i2 >= _iterator.length) break;\n _ref3 = _iterator[_i2++];\n } else {\n _i2 = _iterator.next();\n if (_i2.done) break;\n _ref3 = _i2.value;\n }\n\n var _ref4 = _ref3;\n var regex = _ref4.regex,\n listener = _ref4.listener;\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2_cross_domain_utils_src__[\"f\" /* matchDomain */])(regex, domain)) {\n return listener;\n }\n }\n }\n }\n\n if (winListeners[__WEBPACK_IMPORTED_MODULE_5__conf__[\"a\" /* CONSTANTS */].WILDCARD]) {\n return winListeners[__WEBPACK_IMPORTED_MODULE_5__conf__[\"a\" /* CONSTANTS */].WILDCARD];\n }\n }\n}\n\nfunction addRequestListener(_ref5, listener) {\n var name = _ref5.name,\n win = _ref5.win,\n domain = _ref5.domain;\n\n\n if (!name || typeof name !== 'string') {\n throw new Error('Name required to add request listener');\n }\n\n if (Array.isArray(win)) {\n var listenersCollection = [];\n\n for (var _iterator2 = win, _isArray2 = Array.isArray(_iterator2), _i3 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref6;\n\n if (_isArray2) {\n if (_i3 >= _iterator2.length) break;\n _ref6 = _iterator2[_i3++];\n } else {\n _i3 = _iterator2.next();\n if (_i3.done) break;\n _ref6 = _i3.value;\n }\n\n var item = _ref6;\n\n listenersCollection.push(addRequestListener({ name: name, domain: domain, win: item }, listener));\n }\n\n return {\n cancel: function cancel() {\n for (var _iterator3 = listenersCollection, _isArray3 = Array.isArray(_iterator3), _i4 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref7;\n\n if (_isArray3) {\n if (_i4 >= _iterator3.length) break;\n _ref7 = _iterator3[_i4++];\n } else {\n _i4 = _iterator3.next();\n if (_i4.done) break;\n _ref7 = _i4.value;\n }\n\n var cancelListener = _ref7;\n\n cancelListener.cancel();\n }\n }\n };\n }\n\n if (Array.isArray(domain)) {\n var _listenersCollection = [];\n\n for (var _iterator4 = domain, _isArray4 = Array.isArray(_iterator4), _i5 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n var _ref8;\n\n if (_isArray4) {\n if (_i5 >= _iterator4.length) break;\n _ref8 = _iterator4[_i5++];\n } else {\n _i5 = _iterator4.next();\n if (_i5.done) break;\n _ref8 = _i5.value;\n }\n\n var _item = _ref8;\n\n _listenersCollection.push(addRequestListener({ name: name, win: win, domain: _item }, listener));\n }\n\n return {\n cancel: function cancel() {\n for (var _iterator5 = _listenersCollection, _isArray5 = Array.isArray(_iterator5), _i6 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {\n var _ref9;\n\n if (_isArray5) {\n if (_i6 >= _iterator5.length) break;\n _ref9 = _iterator5[_i6++];\n } else {\n _i6 = _iterator5.next();\n if (_i6.done) break;\n _ref9 = _i6.value;\n }\n\n var cancelListener = _ref9;\n\n cancelListener.cancel();\n }\n }\n };\n }\n\n var existingListener = getRequestListener({ name: name, win: win, domain: domain });\n\n if (!win || win === __WEBPACK_IMPORTED_MODULE_5__conf__[\"a\" /* CONSTANTS */].WILDCARD) {\n win = __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].WINDOW_WILDCARD;\n }\n\n domain = domain || __WEBPACK_IMPORTED_MODULE_5__conf__[\"a\" /* CONSTANTS */].WILDCARD;\n\n if (existingListener) {\n if (win && domain) {\n throw new Error('Request listener already exists for ' + name + ' on domain ' + domain.toString() + ' for ' + (win === __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].WINDOW_WILDCARD ? 'wildcard' : 'specified') + ' window');\n } else if (win) {\n throw new Error('Request listener already exists for ' + name + ' for ' + (win === __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].WINDOW_WILDCARD ? 'wildcard' : 'specified') + ' window');\n } else if (domain) {\n throw new Error('Request listener already exists for ' + name + ' on domain ' + domain.toString());\n } else {\n throw new Error('Request listener already exists for ' + name);\n }\n }\n\n var requestListeners = __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].requestListeners;\n\n var nameListeners = requestListeners[name];\n\n if (!nameListeners) {\n nameListeners = new __WEBPACK_IMPORTED_MODULE_1_cross_domain_safe_weakmap_src__[\"a\" /* WeakMap */]();\n requestListeners[name] = nameListeners;\n }\n\n var winListeners = nameListeners.get(win);\n\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n\n var strDomain = domain.toString();\n\n var regexListeners = winListeners[__DOMAIN_REGEX__];\n var regexListener = void 0;\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__lib__[\"c\" /* isRegex */])(domain)) {\n\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n\n regexListener = { regex: domain, listener: listener };\n\n regexListeners.push(regexListener);\n } else {\n winListeners[strDomain] = listener;\n }\n\n return {\n cancel: function cancel() {\n if (!winListeners) {\n return;\n }\n\n delete winListeners[strDomain];\n\n if (win && Object.keys(winListeners).length === 0) {\n nameListeners['delete'](win);\n }\n\n if (regexListener) {\n regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n };\n}\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = sendMessage;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_zalgo_promise_src__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__conf__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lib__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__strategies__ = __webpack_require__(26);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\nfunction buildMessage(win, message) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\n var id = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__lib__[\"d\" /* uniqueID */])();\n var type = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__lib__[\"e\" /* getWindowType */])();\n var sourceDomain = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__[\"g\" /* getDomain */])(window);\n\n return _extends({}, message, options, {\n sourceDomain: sourceDomain,\n id: message.id || id,\n windowType: type\n });\n}\n\nfunction sendMessage(win, message, domain) {\n return __WEBPACK_IMPORTED_MODULE_1_zalgo_promise_src__[\"a\" /* ZalgoPromise */]['try'](function () {\n\n message = buildMessage(win, message, {\n data: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__lib__[\"f\" /* serializeMethods */])(win, domain, message.data),\n domain: domain\n });\n\n var level = void 0;\n\n if (__WEBPACK_IMPORTED_MODULE_2__conf__[\"c\" /* POST_MESSAGE_NAMES_LIST */].indexOf(message.name) !== -1 || message.type === __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n __WEBPACK_IMPORTED_MODULE_3__lib__[\"g\" /* log */].logLevel(level, ['\\n\\n\\t', '#send', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', domain || __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].WILDCARD, '\\n\\n', message]);\n\n if (win === window && !__WEBPACK_IMPORTED_MODULE_2__conf__[\"b\" /* CONFIG */].ALLOW_SAME_ORIGIN) {\n throw new Error('Attemping to send message to self');\n }\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__[\"e\" /* isWindowClosed */])(win)) {\n throw new Error('Window is closed');\n }\n\n __WEBPACK_IMPORTED_MODULE_3__lib__[\"g\" /* log */].debug('Running send message strategies', message);\n\n var messages = [];\n\n var serializedMessage = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__lib__[\"h\" /* jsonStringify */])(_defineProperty({}, __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].WINDOW_PROPS.POSTROBOT, message), null, 2);\n\n return __WEBPACK_IMPORTED_MODULE_1_zalgo_promise_src__[\"a\" /* ZalgoPromise */].map(Object.keys(__WEBPACK_IMPORTED_MODULE_4__strategies__[\"a\" /* SEND_MESSAGE_STRATEGIES */]), function (strategyName) {\n\n return __WEBPACK_IMPORTED_MODULE_1_zalgo_promise_src__[\"a\" /* ZalgoPromise */]['try'](function () {\n\n if (!__WEBPACK_IMPORTED_MODULE_2__conf__[\"b\" /* CONFIG */].ALLOWED_POST_MESSAGE_METHODS[strategyName]) {\n throw new Error('Strategy disallowed: ' + strategyName);\n }\n\n return __WEBPACK_IMPORTED_MODULE_4__strategies__[\"a\" /* SEND_MESSAGE_STRATEGIES */][strategyName](win, serializedMessage, domain);\n }).then(function () {\n messages.push(strategyName + ': success');\n return true;\n }, function (err) {\n messages.push(strategyName + ': ' + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__lib__[\"i\" /* stringifyError */])(err) + '\\n');\n return false;\n });\n }).then(function (results) {\n\n var success = results.some(Boolean);\n var status = message.type + ' ' + message.name + ' ' + (success ? 'success' : 'error') + ':\\n - ' + messages.join('\\n - ') + '\\n';\n\n __WEBPACK_IMPORTED_MODULE_3__lib__[\"g\" /* log */].debug(status);\n\n if (!success) {\n throw new Error(status);\n }\n });\n });\n}\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return parent; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__client__ = __webpack_require__(30);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_1__client__[\"a\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return __WEBPACK_IMPORTED_MODULE_1__client__[\"b\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return __WEBPACK_IMPORTED_MODULE_1__client__[\"c\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return __WEBPACK_IMPORTED_MODULE_1__client__[\"d\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__server__ = __webpack_require__(32);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return __WEBPACK_IMPORTED_MODULE_2__server__[\"a\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return __WEBPACK_IMPORTED_MODULE_2__server__[\"b\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return __WEBPACK_IMPORTED_MODULE_2__server__[\"c\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return __WEBPACK_IMPORTED_MODULE_2__server__[\"d\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__config__ = __webpack_require__(31);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return __WEBPACK_IMPORTED_MODULE_3__config__[\"a\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return __WEBPACK_IMPORTED_MODULE_3__config__[\"b\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return __WEBPACK_IMPORTED_MODULE_3__config__[\"c\"]; });\n\n\n\n\n\n\nvar parent = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__[\"a\" /* getAncestor */])();\n\n/***/ }),\n/* 15 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = hasNativeWeakMap;\nfunction hasNativeWeakMap() {\n\n if (!window.WeakMap) {\n return false;\n }\n\n if (!window.Object.freeze) {\n return false;\n }\n\n try {\n\n var testWeakMap = new window.WeakMap();\n var testKey = {};\n var testValue = '__testvalue__';\n\n window.Object.freeze(testKey);\n\n testWeakMap.set(testKey, testValue);\n\n if (testWeakMap.get(testKey) === testValue) {\n return true;\n }\n\n return false;\n } catch (err) {\n\n return false;\n }\n}\n\n/***/ }),\n/* 16 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = safeIndexOf;\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = noop;\nfunction safeIndexOf(collection, item) {\n for (var i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nfunction noop() {\n // pass\n}\n\n/***/ }),\n/* 17 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return CrossDomainSafeWeakMap; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__native__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(16);\nvar _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; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\n\n\nvar defineProperty = Object.defineProperty;\nvar counter = Date.now() % 1e9;\n\nvar CrossDomainSafeWeakMap = function () {\n function CrossDomainSafeWeakMap() {\n _classCallCheck(this, CrossDomainSafeWeakMap);\n\n counter += 1;\n this.name = '__weakmap_' + (Math.random() * 1e9 >>> 0) + '__' + counter; // eslint-disable-line\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__native__[\"a\" /* hasNativeWeakMap */])()) {\n try {\n this.weakmap = new window.WeakMap();\n } catch (err) {\n // pass\n }\n }\n\n this.keys = [];\n this.values = [];\n }\n\n _createClass(CrossDomainSafeWeakMap, [{\n key: '_cleanupClosedWindows',\n value: function _cleanupClosedWindows() {\n\n var weakmap = this.weakmap;\n var keys = this.keys;\n\n for (var i = 0; i < keys.length; i++) {\n var value = keys[i];\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__[\"d\" /* isWindow */])(value) && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__[\"e\" /* isWindowClosed */])(value)) {\n\n if (weakmap) {\n try {\n weakmap['delete'](value);\n } catch (err) {\n // pass\n }\n }\n\n keys.splice(i, 1);\n this.values.splice(i, 1);\n\n i -= 1;\n }\n }\n }\n }, {\n key: 'isSafeToReadWrite',\n value: function isSafeToReadWrite(key) {\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__[\"d\" /* isWindow */])(key)) {\n return false;\n }\n\n try {\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__[\"a\" /* noop */])(key && key.self);\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__[\"a\" /* noop */])(key && key[this.name]);\n } catch (err) {\n return false;\n }\n\n return true;\n }\n }, {\n key: 'set',\n value: function set(key, value) {\n\n if (!key) {\n throw new Error('WeakMap expected key');\n }\n\n var weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (!this.isSafeToReadWrite(key)) {\n\n this._cleanupClosedWindows();\n\n var keys = this.keys;\n var values = this.values;\n var index = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__[\"b\" /* safeIndexOf */])(keys, key);\n\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n } else {\n\n var name = this.name;\n var entry = key[name];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n } else {\n defineProperty(key, name, {\n value: [key, value],\n writable: true\n });\n }\n }\n }\n }, {\n key: 'get',\n value: function get(key) {\n\n if (!key) {\n throw new Error('WeakMap expected key');\n }\n\n var weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return weakmap.get(key);\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (!this.isSafeToReadWrite(key)) {\n\n this._cleanupClosedWindows();\n\n var keys = this.keys;\n var index = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__[\"b\" /* safeIndexOf */])(keys, key);\n\n if (index === -1) {\n return;\n }\n\n return this.values[index];\n } else {\n\n var entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n }\n }\n }, {\n key: 'delete',\n value: function _delete(key) {\n\n if (!key) {\n throw new Error('WeakMap expected key');\n }\n\n var weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap['delete'](key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (!this.isSafeToReadWrite(key)) {\n\n this._cleanupClosedWindows();\n\n var keys = this.keys;\n var index = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__[\"b\" /* safeIndexOf */])(keys, key);\n\n if (index !== -1) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n } else {\n\n var entry = key[this.name];\n\n if (entry && entry[0] === key) {\n entry[0] = entry[1] = undefined;\n }\n }\n }\n }, {\n key: 'has',\n value: function has(key) {\n\n if (!key) {\n throw new Error('WeakMap expected key');\n }\n\n var weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n return weakmap.has(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (!this.isSafeToReadWrite(key)) {\n\n this._cleanupClosedWindows();\n\n var index = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__[\"b\" /* safeIndexOf */])(this.keys, key);\n return index !== -1;\n } else {\n\n var entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n }\n }\n }]);\n\n return CrossDomainSafeWeakMap;\n}();\n\n/***/ }),\n/* 18 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = isRegex;\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = noop;\nfunction isRegex(item) {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\nfunction noop() {\n // pass\n}\n\n/***/ }),\n/* 19 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = dispatchPossiblyUnhandledError;\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = onPossiblyUnhandledException;\n\nvar possiblyUnhandledPromiseHandlers = [];\nvar dispatchedErrors = [];\n\nfunction dispatchPossiblyUnhandledError(err) {\n\n if (dispatchedErrors.indexOf(err) !== -1) {\n return;\n }\n\n dispatchedErrors.push(err);\n\n setTimeout(function () {\n throw err;\n }, 1);\n\n for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) {\n possiblyUnhandledPromiseHandlers[j](err);\n }\n}\n\nfunction onPossiblyUnhandledException(handler) {\n possiblyUnhandledPromiseHandlers.push(handler);\n\n return {\n cancel: function cancel() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n}\n\n/***/ }),\n/* 20 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ZalgoPromise; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__exceptions__ = __webpack_require__(19);\nvar _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; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\nvar global = window.__zalgopromise__ = window.__zalgopromise__ || {\n flushPromises: [],\n activeCount: 0\n};\n\nvar ZalgoPromise = function () {\n function ZalgoPromise(handler) {\n var _this = this;\n\n _classCallCheck(this, ZalgoPromise);\n\n this.resolved = false;\n this.rejected = false;\n this.errorHandled = false;\n\n this.handlers = [];\n\n if (handler) {\n\n var _result = void 0;\n var _error = void 0;\n var resolved = false;\n var rejected = false;\n var isAsync = false;\n\n try {\n handler(function (res) {\n if (isAsync) {\n _this.resolve(res);\n } else {\n resolved = true;\n _result = res;\n }\n }, function (err) {\n if (isAsync) {\n _this.reject(err);\n } else {\n rejected = true;\n _error = err;\n }\n });\n } catch (err) {\n this.reject(err);\n return;\n }\n\n isAsync = true;\n\n if (resolved) {\n // $FlowFixMe\n this.resolve(_result);\n } else if (rejected) {\n this.reject(_error);\n }\n }\n }\n\n _createClass(ZalgoPromise, [{\n key: 'resolve',\n value: function resolve(result) {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* isPromise */])(result)) {\n throw new Error('Can not resolve promise with another promise');\n }\n\n this.resolved = true;\n this.value = result;\n this.dispatch();\n\n return this;\n }\n }, {\n key: 'reject',\n value: function reject(error) {\n var _this2 = this;\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* isPromise */])(error)) {\n throw new Error('Can not reject promise with another promise');\n }\n\n if (!error) {\n var _err = error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error);\n error = new Error('Expected reject to be called with Error, got ' + _err);\n }\n\n this.rejected = true;\n this.error = error;\n\n if (!this.errorHandled) {\n setTimeout(function () {\n if (!_this2.errorHandled) {\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__exceptions__[\"a\" /* dispatchPossiblyUnhandledError */])(error);\n }\n }, 1);\n }\n\n this.dispatch();\n\n return this;\n }\n }, {\n key: 'asyncReject',\n value: function asyncReject(error) {\n this.errorHandled = true;\n this.reject(error);\n }\n }, {\n key: 'dispatch',\n value: function dispatch() {\n var _this3 = this;\n\n var dispatching = this.dispatching,\n resolved = this.resolved,\n rejected = this.rejected,\n handlers = this.handlers;\n\n\n if (dispatching) {\n return;\n }\n\n if (!resolved && !rejected) {\n return;\n }\n\n this.dispatching = true;\n global.activeCount += 1;\n\n var _loop = function _loop(i) {\n var _handlers$i = handlers[i],\n onSuccess = _handlers$i.onSuccess,\n onError = _handlers$i.onError,\n promise = _handlers$i.promise;\n\n\n var result = void 0;\n\n if (resolved) {\n\n try {\n result = onSuccess ? onSuccess(_this3.value) : _this3.value;\n } catch (err) {\n promise.reject(err);\n return 'continue';\n }\n } else if (rejected) {\n\n if (!onError) {\n promise.reject(_this3.error);\n return 'continue';\n }\n\n try {\n result = onError(_this3.error);\n } catch (err) {\n promise.reject(err);\n return 'continue';\n }\n }\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n result.errorHandled = true;\n } else if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* isPromise */])(result)) {\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n } else {\n // $FlowFixMe\n result.then(function (res) {\n promise.resolve(res);\n }, function (err) {\n promise.reject(err);\n });\n }\n } else {\n\n promise.resolve(result);\n }\n };\n\n for (var i = 0; i < handlers.length; i++) {\n var _ret = _loop(i);\n\n if (_ret === 'continue') continue;\n }\n\n handlers.length = 0;\n this.dispatching = false;\n global.activeCount -= 1;\n\n if (global.activeCount === 0) {\n ZalgoPromise.flushQueue();\n }\n }\n }, {\n key: 'then',\n value: function then(onSuccess, onError) {\n\n if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {\n throw new Error('Promise.then expected a function for success handler');\n }\n\n if (onError && typeof onError !== 'function' && !onError.call) {\n throw new Error('Promise.then expected a function for error handler');\n }\n\n var promise = new ZalgoPromise();\n\n this.handlers.push({\n promise: promise,\n onSuccess: onSuccess,\n onError: onError\n });\n\n this.errorHandled = true;\n\n this.dispatch();\n\n return promise;\n }\n }, {\n key: 'catch',\n value: function _catch(onError) {\n return this.then(undefined, onError);\n }\n }, {\n key: 'finally',\n value: function _finally(handler) {\n return this.then(function (result) {\n return ZalgoPromise['try'](handler).then(function () {\n return result;\n });\n }, function (err) {\n return ZalgoPromise['try'](handler).then(function () {\n throw err;\n });\n });\n }\n }, {\n key: 'timeout',\n value: function timeout(time, err) {\n var _this4 = this;\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n var timeout = setTimeout(function () {\n\n if (_this4.resolved || _this4.rejected) {\n return;\n }\n\n _this4.reject(err || new Error('Promise timed out after ' + time + 'ms'));\n }, time);\n\n return this.then(function (result) {\n clearTimeout(timeout);\n return result;\n });\n }\n }, {\n key: 'toPromise',\n value: function toPromise() {\n if (!window.Promise) {\n throw new Error('Could not find window.Promise');\n }\n return window.Promise.resolve(this);\n }\n }], [{\n key: 'resolve',\n value: function resolve(value) {\n\n if (value instanceof ZalgoPromise) {\n return value;\n }\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* isPromise */])(value)) {\n // $FlowFixMe\n return new ZalgoPromise(function (resolve, reject) {\n return value.then(resolve, reject);\n });\n }\n\n return new ZalgoPromise().resolve(value);\n }\n }, {\n key: 'reject',\n value: function reject(error) {\n return new ZalgoPromise().reject(error);\n }\n }, {\n key: 'all',\n value: function all(promises) {\n\n var promise = new ZalgoPromise();\n var count = promises.length;\n var results = [];\n\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n\n var _loop2 = function _loop2(i) {\n var prom = promises[i];\n\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n return 'continue';\n }\n } else if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* isPromise */])(prom)) {\n results[i] = prom;\n count -= 1;\n return 'continue';\n }\n\n ZalgoPromise.resolve(prom).then(function (result) {\n results[i] = result;\n count -= 1;\n if (count === 0) {\n promise.resolve(results);\n }\n }, function (err) {\n promise.reject(err);\n });\n };\n\n for (var i = 0; i < promises.length; i++) {\n var _ret2 = _loop2(i);\n\n if (_ret2 === 'continue') continue;\n }\n\n if (count === 0) {\n promise.resolve(results);\n }\n\n return promise;\n }\n }, {\n key: 'hash',\n value: function hash(promises) {\n var result = {};\n\n return ZalgoPromise.all(Object.keys(promises).map(function (key) {\n return ZalgoPromise.resolve(promises[key]).then(function (value) {\n result[key] = value;\n });\n })).then(function () {\n return result;\n });\n }\n }, {\n key: 'map',\n value: function map(items, method) {\n // $FlowFixMe\n return ZalgoPromise.all(items.map(method));\n }\n }, {\n key: 'onPossiblyUnhandledException',\n value: function onPossiblyUnhandledException(handler) {\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__exceptions__[\"b\" /* onPossiblyUnhandledException */])(handler);\n }\n }, {\n key: 'try',\n value: function _try(method, context, args) {\n\n var result = void 0;\n\n try {\n // $FlowFixMe\n result = method.apply(context, args || []);\n } catch (err) {\n return ZalgoPromise.reject(err);\n }\n\n return ZalgoPromise.resolve(result);\n }\n }, {\n key: 'delay',\n value: function delay(_delay) {\n return new ZalgoPromise(function (resolve) {\n setTimeout(resolve, _delay);\n });\n }\n }, {\n key: 'isPromise',\n value: function isPromise(value) {\n\n if (value && value instanceof ZalgoPromise) {\n return true;\n }\n\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* isPromise */])(value);\n }\n }, {\n key: 'flush',\n value: function flush() {\n var promise = new ZalgoPromise();\n global.flushPromises.push(promise);\n\n if (global.activeCount === 0) {\n ZalgoPromise.flushQueue();\n }\n\n return promise;\n }\n }, {\n key: 'flushQueue',\n value: function flushQueue() {\n var promisesToFlush = global.flushPromises;\n global.flushPromises = [];\n\n for (var _iterator = promisesToFlush, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var _promise = _ref;\n\n _promise.resolve();\n }\n }\n }]);\n\n return ZalgoPromise;\n}();\n\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isPromise;\n\nvar toString = {}.toString;\n\nfunction isPromise(item) {\n try {\n if (!item) {\n return false;\n }\n\n if (window.Promise && item instanceof window.Promise) {\n return true;\n }\n\n if (window.Window && item instanceof window.Window) {\n return false;\n }\n\n if (window.constructor && item instanceof window.constructor) {\n return false;\n }\n\n if (toString) {\n var name = toString.call(item);\n\n if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {\n return false;\n }\n }\n\n if (typeof item.then === 'function') {\n return true;\n }\n } catch (err) {\n return false;\n }\n\n return false;\n}\n\n/***/ }),\n/* 22 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = cleanUpWindow;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__global__ = __webpack_require__(3);\n\n\nfunction cleanUpWindow(win) {\n\n // global.tunnelWindows\n // global.bridges\n // global.popupWindowsByName\n // global.responseListeners\n // global.requestListeners\n\n var requestPromises = __WEBPACK_IMPORTED_MODULE_0__global__[\"a\" /* global */].requestPromises.get(win);\n\n if (requestPromises) {\n for (var _iterator = requestPromises, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var promise = _ref;\n\n promise.reject(new Error('No response from window - cleaned up'));\n }\n }\n\n if (__WEBPACK_IMPORTED_MODULE_0__global__[\"a\" /* global */].popupWindowsByWin) {\n __WEBPACK_IMPORTED_MODULE_0__global__[\"a\" /* global */].popupWindowsByWin['delete'](win);\n }\n\n if (__WEBPACK_IMPORTED_MODULE_0__global__[\"a\" /* global */].remoteWindows) {\n __WEBPACK_IMPORTED_MODULE_0__global__[\"a\" /* global */].remoteWindows['delete'](win);\n }\n\n __WEBPACK_IMPORTED_MODULE_0__global__[\"a\" /* global */].requestPromises['delete'](win);\n __WEBPACK_IMPORTED_MODULE_0__global__[\"a\" /* global */].methods['delete'](win);\n __WEBPACK_IMPORTED_MODULE_0__global__[\"a\" /* global */].readyPromises['delete'](win);\n}\n\n/***/ }),\n/* 23 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return CONFIG; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(11);\nvar _ALLOWED_POST_MESSAGE;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nvar CONFIG = {\n\n ALLOW_POSTMESSAGE_POPUP: '__ALLOW_POSTMESSAGE_POPUP__' in window ? window.__ALLOW_POSTMESSAGE_POPUP__ : true,\n\n LOG_LEVEL: 'info',\n\n BRIDGE_TIMEOUT: 5000,\n CHILD_WINDOW_TIMEOUT: 5000,\n\n ACK_TIMEOUT: window.navigator.userAgent.match(/MSIE/i) !== -1 && !false ? 2000 : 1000,\n RES_TIMEOUT: false ? 2000 : Infinity,\n\n LOG_TO_PAGE: false,\n\n ALLOWED_POST_MESSAGE_METHODS: (_ALLOWED_POST_MESSAGE = {}, _defineProperty(_ALLOWED_POST_MESSAGE, __WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* CONSTANTS */].SEND_STRATEGIES.POST_MESSAGE, true), _defineProperty(_ALLOWED_POST_MESSAGE, __WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* CONSTANTS */].SEND_STRATEGIES.BRIDGE, true), _defineProperty(_ALLOWED_POST_MESSAGE, __WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* CONSTANTS */].SEND_STRATEGIES.GLOBAL, true), _ALLOWED_POST_MESSAGE),\n\n ALLOW_SAME_ORIGIN: false\n};\n\nif (window.location.href.indexOf(__WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* CONSTANTS */].FILE_PROTOCOL) === 0) {\n CONFIG.ALLOW_POSTMESSAGE_POPUP = true;\n}\n\n/***/ }),\n/* 24 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export receiveMessage */\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = messageListener;\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = listenForMessages;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__conf__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lib__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__global__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__types__ = __webpack_require__(25);\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\n\n\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].receivedMessages = __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].receivedMessages || [];\n\nfunction parseMessage(message) {\n\n var parsedMessage = void 0;\n\n try {\n parsedMessage = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__lib__[\"j\" /* jsonParse */])(message);\n } catch (err) {\n return;\n }\n\n if (!parsedMessage) {\n return;\n }\n\n if ((typeof parsedMessage === 'undefined' ? 'undefined' : _typeof(parsedMessage)) !== 'object' || parsedMessage === null) {\n return;\n }\n\n parsedMessage = parsedMessage[__WEBPACK_IMPORTED_MODULE_1__conf__[\"a\" /* CONSTANTS */].WINDOW_PROPS.POSTROBOT];\n\n if (!parsedMessage || (typeof parsedMessage === 'undefined' ? 'undefined' : _typeof(parsedMessage)) !== 'object' || parsedMessage === null) {\n return;\n }\n\n if (!parsedMessage.type || typeof parsedMessage.type !== 'string') {\n return;\n }\n\n if (!__WEBPACK_IMPORTED_MODULE_4__types__[\"a\" /* RECEIVE_MESSAGE_TYPES */][parsedMessage.type]) {\n return;\n }\n\n return parsedMessage;\n}\n\nfunction receiveMessage(event) {\n\n if (!window || window.closed) {\n throw new Error('Message recieved in closed window');\n }\n\n try {\n if (!event.source) {\n return;\n }\n } catch (err) {\n return;\n }\n\n var source = event.source,\n origin = event.origin,\n data = event.data;\n\n\n var message = parseMessage(data);\n\n if (!message) {\n return;\n }\n\n if (!message.sourceDomain || typeof message.sourceDomain !== 'string') {\n throw new Error('Expected message to have sourceDomain');\n }\n\n if (message.sourceDomain.indexOf(__WEBPACK_IMPORTED_MODULE_1__conf__[\"a\" /* CONSTANTS */].MOCK_PROTOCOL) === 0 || message.sourceDomain.indexOf(__WEBPACK_IMPORTED_MODULE_1__conf__[\"a\" /* CONSTANTS */].FILE_PROTOCOL) === 0) {\n origin = message.sourceDomain;\n }\n\n if (__WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].receivedMessages.indexOf(message.id) === -1) {\n __WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].receivedMessages.push(message.id);\n } else {\n return;\n }\n\n var level = void 0;\n\n if (__WEBPACK_IMPORTED_MODULE_1__conf__[\"c\" /* POST_MESSAGE_NAMES_LIST */].indexOf(message.name) !== -1 || message.type === __WEBPACK_IMPORTED_MODULE_1__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n __WEBPACK_IMPORTED_MODULE_2__lib__[\"g\" /* log */].logLevel(level, ['\\n\\n\\t', '#receive', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', origin, '\\n\\n', message]);\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__[\"e\" /* isWindowClosed */])(source)) {\n __WEBPACK_IMPORTED_MODULE_2__lib__[\"g\" /* log */].debug('Source window is closed - can not send ' + message.type + ' ' + message.name);\n return;\n }\n\n if (message.data) {\n message.data = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__lib__[\"k\" /* deserializeMethods */])(source, origin, message.data);\n }\n\n __WEBPACK_IMPORTED_MODULE_4__types__[\"a\" /* RECEIVE_MESSAGE_TYPES */][message.type](source, origin, message);\n}\n\nfunction messageListener(event) {\n\n try {\n event.source; // eslint-disable-line\n } catch (err) {\n return;\n }\n\n // $FlowFixMe\n var messageEvent = {\n source: event.source || event.sourceElement,\n origin: event.origin || event.originalEvent && event.originalEvent.origin,\n data: event.data\n };\n\n if (false) {\n try {\n require('../../compat').emulateIERestrictions(messageEvent.source, window);\n } catch (err) {\n return;\n }\n }\n\n receiveMessage(messageEvent);\n}\n\nfunction listenForMessages() {\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__lib__[\"l\" /* addEventListener */])(window, 'message', messageListener);\n}\n\n__WEBPACK_IMPORTED_MODULE_3__global__[\"a\" /* global */].receiveMessage = receiveMessage;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return RECEIVE_MESSAGE_TYPES; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_zalgo_promise_src__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_cross_domain_utils_src__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__conf__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lib__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__send__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__listeners__ = __webpack_require__(12);\nvar _RECEIVE_MESSAGE_TYPE;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\nvar RECEIVE_MESSAGE_TYPES = (_RECEIVE_MESSAGE_TYPE = {}, _defineProperty(_RECEIVE_MESSAGE_TYPE, __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_TYPE.ACK, function (source, origin, message) {\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__listeners__[\"a\" /* isResponseListenerErrored */])(message.hash)) {\n return;\n }\n\n var options = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__listeners__[\"b\" /* getResponseListener */])(message.hash);\n\n if (!options) {\n throw new Error('No handler found for post message ack for message: ' + message.name + ' from ' + origin + ' in ' + window.location.protocol + '//' + window.location.host + window.location.pathname);\n }\n\n if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_cross_domain_utils_src__[\"f\" /* matchDomain */])(options.domain, origin)) {\n throw new Error('Ack origin ' + origin + ' does not match domain ' + options.domain.toString());\n }\n\n options.ack = true;\n}), _defineProperty(_RECEIVE_MESSAGE_TYPE, __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_TYPE.REQUEST, function (source, origin, message) {\n\n var options = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__listeners__[\"c\" /* getRequestListener */])({ name: message.name, win: source, domain: origin });\n\n function respond(data) {\n\n if (message.fireAndForget || __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_cross_domain_utils_src__[\"e\" /* isWindowClosed */])(source)) {\n return __WEBPACK_IMPORTED_MODULE_0_zalgo_promise_src__[\"a\" /* ZalgoPromise */].resolve();\n }\n\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__send__[\"a\" /* sendMessage */])(source, _extends({\n target: message.originalSource,\n hash: message.hash,\n name: message.name\n }, data), origin);\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_zalgo_promise_src__[\"a\" /* ZalgoPromise */].all([respond({\n type: __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_TYPE.ACK\n }), __WEBPACK_IMPORTED_MODULE_0_zalgo_promise_src__[\"a\" /* ZalgoPromise */]['try'](function () {\n\n if (!options) {\n throw new Error('No handler found for post message: ' + message.name + ' from ' + origin + ' in ' + window.location.protocol + '//' + window.location.host + window.location.pathname);\n }\n\n if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_cross_domain_utils_src__[\"f\" /* matchDomain */])(options.domain, origin)) {\n throw new Error('Request origin ' + origin + ' does not match domain ' + options.domain.toString());\n }\n\n var data = message.data;\n\n return options.handler({ source: source, origin: origin, data: data });\n }).then(function (data) {\n\n return respond({\n type: __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_TYPE.RESPONSE,\n ack: __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_ACK.SUCCESS,\n data: data\n });\n }, function (err) {\n\n var error = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__lib__[\"i\" /* stringifyError */])(err).replace(/^Error: /, '');\n // $FlowFixMe\n var code = err.code;\n\n return respond({\n type: __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_TYPE.RESPONSE,\n ack: __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_ACK.ERROR,\n error: error,\n code: code\n });\n })]).then(__WEBPACK_IMPORTED_MODULE_3__lib__[\"m\" /* noop */])['catch'](function (err) {\n\n if (options && options.handleError) {\n return options.handleError(err);\n } else {\n __WEBPACK_IMPORTED_MODULE_3__lib__[\"g\" /* log */].error(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__lib__[\"i\" /* stringifyError */])(err));\n }\n });\n}), _defineProperty(_RECEIVE_MESSAGE_TYPE, __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_TYPE.RESPONSE, function (source, origin, message) {\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__listeners__[\"a\" /* isResponseListenerErrored */])(message.hash)) {\n return;\n }\n\n var options = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__listeners__[\"b\" /* getResponseListener */])(message.hash);\n\n if (!options) {\n throw new Error('No handler found for post message response for message: ' + message.name + ' from ' + origin + ' in ' + window.location.protocol + '//' + window.location.host + window.location.pathname);\n }\n\n if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_cross_domain_utils_src__[\"f\" /* matchDomain */])(options.domain, origin)) {\n throw new Error('Response origin ' + origin + ' does not match domain ' + options.domain);\n }\n\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__listeners__[\"d\" /* deleteResponseListener */])(message.hash);\n\n if (message.ack === __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_ACK.ERROR) {\n var err = new Error(message.error);\n if (message.code) {\n // $FlowFixMe\n err.code = message.code;\n }\n return options.respond(err, null);\n } else if (message.ack === __WEBPACK_IMPORTED_MODULE_2__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_ACK.SUCCESS) {\n var data = message.data || message.response;\n\n return options.respond(null, { source: source, origin: origin, data: data });\n }\n}), _RECEIVE_MESSAGE_TYPE);\n\n/***/ }),\n/* 26 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return SEND_MESSAGE_STRATEGIES; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__conf__ = __webpack_require__(0);\n\n\n\n\nvar SEND_MESSAGE_STRATEGIES = {};\n\nSEND_MESSAGE_STRATEGIES[__WEBPACK_IMPORTED_MODULE_1__conf__[\"a\" /* CONSTANTS */].SEND_STRATEGIES.POST_MESSAGE] = function (win, serializedMessage, domain) {\n\n if (false) {\n try {\n require('../../compat').emulateIERestrictions(window, win);\n } catch (err) {\n return;\n }\n }\n\n var domains = void 0;\n\n if (Array.isArray(domain)) {\n domains = domain;\n } else if (domain) {\n domains = [domain];\n } else {\n domains = [__WEBPACK_IMPORTED_MODULE_1__conf__[\"a\" /* CONSTANTS */].WILDCARD];\n }\n\n domains = domains.map(function (dom) {\n\n if (dom.indexOf(__WEBPACK_IMPORTED_MODULE_1__conf__[\"a\" /* CONSTANTS */].MOCK_PROTOCOL) === 0) {\n\n if (window.location.protocol === __WEBPACK_IMPORTED_MODULE_1__conf__[\"a\" /* CONSTANTS */].FILE_PROTOCOL) {\n return __WEBPACK_IMPORTED_MODULE_1__conf__[\"a\" /* CONSTANTS */].WILDCARD;\n }\n\n if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__[\"h\" /* isActuallySameDomain */])(win)) {\n throw new Error('Attempting to send messsage to mock domain ' + dom + ', but window is actually cross-domain');\n }\n\n // $FlowFixMe\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__[\"i\" /* getActualDomain */])(win);\n }\n\n if (dom.indexOf(__WEBPACK_IMPORTED_MODULE_1__conf__[\"a\" /* CONSTANTS */].FILE_PROTOCOL) === 0) {\n return __WEBPACK_IMPORTED_MODULE_1__conf__[\"a\" /* CONSTANTS */].WILDCARD;\n }\n\n return dom;\n });\n\n domains.forEach(function (dom) {\n return win.postMessage(serializedMessage, dom);\n });\n};\n\nif (false) {\n var _require = require('../../bridge'),\n sendBridgeMessage = _require.sendBridgeMessage,\n needsBridgeForBrowser = _require.needsBridgeForBrowser,\n isBridge = _require.isBridge;\n\n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.BRIDGE] = function (win, serializedMessage, domain) {\n\n if (!needsBridgeForBrowser() && !isBridge()) {\n return;\n }\n\n if (isSameDomain(win)) {\n throw new Error('Post message through bridge disabled between same domain windows');\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error('Can only use bridge to communicate between two different windows, not between frames');\n }\n\n return sendBridgeMessage(win, serializedMessage, domain);\n };\n\n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.GLOBAL] = function (win, serializedMessage, domain) {\n\n if (!needsBridgeForBrowser()) {\n return;\n }\n\n if (!isSameDomain(win)) {\n throw new Error('Post message through global disabled between different domain windows');\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error('Can only use global to communicate between two different windows, not between frames');\n }\n\n // $FlowFixMe\n var foreignGlobal = win[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!foreignGlobal) {\n throw new Error('Can not find postRobot global on foreign window');\n }\n\n return foreignGlobal.receiveMessage({\n source: window,\n origin: getDomain(),\n data: serializedMessage\n });\n };\n}\n\n/***/ }),\n/* 27 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interface__ = __webpack_require__(8);\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"cleanUpWindow\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"cleanUpWindow\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"Promise\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"Promise\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"bridge\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"bridge\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"init\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"init\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"parent\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"parent\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"send\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"send\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"request\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"request\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"sendToParent\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"sendToParent\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"client\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"client\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"on\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"on\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"listen\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"listen\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"once\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"once\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"listener\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"listener\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"CONFIG\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"CONFIG\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"CONSTANTS\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"CONSTANTS\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"disable\", function() { return __WEBPACK_IMPORTED_MODULE_0__interface__[\"disable\"]; });\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (__WEBPACK_IMPORTED_MODULE_0__interface__);\n\n/***/ }),\n/* 28 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = initOnReady;\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = onWindowReady;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_cross_domain_safe_weakmap_src__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_cross_domain_utils_src__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_zalgo_promise_src__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__conf__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__log__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__global__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__util__ = __webpack_require__(7);\n\n\n\n\n\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_5__global__[\"a\" /* global */].readyPromises = __WEBPACK_IMPORTED_MODULE_5__global__[\"a\" /* global */].readyPromises || new __WEBPACK_IMPORTED_MODULE_0_cross_domain_safe_weakmap_src__[\"a\" /* WeakMap */]();\n\nfunction initOnReady() {\n\n __WEBPACK_IMPORTED_MODULE_5__global__[\"a\" /* global */].on(__WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_NAMES.READY, { domain: __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].WILDCARD }, function (event) {\n\n var win = event.source;\n var promise = __WEBPACK_IMPORTED_MODULE_5__global__[\"a\" /* global */].readyPromises.get(win);\n\n if (promise) {\n promise.resolve(event);\n } else {\n promise = new __WEBPACK_IMPORTED_MODULE_2_zalgo_promise_src__[\"a\" /* ZalgoPromise */]().resolve(event);\n __WEBPACK_IMPORTED_MODULE_5__global__[\"a\" /* global */].readyPromises.set(win, promise);\n }\n });\n\n var parent = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_cross_domain_utils_src__[\"a\" /* getAncestor */])();\n\n if (parent) {\n __WEBPACK_IMPORTED_MODULE_5__global__[\"a\" /* global */].send(parent, __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_NAMES.READY, {}, { domain: __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].WILDCARD, timeout: Infinity })['catch'](function (err) {\n __WEBPACK_IMPORTED_MODULE_4__log__[\"a\" /* log */].debug(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util__[\"a\" /* stringifyError */])(err));\n });\n }\n}\n\nfunction onWindowReady(win) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5000;\n var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'Window';\n\n\n var promise = __WEBPACK_IMPORTED_MODULE_5__global__[\"a\" /* global */].readyPromises.get(win);\n\n if (promise) {\n return promise;\n }\n\n promise = new __WEBPACK_IMPORTED_MODULE_2_zalgo_promise_src__[\"a\" /* ZalgoPromise */]();\n __WEBPACK_IMPORTED_MODULE_5__global__[\"a\" /* global */].readyPromises.set(win, promise);\n\n if (timeout !== -1) {\n setTimeout(function () {\n return promise.reject(new Error(name + ' did not load after ' + timeout + 'ms'));\n }, timeout);\n }\n\n return promise;\n}\n\n/***/ }),\n/* 29 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return listenForMethods; });\n/* unused harmony export serializeMethod */\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = serializeMethods;\n/* unused harmony export deserializeMethod */\n/* unused harmony export deserializeError */\n/* unused harmony export deserializeZalgoPromise */\n/* unused harmony export deserializePromise */\n/* unused harmony export deserializeRegex */\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = deserializeMethods;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_cross_domain_safe_weakmap_src__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_cross_domain_utils_src__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_zalgo_promise_src__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__conf__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__log__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__global__ = __webpack_require__(3);\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\n\n\n\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_6__global__[\"a\" /* global */].methods = __WEBPACK_IMPORTED_MODULE_6__global__[\"a\" /* global */].methods || new __WEBPACK_IMPORTED_MODULE_0_cross_domain_safe_weakmap_src__[\"a\" /* WeakMap */]();\n\nvar listenForMethods = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util__[\"d\" /* once */])(function () {\n __WEBPACK_IMPORTED_MODULE_6__global__[\"a\" /* global */].on(__WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_NAMES.METHOD, { origin: __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].WILDCARD }, function (_ref) {\n var source = _ref.source,\n origin = _ref.origin,\n data = _ref.data;\n\n\n var methods = __WEBPACK_IMPORTED_MODULE_6__global__[\"a\" /* global */].methods.get(source);\n\n if (!methods) {\n throw new Error('Could not find any methods this window has privileges to call');\n }\n\n var meth = methods[data.id];\n\n if (!meth) {\n throw new Error('Could not find method with id: ' + data.id);\n }\n\n if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_cross_domain_utils_src__[\"f\" /* matchDomain */])(meth.domain, origin)) {\n throw new Error('Method domain ' + meth.domain + ' does not match origin ' + origin);\n }\n\n __WEBPACK_IMPORTED_MODULE_5__log__[\"a\" /* log */].debug('Call local method', data.name, data.args);\n\n return __WEBPACK_IMPORTED_MODULE_2_zalgo_promise_src__[\"a\" /* ZalgoPromise */]['try'](function () {\n return meth.method.apply({ source: source, origin: origin, data: data }, data.args);\n }).then(function (result) {\n\n return {\n result: result,\n id: data.id,\n name: data.name\n };\n });\n });\n});\n\nfunction isSerialized(item, type) {\n return (typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object' && item !== null && item.__type__ === type;\n}\n\nfunction serializeMethod(destination, domain, method, name) {\n\n var id = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util__[\"e\" /* uniqueID */])();\n\n var methods = __WEBPACK_IMPORTED_MODULE_6__global__[\"a\" /* global */].methods.get(destination);\n\n if (!methods) {\n methods = {};\n __WEBPACK_IMPORTED_MODULE_6__global__[\"a\" /* global */].methods.set(destination, methods);\n }\n\n methods[id] = { domain: domain, method: method };\n\n return {\n __type__: __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n}\n\nfunction serializeError(err) {\n return {\n __type__: __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].SERIALIZATION_TYPES.ERROR,\n __message__: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util__[\"a\" /* stringifyError */])(err),\n // $FlowFixMe\n __code__: err.code\n };\n}\n\nfunction serializePromise(destination, domain, promise, name) {\n return {\n __type__: __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, function (resolve, reject) {\n return promise.then(resolve, reject);\n }, name + '.then')\n };\n}\n\nfunction serializeZalgoPromise(destination, domain, promise, name) {\n return {\n __type__: __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, function (resolve, reject) {\n return promise.then(resolve, reject);\n }, name + '.then')\n };\n}\n\nfunction serializeRegex(regex) {\n return {\n __type__: __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n };\n}\n\nfunction serializeMethods(destination, domain, obj) {\n\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util__[\"f\" /* replaceObject */])({ obj: obj }, function (item, key) {\n if (typeof item === 'function') {\n return serializeMethod(destination, domain, item, key.toString());\n }\n\n if (item instanceof Error) {\n return serializeError(item);\n }\n\n if (window.Promise && item instanceof window.Promise) {\n return serializePromise(destination, domain, item, key.toString());\n }\n\n if (__WEBPACK_IMPORTED_MODULE_2_zalgo_promise_src__[\"a\" /* ZalgoPromise */].isPromise(item)) {\n // $FlowFixMe\n return serializeZalgoPromise(destination, domain, item, key.toString());\n }\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util__[\"g\" /* isRegex */])(item)) {\n // $FlowFixMe\n return serializeRegex(item);\n }\n }).obj;\n}\n\nfunction deserializeMethod(source, origin, obj) {\n\n function wrapper() {\n var args = Array.prototype.slice.call(arguments);\n __WEBPACK_IMPORTED_MODULE_5__log__[\"a\" /* log */].debug('Call foreign method', obj.__name__, args);\n return __WEBPACK_IMPORTED_MODULE_6__global__[\"a\" /* global */].send(source, __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args: args\n\n }, { domain: origin, timeout: Infinity }).then(function (_ref2) {\n var data = _ref2.data;\n\n\n __WEBPACK_IMPORTED_MODULE_5__log__[\"a\" /* log */].debug('Got foreign method result', obj.__name__, data.result);\n return data.result;\n }, function (err) {\n __WEBPACK_IMPORTED_MODULE_5__log__[\"a\" /* log */].debug('Got foreign method error', __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util__[\"a\" /* stringifyError */])(err));\n throw err;\n });\n }\n\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = true;\n\n wrapper.source = source;\n wrapper.origin = origin;\n\n return wrapper;\n}\n\nfunction deserializeError(source, origin, obj) {\n var err = new Error(obj.__message__);\n if (obj.__code__) {\n // $FlowFixMe\n err.code = obj.__code__;\n }\n return err;\n}\n\nfunction deserializeZalgoPromise(source, origin, prom) {\n return new __WEBPACK_IMPORTED_MODULE_2_zalgo_promise_src__[\"a\" /* ZalgoPromise */](function (resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n });\n}\n\nfunction deserializePromise(source, origin, prom) {\n if (!window.Promise) {\n return deserializeZalgoPromise(source, origin, prom);\n }\n\n return new window.Promise(function (resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n });\n}\n\nfunction deserializeRegex(source, origin, item) {\n return new RegExp(item.__source__);\n}\n\nfunction deserializeMethods(source, origin, obj) {\n\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util__[\"f\" /* replaceObject */])({ obj: obj }, function (item, key) {\n if ((typeof item === 'undefined' ? 'undefined' : _typeof(item)) !== 'object' || item === null) {\n return;\n }\n\n if (isSerialized(item, __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].SERIALIZATION_TYPES.METHOD)) {\n return deserializeMethod(source, origin, item);\n }\n\n if (isSerialized(item, __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].SERIALIZATION_TYPES.ERROR)) {\n return deserializeError(source, origin, item);\n }\n\n if (isSerialized(item, __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].SERIALIZATION_TYPES.PROMISE)) {\n return deserializePromise(source, origin, item);\n }\n\n if (isSerialized(item, __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].SERIALIZATION_TYPES.ZALGO_PROMISE)) {\n return deserializeZalgoPromise(source, origin, item);\n }\n\n if (isSerialized(item, __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].SERIALIZATION_TYPES.REGEX)) {\n return deserializeRegex(source, origin, item);\n }\n }).obj;\n}\n\n/***/ }),\n/* 30 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return _send; });\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = request;\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = sendToParent;\n/* harmony export (immutable) */ __webpack_exports__[\"d\"] = client;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_cross_domain_safe_weakmap_src__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_zalgo_promise_src__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_cross_domain_utils_src__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__conf__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__drivers__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__lib__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__global__ = __webpack_require__(3);\n\n\n\n\n\n\n\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_6__global__[\"a\" /* global */].requestPromises = __WEBPACK_IMPORTED_MODULE_6__global__[\"a\" /* global */].requestPromises || new __WEBPACK_IMPORTED_MODULE_0_cross_domain_safe_weakmap_src__[\"a\" /* WeakMap */]();\n\nfunction request(options) {\n\n var prom = __WEBPACK_IMPORTED_MODULE_1_zalgo_promise_src__[\"a\" /* ZalgoPromise */]['try'](function () {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n var name = options.name;\n var targetWindow = void 0;\n var domain = void 0;\n\n if (typeof options.window === 'string') {\n var el = document.getElementById(options.window);\n\n if (!el) {\n throw new Error('Expected options.window ' + Object.prototype.toString.call(options.window) + ' to be a valid element id');\n }\n\n if (el.tagName.toLowerCase() !== 'iframe') {\n throw new Error('Expected options.window ' + Object.prototype.toString.call(options.window) + ' to be an iframe');\n }\n\n if (!el.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n // $FlowFixMe\n targetWindow = el.contentWindow;\n } else if (options.window instanceof HTMLIFrameElement) {\n\n if (options.window.tagName.toLowerCase() !== 'iframe') {\n throw new Error('Expected options.window ' + Object.prototype.toString.call(options.window) + ' to be an iframe');\n }\n\n if (options.window && !options.window.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n if (options.window && options.window.contentWindow) {\n // $FlowFixMe\n targetWindow = options.window.contentWindow;\n }\n } else {\n targetWindow = options.window;\n }\n\n if (!targetWindow) {\n throw new Error('Expected options.window to be a window object, iframe, or iframe element id.');\n }\n\n var win = targetWindow;\n\n domain = options.domain || __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].WILDCARD;\n\n var hash = options.name + '_' + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__lib__[\"d\" /* uniqueID */])();\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2_cross_domain_utils_src__[\"e\" /* isWindowClosed */])(win)) {\n throw new Error('Target window is closed');\n }\n\n var hasResult = false;\n\n var requestPromises = __WEBPACK_IMPORTED_MODULE_6__global__[\"a\" /* global */].requestPromises.get(win);\n\n if (!requestPromises) {\n requestPromises = [];\n __WEBPACK_IMPORTED_MODULE_6__global__[\"a\" /* global */].requestPromises.set(win, requestPromises);\n }\n\n var requestPromise = __WEBPACK_IMPORTED_MODULE_1_zalgo_promise_src__[\"a\" /* ZalgoPromise */]['try'](function () {\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2_cross_domain_utils_src__[\"j\" /* isAncestor */])(window, win)) {\n return __WEBPACK_IMPORTED_MODULE_1_zalgo_promise_src__[\"a\" /* ZalgoPromise */].resolve(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__lib__[\"p\" /* onWindowReady */])(win, options.timeout || __WEBPACK_IMPORTED_MODULE_3__conf__[\"b\" /* CONFIG */].CHILD_WINDOW_TIMEOUT));\n }\n }).then(function () {\n\n return new __WEBPACK_IMPORTED_MODULE_1_zalgo_promise_src__[\"a\" /* ZalgoPromise */](function (resolve, reject) {\n\n var responseListener = void 0;\n\n if (!options.fireAndForget) {\n responseListener = {\n name: name,\n window: win,\n domain: domain,\n respond: function respond(err, result) {\n if (!err) {\n hasResult = true;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n };\n\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__drivers__[\"d\" /* addResponseListener */])(hash, responseListener);\n }\n\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__drivers__[\"e\" /* sendMessage */])(win, {\n type: __WEBPACK_IMPORTED_MODULE_3__conf__[\"a\" /* CONSTANTS */].POST_MESSAGE_TYPE.REQUEST,\n hash: hash,\n name: name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, domain)['catch'](reject);\n\n if (options.fireAndForget) {\n return resolve();\n }\n\n var ackTimeout = __WEBPACK_IMPORTED_MODULE_3__conf__[\"b\" /* CONFIG */].ACK_TIMEOUT;\n var resTimeout = options.timeout || __WEBPACK_IMPORTED_MODULE_3__conf__[\"b\" /* CONFIG */].RES_TIMEOUT;\n\n var cycleTime = 100;\n\n var cycle = function cycle() {\n\n if (hasResult) {\n return;\n }\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2_cross_domain_utils_src__[\"e\" /* isWindowClosed */])(win)) {\n\n if (!responseListener.ack) {\n return reject(new Error('Window closed for ' + name + ' before ack'));\n }\n\n return reject(new Error('Window closed for ' + name + ' before response'));\n }\n\n ackTimeout -= cycleTime;\n resTimeout -= cycleTime;\n\n var hasAck = responseListener.ack;\n\n if (hasAck) {\n\n if (resTimeout === Infinity) {\n return;\n }\n\n cycleTime = Math.min(resTimeout, 2000);\n } else if (ackTimeout <= 0) {\n return reject(new Error('No ack for postMessage ' + name + ' in ' + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2_cross_domain_utils_src__[\"g\" /* getDomain */])() + ' in ' + __WEBPACK_IMPORTED_MODULE_3__conf__[\"b\" /* CONFIG */].ACK_TIMEOUT + 'ms'));\n } else if (resTimeout <= 0) {\n return reject(new Error('No response for postMessage ' + name + ' in ' + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2_cross_domain_utils_src__[\"g\" /* getDomain */])() + ' in ' + (options.timeout || __WEBPACK_IMPORTED_MODULE_3__conf__[\"b\" /* CONFIG */].RES_TIMEOUT) + 'ms'));\n }\n\n setTimeout(cycle, cycleTime);\n };\n\n setTimeout(cycle, cycleTime);\n });\n });\n\n requestPromise['catch'](function () {\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__drivers__[\"f\" /* markResponseListenerErrored */])(hash);\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__drivers__[\"g\" /* deleteResponseListener */])(hash);\n });\n\n requestPromises.push(requestPromise);\n\n return requestPromise;\n });\n\n return prom;\n}\n\nfunction _send(window, name, data, options) {\n\n options = options || {};\n options.window = window;\n options.name = name;\n options.data = data;\n\n return request(options);\n}\n\nfunction sendToParent(name, data, options) {\n\n var win = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2_cross_domain_utils_src__[\"a\" /* getAncestor */])();\n\n if (!win) {\n return new __WEBPACK_IMPORTED_MODULE_1_zalgo_promise_src__[\"a\" /* ZalgoPromise */](function (resolve, reject) {\n return reject(new Error('Window does not have a parent'));\n });\n }\n\n return _send(win, name, data, options);\n}\n\nfunction client() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\n if (!options.window) {\n throw new Error('Expected options.window');\n }\n\n var win = options.window;\n\n return {\n send: function send(name, data) {\n return _send(win, name, data, options);\n }\n };\n}\n\n__WEBPACK_IMPORTED_MODULE_6__global__[\"a\" /* global */].send = _send;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = disable;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__conf__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__drivers__ = __webpack_require__(5);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return __WEBPACK_IMPORTED_MODULE_0__conf__[\"b\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_0__conf__[\"a\"]; });\n\n\n\n\n\nfunction disable() {\n delete window[__WEBPACK_IMPORTED_MODULE_0__conf__[\"a\" /* CONSTANTS */].WINDOW_PROPS.POSTROBOT];\n window.removeEventListener('message', __WEBPACK_IMPORTED_MODULE_1__drivers__[\"b\" /* messageListener */]);\n}\n\n/***/ }),\n/* 32 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return _on; });\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = listen;\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = once;\n/* harmony export (immutable) */ __webpack_exports__[\"d\"] = listener;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_zalgo_promise_src__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lib__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__drivers__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__conf__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__global__ = __webpack_require__(3);\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\n\n\n\n\n\n\n\nfunction listen(options) {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n if (!options.handler) {\n throw new Error('Expected options.handler');\n }\n\n var name = options.name;\n var win = options.window;\n var domain = options.domain;\n\n var listenerOptions = {\n handler: options.handler,\n handleError: options.errorHandler || function (err) {\n throw err;\n },\n window: win,\n domain: domain || __WEBPACK_IMPORTED_MODULE_4__conf__[\"a\" /* CONSTANTS */].WILDCARD,\n name: name\n };\n\n var requestListener = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__drivers__[\"c\" /* addRequestListener */])({ name: name, win: win, domain: domain }, listenerOptions);\n\n if (options.once) {\n var _handler = listenerOptions.handler;\n listenerOptions.handler = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__lib__[\"n\" /* once */])(function () {\n requestListener.cancel();\n return _handler.apply(this, arguments);\n });\n }\n\n if (listenerOptions.window && options.errorOnClose) {\n var interval = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__lib__[\"o\" /* safeInterval */])(function () {\n if (win && (typeof win === 'undefined' ? 'undefined' : _typeof(win)) === 'object' && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_cross_domain_utils_src__[\"e\" /* isWindowClosed */])(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error('Post message target window is closed'));\n }\n }, 50);\n }\n\n return {\n cancel: function cancel() {\n requestListener.cancel();\n }\n };\n}\n\nfunction _on(name, options, handler) {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n\n options.name = name;\n options.handler = handler || options.handler;\n\n return listen(options);\n}\n\nfunction once(name) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var handler = arguments[2];\n\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n handler = handler || options.handler;\n var errorHandler = options.errorHandler;\n\n var promise = new __WEBPACK_IMPORTED_MODULE_1_zalgo_promise_src__[\"a\" /* ZalgoPromise */](function (resolve, reject) {\n\n options = options || {};\n\n options.name = name;\n options.once = true;\n\n options.handler = function (event) {\n resolve(event);\n if (handler) {\n return handler(event);\n }\n };\n\n options.errorHandler = function (err) {\n reject(err);\n if (errorHandler) {\n return errorHandler(err);\n }\n };\n });\n\n var onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n\n return promise;\n}\n\nfunction listener() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\n return {\n on: function on(name, handler) {\n return _on(name, options, handler);\n }\n };\n}\n\n__WEBPACK_IMPORTED_MODULE_5__global__[\"a\" /* global */].on = _on;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// post-robot.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 27);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 9efb2241936d8016d81f","// @flow\n\nimport { isRegex, noop } from './util';\n\nconst CONSTANTS = {\n MOCK_PROTOCOL: 'mock:',\n FILE_PROTOCOL: 'file:',\n WILDCARD: '*'\n};\n\nlet IE_WIN_ACCESS_ERROR = 'Call was rejected by callee.\\r\\n';\n\nexport function isFileProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === CONSTANTS.FILE_PROTOCOL;\n}\n\nexport function getActualDomain(win : SameDomainWindowType) : string {\n\n let location = win.location;\n\n if (!location) {\n throw new Error(`Can not read window location`);\n }\n\n let protocol = location.protocol;\n\n if (!protocol) {\n throw new Error(`Can not read window protocol`);\n }\n\n if (protocol === CONSTANTS.FILE_PROTOCOL) {\n return `${CONSTANTS.FILE_PROTOCOL }//`;\n }\n\n let host = location.host;\n\n if (!host) {\n throw new Error(`Can not read window host`);\n }\n\n return `${protocol}//${host}`;\n}\n\nexport function getDomain(win : ?SameDomainWindowType) : string {\n\n win = win || window;\n\n let domain = getActualDomain(win);\n\n if (domain && win.mockDomain && win.mockDomain.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n return win.mockDomain;\n }\n\n return domain;\n}\n\nexport function isBlankDomain(win : CrossDomainWindowType) : boolean {\n try {\n if (!win.location.href) {\n return true;\n }\n\n if (win.location.href === 'about:blank') {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isActuallySameDomain(win : CrossDomainWindowType) : boolean {\n\n try {\n let desc = Object.getOwnPropertyDescriptor(win, 'location');\n\n if (desc && desc.enumerable === false) {\n return false;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n if (isBlankDomain(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getActualDomain(win) === getActualDomain(window)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n\n if (!isActuallySameDomain(win)) {\n return false;\n }\n\n try {\n\n if (isBlankDomain(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getDomain(window) === getDomain(win)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function getParent(win : ?CrossDomainWindowType) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.parent && win.parent !== win) {\n return win.parent;\n }\n } catch (err) {\n return;\n }\n}\n\nexport function getOpener(win : ?CrossDomainWindowType) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n // Make sure we're not actually an iframe which has had window.open() called on us\n if (getParent(win)) {\n return;\n }\n\n try {\n return win.opener;\n } catch (err) {\n return;\n }\n}\n\n\n\nexport function getParents(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n try {\n\n while (win.parent !== win) {\n result.push(win.parent);\n win = win.parent;\n }\n\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\nexport function isAncestorParent(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n if (!parent || !child) {\n return false;\n }\n\n let childParent = getParent(child);\n\n if (childParent) {\n return childParent === parent;\n }\n\n if (getParents(child).indexOf(parent) !== -1) {\n return true;\n }\n\n return false;\n}\n\nexport function getFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n let frames;\n\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n\n let len;\n\n try {\n len = frames.length;\n } catch (err) {\n // pass\n }\n\n if (len === 0) {\n return result;\n }\n\n if (len) {\n for (let i = 0; i < len; i++) {\n\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n\n result.push(frame);\n }\n\n return result;\n }\n\n for (let i = 0; i < 100; i++) {\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n return result;\n }\n\n if (!frame) {\n return result;\n }\n\n result.push(frame);\n }\n\n return result;\n}\n\n\nexport function getAllChildFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n for (let frame of getFrames(win)) {\n result.push(frame);\n\n for (let childFrame of getAllChildFrames(frame)) {\n result.push(childFrame);\n }\n }\n\n return result;\n}\n\nexport function getTop(win : CrossDomainWindowType) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.top) {\n return win.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(win) === win) {\n return win;\n }\n\n try {\n if (isAncestorParent(window, win) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isAncestorParent(win, window) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n for (let frame of getAllChildFrames(win)) {\n try {\n if (frame.top) {\n return frame.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(frame) === frame) {\n return frame;\n }\n }\n}\n\nexport function getAllFramesInWindow(win : CrossDomainWindowType) : Array {\n let top = getTop(win);\n // $FlowFixMe\n return getAllChildFrames(top).concat(top);\n}\n\nexport function isTop(win : CrossDomainWindowType) : boolean {\n return win === getTop(win);\n}\n\nexport function isFrameWindowClosed(frame : HTMLIFrameElement) : boolean {\n\n if (!frame.contentWindow) {\n return true;\n }\n\n if (!frame.parentNode) {\n return true;\n }\n\n let doc = frame.ownerDocument;\n\n if (doc && doc.body && !doc.body.contains(frame)) {\n return true;\n }\n\n return false;\n}\n\nfunction safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nlet iframeWindows = [];\nlet iframeFrames = [];\n\nexport function isWindowClosed(win : CrossDomainWindowType, allowMock : boolean = true) : boolean {\n\n try {\n if (win === window) {\n return false;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (!win) {\n return true;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (win.closed) {\n return true;\n }\n\n } catch (err) {\n\n // I love you so much IE\n\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return false;\n }\n\n return true;\n }\n\n\n if (allowMock && isSameDomain(win)) {\n try {\n if (win.mockclosed) {\n return true;\n }\n } catch (err) {\n // pass\n }\n }\n\n // Mobile safari\n\n try {\n if (!win.parent || !win.top) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n // Yes, this actually happens in IE. win === win errors out when the window\n // is from an iframe, and the iframe was removed from the page.\n\n try {\n noop(win === win); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n // IE orphaned frame\n\n let iframeIndex = safeIndexOf(iframeWindows, win);\n\n if (iframeIndex !== -1) {\n let frame = iframeFrames[iframeIndex];\n\n if (frame && isFrameWindowClosed(frame)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction cleanIframes() {\n\n for (let i = 0; i < iframeFrames.length; i++) {\n if (isFrameWindowClosed(iframeFrames[i])) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n\n for (let i = 0; i < iframeWindows.length; i++) {\n if (isWindowClosed(iframeWindows[i])) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n}\n\nexport function linkFrameWindow(frame : HTMLIFrameElement) {\n\n cleanIframes();\n\n if (frame && frame.contentWindow) {\n try {\n iframeWindows.push(frame.contentWindow);\n iframeFrames.push(frame);\n } catch (err) {\n // pass\n }\n }\n}\n\nexport function getUserAgent(win : ?SameDomainWindowType) : string {\n win = win || window;\n return win.navigator.mockUserAgent || win.navigator.userAgent;\n}\n\n\nexport function getFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let winFrames = getFrames(win);\n\n for (let childFrame of winFrames) {\n try {\n if (isSameDomain(childFrame) && childFrame.name === name && winFrames.indexOf(childFrame) !== -1) {\n return childFrame;\n }\n } catch (err) {\n // pass\n }\n }\n\n try {\n // $FlowFixMe\n if (winFrames.indexOf(win.frames[name]) !== -1) {\n // $FlowFixMe\n return win.frames[name];\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (winFrames.indexOf(win[name]) !== -1) {\n return win[name];\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function findChildFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n for (let childFrame of getFrames(win)) {\n let namedFrame = findChildFrameByName(childFrame, name);\n\n if (namedFrame) {\n return namedFrame;\n }\n }\n}\n\nexport function findFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame;\n\n frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n let top = getTop(win) || win;\n\n return findChildFrameByName(top, name);\n}\n\nexport function isParent(win : CrossDomainWindowType, frame : CrossDomainWindowType) : boolean {\n\n let frameParent = getParent(frame);\n\n if (frameParent) {\n return frameParent === win;\n }\n\n for (let childFrame of getFrames(win)) {\n if (childFrame === frame) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isOpener(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n return parent === getOpener(child);\n}\n\nexport function getAncestor(win : ?CrossDomainWindowType) : ?CrossDomainWindowType {\n win = win || window;\n\n let opener = getOpener(win);\n\n if (opener) {\n return opener;\n }\n\n let parent = getParent(win);\n\n if (parent) {\n return parent;\n }\n}\n\nexport function getAncestors(win : CrossDomainWindowType) : Array {\n\n let results = [];\n\n let ancestor = win;\n\n while (ancestor) {\n ancestor = getAncestor(ancestor);\n if (ancestor) {\n results.push(ancestor);\n }\n }\n\n return results;\n}\n\n\nexport function isAncestor(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n let actualParent = getAncestor(child);\n\n if (actualParent) {\n if (actualParent === parent) {\n return true;\n }\n\n return false;\n }\n\n if (child === parent) {\n return false;\n }\n\n if (getTop(child) === child) {\n return false;\n }\n\n for (let frame of getFrames(parent)) {\n if (frame === child) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isPopup() : boolean {\n return Boolean(getOpener(window));\n}\n\nexport function isIframe() : boolean {\n return Boolean(getParent(window));\n}\n\nexport function isFullpage() : boolean {\n return Boolean(!isIframe() && !isPopup());\n}\n\nfunction anyMatch(collection1, collection2) : boolean {\n\n for (let item1 of collection1) {\n for (let item2 of collection2) {\n if (item1 === item2) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function getDistanceFromTop(win : CrossDomainWindowType = window) : number {\n let distance = 0;\n let parent = win;\n\n while (parent) {\n parent = getParent(parent);\n if (parent) {\n distance += 1;\n }\n }\n\n return distance;\n}\n\nexport function getNthParent(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n let parent = win;\n\n for (let i = 0; i < n; i++) {\n if (!parent) {\n return;\n }\n\n parent = getParent(parent);\n }\n\n return parent;\n}\n\nexport function getNthParentFromTop(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n return getNthParent(win, getDistanceFromTop(win) - n);\n}\n\nexport function isSameTopWindow(win1 : CrossDomainWindowType, win2 : CrossDomainWindowType) : boolean {\n\n let top1 = getTop(win1) || win1;\n let top2 = getTop(win2) || win2;\n\n try {\n if (top1 && top2) {\n if (top1 === top2) {\n return true;\n }\n\n return false;\n }\n } catch (err) {\n // pass\n }\n\n let allFrames1 = getAllFramesInWindow(win1);\n let allFrames2 = getAllFramesInWindow(win2);\n\n if (anyMatch(allFrames1, allFrames2)) {\n return true;\n }\n\n let opener1 = getOpener(top1);\n let opener2 = getOpener(top2);\n\n if (opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2)) {\n return false;\n }\n\n if (opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1)) {\n return false;\n }\n\n return false;\n}\n\nexport function matchDomain(pattern : (string | Array | RegExp), origin : (string | Array | RegExp)) : boolean {\n\n if (typeof pattern === 'string') {\n\n if (typeof origin === 'string') {\n return pattern === CONSTANTS.WILDCARD || origin === pattern;\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n }\n\n if (isRegex(pattern)) {\n\n if (isRegex(origin)) {\n return pattern.toString() === origin.toString();\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n\n // $FlowFixMe\n return Boolean(origin.match(pattern));\n }\n\n if (Array.isArray(pattern)) {\n\n if (Array.isArray(origin)) {\n return JSON.stringify(pattern) === JSON.stringify(origin);\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n return pattern.some(subpattern => matchDomain(subpattern, origin));\n }\n\n return false;\n}\n\nexport function getDomainFromUrl(url : string) : string {\n\n let domain;\n\n if (url.match(/^(https?|mock|file):\\/\\//)) {\n domain = url;\n } else {\n return getDomain();\n }\n\n domain = domain.split('/').slice(0, 3).join('/');\n\n return domain;\n}\n\nexport function onCloseWindow(win : CrossDomainWindowType, callback : Function, delay : number = 1000, maxtime : number = Infinity) : { cancel : () => void } {\n\n let timeout;\n\n let check = () => {\n\n if (isWindowClosed(win)) {\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n return callback();\n }\n\n if (maxtime <= 0) {\n clearTimeout(timeout);\n } else {\n maxtime -= delay;\n timeout = setTimeout(check, delay);\n }\n };\n\n check();\n\n return {\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n };\n}\n\nexport function isWindow(obj : Object) : boolean {\n\n try {\n if (obj === window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (Object.prototype.toString.call(obj) === '[object Window]') {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (window.Window && obj instanceof window.Window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.self === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.parent === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.top === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n noop(obj === obj); // eslint-disable-line no-self-compare\n\n } catch (err) {\n return true;\n }\n\n try {\n noop(obj && obj.__cross_domain_utils_window_check__);\n\n } catch (err) {\n return true;\n }\n\n return false;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/cross-domain-utils/src/index.js","/* @flow */\n\nimport { CONSTANTS } from './conf';\n\nexport let global : Object = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n\n// Backwards compatibility\n\nglobal.registerSelf = () => {\n // pass\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/global.js","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { isPopup, isIframe } from 'cross-domain-utils/src';\nimport { CONSTANTS } from '../conf';\n\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${message}\\n${stack}`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) {\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let once = (method : Function) : ((...args : Array) => T | void) => {\n if (!method) {\n return method;\n }\n let called = false;\n return function onceWrapper() : T | void {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n};\n\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function addEventListener(obj : Object, event : string, handler : Function) : { cancel : () => void } {\n if (obj.addEventListener) {\n obj.addEventListener(event, handler);\n } else {\n obj.attachEvent(`on${event}`, handler);\n }\n\n return {\n cancel() {\n if (obj.removeEventListener) {\n obj.removeEventListener(event, handler);\n } else {\n obj.detachEvent(`on${event}`, handler);\n }\n }\n };\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\ntype MixedArrayType = Array;\n\nexport function eachArray(item : MixedArrayType, callback : (item : mixed, key : number) => mixed) {\n for (let i = 0; i < item.length; i++) {\n callback(item[i], i);\n }\n}\n\nexport function eachObject(item : Object, callback : (item : mixed, key : string) => mixed) {\n for (let key in item) {\n if (item.hasOwnProperty(key)) {\n callback(item[key], key);\n }\n }\n}\n\nexport function each(item : T, callback : (item : mixed, key : number | string) => mixed) {\n if (Array.isArray(item)) {\n eachArray(item, callback);\n } else if (typeof item === 'object' && item !== null) {\n eachObject(item, callback);\n }\n}\n\nexport function replaceObject(item : T, callback : (item : mixed, key : number | string) => mixed, depth : number = 1) : T {\n\n if (depth >= 100) {\n throw new Error(`Self-referential object passed, or object contained too many layers`);\n }\n\n let newobj;\n\n if (typeof item === 'object' && item !== null && !Array.isArray(item)) {\n newobj = {};\n } else if (Array.isArray(item)) {\n newobj = [];\n } else {\n throw new Error(`Invalid type: ${typeof item}`);\n }\n\n each(item, (childItem, key) => {\n\n let result = callback(childItem, key);\n\n if (typeof result !== 'undefined') {\n // $FlowFixMe\n newobj[key] = result;\n } else if (typeof childItem === 'object' && childItem !== null) {\n // $FlowFixMe\n newobj[key] = replaceObject(childItem, callback, depth + 1);\n } else {\n // $FlowFixMe\n newobj[key] = childItem;\n }\n });\n\n // $FlowFixMe\n return newobj;\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function(arg : any) : R {\n let result = weakmap.get(arg);\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n result = method.call(this, arg);\n\n if (typeof result !== 'undefined') {\n weakmap.set(arg, result);\n }\n\n return result;\n };\n};\n\nexport function getWindowType() : string {\n if (isPopup()) {\n return CONSTANTS.WINDOW_TYPES.POPUP;\n }\n if (isIframe()) {\n return CONSTANTS.WINDOW_TYPES.IFRAME;\n }\n return CONSTANTS.WINDOW_TYPES.FULLPAGE;\n}\n\nexport function jsonStringify(obj : T, replacer : ?Function, indent : number | void) : string {\n\n let objectToJSON;\n let arrayToJSON;\n\n try {\n if (JSON.stringify({}) !== '{}') {\n // $FlowFixMe\n objectToJSON = Object.prototype.toJSON;\n // $FlowFixMe\n delete Object.prototype.toJSON;\n }\n\n if (JSON.stringify({}) !== '{}') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n arrayToJSON = Array.prototype.toJSON;\n // $FlowFixMe\n delete Array.prototype.toJSON;\n }\n\n if (JSON.stringify([]) !== '[]') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${err.message}`);\n }\n\n let result = JSON.stringify.call(this, obj, replacer, indent);\n\n try {\n if (objectToJSON) {\n // $FlowFixMe\n Object.prototype.toJSON = objectToJSON; // eslint-disable-line\n }\n\n if (arrayToJSON) {\n // $FlowFixMe\n Array.prototype.toJSON = arrayToJSON; // eslint-disable-line\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${err.message}`);\n }\n\n\n return result;\n}\n\nexport function jsonParse(item : string) : mixed {\n return JSON.parse(item);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/util.js","/* @flow */\n\nimport { initOnReady, listenForMethods } from './lib';\nimport { listenForMessages } from './drivers';\nimport { global } from './global';\nimport { on, send } from './public';\n\n// #if __IE_POPUP_SUPPORT__\nimport * as popupBridge from './bridge/interface';\n// #endif\n\nexport * from './public';\nexport { cleanUpWindow } from './clean';\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport let bridge = __IE_POPUP_SUPPORT__ ? popupBridge : null;\n\nexport function init() {\n if (!global.initialized) {\n listenForMessages();\n\n if (__IE_POPUP_SUPPORT__) {\n require('./bridge').openTunnelToOpener();\n }\n\n initOnReady();\n listenForMethods({ on, send });\n }\n\n global.initialized = true;\n}\n\ninit();\n\n\n// WEBPACK FOOTER //\n// ./src/interface.js","/* @flow */\n\nimport { getWindowType, jsonStringify } from './util';\nimport { CONFIG } from '../conf';\n\nconst LOG_LEVELS = ['debug', 'info', 'warn', 'error'];\n\nif (Function.prototype.bind && window.console && typeof console.log === 'object') {\n [ 'log', 'info', 'warn', 'error' ].forEach(function(method) {\n // $FlowFixMe\n console[method] = this.bind(console[method], console);\n }, Function.prototype.call);\n}\n\nexport let log = {\n\n clearLogs() {\n\n if (window.console && window.console.clear) {\n window.console.clear();\n }\n\n if (CONFIG.LOG_TO_PAGE) {\n let container = document.getElementById('postRobotLogs');\n\n if (container && container.parentNode) {\n container.parentNode.removeChild(container);\n }\n }\n },\n\n writeToPage(level : string, args : Array) {\n setTimeout(() => {\n let container = document.getElementById('postRobotLogs');\n\n if (!container) {\n container = document.createElement('div');\n container.id = 'postRobotLogs';\n container.style.cssText = 'width: 800px; font-family: monospace; white-space: pre-wrap;';\n if (document.body) {\n document.body.appendChild(container);\n }\n }\n\n let el = document.createElement('div');\n\n let date = (new Date()).toString().split(' ')[4];\n\n let payload = Array.prototype.slice.call(args).map(item => {\n if (typeof item === 'string') {\n return item;\n }\n if (!item) {\n return Object.prototype.toString.call(item);\n }\n let json;\n try {\n json = jsonStringify(item, null, 2);\n } catch (e) {\n json = '[object]';\n }\n\n return `\\n\\n${json}\\n\\n`;\n }).join(' ');\n\n\n let msg = `${date} ${level} ${payload}`;\n el.innerHTML = msg;\n\n let color = {\n log: '#ddd',\n warn: 'orange',\n error: 'red',\n info: 'blue',\n debug: '#aaa'\n }[level];\n\n el.style.cssText = `margin-top: 10px; color: ${color};`;\n\n if (!container.childNodes.length) {\n container.appendChild(el);\n } else {\n container.insertBefore(el, container.childNodes[0]);\n }\n\n });\n },\n\n logLevel(level : string, args : Array) {\n setTimeout(() => {\n try {\n let logLevel = window.LOG_LEVEL || CONFIG.LOG_LEVEL;\n\n if (LOG_LEVELS.indexOf(level) < LOG_LEVELS.indexOf(logLevel)) {\n return;\n }\n\n args = Array.prototype.slice.call(args);\n\n args.unshift(`${window.location.host}${window.location.pathname}`);\n args.unshift(`::`);\n args.unshift(`${getWindowType().toLowerCase()}`);\n args.unshift('[post-robot]');\n\n if (CONFIG.LOG_TO_PAGE) {\n log.writeToPage(level, args);\n }\n\n if (!window.console) {\n return;\n }\n\n if (!window.console[level]) {\n level = 'log';\n }\n\n if (!window.console[level]) {\n return;\n }\n\n window.console[level].apply(window.console, args);\n\n } catch (err) {\n // pass\n }\n }, 1);\n },\n\n debug(...args : Array) {\n log.logLevel('debug', args);\n },\n\n info(...args : Array) {\n log.logLevel('info', args);\n },\n\n warn(...args : Array) {\n log.logLevel('warn', args);\n },\n\n error(...args : Array) {\n log.logLevel('error', args);\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/log.js","/* @flow */\n\nexport let CONSTANTS = {\n\n POST_MESSAGE_TYPE: {\n REQUEST: 'postrobot_message_request',\n RESPONSE: 'postrobot_message_response',\n ACK: 'postrobot_message_ack'\n },\n\n POST_MESSAGE_ACK: {\n SUCCESS: 'success',\n ERROR: 'error'\n },\n\n POST_MESSAGE_NAMES: {\n METHOD: 'postrobot_method',\n READY: 'postrobot_ready',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n },\n\n WINDOW_TYPES: {\n FULLPAGE: 'fullpage',\n POPUP: 'popup',\n IFRAME: 'iframe'\n },\n\n WINDOW_PROPS: {\n POSTROBOT: '__postRobot__'\n },\n\n SERIALIZATION_TYPES: {\n METHOD: 'postrobot_method',\n ERROR: 'postrobot_error',\n PROMISE: 'postrobot_promise',\n ZALGO_PROMISE: 'postrobot_zalgo_promise',\n REGEX: 'regex'\n },\n\n SEND_STRATEGIES: {\n POST_MESSAGE: 'postrobot_post_message',\n BRIDGE: 'postrobot_bridge',\n GLOBAL: 'postrobot_global'\n },\n\n MOCK_PROTOCOL: 'mock:',\n FILE_PROTOCOL: 'file:',\n\n BRIDGE_NAME_PREFIX: '__postrobot_bridge__',\n POSTROBOT_PROXY: '__postrobot_proxy__',\n\n WILDCARD: '*'\n};\n\nexport let POST_MESSAGE_NAMES_LIST = Object.keys(CONSTANTS.POST_MESSAGE_NAMES).map(key => CONSTANTS.POST_MESSAGE_NAMES[key]);\n\n\n\n// WEBPACK FOOTER //\n// ./src/conf/constants.js","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain } from 'cross-domain-utils/src';\n\nimport { global } from '../global';\nimport { isRegex } from '../lib';\nimport { CONSTANTS } from '../conf';\n\nexport function resetListeners() {\n global.responseListeners = {};\n global.requestListeners = {};\n}\n\nglobal.responseListeners = global.responseListeners || {};\nglobal.requestListeners = global.requestListeners || {};\nglobal.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new (function WindowWildcard() { /* pass */ });\n\nglobal.erroredResponseListeners = global.erroredResponseListeners || {};\n\nconst __DOMAIN_REGEX__ = '__domain_regex__';\n\nexport type RequestListenerType = {\n handler : ({ source : CrossDomainWindowType, origin : string, data : Object }) => (mixed | ZalgoPromise),\n handleError : (err : mixed) => void,\n window : ?CrossDomainWindowType,\n name : string,\n domain : string | RegExp | Array\n};\n\nexport type ResponseListenerType = {\n name : string,\n window : CrossDomainWindowType,\n domain : string,\n respond : (err : ?mixed, result : ?Object) => void,\n ack? : ?boolean\n};\n\nexport function addResponseListener(hash : string, listener : ResponseListenerType) {\n global.responseListeners[hash] = listener;\n}\n\nexport function getResponseListener(hash : string) : ResponseListenerType {\n return global.responseListeners[hash];\n}\n\nexport function deleteResponseListener(hash : string) {\n delete global.responseListeners[hash];\n}\n\nexport function markResponseListenerErrored(hash : string) {\n global.erroredResponseListeners[hash] = true;\n}\n\nexport function isResponseListenerErrored(hash : string) : boolean {\n return Boolean(global.erroredResponseListeners[hash]);\n}\n\nexport function getRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp) }) : ?RequestListenerType {\n\n if (win === CONSTANTS.WILDCARD) {\n win = null;\n }\n\n if (domain === CONSTANTS.WILDCARD) {\n domain = null;\n }\n\n if (!name) {\n throw new Error(`Name required to get request listener`);\n }\n\n let nameListeners = global.requestListeners[name];\n\n if (!nameListeners) {\n return;\n }\n\n for (let winQualifier of [ win, global.WINDOW_WILDCARD ]) {\n\n let winListeners = winQualifier && nameListeners.get(winQualifier);\n\n if (!winListeners) {\n continue;\n }\n\n if (domain && typeof domain === 'string') {\n if (winListeners[domain]) {\n return winListeners[domain];\n }\n\n if (winListeners[__DOMAIN_REGEX__]) {\n for (let { regex, listener } of winListeners[__DOMAIN_REGEX__]) {\n if (matchDomain(regex, domain)) {\n return listener;\n }\n }\n }\n }\n\n if (winListeners[CONSTANTS.WILDCARD]) {\n return winListeners[CONSTANTS.WILDCARD];\n }\n }\n}\n\nexport function addRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp | Array) }, listener : RequestListenerType) : { cancel : () => void } {\n\n if (!name || typeof name !== 'string') {\n throw new Error(`Name required to add request listener`);\n }\n\n if (Array.isArray(win)) {\n let listenersCollection = [];\n\n for (let item of win) {\n listenersCollection.push(addRequestListener({ name, domain, win: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n if (Array.isArray(domain)) {\n let listenersCollection = [];\n\n for (let item of domain) {\n listenersCollection.push(addRequestListener({ name, win, domain: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n let existingListener = getRequestListener({ name, win, domain });\n\n if (!win || win === CONSTANTS.WILDCARD) {\n win = global.WINDOW_WILDCARD;\n }\n\n domain = domain || CONSTANTS.WILDCARD;\n\n if (existingListener) {\n if (win && domain) {\n throw new Error(`Request listener already exists for ${name} on domain ${domain.toString()} for ${win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (win) {\n throw new Error(`Request listener already exists for ${name} for ${win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (domain) {\n throw new Error(`Request listener already exists for ${name} on domain ${domain.toString()}`);\n } else {\n throw new Error(`Request listener already exists for ${name}`);\n }\n }\n\n let requestListeners = global.requestListeners;\n\n let nameListeners = requestListeners[name];\n\n if (!nameListeners) {\n nameListeners = new WeakMap();\n requestListeners[name] = nameListeners;\n }\n\n let winListeners = nameListeners.get(win);\n\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n\n let strDomain = domain.toString();\n\n let regexListeners = winListeners[__DOMAIN_REGEX__];\n let regexListener;\n\n if (isRegex(domain)) {\n\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n\n regexListener = { regex: domain, listener };\n\n regexListeners.push(regexListener);\n\n } else {\n winListeners[strDomain] = listener;\n }\n\n return {\n cancel() {\n if (!winListeners) {\n return;\n }\n\n delete winListeners[strDomain];\n\n if (win && Object.keys(winListeners).length === 0) {\n nameListeners.delete(win);\n }\n\n if (regexListener) {\n regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/drivers/listeners.js","/* @flow */\n\nimport { getDomain, isWindowClosed } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS, CONFIG, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { uniqueID, serializeMethods, log, getWindowType, jsonStringify, stringifyError } from '../../lib';\n\nimport { SEND_MESSAGE_STRATEGIES } from './strategies';\n\n\nfunction buildMessage(win : CrossDomainWindowType, message : Object, options = {}) : Object {\n\n let id = uniqueID();\n let type = getWindowType();\n let sourceDomain = getDomain(window);\n\n return {\n ...message,\n ...options,\n sourceDomain,\n id: message.id || id,\n windowType: type\n };\n}\n\n\nexport function sendMessage(win : CrossDomainWindowType, message : Object, domain : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n message = buildMessage(win, message, {\n data: serializeMethods(win, domain, message.data),\n domain\n });\n\n let level;\n\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n log.logLevel(level, [ '\\n\\n\\t', '#send', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', domain || CONSTANTS.WILDCARD, '\\n\\n', message ]);\n\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) {\n throw new Error('Attemping to send message to self');\n }\n\n if (isWindowClosed(win)) {\n throw new Error('Window is closed');\n }\n\n log.debug('Running send message strategies', message);\n\n let messages = [];\n\n let serializedMessage = jsonStringify({\n [ CONSTANTS.WINDOW_PROPS.POSTROBOT ]: message\n }, null, 2);\n\n return ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), strategyName => {\n\n return ZalgoPromise.try(() => {\n\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) {\n throw new Error(`Strategy disallowed: ${strategyName}`);\n }\n\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n\n }).then(() => {\n messages.push(`${strategyName}: success`);\n return true;\n }, err => {\n messages.push(`${strategyName}: ${stringifyError(err)}\\n`);\n return false;\n });\n\n }).then(results => {\n\n let success = results.some(Boolean);\n let status = `${message.type} ${message.name} ${success ? 'success' : 'error'}:\\n - ${messages.join('\\n - ')}\\n`;\n\n log.debug(status);\n\n if (!success) {\n throw new Error(status);\n }\n });\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/drivers/send/index.js","/* @flow */\n\nimport { getAncestor } from 'cross-domain-utils/src';\n\nexport * from './client';\nexport * from './server';\nexport * from './config';\n\nexport let parent = getAncestor();\n\n\n\n// WEBPACK FOOTER //\n// ./src/public/index.js","/* @flow */\n\nexport function hasNativeWeakMap() {\n\n if (!window.WeakMap) {\n return false;\n }\n\n if (!window.Object.freeze) {\n return false;\n }\n\n try {\n\n let testWeakMap = new window.WeakMap();\n let testKey = {};\n let testValue = '__testvalue__';\n\n window.Object.freeze(testKey);\n\n testWeakMap.set(testKey, testValue);\n\n if (testWeakMap.get(testKey) === testValue) {\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/cross-domain-safe-weakmap/src/native.js","/* @flow */\n\nexport function safeIndexOf(collection : Array, item : T) {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nexport function noop(...args : Array) {\n // pass\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/cross-domain-safe-weakmap/src/util.js","/* @flow */\n\nimport { isWindow, isWindowClosed } from 'cross-domain-utils/src';\n\nimport { hasNativeWeakMap } from './native';\nimport { noop, safeIndexOf } from './util';\n\nlet defineProperty = Object.defineProperty;\nlet counter = Date.now() % 1e9;\n\nexport class CrossDomainSafeWeakMap {\n\n name : string\n weakmap : WeakMap\n keys : Array\n values : Array\n\n constructor() {\n counter += 1;\n this.name = `__weakmap_${Math.random() * 1e9 >>> 0}__${counter}`; // eslint-disable-line\n\n if (hasNativeWeakMap()) {\n try {\n this.weakmap = new window.WeakMap();\n } catch (err) {\n // pass\n }\n }\n\n this.keys = [];\n this.values = [];\n }\n\n _cleanupClosedWindows() {\n\n let weakmap = this.weakmap;\n let keys = this.keys;\n\n for (let i = 0; i < keys.length; i++) {\n let value = keys[i];\n\n if (isWindow(value) && isWindowClosed(value)) {\n\n if (weakmap) {\n try {\n weakmap.delete(value);\n } catch (err) {\n // pass\n }\n }\n\n keys.splice(i, 1);\n this.values.splice(i, 1);\n\n i -= 1;\n }\n }\n }\n\n isSafeToReadWrite(key : K) : boolean {\n\n if (isWindow(key)) {\n return false;\n }\n\n try {\n noop(key && key.self);\n noop(key && key[this.name]);\n } catch (err) {\n return false;\n }\n\n return true;\n }\n\n set(key : K, value : V) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (!this.isSafeToReadWrite(key)) {\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let values = this.values;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n\n } else {\n\n let name = this.name;\n let entry = key[name];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n } else {\n defineProperty(key, name, {\n value: [ key, value ],\n writable: true\n });\n }\n }\n }\n\n get(key : K) : V | void {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return weakmap.get(key);\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (!this.isSafeToReadWrite(key)) {\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n return;\n }\n\n return this.values[index];\n\n } else {\n\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n }\n }\n\n delete(key : K) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (!this.isSafeToReadWrite(key)) {\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index !== -1) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n\n } else {\n\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n entry[0] = entry[1] = undefined;\n }\n }\n }\n\n has(key : K) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n return weakmap.has(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (!this.isSafeToReadWrite(key)) {\n\n this._cleanupClosedWindows();\n\n let index = safeIndexOf(this.keys, key);\n return index !== -1;\n\n } else {\n\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/cross-domain-safe-weakmap/src/weakmap.js","// @flow\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\nexport function noop(...args : Array) {\n // pass\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/cross-domain-utils/src/util.js","\nlet possiblyUnhandledPromiseHandlers = [];\nlet dispatchedErrors = [];\n\nexport function dispatchPossiblyUnhandledError(err) {\n\n if (dispatchedErrors.indexOf(err) !== -1) {\n return;\n }\n\n dispatchedErrors.push(err);\n\n setTimeout(() => {\n throw err;\n }, 1);\n\n for (let j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) {\n possiblyUnhandledPromiseHandlers[j](err);\n }\n}\n\nexport function onPossiblyUnhandledException(handler) {\n possiblyUnhandledPromiseHandlers.push(handler);\n\n return {\n cancel() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/zalgo-promise/src/exceptions.js","/* @flow */\n\nimport { isPromise } from './utils';\nimport { onPossiblyUnhandledException, dispatchPossiblyUnhandledError } from './exceptions';\n\nlet global = window.__zalgopromise__ = window.__zalgopromise__ || {\n flushPromises: [],\n activeCount: 0\n};\n\nexport class ZalgoPromise {\n\n resolved : boolean\n rejected : boolean\n errorHandled : boolean\n value : R\n error : mixed\n handlers : Array<{\n promise : ZalgoPromise<*>,\n onSuccess : void | (result : R) => mixed,\n onError : void | (error : mixed) => mixed\n }>\n dispatching : boolean\n\n constructor(handler : ?(resolve : (result : R) => void, reject : (error : mixed) => void) => void) {\n\n this.resolved = false;\n this.rejected = false;\n this.errorHandled = false;\n\n this.handlers = [];\n\n if (handler) {\n\n let result;\n let error;\n let resolved = false;\n let rejected = false;\n let isAsync = false;\n\n try {\n handler(res => {\n if (isAsync) {\n this.resolve(res);\n } else {\n resolved = true;\n result = res;\n }\n\n }, err => {\n if (isAsync) {\n this.reject(err);\n } else {\n rejected = true;\n error = err;\n }\n });\n\n } catch (err) {\n this.reject(err);\n return;\n }\n\n isAsync = true;\n\n if (resolved) {\n // $FlowFixMe\n this.resolve(result);\n } else if (rejected) {\n this.reject(error);\n }\n }\n }\n\n resolve(result : R) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(result)) {\n throw new Error('Can not resolve promise with another promise');\n }\n\n this.resolved = true;\n this.value = result;\n this.dispatch();\n\n return this;\n }\n\n reject(error : mixed) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(error)) {\n throw new Error('Can not reject promise with another promise');\n }\n\n if (!error) {\n let err = (error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error));\n error = new Error(`Expected reject to be called with Error, got ${err}`);\n }\n\n this.rejected = true;\n this.error = error;\n\n if (!this.errorHandled) {\n setTimeout(() => {\n if (!this.errorHandled) {\n dispatchPossiblyUnhandledError(error);\n }\n }, 1);\n }\n\n this.dispatch();\n\n return this;\n }\n\n asyncReject(error : mixed) {\n this.errorHandled = true;\n this.reject(error);\n }\n\n dispatch() {\n\n let { dispatching, resolved, rejected, handlers } = this;\n\n if (dispatching) {\n return;\n }\n\n if (!resolved && !rejected) {\n return;\n }\n\n this.dispatching = true;\n global.activeCount += 1;\n\n for (let i = 0; i < handlers.length; i++) {\n\n let { onSuccess, onError, promise } = handlers[i];\n\n let result;\n\n if (resolved) {\n\n try {\n result = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n }\n\n } else if (rejected) {\n\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n\n try {\n result = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n result.errorHandled = true;\n\n } else if (isPromise(result)) {\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n } else {\n // $FlowFixMe\n result.then(res => { promise.resolve(res); },\n err => { promise.reject(err); });\n }\n\n } else {\n\n promise.resolve(result);\n }\n }\n\n handlers.length = 0;\n this.dispatching = false;\n global.activeCount -= 1;\n\n if (global.activeCount === 0) {\n ZalgoPromise.flushQueue();\n }\n }\n\n then(onSuccess : void | (result : R) => (ZalgoPromise | X), onError : void | (error : mixed) => (ZalgoPromise | X)) : ZalgoPromise {\n\n if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {\n throw new Error('Promise.then expected a function for success handler');\n }\n\n if (onError && typeof onError !== 'function' && !onError.call) {\n throw new Error('Promise.then expected a function for error handler');\n }\n\n let promise : ZalgoPromise = new ZalgoPromise();\n\n this.handlers.push({\n promise,\n onSuccess,\n onError\n });\n\n this.errorHandled = true;\n\n this.dispatch();\n\n return promise;\n }\n\n catch(onError : (error : mixed) => X | ZalgoPromise) : ZalgoPromise {\n return this.then(undefined, onError);\n }\n\n finally(handler : () => mixed) : ZalgoPromise {\n return this.then((result) => {\n return ZalgoPromise.try(handler)\n .then(() => {\n return result;\n });\n }, (err) => {\n return ZalgoPromise.try(handler)\n .then(() => {\n throw err;\n });\n });\n }\n\n timeout(time : number, err : ?Error) : ZalgoPromise {\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n let timeout = setTimeout(() => {\n\n if (this.resolved || this.rejected) {\n return;\n }\n\n this.reject(err || new Error(`Promise timed out after ${time}ms`));\n\n }, time);\n\n return this.then(result => {\n clearTimeout(timeout);\n return result;\n });\n }\n\n toPromise() : Promise {\n if (!window.Promise) {\n throw new Error(`Could not find window.Promise`);\n }\n return window.Promise.resolve(this);\n }\n\n static resolve(value : X | ZalgoPromise) : ZalgoPromise {\n\n if (value instanceof ZalgoPromise) {\n return value;\n }\n\n if (isPromise(value)) {\n // $FlowFixMe\n return new ZalgoPromise((resolve, reject) => value.then(resolve, reject));\n }\n\n return new ZalgoPromise().resolve(value);\n }\n\n static reject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().reject(error);\n }\n\n static all>(promises : X) : ZalgoPromise<$TupleMap(ZalgoPromise | Y) => Y>> {\n\n let promise = new ZalgoPromise();\n let count = promises.length;\n let results = [];\n\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n\n for (let i = 0; i < promises.length; i++) {\n let prom = promises[i];\n\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n\n ZalgoPromise.resolve(prom).then(result => {\n results[i] = result;\n count -= 1;\n if (count === 0) {\n promise.resolve(results);\n }\n }, err => {\n promise.reject(err);\n });\n }\n\n if (count === 0) {\n promise.resolve(results);\n }\n\n return promise;\n }\n\n static hash) }>(promises : O) : ZalgoPromise<$ObjMap(ZalgoPromise | Y) => Y>> {\n let result = {};\n \n return ZalgoPromise.all(Object.keys(promises).map(key => {\n return ZalgoPromise.resolve(promises[key]).then(value => {\n result[key] = value;\n });\n })).then(() => {\n return result;\n });\n }\n\n static map(items : Array, method : (T) => (ZalgoPromise | X)) : ZalgoPromise> {\n // $FlowFixMe\n return ZalgoPromise.all(items.map(method));\n }\n\n static onPossiblyUnhandledException(handler : (err : mixed) => mixed) : { cancel : () => void } {\n return onPossiblyUnhandledException(handler);\n }\n\n static try>(method : (...args : A) => (ZalgoPromise | X), context : ?C, args : ?A) : ZalgoPromise {\n\n let result;\n \n try {\n // $FlowFixMe\n result = method.apply(context, args || []);\n } catch (err) {\n return ZalgoPromise.reject(err);\n }\n\n return ZalgoPromise.resolve(result);\n }\n\n static delay(delay : number) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, delay);\n });\n }\n\n static isPromise(value : mixed) : boolean {\n\n if (value && value instanceof ZalgoPromise) {\n return true;\n }\n\n return isPromise(value);\n }\n\n static flush() : ZalgoPromise {\n let promise = new ZalgoPromise();\n global.flushPromises.push(promise);\n\n if (global.activeCount === 0) {\n ZalgoPromise.flushQueue();\n }\n\n return promise;\n }\n\n static flushQueue() {\n let promisesToFlush = global.flushPromises;\n global.flushPromises = [];\n\n for (let promise of promisesToFlush) {\n promise.resolve();\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/zalgo-promise/src/promise.js","\nlet toString = ({}).toString;\n\nexport function isPromise(item) {\n try {\n if (!item) {\n return false;\n }\n\n if (window.Promise && item instanceof window.Promise) {\n return true;\n }\n\n if (window.Window && item instanceof window.Window) {\n return false;\n }\n\n if (window.constructor && item instanceof window.constructor) {\n return false;\n }\n\n if (toString) {\n let name = toString.call(item);\n\n if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {\n return false;\n }\n }\n\n if (typeof item.then === 'function') {\n return true;\n }\n } catch (err) {\n return false;\n }\n\n return false;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/zalgo-promise/src/utils.js","/* @flow */\n\nimport { global } from './global';\n\nexport function cleanUpWindow(win : CrossDomainWindowType) {\n\n // global.tunnelWindows\n // global.bridges\n // global.popupWindowsByName\n // global.responseListeners\n // global.requestListeners\n\n let requestPromises = global.requestPromises.get(win);\n\n if (requestPromises) {\n for (let promise of requestPromises) {\n promise.reject(new Error(`No response from window - cleaned up`));\n }\n }\n\n if (global.popupWindowsByWin) {\n global.popupWindowsByWin.delete(win);\n }\n\n if (global.remoteWindows) {\n global.remoteWindows.delete(win);\n }\n\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/clean.js","/* @flow */\n\nimport { CONSTANTS } from './constants';\n\nexport let CONFIG : Object = {\n\n ALLOW_POSTMESSAGE_POPUP: ('__ALLOW_POSTMESSAGE_POPUP__' in window)\n ? window.__ALLOW_POSTMESSAGE_POPUP__\n : __ALLOW_POSTMESSAGE_POPUP__,\n\n LOG_LEVEL: 'info',\n\n BRIDGE_TIMEOUT: 5000,\n CHILD_WINDOW_TIMEOUT: 5000,\n\n ACK_TIMEOUT: (window.navigator.userAgent.match(/MSIE/i) !== -1 && !__TEST__) ? 2000 : 1000,\n RES_TIMEOUT: __TEST__ ? 2000 : Infinity,\n\n LOG_TO_PAGE: false,\n\n ALLOWED_POST_MESSAGE_METHODS: {\n [ CONSTANTS.SEND_STRATEGIES.POST_MESSAGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.BRIDGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.GLOBAL ]: true\n },\n\n ALLOW_SAME_ORIGIN: false\n};\n\nif (window.location.href.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n CONFIG.ALLOW_POSTMESSAGE_POPUP = true;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/conf/config.js","/* @flow */\n\nimport { isWindowClosed } from 'cross-domain-utils/src';\n\nimport { CONSTANTS, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { deserializeMethods, log, jsonParse, addEventListener } from '../../lib';\nimport { global } from '../../global';\n\nimport { RECEIVE_MESSAGE_TYPES } from './types';\n\nglobal.receivedMessages = global.receivedMessages || [];\n\ntype MessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : string\n};\n\nfunction parseMessage(message : string) : ?Object {\n\n let parsedMessage;\n\n try {\n parsedMessage = jsonParse(message);\n } catch (err) {\n return;\n }\n\n if (!parsedMessage) {\n return;\n }\n\n if (typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n parsedMessage = parsedMessage[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!parsedMessage || typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n if (!parsedMessage.type || typeof parsedMessage.type !== 'string') {\n return;\n }\n\n if (!RECEIVE_MESSAGE_TYPES[parsedMessage.type]) {\n return;\n }\n\n return parsedMessage;\n}\n\n\nexport function receiveMessage(event : MessageEvent) {\n\n if (!window || window.closed) {\n throw new Error(`Message recieved in closed window`);\n }\n\n try {\n if (!event.source) {\n return;\n }\n } catch (err) {\n return;\n }\n\n let { source, origin, data } = event;\n\n let message = parseMessage(data);\n\n if (!message) {\n return;\n }\n\n if (!message.sourceDomain || typeof message.sourceDomain !== 'string') {\n throw new Error(`Expected message to have sourceDomain`);\n }\n\n if (message.sourceDomain.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0 || message.sourceDomain.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n origin = message.sourceDomain;\n }\n\n if (global.receivedMessages.indexOf(message.id) === -1) {\n global.receivedMessages.push(message.id);\n } else {\n return;\n }\n\n let level;\n\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n log.logLevel(level, [ '\\n\\n\\t', '#receive', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', origin, '\\n\\n', message ]);\n\n if (isWindowClosed(source)) {\n log.debug(`Source window is closed - can not send ${message.type} ${message.name}`);\n return;\n }\n\n if (message.data) {\n message.data = deserializeMethods(source, origin, message.data);\n }\n\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n}\n\nexport function messageListener(event : { source : CrossDomainWindowType, origin : string, data : string, sourceElement : CrossDomainWindowType, originalEvent? : { origin : string } }) {\n\n try {\n event.source // eslint-disable-line\n } catch (err) {\n return;\n }\n\n // $FlowFixMe\n let messageEvent : MessageEvent = {\n source: event.source || event.sourceElement,\n origin: event.origin || (event.originalEvent && event.originalEvent.origin),\n data: event.data\n };\n\n if (__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(messageEvent.source, window);\n } catch (err) {\n return;\n }\n }\n\n receiveMessage(messageEvent);\n}\n\nexport function listenForMessages() {\n addEventListener(window, 'message', messageListener);\n}\n\nglobal.receiveMessage = receiveMessage;\n\n\n// WEBPACK FOOTER //\n// ./src/drivers/receive/index.js","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isWindowClosed, matchDomain } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { log, stringifyError, noop } from '../../lib';\n\nimport { sendMessage } from '../send';\nimport { getRequestListener, getResponseListener, deleteResponseListener, isResponseListenerErrored } from '../listeners';\n\nexport let RECEIVE_MESSAGE_TYPES = {\n\n [ CONSTANTS.POST_MESSAGE_TYPE.ACK ](source : CrossDomainWindowType, origin : string, message : Object) {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message ack for message: ${message.name} from ${origin} in ${window.location.protocol}//${window.location.host}${window.location.pathname}`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Ack origin ${origin} does not match domain ${options.domain.toString()}`);\n }\n\n options.ack = true;\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.REQUEST ](source : CrossDomainWindowType, origin : string, message : Object) : ZalgoPromise {\n\n let options = getRequestListener({ name: message.name, win: source, domain: origin });\n\n function respond(data) : ZalgoPromise {\n\n if (message.fireAndForget || isWindowClosed(source)) {\n return ZalgoPromise.resolve();\n }\n\n return sendMessage(source, {\n target: message.originalSource,\n hash: message.hash,\n name: message.name,\n ...data\n }, origin);\n }\n\n return ZalgoPromise.all([\n\n respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.ACK\n }),\n\n ZalgoPromise.try(() => {\n\n if (!options) {\n throw new Error(`No handler found for post message: ${message.name} from ${origin} in ${window.location.protocol}//${window.location.host}${window.location.pathname}`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Request origin ${origin} does not match domain ${options.domain.toString()}`);\n }\n\n let data = message.data;\n\n return options.handler({ source, origin, data });\n\n }).then(data => {\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data\n });\n\n }, err => {\n\n let error = stringifyError(err).replace(/^Error: /, '');\n // $FlowFixMe\n let code = err.code;\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error,\n code\n });\n })\n\n ]).then(noop).catch(err => {\n\n if (options && options.handleError) {\n return options.handleError(err);\n } else {\n log.error(stringifyError(err));\n }\n });\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.RESPONSE ](source : CrossDomainWindowType, origin : string, message : Object) : void | ZalgoPromise {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message response for message: ${message.name} from ${origin} in ${window.location.protocol}//${window.location.host}${window.location.pathname}`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Response origin ${origin} does not match domain ${options.domain}`);\n }\n\n deleteResponseListener(message.hash);\n\n if (message.ack === CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n let err = new Error(message.error);\n if (message.code) {\n // $FlowFixMe\n err.code = message.code;\n }\n return options.respond(err, null);\n } else if (message.ack === CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n let data = message.data || message.response;\n\n return options.respond(null, { source, origin, data });\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/drivers/receive/types.js","/* @flow */\n\nimport { isSameDomain, isSameTopWindow, isActuallySameDomain, getActualDomain, getDomain } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\n\nexport let SEND_MESSAGE_STRATEGIES = {};\n\n\n\n\nSEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : string) => {\n\n if (__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(window, win);\n } catch (err) {\n return;\n }\n }\n\n let domains;\n\n if (Array.isArray(domain)) {\n domains = domain;\n } else if (domain) {\n domains = [ domain ];\n } else {\n domains = [ CONSTANTS.WILDCARD ];\n }\n\n domains = domains.map(dom => {\n\n if (dom.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n\n if (window.location.protocol === CONSTANTS.FILE_PROTOCOL) {\n return CONSTANTS.WILDCARD;\n }\n\n if (!isActuallySameDomain(win)) {\n throw new Error(`Attempting to send messsage to mock domain ${dom}, but window is actually cross-domain`);\n }\n\n // $FlowFixMe\n return getActualDomain(win);\n }\n\n if (dom.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n return CONSTANTS.WILDCARD;\n }\n\n return dom;\n });\n\n domains.forEach(dom => {\n return win.postMessage(serializedMessage, dom);\n });\n};\n\nif (__IE_POPUP_SUPPORT__) {\n\n let { sendBridgeMessage, needsBridgeForBrowser, isBridge } = require('../../bridge');\n\n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.BRIDGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : string) => {\n\n if (!needsBridgeForBrowser() && !isBridge()) {\n return;\n }\n\n if (isSameDomain(win)) {\n throw new Error(`Post message through bridge disabled between same domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use bridge to communicate between two different windows, not between frames`);\n }\n\n return sendBridgeMessage(win, serializedMessage, domain);\n };\n\n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.GLOBAL] = (win : CrossDomainWindowType, serializedMessage : string, domain : string) => {\n\n if (!needsBridgeForBrowser()) {\n return;\n }\n\n if (!isSameDomain(win)) {\n throw new Error(`Post message through global disabled between different domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use global to communicate between two different windows, not between frames`);\n }\n\n // $FlowFixMe\n let foreignGlobal = win[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!foreignGlobal) {\n throw new Error(`Can not find postRobot global on foreign window`);\n }\n\n return foreignGlobal.receiveMessage({\n source: window,\n origin: getDomain(),\n data: serializedMessage\n });\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/drivers/send/strategies.js","/* @flow */\n\nimport * as INTERFACE from './interface';\nexport * from './interface';\nexport default INTERFACE;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { getAncestor } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { log } from './log';\nimport { global } from '../global';\nimport { stringifyError } from './util';\n\nglobal.readyPromises = global.readyPromises || new WeakMap();\n\nexport function initOnReady() {\n\n global.on(CONSTANTS.POST_MESSAGE_NAMES.READY, { domain: CONSTANTS.WILDCARD }, (event : { source : CrossDomainWindowType, origin : string, data : Object }) => {\n\n let win = event.source;\n let promise = global.readyPromises.get(win);\n\n if (promise) {\n promise.resolve(event);\n } else {\n promise = new ZalgoPromise().resolve(event);\n global.readyPromises.set(win, promise);\n }\n });\n\n let parent = getAncestor();\n\n if (parent) {\n global.send(parent, CONSTANTS.POST_MESSAGE_NAMES.READY, {}, { domain: CONSTANTS.WILDCARD, timeout: Infinity }).catch(err => {\n log.debug(stringifyError(err));\n });\n }\n}\n\nexport function onWindowReady(win : mixed, timeout : number = 5000, name : string = 'Window') : ZalgoPromise<{ source : mixed, origin : string, data : Object }> {\n\n let promise = global.readyPromises.get(win);\n\n if (promise) {\n return promise;\n }\n\n promise = new ZalgoPromise();\n global.readyPromises.set(win, promise);\n\n if (timeout !== -1) {\n setTimeout(() => promise.reject(new Error(`${name} did not load after ${timeout}ms`)), timeout);\n }\n\n return promise;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/ready.js","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { once, uniqueID, replaceObject, stringifyError, isRegex } from './util';\nimport { log } from './log';\nimport { global } from '../global';\n\nglobal.methods = global.methods || new WeakMap();\n\nexport let listenForMethods = once(() => {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.METHOD, { origin: CONSTANTS.WILDCARD }, ({ source, origin, data } : { source : CrossDomainWindowType, origin : string, data : Object }) => {\n\n let methods = global.methods.get(source);\n\n if (!methods) {\n throw new Error(`Could not find any methods this window has privileges to call`);\n }\n\n let meth = methods[data.id];\n\n if (!meth) {\n throw new Error(`Could not find method with id: ${data.id}`);\n }\n\n if (!matchDomain(meth.domain, origin)) {\n throw new Error(`Method domain ${meth.domain} does not match origin ${origin}`);\n }\n\n log.debug('Call local method', data.name, data.args);\n\n return ZalgoPromise.try(() => {\n return meth.method.apply({ source, origin, data }, data.args);\n\n }).then(result => {\n\n return {\n result,\n id: data.id,\n name: data.name\n };\n });\n });\n});\n\nfunction isSerialized(item : mixed, type : string) : boolean {\n return typeof item === 'object' && item !== null && item.__type__ === type;\n}\n\ntype SerializedMethod = {\n __type__ : string,\n __id__ : string,\n __name__ : string\n};\n\nexport function serializeMethod(destination : CrossDomainWindowType, domain : string, method : Function, name : string) : SerializedMethod {\n\n let id = uniqueID();\n\n let methods = global.methods.get(destination);\n\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n\n methods[id] = { domain, method };\n\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n}\n\ntype SerializedError = {\n __type__ : string,\n __message__ : string\n};\n\nfunction serializeError(err : mixed) : SerializedError {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n // $FlowFixMe\n __code__: err.code\n };\n}\n\ntype SerializePromise = {\n __type__ : string,\n __then__ : SerializedMethod\n};\n\nfunction serializePromise(destination : CrossDomainWindowType, domain : string, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${name}.then`)\n };\n}\n\nfunction serializeZalgoPromise(destination : CrossDomainWindowType, domain : string, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${name}.then`)\n };\n}\n\ntype SerializedRegex = {\n __type__ : string,\n __source__ : string\n};\n\nfunction serializeRegex(regex : RegExp) : SerializedRegex {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n };\n}\n\nexport function serializeMethods(destination : CrossDomainWindowType, domain : string, obj : Object) : Object {\n\n return replaceObject({ obj }, (item, key) => {\n if (typeof item === 'function') {\n return serializeMethod(destination, domain, item, key.toString());\n }\n\n if (item instanceof Error) {\n return serializeError(item);\n }\n\n if (window.Promise && item instanceof window.Promise) {\n return serializePromise(destination, domain, item, key.toString());\n }\n\n if (ZalgoPromise.isPromise(item)) {\n // $FlowFixMe\n return serializeZalgoPromise(destination, domain, item, key.toString());\n }\n\n if (isRegex(item)) {\n // $FlowFixMe\n return serializeRegex(item);\n }\n }).obj;\n}\n\nexport function deserializeMethod(source : CrossDomainWindowType, origin : string, obj : Object) : Function {\n\n function wrapper() : ZalgoPromise {\n let args = Array.prototype.slice.call(arguments);\n log.debug('Call foreign method', obj.__name__, args);\n return global.send(source, CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args\n\n }, { domain: origin, timeout: Infinity }).then(({ data }) => {\n\n log.debug('Got foreign method result', obj.__name__, data.result);\n return data.result;\n }, err => {\n log.debug('Got foreign method error', stringifyError(err));\n throw err;\n });\n }\n\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = true;\n\n wrapper.source = source;\n wrapper.origin = origin;\n\n return wrapper;\n}\n\nexport function deserializeError(source : CrossDomainWindowType, origin : string, obj : Object) : Error {\n let err = new Error(obj.__message__);\n if (obj.__code__) {\n // $FlowFixMe\n err.code = obj.__code__;\n }\n return err;\n}\n\nexport function deserializeZalgoPromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializePromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n if (!window.Promise) {\n return deserializeZalgoPromise(source, origin, prom);\n }\n\n return new window.Promise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializeRegex(source : CrossDomainWindowType, origin : string, item : Object) : RegExp {\n return new RegExp(item.__source__);\n}\n\nexport function deserializeMethods(source : CrossDomainWindowType, origin : string, obj : Object) : Object {\n\n return replaceObject({ obj }, (item, key) => {\n if (typeof item !== 'object' || item === null) {\n return;\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.METHOD)) {\n return deserializeMethod(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ERROR)) {\n return deserializeError(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.PROMISE)) {\n return deserializePromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE)) {\n return deserializeZalgoPromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.REGEX)) {\n return deserializeRegex(source, origin, item);\n }\n\n }).obj;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/serialize.js","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getAncestor, isAncestor, isWindowClosed, getDomain } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { sendMessage, addResponseListener, deleteResponseListener, markResponseListenerErrored } from '../drivers';\nimport { type ResponseListenerType } from '../drivers';\nimport { uniqueID, onWindowReady } from '../lib';\nimport { global } from '../global';\n\nglobal.requestPromises = global.requestPromises || new WeakMap();\n\ntype WindowResolverType = CrossDomainWindowType | string | HTMLIFrameElement;\n\ntype RequestOptionsType = {\n window? : ?WindowResolverType,\n domain? : ?string,\n name? : ?string,\n data? : ?Object,\n fireAndForget? : ?boolean,\n timeout? : ?number\n};\n\ntype ResponseMessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : Object\n};\n\nexport function request(options : RequestOptionsType) : ZalgoPromise {\n\n let prom = ZalgoPromise.try(() => {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n let name = options.name;\n let targetWindow : ?CrossDomainWindowType;\n let domain : string;\n\n if (typeof options.window === 'string') {\n let el = document.getElementById(options.window);\n\n if (!el) {\n throw new Error(`Expected options.window ${Object.prototype.toString.call(options.window)} to be a valid element id`);\n }\n\n if (el.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${Object.prototype.toString.call(options.window)} to be an iframe`);\n }\n\n if (!el.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n // $FlowFixMe\n targetWindow = el.contentWindow;\n\n } else if (options.window instanceof HTMLIFrameElement) {\n\n if (options.window.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${Object.prototype.toString.call(options.window)} to be an iframe`);\n }\n\n if (options.window && !options.window.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n if (options.window && options.window.contentWindow) {\n // $FlowFixMe\n targetWindow = options.window.contentWindow;\n }\n } else {\n targetWindow = options.window;\n }\n\n if (!targetWindow) {\n throw new Error('Expected options.window to be a window object, iframe, or iframe element id.');\n }\n\n const win = targetWindow;\n\n domain = options.domain || CONSTANTS.WILDCARD;\n\n let hash = `${options.name}_${uniqueID()}`;\n\n if (isWindowClosed(win)) {\n throw new Error('Target window is closed');\n }\n\n let hasResult = false;\n\n let requestPromises = global.requestPromises.get(win);\n\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n\n let requestPromise = ZalgoPromise.try(() => {\n\n if (isAncestor(window, win)) {\n return ZalgoPromise.resolve(onWindowReady(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT));\n }\n\n }).then(() => {\n\n return new ZalgoPromise((resolve, reject) => {\n\n let responseListener : ResponseListenerType;\n\n if (!options.fireAndForget) {\n responseListener = {\n name,\n window: win,\n domain,\n respond(err, result) {\n if (!err) {\n hasResult = true;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n };\n\n addResponseListener(hash, responseListener);\n }\n\n sendMessage(win, {\n type: CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash,\n name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, domain).catch(reject);\n\n if (options.fireAndForget) {\n return resolve();\n }\n\n let ackTimeout = CONFIG.ACK_TIMEOUT;\n let resTimeout = options.timeout || CONFIG.RES_TIMEOUT;\n\n let cycleTime = 100;\n\n let cycle = () => {\n\n if (hasResult) {\n return;\n }\n\n if (isWindowClosed(win)) {\n\n if (!responseListener.ack) {\n return reject(new Error(`Window closed for ${name} before ack`));\n }\n\n return reject(new Error(`Window closed for ${name} before response`));\n }\n\n ackTimeout -= cycleTime;\n resTimeout -= cycleTime;\n\n let hasAck = responseListener.ack;\n\n if (hasAck) {\n\n if (resTimeout === Infinity) {\n return;\n }\n\n cycleTime = Math.min(resTimeout, 2000);\n\n } else if (ackTimeout <= 0) {\n return reject(new Error(`No ack for postMessage ${name} in ${ getDomain() } in ${CONFIG.ACK_TIMEOUT}ms`));\n\n } else if (resTimeout <= 0) {\n return reject(new Error(`No response for postMessage ${name} in ${ getDomain() } in ${options.timeout || CONFIG.RES_TIMEOUT}ms`));\n }\n\n setTimeout(cycle, cycleTime);\n };\n\n setTimeout(cycle, cycleTime);\n });\n });\n\n requestPromise.catch(() => {\n markResponseListenerErrored(hash);\n deleteResponseListener(hash);\n });\n\n requestPromises.push(requestPromise);\n\n return requestPromise;\n });\n\n return prom;\n}\n\nexport function send(window : WindowResolverType, name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n options = options || {};\n options.window = window;\n options.name = name;\n options.data = data;\n\n return request(options);\n}\n\nexport function sendToParent(name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n let win = getAncestor();\n\n if (!win) {\n return new ZalgoPromise((resolve, reject) => reject(new Error('Window does not have a parent')));\n }\n\n return send(win, name, data, options);\n}\n\nexport function client(options : RequestOptionsType = {}) : { send : (string, ?Object) => ZalgoPromise } {\n\n if (!options.window) {\n throw new Error(`Expected options.window`);\n }\n\n const win = options.window;\n\n return {\n send(name : string, data : ?Object) : ZalgoPromise {\n return send(win, name, data, options);\n }\n };\n}\n\nglobal.send = send;\n\n\n// WEBPACK FOOTER //\n// ./src/public/client.js","/* @flow */\n\nimport { CONSTANTS } from '../conf';\nimport { messageListener } from '../drivers';\n\nexport { CONFIG, CONSTANTS } from '../conf';\n\nexport function disable() {\n delete window[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener('message', messageListener);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/public/config.js","/* @flow */\n\nimport { isWindowClosed } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { once as onceFunction, safeInterval } from '../lib';\nimport { addRequestListener } from '../drivers';\nimport { type RequestListenerType } from '../drivers';\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\ntype ErrorHandlerType = (err : mixed) => void;\ntype HandlerType = ({ source : CrossDomainWindowType, origin : string, data : Object }) => (void | mixed | ZalgoPromise);\n\ntype ServerOptionsType = {\n handler? : ?HandlerType,\n errorHandler? : ?ErrorHandlerType,\n window? : CrossDomainWindowType,\n name? : ?string,\n domain? : ?(string | RegExp | Array),\n once? : ?boolean,\n errorOnClose? : ?boolean\n};\n\nexport function listen(options : ServerOptionsType) : { cancel : () => void } {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n if (!options.handler) {\n throw new Error('Expected options.handler');\n }\n\n const name = options.name;\n const win = options.window;\n const domain = options.domain;\n\n let listenerOptions : RequestListenerType = {\n handler: options.handler,\n handleError: options.errorHandler || (err => {\n throw err;\n }),\n window: win,\n domain: domain || CONSTANTS.WILDCARD,\n name\n };\n\n let requestListener = addRequestListener({ name, win, domain }, listenerOptions);\n\n if (options.once) {\n let handler = listenerOptions.handler;\n listenerOptions.handler = onceFunction(function() : mixed | ZalgoPromise {\n requestListener.cancel();\n return handler.apply(this, arguments);\n });\n }\n\n if (listenerOptions.window && options.errorOnClose) {\n let interval = safeInterval(() => {\n if (win && typeof win === 'object' && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error('Post message target window is closed'));\n }\n }, 50);\n }\n\n return {\n cancel() {\n requestListener.cancel();\n }\n };\n}\n\nexport function on(name : string, options : ServerOptionsType | HandlerType, handler : ?HandlerType) : { cancel : () => void } {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n\n options.name = name;\n options.handler = handler || options.handler;\n\n return listen(options);\n}\n\nexport function once(name : string, options : ?(ServerOptionsType | HandlerType) = {}, handler : ?HandlerType) : ZalgoPromise<{ source : mixed, origin : string, data : Object }> {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n handler = handler || options.handler;\n let errorHandler = options.errorHandler;\n\n let promise = new ZalgoPromise((resolve, reject) => {\n\n options = options || {};\n\n options.name = name;\n options.once = true;\n\n options.handler = (event) => {\n resolve(event);\n if (handler) {\n return handler(event);\n }\n };\n\n options.errorHandler = (err) => {\n reject(err);\n if (errorHandler) {\n return errorHandler(err);\n }\n };\n });\n\n let onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n\n return promise;\n}\n\nexport function listener(options : ServerOptionsType = {}) : { on : (name : string, handler : HandlerType) => { cancel : () => void } } {\n\n return {\n on(name : string, handler : HandlerType) : { cancel : () => void } {\n return on(name, options, handler);\n }\n };\n}\n\nglobal.on = on;\n\n\n// WEBPACK FOOTER //\n// ./src/public/server.js"],"sourceRoot":""}